Files
nix/lib/secrets.nix
T
2026-11-06 16:36:46 +01:00

36 lines
991 B
Nix

{ lib }:
{
mkSopsSecrets =
sopsDir: owner: groups:
let
opts = lib.optionalAttrs (owner != null) { inherit owner; };
mkGroup =
group: names:
lib.listToAttrs (
map (name: {
name = "${group}/${name}";
value = {
sopsFile = "${sopsDir}/${group}.yaml";
key = name;
}
// opts;
}) names
);
in
lib.mergeAttrsList (lib.mapAttrsToList mkGroup groups);
sopsAvailability =
config: osConfig:
let
osSopsAvailable = osConfig != null && osConfig ? sops && osConfig.sops ? secrets;
hmSopsAvailable = config ? sops && config.sops ? secrets;
in
{
available = osSopsAvailable || hmSopsAvailable;
osAvailable = osSopsAvailable;
secrets = if osSopsAvailable then osConfig.sops.secrets else config.sops.secrets;
templates = if osSopsAvailable then osConfig.sops.templates else config.sops.templates;
};
}