nixos/preload: init
[NixPkgs.git] / nixos / modules / services / network-filesystems / cachefilesd.nix
blobda5a79a062c7caf5ef83304a0ff06c04099f1573
1 { config, pkgs, lib, ... }:
3 with lib;
5 let
7   cfg = config.services.cachefilesd;
9   cfgFile = pkgs.writeText "cachefilesd.conf" ''
10     dir ${cfg.cacheDir}
11     ${cfg.extraConfig}
12   '';
17   options = {
18     services.cachefilesd = {
20       enable = mkOption {
21         type = types.bool;
22         default = false;
23         description = lib.mdDoc "Whether to enable cachefilesd network filesystems caching daemon.";
24       };
26       cacheDir = mkOption {
27         type = types.str;
28         default = "/var/cache/fscache";
29         description = lib.mdDoc "Directory to contain filesystem cache.";
30       };
32       extraConfig = mkOption {
33         type = types.lines;
34         default = "";
35         example = "brun 10%";
36         description = lib.mdDoc "Additional configuration file entries. See cachefilesd.conf(5) for more information.";
37       };
39     };
40   };
42   ###### implementation
44   config = mkIf cfg.enable {
46     boot.kernelModules = [ "cachefiles" ];
48     systemd.services.cachefilesd = {
49       description = "Local network file caching management daemon";
50       wantedBy = [ "multi-user.target" ];
51       serviceConfig = {
52         Type = "exec";
53         ExecStart = "${pkgs.cachefilesd}/bin/cachefilesd -n -f ${cfgFile}";
54         Restart = "on-failure";
55         PrivateTmp = true;
56       };
57     };
59     systemd.tmpfiles.rules = [
60       "d ${cfg.cacheDir} 0700 root root - -"
61     ];
62   };