summary refs log tree commit diff
path: root/nixos/modules/services/network-filesystems
diff options
context:
space:
mode:
authorPeter Simons <simons@cryp.to>2017-12-17 08:53:18 +0100
committerGitHub <noreply@github.com>2017-12-17 08:53:18 +0100
commit0fe97853058ae0833331ede92129f9d782c6d5ac (patch)
tree6798b860783c76b5cb4dca799528a7fd4da2536d /nixos/modules/services/network-filesystems
parent2737faba4738c7f99a95cb949837bfbcbc883a64 (diff)
parent9724654c74d868fb1ddb873a763a221c0608cdb4 (diff)
downloadnixlib-0fe97853058ae0833331ede92129f9d782c6d5ac.tar
nixlib-0fe97853058ae0833331ede92129f9d782c6d5ac.tar.gz
nixlib-0fe97853058ae0833331ede92129f9d782c6d5ac.tar.bz2
nixlib-0fe97853058ae0833331ede92129f9d782c6d5ac.tar.lz
nixlib-0fe97853058ae0833331ede92129f9d782c6d5ac.tar.xz
nixlib-0fe97853058ae0833331ede92129f9d782c6d5ac.tar.zst
nixlib-0fe97853058ae0833331ede92129f9d782c6d5ac.zip
Merge pull request #32584 from manoj23/davfs2-v3
davfs2: create user/group davfs2 if not specified in the configuration
Diffstat (limited to 'nixos/modules/services/network-filesystems')
-rw-r--r--nixos/modules/services/network-filesystems/davfs2.nix74
1 files changed, 74 insertions, 0 deletions
diff --git a/nixos/modules/services/network-filesystems/davfs2.nix b/nixos/modules/services/network-filesystems/davfs2.nix
new file mode 100644
index 000000000000..6b2a770100c5
--- /dev/null
+++ b/nixos/modules/services/network-filesystems/davfs2.nix
@@ -0,0 +1,74 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.davfs2;
+  cfgFile = pkgs.writeText "davfs2.conf" ''
+    dav_user ${cfg.davUser}
+    dav_group ${cfg.davGroup}
+    ${cfg.extraConfig}
+  '';
+in
+{
+  options.services.davfs2 = {
+    enable = mkOption {
+      type = types.bool;
+      default = false;
+      description = ''
+        Whether to enable davfs2.
+      '';
+    };
+
+    davUser = mkOption {
+      type = types.string;
+      default = "davfs2";
+      description = ''
+        When invoked by root the mount.davfs daemon will run as this user.
+        Value must be given as name, not as numerical id.
+      '';
+    };
+
+    davGroup = mkOption {
+      type = types.string;
+      default = "davfs2";
+      description = ''
+        The group of the running mount.davfs daemon. Ordinary users must be
+        member of this group in order to mount a davfs2 file system. Value must
+        be given as name, not as numerical id.
+      '';
+    };
+
+    extraConfig = mkOption {
+      type = types.lines;
+      default = "";
+      example = ''
+        kernel_fs coda
+        proxy foo.bar:8080
+        use_locks 0
+      '';
+      description = ''
+        Extra lines appended to the configuration of davfs2.
+      ''  ;
+    };
+  };
+
+  config = mkIf cfg.enable {
+    environment.systemPackages = [ pkgs.davfs2 ];
+    environment.etc."davfs2/davfs2.conf".source = cfgFile;
+
+    users.extraGroups = optionalAttrs (cfg.davGroup == "davfs2") (singleton {
+      name = "davfs2";
+      gid = config.ids.gids.davfs2;
+    });
+
+    users.extraUsers = optionalAttrs (cfg.davUser == "davfs2") (singleton {
+      name = "davfs2";
+      createHome = false;
+      group = cfg.davGroup;
+      uid = config.ids.uids.davfs2;
+      description = "davfs2 user";
+    });
+  };
+
+}