This homelab entirelly managed by NixOS
All the configuration is stored on homelab.json
file, you can do:
- Define network CIDR
- Define hosts
- Define the roles installed for selected hosts
- Define services descriptions
- etc ...
This documentation is generated from homelab.json
file content
The main roles used in this home lab
This list generated with just doc-update
command
Logo | Module | Hosts | Description |
---|---|---|---|
wireguard | router-living, badphone, cab1e | An VPN client/server alternative to IPSec and OpenVPN | |
acme | rpi40, bootstore | Let's Encrypt Automatic Certificate Management Environment | |
![]() |
coredns | rpi40 | A Go DNS server, it used for serving local hosts and alias |
ntp | rpi40, bootstore, srvhoma | Network Time Protocol | |
mosquitto | rpi40 | A mqtt broker [service port 1883] | |
zigbee2mqtt | rpi40 | A zigbee2mqtt [service port 8080] | |
adguard | bootstore | DNS ad blocker [service port 3002] | |
dashy | bootstore | The Ultimate Homepage for your Homelab [service port 8081] | |
grafana | bootstore | The open and composable observability and data visualization platform [service port 3000] | |
loki | bootstore | Scalable log aggregation system [service port 8084,9095] | |
nfs | bootstore | A Linux NFS server, it used for backuping a servers and Latops | |
nix-serve | bootstore | For caching the nix build results | |
prometheus | bootstore | Monitoring system and time series database [service port 9090] | |
smokeping | bootstore | Latency measurement tool | |
statping | bootstore | A Status Page for monitoring your websites and applications with beautiful graphs [service port 8082] | |
uptime | bootstore | A Status Page [service port 3001/8083] | |
home-assistant | bootstore | Open source home automation [service port 8123] |
Logo | Name | Description |
---|---|---|
Aider | AI Pair programming | |
Firefox | Browser | |
Gimp | Raster graphics editor | |
i3 | Tiling window manager | |
Inkscape | Vectorial graphics editor | |
Libreoffice | Office editor | |
Meld | Awesome diff tool | |
![]() |
Navi | interactive cheatsheet tool |
![]() |
Neovim | VIDE (badele's customized nix neovim) |
![]() |
![]() |
---|---|
Bluetooth (bluetuith ) |
Disk (bashmount ) |
![]() |
![]() |
Mixer (pulsemixer ) |
Network (nmtui ) |
![]() |
|
Process (pulsemixer ) |
List of hosts composing the home lab
This list generated with just doc-update
command
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 | |
badphone (192.168.254.194) | Android | Bruno's phone | |
ladphone (192.168.254.184) | Android | Lucas's phone | |
sadphone (192.168.254.188) | Android | Steph's phone | |
loadphone (192.168.254.199) | Iphone | Lou's phone | |
tv-chromecast (192.168.254.105) | Chromecast | TV Chromecast | |
bedroom-googlemini-A (192.168.254.197) | GoogleMini | Google Mini room A | |
bedroom-googlemini-C (192.168.254.196) | GoogleMini | Google Mini room C | |
b4d14 (192.168.254.124) | NixOS | Dell XPS 9560 Latop | |
badxps (192.168.254.114) | NixOS | Dell XPS 9570 Latop | |
badxps-eth (192.168.254.179) | NixOS | Dell XPS 9570 Latop | |
bridge-hue (192.168.254.191) | Bridge | Philips Hue bridge | |
srvhoma (192.168.254.116) | NixOS | First NUC homelab server | |
vm-test (127.0.0.1) | NixOS | qemu VM (SSH on port 2222) | |
cab1e (84.234.31.97) | NixOS | Wireguard VPN anonymizer server |
generated by diagrams ./docs/network_architecture.py |
![]() |
generated by plantuml ./docs/network.puml |
![]() |
- Configuration
homelab.json
: main homelab file configuration (roles servers, network, etc)hosts
: hosts configuration (system, hardware, host secrets)*.nix
: user accounts
users
: users configuration (on user environment, user secrets)
- System
nix
: all *.nix fileshome-manager
: All users *.nix files (installed on user environment)modules
: all nix moduleshome-manager
: user modulesnixos
: nixos modules (installed on system wide)host.nix
: host options (custom options for host)
nixos
: all *.nix files installed on system wideoverlays
: overlays nix derivationspkgs
: custom nix packages
To test nix-homelab
as well as the configuration of a workstation,
nix-homelab
offers a demo that runs on a virtual machine based on QEMU.
- From your desktop
nix develop
just iso-build
just demo-qemu-nixos-install
(demopass
password) Go for a walk or have a coffee- when the installation is completed, reboot the virtual machine (you can
write
reboot
on the terminal) and selectFirmware Setup => Boot Manager => UEFI QEMU HardDisk
You can update from your remote desktop or directly from your recent installed desktop
-
From remote
just demo-qemu-nixos-update
-
From your fresh installation
ssh root@localhost -p 2222
(demopass
password)ghq clone https://github.com/badele/nix-homelab.git
cd ghq/github.com/badele/nix-homelab
just nixos-update
just demo-start
Your pass
(passwordstore) configuration must be correctly configured.
In order to be able to encrypt your credentials, you first need initialize an
age
key. It is this key that will subsequently have to be added in the
.sops.yaml
file
age-keygen | pass insert -m nix-homelab/users/your_username
pass show nix-homelab/users/your_username | grep AGE-SECRET-KEY >> ~/.config/sops/age/keys.txt
- From your fresh installation
ghq clone https://github.com/badele/nix-homelab.git
cd ghq/github.com/badele/nix-homelab
just nixos-update
Home lab commands list
This list generated with just doc-update
command
A big thank to the contributors of OpenSource projects in particular :
- doctor-cluster-config from German TUM School of Computation
- Mic92 and for his some nix contributions
- Misterio77 and for his some nix contributions
- longerHV nix configuration file
- wikipedia for logos inventories