home-lab/modules
2025-07-04 23:14:16 +02:00
..
ai testing claude code and niri wm on laptop 2025-06-30 11:43:31 +02:00
common Refactor emacs configuration and clean up lab-tool project 2025-07-03 17:45:34 +02:00
desktop tring to get laptop to work 2025-07-04 23:14:16 +02:00
development some bad ides and research 2025-07-03 22:09:45 +02:00
network feat: create shared extraHosts module with Tailscale IPs 2025-06-07 15:07:17 +00:00
security Merge branch 'main' of ssh://git.geokkjer.eu:2222/geir/home-lab 2025-07-03 17:45:51 +02:00
services theming for seatd tuigreet 2025-07-03 22:32:19 +02:00
sound some work on sound anf noise suppression and research into netdata 2025-06-19 21:15:24 +02:00
users feat: switch to incus-lts and fix lab-tool SSH syntax 2025-07-04 15:57:32 +02:00
virtualization feat: switch to incus-lts and fix lab-tool SSH syntax 2025-07-04 15:57:32 +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