dotfiles/.github/copilot-instructions.md
Martin Büchler 7d13e6ff1c chore: initial commit of all dotfiles, configs, and setup scripts
Includes modular setup, device profile support, and documentation.

🤖 Generated with [opencode](https://opencode.ai)

Co-Authored-By: opencode <noreply@opencode.ai>
2025-08-07 23:05:28 +02:00

47 lines
2.7 KiB
Markdown

# 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 use `pacman` or other helpers.
- Dotfiles and app configs are version-controlled in the repo root and `.config/` directory, then symlinked to `$HOME` and `$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 in `modules/` in sorted order.
- Each module script is responsible for a single concern (e.g., `01-packages.sh` for package install, `05-hyprland.sh` for 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 uses `includes/` for config fragments).
## Key Conventions
- Always add new packages to the appropriate module script (e.g., Hyprland-related to `05-hyprland.sh`, sound to `06-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 `paru` for package installation.
## Examples
- To add a new app config (e.g., for `kitty`):
1. Place config files in `.config/kitty/` in the repo.
2. The symlink module will link them to `$HOME/.config/kitty` on setup.
- To add a new package:
1. Edit the appropriate `modules/XX-*.sh` script and add the package to the array.
2. Re-run `setup.sh`.
- To add a new setup step:
1. Create `modules/07-myfeature.sh` and make it executable.
2. It will be picked up automatically by `setup.sh`.
## 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 `$HOME` and relative repo paths.
- Avoid duplicating logic between modules; each should have a single responsibility.
## See Also
- `README.md` for user-facing setup and customization instructions.
- `modules/` for all setup logic.
- `.config/` for all app configs.