portfolio: 0.71.2 -> 0.72.2 (#360387)
[NixPkgs.git] / nixos / modules / services / network-filesystems / cachefilesd.nix
blobb1c13cf41501c9a6239de18afc7809cc21b33601
1 { config, pkgs, lib, ... }:
2 let
4   cfg = config.services.cachefilesd;
6   cfgFile = pkgs.writeText "cachefilesd.conf" ''
7     dir ${cfg.cacheDir}
8     ${cfg.extraConfig}
9   '';
14   options = {
15     services.cachefilesd = {
17       enable = lib.mkOption {
18         type = lib.types.bool;
19         default = false;
20         description = "Whether to enable cachefilesd network filesystems caching daemon.";
21       };
23       cacheDir = lib.mkOption {
24         type = lib.types.str;
25         default = "/var/cache/fscache";
26         description = "Directory to contain filesystem cache.";
27       };
29       extraConfig = lib.mkOption {
30         type = lib.types.lines;
31         default = "";
32         example = "brun 10%";
33         description = "Additional configuration file entries. See cachefilesd.conf(5) for more information.";
34       };
36     };
37   };
39   ###### implementation
41   config = lib.mkIf cfg.enable {
43     boot.kernelModules = [ "cachefiles" ];
45     systemd.services.cachefilesd = {
46       description = "Local network file caching management daemon";
47       wantedBy = [ "multi-user.target" ];
48       serviceConfig = {
49         Type = "exec";
50         ExecStart = "${pkgs.cachefilesd}/bin/cachefilesd -n -f ${cfgFile}";
51         Restart = "on-failure";
52         PrivateTmp = true;
53       };
54     };
56     systemd.tmpfiles.settings."10-cachefilesd".${cfg.cacheDir}.d = {
57       user = "root";
58       group = "root";
59       mode = "0700";
60     };
61   };