Compare commits

...

2 Commits

2 changed files with 52 additions and 6 deletions

View File

@ -1,10 +1,14 @@
{ lib, ... }: {
{ lib, ... }:
let
repo = (builtins.fetchGit {
url = "https://git.finally.coffee/transcaffeine/dotfiles.git";
ref = "main";
shallow = true;
});
utils = import ../../../utils { inherit lib; };
in {
programs.gpg = let
repo = (builtins.fetchGit {
url = "https://git.finally.coffee/transcaffeine/dotfiles.git";
ref = "main";
shallow = true;
});
gpgconf = builtins.listToAttrs (
map (entry: {
name = toString (lib.sublist 0 1 (lib.splitString " " entry));
@ -21,4 +25,32 @@
enable = true;
settings = gpgconf;
};
services.gpg-agent = let
gpg_agent_config = builtins.listToAttrs (
map (entry: let
val = toString (lib.sublist 1 100 (lib.splitString " " entry));
emptyStringToTrue = (x: if lib.isBool x then x else if x == "" then true else x);
in {
name = toString (lib.sublist 0 1 (lib.splitString " " entry));
value = emptyStringToTrue val;
}) (
builtins.filter (v: v != "") (
lib.splitString "\n" (
lib.readFile (repo.outPath + "/config/gnupg/gpg-agent.conf")
)
)
)
);
in {
enable = true;
enableSshSupport = gpg_agent_config."enable-ssh-support";
defaultCacheTtl = gpg_agent_config."default-cache-ttl";
maxCacheTtl = gpg_agent_config."max-cache-ttl";
defaultCacheTtlSsh = gpg_agent_config."default-cache-ttl-ssh";
maxCacheTtlSsh = gpg_agent_config."max-cache-ttl-ssh";
extraConfig = utils.attrsToConfig {
"ignore-cache-for-signing" = gpg_agent_config."ignore-cache-for-signing";
"no-allow-external-cache" = gpg_agent_config."no-allow-external-cache";
};
};
}

14
utils/default.nix Normal file
View File

@ -0,0 +1,14 @@
{ lib, ...}:
rec {
_tupleToEntry = x: x.name + (if lib.isBool x.value then "" else (" " + x.value));
attrsToConfig = attrs: (
lib.concatStringsSep "\n" (
map (_tupleToEntry) (
builtins.filter (e: e.value != false) (
lib.attrsToList attrs
)
)
)
);
}