❄️ nixcfg#
Welcome to my nixcfg!
This repository contains my Darwin, NixOS and home-manager configurations, along with whatever custom modules and packages they require. It is modular, declarative, and tailored for multi-device setups. Hopefully, it's as useful to you as it is to me!
✨ Features#
- Declarative System & Dotfiles: Fully declarative management of my macOS (Darwin) + Linux installations and user environments (dotfiles, packages) using Flakes, NixOS, nix-darwin, and home-manager.
- Multi-Host Configs: Seamlessly configures my diverse hosts including bare-metal PCs, laptops (Framework, ThinkPad), mini-servers (Beelink), and virtual private servers (Hetzner, Netcup, AWS).
- Secure Boot & Encryption: Encrypted boot drives with Secure Boot via
lanzabooteand automatic LUKS decryption using TPM. - Comprehensive Hardware Support: Meticulously crafted configurations for my (sometimes unique) devices, including custom audio enhancements (Pipewire filter chains) and device-specific power optimizations.
- Hybrid Cloud Services: Declarative setup for all the hosts and services that make up my overly complicated homelab, including the *arr stack, Audiobookshelf, Caddy, Forgejo (my Git forge), Grafana + Loki + Prometheus, Immich, Karakeep, self-hosted AI inference with Ollama, Plex, qBittorrent, Vaultwarden, and more.
- Automatic Monitoring & Backups: Easy Prometheus + Loki and Uptime-Kuma setups for system and service monitoring, plus automated Restic backups to Backblaze B2.
- Robust Networking: Secure and flexible networking with Tailscale (it's WireGuard), declarative WiFi profiles, and NFS/Samba sharing.
- Productivity & Development: Pre-configured tools for development (Git, Helix, VS Code, Zed), shell enhancements (fastfetch, oh-my-posh, zsh), etc.
📂 Repository Structure#
.
├── flake.nix # Main entry point
├── homes/ # home-manager configurations
├── hosts/ # NixOS and Darwin host configurations
├── modules/ # Modular configurations
│ ├── darwin/ # macOS-specific modules
│ ├── home/ # home-manager modules
│ ├── flake/ # Organized flake components
│ │ ├── darwin.nix # macOS-specific configurations
│ │ ├── home-manager.nix # Home-manager configurations
│ │ ├── nixos.nix # NixOS-specific configurations
│ │ └── ... # Other flake components
│ ├── nixos/ # NixOS-specific modules
│ └── snippets/ # Reusable configuration snippets
└── overlays/ # Custom Nixpkgs overlays
🤝 Contributing#
While this is a personal project, I’m open to feedback or suggestions.
Feel free to open an issue or share ideas that could improve this setup!
📜 License#
This repository is licensed under the GNU General Public License.
🙌 Acknowledgments#
- nixpkgs: 'nough said.
- agenix: secrets storage and orchestration.
- disko: declarative partitions and disk configuration.
- home-manager: declarative dotfile and user package management.
- hyprland: great dynamic tiling wayland compositor.
- lanzaboote: secure boot for NixOS.
- nur: extra packages from the nix user repository.