Add option ‘systemd.tmpfiles.rules’
This allows specifying rules for systemd-tmpfiles. Also, enable systemd-tmpfiles-clean.timer so that stuff is cleaned up automatically 15 minutes after boot and every day, *if* you have the appropriate cleanup rules (which we don't have by default).
This commit is contained in:
parent
bb9304e280
commit
560a1103ad
@ -79,6 +79,7 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
# FIXME: should replace this with something that uses systemd-tmpfiles.
|
||||
cleanTmpDir = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
|
@ -143,6 +143,7 @@ let
|
||||
|
||||
# Temporary file creation / cleanup.
|
||||
"systemd-tmpfiles-clean.service"
|
||||
"systemd-tmpfiles-clean.timer"
|
||||
"systemd-tmpfiles-setup.service"
|
||||
"systemd-tmpfiles-setup-dev.service"
|
||||
]
|
||||
@ -629,6 +630,22 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
example = [ "d /tmp 1777 root root 10d" ];
|
||||
description = ''
|
||||
Rules for creating and cleaning up temporary files
|
||||
automatically. See
|
||||
<citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
for the exact format. You should not use this option to create
|
||||
files required by systemd services, since there is no
|
||||
guarantee that <command>systemd-tmpfiles</command> runs when
|
||||
the system is reconfigured using
|
||||
<command>nixos-rebuild</command>.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
@ -747,5 +764,12 @@ in
|
||||
|
||||
environment.etc."tmpfiles.d/x11.conf".source = "${systemd}/example/tmpfiles.d/x11.conf";
|
||||
|
||||
environment.etc."tmpfiles.d/nixos.conf".text =
|
||||
''
|
||||
# This file is created automatically and should not be modified.
|
||||
# Please change the option ‘systemd.tmpfiles.rules’ instead.
|
||||
${concatStringsSep "\n" cfg.tmpfiles.rules}
|
||||
'';
|
||||
|
||||
};
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import ./make-test.nix {
|
||||
[ { device = "/root/swapfile"; size = 128; } ];
|
||||
environment.variables.EDITOR = pkgs.lib.mkOverride 0 "emacs";
|
||||
services.nixosManual.enable = pkgs.lib.mkOverride 0 true;
|
||||
systemd.tmpfiles.rules = [ "d /tmp 1777 root root 10d" ];
|
||||
};
|
||||
|
||||
testScript =
|
||||
@ -69,6 +70,16 @@ import ./make-test.nix {
|
||||
$machine->waitForUnit('systemd-udev-settle.service');
|
||||
$machine->succeed('lsmod | grep psmouse');
|
||||
};
|
||||
|
||||
# Test whether systemd-tmpfiles-clean works.
|
||||
subtest "tmpfiles", sub {
|
||||
$machine->succeed('touch /tmp/foo');
|
||||
$machine->succeed('systemctl start systemd-tmpfiles-clean');
|
||||
$machine->succeed('[ -e /tmp/foo ]');
|
||||
$machine->succeed('date -s "@$(($(date +%s) + 1000000))"'); # move into the future
|
||||
$machine->succeed('systemctl start systemd-tmpfiles-clean');
|
||||
$machine->fail('[ -e /tmp/foo ]');
|
||||
};
|
||||
'';
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user