Skip to content

Latest commit

 

History

History
180 lines (139 loc) · 7.56 KB

File metadata and controls

180 lines (139 loc) · 7.56 KB

System Profile - crystal's Arch Linux / Omarchy Setup

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.

Hardware

  • 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 & Desktop Environment

  • 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

GPU / Graphics Configuration

Hybrid NVIDIA + AMD iGPU setup. See hypr/envs.conf for GPU env vars, render order, and workarounds. NVIDIA driver: nvidia-open-dkms.

Terminal & Shell

  • Shell: Zsh with Oh My Zsh
  • Terminal emulators: Alacritty, Ghostty, Kitty (launched via xdg-terminal-exec)
  • Prompt: Starship
  • Multiplexer: tmux

Development Stack

Languages & Runtimes

  • Node.js: managed via NVM + mise
  • Go, Rust, Python, .NET, Ruby, Lua, C/C++

Package Managers

  • System: pacman + yay (AUR)
  • Node: pnpm, npm (via nvm)
  • Python: uv, poetry
  • Rust: cargo
  • Runtime version manager: mise

Editors & IDEs

  • Primary: Neovim (omarchy-nvim, LazyVim-based)
  • Secondary: Cursor, Code OSS
  • AI coding: Claude Code, OpenAI Codex

Dev Tools

  • 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

Filesystem

  • Root + Home: Single LUKS-encrypted btrfs partition
  • Boot: FAT32 (/boot)
  • Bootloader: Limine (not GRUB)
  • Snapshots: Snapper (btrfs)
  • Dual boot: Windows on separate NVMe

Audio

  • Server: PipeWire (+ pulse, jack, alsa)
  • Session manager: WirePlumber

Deployment Model

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).

Repo Structure

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

Crystal Theme (Separate Repo)

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).

Omarchy System

Config Layering

~/.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:

  1. Omarchy defaults from ~/.local/share/omarchy/default/hypr/*.conf
  2. Theme config from ~/.config/omarchy/current/theme/hyprland.conf
  3. User overrides from ~/.config/hypr/*.conf (this repo)

Theme System (omarchy-theme-set)

  1. cp -r built-in theme (~/.local/share/omarchy/themes/<name>/) → current/next-theme/
  2. cp -r user theme (~/.config/omarchy/themes/<name>/) → current/next-theme/ (overwrites)
  3. Generate templated configs (.tpl + colors.toml) → current/next-theme/ (only if file doesn't exist)
  4. Atomic swap: current/next-theme/current/theme/
  5. 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).

Omarchy Commands

All start with omarchy-. Key prefixes: theme- (theme ops), restart- (restart component), refresh- (copy defaults), pkg- (packages), toggle- (feature toggles), cmd- (utilities).

Conventions for LLM Assistance

  • Dotfiles edits: Edit files in this repo. They are live via symlinks. Check the Makefile LINKS list to see what's symlinked where.
  • Theme edits: Edit in ~/Work/omarchy-theme-crystal/, then omarchy-theme-set crystal to 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.toml and config files are the source of truth.
  • Package installation: Use yay (handles both pacman and AUR).
  • Service management: systemctl --user for user units, sudo systemctl for system units.
  • NVIDIA troubleshooting: Check hypr/envs.conf for 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.