diff options
author | Julien Moutinho <julm+nixpkgs@sourcephile.fr> | 2024-02-18 13:20:40 +0100 |
---|---|---|
committer | Julien Moutinho <julm+nixpkgs@sourcephile.fr> | 2024-02-25 01:20:29 +0100 |
commit | 7d0c8129637823fc83e2b0aff9a4e945add51af9 (patch) | |
tree | 94700f454138a55de8bc0bf4881732554b1e107b /pkgs/test/systemd | |
parent | 0d1c88c7acb0e8b53ffe2577952dc6ca2df18eda (diff) |
nixos/systemd: merge unit options as lists when at least one value is a list
Diffstat (limited to 'pkgs/test/systemd')
-rw-r--r-- | pkgs/test/systemd/default.nix | 5 | ||||
-rw-r--r-- | pkgs/test/systemd/nixos/default.nix | 37 |
2 files changed, 42 insertions, 0 deletions
diff --git a/pkgs/test/systemd/default.nix b/pkgs/test/systemd/default.nix new file mode 100644 index 0000000000000..2208bf794481f --- /dev/null +++ b/pkgs/test/systemd/default.nix @@ -0,0 +1,5 @@ +{ lib, callPackage }: + +lib.recurseIntoAttrs { + nixos = callPackage ./nixos { }; +} diff --git a/pkgs/test/systemd/nixos/default.nix b/pkgs/test/systemd/nixos/default.nix new file mode 100644 index 0000000000000..e45399b635167 --- /dev/null +++ b/pkgs/test/systemd/nixos/default.nix @@ -0,0 +1,37 @@ +{ pkgs, lib, stdenv, ... }: + +lib.runTests { + # Merging two non-list definitions must still result in an error + # about a conflicting definition. + test-unitOption-merging-non-lists-conflict = + let nixos = pkgs.nixos { + system.stateVersion = lib.trivial.release; + systemd.services.systemd-test-nixos = { + serviceConfig = lib.mkMerge [ + { StateDirectory = "foo"; } + { StateDirectory = "bar"; } + ]; + }; + }; + in { + expr = (builtins.tryEval (nixos.config.systemd.services.systemd-test-nixos.serviceConfig.StateDirectory)).success; + expected = false; + }; + + # Merging must lift non-list definitions to a list + # if at least one of them is a list. + test-unitOption-merging-list-non-list-append = + let nixos = pkgs.nixos { + system.stateVersion = lib.trivial.release; + systemd.services.systemd-test-nixos = { + serviceConfig = lib.mkMerge [ + { StateDirectory = "foo"; } + { StateDirectory = ["bar"]; } + ]; + }; + }; + in { + expr = nixos.config.systemd.services.systemd-test-nixos.serviceConfig.StateDirectory; + expected = [ "foo" "bar" ]; + }; +} |