diff options
author | lassulus <lassulus@lassul.us> | 2020-09-08 22:04:21 +0200 |
---|---|---|
committer | lassulus <lassulus@lassul.us> | 2020-09-08 22:04:21 +0200 |
commit | 32a5fd32c8a06084ee06d57cb2feeac0b14b380d (patch) | |
tree | c33c4e9d8da1ba419541950f110f4b4dfbf8155b /krebs/3modules/permown.nix | |
parent | 549598bfd9cf6e94f8bb83ebbcc17400069f1198 (diff) | |
parent | 6fbbf7e6170f6a1ba42c5dcecd11ca67c6bc5afd (diff) |
Merge remote-tracking branch 'ni/master' into HEAD
Diffstat (limited to 'krebs/3modules/permown.nix')
-rw-r--r-- | krebs/3modules/permown.nix | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/krebs/3modules/permown.nix b/krebs/3modules/permown.nix index fe293810c..ca81e2ea5 100644 --- a/krebs/3modules/permown.nix +++ b/krebs/3modules/permown.nix @@ -18,6 +18,15 @@ with import <stockholm/lib>; default = null; type = types.nullOr types.groupname; }; + keepGoing = mkOption { + default = false; + type = types.bool; + description = '' + Whether to keep going when chowning or chmodding fails. + If set to false, then errors will cause the service to restart + instead. + ''; + }; owner = mkOption { type = types.username; }; @@ -43,7 +52,12 @@ with import <stockholm/lib>; ''; in concatMapStrings mkdir plans; - systemd.services = genAttrs' plans (plan: { + systemd.services = genAttrs' plans (plan: let + continuable = command: + if plan.keepGoing + then /* sh */ "{ ${command}; } || :" + else command; + in { name = "permown.${replaceStrings ["/"] ["_"] plan.path}"; value = { environment = { @@ -82,9 +96,9 @@ with import <stockholm/lib>; cleanup exec "$0" "$@" fi - chown -h "$OWNER_GROUP" "$path" + ${continuable /* sh */ ''chown -h "$OWNER_GROUP" "$path"''} if test -f "$path"; then - chmod "$FILE_MODE" "$path" + ${continuable /* sh */ ''chmod "$FILE_MODE" "$path"''} fi done < "$paths" ''; |