diff options
Diffstat (limited to 'modules/git/default.nix')
-rw-r--r-- | modules/git/default.nix | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/modules/git/default.nix b/modules/git/default.nix deleted file mode 100644 index 65aefb45..00000000 --- a/modules/git/default.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ config, lib, pkgs, ... }: - -with lib; - -let - genConf = attrs: let - escStr = s: "\"${escape [ "\"" "\\" ] s}\""; - mkVal = v: if isBool v && v then "true" - else if isBool v && !v then "false" - else escStr (toString v); - mkLine = key: val: "${key} = ${mkVal val}"; - - filterNull = filterAttrs (_: v: !(isNull v)); - - mkSection = sect: subsect: vals: '' - [${sect}${optionalString (subsect != null) " ${escStr subsect}"}] - ${concatStringsSep "\n" (mapAttrsToList mkLine (filterNull vals))} - ''; - - mkConf = sect: content: let - subs = filterAttrs (_: isAttrs) content; - nonSubs = filterAttrs (_: s: !isAttrs s) content; - hasPlain = (attrNames nonSubs) != []; - plainSects = singleton (mkSection sect null nonSubs); - in mapAttrsToList (mkSection sect) subs ++ optional hasPlain plainSects; - - text = concatStringsSep "\n" (flatten (mapAttrsToList mkConf attrs)); - in pkgs.writeText "gitconfig" text; - - gitPatched = overrideDerivation pkgs.gitFull (git: { - makeFlags = let - oldFlags = git.makeFlags or []; - newVal = "ETC_GITCONFIG=${config.vuizvui.git.config}"; - in if isList oldFlags - then oldFlags ++ [ newVal ] - else "${oldFlags} ${newVal}"; - }); -in { - options.vuizvui.git = { - enable = mkEnableOption "Git"; - - config = mkOption { - description = "System-wide default config for Git"; - - type = let - superType = types.attrsOf types.unspecified; - in mkOptionType { - name = "attribute set of either plain values or " - + "attribute sets of values (if it is a subsection)"; - inherit (superType) check merge; - inherit (superType) getSubOptions getSubModules substSubModules; - }; - - default = {}; - example = { - color.ui = "auto"; - merge.tool = "vimdiff"; - guitool.foobar.noconsole = true; - }; - - apply = genConf; - }; - }; - - config = mkIf config.vuizvui.git.enable { - environment.systemPackages = [ - gitPatched - pkgs.gitAndTools.git-remote-hg - pkgs.gitAndTools.hub - ]; - }; -} |