Personal development environment for Arch Linux with Omarchy (Hyprland)
A complete dotfiles setup managed with GNU Stow, themed with Catppuccin Mocha across the entire stack:
- Shell: Fish + Starship prompt + Atuin history
- Editor: NeoVim (LazyVim)
- Terminal: Ghostty
- Multiplexer: Tmux + Tmuxinator
- File manager: Yazi
- Window manager: Hyprland (via Omarchy)
- Dev infra: Docker-based Odoo development environment
| Package | Description |
|---|---|
atuin |
Shell history sync and search |
catppuccin |
Catppuccin Mocha theme files (eza, fzf, lazygit) |
discord |
Discord desktop settings |
fish |
Fish shell config, custom functions (co, oe, osh, ide), completions |
ghostty |
Ghostty terminal (Catppuccin Mocha, JetBrains Mono, transparency) |
git |
Git config and global gitignore (Odoo workflow aliases, split-diffs pager) |
hypr |
Hyprland WM overrides (keybindings, input, lock screen, mic mute fix) |
klog |
klog time-tracking helper scripts (waybar clock-in/out, 7h36/day) |
nvim |
NeoVim with LazyVim (LSP, DAP Python, Claude Code, Diffview, git permalink) |
starship |
Starship prompt with Catppuccin Mocha palette |
tmux |
Tmux config (C-s prefix, vim-tmux-navigator, Catppuccin) |
tmuxinator |
Tmuxinator layout for Odoo development |
waybar |
Waybar status bar (omarchy overrides, klog time-tracking module) |
yazi |
Yazi file manager with Catppuccin Mocha flavor and git plugin |
Arch Linux with Omarchy desktop environment.
Required packages:
stow fish neovim ghostty tmux starship yazi atuin zoxide eza fzf
ripgrep fd git-split-diffs lazygit tig docker lazydocker
git clone <repo-url> ~/src/dev-config
cd ~/src/dev-config/dotfiles
# Stow all packages
stow -v --target=$HOME atuin catppuccin discord fish ghostty git hypr klog nvim starship tmux tmuxinator waybar yazi
# Or stow individually
stow -v --target=$HOME nvimNote: Stow creates symlinks. Existing files will cause conflicts — use
stow --adoptto pull existing files into the repo first.
# Store Gemini API key in GNOME Keyring (used by NeoVim CodeCompanion)
secret-tool store --label="Gemini API Key" unique "gemini-api-key"
# Install Yazi Catppuccin flavor
ya pkg add yazi-rs/flavors:catppuccin-mocha
# Install Tmux plugins (inside tmux, press prefix + I)cd /path/to/odoo
git remote add dev git@github.com:odoo-dev/odoo.git
git remote set-url --push origin you_should_not_push_on_this_repository
cd /path/to/enterprise
git remote add dev git@github.com:odoo-dev/enterprise.git
git remote set-url --push origin you_should_not_push_on_this_repository
cd /path/to/design-themes
git remote add dev git@github.com:odoo-dev/design-themes.git
git remote set-url --push origin you_should_not_push_on_this_repositoryThe dockerFiles/ directory contains:
docker-compose.yml— PostgreSQL + Nginx (global services)nginx.conf— Reverse proxy for Odoo containersimages/— Dockerfiles for multiple distros (bookworm, jammy, noble, trixie) with VNC variants
Odoo containers are created dynamically by the oe fish function, not by docker-compose.
oe— Launch Odoo in Docker with various options (enterprise, debug, shell, tests, upgrade)osh— Restore Odoo SH database dumps (zip/gzip)co— Git checkout helper for Odoo brancheside— Launch tmuxinator Odoo layout
fix_ssh_passphrase.sh— Store SSH key passphrase in GNOME Keyring for auto-unlocksetup_mute_fix.sh— Sync ThinkPad mic mute LED with actual mute state (Hyprland)
Work hours are tracked with klog (yay -S klog-time-tracker-bin) and surfaced in waybar:
- Log file:
~/klog/work.klg(plain text,klog bookmarks set ~/klog/work.klg default) - Target: 7h36/day on weekdays — auto-applied on first clock-in of the day via
--should 7h36m - Clicking the waybar module: left-click toggles start/stop, right-click opens the log in NeoVim
- Display: just the current day's tracked time; tooltip shows
Today: X:XX / 7:36 (diff ±H:MM)and rollingBank: ±H:MMacross all records - Scripts:
~/.config/klog/klog-toggle(clock in/out, signals waybar viaSIGRTMIN+11) and~/.config/klog/klog-waybar(JSON output)
This repo tracks personal overrides on top of Omarchy's default configs. The hypr stow package contains only files with custom modifications:
bindings.conf— Custom keybindings (tmux, opencode, mic mute fix with LED sync)input.conf— US altgr-intl keyboard, natural scroll, custom repeat ratehyprlock.conf— Fingerprint unlock, custom placeholder
Files identical to Omarchy defaults (autostart, hypridle, hyprsunset, xdph) are not tracked — Omarchy manages them. monitors.conf is machine-specific and must be created manually per device.
Capslock remap to Control (held) / Esc (pressed): see omarchy#1383
