This repository contains NixOS system and Home Manager configurations for multiple machines. It manages the entire system setup declaratively using Nix, including applications, services, and user preferences.
This is a comprehensive NixOS configuration repository that includes:
- System-level configurations for multiple hosts
- User-level configurations via Home Manager
- Desktop environments and window managers
- Development tooling and applications
- Custom application configurations
- Multiple Host Support: Configurations for different machines
- Modern Window Manager: Niri Wayland compositor with custom theming
- Development Environment: Preconfigured development tools and IDEs
- Consistent Theming: Coordinated appearance across applications
- Security: Fingerprint support and other security enhancements
- Declarative: All configurations are version-controlled and reproducible
hosts/- Host-specific configurations (laptop, work machine, desktop)modules/nixos/- System-level modules (applications, system services, settings)modules/home-manager/- User-level modules (shell, editors, UI settings)cfg/- Static configuration files for various applicationsssh/- SSH configurations and keys
- A NixOS installation
- Basic knowledge of the Nix language and flake system
home-managerinstalled (for user configurations)
- Clone this repository to your NixOS system
- Enter the repository directory:
cd path/to/repository - Apply system configuration:
sudo nixos-rebuild switch --flake .#<hostname>
The repository supports multiple hosts defined in the hosts/ directory. The available configurations are:
torchic- Personal laptop configurationsnorlax- Work laptop configurationinfernape- Personal desktop configuration
nh os switch /home/hackr/nixosnh os test /home/hackr/nixosnix flake showA setup script is available for replicating the nushell shell environment on Ubuntu hosts (without Nix). It installs the same tools and config files:
- nushell (with plugins) — main shell
- carapace — completions
- atuin — shell history
- starship — prompt (poimandres theme)
- zoxide — directory jumping
- direnv — environment loading
- fastfetch — system info
- pokeget-rs — Pokémon sprites for pokefetch
curl -sL https://raw.githubusercontent.com/0xhckr/hackr-nixos/main/scripts/ubuntu-setup.sh | bashOn first run, the script will prompt whether to reset existing config files (defaults to no).
The configuration includes:
- Window Manager: Niri (Wayland compositor) (with gde as a backup)
- Shell: Nushell with extensions
- Development: Cursor with extensions and keybindings (working on moving to helix)
- Terminal: ghostty as primary with alacritty as a backup
- System Tools: btop, fastfetch, atuin, and other utilities
The configuration uses a custom theme (rose-pine) applied consistently across:
- Shell environments
- Terminal applications
- Text editors
- Window management
- System appearance
Pi is customized with custom themes, extensions, and settings managed declaratively via Nix. Source-of-truth files live in cfg/pi/ and are symlinked into ~/.pi/agent/ by Home Manager, with an activation script that copies them to mutable live paths (so Pi can write to them at runtime).
settings-original.json → ~/.pi/agent/settings.json
- Provider:
zai(default AI provider) - Model:
glm-5.1(default model) - Thinking level:
medium - Theme:
hackr(custom theme, see below) - Quiet startup: enabled
- Package manager:
bun(for extension dependencies) - Global package:
pi-super-curl(via npm)
Two custom TUI themes are installed into ~/.pi/agent/themes/:
-
rose-pine.json— A faithful port of the Rosé Pine colorscheme, with 16 named palette vars and full color mappings for the TUI (syntax highlighting, tool output, markdown rendering, thinking indicators, etc.). -
hackr.json— A bespoke dark theme built on the "Charmtone Pantera" palette. Named after food-themed colors (charple, dolly, bok, sriracha, malibu, julep, mustard, etc.) with a dark pepper/bbq/charcoal base. This is the active theme used by the Hackr UI extension.
Three custom extensions are deployed to ~/.pi/agent/extensions/ with their npm dependencies installed via bun:
-
hackr-ui.ts— A full TUI makeover that replaces Pi's default interface with a Charm-inspired aesthetic:- Header: Renders pi (π) digits as a
charple → dollygradient wordmark, with model name and cwd on the right - Footer: Token stats (input ↑ / output ↓ / cost $) on the left, model + git branch + cwd on the right
- Working indicator: Gradient-animated
xoxopulse cycling between charple and dolly - Custom editor:
xoxoprompt prefix (oryoloin YOLO mode), no visible borders, context window usage stats in the bottom bar /yolocommand: Toggles YOLO mode — auto-accepts all tool permissions and shows a bright yellow! YOLOstatus badge. Still blocks genuinely dangerous commands (rm -rf,sudo,chmod 777) with an interactive confirmation dialog/hackr-uicommand: Toggles the entire Hackr UI on/off
- Header: Renders pi (π) digits as a
-
jj-desc.ts— Adds ajj_describetool and/jj-desccommand that reads the currentjj diff, sends it to the model to generate a concise commit description (imperative mood, <72 char summary, optional bullet details), then sets it viajj describe -
web-fetch.ts— A curl-backedweb_fetchtool for fetching URL content (web pages, API responses, remote files). Supports GET/POST/PUT/DELETE, custom headers, request body, and configurable max response length
The links.nix module handles two phases:
- Symlink (declarative):
home.fileentries linkcfg/pi/*→~/.pi/agent/*-original.* - Activation script (post-generation): Copies
-originalfiles to their live mutable paths, installs extension npm dependencies withbun, and sets writable permissions