nixos/ssh: use correct executable for grep in ssh-askpass-wrapper (#373746)
[NixPkgs.git] / nixos / modules / services / continuous-integration / jenkins / slave.nix
blobaa374834743a8141772aee2c11d59618aa82c0ef
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
8 let
9   inherit (lib) mkIf mkOption types;
10   cfg = config.services.jenkinsSlave;
11   masterCfg = config.services.jenkins;
14   options = {
15     services.jenkinsSlave = {
16       # todo:
17       # * assure the profile of the jenkins user has a JRE and any specified packages. This would
18       # enable ssh slaves.
19       # * Optionally configure the node as a jenkins ad-hoc slave. This would imply configuration
20       # properties for the master node.
21       enable = mkOption {
22         type = types.bool;
23         default = false;
24         description = ''
25           If true the system will be configured to work as a jenkins slave.
26           If the system is also configured to work as a jenkins master then this has no effect.
27           In progress: Currently only assures the jenkins user is configured.
28         '';
29       };
31       user = mkOption {
32         default = "jenkins";
33         type = types.str;
34         description = ''
35           User the jenkins slave agent should execute under.
36         '';
37       };
39       group = mkOption {
40         default = "jenkins";
41         type = types.str;
42         description = ''
43           If the default slave agent user "jenkins" is configured then this is
44           the primary group of that user.
45         '';
46       };
48       home = mkOption {
49         default = "/var/lib/jenkins";
50         type = types.path;
51         description = ''
52           The path to use as JENKINS_HOME. If the default user "jenkins" is configured then
53           this is the home of the "jenkins" user.
54         '';
55       };
57       javaPackage = lib.mkPackageOption pkgs "jdk" { };
58     };
59   };
61   config = mkIf (cfg.enable && !masterCfg.enable) {
62     users.groups = lib.optionalAttrs (cfg.group == "jenkins") {
63       jenkins.gid = config.ids.gids.jenkins;
64     };
66     users.users = lib.optionalAttrs (cfg.user == "jenkins") {
67       jenkins = {
68         description = "jenkins user";
69         createHome = true;
70         home = cfg.home;
71         group = cfg.group;
72         useDefaultShell = true;
73         uid = config.ids.uids.jenkins;
74       };
75     };
77     programs.java = {
78       enable = true;
79       package = cfg.javaPackage;
80     };
81   };