No description
Find a file
2026-07-04 20:28:37 +02:00
assets Updated README 2026-06-18 21:55:44 +02:00
hosts Allow Unstable packages and create alias for workspace renaming 2026-07-04 13:41:34 +02:00
lib Added unstable packages 2026-07-01 11:05:52 +02:00
modules Create noctalia file in case it doesnt exist yet 2026-07-04 20:28:37 +02:00
pkgs/theme Noctalia Update 2026-06-07 20:47:13 +02:00
.sops.yaml Added Secret files with sops 2025-08-12 14:34:39 +02:00
default.nix Restructured Niri completely - waybar is broken 2025-06-13 14:07:35 +02:00
flake.lock Allow Unstable packages and create alias for workspace renaming 2026-07-04 13:41:34 +02:00
flake.nix Added unstable packages 2026-07-01 11:05:52 +02:00
LICENSE Create LICENSE 2025-06-20 10:52:16 +02:00
options.md walker integration 2026-04-15 18:09:19 +02:00
README.md Updated README 2026-06-18 21:55:44 +02:00
secrets.yaml ssh management via sops 2026-04-15 18:09:03 +02:00

NixOS Config

A modular NixOS configuration based on Géza Ahsendorf's setup.

Screenshots

Catppuccin Gruvbox
Catppuccin Gruvbox

Stack

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
System Monitor btop
Browser Zen Browser
Secrets sops-nix
Framework NixOS 26.05 + Home Manager

Quickstart

1. Add to flake.nix

configuration-name = {
  username = "username";
  hashedPassword = "hashedPassword"; # mkpasswd

  # userDescription = "Your Name";
  # hostname = "hostname";
};

2. Create hosts/configuration-name/default.nix

{ config, pkgs, username, ... }:
{
  imports = [
    ./hardware-configuration.nix
    # ./config.nix  # optional overrides
  ];

  users.users.${username}.packages = with pkgs; [
    # host-specific packages
  ];
}

3. Copy hardware config

cp /etc/nixos/hardware-configuration.nix hosts/configuration-name/
sudo nixos-rebuild switch --flake .#configuration-name

Requires nix.settings.experimental-features = [ "nix-command" "flakes" ].

4. Options

Module options are documented in options.md. To use them, create hosts/configuration-name/config.nix:

{ username, ... }:
{
  # modules.desktop.enable = true;
}

Structure

.
├── 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

Keybindings

Niri (Super + ...)

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.

Zellij (Alt + ..., inside terminal)

Zellij starts in locked mode to avoid conflicts with Helix.

Key Action
F Floating shell
T New tab
N Split window
Ctrl + G Exit locked mode