Skip to content

badele/nix-homelab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏠 nix-homelab

My personal homelab infrastructure, fully managed with NixOS and Clan. This repository contains all configurations for my servers, desktops, and network devices.

What is this?

This is a complete NixOS homelab setup that manages:

  • Servers: Public VPS (Hetzner, Infomaniak), physical servers, Raspberry Pi
  • Desktops: Personal laptops and workstations
  • Network: Routers, IoT devices, and monitoring

Everything is declarative, reproducible, and version-controlled whenever possible.

Why Clan?

I'm using Clan to simplify infrastructure management:

Backbone of independent infrastructure

Or as I like to say:

Kill the cloud, build your darkcloud ☁️

β†’ Learn more about Clan and why I use it

Key benefits

  • Simple host management: Easy inventory system
  • Automatic secrets: Built-in secret generation and management
  • Backup made easy: Integrated backup solution
  • Declarative: Everything in code, no manual steps

πŸ› οΈ Deployment Strategy

I follow a hybrid approach:

  • NixOS services first: Most applications run as native NixOS services
  • Podman when needed: Some apps use containers to:
    • Avoid service interruptions during system updates
    • Use plugins or features not well-supported in NixOS (e.g., DokuWiki)
    • Maintain stability during version upgrades

This gives me the best of both worlds: NixOS reproducibility with container flexibility.

Project Structure

Note

🚧 Work in Progress - The project is being migrated to Clan architecture. During this transition, you'll find both old and new directory structures coexisting.

The homelab uses a modular flake-parts architecture with Clan: Key directories:

🚧 New structure (managed with clan command)

  • machines/: Per-host configurations clan machines update "machine-name"
  • modules/: Shared modules and legacy configurations
  • vars/: Secrets clan vars list "machine-name" and on nix expression clan.core.vars.generators."secret-bucket-name"

πŸ’₯ Legacy structure

  • nix/nixos/roles/: Service roles
  • nix/home-manager/: User environment configs
  • sops/: SOPS secrets

πŸ“¦ Services & Applications

Here are the main services running in my homelab:

Logo Name Type Links Hosts Description
ACME NixOS doc rpi40, bootstore, houston Let's Encrypt Automatic Certificate Management Environment
Authelia NixOS module, doc houston An open-source authentication and single sign-on (SSO)
Dokuwiki Podman module, doc houston Simple to use and highly versatile Open Source wiki software
GoAccess NixOS module houston Real-time web log analyzer
Grafana NixOS module, doc houston The open and composable observability and data visualization platform [service port 3000]
linkding Podman module houston Bookmark manager
LLDAP Podman module, doc houston Lightweight LDAP directory service for authentication
Reaction NixOS module, doc houston Block some network attacks
Vector NixOS module, doc houston High-performance observability data pipeline
VictoriaMetrics NixOS module, doc houston Fast and scalable time series database
Wastebin NixOS module houston Minimalist pastebin

πŸ’» Desktop Environment

My workstations run a customized NixOS setup with i3 window manager and various productivity tools.

Desktop Applications

Logo Application Description
borgbackup Deduplication backup tool
Firefox Web browser
Gimp Raster graphics editor
i3 Tiling window manager
Inkscape Vector graphics editor
LibreOffice Office suite
Meld Visual diff tool
Navi Interactive cheatsheet tool
Neovim VIDE - My customized Neovim config

Floating TUI Panels

Quick access to system controls via i3 floating terminals:

Bluetooth Manager Disk Manager
bluetuith bashmount
Audio Mixer Network Manager
pulsemixer nmtui

🌐 Infrastructure

My main public VPS running on Hetzner Cloud (CX32: 4 vCPU, 8GB RAM, 80GB SSD).

What it does:

  • πŸ” Authentication Hub: Authelia + LLDAP for SSO across all services
  • πŸ“Š Full Observability Stack: Grafana, VictoriaMetrics, InfluxDB, Telegraf, Vector
  • πŸ“± Self-Hosted Apps: DokuWiki, Linkding, Miniflux, Shaarli, and more

β†’ See complete service list and details

My main desktop workstation for daily development and productivity.

Setup:

  • πŸͺŸ i3 Tiling WM: Efficient workspace management with custom keybindings
  • πŸ› οΈ Full Dev Environment: VIDE (Neovim), VS Code, Git, Docker, and more
  • 🎨 Creative Tools: GIMP, Inkscape, LibreOffice
  • βš™οΈ System Management: TUI panels for quick access to system controls

β†’ See complete configuration and tools

All Hosts

Complete list of hosts in the homelab (auto-generated with just doc-update):

Logo Name OS Description
boxΒ (192.168.0.1) Sagem SFR internet box
router-livingΒ (192.168.254.254) MikroTik Livingroom mikrotik router
router-ladbedroomΒ (192.168.254.253) MikroTik Bedroom mikrotik router
router-homeofficeΒ (192.168.254.252) MikroTik Office mikrotik router
sadhomeΒ (192.168.254.200) NixOS Stephanie's laptop
rpi40Β (192.168.254.101) NixOS The RPI 4 server
bootstoreΒ (192.168.254.100) NixOS HP Microserver N40L server
b4d14Β (192.168.254.124) NixOS Dell XPS 9560 Latop
badxpsΒ (192.168.254.114) NixOS Dell XPS 9570 Latop
vm-testΒ (127.0.0.1) NixOS qemu VM (SSH on port 2222)
cab1eΒ (84.234.31.97) NixOS Wireguard VPN anonymizer server
houstonΒ (91.99.130.127) NixOS Main public server
gagarinΒ (192.168.254.147) NixOS My main desktop workstation

Network Topology

Network diagram

Common Commands

Available commands

❀️ Thanks

A big thank to the contributors of OpenSource projects in particular :