My NixOS configuration with multi-host setup, a few GitHub Actions, personal build cache, checks via pre-commit hooks & CI, and Catppuccin theme for all programs.
This repo uses the Dendritic Nix pattern with the Den framework to configure multiple hosts, OSes (NixOS and MacOS) and users while shaing most of the codebase between these targets.
Packages are cached in CI so local installations are faster (this is critical for nightly Zed builds from the flake which take 40+ min).
Key components:
- NixOS for system configuration on Linux
- nix-darwin for system configuration on MacOS
- Home Manager for user configuration. Most user-space programs are installed and configured via Home Manager.
- sops-nix for storing secrets securely.
- YubiKey for SSH and GPG (and
sops-nix). It makes life easier and more secure. - Ghostty - an amazing modern cross-platform terminal emulator. Very performant, has a lot of features and super good defaults.
- Catppuccin theme for everything - because it's beautiful, easy on eyes, and has an implementation for every app in the world. It's automatically applied to all programs via cattppuccin/nix.
- Starship terminal prompt. Nothing can beat it in terms of speed, features, and looks.
- Zed editor setup with a bunch of language servers and plugins. Zed is the future. The GOAT Python LSs are configured for Zed:
ruffandbasedpyright.
- Hyprland as Wayland compositor & window manager. It's very fast, looks amazing, and has a lot of features. Now has a huge community and is finally stable!
- Hyprpanel a panel, widgets, and notifications for Hyprland. Has very good defaults and doesn't require much configuration.
- Vicinae a feature-rich, fast, user-friendly launcher compatible with the Raycast plugin ecosystem
- NixOS or just nix (only
$HOMEsetup) - nh - an excellent Nix helper. It has a better UX and the output is more informative.
nh os switchThis will download, build and install system packages, files and configurations.
Note
Use nh os test to test configurations without adding boot entries.
nh home switchThis will download, build and install user packages, files and configurations.
This repo uses the Dendritic Nix pattern with the Den framework. Configuration is organized by concern into aspects.
This allows elegantly composing and mixing aspects into configurations for NixOS, Darwin (MacOS), different users and hosts, while sharing everything what can be shared between them.
An aspect is an attrset containing modules for different Nix classes (nixos, darwin, homeManager). Aspects compose via includes to form a DAG.
features/- Reusable concerns: shell, editors, desktop, security, CLI tools, platform servicesusers/- Per-user entry points with platform-specific variants underdarwin/andlinux/hosts/- Per-host entry points that include feature aspects
| Purpose | Name | Comment |
|---|---|---|
| Code | Maple Mono NF | Programming |
| UI | Cabin | Easy on eyes, good default |
| UI | Recursive | Eye candy, catchy |
Honorable mention: Fira Code - an excellent programming font that served me very well for years.
It's necessary to rebuild fonts cache in order to observe live changes after modifying the config:
fc-cache -rfpackages/ contains some custom packages. These are:
packages/nebius-cli.nix- Nebius CLIpackages/waystt.nix- waystt - Wayland speech-to-text tooling. PressSUPER+Tto talk, release to type transcribed text viawtype. UsingSUPER+SHIFT+Tcopies the transcript to clipboard instead.
XDG_UTILS_DEBUG_LEVEL=2 xdg-mime query filetype foo.pdf
XDG_UTILS_DEBUG_LEVEL=2 xdg-mime query default application/pdf
fd evince.desktop /See this tutorial on building a secure live NixOS image. It can be used to generate a GPG key and transfer it to multiple YubiKeys.
