add goldman secrets with encryption #212

Merged
ahtlon merged 2 commits from goldman_secrets into master 2026-11-10 16:35:26 +01:00
4 changed files with 93 additions and 12 deletions
+9
View File
@@ -18,6 +18,7 @@ keys:
- &machine_pretalx age1y04q8n7mgk82c87rfddm0u72h0ny6sfzktjsk0cc3gu93kezudfqdp9v9g
- &machine_albert age1mfarz0n7qfa7vg8zz355qf8eregm6myl38lld0h767nuvhgjqd4qruxuhn
- &machine_ns1 age1mam7y7x4my6g8yt8leze3pvlq0fr48hdsqz62gs7l9rstf9hh3fs03xf7n
- &machine_goldman age10gk6kydhljjk99vmaj6z0sz5d9x7pwp458gpr3hzqpl5hh04z5xqgley7j
#this dummy key is used for testing.
- &machine_dummy age18jn5mrfs4gqrnv0e2sxsgh3kq4sgxx39hwr8z7mz9kt7wlgaasjqlr88ng
creation_rules:
@@ -132,6 +133,14 @@ creation_rules:
age:
- *machine_ns1
- *admin_atlan
- path_regex: goldman/secrets.yaml$
key_groups:
- pgp:
- *admin_kalipso
- *admin_kalipso_dsktp
age:
- *machine_goldman
- *admin_atlan
- path_regex: .*/secrets/.*
key_groups:
- pgp:
+12 -10
View File
@@ -10,13 +10,20 @@ in
imports =
[
inputs.gatekeeper.nixosModules.gatekeeper
../modules/malobeo_user.nix
inputs.self.nixosModules.malobeo.users
#inputs.nixos-hardware.nixosModules.raspberry-pi-3
(modulesPath + "/profiles/minimal.nix")
#(modulesPath + "/installer/sd-card/sd-image.nix")
../modules/autoupdate.nix
];
malobeo.users = {
malobeo = false;
admin = true;
backup = false;
hostKeyLocation = "/etc/ssh/ssh_host_ed25519_key";
};
fileSystems."/" =
{ device = "/dev/disk/by-label/NIXOS_SD";
fsType = "ext4";
@@ -59,18 +66,13 @@ in
settings.allow_anonymous = true;
}];
};
sops.secrets.gatekeeperEnv = {
sopsFile = ./secrets.yaml;
};
Review

Since the gatekeeper service runs as gatekeeper user i believe you need to set owner here. something like:

