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
3 changed files with 36 additions and 0 deletions
|
@ -79,6 +79,7 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# FIXME: should replace this with something that uses systemd-tmpfiles.
|
||||||
cleanTmpDir = mkOption {
|
cleanTmpDir = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
|
|
|
@ -143,6 +143,7 @@ let
|
||||||
|
|
||||||
# Temporary file creation / cleanup.
|
# Temporary file creation / cleanup.
|
||||||
"systemd-tmpfiles-clean.service"
|
"systemd-tmpfiles-clean.service"
|
||||||
|
"systemd-tmpfiles-clean.timer"
|
||||||
"systemd-tmpfiles-setup.service"
|
"systemd-tmpfiles-setup.service"
|
||||||
"systemd-tmpfiles-setup-dev.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/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; } ];
|
[ { device = "/root/swapfile"; size = 128; } ];
|
||||||
environment.variables.EDITOR = pkgs.lib.mkOverride 0 "emacs";
|
environment.variables.EDITOR = pkgs.lib.mkOverride 0 "emacs";
|
||||||
services.nixosManual.enable = pkgs.lib.mkOverride 0 true;
|
services.nixosManual.enable = pkgs.lib.mkOverride 0 true;
|
||||||
|
systemd.tmpfiles.rules = [ "d /tmp 1777 root root 10d" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
testScript =
|
testScript =
|
||||||
|
@ -69,6 +70,16 @@ import ./make-test.nix {
|
||||||
$machine->waitForUnit('systemd-udev-settle.service');
|
$machine->waitForUnit('systemd-udev-settle.service');
|
||||||
$machine->succeed('lsmod | grep psmouse');
|
$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 a new issue