Project to keep track of my dotfiles modifictations
Find a file
2025-12-11 11:29:46 +01:00
packages Again, improving some minor problems with autocomplete 2025-12-11 11:29:46 +01:00
.gitignore Capture and general configuration of exocortex has been improved. 2020-10-03 14:49:16 +02:00
.luarc.json First pass of simplification for the kickstart.nvim 2023-11-25 21:35:57 +01:00
AGENTS.md Reorganize Claude Code configuration to root level and add coding-agent package 2025-07-19 14:47:41 +02:00
dotfiles.rb Add package uninstall functionality with --uninstall flag 2025-07-19 15:12:00 +02:00
LICENSE Add LICENSE 2023-03-29 19:29:26 +00:00
README.md Restore clean package name usage and update documentation 2025-07-19 15:08:37 +02:00

ericst's dotfiles

A Ruby-based dotfiles management system that creates symlinks from configuration files in this repository to their expected locations in your home directory.

Prerequisites

  • Ruby (any recent version)
  • Unix-like system (Linux, macOS)
  • Write permissions to your home directory

Quick Start

# Install essential shell configuration
./dotfiles.rb essential

# Install multiple packages
./dotfiles.rb git nvim essential

# Force installation (overwrite existing files)
./dotfiles.rb -f essential

# Get help
./dotfiles.rb -h

Available Packages

essential

Core shell configuration including:

  • bashrc - Enhanced bash configuration with better history, safety aliases, and navigation helpers
  • inputrc - Readline configuration for improved command-line editing
  • bashrc.d/ - Modular bash configuration directory with toolbox support

git

Git configuration:

  • gitconfig - Global git settings and aliases

nvim

Neovim configuration with Lua:

  • init.lua - Main Neovim entry point
  • lua/ericst/ - Custom Lua configuration modules
  • snippets/ - Custom code snippets for various languages
  • Includes plugin management via lazy.nvim

ghostty

Ghostty terminal emulator configuration:

  • config - Main Ghostty configuration
  • Desktop entries - Application launchers for regular and workbox modes

wezterm

WezTerm terminal emulator configuration:

  • wezterm.lua - Complete WezTerm configuration

coding-agent

AI coding assistant configuration:

  • CLAUDE.md - Claude Code configuration and guidelines
  • AGENTS.md - OpenCode agent configuration

Usage Examples

Basic Installation

# Install just the essentials
./dotfiles.rb essential

# Add git configuration
./dotfiles.rb git

# Set up complete development environment
./dotfiles.rb essential git nvim

Advanced Usage

# Force overwrite existing configurations
./dotfiles.rb -f nvim

# Preview changes without executing
./dotfiles.rb --dry-run essential

# Check what's installed
./dotfiles.rb --status

# List available packages
./dotfiles.rb --list

# Install with automatic yes to prompts
./dotfiles.rb -f -y essential

# Install everything
./dotfiles.rb essential git nvim ghostty wezterm coding-agent

Command Line Options

  • -f, --force - Force installation, overwriting existing files
  • -l, --list - List available packages with descriptions
  • -s, --status - Show installation status of all packages
  • -n, --dry-run - Preview changes without executing them
  • -y, --yes - Automatically answer yes to all prompts (for automation)
  • -h, --help - Show help message

How It Works

The system uses Ruby scripts to create symlinks from files in this repository to their target locations:

  1. Each package is a directory under packages/
  2. Each package contains an install.rb script that defines what to link
  3. The main dotfiles.rb script processes packages and creates symlinks
  4. Existing files are protected unless --force is used
  • link(source, target) - Create a single symlink
  • link_files_recursively(source_dir, target_dir) - Recursively link all files in a directory

Troubleshooting

Permission Denied

# Make sure the script is executable
chmod +x dotfiles.rb

File Already Exists

# Use force mode to overwrite
./dotfiles.rb -f package_name

# Or manually remove the conflicting file
rm ~/.bashrc
./dotfiles.rb essential

Package Not Found

# List available packages
./dotfiles.rb --list

# Check installation status
./dotfiles.rb --status

# Make sure you're in the dotfiles directory
cd /path/to/dotfiles
./dotfiles.rb package_name

Inspiration

This system was inspired by:

The goal was to create a simple, local script without external gem dependencies.