home-lab/modules
Geir Okkenhaug Jerstad 7c650856f2
Some checks are pending
🏠 Home Lab CI/CD Pipeline / 🔍 Validate Configuration (push) Waiting to run
🏠 Home Lab CI/CD Pipeline / 🔨 Build Configurations (push) Blocked by required conditions
🏠 Home Lab CI/CD Pipeline / 🔒 Security Audit (push) Blocked by required conditions
🏠 Home Lab CI/CD Pipeline / 📚 Documentation & Modules (push) Blocked by required conditions
🏠 Home Lab CI/CD Pipeline / 🔄 Update Dependencies (push) Waiting to run
🏠 Home Lab CI/CD Pipeline / 🚀 Deploy Configuration (push) Blocked by required conditions
🏠 Home Lab CI/CD Pipeline / 📢 Notify Results (push) Blocked by required conditions
feat: Complete sleeper-service deployment with ZFS and network fixes
 Major deployment milestone achieved:

**sleeper-service Configuration:**
- Successfully deployed flake-based NixOS on Intel Xeon file server
- Resolved ZFS mounting conflicts causing boot failures
- Implemented ZFS native mounting (/mnt/storage, /mnt/storage/media)
- Added Pi-hole DNS integration (10.0.0.14) for package resolution
- Configured systemd-networkd with static IP (10.0.0.8)
- System boots cleanly in ~1 minute with ZFS auto-mounting

**Infrastructure Updates:**
- SSH key management deployed and operational
- Network configuration with multi-tier DNS (Pi-hole, router, Google)
- NFS server configuration for network storage
- Data preservation verified: 903GB ZFS pool intact

**Technical Solutions:**
- Added nomodeset kernel parameter for graphics compatibility
- Disabled NVIDIA drivers for headless server operation
- Removed conflicting ZFS entries from hardware-configuration.nix
- Established remote deployment workflow via rsync + SSH

**Documentation:**
- Updated plan.md with deployment status and lessons learned
- Added deployment commands and troubleshooting notes
- Documented ZFS native mounting migration process

**Data Verified:**
- Films: 184GB, Series: 612GB, Audiobooks: 94GB, Music: 9.1GB, Books: 3.5GB
- Storage pool: 903GB used, 896GB available
- All media accessible via proper ZFS auto-mounting

This represents the first successful multi-machine flake deployment in the home lab infrastructure migration.
2025-06-06 11:21:12 +02:00
..
common feat: System update and direnv fixes 2025-06-05 09:32:58 +02:00
desktop feat: initial NixOS home lab infrastructure setup 2025-06-04 16:10:13 +02:00
development feat: System update and direnv fixes 2025-06-05 09:32:58 +02:00
hardware feat: initial NixOS home lab infrastructure setup 2025-06-04 16:10:13 +02:00
network feat: Complete sleeper-service deployment with ZFS and network fixes 2025-06-06 11:21:12 +02:00
security feat: add NFS server and Transmission service to sleeper-service 2025-06-05 16:31:09 +02:00
services Add ZFS support to sleeper-service 2025-06-05 17:16:32 +02:00
system Add ZFS support to sleeper-service 2025-06-05 17:16:32 +02:00
users fix: resolve configuration conflicts 2025-06-05 16:33:29 +02:00
virtualization feat: initial NixOS home lab infrastructure setup 2025-06-04 16:10:13 +02:00
README.md feat: initial NixOS home lab infrastructure setup 2025-06-04 16:10:13 +02:00

NixOS Modules Directory Structure

This directory contains reusable NixOS modules organized by functional domain for the Home-lab infrastructure.

Directory Organization

common/

Core modules shared across all machines in the home lab:

  • base.nix - Modern CLI tools, aliases, and essential packages
  • tty.nix - Console configuration and theming
  • nix.nix - Nix/flakes configuration and optimization settings
  • ssh.nix - SSH server and security configurations
  • networking.nix - Basic networking and firewall settings

desktop/

Desktop environment configurations for workstation machines:

  • gnome.nix - GNOME desktop environment setup
  • cosmic.nix - System76 COSMIC desktop configuration
  • sway.nix - Sway window manager and Wayland setup
  • fonts.nix - Font packages and configurations
  • audio.nix - PipeWire/audio system setup

development/

Development tools and environments:

  • editors.nix - Text editors (Emacs, Neovim, VSCode)
  • languages.nix - Programming languages and runtimes
  • tools.nix - Development utilities and CLI tools
  • containers.nix - Development container tools
  • git.nix - Git configuration and tools

virtualization/

Virtualization and containerization:

  • podman.nix - Podman container runtime
  • libvirt.nix - KVM/QEMU virtualization
  • incus.nix - System container management
  • docker.nix - Docker runtime (if needed)

services/

Network services primarily for SleeperService file server:

  • nfs.nix - Network File System server
  • samba.nix - SMB/CIFS file sharing
  • backup.nix - Automated backup services
  • monitoring.nix - System monitoring and alerting
  • storage.nix - ZFS and storage management
  • media.nix - Media server services (Jellyfin/Plex)

users/

User management and shared user configurations:

  • common.nix - Shared user settings across machines
  • groups.nix - System groups and permissions
  • security.nix - User security policies

Usage

Modules are imported in machine configurations like:

imports = [
  ../../modules/common/base.nix
  ../../modules/desktop/gnome.nix
  ../../modules/virtualization/podman.nix
];

Design Philosophy

  • Modular: Each module has a single, clear responsibility
  • Reusable: Modules work across different machine types
  • Composable: Mix and match modules for different machine roles
  • Documented: Each module includes usage examples and options
  • Testable: Modules can be tested independently

Machine Profiles

CongenitalOptimist (Workstation)

  • All desktop modules
  • Development tools
  • Virtualization stack
  • User-focused configurations

sleeper-service (File Server)

  • Common base only
  • Service modules (NFS, Samba, backup)
  • No desktop environment
  • Server-focused configurations