No description
Find a file
2026-07-17 08:51:15 -06:00
.age chore(age): rekey all secrets with new paster identities 2026-07-17 08:48:12 -06:00
.claude-plugin refactor(skills): rename create/update-personal-skill to create/update-my-skills 2026-06-16 11:18:18 +02:00
common feat(age): add zw's tpm module as age master key 2026-07-17 08:51:15 -06:00
images Preparing zw system 2024-01-18 12:34:04 -07:00
systems feat(age): add zw's tpm module as age master key 2026-07-17 08:51:15 -06:00
.gitignore feat: add agenix rekey 2026-01-19 10:37:13 -08:00
AGENTS.md common: add agents configuration for Claude/Gemini 2026-01-13 11:54:24 -08:00
flake.lock feat: add age-plugin-gopass 2026-07-17 08:48:11 -06:00
flake.nix feat: remove old agenix-rekey wrapper 2026-07-17 08:48:12 -06:00
nomad_token.age chore(zw): migrate plain-agenix secrets to agenix-rekey master identity 2026-06-12 07:10:44 -06:00
README.md agenix: rekey 2026-03-09 20:30:17 -07:00
spotify_password.age chore(zw): migrate plain-agenix secrets to agenix-rekey master identity 2026-06-12 07:10:44 -06:00
tailscale_key.age chore(zw): migrate plain-agenix secrets to agenix-rekey master identity 2026-06-12 07:10:44 -06:00
wireless_networks.age chore(zw): migrate plain-agenix secrets to agenix-rekey master identity 2026-06-12 07:10:44 -06:00

NixOS Systems

This repository manages the configuration for my personal and work infrastructure using Nix Flakes. It unifies system administration (NixOS, nix-darwin) and user environments (Home Manager) into a single, declarative codebase.

Overview

  • systems/: Contains host-specific configurations.
  • common/: Shared modules, overlays, and configuration patterns.
  • images/: Flake for generating installation media (e.g., SD card images).

Active Systems

Hostname Type Hardware Description
zw NixOS IBM ThinkPad Primary work laptop. Uses manual ZFS partitioning.
homebee NixOS Beelink Mini S12 Home media server running Jellyfin.
jellybee NixOS Beelink U59 Pro Mobile media server (RV) running Jellyfin. Uses disko for partitioning.

Note: older systems like z1, pi, and homepi are deprecated or inactive.

Secret Management

Secrets are managed using agenix and agenix-rekey. The master private key is stored in gopass under the entry systems/age.master.

  1. Encrypt a new secret using the master public key:

    echo "my-super-secret-password" | age -r age13sgljsr9srgxjxncl49qsn9dkkstcqct3ck9s7n2yu4lzelgp4uqcajgtj -o ./path/to/my-secret.age
    
  2. Add to Nix configuration:

    age.secrets.my-secret = {
      rekeyFile = ./secrets/my-secret.age;
      # mode = "600"; # Optional, default is 400
      # owner = "root"; # Optional
    };
    
  3. Rekey for specific hosts: This decrypts the secret using the master key (via gopass) and re-encrypts it for the target hosts.

    nix run .#rekey
    

Installation

Standard Install (e.g., zw)

  1. Boot into a NixOS installer (official or custom image).
  2. Run sudo -i.
  3. Establish networking (see below).
  4. Prepare storage:
    • For zw, use the script in systems/zw/nixos-zfs-setup.sh.
    • Warning: This will wipe the defined DISK.
  5. Mount and generate config:
    nixos-generate-config --root /mnt
    
  6. Install:
    nixos-install --flake .#zw
    

Networking (Installer)

If using a minimal installer, you may need to manually configure Wi-Fi:

  1. Start the supplicant: systemctl start wpa_supplicant
  2. Run wpa_cli:
    > add_network
    0
    > set_network 0 ssid "MY_SSID"
    OK
    > set_network 0 psk "MY_PASSWORD"
    OK
    > enable_network 0
    OK