1616c6766e572b404698b1c43673eec7182cfdc9
NixOS Configuration Repository
This repository contains my personal NixOS configurations for multiple systems, managed using Snowfall Lib and the Nix Flakes system.
Overview
This repository provides a centralized, declarative configuration for all my systems, including:
- Desktop PC (AMD)
- NAS server
- Steam Deck
- Intel NUC
- Raspberry Pi 4
- Raspberry Pi 5
- MacBook Pro (NixOS on Apple Silicon)
- MacBook Pro (Darwin/macOS)
Repository Structure
.
├── checks/ # Pre-commit hooks and other checks
├── flake.nix # Main flake configuration
├── homes/ # Home-manager configurations for users
│ ├── aarch64-darwin/ # macOS home configurations
│ ├── aarch64-linux/ # ARM Linux home configurations
│ └── x86_64-linux/ # x86 Linux home configurations
├── modules/ # Reusable configuration modules
│ ├── home/ # Home-manager modules
│ └── nixos/ # NixOS system modules
├── overlays/ # Nixpkgs overlays
├── packages/ # Custom package definitions
├── secrets/ # Encrypted secrets (managed with sops-nix)
└── systems/ # System-specific configurations
├── aarch64-darwin/ # macOS system configurations
├── aarch64-linux/ # ARM Linux system configurations
└── x86_64-linux/ # x86 Linux system configurations
Key Features
- Modular Design: Reusable modules for various system components
- Multi-System Support: Configurations for different hardware platforms
- Home Manager Integration: User environment management
- Secret Management: Encrypted secrets with sops-nix
- Disk Management: Declarative disk partitioning with disko
- State Management: Persistent state management with impermanence
- Desktop Environments: Support for GNOME, Hyprland, and COSMIC
- Hardware-Specific Optimizations: Tailored configurations for different hardware
Key Technologies
- Nix and NixOS
- Nix Flakes
- Snowfall Lib
- Home Manager
- sops-nix
- disko
- impermanence
- lanzaboote (Secure Boot)
Notable System Configurations
Desktop
A powerful AMD-based desktop with gaming capabilities, featuring:
- AMD CPU and GPU optimizations
- Multiple desktop environment options (GNOME, Hyprland, COSMIC)
- Gaming setup with Steam and related tools
NAS
A home server with various self-hosted services:
- Media management (Jellyfin, Jellyseerr)
- Download automation (Sonarr, Radarr, etc.)
- Document management (Paperless)
- File sharing (Samba, Nextcloud)
- AI services (Ollama)
Raspberry Pi
Configurations for both Pi 4 and Pi 5:
- Hardware-specific optimizations
- Disk partitioning suitable for ARM devices
- Bluetooth and wireless support
Steam Deck
Custom NixOS configuration for the Steam Deck:
- Integration with Jovian for Steam Deck compatibility
- Gaming optimizations
- Steam ROM Manager
MacBook Pro
Configurations for both:
- NixOS on Apple Silicon
- nix-darwin for macOS
Usage
Building a System Configuration
# Build and activate a system configuration
sudo nixos-rebuild switch --flake .#hostname
Building a Home Configuration
# Build and activate a home configuration
home-manager switch --flake .#username@hostname
Documentation
Comprehensive documentation is available in the docs directory:
- Getting Started - Instructions for setting up new systems
- Architecture - Overview of the repository structure
- System Configurations - Details about each system
- Home Assistant - Home Assistant setup and automations
- Custom Modules - Details about reusable configuration modules
- Troubleshooting - Common issues and solutions
License
This project is licensed under the MIT License - see the LICENSE file for details.
Description
Languages
Nix
84.9%
Python
10.9%
Shell
1.9%
HTML
1.2%
JavaScript
1.1%