Skip to content

Commit

Permalink
nixos/davfs2: fix settings option
Browse files Browse the repository at this point in the history
  • Loading branch information
eclairevoyant committed Apr 11, 2024
1 parent 8c0ec71 commit fc94606
Showing 1 changed file with 39 additions and 20 deletions.
59 changes: 39 additions & 20 deletions nixos/modules/services/network-filesystems/davfs2.nix
Original file line number Diff line number Diff line change
@@ -1,24 +1,29 @@
{ config, lib, pkgs, ... }:

let
toStr = value:
if true == value then "yes"
else if false == value then "no"
else toString value;

inherit (lib.attrsets) mapAttrsToList optionalAttrs;
inherit (lib.attrsets) optionalAttrs;
inherit (lib.generators) toINIWithGlobalSection;
inherit (lib.lists) optional;
inherit (lib.modules) mkIf;
inherit (lib.options) literalExpression mkEnableOption mkOption;
inherit (lib.strings) concatLines;
inherit (lib.types) lines str submodule;
inherit (lib.strings) escape;
inherit (lib.types) attrsOf bool int lines oneOf str submodule;

cfg = config.services.davfs2;
format = pkgs.formats.toml { };
configFile = let
settings = mapAttrsToList (n: v: "${n} = ${toStr v}") cfg.settings;
in pkgs.writeText "davfs2.conf" ''
${concatLines settings}

escapeString = escape ["\"" "'"];

formatValue = value:
if true == value then "1"
else if false == value then "0"
else if builtins.isString value then "\"${escapeString value}\""
else toString value;

configFile = pkgs.writeText "davfs2.conf" ''
${toINIWithGlobalSection {
mkSectionName = escapeString;
mkKeyValue = k: v: "${k} ${formatValue v}";
} cfg.settings}
${cfg.extraConfig}
'';
in
Expand Down Expand Up @@ -71,14 +76,26 @@ in

settings = mkOption {
type = submodule {
freeformType = format.type;
freeformType = let
valueTypes = [ bool int str ];
in
attrsOf (attrsOf (oneOf (valueTypes ++ [ (attrsOf (oneOf valueTypes)) ] )));
};
default = {};
default = { };
example = literalExpression ''
{
kernel_fs = "coda";
proxy = "foo.bar:8080";
use_locks = 0;
globalSection = {
proxy = "foo.bar:8080";
use_locks = false;
};
sections = {
"/media/dav" = {
use_locks = true;
};
"/home/otto/mywebspace" = {
gui_optimize = true;
};
};
}
'';
description = ''
Expand All @@ -99,8 +116,10 @@ in
environment.etc."davfs2/davfs2.conf".source = configFile;

services.davfs2.settings = {
dav_user = cfg.davUser;
dav_group = cfg.davGroup;
globalSection = {
dav_user = cfg.davUser;
dav_group = cfg.davGroup;
};
};

users.groups = optionalAttrs (cfg.davGroup == "davfs2") {
Expand Down

0 comments on commit fc94606

Please sign in to comment.