diff options
author | Ismaël Bouya <ismael.bouya@normalesup.org> | 2020-09-07 08:39:35 +0200 |
---|---|---|
committer | Ismaël Bouya <ismael.bouya@normalesup.org> | 2020-09-07 08:39:35 +0200 |
commit | 850adcf4b17afb6f5429b030f3c814d502d2b53e (patch) | |
tree | 9e30459cec309e4b04bed476f9444a9335dac0af /modules/private | |
parent | de6d17ec97a1946f628372e5b0854cb21a91a55f (diff) | |
download | Nix-850adcf4b17afb6f5429b030f3c814d502d2b53e.tar.gz Nix-850adcf4b17afb6f5429b030f3c814d502d2b53e.tar.zst Nix-850adcf4b17afb6f5429b030f3c814d502d2b53e.zip |
Put services in slices in systemd
Diffstat (limited to 'modules/private')
-rw-r--r-- | modules/private/buildbot/default.nix | 5 | ||||
-rw-r--r-- | modules/private/databases/redis.nix | 11 | ||||
-rw-r--r-- | modules/private/mail/default.nix | 3 | ||||
-rw-r--r-- | modules/private/mail/dovecot.nix | 1 | ||||
-rw-r--r-- | modules/private/mail/milters.nix | 4 | ||||
-rw-r--r-- | modules/private/mail/postfix.nix | 1 | ||||
-rw-r--r-- | modules/private/mail/rspamd.nix | 1 | ||||
-rw-r--r-- | modules/private/mail/sympa.nix | 11 | ||||
-rw-r--r-- | modules/private/tasks/default.nix | 8 | ||||
-rw-r--r-- | modules/private/vpn/default.nix | 5 |
10 files changed, 48 insertions, 2 deletions
diff --git a/modules/private/buildbot/default.nix b/modules/private/buildbot/default.nix index 3dc6a04..6674ad7 100644 --- a/modules/private/buildbot/default.nix +++ b/modules/private/buildbot/default.nix | |||
@@ -126,6 +126,10 @@ in | |||
126 | ] ++ lib.attrsets.mapAttrsToList (k: v: "/var/secrets/buildbot/${project.name}/${k}") project.secrets; | 126 | ] ++ lib.attrsets.mapAttrsToList (k: v: "/var/secrets/buildbot/${project.name}/${k}") project.secrets; |
127 | }) config.myEnv.buildbot.projects; | 127 | }) config.myEnv.buildbot.projects; |
128 | 128 | ||
129 | systemd.slices.buildbot = { | ||
130 | description = "buildbot slice"; | ||
131 | }; | ||
132 | |||
129 | systemd.services = lib.attrsets.mapAttrs' (k: project: lib.attrsets.nameValuePair "buildbot-${project.name}" { | 133 | systemd.services = lib.attrsets.mapAttrs' (k: project: lib.attrsets.nameValuePair "buildbot-${project.name}" { |
130 | description = "Buildbot Continuous Integration Server ${project.name}."; | 134 | description = "Buildbot Continuous Integration Server ${project.name}."; |
131 | after = [ "network-online.target" ]; | 135 | after = [ "network-online.target" ]; |
@@ -207,6 +211,7 @@ in | |||
207 | in project_env // { inherit PYTHONPATH HOME; }; | 211 | in project_env // { inherit PYTHONPATH HOME; }; |
208 | 212 | ||
209 | serviceConfig = { | 213 | serviceConfig = { |
214 | Slice = "buildbot.slice"; | ||
210 | Type = "forking"; | 215 | Type = "forking"; |
211 | User = "buildbot"; | 216 | User = "buildbot"; |
212 | Group = "buildbot"; | 217 | Group = "buildbot"; |
diff --git a/modules/private/databases/redis.nix b/modules/private/databases/redis.nix index 4602510..bc6460f 100644 --- a/modules/private/databases/redis.nix +++ b/modules/private/databases/redis.nix | |||
@@ -41,6 +41,7 @@ in { | |||
41 | maxclients 1024 | 41 | maxclients 1024 |
42 | ''; | 42 | ''; |
43 | }; | 43 | }; |
44 | systemd.services.redis.serviceConfig.Slice = "redis.slice"; | ||
44 | 45 | ||
45 | services.spiped = { | 46 | services.spiped = { |
46 | enable = true; | 47 | enable = true; |
@@ -57,8 +58,9 @@ in { | |||
57 | wantedBy = [ "multi-user.target" ]; | 58 | wantedBy = [ "multi-user.target" ]; |
58 | 59 | ||
59 | serviceConfig = { | 60 | serviceConfig = { |
60 | Restart = "always"; | 61 | Slice = "redis.slice"; |
61 | User = "spiped"; | 62 | Restart = "always"; |
63 | User = "spiped"; | ||
62 | PermissionsStartOnly = true; | 64 | PermissionsStartOnly = true; |
63 | SupplementaryGroups = "keys"; | 65 | SupplementaryGroups = "keys"; |
64 | }; | 66 | }; |
@@ -108,12 +110,17 @@ in { | |||
108 | } | 110 | } |
109 | ]; | 111 | ]; |
110 | 112 | ||
113 | systemd.slices.redis = { | ||
114 | description = "Redis slice"; | ||
115 | }; | ||
116 | |||
111 | systemd.services.predixy = { | 117 | systemd.services.predixy = { |
112 | description = "Redis proxy"; | 118 | description = "Redis proxy"; |
113 | wantedBy = [ "multi-user.target" ]; | 119 | wantedBy = [ "multi-user.target" ]; |
114 | after = [ "redis.service" ]; | 120 | after = [ "redis.service" ]; |
115 | 121 | ||
116 | serviceConfig = { | 122 | serviceConfig = { |
123 | Slice = "redis.slice"; | ||
117 | User = "redis"; | 124 | User = "redis"; |
118 | Group = "redis"; | 125 | Group = "redis"; |
119 | SupplementaryGroups = "keys"; | 126 | SupplementaryGroups = "keys"; |
diff --git a/modules/private/mail/default.nix b/modules/private/mail/default.nix index 9e68cc9..fd6d638 100644 --- a/modules/private/mail/default.nix +++ b/modules/private/mail/default.nix | |||
@@ -45,5 +45,8 @@ | |||
45 | ''; | 45 | ''; |
46 | }; | 46 | }; |
47 | }; | 47 | }; |
48 | systemd.slices.mail = { | ||
49 | description = "Mail slice"; | ||
50 | }; | ||
48 | }; | 51 | }; |
49 | } | 52 | } |
diff --git a/modules/private/mail/dovecot.nix b/modules/private/mail/dovecot.nix index aa25d1f..23e795f 100644 --- a/modules/private/mail/dovecot.nix +++ b/modules/private/mail/dovecot.nix | |||
@@ -13,6 +13,7 @@ let | |||
13 | in | 13 | in |
14 | { | 14 | { |
15 | config = lib.mkIf config.myServices.mail.enable { | 15 | config = lib.mkIf config.myServices.mail.enable { |
16 | systemd.services.dovecot2.serviceConfig.Slice = "mail.slice"; | ||
16 | services.duplyBackup.profiles.mail.excludeFile = '' | 17 | services.duplyBackup.profiles.mail.excludeFile = '' |
17 | + /var/lib/dhparams | 18 | + /var/lib/dhparams |
18 | + /var/lib/dovecot | 19 | + /var/lib/dovecot |
diff --git a/modules/private/mail/milters.nix b/modules/private/mail/milters.nix index 5de03cf..02c35c8 100644 --- a/modules/private/mail/milters.nix +++ b/modules/private/mail/milters.nix | |||
@@ -64,6 +64,7 @@ | |||
64 | ''; | 64 | ''; |
65 | group = config.services.postfix.group; | 65 | group = config.services.postfix.group; |
66 | }; | 66 | }; |
67 | systemd.services.opendkim.serviceConfig.Slice = "mail.slice"; | ||
67 | systemd.services.opendkim.preStart = lib.mkBefore '' | 68 | systemd.services.opendkim.preStart = lib.mkBefore '' |
68 | # Skip the prestart script as keys are handled in secrets | 69 | # Skip the prestart script as keys are handled in secrets |
69 | exit 0 | 70 | exit 0 |
@@ -76,6 +77,7 @@ | |||
76 | }; | 77 | }; |
77 | 78 | ||
78 | users.users."${config.services.opendmarc.user}".extraGroups = [ "keys" ]; | 79 | users.users."${config.services.opendmarc.user}".extraGroups = [ "keys" ]; |
80 | systemd.services.opendmarc.serviceConfig.Slice = "mail.slice"; | ||
79 | services.opendmarc = { | 81 | services.opendmarc = { |
80 | enable = true; | 82 | enable = true; |
81 | socket = "local:${config.myServices.mail.milters.sockets.opendmarc}"; | 83 | socket = "local:${config.myServices.mail.milters.sockets.opendmarc}"; |
@@ -116,6 +118,7 @@ | |||
116 | Syslog Yes | 118 | Syslog Yes |
117 | ''; | 119 | ''; |
118 | }; | 120 | }; |
121 | systemd.services.openarc.serviceConfig.Slice = "mail.slice"; | ||
119 | systemd.services.openarc.postStart = lib.optionalString | 122 | systemd.services.openarc.postStart = lib.optionalString |
120 | (lib.strings.hasPrefix "local:" config.services.openarc.socket) '' | 123 | (lib.strings.hasPrefix "local:" config.services.openarc.socket) '' |
121 | while [ ! -S ${lib.strings.removePrefix "local:" config.services.openarc.socket} ]; do | 124 | while [ ! -S ${lib.strings.removePrefix "local:" config.services.openarc.socket} ]; do |
@@ -136,6 +139,7 @@ | |||
136 | wantedBy = [ "multi-user.target" ]; | 139 | wantedBy = [ "multi-user.target" ]; |
137 | 140 | ||
138 | serviceConfig = { | 141 | serviceConfig = { |
142 | Slice = "mail.slice"; | ||
139 | User = "postfix"; | 143 | User = "postfix"; |
140 | Group = "postfix"; | 144 | Group = "postfix"; |
141 | ExecStart = let python = pkgs.python3.withPackages (p: [ p.pymilter ]); | 145 | ExecStart = let python = pkgs.python3.withPackages (p: [ p.pymilter ]); |
diff --git a/modules/private/mail/postfix.nix b/modules/private/mail/postfix.nix index c4b09b2..f6c4362 100644 --- a/modules/private/mail/postfix.nix +++ b/modules/private/mail/postfix.nix | |||
@@ -463,5 +463,6 @@ | |||
463 | done | 463 | done |
464 | ''; | 464 | ''; |
465 | }; | 465 | }; |
466 | systemd.services.postfix.serviceConfig.Slice = "mail.slice"; | ||
466 | }; | 467 | }; |
467 | } | 468 | } |
diff --git a/modules/private/mail/rspamd.nix b/modules/private/mail/rspamd.nix index 98e006d..a20135a 100644 --- a/modules/private/mail/rspamd.nix +++ b/modules/private/mail/rspamd.nix | |||
@@ -28,6 +28,7 @@ | |||
28 | in | 28 | in |
29 | [ "*/20 * * * * vhost ${cron_script}/scan_reported_mails" ]; | 29 | [ "*/20 * * * * vhost ${cron_script}/scan_reported_mails" ]; |
30 | 30 | ||
31 | systemd.services.rspamd.serviceConfig.Slice = "mail.slice"; | ||
31 | services.rspamd = { | 32 | services.rspamd = { |
32 | enable = true; | 33 | enable = true; |
33 | debug = false; | 34 | debug = false; |
diff --git a/modules/private/mail/sympa.nix b/modules/private/mail/sympa.nix index f7070e6..5270b69 100644 --- a/modules/private/mail/sympa.nix +++ b/modules/private/mail/sympa.nix | |||
@@ -50,12 +50,22 @@ in | |||
50 | dest = "sympa/scenari/${n}"; permissions = "0400"; group = "sympa"; user = "sympa"; text = v; | 50 | dest = "sympa/scenari/${n}"; permissions = "0400"; group = "sympa"; user = "sympa"; text = v; |
51 | }) sympaConfig.scenari; | 51 | }) sympaConfig.scenari; |
52 | users.users.sympa.extraGroups = [ "keys" ]; | 52 | users.users.sympa.extraGroups = [ "keys" ]; |
53 | systemd.slices.mail-sympa = { | ||
54 | description = "Sympa slice"; | ||
55 | }; | ||
56 | |||
53 | systemd.services.sympa.serviceConfig.SupplementaryGroups = [ "keys" ]; | 57 | systemd.services.sympa.serviceConfig.SupplementaryGroups = [ "keys" ]; |
54 | systemd.services.sympa-archive.serviceConfig.SupplementaryGroups = [ "keys" ]; | 58 | systemd.services.sympa-archive.serviceConfig.SupplementaryGroups = [ "keys" ]; |
55 | systemd.services.sympa-bounce.serviceConfig.SupplementaryGroups = [ "keys" ]; | 59 | systemd.services.sympa-bounce.serviceConfig.SupplementaryGroups = [ "keys" ]; |
56 | systemd.services.sympa-bulk.serviceConfig.SupplementaryGroups = [ "keys" ]; | 60 | systemd.services.sympa-bulk.serviceConfig.SupplementaryGroups = [ "keys" ]; |
57 | systemd.services.sympa-task.serviceConfig.SupplementaryGroups = [ "keys" ]; | 61 | systemd.services.sympa-task.serviceConfig.SupplementaryGroups = [ "keys" ]; |
58 | 62 | ||
63 | systemd.services.sympa.serviceConfig.Slice = "mail-sympa.slice"; | ||
64 | systemd.services.sympa-archive.serviceConfig.Slice = "mail-sympa.slice"; | ||
65 | systemd.services.sympa-bounce.serviceConfig.Slice = "mail-sympa.slice"; | ||
66 | systemd.services.sympa-bulk.serviceConfig.Slice = "mail-sympa.slice"; | ||
67 | systemd.services.sympa-task.serviceConfig.Slice = "mail-sympa.slice"; | ||
68 | |||
59 | # https://github.com/NixOS/nixpkgs/pull/84202 | 69 | # https://github.com/NixOS/nixpkgs/pull/84202 |
60 | systemd.services.sympa.serviceConfig.ProtectKernelModules = lib.mkForce false; | 70 | systemd.services.sympa.serviceConfig.ProtectKernelModules = lib.mkForce false; |
61 | systemd.services.sympa-archive.serviceConfig.ProtectKernelModules = lib.mkForce false; | 71 | systemd.services.sympa-archive.serviceConfig.ProtectKernelModules = lib.mkForce false; |
@@ -72,6 +82,7 @@ in | |||
72 | wantedBy = [ "multi-user.target" ]; | 82 | wantedBy = [ "multi-user.target" ]; |
73 | after = [ "sympa.service" ]; | 83 | after = [ "sympa.service" ]; |
74 | serviceConfig = { | 84 | serviceConfig = { |
85 | Slice = "mail-sympa.slice"; | ||
75 | Type = "forking"; | 86 | Type = "forking"; |
76 | PIDFile = "/run/sympa/wwsympa.pid"; | 87 | PIDFile = "/run/sympa/wwsympa.pid"; |
77 | Restart = "always"; | 88 | Restart = "always"; |
diff --git a/modules/private/tasks/default.nix b/modules/private/tasks/default.nix index 5e1ac1e..b523995 100644 --- a/modules/private/tasks/default.nix +++ b/modules/private/tasks/default.nix | |||
@@ -263,6 +263,10 @@ in { | |||
263 | ''; | 263 | ''; |
264 | }; | 264 | }; |
265 | 265 | ||
266 | systemd.slices.taskwarrior = { | ||
267 | description = "Taskwarrior slice"; | ||
268 | }; | ||
269 | |||
266 | systemd.services = (lib.attrsets.mapAttrs' (name: userConfig: | 270 | systemd.services = (lib.attrsets.mapAttrs' (name: userConfig: |
267 | let | 271 | let |
268 | credentials = "${userConfig.org}/${name}/${userConfig.key}"; | 272 | credentials = "${userConfig.org}/${name}/${userConfig.key}"; |
@@ -314,6 +318,7 @@ in { | |||
314 | ''; | 318 | ''; |
315 | 319 | ||
316 | serviceConfig = { | 320 | serviceConfig = { |
321 | Slice = "taskwarrior.slice"; | ||
317 | User = user; | 322 | User = user; |
318 | PrivateTmp = true; | 323 | PrivateTmp = true; |
319 | Restart = "always"; | 324 | Restart = "always"; |
@@ -334,6 +339,9 @@ in { | |||
334 | chown :${group} "${server_vardir}/keys/ca.key" | 339 | chown :${group} "${server_vardir}/keys/ca.key" |
335 | chmod g+r "${server_vardir}/keys/ca.key" | 340 | chmod g+r "${server_vardir}/keys/ca.key" |
336 | ''; | 341 | ''; |
342 | taskserver-ca.serviceConfig.Slice = "taskwarrior.slice"; | ||
343 | taskserver-init.serviceConfig.Slice = "taskwarrior.slice"; | ||
344 | taskserver.serviceConfig.Slice = "taskwarrior.slice"; | ||
337 | }; | 345 | }; |
338 | 346 | ||
339 | }; | 347 | }; |
diff --git a/modules/private/vpn/default.nix b/modules/private/vpn/default.nix index fbcba2f..a9051af 100644 --- a/modules/private/vpn/default.nix +++ b/modules/private/vpn/default.nix | |||
@@ -46,12 +46,17 @@ in | |||
46 | fi | 46 | fi |
47 | ''; | 47 | ''; |
48 | 48 | ||
49 | systemd.slices.tinc = { | ||
50 | description = "Tinc slice"; | ||
51 | }; | ||
52 | |||
49 | systemd.services.tinc-Immae = { | 53 | systemd.services.tinc-Immae = { |
50 | description = "Tinc Daemon - Immae"; | 54 | description = "Tinc Daemon - Immae"; |
51 | wantedBy = [ "multi-user.target" ]; | 55 | wantedBy = [ "multi-user.target" ]; |
52 | after = [ "network.target" ]; | 56 | after = [ "network.target" ]; |
53 | path = [ pkgs.tinc pkgs.bashInteractive pkgs.iproute pkgs.gnused pkgs.gawk pkgs.git pkgs.glibc ]; | 57 | path = [ pkgs.tinc pkgs.bashInteractive pkgs.iproute pkgs.gnused pkgs.gawk pkgs.git pkgs.glibc ]; |
54 | serviceConfig = { | 58 | serviceConfig = { |
59 | Slice = "tinc.slice"; | ||
55 | Type = "simple"; | 60 | Type = "simple"; |
56 | Restart = "always"; | 61 | Restart = "always"; |
57 | RestartSec = "3"; | 62 | RestartSec = "3"; |