This is my setup for NixOS.
Screenshot
screenshot showing niri with neofetch and yazi in wezterm. thefuck plugin for zsh filled the JIT-install command for the missing app neofetch.- install NixOS
- enable flakes
- update
./hosts/<PROFILE>/hardware-configuration.nix
- get a user password by either:
- setting one in
./hosts/<PROFILE>/configuration.nix
- decoding secrets by adding the
age
keys file to/etc/nixos/keys.txt
- setting one in
$ just -l
Available recipes:
age # Check when inputs were last updated
clean # Remove all generations older than 7 days
decode # Decode secrets
encode # Encode secrets
fmt # Format code
gc # Garbage collect all unused nix store entries
repl # Open a Nix REPL - run manually to load flake: `:lf .`
switch # Rebuild the system
test # Run tests
up # Update all inputs
upp input # Update specific input. Usage: just upp nixpkgs
... or if just
isn't available yet:
nix run nixpkgs#just -- -l
- secrets: sops
- formatter: treefmt + editorconfig
- commands: just
- CI: garnix
- cache:
./cachix/
- environment loader: direnv
the flake.lock
ed nixpkgs is used for:
- nix commands
- 'command not found' errors
Component | Software |
---|---|
Compositor | Niri |
Bar | Waybar |
Notifications | Swaynotificationcenter |
Menu | Anyrun |
Web browser | Firefox |
File browser | Yazi |
Terminal | Wezterm |
Text editor | VSCodium |
Editor (shell) | Neovim |
Shell | Zsh |
Fuzzy finder | Fzf |
Pager | Gum |
- theming module: Stylix
- GUI theme: Catppuccin-Mocha-Maroon
- shell theme: base16-classic-dark
- icons: Papirus-Dark
- fonts:
- regular: DejaVu Sans
- monospace MartianMono
- emoji: Noto Color Emoji
command | drop-in | improvements |
---|---|---|
cd |
n/a | (can skip it in Zsh) |
cd |
z |
remembers visited locations |
cd |
cd (enhancd) |
interactive directory picker using cd , cd . or cd .. |
ls |
eza (aliased to ls ) |
friendlier output and interface |
cat |
bat |
syntax highlighting |
less |
less (lesspipe) |
syntax highlighting |
find |
fd |
faster, friendlier interface, respects .gitignore |
grep |
rg |
friendlier interface |
make |
just |
show comments, friendlier file format |
ssh |
xxh |
use your favorite shell |
Used keyboard layout: en-us
with Caps Lock
remapped to Esc
.
niri
: see./home-manager/kiara/niri.nix
(TODO)swaynotificationcenter
firefox
(vimium-c
)yazi
(custom)wezterm
vscodium
(overrides:./home-manager/kiara/vscode.nix
)neovim
zsh
gum
niri supports three-finger swipes between:
- windows (left/right)
- workspaces (up/down)
module | left-click | right-click | scroll |
---|---|---|---|
media player | toggle play/pause | skip ahead | previous/next |
clock | - | toggle month/year in calendar pop-up | previous/next in calendar pop-up |
volume | toggle mute | Pulse Audio Volume Control | change volume |
memory | manage processes with Gnome System Monitor | manage processes with btop |
- |
CPU | open monitoring tool zfxtop |
manage processes with btop |
- |
battery | run battery viewer powersupply |
- | - |
storage | garbage-collect nix | show big files/folders using dust |
- |
network | manage network by networkmanager_dmenu |
manage network by nmtui |
- |
systray | (application-specific) | open application context menu | - |
what | where |
---|---|
system configuration | ./hosts/ |
home-manager configuration | ./home-manager/ |
binaries and command wrappers | ./home-manager/kiara/commands/ |
reusable modules | ./modules/ |
custom functions | ./lib/ |
custom packages | ./pkgs/*.nix (from flake inputs: ./pkgs/default.nix ) |
overlays | ./overlays/*.nix (from flake inputs: ./flake.nix ) |
LSP (vscodium / coc.nvim) | ./home-manager/kiara/features/development/ |
shell scripts | ./home-manager/kiara/scripts/*.sh |
dotfiles | ./home-manager/kiara/dotfiles/ + ./home-manager/kiara/dotfiles.nix |
custom desktop entries | ./home-manager/kiara/desktop.nix |
MIME types | ./home-manager/kiara/mime.nix |
file templates | ./home-manager/kiara/dotfiles/Templates/ |
keybinds | ./home-manager/kiara/niri.nix |