nixos/git: allow lists for config to keep things in order
This commit is contained in:
parent
d0486aaa62
commit
a0a6d4da33
@ -20,15 +20,41 @@ in
|
||||
};
|
||||
|
||||
config = mkOption {
|
||||
type = with types; attrsOf (attrsOf anything);
|
||||
default = { };
|
||||
type =
|
||||
with types;
|
||||
let
|
||||
gitini = attrsOf (attrsOf anything);
|
||||
in
|
||||
either gitini (listOf gitini) // {
|
||||
merge = loc: defs:
|
||||
let
|
||||
config = foldl'
|
||||
(acc: { value, ... }@x: acc // (if isList value then {
|
||||
ordered = acc.ordered ++ value;
|
||||
} else {
|
||||
unordered = acc.unordered ++ [ x ];
|
||||
}))
|
||||
{
|
||||
ordered = [ ];
|
||||
unordered = [ ];
|
||||
}
|
||||
defs;
|
||||
in
|
||||
[ (gitini.merge loc config.unordered) ] ++ config.ordered;
|
||||
};
|
||||
default = [ ];
|
||||
example = {
|
||||
init.defaultBranch = "main";
|
||||
url."https://github.com/".insteadOf = [ "gh:" "github:" ];
|
||||
};
|
||||
description = lib.mdDoc ''
|
||||
Configuration to write to /etc/gitconfig. See the CONFIGURATION FILE
|
||||
section of git-config(1) for more information.
|
||||
Configuration to write to /etc/gitconfig. A list can also be
|
||||
specified to keep the configuration in order. For example, setting
|
||||
`config` to `[ { foo.x = 42; } { bar.y = 42; }]` will put the `foo`
|
||||
section before the `bar` section unlike the default alphabetical
|
||||
order, which can be helpful for sections such as `include` and
|
||||
`includeIf`. See the CONFIGURATION FILE section of git-config(1) for
|
||||
more information.
|
||||
'';
|
||||
};
|
||||
|
||||
@ -48,8 +74,8 @@ in
|
||||
config = mkMerge [
|
||||
(mkIf cfg.enable {
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
environment.etc.gitconfig = mkIf (cfg.config != {}) {
|
||||
text = generators.toGitINI cfg.config;
|
||||
environment.etc.gitconfig = mkIf (cfg.config != [ ]) {
|
||||
text = concatMapStringsSep "\n" generators.toGitINI cfg.config;
|
||||
};
|
||||
})
|
||||
(mkIf (cfg.enable && cfg.lfs.enable) {
|
||||
|
Loading…
Reference in New Issue
Block a user