NixOS repository for different machines.
- Nix 67.8%
- Lua 24.9%
- Shell 5.8%
- Python 1.5%
workstation.nix includes discord, bitwarden-desktop, obsidian, and signal-desktop which all depend on electron-39 — now EOL in nixpkgs 26.11. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| configs | ||
| home | ||
| hosts | ||
| lib | ||
| media/wallpapers | ||
| modules | ||
| scripts | ||
| .gitignore | ||
| CLAUDE.md | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
NixOS Configuration
Modular NixOS config with Flakes and Home Manager for three hosts:
- laptop — Intel Arc GPU, primary machine
- desktop — NVIDIA RTX 3070, i7-8700K
- rpi4 — Raspberry Pi 4, home server (pihole + vaultwarden)
Stack
- WM: Hyprland 0.55 (from
github:hyprwm/Hyprland/v0.55.0) - Shell: DankMaterialShell (quickshell-based, Material You theming via matugen)
- Greeter: greetd + tuigreet
- Terminal: WezTerm (CovenantUI colors)
- Shell: Zsh + Powerlevel10k
- Editor: Neovim (lazy.nvim)
- Fonts: JetBrainsMono Nerd Font
Structure
nixos/
├── flake.nix
├── scripts/
│ └── bootstrap.sh # USB install automation script
├── hosts/
│ ├── common/
│ │ ├── default.nix # HM wiring, overlays, GC, trusted-users
│ │ └── users/
│ │ └── default.nix # user account, groups, SSH key
│ ├── laptop/
│ │ ├── configuration.nix
│ │ ├── hardware-configuration.nix
│ │ └── disko.nix
│ ├── desktop/
│ │ ├── configuration.nix
│ │ ├── hardware-configuration.nix
│ │ └── disko.nix # GPT + EFI + LUKS + btrfs
│ └── rpi4/
│ ├── configuration.nix # aarch64, pihole + vaultwarden, NAT gateway
│ └── hardware-configuration.nix
├── modules/
│ ├── base.nix # Audio, Hyprland, DMS, greetd, fonts, packages
│ ├── mullvad-tailscale.nix # Mullvad + Tailscale coexistence
│ └── hardware/
│ ├── intel-arc.nix # Intel Arc / Xe driver config
│ └── nvidia.nix # RTX 3070 + Hyprland config
├── home/
│ ├── laptop.nix # mkHome + laptop overrides
│ ├── desktop.nix # mkHome + desktop overrides
│ ├── rpi4.nix # minimal headless home config
│ ├── profiles/ # composable profile sets (base, desktop, coding, media…)
│ ├── hypr/
│ │ ├── common.lua # Shared Hyprland Lua config (binds, rules, look&feel)
│ │ ├── laptop.lua # Laptop monitor + brightness keys
│ │ └── desktop.lua # Desktop monitors + layout
│ ├── nvim/ # Neovim config (lazy.nvim)
│ └── programs/
│ ├── zsh.nix
│ ├── p10k.zsh
│ ├── wezterm.nix
│ ├── git.nix
│ ├── ssh.nix
│ └── nvim.nix
└── media/
└── wallpapers/
└── nebula_2560x1440.jpg
Installing on a new machine
Quick install (use the bootstrap script)
Boot the NixOS minimal ISO, then:
# Set Norwegian keyboard (skip if not needed)
loadkeys no
# Run the bootstrap script
bash <(curl -s https://git.nomedal.com/nome/nixos/raw/branch/master/scripts/bootstrap.sh)
Or clone manually and run it:
mkdir -p ~/.config/nix
echo 'experimental-features = nix-command flakes' > ~/.config/nix/nix.conf
nix-env -iA nixos.git
git clone https://git.nomedal.com/nome/nixos ~/nixos
bash ~/nixos/bootstrap.sh
The script will:
- Check network connectivity
- Show
lsblkand ask which disk to wipe - Run disko (partitions, LUKS, btrfs subvolumes, mounts)
- Copy the repo to
/mnt/etc/nixos - Run
nixos-install - Set root and user passwords via
nixos-enter
After reboot, go into BIOS and set the NVMe as first boot device.
Manual install steps
See CLAUDE.md for the full annotated manual sequence.
Day-to-day usage
# Apply config changes — omitting #hostname uses the machine's hostname automatically
sudo nixos-rebuild switch --flake /etc/nixos
# Update all flake inputs
nix flake update
sudo nixos-rebuild switch --flake /etc/nixos#desktop
# Update a single input
nix flake lock --update-input hyprland
# Check config evaluates before applying
nixos-rebuild build --flake /etc/nixos#desktop
# Garbage collect
sudo nix-collect-garbage --delete-older-than 30d
Notes
- DMS handles all theming (matugen, wallpaper → Material You colors). Don't add waybar, mako, fuzzel, etc.
- quickshell comes from the flake overlay, not nixpkgs — the nixpkgs build doesn't support the
AppIdpragma DMS uses. - Spotify is managed by
spicetify-nix— do not use Flatpak or nixpkgs spotify. Updates via normalnix flake update. /etc/nixosis owned byuserfor direct git access without sudo.