git: allow contents in git.includes

This commit is contained in:
Mario Rodas 2019-01-29 06:33:10 -05:00 committed by Robert Helgesson
parent e0e8d5061d
commit 6da88339f5
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
3 changed files with 41 additions and 5 deletions

View file

@ -34,7 +34,7 @@ let
};
};
includeModule = types.submodule {
includeModule = types.submodule ({ config, ... }: {
options = {
condition = mkOption {
type = types.nullOr types.str;
@ -50,12 +50,24 @@ 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
{

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@

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}
'';
};
}