A modern, beautiful, and performant NixOS desktop configuration featuring Niri's scrollable-tiling compositor and Noctilia Shell's stunning interface.
- π¨ Beautiful by Default: Noctilia Shell with Ayu theme
- πͺ Unique Window Management: Niri's scrollable-tiling compositor
- β‘ Blazing Fast: zram swap, tmpfs caching, optimized VM settings
- π Secure: Wayland-native, no X11, proper portal configuration
- π¦ Reproducible: NixOS flakes ensure identical setups across machines
- π§© DRY Architecture: Shared base config, host-specific overrides only
- βοΈ Easy Customization: Single
user-config.nixfile for personal settings
- Scrollable-tiling window management (Super+H/L to scroll)
- Smooth 60fps animations
- Per-monitor workspaces
- Dynamic workspace creation
- Native Wayland, no X11 dependencies
- Stunning desktop shell with widgets
- App launcher with fuzzy search
- Control center with power profiles
- Lock screen that matches your theme
- System monitor, calendar, weather
- Media controls and notifications
- zram: 50% RAM compressed swap
- tmpfs: 3GB in-memory cache
- VM tuning: Optimized swappiness and dirty ratios
- Nix caching: Fast rebuilds with parallel builds
- Auto GC: Weekly cleanup of old generations
- Development: VSCode, Windsurf, GitHub Desktop
- Browsers: Google Chrome, Firefox
- Office: OnlyOffice, Impression (presentations)
- Communication: Telegram, Zapzap (WhatsApp)
- Cloud: Nextcloud client
- Security: Bitwarden
- Remote: AnyDesk, Deskflow (KVM)
- Media: MPV, Pavucontrol
- File Management: Nautilus, FileZilla
- System: htop, btop, neofetch
See home/default.nix for complete list.
Note: These instructions are for a fresh NixOS installation. Just copy and paste each command!
sudo nano /etc/nixos/configuration.nixFind a spot in the file and add these two lines:
environment.systemPackages = [ pkgs.git ];
nix.settings.experimental-features = [ "nix-command" "flakes" ];Then save the file: Press Ctrl+O, then Enter, then Ctrl+X
sudo nixos-rebuild switchgit clone https://github.com/JulianPasco/nocturi.git ~/nixos-confignano ~/nixos-config/user-config.nixUpdate these values with your information:
username- Your Linux usernamefullName- Your nameemail- Your emailtimezone- Your timezone (e.g.,"Europe/London","America/New_York")locale- Your locale (e.g.,"en_US.UTF-8")
Save: Press Ctrl+O, then Enter, then Ctrl+X
For desktop/work machine:
cp -a /etc/nixos/hardware-configuration.nix ~/nixos-config/hosts/work/For laptop/home machine:
cp -a /etc/nixos/hardware-configuration.nix ~/nixos-config/hosts/home/For desktop/work:
sudo nixos-rebuild switch --flake ~/nixos-config#workFor laptop/home:
sudo nixos-rebuild switch --flake ~/nixos-config#homesudo rebootβ Done! After reboot, log in at the terminal and Niri will start automatically.
| Key | Action |
|---|---|
Super+T |
Terminal (Kitty) |
Super+D / Super+Space |
Launcher |
Super+Escape |
Lock screen |
Super+Q |
Close window |
Super+H/L |
Scroll workspaces |
Super+Shift+H/L |
Move window between workspaces |
Super+Left/Right/Up/Down |
Focus window |
See home/default.nix for complete list.
βββ flake.nix # Flake configuration
βββ user-config.nix # β YOUR PERSONAL SETTINGS (edit this!)
βββ modules/
β βββ base/ # Shared config for all hosts
β βββ home/ # Noctilia Shell config
β βββ system/ # Niri system integration
βββ hosts/
β βββ home/ # Laptop config (bluetooth, battery)
β βββ work/ # Desktop config
βββ home/ # User packages and settings
Personal settings: user-config.nix β Edit this first! (username, timezone, location, etc.)
System-wide changes: modules/base/default.nix (applies to all hosts)
Host-specific: hosts/{hostname}/configuration.nix (overrides for single machine)
User interface: modules/home/noctilia.nix (Noctilia appearance - advanced)
User apps: home/default.nix (packages and home-manager settings)
Edit modules/home/noctilia.nix:
colorSchemes.predefinedScheme = "Ayu"; # or "Catppuccin", "TokyoNight", etc.Place images in ~/Pictures/Wallpapers/ and they'll rotate automatically (or set automationEnabled = false for static).
Edit home/default.nix and add to home.packages:
home.packages = with pkgs; [
your-package-here
];Default is powersaver. To change, edit modules/home/noctilia.nix:
startup = "noctalia-shell ipc call powerProfile set performance";- Clone repo on new machine
- Generate hardware config:
sudo nixos-generate-config --show-hardware-config > /tmp/hw.nix - Create
hosts/newhost/directory - Copy hardware config there
- Create
hosts/newhost/configuration.nix(usehosts/workas template) - Add to
flake.nix:
nixosConfigurations = {
newhost = mkHost "newhost" [];
};- Deploy:
sudo nixos-rebuild switch --flake .#newhost
When there are new updates to the config, run these commands:
cd ~/nixos-configgit pullsudo nixos-rebuild switch --flake ~/nixos-config#workTip: Replace
#workwith#homeif you're on a laptop.
This updates NixOS packages, Niri, and Noctilia to their latest versions:
cd ~/nixos-confignix flake updatesudo nixos-rebuild switch --flake ~/nixos-config#workNote: If you get a "Permission denied" error on
flake.lock, fix ownership with:sudo chown -R $USER:users ~/nixos-config
sudo nixos-rebuild switch --rollbackOr select a previous generation from the boot menu.
- β TTY auto-login to Niri (no display manager overhead)
- β Wayland-native (no X11)
- β XDG portals configured (screen sharing works)
- β PipeWire audio
- β Power management (battery, power profiles)
- β Bluetooth support (on laptop)
- β Calendar and weather integration
- β Tailscale VPN
- β Firefox with Wayland
- β Automatic Nix store optimization
- β Weekly garbage collection
Found a bug or want to improve something? PRs welcome!
MIT License - feel free to use and modify.
- Niri - Scrollable-tiling Wayland compositor
- Noctilia Shell - Beautiful desktop shell
- NixOS - Declarative Linux distribution
Enjoy your beautiful, fast, and reproducible desktop! β