nixpkgs/nixos/tests/systemd-template-override.nix
Adrian Parvin D. Ouano e3b90b6ccc nixos/systemd: Handle template overrides
Adding template overrides allows for custom behavior for specific
instances of a template. Previously, it was not possible to provide
bind mounts for systemd-nspawn. This change allows it.
2021-03-11 10:21:14 +08:00

42 lines
1.1 KiB
Nix

import ./make-test-python.nix {
name = "systemd-template-override";
machine = { pkgs, lib, ... }: let
touchTmp = pkgs.writeTextFile {
name = "touch-tmp@.service";
text = ''
[Service]
Type=oneshot
ExecStart=${pkgs.coreutils}/bin/touch /tmp/%I
'';
destination = "/etc/systemd/system/touch-tmp@.service";
};
in {
systemd.packages = [ touchTmp ];
systemd.services."touch-tmp@forbidden" = {
serviceConfig.ExecStart = [ "" ''
${pkgs.coreutils}/bin/true
''];
};
systemd.services."touch-tmp@intercept" = {
serviceConfig.ExecStart = [ "" ''
${pkgs.coreutils}/bin/touch /tmp/renamed
''];
};
};
testScript = ''
machine.wait_for_unit("default.target")
machine.succeed("systemctl start touch-tmp@normal")
machine.succeed("systemctl start touch-tmp@forbbidden")
machine.succeed("systemctl start touch-tmp@intercept")
machine.succeed("[ -e /tmp/normal ]")
machine.succeed("[ ! -e /tmp/forbidden ]")
machine.succeed("[ -e /tmp/renamed ]")
'';
}