keys: - &admin age1njap586hc0q43kr03g6c8eqhdsmk8zcafkl3f83xwlc2gqhlmfgs4tmwad - &proxmox-minimal age19m0m7vdfg86yqy8l5mmle5jdd0unrn3f55t232w8h5ey42cqw34sfpt32n - &lxc-gui age1rrxqea6q6pn39sw8y5te63h2py8jgjl9v0jyper86w3ggtn67upqg3ah39 - &baremetal-gui age1adur9g330gua4l6ndk8cqjg35qc8yxwgme6wrl2hpylcc7vxm38q05ejuy - &linode-docker age17e89ty6p0fw24daanen57wg8uald9s025t3wwxsw269svwpmgvrshfvfvt - &linode-gui age1hrx8qj02fj2ea6d4g9vqhyj9hl7fppkjqfdx2l37py3h6pdkr95s8n8rvs - &linode-minimal age1e7l8dusgmgfzd2cxrrzwepzjxt69hzqj4epee0cs27u6yg4kxcuqm34ncx - &linode-nix-cache age1jcx3yajjhghn8qh8za3yeu8nxykzlg3p4nrv03vnfvzl0mzayg2qmg940e - &linode-server age1sweerhrga9yf8x6sv0apz4ed4g48rnlcq34rpv20t0rcelwgpgeqwvndzz - &linode-tailscale-router age1f7usptjx9rv4rxauasve200gxtdt9jkqhhdqstlf20wvlm7u75rsjfw50m - &lxc-docker age17jqc66x9yeshfgd9v78mj483r4zzarqdtuxtrkxe4x5mw679gphshd94th - &lxc-minimal age1px0h5l9zp2dww0m8fncrc82kfdmzplsfv2ltat7sna28xpg09pqqcl3s2k - &lxc-nix-cache age1ufg390ydrmma849t9xfkxxl5xvdkk6mngnlzhmy7mvuaje8sgcmsmnq6l7 - &lxc-pxe-boot age16j42pdc5dr6wnj7xayhkqdj2rny9u68fcqejs50hqq42scssh4gsnrrnlt - &lxc-server age1nruncs4l0ufk7yuc4des8p99c0alfndl0lhsws8tycl5pplfp56s30af5f - &lxc-tailscale-router age1k7d2du5mejsmv5rzavm4xwgpthqvcfsehduquv28nzs53zppa3kqngfxq2 - &lxc-tor-relay age16kqfmvz4e23hmdlqresnyw69ej604s320mmd49h4hm3fhqchtgyqrws0k2 - &proxmox-docker age1arhf2q45zw6wf2uevju4savp575x3m2tfvved5zzq3ay92ynua9s3cm92c - &proxmox-gui age19mn8zrxl8zpps9yvrh4euquvygpp4fp8queg7xc6qhtnl4ng8c9qx02qwn - &proxmox-nix-cache age1jlltcv5jcnm40z5k0q6hv053k2rqpqvemtuecdwn527uw8uqz4es3x7m68 - &proxmox-pxe-boot age1ug787sgt6st6k82fgkrug2lzltw4qsukrrqqs3w27ewwqj8rg4hsxcmylz - &proxmox-server age1529taqdwr6t0w7cvzmty0d5y5593wffl0krt48j6uc4u39k56g2qf6ywtp - &proxmox-tailscale-router age1zhfyuzlq40reuqlr34gf77852nhs3t6mqfzrqmas8z6sxk7tcfhsungrm0 - &proxmox-ha-server-1 age1k73g8x47hs93wcv7qh92n3htz8pl295g49hyvlrf3570mts0hgys5g04d6 - &proxmox-ha-server-2 age1fefy6dk8zn5c3edwmrs9vwx79quftnt784m628t9e34q3ft3cehqz8u72r creation_rules: # Shared across every currently-deployed host: root/nixos password hash, # GitHub access token. Same value on every host today, so every live host's # key can decrypt it (matches current risk profile — narrow further in # Milestone 4 if hosts should diverge). - path_regex: secrets/common\.yaml$ key_groups: - age: - *admin - *proxmox-minimal - *lxc-gui - *baremetal-gui - *linode-docker - *linode-gui - *linode-minimal - *linode-nix-cache - *linode-server - *linode-tailscale-router - *lxc-docker - *lxc-minimal - *lxc-nix-cache - *lxc-pxe-boot - *lxc-server - *lxc-tailscale-router - *lxc-tor-relay - *proxmox-docker - *proxmox-gui - *proxmox-nix-cache - *proxmox-pxe-boot - *proxmox-server - *proxmox-tailscale-router - *proxmox-ha-server-1 - *proxmox-ha-server-2 - path_regex: secrets/nix-cache\.yaml$ key_groups: - age: - *admin - *linode-nix-cache - *lxc-nix-cache - *proxmox-nix-cache - path_regex: secrets/server\.yaml$ key_groups: - age: - *admin - *linode-server - *lxc-server - *proxmox-server - path_regex: secrets/tor-relay\.yaml$ key_groups: - age: - *admin - *lxc-tor-relay - path_regex: secrets/tailscale-router\.yaml$ key_groups: - age: - *admin - *linode-tailscale-router - *lxc-tailscale-router - *proxmox-tailscale-router # HA file server per-node secrets (beszel-token). # proxmox-ha-server-1 / proxmox-ha-server-2 keys are added automatically # by scripts/secrets/sync-host-keys.sh once the hosts are provisioned; # until then only the admin key can decrypt these files. - path_regex: secrets/ha-server-1\.yaml$ key_groups: - age: - *admin - *proxmox-ha-server-1 # proxmox-ha-server-1 added by sync-host-keys.sh - path_regex: secrets/ha-server-2\.yaml$ key_groups: - age: - *admin - *proxmox-ha-server-2 # proxmox-ha-server-2 added by sync-host-keys.sh # Shared HA cluster corosync authkey (binary sops file). # Encrypted for both HA nodes so either can decrypt on boot. # Both host keys added by sync-host-keys.sh; admin key allows initial creation. - path_regex: secrets/ha-corosync-authkey$ key_groups: - age: - *admin - *proxmox-ha-server-1 - *proxmox-ha-server-2 # proxmox-ha-server-1 added by sync-host-keys.sh # proxmox-ha-server-2 added by sync-host-keys.sh # gui-host-specific secrets (currently: wifi-password, see # modules/networking/wifi.nix). Only *lxc-gui has a registered key today # -- proxmox-gui/linode-gui/baremetal-gui haven't been provisioned via # scripts/secrets/sync-host-keys.sh yet, so whichever variant is actually # deployed next needs its recipient added here (and `sops updatekeys` rerun) # before it can decrypt this. - path_regex: secrets/gui\.yaml$ key_groups: - age: - *admin - *lxc-gui - *baremetal-gui - *linode-gui - *proxmox-gui # IPA host keytabs (binary sops files). # Each keytab is encrypted for all platform variants of that host so any # deployed variant can decrypt it at boot. Run # scripts/ipa/create-nixos-ipa-host-account.sh to enroll a new # host and produce the keytab; this section is updated by that script. - path_regex: secrets/nix-cache\.keytab$ key_groups: - age: - *admin - *linode-nix-cache - *lxc-nix-cache - *proxmox-nix-cache - path_regex: secrets/tailscale-router\.keytab$ key_groups: - age: - *admin - *linode-tailscale-router - *lxc-tailscale-router - *proxmox-tailscale-router - path_regex: secrets/pxe-boot\.keytab$ key_groups: - age: - *admin - *lxc-pxe-boot - *proxmox-pxe-boot # nixos = the workstation (hosts/nixos/host.nix). All gui platform variants # share the hostname "nixos" and must be able to decrypt at boot. - path_regex: secrets/nixos\.keytab$ key_groups: - age: - *admin - *baremetal-gui - *lxc-gui - *proxmox-gui - *linode-gui - path_regex: secrets/server\.keytab$ key_groups: - age: - *admin - *linode-server - *lxc-server - *proxmox-server - path_regex: secrets/docker\.keytab$ key_groups: - age: - *admin - *linode-docker - *lxc-docker - *proxmox-docker - path_regex: secrets/tor-relay\.keytab$ key_groups: - age: - *admin - *lxc-tor-relay - path_regex: secrets/nix-minimal\.keytab$ key_groups: - age: - *admin - *lxc-minimal - *proxmox-minimal - *linode-minimal # Host keytab for ha-server-1 FreeIPA enrollment (binary sops file). # Generated by scripts/ipa/create-nixos-ipa-host-account.sh. - path_regex: secrets/ha-server-1\.keytab$ key_groups: - age: - *admin - *proxmox-ha-server-1 # proxmox-ha-server-1 added by sync-host-keys.sh # Host keytab for ha-server-2 FreeIPA enrollment (binary sops file). # Generated by scripts/ipa/create-nixos-ipa-host-account.sh. - path_regex: secrets/ha-server-2\.keytab$ key_groups: - age: - *admin - *proxmox-ha-server-2 # proxmox-ha-server-2 added by sync-host-keys.sh