This repository contains my fully declarative NixOS system configuration managed with Nix flakes and Home Manager.
The system is designed to be:
- Reproducible
- Version-controlled
- Declarative
- Flake-based
- Wayland-native (Niri session)
- GitHub integrated via
gh
- NixOS (unstable channel via flakes)
- Flakes enabled
- Home Manager integrated as a NixOS module
- Git-managed
/etc/nixos
greetdas login managernirias Wayland compositornoctalia-shellenabled at session startmakonotificationsfuzzellauncherswaybg,swayidlexwayland-satellite
- NetworkManager
- Bluetooth
- power-profiles-daemon
- upower
- gnome-keyring
- xdg-desktop-portal-gnome
- Brave browser
- Alacritty terminal
- Kitty terminal
- Helix editor (custom config)
- Git + GitHub CLI (
gh) - httpie
- atool
/etc/nixos
├── flake.nix
├── flake.lock
├── configuration.nix
├── hardware-configuration.nix
├── home.nix
├── helix/
│ └── config.nix
└── README.md
From /etc/nixos:
sudo nixos-rebuild switch --flake .#nixosTo update flake inputs:
nix flake update
sudo nixos-rebuild switch --flake .#nixosHome Manager is integrated as a NixOS module.
To apply user-level changes independently:
home-manager switch --flake /etc/nixos#nixosGit is configured declaratively in home.nix.
gh is installed via Home Manager.
After first setup:
gh auth loginCredentials are stored in:
~/.config/gh/
No absolute credential helper paths are used.
User application data (e.g., Brave profile) lives under:
~/.config/
Home Manager does not overwrite application data unless explicitly configured with force = true.
system.stateVersion = "25.11";
home.stateVersion = "25.11";
These are intentionally pinned and should not be changed without understanding migration implications.
Typical change workflow:
git add .
git commit -m "Describe change"
sudo nixos-rebuild switch --flake .#nixos- Everything declarative
- No manual system drift
- Flake-pinned inputs
- Git versioned infrastructure
- Reproducible rebuilds on fresh install
If needed, this repository can be cloned onto a fresh NixOS installation and rebuilt directly:
sudo nixos-rebuild switch --flake /path/to/repo#nixos