diff options
author | Silvan Mosberger <contact@infinisil.com> | 2021-08-11 20:28:30 +0200 |
---|---|---|
committer | Silvan Mosberger <contact@infinisil.com> | 2022-03-25 17:47:44 +0100 |
commit | c70a466d21fbd72f73cfc263e93f967e79953e73 (patch) | |
tree | b433402ef91dd0d296ce50f01448e24e9b8575de /nixos | |
parent | 4d60081494259c0785f7e228518fee74e0792c1b (diff) | |
download | nixlib-c70a466d21fbd72f73cfc263e93f967e79953e73.tar nixlib-c70a466d21fbd72f73cfc263e93f967e79953e73.tar.gz nixlib-c70a466d21fbd72f73cfc263e93f967e79953e73.tar.bz2 nixlib-c70a466d21fbd72f73cfc263e93f967e79953e73.tar.lz nixlib-c70a466d21fbd72f73cfc263e93f967e79953e73.tar.xz nixlib-c70a466d21fbd72f73cfc263e93f967e79953e73.tar.zst nixlib-c70a466d21fbd72f73cfc263e93f967e79953e73.zip |
nixos/systemd: Allow creation of unit directories
This patch allows creation of files like /etc/systemd/system/user-.slice.d/limits.conf with systemd.units."user-.slice.d/limits.conf" = { text = '' [Slice] CPUAccounting=yes CPUQuota=50% ''; }; which previously threw an error Also renames the systemd-unit-path test to sytsemd-misc, and extends it to test that `systemd.units` can handle directories. In this case we make sure that resource limits specified in user slices apply.
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/lib/systemd-lib.nix | 10 | ||||
-rw-r--r-- | nixos/tests/all-tests.nix | 2 | ||||
-rw-r--r-- | nixos/tests/systemd-misc.nix (renamed from nixos/tests/systemd-unit-path.nix) | 17 |
3 files changed, 23 insertions, 6 deletions
diff --git a/nixos/lib/systemd-lib.nix b/nixos/lib/systemd-lib.nix index a472d97f5cc7..37900b0b16f6 100644 --- a/nixos/lib/systemd-lib.nix +++ b/nixos/lib/systemd-lib.nix @@ -23,8 +23,9 @@ in rec { inherit (unit) text; } '' - mkdir -p $out - echo -n "$text" > $out/${shellEscape name} + name=${shellEscape name} + mkdir -p "$out/$(dirname "$name")" + echo -n "$text" > "$out/$name" '' else pkgs.runCommand "unit-${mkPathSafeName name}-disabled" @@ -32,8 +33,9 @@ in rec { allowSubstitutes = false; } '' - mkdir -p $out - ln -s /dev/null $out/${shellEscape name} + name=${shellEscape name} + mkdir -p "$out/$(dirname "$name")" + ln -s /dev/null "$out/$name" ''; boolValues = [true false "yes" "no"]; diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 8d54f78a9481..5105890029bb 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -518,7 +518,7 @@ in systemd-networkd-vrf = handleTest ./systemd-networkd-vrf.nix {}; systemd-nspawn = handleTest ./systemd-nspawn.nix {}; systemd-timesyncd = handleTest ./systemd-timesyncd.nix {}; - systemd-unit-path = handleTest ./systemd-unit-path.nix {}; + systemd-misc = handleTest ./systemd-misc.nix {}; taskserver = handleTest ./taskserver.nix {}; teeworlds = handleTest ./teeworlds.nix {}; telegraf = handleTest ./telegraf.nix {}; diff --git a/nixos/tests/systemd-unit-path.nix b/nixos/tests/systemd-misc.nix index 5998a187188a..e416baa8b5f5 100644 --- a/nixos/tests/systemd-unit-path.nix +++ b/nixos/tests/systemd-misc.nix @@ -29,10 +29,23 @@ let }; in { - name = "systemd-unit-path"; + name = "systemd-misc"; machine = { pkgs, lib, ... }: { boot.extraSystemdUnitPaths = [ "/etc/systemd-rw/system" ]; + + users.users.limited = { + isNormalUser = true; + uid = 1000; + }; + + systemd.units."user-1000.slice.d/limits.conf" = { + text = '' + [Slice] + TasksAccounting=yes + TasksMax=100 + ''; + }; }; testScript = '' @@ -43,5 +56,7 @@ in ) machine.succeed("systemctl start example.service") machine.succeed("systemctl status example.service | grep 'Active: active'") + + machine.succeed("systemctl show --property TasksMax --value user-1000.slice | grep 100") ''; }) |