Includes modular setup, device profile support, and documentation. 🤖 Generated with [opencode](https://opencode.ai) Co-Authored-By: opencode <noreply@opencode.ai>
2.7 KiB
2.7 KiB
Copilot Instructions for This Dotfiles Project
Project Overview
- This is a modular dotfiles and desktop setup for Arch Linux, focused on Wayland/Hyprland workflows.
- All package management is done with
paru(AUR helper). Do not usepacmanor other helpers. - Dotfiles and app configs are version-controlled in the repo root and
.config/directory, then symlinked to$HOMEand$HOME/.config. - The setup is fully modular: each major component (packages, symlinks, shell, Neovim, Hyprland, sound, etc.) is handled by its own script in
modules/.
Architecture & Workflow
- The main entrypoint is
setup.sh, which finds and runs all numbered scripts inmodules/in sorted order. - Each module script is responsible for a single concern (e.g.,
01-packages.shfor package install,05-hyprland.shfor Hyprland/Wayland packages, etc.). - The symlinking logic (
02-symlinks.sh) links all dotfiles (including.config/) from the repo to the home directory, so configs are always up to date and versioned. - App configs (Hyprland, Waybar, etc.) are stored in
.config/and should be modular and extensible (e.g., Hyprland usesincludes/for config fragments).
Key Conventions
- Always add new packages to the appropriate module script (e.g., Hyprland-related to
05-hyprland.sh, sound to06-sound.sh). - To add new dotfiles, place them in the repo root (for files like
.zshrc) or in.config/for app configs. - To add new setup logic, create a new numbered module in
modules/(e.g.,07-myfeature.sh). - All scripts must be idempotent and safe to re-run.
- Use only
parufor package installation.
Examples
- To add a new app config (e.g., for
kitty):- Place config files in
.config/kitty/in the repo. - The symlink module will link them to
$HOME/.config/kittyon setup.
- Place config files in
- To add a new package:
- Edit the appropriate
modules/XX-*.shscript and add the package to the array. - Re-run
setup.sh.
- Edit the appropriate
- To add a new setup step:
- Create
modules/07-myfeature.shand make it executable. - It will be picked up automatically by
setup.sh.
- Create
Integration Points
- Hyprland, Waybar, Rofi, Mako, Alacritty, wlogout, and sound are all integrated and configured via
.config/. - Neovim is set up with AstroNvim by default.
- Sound is managed with PipeWire, WirePlumber, and related tools.
Notable Patterns
- All configuration is declarative and modular. Avoid hardcoding paths; use
$HOMEand relative repo paths. - Avoid duplicating logic between modules; each should have a single responsibility.
See Also
README.mdfor user-facing setup and customization instructions.modules/for all setup logic..config/for all app configs.