blob: b165d7b01626f252390d331470bdd5140e57dae8 [file] [log] [blame]
Skyler Grey67cf8aa2024-07-28 13:21:32 +00001# SPDX-FileCopyrightText: 2024 Auxolotl Infrastructure Contributors
2# SPDX-FileCopyrightText: 2024 Clicks Codes
3#
4# SPDX-License-Identifier: GPL-3.0-only
5
6{ config, lib, pkgs, inputs, ... }: let
7 cfg = config.clicks.security.secrets;
8in {
9 options.clicks.security.secrets.enable = lib.mkOption {
10 description = "Enable using agenix-rekey for secrets";
11 type = lib.types.bool;
Skyler Grey4bf2de52024-07-29 17:55:05 +000012 default = config.clicks.defaults.enable;
Skyler Grey67cf8aa2024-07-28 13:21:32 +000013 };
14
Skyler Greyec13fbd2024-08-03 08:11:04 +000015 options.age = {}; # Required definition for lib.optionalAttrs...
16
17 config.age = lib.optionalAttrs cfg.enable {
18 rekey = {
Samuel Shuertc6f63032024-12-31 11:09:23 -050019 masterIdentities =
20 let
21 keyPath = "${inputs.self}/secrets/keys";
22 in [
23 "${keyPath}/minion/collabora-yubikey.pub"
24 "${keyPath}/minion/tiny-yubikey.pub"
25 "${keyPath}/minion/iyubikey.pub"
26 "${keyPath}/coded/ShorthairNano.pub"
Skyler Grey67cf8aa2024-07-28 13:21:32 +000027 ];
28 storageMode = "local";
29 generatedSecretsDir = lib.snowfall.fs.get-snowfall-file "secrets/generated/${config.networking.hostName}";
30 localStorageDir = lib.snowfall.fs.get-snowfall-file "secrets/rekeyed/${config.networking.hostName}";
31 };
32
Skyler Greyec13fbd2024-08-03 08:11:04 +000033 identityPaths = lib.mkIf config.clicks.storage.impermanence.enable [
Skyler Grey67cf8aa2024-07-28 13:21:32 +000034 "/persist/data/etc/ssh/ssh_host_ed25519_key"
35 "/persist/data/etc/ssh/ssh_host_rsa_key"
36 ];
37 };
38}