# Cryodev NixOS Configuration Documentation Welcome to the documentation for the **cryodev** NixOS infrastructure. ## Quick Links ### Getting Started - [Prerequisites](getting-started/prerequisites.md) - Required tools - [Adding a New Raspberry Pi](getting-started/new-client.md) - Complete workflow for new clients - [SD Image Reference](getting-started/sd-image.md) - Details on image building - [First Installation (Server)](getting-started/first-install.md) - Bootstrap for x86_64 hosts - [Reinstallation](getting-started/reinstall.md) - Reinstall with hardware changes ### Services - [SOPS Secrets](services/sops.md) - Secret management with sops-nix - [Headscale](services/headscale.md) - Self-hosted Tailscale server - [Headplane](services/headplane.md) - Web UI for Headscale - [Tailscale](services/tailscale.md) - Mesh VPN client - [Mailserver](services/mailserver.md) - Email stack (Postfix/Dovecot) - [Forgejo](services/forgejo.md) - Git hosting with CI/CD - [Netdata](services/netdata.md) - Monitoring and alerting ### Deployment - [Continuous Deployment](deployment/cd.md) - Push- and pull-based deployment - [DNS Configuration](deployment/dns.md) - Required DNS records ## Architecture ``` Internet | cryodev.xyz | +-------------------+ | cryodev-main | | (x86_64 Server) | +-------------------+ | - Headscale | | - Headplane | | - Forgejo | | - Mailserver | | - Netdata Parent | +-------------------+ | Tailscale Mesh VPN | +-------------------+ | cryodev-pi | | (Raspberry Pi 4) | +-------------------+ | - Tailscale | | - Netdata Child | | - Comin (GitOps) | +-------------------+ ``` ## Installation Scenarios | Scenario | Description | Guide | |----------|-------------|-------| | **New Raspberry Pi** | Create config, build image, flash | [new-client.md](getting-started/new-client.md) | | **First Installation (Server)** | x86_64 host, manual installation | [first-install.md](getting-started/first-install.md) | | **Reinstallation** | Existing host, new hardware | [reinstall.md](getting-started/reinstall.md) | For Raspberry Pi: [SD Image Reference](getting-started/sd-image.md) ## Directory Structure ``` . ├── flake.nix # Entry point, inputs and outputs ├── constants.nix # Central configuration (domains, IPs, ports) ├── hosts/ # Host-specific configurations │ ├── cryodev-main/ │ └── cryodev-pi/ ├── modules/ # Reusable NixOS modules │ └── nixos/ ├── pkgs/ # Custom packages ├── overlays/ # Nixpkgs overlays ├── templates/ # Templates for new hosts ├── scripts/ # Helper scripts (install.sh) ├── apps/ # Nix apps (rebuild) └── lib/ # Helper functions (utils.nix) ``` ## Deployment Strategies | Host | Strategy | Tool | Description | |------|----------|------|-------------| | `cryodev-main` | Pull-based | Comin | Polls the repository for changes | | `cryodev-pi` | Pull-based | Comin | Polls the repository for changes |