36 lines
991 B
Nix
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;
|
|
};
|
|
}
|