dotfiles/CLAUDE.md
Mats Ricardo Nomedal a11473e308 initial dotfiles
2026-04-23 23:48:01 +02:00

88 lines
3 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Overview
Dotfiles repo managing configs for WezTerm, Neovim, and Zsh (oh-my-zsh + p10k) with symlinks. Cross-platform: EndeavourOS (primary desktop) and Windows.
## Structure
```
dotfiles/
├── zsh/
│ ├── .zshrc # Zsh config (oh-my-zsh, p10k, aliases, plugins)
│ ├── .p10k.zsh # Powerlevel10k prompt config
│ └── custom/themes/ # Custom bira-nerd themes
├── wezterm/
│ └── wezterm.lua # WezTerm config (CovenantUI color scheme, JetBrainsMono Nerd Font)
├── nvim/ # Neovim config (lazy.nvim, IDE-like setup)
│ ├── init.lua
│ └── lua/
│ ├── options.lua
│ ├── keymaps.lua
│ └── plugins/
│ ├── colorscheme.lua # catppuccin mocha
│ ├── ui.lua # lualine, bufferline, indent-blankline
│ ├── explorer.lua # neo-tree (<leader>e)
│ ├── telescope.lua # fuzzy finder (<leader>ff/fg/fb/fr)
│ ├── treesitter.lua # syntax highlighting
│ ├── lsp.lua # mason + lspconfig + nvim-cmp (bash, python, C#)
│ └── editor.lua # autopairs, which-key, gitsigns
├── bootstrap.sh # Linux setup script
└── bootstrap.ps1 # Windows setup script (requires admin)
```
## Bootstrap / Setup
```bash
# Linux — installs oh-my-zsh, powerlevel10k, zsh plugins, then symlinks everything
bash bootstrap.sh
# Windows (PowerShell, run as Administrator)
.\bootstrap.ps1
```
On Linux, symlinks are created:
- `~/.zshrc``zsh/.zshrc`
- `~/.p10k.zsh``zsh/.p10k.zsh`
- `~/.oh-my-zsh/custom/themes/*.zsh-theme``zsh/custom/themes/`
- `~/.wezterm.lua``wezterm/wezterm.lua`
- `~/.config/nvim``nvim/`
Neovim plugins install automatically on first `nvim` launch (lazy.nvim bootstraps itself).
## Key Conventions
- **No dotfile managers** — symlinks only, managed by bootstrap scripts.
- **OS detection in configs**, not in bootstrap:
- WezTerm: `wezterm.target_triple`
- Neovim: `vim.loop.os_uname()`
- **System clipboard by default** — `y`/`p` in Neovim use the OS clipboard (`unnamedplus`).
- **Space as leader key** in Neovim.
## Neovim Key Mappings
| Key | Action |
|-----|--------|
| `<leader>e` | Toggle file tree |
| `<leader>o` | Reveal current file in tree |
| `<leader>ff` | Find files |
| `<leader>fg` | Search text in project |
| `<leader>fb` | Switch open buffers |
| `<leader>fr` | Recent files |
| `<S-l>` / `<S-h>` | Next / prev buffer |
| `<leader>x` | Close buffer |
| `K` | Hover LSP docs |
| `gd` | Go to definition |
| `<leader>rn` | Rename symbol |
| `<leader>ca` | Code actions |
| `<leader>d` | Line diagnostics |
| `jk` | Exit insert mode |
## Zsh Plugins (installed by bootstrap.sh)
- `zsh-autosuggestions`
- `zsh-syntax-highlighting`
- `zsh-completions`
- `fast-syntax-highlighting`