My NixOS setup running on a couple of laptops and a home server. Everything is managed through flakes with a modular structure that makes it easy to share configuration between machines while keeping host-specific stuff separate.
Warning
This is a single user setup and is not intended to be anything else.
├── flake.nix # Main flake configuration
├── hosts/ # Per-host configurations
│ ├── ideapad/
│ ├── khloe/
│ ├── kim/
│ └── yoga/
├── modules/ # Modular configurations
│ ├── core/ # NixOS modules
│ └── home/ # Home Manager modules
├── profiles/ # Reusable system profiles
└── secrets/ # Encrypted secrets management- Boot the NixOS installer ISO
- Set up network connection (WiFi or ethernet)
- Mount VeraCrypt USB and copy SSH keys to
/etc/ssh/ - Clone this repo:
git clone https://github.com/peucastro/nixos-config - Update disk device in
hosts/<hostname>/disk-configuration.nix - Run disko:
sudo nix run github:nix-community/disko/latest -- --mode destroy,format,mount hosts/<hostname>/disk-configuration.nix - Install:
sudo nixos-install --flake .#<hostname> - Reboot
- Window Manager:
Hyprland - Status Bar:
Waybar - Wallpaper Manager:
awww+waypaper - Idle Daemon:
hypridle - Screen Locker:
hyprlock - Logout Menu:
wlogout - Notification Daemon:
dunst - Display Manager:
greetd+tuigreet - Monitor Manager:
kanshi - Clipboard Manager:
wl-clipboard+cliphist - Screenshot Tool:
grim+slurp+swappy - Night Light:
wlsunset
- Terminal Emulator:
Alacritty,Ghostty - Shell:
Zsh- Plugin Manager:
oh-my-zsh - Plugins:
zsh-autosuggestions,zsh-syntax-highlighting
- Plugin Manager:
- Text Editor:
Neovim - Terminal Multiplexer:
tmux - System Monitor:
btop,fastfetch - CLI Tools:
bat,eza,fd,ripgrep,fzf
- Application Launcher:
Rofi - Code Editors:
VS Code,Zed - Web Browsers:
Zen,Firefox,ungoogled-chromium - Communication:
Discord,Slack,Telegram - Office & Productivity:
LibreOffice,Obsidian,Calibre - Utilities:
Bitwarden,qBittorrent,LocalSend
A headless server running various self-hosted services like Jellyfin for media streaming, Immich for photos, and the *arr stack for managing downloads. Everything is connected through Tailscale for remote access, with AdGuard Home handling DNS filtering. Services are configured declaratively through NixOS with Caddy reverse proxy handling SSL certificates via Cloudflare DNS.
This section is generated automatically from the Nix configuration using this cursed Nix script.
| Icon | Name | Description |
|---|---|---|
| Deluge | BitTorrent client with web UI | |
| qBittorrent | Bittorrent client with web UI | |
| Soulseek | Peer-to-peer music sharing | |
| Transmission | BitTorrent client |
| Icon | Name | Description |
|---|---|---|
| AdGuard Home | DNS server with ad/tracker blocking and web UI |
| Icon | Name | Description |
|---|---|---|
| Filebrowser | Web file manager | |
| Homepage | Application dashboard. | |
| Miniflux | Minimalist and opinionated feed reader | |
| Stirling PDF | PDF manipulation and conversion tool |
This project is licensed under the terms of the MIT license. Check LICENSE for details.