1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-11-08 11:36:05 +01:00
home-manager/modules/programs/git-credential-keepassxc.nix
Austin Horstman ac7c05a90c git: extraConfig -> settings
Remove string support and convert to rfc42 settings option

Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
2025-10-19 10:24:15 -05:00

58 lines
1.5 KiB
Nix

{
config,
lib,
pkgs,
...
}:
let
cfg = config.programs.git-credential-keepassxc;
in
{
meta.maintainers = [ lib.maintainers.bmrips ];
options.programs.git-credential-keepassxc = {
enable = lib.mkEnableOption "{command}`git-credential-keepassxc`.";
package = lib.mkPackageOption pkgs "git-credential-keepassxc" { };
groups = lib.mkOption {
type = with lib.types; nullOr (listOf str);
default = null;
example = "Git";
description = ''
The KeePassXC groups used for storing and fetching of credentials. By
default, the groups created by
{command}`git-credential-keepassxc configure [--group <GROUP>]` are used.
'';
};
hosts = lib.mkOption {
type = with lib.types; listOf str;
default = [ ];
example = [ "https://github.com" ];
description = "Hosts for which {command}`git-credential-keepassxc` is enabled.";
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
programs.git.settings.credential =
let
helperConfig =
let
groups =
if cfg.groups == null then
"--git-groups"
else
lib.concatStringsSep " " (map (g: "--group ${g}") cfg.groups);
in
{
helper = "${cfg.package}/bin/git-credential-keepassxc ${groups}";
};
in
if cfg.hosts == [ ] then
helperConfig
else
lib.listToAttrs (map (host: lib.nameValuePair host helperConfig)) cfg.hosts;
};
}