]> Git — Sourcephile - julm/julm-nix.git/blob - nixos/profiles/systemd-oomd.nix
+user/reliability(systemd-oomd): enable ManagedOOMSwap=kill on user.slice
[julm/julm-nix.git] / nixos / profiles / systemd-oomd.nix
1 {
2 config,
3 lib,
4 ...
5 }:
6 let
7 cfg = config.systemd.oomd;
8 in
9 {
10 systemd.oomd = {
11 enable = lib.mkDefault true;
12 enableRootSlice = lib.mkDefault true;
13 enableSystemSlice = lib.mkDefault true;
14 enableUserSlices = lib.mkDefault true;
15 };
16 systemd.slices."-".sliceConfig = lib.mkIf cfg.enableRootSlice {
17 ManagedOOMMemoryPressure = "kill";
18 ManagedOOMMemoryPressureLimit = lib.mkDefault "80%";
19 ManagedOOMSwap = "kill";
20 ManagedOOMSwapLimit = lib.mkDefault "80%";
21 };
22 systemd.slices."system".sliceConfig = lib.mkIf cfg.enableSystemSlice {
23 ManagedOOMMemoryPressure = "kill";
24 ManagedOOMMemoryPressureLimit = lib.mkDefault "80%";
25 ManagedOOMSwap = "kill";
26 ManagedOOMSwapLimit = lib.mkDefault "80%";
27 };
28 systemd.slices."user".sliceConfig = lib.mkIf cfg.enableUserSlices {
29 ManagedOOMMemoryPressure = "kill";
30 ManagedOOMMemoryPressureLimit = lib.mkDefault "80%";
31 ManagedOOMSwap = "kill";
32 ManagedOOMSwapLimit = lib.mkDefault "80%";
33 };
34 systemd.user.units."slice" = lib.mkIf cfg.enableUserSlices (
35 lib.mkForce {
36 text = ''
37 [Slice]
38 ManagedOOMMemoryPressure=kill
39 ManagedOOMMemoryPressureLimit=80%
40 ManagedOOMSwap=kill
41 ManagedOOMSwapLimit=80%
42 '';
43 overrideStrategy = "asDropin";
44 }
45 );
46
47 }