4.4 KiB
Executable File
4.4 KiB
Executable File
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.