75 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { 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.groups = optionalAttrs (cfg.davGroup == "davfs2") (singleton {
 | |
|       name = "davfs2";
 | |
|       gid = config.ids.gids.davfs2;
 | |
|     });
 | |
| 
 | |
|     users.users = optionalAttrs (cfg.davUser == "davfs2") (singleton {
 | |
|       name = "davfs2";
 | |
|       createHome = false;
 | |
|       group = cfg.davGroup;
 | |
|       uid = config.ids.uids.davfs2;
 | |
|       description = "davfs2 user";
 | |
|     });
 | |
|   };
 | |
| 
 | |
| }
 | 
