This document describes the system environment and repo structure for LLM-assisted work: ricing, development, technical support, and troubleshooting.
For colors, styles, and theme-specific details, always refer to the actual config files in this repo and in the theme repos — they are the source of truth, not this document.
- CPU: AMD Ryzen 7 5800H (8C/16T, Zen 3, integrated Radeon Vega)
- GPU (dedicated): NVIDIA GeForce RTX 3050 Ti Laptop (GA107M)
- GPU (integrated): AMD Cezanne Radeon Vega
- RAM: 16 GB DDR4
- Storage: 465.8 GB NVMe (LUKS-encrypted, btrfs), 119.2 GB NVMe (Windows/NTFS)
- Swap: 7.5 GB zram
- Display: Laptop 1920x1080@144Hz (eDP-1) + External 1920x1080@60Hz (HDMI-A-1)
- OS: Arch Linux (kernel 6.x, rolling release)
- DE Framework: Omarchy (Hyprland-based Arch environment by DHH)
- Compositor: Hyprland (Wayland)
- Session manager: UWSM
- Display manager: SDDM
- Theme: Crystal (active). See
~/.config/omarchy/themes/crystal/for details. - Notification daemon: Mako
- Status bar: Waybar
- App launcher: Walker (with Elephant providers)
- Volume OSD: SwayOSD
- Idle/Lock: Hypridle + Hyprlock
- Night light: Hyprsunset
- Screenshot: Grim + Slurp + Satty
- Wallpaper: Swaybg
Hybrid NVIDIA + AMD iGPU setup. See hypr/envs.conf for GPU env vars, render order, and workarounds. NVIDIA driver: nvidia-open-dkms.
- Shell: Zsh with Oh My Zsh
- Terminal emulators: Alacritty, Ghostty, Kitty (launched via
xdg-terminal-exec) - Prompt: Starship
- Multiplexer: tmux
- Node.js: managed via NVM + mise
- Go, Rust, Python, .NET, Ruby, Lua, C/C++
- System: pacman + yay (AUR)
- Node: pnpm, npm (via nvm)
- Python: uv, poetry
- Rust: cargo
- Runtime version manager: mise
- Primary: Neovim (omarchy-nvim, LazyVim-based)
- Secondary: Cursor, Code OSS
- AI coding: Claude Code, OpenAI Codex
- Git: Lazygit, Graphite (stacked PRs), gh
- Docker: Docker + Buildx + Compose, Lazydocker
- Database: DBeaver
- Search: ripgrep, fd, fzf, plocate
- Misc: bat, jq, yq, dust, tldr, eza, lsd
- Root + Home: Single LUKS-encrypted btrfs partition
- Boot: FAT32 (
/boot) - Bootloader: Limine (not GRUB)
- Snapshots: Snapper (btrfs)
- Dual boot: Windows on separate NVMe
- Server: PipeWire (+ pulse, jack, alsa)
- Session manager: WirePlumber
This repo uses per-file symlinks managed by make link (see Makefile). Each config file is symlinked individually from this repo into ~/.config/. Example:
~/dotfiles/hypr/bindings.conf → ~/.config/hypr/bindings.conf (symlink)
~/dotfiles/waybar/config.jsonc → ~/.config/waybar/config.jsonc (symlink)
~/dotfiles/mako/config → ~/.config/mako/config (symlink)
Editing a file in this repo directly edits the live config (they are the same file via symlink).
hypr/ # Hyprland: monitors, bindings, input, envs, autostart, looknfeel
waybar/ # Status bar config + style
mako/ # Notification daemon
walker/ # App launcher
swayosd/ # Volume/brightness OSD
kitty/ # Terminal config
alacritty/ # Terminal config (note: alacritty.toml is generated by omarchy-theme-set, not symlinked)
ghostty/ # Terminal config
nvim/ # Neovim: only user-owned files (keymaps, options, autocmds) — per-file symlinks
rofi/ # App launcher (rofi config + custom themes)
cursor/ # Cursor editor settings + keybindings
fontconfig/ # Font rendering
starship.toml # Shell prompt
shell/ # .zshrc, .bash_profile, secrets template
btop/ # System monitor + themes
fastfetch/ # System fetch
lazygit/ # Git TUI
lazydocker/ # Docker TUI
mise/ # Runtime version manager
git/ # Git global config
environment.d/ # XDG environment (fcitx)
fcitx5/ # Input method
uwsm/ # Session manager
systemd/user/ # User systemd units
Makefile # `make link` / `make unlink` — manages all symlinks
The active theme Crystal is a separate git repo:
~/Work/omarchy-theme-crystal/ ← source repo (edit here)
↓ symlink
~/.config/omarchy/themes/crystal/ ← Omarchy reads from here
↓ cp -r (by omarchy-theme-set)
~/.config/omarchy/current/theme/ ← deployed copy (DO NOT edit)
Critical: ~/.config/omarchy/themes/crystal is a symlink to ~/Work/omarchy-theme-crystal/. They are the same directory. But ~/.config/omarchy/current/theme/ is a copy made by omarchy-theme-set. After editing theme files, run omarchy-theme-set crystal to propagate changes to the deployed copy.
The theme repo contains its own CLAUDE.md and README.md — refer to those for theme-specific details (colors, design decisions, file structure).
~/.local/share/omarchy/default/ ← Framework defaults (never edit, managed by pacman)
~/.local/share/omarchy/config/ ← Default user configs
~/.config/ ← User overrides (this repo's symlinks land here)
For Hyprland specifically, hyprland.conf sources in order:
- Omarchy defaults from
~/.local/share/omarchy/default/hypr/*.conf - Theme config from
~/.config/omarchy/current/theme/hyprland.conf - User overrides from
~/.config/hypr/*.conf(this repo)
cp -rbuilt-in theme (~/.local/share/omarchy/themes/<name>/) →current/next-theme/cp -ruser theme (~/.config/omarchy/themes/<name>/) →current/next-theme/(overwrites)- Generate templated configs (
.tpl+colors.toml) →current/next-theme/(only if file doesn't exist) - Atomic swap:
current/next-theme/→current/theme/ - Restart all components + set app themes + run hook
colors.toml in the theme directory is the single source of truth for all colors. Template variables: {{ key }} (raw), {{ key_strip }} (hex without #), {{ key_rgb }} (decimal R,G,B).
All start with omarchy-. Key prefixes: theme- (theme ops), restart- (restart component), refresh- (copy defaults), pkg- (packages), toggle- (feature toggles), cmd- (utilities).
- Dotfiles edits: Edit files in this repo. They are live via symlinks. Check the
MakefileLINKS list to see what's symlinked where. - Theme edits: Edit in
~/Work/omarchy-theme-crystal/, thenomarchy-theme-set crystalto deploy. Never edit~/.config/omarchy/current/theme/directly — it's a copy that gets overwritten. - Colors/styles: Read the actual config files in the theme repo. This document does not contain color values — the theme's
colors.tomland config files are the source of truth. - Package installation: Use
yay(handles both pacman and AUR). - Service management:
systemctl --userfor user units,sudo systemctlfor system units. - NVIDIA troubleshooting: Check
hypr/envs.conffor GPU env vars. - Secrets: Never hardcode tokens. Use
~/.zshrc.local(sourced by .zshrc, gitignored). - Bootloader: Limine (not GRUB). Config at
/boot/limine.conf. - Encryption: Root is LUKS-encrypted btrfs. Be careful with partition operations.