# Nix-Vibe: Multi-Host NixOS Configuration This repository contains a modular NixOS and Home Manager configuration managed via Nix Flakes. The architecture is designed for reproducibility and consistency across diverse hardware, from powerful desktops to headless servers. ## Architecture Overview The system is built on a modular foundation, separating core configurations, hardware-specific settings, and user environments. ### Host Roles * **`x1carbon`**: Advanced mobile workstation. * **Role**: Portable audio engineering and personal document management. * **Key Features**: Specialized audio control (X32-Edit, Mixing Station), Paperless-ngx, image editing (GIMP), desktop publishing (Scribus), 2-in-1 tablet mode (auto-rotation via accelerometer + on-screen keyboard via wvkbd). * **`caitlin-x1`**: User-focused laptop. * **Role**: Daily productivity and gaming. * **Key Features**: Steam integration, Prism Launcher for Minecraft, and Soundux for audio management. * **`x470`**: Lightweight guest/general use laptop. * **Role**: Basic productivity and remote network management. * **Key Features**: Winbox for networking and FreeShow for presentations. * **`mary-x270`**: User-focused desktop workstation. * **Role**: Daily productivity workstation for Mary. * **Key Features**: Shared GNOME desktop environment, Home Manager configuration, and multi-user access (`mary` & `petere`). * **`richmond-server`**: Headless infrastructure core. * **Role**: Network services, container hosting, and central backup storage. * **Key Features**: Podman-hosted services (Pi-hole, Castopod, MCFNotices), Backrest backup server, and complex VLAN networking. * **`homeserver-1`**: Headless general server. * **Role**: Auxiliary network server and container environment. * **Key Features**: Tailscale, Podman, Zsh, Disko, SOPS secret management, Immich, Jellyfin, Backrest, Pocket ID, Gitea (git hosting, public at `gitea.edley.me`), and a Homepage dashboard. * **`mcf-server`**: Headless server. * **Role**: Remote backup target for `homeserver-1` (restic). * **Key Features**: SSH and Glances monitoring on the tailnet. * **`mcf-stream`**: Desktop. * **Role**: Newly scaffolded desktop host. * **Key Features**: GNOME desktop, Home Manager for `petere`. * **`hp-laptop`**: End-user laptop. * **Role**: Daily productivity laptop for `petere`. * **Key Features**: Hyprland + QuickShell desktop (no GNOME), greetd/tuigreet login, Home Manager for `petere`. --- ### Software Inventory See the full cross-reference table in **[docs/software-inventory.md](docs/software-inventory.md)**. --- ## Homepage Dashboard The Homepage dashboard (gethomepage.dev) runs on `homeserver-1` at `http://homeserver-1:8082` and displays services from across the tailnet. - Dashboard definition: `hosts/homeserver-1/homepage.nix` - Adding machines, tabs, and services: **[docs/homepage-dashboard.md](docs/homepage-dashboard.md)** - Widget API keys are managed via SOPS (`secrets.yaml` → `HOMEPAGE_VAR_*` env vars) --- ## Initial Installation This repository uses [nixos-anywhere](https://github.com/nix-community/nixos-anywhere) for deployment to new hardware. See **[docs/installation.md](docs/installation.md)** for prerequisites and step-by-step instructions. --- ## Managing Secrets This project uses [sops-nix](https://github.com/Mic92/sops-nix) and `age` to manage secrets. For instructions on adding new secrets, managing keys, and using secrets in your configuration, please see the **[SOPS Secrets Management Guide](docs/sops-secrets.md)**.