This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a personal dotfiles repository containing configuration files and bootstrap scripts for GNU/Linux systems. Specifically this is made to work with Red Hat Enterprise Linux (RHEL), CentOS Stream, Fedora Linux, the debian (crostini) environment found on Chromebooks, and Termux the Android Linux userspace system.
The repository uses a symlink-based approach to manage dotfiles across the user's home directory.
bash ~/dotfiles/bootstrap.sh- Main bootstrap script that creates necessary directories and symlinks all dotfilesbash ~/dotfiles/bootstrap-workstation.sh- Workstation-specific setup (distribution-dependent)bash ~/dotfiles/bootstrap-container-dev.sh- Container development environment setupbash ~/dotfiles/bootstrap-devel.sh- Development tools installation
vimrc- Vim configuration with plugin management via vim-pluginit.lua- Neovim configuration (Lua-based, kickstart.nvim derivative)bashrc,bash_profile,profile- Shell configurationtmux.conf- Terminal multiplexer configurationgitconfig- Git configurationssh_config- SSH client configuration
The bootstrap system is built around a modular design:
-
bootstrap.sh - Main entry point that:
- Sources
bootstrap-lib.shfor shared functions - Creates necessary directories in
~/.config,~/.vim, etc. - Creates symlinks from dotfiles to their target locations
- Calls workstation-specific bootstrap script
- Sets appropriate file permissions (especially SSH config)
- Sources
-
bootstrap-lib.sh - Shared library providing:
- Error handling with strict mode (
set -euo pipefail) - Utility functions for directory creation, symlink management
- Package installation helpers
- Architecture detection for tool downloads
- Global arrays for tracking operations
- Error handling with strict mode (
-
Specialized bootstrap scripts:
bootstrap-workstation.sh- Distribution-specific setupbootstrap-container-dev.sh- Container development toolsbootstrap-devel.sh- General development environment
- Vim: Uses vim-plug for plugin management, includes plugins for Go, Rust, syntax highlighting, and code completion
- Neovim: Lua-based configuration derived from kickstart.nvim with custom keybindings and options
- Both editors share similar philosophy with relative line numbers, undo persistence, and development-focused plugins
- Modular shell configuration across
bashrc,bash_profile, andprofile - Integration with tmux for terminal multiplexing
- Custom completion and input handling via
inputrc
Configuration files are stored in repository root and symlinked to their target locations:
- Shell configs →
~/.*rc,~/.profile - Vim/Neovim →
~/.vimrc,~/.config/nvim/init.lua - Desktop environment →
~/.config/i3/,~/.config/dunst/ - Development tools →
~/.gitconfig,~/.ssh/config,~/.tmux.conf
When modifying dotfiles:
- Edit files directly in the repository
- Changes are immediately reflected due to symlink structure
- Use
git pullto update dotfiles across systems - Run appropriate bootstrap script if new files are added
The repository maintains compatibility across different Unix-like systems (Linux distributions, potentially macOS) through conditional logic in bootstrap scripts.