Files
dotfiles/GEMINI.md
s0wlz (Matthias Puchstein) a392bdc1fc docs: document external docs submodules and update ignore list
Document the external docs layout under dot_local/share/docs in AGENTS and
  GEMINI, and drop outdated references to the old hyprland/waybar wiki mirrors.
  Remove the ignore entries for the previous wiki paths from .chezmoiignore.

  hypr: switch hyprpaper template to wallpaper blocks

  Replace preload generation with explicit wallpaper blocks per monitor.

  waybar: always include custom/alhp module

  Remove the hostname guard so the module is present on all hosts.
2025-12-31 02:53:47 +01:00

77 lines
4.1 KiB
Markdown

# Project Overview
This is a **chezmoi** source directory used for managing user configuration files (dotfiles) on a Linux system. It centralizes the configuration for the shell, window manager, editor, and other utilities, allowing for consistent setups across multiple machines (referenced by hostname tags like `owlenlap01`, `owlenpc00`).
## Key Components
* **Dotfile Manager:** [chezmoi](https://www.chezmoi.io/)
* **Window Manager:** [Hyprland](https://hyprland.org/) (Modular configuration)
* **Shell:** [Zsh](https://www.zsh.org/) managed with [Zim](https://zimfw.sh/) and themed with [Powerlevel10k](https://github.com/romkatv/powerlevel10k).
* **Editor:** [Neovim](https://neovim.io/) configured with Lua and [lazy.nvim](https://github.com/folke/lazy.nvim).
* **Status Bar:** [Waybar](https://github.com/Alexays/Waybar)
* **Terminal Emulators:** [Kitty](https://sw.kovidgoyal.net/kitty/), [Alacritty](https://alacritty.org/)
* **Other:** Tmux, Mpv, Dunst/SwayNC, Fuzzel/Rofi equivalent.
## Directory Structure
The directory structure follows standard `chezmoi` conventions:
* **`dot_config/`**: Maps to `~/.config/`. Contains the bulk of application configurations.
* **`hypr/`**: Hyprland configuration. `hyprland.conf` is the entry point, sourcing files from `hyprland.d/`. Host-specific overrides exist (e.g., `hyprpaper.conf##hostname.owlenlap01`).
* **`nvim/`**: Neovim configuration. `init.lua` bootstraps `lazy.nvim`.
* **`zsh/`**: Zsh configuration, including `dot_zshrc` (mapped to `~/.config/zsh/.zshrc`).
* **`waybar/`**: Waybar configuration and styles.
* **`dot_local/`**: Maps to `~/.local/`. Contains scripts and local data.
* **`dot_local/share/docs/`**: Local docs area populated by git submodules using the `external_` attribute (renders to `~/.local/share/docs/`).
* **`.chezmoiscripts/`**: Contains scripts that run when `chezmoi apply` is executed (e.g., `run_onchange_...`).
* **`dot_profile.tmpl`**: A template that renders to `~/.profile`, handling environment variables. It uses tags (e.g., `dev`, `desktop`) to conditionally include configurations.
## Documentation
* **Chezmoi docs:** `dot_local/share/docs/external_chezmoi-docs` (sparse checkout `assets/chezmoi.io`) renders to `~/.local/share/docs/chezmoi-docs`.
* **Hyprland wiki:** `dot_local/share/docs/external_hyprland.wiki` (sparse checkout `content`) renders to `~/.local/share/docs/hyprland.wiki`.
* **Waybar wiki:** `dot_local/share/docs/external_waybar.wiki` renders to `~/.local/share/docs/waybar.wiki`.
* **Waybar man pages:** Not stored in the repo; use `man 5 waybar` and `man 5 waybar-<module>`.
## Usage
This directory is the **source of truth**. Do not edit files directly in `~/.config` if they are managed here; your changes will be overwritten.
### Common Commands
* **Apply Changes:**
```bash
chezmoi apply
```
Renders templates and copies files to the target destination (usually `$HOME`).
* **Preview Changes:**
```bash
chezmoi diff
```
Shows what will change in the destination directory if `chezmoi apply` is run.
* **Edit a File:**
```bash
chezmoi edit <file_path>
```
Opens the source file for editing in your `$EDITOR`.
* **Check Status:**
```bash
chezmoi status
```
### Templates and Logic
Files ending in `.tmpl` are Go templates. They support logic based on `chezmoi` data.
* **Variables:** `{{ .chezmoi.homeDir }}` represents the user's home directory.
* **Tags:** Logic like `{{- if (index $tags "dev") }}` is used to enable features based on the machine's role (e.g., development tools, desktop-specific GPU settings).
## Development Conventions
* **Hyprland:** Keep configuration modular. Add new settings to the appropriate file in `dot_config/hypr/hyprland.d/` rather than cluttering `hyprland.conf`.
* **Neovim:** Configuration is split into `lazy_setup.lua` (plugins) and `polish.lua` (general settings).
* **Zsh:** Custom aliases should go in `dot_config/zsh/aliases.zsh`.
* **Naming:** Use `dot_` to represent a dot prefix (e.g., `dot_config` -> `.config`). Use `executable_` to mark files as executable.