Welcome to my NixOS configuration repository! This is a multi-host flake-based setup supporting both NixOS and Darwin systems. These configurations represent my reproducible, declarative system setups for my linux machines.
-
nixos/- System-level configurationshosts/- Machine-specific configurationsfeatures/- Modular system features (networking, desktop environments, etc.)common.nix- Extended baseline with fonts and utilitiesminimal.nix- Minimal baseline for headless systems
-
home-manager/- User-level configurationscli/- Terminal and command-line toolsgui/- Graphical applications and settingshyprland/- Hyprland window manager configurationterminal/- Terminal emulator settingsplasma/- KDE Plasma desktop environment
-
modules/- Reusable NixOS and home-manager modules -
pkgs/- Custom packages and fonts -
overlays/- Package modifications -
secrets/- SOPS-encrypted secrets
sudo apt update && sudo apt install -y curl git gh viminstalling nix
sh <(curl -L https://nixos.org/nix/install) --daemoninstalling home manager
nix-channel --add https://github.com/nix-community/home-manager/archive/release-25.11.tar.gz home-manager && nix-channel --update && nix-shell '<home-manager>' -A installgit clone https://github.com/reinthal/nixos-config
cd nixos-configallow flakes and trust root and current user add devenv public key
sudo tee -a /etc/shells <<EOF
$(which zsh)
EOF
sudo tee -a /etc/nix/nix.conf <<EOF
experimental-features = nix-command flakes
trusted-users = root $(whoami)
extra-substituters = https://devenv.cachix.org
extra-trusted-public-keys = devenv.cachix.org-1:w1cLUi8dv3hnoSPGAuibQv+f9TZLr6cv/Hm9XgU50cw= reinthal-cache.cachix.org-1:wFPDVH/makS72ZY3Y8jA0BehXDBhQ3syqo0UJu7oah8=
EOFrestart the nix daemon
sudo systemctl restart nix-daemonsudo tee -a /etc/shells <<EOF
/home/$(whoami)/.nix-profile/bin/zsh
EOFinstall home-manager cli environment
home-manager switch --flake .#kog@cli --impure -b bkp && sudo chsh -s $(which zsh) && echo 'WELCOME TO NIXLAND' && zsh| Host | Description |
|---|---|
build |
x86 Proxmox VM Workstation |
flix |
Media server (Jellyfin, Plex, Navidrome) |
nixbook |
Apple Silicon + NixOS configuration |
relay |
Tor exit node |
mbp |
macOS Darwin system |
This flake uses two nixpkgs inputs that both track the nixpkgs-unstable
branch but are pinned independently in flake.lock. The reason the entire
setup runs on unstable is the nixos-apple-silicon module, which requires
kernel support only available on the unstable branch.
| Input | Branch | Accessed as | Purpose |
|---|---|---|---|
nixpkgs |
nixpkgs-unstable |
pkgs.* |
Default system and home-manager packages |
nixpkgs-unstable |
nixpkgs-unstable |
pkgs.unstable.* |
High-churn packages on a faster update cadence |
Both inputs track the same upstream branch. The separation exists so that
pkgs.unstable.* packages can be updated independently (via
nix flake update nixpkgs-unstable) without triggering a full system rebuild
from a new nixpkgs pin.
Add a package under pkgs.unstable.<name> when:
- It moves fast and you want updates more frequently than system rebuilds
- You had a breakage in the main
nixpkgspin and need a newer snapshot - The package lags behind in the main pin (e.g. waiting for a Hydra build)
Current pkgs.unstable.* packages:
| Package | File |
|---|---|
signal-desktop |
home-manager/cli/default.nix |
claude-code |
home-manager/cli/default.nix, home-manager/cli/flix.nix |
mcp-proxy |
home-manager/cli/default.nix |
devenv |
home-manager/cli/default.nix |
ollama |
modules/ollama.nix |
meilisearch |
nixos/features/apps/jellyfin.nix |
Update only the high-churn input (fast, low rebuild impact):
nix flake update nixpkgs-unstableUpdate everything (full system rebuild on next switch):
nix flake updateUpdate a single other input:
nix flake update home-manager
nix flake update apple-siliconFor NixOS systems:
sudo nixos-rebuild switch --flake '.#<hostname>' --impureFor Darwin (macOS) systems:
nix run --experimental-features "nix-command flakes" nix-darwin -- switch --flake .#<hostname>Once experimental features for flakes are enabled, use these convenient aliases:
switchnix flake updateor
nix flake update nixpkgs-unstablesudo nixos-rebuild test --flake '.#<host>' --impuresudo bash trim-generations.sh <n items> <n days> [user|home-manager|channels|system]nix store sign --recursive --key-file ~/.config/nix/secret.key /run/current-system
nix copy --to 's3://nix-cache?profile=nixbuilder&endpoint=minio.nas.reinthal.me' /run/current-system