Commit Graph
220 Commits
Author SHA1 Message Date
beatzaplentyandClaude Sonnet 5 9bfd804f7a Resolve all statix and nixpkgs-fmt warnings repo-wide
Check NixOS configurations / eval-hosts (push) Failing after 11m17s
Zero W20 (repeated attribute keys), W10 (empty { ... }: variadic
pattern, use _: instead), and W04 (a = x.a instead of inherit)
warnings remain anywhere in the tree, and nixpkgs-fmt --check is
clean on all 46 .nix files.

Repeated-key merges go as deep as statix actually flags per file
(e.g. boot.loader.* nested under boot.loader = { ... } once the
outer boot.* merge exposed it as its own repeat) — every merge is a
pure attribute-path restructuring with no value changes, verified by
comparing config.system.build.toplevel.drvPath before/after for a
representative host per changed module plus a full 19-host + 4-package
eval sweep.

One indentation slip caught and fixed during this pass: nesting
modules/installer/common.nix's environment.etc."auto-install.sh".text
under an environment = { ... } block initially normalized the
script's shebang/set line indentation, which actually changes the
rendered file (Nix's '' string dedent treats it as real content, not
cosmetic whitespace) — reproduced the original's exact indentation
and reverified the rendered script is byte-identical to before.

modules/services/zfs/auto-mount-volumes.nix picked up formatting too;
worth noting it isn't imported by anything in this flake at all.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01La55Nsss8jZ7ZuzUV9mfot
2026-07-20 03:47:42 +10:00
beatzaplentyandClaude Sonnet 5 3a821158ca Add parameterized beszel host-token helper module
hosts/server/host.nix and hosts/nix-cache/host.nix each hand-rolled the
same sops secret/template/environmentFile wiring for the beszel agent
token, differing only in the sops file path and template name. Factor
it into modules/beszel/host-token.nix ({ name, sopsFile }) so a third
host can adopt it without copy-pasting the boilerplate again. Also
drops two dead, stale commented-out HUB_URL lines left over from
before variables.nix grew a homeDomain var.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01La55Nsss8jZ7ZuzUV9mfot
2026-07-20 02:57:55 +10:00
beatzaplentyandClaude Sonnet 5 94bc27bcbb Extract ports, docker host, and remote-builder keys into variables.nix
Pulls the beszel hub / PVE / PBS ports, the docker-compose host's LAN
name, and the remote-builder client SSH keys out of scattered inline
literals across modules/hosts and into variables.nix as the single
source of truth, matching the existing pattern for other cross-host
references (nixCacheHost, nfsServerHost).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01La55Nsss8jZ7ZuzUV9mfot
2026-07-20 02:57:38 +10:00
beatzaplentyandClaude Sonnet 5 29d7059f70 Consolidate minimal-buildtype hosts onto a single nix-minimal identity
Check NixOS configurations / eval-hosts (push) Failing after 11m45s
linode-minimal, proxmox-minimal, and lxc-minimal now all share
hosts/nix-minimal/host.nix instead of three separate per-platform
host files with different hostnames — every minimal-buildtype host is
named nix-minimal regardless of which platform it runs on.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-19 16:30:02 +10:00
beatzaplentyandClaude Sonnet 5 6dcbae5659 Centralize shared values into variables.nix
One file (variables.nix) holding every value that was previously
hardcoded and repeated across modules: LAN domain/CIDR, home/tailnet
domains, cross-host references (nix-cache substituter hostname, NFS
server hostname, remote-builder user), PXE/PBS IPs, timezone, and the
primary username.

Wired in via flake.nix's specialArgs (and home-manager's
extraSpecialArgs for the two home.nix files), so any module picks it
up by just adding `vars` to its function arguments — no explicit
import needed. Two hosts (nix-cache, server) now derive their own
networking.hostName from the same variable other hosts use to reach
them, so there's exactly one place to change either identifier.

Purely mechanical: every substituted value matches what was already
there, confirmed by identical toplevel .drv paths for all 17 targets
before and after.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-19 14:51:37 +10:00
beatzaplentyandClaude Sonnet 5 2f7831aea8 Migrate live secrets to sops-nix (Milestone 2)
Check NixOS configurations / eval-hosts (push) Failing after 11m5s
Audited the working tree and full git history for committed secrets
(gitleaks + trufflehog + manual grep, see secrets-inventory.md, kept
local/gitignored per the spec). Found: a password hash shared by root
and the nixos user across every host, two live Beszel monitoring
tokens, and a GitHub fine-grained PAT embedded in a home-manager
nix.conf.

