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

3 KiB

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

# 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:

  • ~/.zshrczsh/.zshrc
  • ~/.p10k.zshzsh/.p10k.zsh
  • ~/.oh-my-zsh/custom/themes/*.zsh-themezsh/custom/themes/
  • ~/.wezterm.luawezterm/wezterm.lua
  • ~/.config/nvimnvim/

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 defaulty/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