From 1cd639cd24a6095359d496fb8a90d9b45f3203d7 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Wed, 26 Jun 2024 19:24:25 +0200 Subject: move nixos modules to make way for other kinds --- default.nix | 2 +- modules/default.nix | 6 -- modules/laminar.nix | 153 ---------------------------------------------- modules/nixos/default.nix | 6 ++ modules/nixos/laminar.nix | 153 ++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 160 insertions(+), 160 deletions(-) delete mode 100644 modules/default.nix delete mode 100644 modules/laminar.nix create mode 100644 modules/nixos/default.nix create mode 100644 modules/nixos/laminar.nix diff --git a/default.nix b/default.nix index 732a014..f326620 100644 --- a/default.nix +++ b/default.nix @@ -11,7 +11,7 @@ { # The `lib`, `modules`, and `overlays` names are special lib = import ./lib { inherit pkgs; }; # functions - modules = import ./modules; # NixOS modules + modules = import ./modules/nixos; # NixOS modules overlays = import ./overlays; # nixpkgs overlays prettier-plugin-go-template = pkgs.callPackage ./pkgs/prettier-plugin-go-template { }; diff --git a/modules/default.nix b/modules/default.nix deleted file mode 100644 index 1901177..0000000 --- a/modules/default.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ - # Add your NixOS modules here - # - # my-module = ./my-module; - laminar = ./laminar.nix; -} diff --git a/modules/laminar.nix b/modules/laminar.nix deleted file mode 100644 index 02944f3..0000000 --- a/modules/laminar.nix +++ /dev/null @@ -1,153 +0,0 @@ -{ config -, lib -, pkgs -, ... -}: -let - cfg = config.services.laminar; - - inherit (lib) - literalExpression - optionalAttrs - mkEnableOption - mkPackageOption - mkOption - mkIf - types; -in -{ - options.services.laminar = { - enable = mkEnableOption "Lightweight and modular Continuous Integration service for Linux."; - - user = mkOption { - type = types.str; - default = "laminar"; - description = "User account under which laminar runs."; - }; - - group = mkOption { - type = types.str; - default = "laminar"; - description = "User account under which laminar runs."; - }; - - package = mkPackageOption pkgs "laminar" { }; - - homeDir = mkOption { - type = types.path; - default = "/var/lib/laminar"; - description = "Home directory for laminar user."; - }; - - path = mkOption { - type = types.listOf types.package; - default = with pkgs; [ - bash - stdenv - git - nix - config.programs.ssh.package - ]; - defaultText = literalExpression "[ pkgs.stdenv pkgs.git pkgs.nix config.programs.ssh.package ]"; - description = "Packages added to service PATH environment variable."; - }; - - settings = mkOption { - default = { }; - - description = '' - Configuration for laminar. - - See https://laminar.ohwg.net/docs.html#Service-configuration-file - ''; - - type = types.submodule { - options = { - bindHTTP = mkOption { - type = types.str; - default = "*:8080"; - description = "The interface/port or unix socket on which laminard should listen for incoming connections to the web frontend."; - }; - bindRPC = mkOption { - type = types.str; - default = "unix-abstract:laminar"; - description = "The interface/port or unix socket on which laminard should listen for incoming commands such as build triggers."; - }; - title = mkOption { - type = types.str; - default = ""; - description = "The page title to show in the web frontend."; - }; - keepRundirs = mkOption { - type = types.int; - default = 0; - description = "Set to an integer defining how many rundirs to keep per job. The lowest-numbered ones will be deleted."; - }; - baseURL = mkOption { - type = types.str; - default = "/"; - description = "Base url for the frontend."; - }; - archiveURL = mkOption { - type = with types; nullOr str; - default = null; - example = "http://localhost:8080"; - description = "If set, the web frontend served by laminard will use this URL to form links to artefacts archived jobs."; - }; - }; - }; - }; - }; - - config = mkIf cfg.enable { - systemd.services.laminar = { - description = "Laminar continuous integration service"; - wantedBy = [ "multi-user.target" ]; - after = [ "network.target" ]; - inherit (cfg) path; - environment = { - XDG_RUNTIME_DIR = "%t/laminar"; - }; - serviceConfig = { - User = cfg.user; - Group = cfg.group; - ExecStart = "${cfg.package}/bin/laminard -v"; - RuntimeDirectory = "laminar"; - EnvironmentFile = pkgs.writeText "laminar.conf" '' - LAMINAR_HOME=${cfg.homeDir} - LAMINAR_BIND_HTTP=${cfg.settings.bindHTTP} - LAMINAR_BIND_RPC=${cfg.settings.bindRPC} - LAMINAR_TITLE=${cfg.settings.title} - LAMINAR_KEEP_RUNDIRS=${toString cfg.settings.keepRundirs} - LAMINAR_BASE_URL=${cfg.settings.baseURL} - ${lib.optionalString (cfg.settings.archiveURL != null) - "LAMINAR_ARCHIVE_URL=${cfg.settings.archiveURL}" - } - ''; - }; - unitConfig = { - Documentation = [ - "man:laminard(8)" - "https://laminar.ohwg.net/docs.html" - ]; - }; - }; - - environment.systemPackages = [ - pkgs.laminar - ]; - - users.users = optionalAttrs (cfg.user == "laminar") { - laminar = { - inherit (cfg) group; - home = cfg.homeDir; - createHome = true; - isSystemUser = true; - }; - }; - - users.groups = optionalAttrs (cfg.group == "laminar") { - laminar = { }; - }; - }; -} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix new file mode 100644 index 0000000..1901177 --- /dev/null +++ b/modules/nixos/default.nix @@ -0,0 +1,6 @@ +{ + # Add your NixOS modules here + # + # my-module = ./my-module; + laminar = ./laminar.nix; +} diff --git a/modules/nixos/laminar.nix b/modules/nixos/laminar.nix new file mode 100644 index 0000000..02944f3 --- /dev/null +++ b/modules/nixos/laminar.nix @@ -0,0 +1,153 @@ +{ config +, lib +, pkgs +, ... +}: +let + cfg = config.services.laminar; + + inherit (lib) + literalExpression + optionalAttrs + mkEnableOption + mkPackageOption + mkOption + mkIf + types; +in +{ + options.services.laminar = { + enable = mkEnableOption "Lightweight and modular Continuous Integration service for Linux."; + + user = mkOption { + type = types.str; + default = "laminar"; + description = "User account under which laminar runs."; + }; + + group = mkOption { + type = types.str; + default = "laminar"; + description = "User account under which laminar runs."; + }; + + package = mkPackageOption pkgs "laminar" { }; + + homeDir = mkOption { + type = types.path; + default = "/var/lib/laminar"; + description = "Home directory for laminar user."; + }; + + path = mkOption { + type = types.listOf types.package; + default = with pkgs; [ + bash + stdenv + git + nix + config.programs.ssh.package + ]; + defaultText = literalExpression "[ pkgs.stdenv pkgs.git pkgs.nix config.programs.ssh.package ]"; + description = "Packages added to service PATH environment variable."; + }; + + settings = mkOption { + default = { }; + + description = '' + Configuration for laminar. + + See https://laminar.ohwg.net/docs.html#Service-configuration-file + ''; + + type = types.submodule { + options = { + bindHTTP = mkOption { + type = types.str; + default = "*:8080"; + description = "The interface/port or unix socket on which laminard should listen for incoming connections to the web frontend."; + }; + bindRPC = mkOption { + type = types.str; + default = "unix-abstract:laminar"; + description = "The interface/port or unix socket on which laminard should listen for incoming commands such as build triggers."; + }; + title = mkOption { + type = types.str; + default = ""; + description = "The page title to show in the web frontend."; + }; + keepRundirs = mkOption { + type = types.int; + default = 0; + description = "Set to an integer defining how many rundirs to keep per job. The lowest-numbered ones will be deleted."; + }; + baseURL = mkOption { + type = types.str; + default = "/"; + description = "Base url for the frontend."; + }; + archiveURL = mkOption { + type = with types; nullOr str; + default = null; + example = "http://localhost:8080"; + description = "If set, the web frontend served by laminard will use this URL to form links to artefacts archived jobs."; + }; + }; + }; + }; + }; + + config = mkIf cfg.enable { + systemd.services.laminar = { + description = "Laminar continuous integration service"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + inherit (cfg) path; + environment = { + XDG_RUNTIME_DIR = "%t/laminar"; + }; + serviceConfig = { + User = cfg.user; + Group = cfg.group; + ExecStart = "${cfg.package}/bin/laminard -v"; + RuntimeDirectory = "laminar"; + EnvironmentFile = pkgs.writeText "laminar.conf" '' + LAMINAR_HOME=${cfg.homeDir} + LAMINAR_BIND_HTTP=${cfg.settings.bindHTTP} + LAMINAR_BIND_RPC=${cfg.settings.bindRPC} + LAMINAR_TITLE=${cfg.settings.title} + LAMINAR_KEEP_RUNDIRS=${toString cfg.settings.keepRundirs} + LAMINAR_BASE_URL=${cfg.settings.baseURL} + ${lib.optionalString (cfg.settings.archiveURL != null) + "LAMINAR_ARCHIVE_URL=${cfg.settings.archiveURL}" + } + ''; + }; + unitConfig = { + Documentation = [ + "man:laminard(8)" + "https://laminar.ohwg.net/docs.html" + ]; + }; + }; + + environment.systemPackages = [ + pkgs.laminar + ]; + + users.users = optionalAttrs (cfg.user == "laminar") { + laminar = { + inherit (cfg) group; + home = cfg.homeDir; + createHome = true; + isSystemUser = true; + }; + }; + + users.groups = optionalAttrs (cfg.group == "laminar") { + laminar = { }; + }; + }; +} -- cgit 1.4.1