Browse Source

git: allow contents in git.includes

master
Mario Rodas 9 months ago
parent
commit
6da88339f5
No account linked to committer's email address

+ 15
- 3
modules/programs/git.nix View File

@@ -34,7 +34,7 @@ let
};
};

includeModule = types.submodule {
includeModule = types.submodule ({ config, ... }: {
options = {
condition = mkOption {
type = types.nullOr types.str;
@@ -50,11 +50,23 @@ let
};

path = mkOption {
type = types.str;
type = with types; either str path;
description = "Path of the configuration file to include.";
};

contents = mkOption {
type = types.attrs;
default = {};
description = ''
Configuration to include. If empty then a path must be given.
'';
};
};
};

config.path = mkIf (config.contents != {}) (
mkDefault (pkgs.writeText "contents" (generators.toINI {} config.contents))
);
});

in


+ 3
- 0
tests/modules/programs/git-expected.conf View File

@@ -29,3 +29,6 @@ path = ~/path/to/config.inc

[includeIf "gitdir:~/src/dir"]
path = ~/path/to/conditional.inc

[includeIf "gitdir:~/src/dir"]
path = @git_include_path@

+ 23
- 2
tests/modules/programs/git.nix View File

@@ -1,7 +1,24 @@
{ config, lib, ... }:
{ config, lib, pkgs, ... }:

with lib;

let

gitInclude = {
user = {
name = "John Doe";
email = "user@example.org";
};
};

substituteExpected = path: pkgs.substituteAll {
src = path;

git_include_path = pkgs.writeText "contents" (generators.toINI {} gitInclude);
};

in

{
config = {
programs.git = mkMerge [
@@ -23,6 +40,10 @@ with lib;
path = "~/path/to/conditional.inc";
condition = "gitdir:~/src/dir";
}
{
condition = "gitdir:~/src/dir";
contents = gitInclude;
}
];
signing = {
gpgPath = "path-to-gpg";
@@ -43,7 +64,7 @@ with lib;

nmt.script = ''
assertFileExists home-files/.config/git/config
assertFileContent home-files/.config/git/config ${./git-expected.conf}
assertFileContent home-files/.config/git/config ${substituteExpected ./git-expected.conf}
'';
};
}

Loading…
Cancel
Save