Migrates all of them to sops-nix:
- .sops.yaml + secrets/*.yaml, encrypted for admin + the age keys
  derived (via ssh-to-age) from each live host's existing SSH host
  key — no new key material transferred to any machine.
- users.users.{root,nixos}.hashedPasswordFile replaces the inline
  hashedPassword shared by every target.
- The GitHub PAT moves from a home-manager-managed, store-visible
  nix.conf to a sops.templates-rendered file included via nix.conf's
  native !include, system-wide instead of per-user.
- Beszel TOKEN moves from `environment` (store-visible) to
  `environmentFile` (runtime-only via sops.templates); the dead
  commented-out docker token is removed from the tree entirely.

Added a tracked pre-commit hook (gitleaks protect --staged, wired via
core.hooksPath) so a secret can't be committed by accident again, and
documented the sops workflow in README.md.

Structural verification only: all 17 flake targets evaluate, and
`nix build --dry-run --no-link` succeeds for the three currently
deployed hosts. Per CLAUDE.md, actual `nixos-rebuild switch` — the
step that confirms secrets decrypt and services start on a real
machine — is left for manual verification.

Git history still contains the original plaintext secrets; scrubbing
history (Milestone 3) and rotating every credential (Milestone 4) are
separate, deliberately gated steps per remove-sensetive-info-refactor.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-19 12:46:39 +10:00
beatzaplentyandClaude Sonnet 5 c05e3a3821 Refactor flake targets into platform x build-type matrix
Check NixOS configurations / eval-hosts (push) Failing after 12m2s
Generates all nixosConfigurations from mkTarget(platform, buildType,
hostPath) instead of hand-written per-host blocks, so adding a new
platform or build type is a one-line addition. Per-machine identity
(hostname, hostId, secrets, stateVersion) moves into hosts/<name>/host.nix;
platform-specific config (hardware, boot, networking) into
modules/platforms/*.nix; build-type config (minimal/server/docker/gui/
nix-cache/pxe-boot) into modules/build-types/*.nix.

Old flat targets (nixos, docker, server, nix-cache, nix-minimal, pxe-boot)
are replaced by the 17-target <platform>-<buildtype> matrix; each new
target was verified to evaluate before its old counterpart was removed.
CI workflows and docs/aliases now discover hosts dynamically via
nixosConfigurations attrNames and /etc/flake-target instead of hardcoded
lists, so they can't drift from flake.nix again.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-19 12:03:33 +10:00
beatzaplenty 14accceb02 updated to efi boot and resolved module paths
Check NixOS configurations / eval-hosts (push) Failing after 25m24s
2026-07-19 06:27:22 +10:00
beatzaplenty d3ae41a031 updated to efi boot
Check NixOS configurations / eval-hosts (push) Failing after 14m57s
2026-07-18 07:52:30 +10:00
beatzaplenty a3230128b2 updated proxmox disko configuration
Check NixOS configurations / eval-hosts (push) Failing after 17m51s
2026-07-18 05:54:32 +10:00
beatzaplenty 9d42450c65 update grub config
Check NixOS configurations / eval-hosts (push) Failing after 14m19s
2026-07-15 13:23:09 +10:00
beatzaplenty add9a29908 disabled disko module
Check NixOS configurations / eval-hosts (push) Failing after 14m41s
2026-07-15 13:10:09 +10:00
beatzaplenty 4c53cce35c update linode host folder name to linode-minimal
Check NixOS configurations / eval-hosts (push) Failing after 14m21s
2026-07-15 09:38:12 +10:00
beatzaplenty dea6bfec25 add linode disko config 2026-07-15 09:36:04 +10:00
beatzaplenty 7bfe8cb0b2 added disko configuration to remove disk formatting from auto installer
Check NixOS configurations / eval-hosts (push) Failing after 14m31s
2026-07-15 07:30:32 +10:00
beatzaplenty bcfeb08b11 update hardware config 2026-07-14 20:50:21 +10:00
beatzaplenty 679dfd80c0 added disko configuration
Check NixOS configurations / eval-hosts (push) Failing after 14m45s
2026-07-13 19:10:21 +10:00
beatzaplenty 298f615929 create linode flake
Check NixOS configurations / eval-hosts (push) Failing after 15m13s
2026-07-13 17:46:12 +10:00
beatzaplenty 345b5ca657 moved common into modules
Check NixOS configurations / eval-hosts (push) Failing after 18m43s
2026-07-13 16:03:48 +10:00
beatzaplenty c128bff2bf change path
Check NixOS configurations / eval-hosts (push) Failing after 18m45s
2026-07-13 14:29:29 +10:00
beatzaplenty 8aff9fff29 fix syntax
Check NixOS configurations / eval-hosts (push) Failing after 16m50s
2026-07-13 14:10:38 +10:00
beatzaplenty 8f468d5703 enable beszel agent debugging
Check NixOS configurations / eval-hosts (push) Failing after 14m58s
2026-07-13 14:09:33 +10:00
beatzaplenty 690ecb1eb0 update path
Check NixOS configurations / eval-hosts (push) Failing after 14m32s
2026-07-13 14:04:36 +10:00
beatzaplenty 1ed1b388f5 change paths
Check NixOS configurations / eval-hosts (push) Failing after 14m25s
2026-07-13 13:57:37 +10:00
beatzaplenty f338843166 update extra filesystems
Check NixOS configurations / eval-hosts (push) Failing after 15m4s
2026-07-13 13:49:58 +10:00
beatzaplenty 1c1f65560c update path
Check NixOS configurations / eval-hosts (push) Failing after 14m40s
2026-07-13 13:44:50 +10:00
beatzaplenty 258ebfe1bf fix syntax
Check NixOS configurations / eval-hosts (push) Failing after 14m51s
2026-07-13 13:37:59 +10:00
beatzaplenty 45cb9c38e8 added extra filesystems
Check NixOS configurations / eval-hosts (push) Failing after 14m56s
2026-07-13 13:36:36 +10:00
beatzaplenty c3c467bb41 permit root login
Check NixOS configurations / eval-hosts (push) Failing after 14m40s
2026-07-13 12:39:58 +10:00
beatzaplenty 960548c2ac added raspi-backup share
Check NixOS configurations / eval-hosts (push) Failing after 11m30s
2026-07-13 11:44:45 +10:00
beatzaplenty 229cd06f73 updated server configuration
Check NixOS configurations / eval-hosts (push) Failing after 14m23s
2026-07-13 05:55:40 +10:00
beatzaplenty 591731e3b8 modularized locale settings
Check NixOS configurations / eval-hosts (push) Failing after 14m33s
2026-07-13 02:43:08 +10:00
beatzaplenty 5da5401e91 remove commented lines 2026-07-13 02:26:46 +10:00
beatzaplenty 07534e64fc fix syntax 2026-07-13 02:14:21 +10:00
beatzaplenty 54cefce90a removed port from firewall
Check NixOS configurations / eval-hosts (push) Failing after 13m55s
2026-07-13 02:05:13 +10:00
beatzaplenty fcb8f5e01e modularized rpcbind enable and added to server config
Check NixOS configurations / eval-hosts (push) Failing after 13m58s
2026-07-13 02:00:55 +10:00
beatzaplenty 985d4e4bfa updated module paths
Check NixOS configurations / eval-hosts (push) Failing after 13m53s
2026-07-13 01:53:32 +10:00
beatzaplenty 14deedc12d fix typo
Check NixOS configurations / eval-hosts (push) Failing after 14m27s
2026-07-13 01:44:05 +10:00
beatzaplenty 893a7c997c clean up commented lines
Check NixOS configurations / eval-hosts (push) Failing after 14m12s
2026-07-13 01:42:28 +10:00
beatzaplenty d068195fbe removed let statement
Check NixOS configurations / eval-hosts (push) Failing after 23m55s
2026-07-13 01:34:19 +10:00
beatzaplenty 51fba54d94 modularized docker health to gotify service
Check NixOS configurations / eval-hosts (push) Failing after 22m52s
2026-07-13 01:29:45 +10:00
beatzaplenty f541688973 modularized nextcloud cron job
Check NixOS configurations / eval-hosts (push) Failing after 1h15m54s
2026-07-13 01:25:16 +10:00
beatzaplenty 3bb2b83370 modularized raspi mount
Check NixOS configurations / eval-hosts (push) Failing after 47m52s
2026-07-13 01:12:43 +10:00
beatzaplenty bc719afe39 modularized traefik log rotatation config
Check NixOS configurations / eval-hosts (push) Failing after 53m51s
2026-07-13 01:05:44 +10:00
beatzaplenty 20dc28069c update path
Check NixOS configurations / eval-hosts (push) Failing after 14m8s
2026-07-13 01:00:03 +10:00
beatzaplenty 28ae709100 updated module directory structure
Check NixOS configurations / eval-hosts (push) Failing after 22m19s
2026-07-13 00:56:19 +10:00
beatzaplenty 3de625309e enable tailscale module
Check NixOS configurations / eval-hosts (push) Failing after 17m2s
2026-07-13 00:46:07 +10:00
beatzaplenty f2744bf3a7 modularized tailscale service
Check NixOS configurations / eval-hosts (push) Failing after 40m6s
2026-07-13 00:44:29 +10:00
beatzaplenty 5b118b05da move docker system packages to docker-service module
Check NixOS configurations / eval-hosts (push) Successful in 39m34s
2026-07-13 00:36:52 +10:00
beatzaplenty 5d5428014a modularized docker service
Check NixOS configurations / eval-hosts (push) Failing after 23m17s
2026-07-13 00:30:10 +10:00