A cross-platform dotfiles repository for Linux and Windows, featuring centralized configuration management and shared AI assistant instructions.
Linux installation targets are defined in config/targets.manifest. The installer supports different scopes (linux, shared, ai) and groups (core, niri, utilities, config, ai).
# Full installation
./install.sh
# View available options and targets
./install.sh --help
# Advanced usage examples
./install.sh --dry-run
./install.sh --no-install
./install.sh --skip-kitty
./install.sh --only-neovimSystem-level Linux fixes that write to /etc are tracked separately under Linux-system/ and are not part of the regular install.sh symlink flow.
bash ./scripts/install-udev-rules.sh# Full installation
nu install.nu
# Advanced usage examples
nu install.nu --dry-run
nu install.nu --skip [wezterm]
nu install.nu --only [nvim lazygit]This repository centralizes AI instructions so multiple tools share the same context. AI-Supporter/AGENTS.md is the core shared instructions file. Shared skills are located in AI-Supporter/SKILLS/.
AI-Supporter/
├── AGENTS.md
├── SKILLS/
│ └── no-comments/
│ └── SKILL.md
├── Claude Code/
│ ├── CLAUDE.md
│ ├── hooks/
│ └── settings.json
├── Codex/
│ └── config.toml
├── Gemini CLI/
│ └── GEMINI.md
During installation, these files are linked to the appropriate locations for each tool:
| AI Tool | Source | Target Path |
|---|---|---|
| Claude Code | Claude Code/CLAUDE.md |
~/.claude/CLAUDE.md |
| Claude Code | Claude Code/settings.json |
~/.claude/settings.json |
| Claude Code | Claude Code/hooks/ |
~/.claude/hooks |
| Claude Code | SKILLS/ |
~/.claude/skills |
| Gemini CLI | Gemini CLI/GEMINI.md |
~/.gemini/GEMINI.md |
| Codex | AGENTS.md |
~/.codex/AGENTS.md |
| Codex | SKILLS/ |
~/.codex/skills |
| OpenCode | AGENTS.md |
~/.config/opencode/AGENTS.md |
| OpenCode | SKILLS/ |
~/.config/opencode/skills |
Linux configuration sources live primarily under the Linux-config/ directory.
- Non-XDG files (e.g.,
.profile) remain at the repository root. ~/.local/sharetargets live underLinux-local-share/.- System-level files that target paths such as
/etc/udev/rules.dlive underLinux-system/. - App-managed state files that frequently rewrite themselves (e.g.,
waypaper/config.ini,fcitx5runtime state) are intentionally unmanaged to avoid repository drift.
View Linux Configuration Paths
| Tool | Target Path |
|---|---|
| niri | ~/.config/niri/config.kdl |
| kitty | ~/.config/kitty |
| ghostty | ~/.config/ghostty |
| autostart | ~/.config/autostart |
| fcitx5 | ~/.config/fcitx5 |
| fish | ~/.config/fish |
| neovim | ~/.config/nvim |
| zed | ~/.config/zed |
| yazi | ~/.config/yazi |
| lazygit | ~/.config/lazygit |
| tock | ~/.config/tock |
| zellij | ~/.config/zellij |
| systemd-user | ~/.config/systemd/user |
| waybar | ~/.config/waybar |
| mako | ~/.config/mako |
| vicinae | ~/.config/vicinae |
| pcmanfm-qt | ~/.config/pcmanfm-qt |
| hyprlock | ~/.config/hypr |
| zathura | ~/.config/zathura |
| easyeffects | ~/.config/easyeffects |
| mpv | ~/.config/mpv |
| pipewire | ~/.config/pipewire |
| qt6ct | ~/.config/qt6ct |
| qt6ct-env | ~/.config/environment.d/qt6ct.conf |
| mimeapps | ~/.config/mimeapps.list |
| niri-mimeapps | ~/.config/niri-mimeapps.list |
| satty-config | ~/.config/satty |
| wireplumber | ~/.config/wireplumber |
| xdg-terminals | ~/.config/xdg-terminals.list |
| xdg-desktop-portal | ~/.config/xdg-desktop-portal |
| niri-xdg-terminals | ~/.config/niri-xdg-terminals.list |
| user-dirs | ~/.config/user-dirs.dirs |
| user-dirs-locale | ~/.config/user-dirs.locale |
| profile | ~/.profile |
| kitty-desktop | ~/.local/share/applications/kitty.desktop |
| gitconfig | ~/.gitconfig |
Windows terminal, wezterm, nushell, neovim, yazi, and lazygit configurations are supported.
View Windows Configuration Paths
| Tool | Target Path |
|---|---|
| windows terminal | %SCOOP%\apps\windows-terminal\current\settings\settings.json |
| powershell | %USERPROFILE%\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 |
| wezterm | %USERPROFILE%\.config\wezterm |
| nushell | %APPDATA%\nushell |
| neovim | %LOCALAPPDATA%\nvim |
| yazi | %APPDATA%\yazi\config |
| lazygit | %LOCALAPPDATA%\lazygit |