home-lab/modules
Geir Okkenhaug Jerstad 5f65abc2cc feat: implement orchestrated auto-update system and fix deployment
- Add sma user module to little-rascal configuration for passwordless deployment
- Replace cosmic-greeter with greetd on both congenital-optimist and little-rascal
- Implement staggered auto-update system that updates remote machines first
- Add proper SSH user configuration for secure deployments
- Fix deployment permission issues by configuring admin user access
- Ensure orchestrator machine (congenital-optimist) reboots last to prevent SSH disconnection
- Add comprehensive error handling and update reporting
- Successfully tested lab tool deployment and auto-update on all machines

Fixes the critical issue where orchestrator reboot could break SSH connections
during multi-machine updates.
2025-06-30 14:35:21 +02:00
..
ai testing claude code and niri wm on laptop 2025-06-30 11:43:31 +02:00
common testing claude code and niri wm on laptop 2025-06-30 11:43:31 +02:00
desktop feat: implement orchestrated auto-update system and fix deployment 2025-06-30 14:35:21 +02:00
development testing claude code 2025-06-25 16:36:30 +02:00
network feat: create shared extraHosts module with Tailscale IPs 2025-06-07 15:07:17 +00:00
security steam xwayland 2025-06-12 15:20:48 +02:00
services feat: Add little-rascal laptop config and lab-tool auto-update system 2025-06-27 22:03:54 +02:00
sound some work on sound anf noise suppression and research into netdata 2025-06-19 21:15:24 +02:00
users feat: Add little-rascal laptop config and lab-tool auto-update system 2025-06-27 22:03:54 +02:00
virtualization fix: resolve sma user definition conflict between modules 2025-06-07 16:58:22 +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