sops.secrets.gatekeeperEnv = {
	    sopsFile = ./gatekeeper.env;
	    key = "";
        owner = "gatekeeper";
        group = "gatekeeper";
        #also you could put it directly into the gatekeeper state dir if permissions problems remain:
        path = "/var/lib/gatekeeper/.env";

};
Since the gatekeeper service runs as gatekeeper user i believe you need to set owner here. something like: ```nix sops.secrets.gatekeeperEnv = { sopsFile = ./gatekeeper.env; key = ""; owner = "gatekeeper"; group = "gatekeeper"; #also you could put it directly into the gatekeeper state dir if permissions problems remain: path = "/var/lib/gatekeeper/.env"; }; ```
services = {
gatekeeper = {
enable = true;
envFile = pkgs.writeText "env" ''
MIFARE_APP_MASTER_KEY="7b195adb892073c9e34ebe7e0ca28b2b"
MIFARE_ACL_READ_BASE_KEY="741a50f2b189cc9f151e0600f50a6e1a"
MIFARE_ACL_WRITE_BASE_KEY="f1aa99f81cca268de98d422ee0ccb65c"
SECRET_KEY="8b14d0b447bff7efa24d5019cc59a999786e31f6f865173bbd642bf18de5ad85"
MQTT_HOST = "localhost"
MQTT_PORT = "1883"
'';
envFile = config.sops.secrets.gatekeeperEnv.path;
mock = "False";
};
};
+64
View File
@@ -0,0 +1,64 @@
gatekeeperEnv: ENC[AES256_GCM,data:BwfUsw95AlrPdp68URZsEzUrVtphPtWpsCzkPRdFlC6fH5XM5Om3UNG+fmJce9bWyH2pA4aRcYuJKgQhrk8NttXt9O4nsqE3X7pgRuv2ruZ2A4g0yXZo+smCXFhp9VADCB7VbO18/UbZhi6SHSuSgrlk//8BygTKdrzVNDw0sTOOAKTlGPGLUbjqzLh18bgytVArROOwEs/LO3oQoTyATT01TInczQHqFC+0+PVCKp30jn3QGrOf5tL5OBtqSmlkJUtsh87zZ8npJ0VOF05yBiSEdYKt3ljCha8o9AUfGSJZ6VSWQt+dbYnfeuiAkHWjoR2hYL387k9/dN0i4/fXL1piC7QWIGfd0M8DfS1Jib+CWBUuEEE5XnUuX4tyV07jMGP4OGSwbvA5q1rRIXFtF6HR/ZXyMA6KSwPpejf0QEoZfu6UKvT42uWk5IxYq06YQsfoKjgGXw0wVn1OA/HhIqUIC82KzyS6BV06X8AgDy2dM1k77bjKI01ewW0XcOjErP2og93oqF+skrA7dtJ4gQtkEIKG7K2+Z2EjCZSiTARYG/yHI/D+M2C4SmO22UhgJ3CMDULtlMvto35fzojQokZbflp34lPT4XzziWr/EAmupzG3ZGxjhr51L6hK7HiZbrB8enmaAhUBeNaNzAo7W4CyOm9MvQbUdZvz,iv:zyZgbwKxG9w2OUFeJVB3scXedzFyInGdR4LPVf4F2GE=,tag:DUFeJ1Qj6i/bg1Nv/zgOyg==,type:str]
sops:
age:
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA0ZVNEdENac1RGaXdzb0ox
aXJvQ3RhOHZULzVUMjIzVkFKMUp0aG00ZHlnCmFqQmlLbmZQVUUveG1INGVnbW5x
OE1HOUx1TmR6bERuUGxYUjNwSGoyRlEKLS0tIE1tWEJXQk5CT1lMdmdad2FTOENa
NW9lOTd5TGNobFN5VFR4Q2xIMjk3MkkKj85PvBY45bF4UlwQ2BhCjmfLdpWvtuD5
MmBql3JijU22TVh4d85tvKGrxmwMPenLC+GzawR0wbMXKKwmGu+Tqg==
-----END AGE ENCRYPTED FILE-----
recipient: age10gk6kydhljjk99vmaj6z0sz5d9x7pwp458gpr3hzqpl5hh04z5xqgley7j
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4UlYvam94d1hvbmRpdHI2
dEhocE5ZQUkwQ1ljcDlwYVZYelRTcHI3T0VnCjVURFNvc1c3Q2tTNXB1cXE5SWZj
aXl6YU9TMmJNaERGT1pOZWFEVG9tNDgKLS0tIEE2TzZ2eTJlQXMzOUp5UXIvMGFU
b0o0VFdNZGpjOWRSSmQ2RWlkUm9IZkkK33kOgGs5K8QEYwQ/n65y+Lftio1A6SGD
UK46fFb+yAoK/H3XRgzot0dt8+7RBTCJwNF+1tHWPl2Nk/1KY2bJ1g==
-----END AGE ENCRYPTED FILE-----
recipient: age1ljpdczmg5ctqyeezn739hv589fwhssjjnuqf7276fqun6kc62v3qmhkd0c
lastmodified: "2026-11-10T14:44:01Z"
mac: ENC[AES256_GCM,data:70/rcqZJ5H1wTnEDAPo3MZEVrbAqwifgHu8+gdnc5E0K3Ng2dYWR/LyeX8FiaAssmchVk6kQE+1HQygLm5dk87F26Niu4Y098v0YY3XG5PrzaltRho6voBNRyORb6MtOPIZrMgooUD22hVZJq/0aG+slas3eP+YbbGu1my75/84=,iv:DlEMElxoV/ciX1g6ZdEAFWnejGPKKqxJ3oxaZRXi/3c=,tag:5kraajN1jIaF44g7fGMs/g==,type:str]
pgp:
- created_at: "2026-11-10T14:43:03Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA5HdvEwzh/H7AQwAmZuazwF5B/LTZMEe6nV+TBPubQN2b4CVI8HEFwfFKPeM
sKhn8isOnf+Q7gonZVLRiSraMc/Ttj2VZEJDA1Y76GSBNQK5irIQsYHl6J7fd2c4
85+YBbNiFLeSTmUMdkqjRDeo49o2J0ItAy7nwtiqpL59rLVcUq5cPvAHiaEGSTes
c1qe23BpRuagvKlzKYOoauGD3cDNyQ+jOhfJxsROlrsAL2N+1QNhIxE95JGhDnX9
AirNruuufDGVBsryZVUDo8fdZzc+p5CsL9UHMgowLiH+UjmfEvEr1y6uNgQnjhG3
SMVf0qnbJNI7jSpRtnLYg/x0y3NxcmZEWvTqJ7s1LoM3z8Fc8iSYz9W6xLmZXZMg
LxmYfd3tmYyE7CAKQ7UAPs0yu9YGbLP9hNRhALEW9mse8wpgQ377wl6nB7CtF3dT
F64zrB9P72RAHrn882LQac4gY7hAERkGzgtC1zOfPBUTHUo+b839lNQ1nBDYzNr9
On85Sud8dAd2mLEaCCG60lgBDdYz5kzoXkY7trpIG+w9YLJhOwXt4jMsbTlQTs2x
NFnCUxik+W65Bl7PIACCmfjsdPoiGy/yrdeAblCZlthjy4AkKlaRb4NpdTKt3tSc
9v+JtcrlUFpC
=Bhqc
-----END PGP MESSAGE-----
fp: c4639370c41133a738f643a591ddbc4c3387f1fb
- created_at: "2026-11-10T14:43:03Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA98TrrsQEbXUAQ/6Awh/C2TD7Bz3JrOE4+aKm79MuHYHCjwqat2F/bfpRANr
MqEjrKi1YpfcPoSd05FbmjJgXdp3vHk1xz7n28rjEtqdNhV30bWyvEEc+XOpcyPV
hjAzHcw93Hk7PZDRsq70JhwXo4GFwI+jamgtxKy3stcCeUPpjvX97Z9GhGLhPh+3
PVoAR13p0NtliYVLs53IYnJ1ZkAsGoyNaTdjAT4FgeIrXJxfW1QS+8A51ERNpW8f
i+GfvYdZhgjBh187hCvPdkW6Bl5tk3Rf9fOTKIQe3mrrqYzzzESQy43UskFod0I4
IOobruNzm6nxmdzA9tFITYFljtWSAH3HQMokY+UufsRuJWgc6r+osPWVGZTGrMF8
HYly3lYNZ5alwevk5R/jQ1cTQFrRbJr3+iRR6FNVf/clnLLnRzsjAbxlQobFW7tb
YxyQYMh7f8jXvl/T+HYM6yM8G4qtFYmaRVhnssHFvyOcBxNTc1rOvr4xrLLX+QG7
YYZiS+JYh3/Jf4SGahc4UW9Qq19spBSXz9nAy+WJ+wFv1UUQwBTDxne2dO8DMCQv
J5BI0tGc7LiavFJPnUkFtFMvl/+Q56QE6lALc8M0HmEOX4m2y/8HJdptyXO/DasZ
y23JHAOxFRgOWbiVEsNjtT2n2wCP3gkZrqYP2XKMTdLXSfvlRbKs/oUlzgMFUBXS
WAHCyiUKfKq3CkTknBAORgZDMqbX2L6uFLkDKdoD7XREzJruYxUOfmuzvgUI2/iR
RXdxeKrJhCRYTrKwyTO00eT0W+IK08E0clZM0SrMjsbggoYtOcAElyE=
=brjr
-----END PGP MESSAGE-----
fp: aef8d6c7e4761fc297cda833df13aebb1011b5d4
unencrypted_suffix: _unencrypted
version: 3.13.3
+8 -2
View File
@@ -21,6 +21,11 @@ in
default = false;
description = "enable backup user, ";
};
hostKeyLocation = lib.mkOption {
type = lib.types.path;
default = "/etc/ssh/${hostName}";
description = "path to the hostkey used for sops. Defaults to '/etc/ssh/${hostName}'. Change to '/etc/ssh/ssh_host_ed25519_key' for migrating other machines.";
};
};
config = lib.mkMerge [
(lib.mkIf cfg.malobeo {
@@ -81,13 +86,14 @@ in
})
{
users.mutableUsers = false;
services.openssh.hostKeys = [
{
path = "/etc/ssh/${hostName}";
path = cfg.hostKeyLocation;
type = "ssh-ed25519";
}
];
sops.age.sshKeyPaths = [ "/etc/ssh/${hostName}" ];
sops.age.sshKeyPaths = [ cfg.hostKeyLocation ];
environment.systemPackages = with pkgs; [
nix-output-monitor
vim