feat: refactor genSecrets function to utils

* moved the genSecrets helper function from akkoma to global utils
* added smart namespace detection

Changed files
+12 -4
global
systems
koumakan
services
fediverse
+9 -2
global/utils.nix
···
# see /docs/utils.md for a usage guide
{
-
# inputs,
# system,
...
-
}: rec {
mkVhost = {...} @ opts:
{
# ideally mkOverride/mkDefault would be used, but i have 0 idea how it works.
···
proxyWebsockets = websockets;
};
};
}
···
# see /docs/utils.md for a usage guide
{
+
inputs,
# system,
...
+
}: let
+
lib = inputs.nixpkgs.lib;
+
in rec {
mkVhost = {...} @ opts:
{
# ideally mkOverride/mkDefault would be used, but i have 0 idea how it works.
···
proxyWebsockets = websockets;
};
};
+
+
genSecrets = namespace: files: value:
+
lib.genAttrs (
+
map (x: namespace + lib.optionalString (lib.stringLength namespace != 0) "/" + x) files
+
) (_: value);
}
+3 -2
systems/koumakan/services/fediverse/akkoma.nix
···
}: let
mkRaw = (pkgs.formats.elixirConf {}).lib.mkRaw;
# I don't know what i did but i made this abomination
-
genSecrets = namespace: files: value: lib.genAttrs (map (x: namespace + x) files) (_: value);
mkSecret = file:
if !lib.elem file secrets
then throw "Provided secret file ${file} is not in the list of defined secrets."
···
];
in {
# secrets definition
-
sops.secrets = genSecrets "akkoma/" secrets {};
services.akkoma = {
enable = true;
···
# frontends = {
# swagger
# };
dist.cookie = mkSecret "dist/cookie";
config = {
":joken".":default_signer" = mkSecret "joken_default_signer";
···
}: let
mkRaw = (pkgs.formats.elixirConf {}).lib.mkRaw;
# I don't know what i did but i made this abomination
mkSecret = file:
if !lib.elem file secrets
then throw "Provided secret file ${file} is not in the list of defined secrets."
···
];
in {
# secrets definition
+
sops.secrets = _utils.genSecrets "akkoma" secrets {};
services.akkoma = {
enable = true;
···
# frontends = {
# swagger
# };
+
+
# TODO: Issue #5
dist.cookie = mkSecret "dist/cookie";
config = {
":joken".":default_signer" = mkSecret "joken_default_signer";