A modular NixOS configuration based on Géza Ahsendorf's setup.
| Catppuccin | Gruvbox |
|---|---|
| Category | Tool |
|---|---|
| Window Manager | Niri (Wayland tiling compositor) |
| Terminal | Kitty |
| Multiplexer | Zellij |
| Editor | Helix |
| Shell | Fish |
| Status Bar | Waybar |
| App Launcher | Walker |
| Greeter | Noctalia + greetd |
configuration-name = {
username = "username";
hashedPassword = "hashedPassword"; # mkpasswd
# userDescription = "Your Name";
# hostname = "hostname";
};{ config, pkgs, username, ... }:
{
imports = [
./hardware-configuration.nix
# ./config.nix # optional overrides
];
users.users.${username}.packages = with pkgs; [
# host-specific packages
];
}cp /etc/nixos/hardware-configuration.nix hosts/configuration-name/
sudo nixos-rebuild switch --flake .#configuration-nameRequires nix.settings.experimental-features = [ "nix-command" "flakes" ].
Module options are documented in options.md. To use them, create hosts/configuration-name/config.nix:
{ username, ... }:
{
# modules.desktop.enable = true;
}.
├── flake.nix # inputs and host definitions
├── lib/ # flake helpers
├── hosts/ # per-device config + hardware-configuration.nix
├── modules/
│ ├── core/ # base system utilities
│ ├── desktop/ # niri, gtk, fonts, portals
│ ├── programs/ # helix, kitty, zellij, btop, ...
│ └── services/ # audio, waybar, greetd, printing, ...
├── pkgs/ # themes and wallpapers
└── secrets.yaml # sops-encrypted secrets
| Key | Action |
|---|---|
P |
Open browser |
E |
Open terminal |
H/J/K/L |
Navigate windows/workspaces |
Ctrl + H/J/K/L |
Move windows between workspaces |
R |
Resize window |
[ / ] |
Stack windows |
Full bindings in modules/desktop/niri/niri.nix.