aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/nixos/modules/services/continuous-integration/jenkins/slave.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/nixos/modules/services/continuous-integration/jenkins/slave.nix')
-rw-r--r--nixpkgs/nixos/modules/services/continuous-integration/jenkins/slave.nix68
1 files changed, 68 insertions, 0 deletions
diff --git a/nixpkgs/nixos/modules/services/continuous-integration/jenkins/slave.nix b/nixpkgs/nixos/modules/services/continuous-integration/jenkins/slave.nix
new file mode 100644
index 00000000000..92deabc3dd3
--- /dev/null
+++ b/nixpkgs/nixos/modules/services/continuous-integration/jenkins/slave.nix
@@ -0,0 +1,68 @@
+{ config, lib, ... }:
+with lib;
+let
+ cfg = config.services.jenkinsSlave;
+ masterCfg = config.services.jenkins;
+in {
+ options = {
+ services.jenkinsSlave = {
+ # todo:
+ # * assure the profile of the jenkins user has a JRE and any specified packages. This would
+ # enable ssh slaves.
+ # * Optionally configure the node as a jenkins ad-hoc slave. This would imply configuration
+ # properties for the master node.
+ enable = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ If true the system will be configured to work as a jenkins slave.
+ If the system is also configured to work as a jenkins master then this has no effect.
+ In progress: Currently only assures the jenkins user is configured.
+ '';
+ };
+
+ user = mkOption {
+ default = "jenkins";
+ type = types.str;
+ description = ''
+ User the jenkins slave agent should execute under.
+ '';
+ };
+
+ group = mkOption {
+ default = "jenkins";
+ type = types.str;
+ description = ''
+ If the default slave agent user "jenkins" is configured then this is
+ the primary group of that user.
+ '';
+ };
+
+ home = mkOption {
+ default = "/var/lib/jenkins";
+ type = types.path;
+ description = ''
+ The path to use as JENKINS_HOME. If the default user "jenkins" is configured then
+ this is the home of the "jenkins" user.
+ '';
+ };
+ };
+ };
+
+ config = mkIf (cfg.enable && !masterCfg.enable) {
+ users.groups = optional (cfg.group == "jenkins") {
+ name = "jenkins";
+ gid = config.ids.gids.jenkins;
+ };
+
+ users.users = optional (cfg.user == "jenkins") {
+ name = "jenkins";
+ description = "jenkins user";
+ createHome = true;
+ home = cfg.home;
+ group = cfg.group;
+ useDefaultShell = true;
+ uid = config.ids.uids.jenkins;
+ };
+ };
+}