This repository has been archived on 2026-09-17. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
nixos-config/hosts/pinix/localServices/secrets.nix
2026-09-14 16:52:53 +02:00

83 lines
3.2 KiB
Nix

{ config, lib, ... }:
{
# The OIDC secret is consumed by both Dex's privileged start-pre step and
# the headscale service. Root can read it for Dex; headscale must own the
# runtime copy for its direct client_secret_path read.
age.secrets.oidcHeadscale.owner = lib.mkForce "headscale";
age.secrets.oidcHeadscale.mode = lib.mkForce "400";
age.secrets.traefik.owner = lib.mkForce "root";
# Seit der Reduktion am 12.09.2026 (docs/pinix-minimalbetrieb.md) gilt das
# auch für diese vier: global mit Besitzern deklariert, deren Dienste hier
# nicht mehr laufen. Ohne mkForce scheitert agenixChown mit
# "chown: invalid user".
age.secrets.webdav.owner = lib.mkForce "root";
age.secrets.oidcGTS.owner = lib.mkForce "root";
age.secrets.oidcGTSEnv.owner = lib.mkForce "root";
age.secrets.bindPW.owner = lib.mkForce "root";
# radicale/calendar ist seit 12.09.2026 aus, der Gruppenname existiert
# darum nicht mehr -- root-owned lassen, sonst scheitert die Aktivierung.
# lldapAdmin selbst liest hier seit 13.09.2026 niemand mehr: pinix' LLDAP
# und Dex nutzen ihr eigenes pinixLldapAdmin-Secret (siehe unten).
age.secrets.lldapAdmin.owner = lib.mkForce "root";
age.secrets.lldapAdmin.mode = lib.mkForce "400";
# Eigenes Admin-Passwort fuer pinix' separate LLDAP-Instanz (lldap.nix,
# dex.nix) -- unabhaengig vom mit blunix geteilten lldapAdmin. Root-owned,
# aus demselben Grund wie oben: LoadCredential/das Env-Skript laufen als
# root, bevor die jeweiligen Dienste ihre Rechte abgeben.
age.secrets.pinixLldapAdmin = {
file = ../../../secrets/pinixLldapAdmin.age;
owner = "root";
mode = "400";
};
# finance-agent-worker (runs as drone) reads this for read-only IMAP
# access -- see hosts/pinix/localServices/finance-agent.nix. Global
# default owner is "builder" (home/tnix's mail setup), which doesn't
# exist as a pinix user.
age.secrets.mailPW.owner = lib.mkForce "drone";
# Vikunja receives this root-owned file through systemd credentials.
age.secrets.oidcVikunja.file = ../../../secrets/oidcVikunja.age;
# prosody läuft auf blunix; der pinix-Nutzer existiert nicht mehr.
# age.secrets.motd = {
# file = ../../../secrets/motd.age;
# name = "motd.cfg.lua";
# owner = "prosody";
# };
age.secrets.headscalePreAuthKey = {
file = ../../../secrets/headscalePreAuthKey.age;
owner = "drone";
};
age.secrets.pinixHeadscalePreAuthKey = {
file = ../../../secrets/pinixHeadscalePreAuthKey.age;
owner = "root";
mode = "400";
};
age.secrets.wirelessSecretsFile = {
file = ../../../secrets/wirelessSecretsFile.age;
owner = "drone";
};
age.secrets.financeXmpp = {
file = ../../../secrets/financeXmpp.age;
owner = "drone";
};
# radio.nix ist aus, icecast-radio existiert nicht mehr.
# age.secrets.icecastPw = {
# file = ../../../secrets/icecastPw.age;
# owner = "icecast-radio";
# };
# TSIG-Schluessel fuer die ACME-DNS-01-Challenge gegen das lokale BIND.
# Environment-Form, damit Traefik sie direkt als EnvironmentFile nutzt und
# bind.nix daraus BINDs key-Syntax rendert. Root-eigen: beide Leser holen
# sie ueber systemd, bevor Rechte abgegeben werden.
age.secrets.bindAcmeTsig.file = ../../../secrets/bindAcmeTsig.age;
}