feat(mibook): decrypt placeholder secret via host age key

Proves the sops-nix pipeline end to end on mibook: encrypts a
throwaway secret to the operator + mibook host keys, declares it in
machines/mibook/secrets.nix, and verifies it decrypts to
/run/secrets/placeholder (root:root, 0400) on nixos-rebuild switch.

Also removes the dead `let secrets = config.sops.secrets;` binding
from both environments.nix files — leftover from an earlier abandoned
plan, never referenced.
This commit is contained in:
2026-09-08 15:43:45 +02:00
parent 3ab8bfbb91
commit a00916864c
5 changed files with 40 additions and 12 deletions
+1 -5
View File
@@ -1,9 +1,5 @@
# enabled profiles # enabled profiles
{ config, lib, ... }: _: {
let
secrets = config.sops.secrets;
in
{
my.profiles = { my.profiles = {
hyprland.enable = false; hyprland.enable = false;
zsh.enable = true; zsh.enable = true;
+1 -2
View File
@@ -11,6 +11,7 @@
./hardware-configuration.nix ./hardware-configuration.nix
./environments.nix ./environments.nix
./network.nix ./network.nix
./secrets.nix
# ./system.nix use docker here # ./system.nix use docker here
]; ];
@@ -21,7 +22,6 @@
useOSProber = true; useOSProber = true;
}; };
# Configure keymap in X11 # Configure keymap in X11
services.xserver.xkb = { services.xserver.xkb = {
layout = "de"; layout = "de";
@@ -35,7 +35,6 @@
services.printing.enable = true; services.printing.enable = true;
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
hardware.nvidia.prime = { hardware.nvidia.prime = {
sync.enable = false; sync.enable = false;
+1 -5
View File
@@ -1,9 +1,5 @@
# enabled profiles # enabled profiles
{ config, lib, ... }: _: {
let
secrets = config.sops.secrets;
in
{
my.profiles = { my.profiles = {
kde-desktop.enable = true; kde-desktop.enable = true;
zsh.enable = true; zsh.enable = true;
+12
View File
@@ -0,0 +1,12 @@
# Secrets decrypted on mibook. sopsFile defaults to secrets/mibook.yaml
# via machines/core/sops.nix.
{ ... }:
{
# Pipeline smoke test — proves host-key decryption works end to end.
# Safe to delete once a real secret is in place.
sops.secrets.placeholder = {
mode = "0400";
owner = "root";
group = "root";
};
}
+25
View File
@@ -0,0 +1,25 @@
placeholder: ENC[AES256_GCM,data:tji/6di1F2GsD60TEBGAVvZR9m4jxQ8=,iv:BoBQVR735vq38iGx40VHIpk185ylf79mKmnpewcq/+o=,tag:lXNNk4/HYB0sw44KaQ2KYg==,type:str]
sops:
age:
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4ZUk5cjhGTlVveUFRdHdS
elpVV0pZVU54U3plYjNBai9ZZVBxTDhyRFFnCmpGWW81VGJoMnd4eWxCWnovQnFF
WXR1MVBTZ3VRUnNMUjI5Rko4NHpBdjQKLS0tIDkxYWNxTmhUS2dYTkFnTWZXaS9V
ejdtSmF2M1ZVdFNiWENMWlNraUYxVzAKdlz4xLhTKjJfFESDcym2xCOa71rXj6BE
mdeaCDhE11CAXqrpKU+j0/kwTsZRzyqlwQsfeI4ratu1K1vY66ONsw==
-----END AGE ENCRYPTED FILE-----
recipient: age1a0v442ct2qfjcdhyktn25spw02yq4fl08plrrvuradwwxzsle4mq8thln4
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYT1hRSGt6TDRSMklQNDA3
Z2lYS2pMRWxxeEtGRGJSeXRDSlY5UTFBNEZvCm5RK0huT282MXpwWjdrTHByY3Ev
bTBMczR1MzVEcnNDVUxadlREbGg3UUUKLS0tIHhydUlmRExkbmNNNkVTcW1OSnpZ
aEtLZkRTRE9GZ0I1bEN0ZEl3RjVMeDgKoCY7NyxFMS+WuBUez2Irf91Xuy9QpM5g
RTmhK6mw2wd8oUMdgPOUESNwh1xkCz4hDHPrDQnfd4sPhSAvh28jwg==
-----END AGE ENCRYPTED FILE-----
recipient: age1n3uqtee5ymykrls6k04dznq50cwmj99hw7ny83yxjndt4y2ncf5qhjwa2p
lastmodified: "2026-09-08T13:29:12Z"
mac: ENC[AES256_GCM,data:YjMMIUdfCl8dkuvtvBZTFIhLwsUjI6iSeN929O4igbwpRTyGVxgLmAMl81YYHJSyEibelT7ZBKiuVVnL2KjLvAKTj3H1O+AQrcAEJDPC9NwPJwbtAIpLl2li5060Kdj4kr8AY+UJ2kHycuS9dg6wPZTLBJcM/YCw0AoVftvzryM=,iv:GEQZF9RvW+MJlMIjn1ToD74RubWMQtCyE5LqW9KQQfA=,tag:NR6u88eBY1asQZM6f45hTw==,type:str]
unencrypted_suffix: _unencrypted
version: 3.13.3