Opinionated configuration bundles for development and daily use, managed with GNU Stow.
- Clone this repository into
~/dotfiles. - Restow the package you need, for example:
stow --target="$HOME" nvim stow --target="$HOME" hypr stow --target="$HOME" tmux stow --target="$HOME" sesh stow --target="$HOME" agents
- Use
stow --target="$HOME" --restow <package>after you make changes. - Run
stow --target="$HOME" --simulate <package>to preview symlink updates before applying them. - Capture new OpenCode skills with
agents/.bin/sync-agents-skillswhenever you install or edit anything under~/.agents. - Refresh user services with
systemctl --user daemon-reload, then enable xremap withsystemctl --user enable --now xremap.service. - Tail recent xremap logs with
journalctl --user -u xremap.service -b -n 200 --no-pagerto confirm it started cleanly.
Load user services so the bundled unit is picked up, then enable it for automatic startups:
systemctl --user daemon-reload
systemctl --user enable --now ssh-agent.servicePrepare the virtual input device that xremap relies on. Refer to the kernel documentation for uinput to understand the module, and note that the Arch Wiki discourages uaccess for input devices in favor of group-based rules.
Load uinput and keep it persistent across reboots:
lsmod | grep uinput || echo uinput | sudo tee /etc/modules-load.d/uinput.conf
sudo modprobe uinputApply udev rules that grant input group access:
sudo tee /etc/udev/rules.d/90-xremap-input.rules >/dev/null <<'EOF'
KERNEL=="uinput", MODE="0660", GROUP="input", OPTIONS+="static_node=uinput"
KERNEL=="event*", NAME="input/%k", MODE="0660", GROUP="input"
EOF
sudo udevadm control --reload-rules
sudo udevadm triggerAdd yourself to the input group, then log out and back in (or reboot) so the membership applies:
sudo usermod -aG input "$USER"agents: Mirrors~/.agentsskill definitions, lock metadata, and helper templates used by OpenCode agents.alacritty: Fast, cross-platform, OpenGL terminal emulator configuration.bash: Shell configuration with custom scripts for Docker, fonts, and tmux.bw: Helper scripts for Bitwarden, such asbw_add_sshkeys.ghostty: Ghostty terminal emulator configuration.git: Shared Git config, ignore patterns, commit message template, and custom commands.hypr: Hyprland compositor with custom bindings and settings.nvim: LazyVim-based Neovim configuration with language support for Rust, Ruby, TypeScript, and Python.opencode: OpenCode editor configuration and agent guidelines.sesh: tmux session templates consumed by thethelper and popup picker.ssh: SSH client configuration and service for managing ssh-agent.starship: Cross-shell prompt configuration.tmux: Multiplexer configuration, including theprefix+Tpopup bound tobash/.bin/t.xremap: Key remapping tool configuration.yazi: Terminal file manager configuration.
Follow the workflow, style rules, and validation steps outlined in AGENTS.md.