aboutsummaryrefslogtreecommitdiff
path: root/home-manager/modules/misc/tmpfiles.nix
blob: c46fe2c553aa245cb915fd364a41f8a73ddc161b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
{ config, lib, pkgs, ... }:

with lib;

let

  cfg = config.systemd.user.tmpfiles;

in {
  meta.maintainers = [ maintainers.dawidsowa ];

  options.systemd.user.tmpfiles.rules = mkOption {
    type = types.listOf types.str;
    default = [ ];
    example = [ "L /home/user/Documents - - - - /mnt/data/Documents" ];
    description = ''
      Rules for creating and cleaning up temporary files
      automatically. See
      <citerefentry>
        <refentrytitle>tmpfiles.d</refentrytitle>
        <manvolnum>5</manvolnum>
      </citerefentry>
      for the exact format.
    '';
  };

  config = mkIf (cfg.rules != [ ]) {
    xdg = {
      dataFile."user-tmpfiles.d/home-manager.conf" = {
        text = ''
          # This file is created automatically and should not be modified.
          # Please change the option ‘systemd.user.tmpfiles.rules’ instead.
          ${concatStringsSep "\n" cfg.rules}
        '';
        onChange = "${pkgs.systemd}/bin/systemd-tmpfiles --user --create";
      };
      configFile = {
        "systemd/user/basic.target.wants/systemd-tmpfiles-setup.service".source =
          "${pkgs.systemd}/example/systemd/user/systemd-tmpfiles-setup.service";
        "systemd/user/systemd-tmpfiles-setup.service".source =
          "${pkgs.systemd}/example/systemd/user/systemd-tmpfiles-setup.service";
        "systemd/user/timers.target.wants/systemd-tmpfiles-clean.timer".source =
          "${pkgs.systemd}/example/systemd/user/systemd-tmpfiles-clean.timer";
        "systemd/user/systemd-tmpfiles-clean.service".source =
          "${pkgs.systemd}/example/systemd/user/systemd-tmpfiles-clean.service";
      };
    };
  };
}