Skip to content

Dotfiles - Development Environment

Dotfiles

A curated development environment - This repository contains configuration files for various development tools, shells, editors, and productivity applications, managed using GNU Stow for clean organization.

Overview

The dotfiles repository serves as a:

  • Development Environment backup and synchronization
  • Productivity Tool configuration collection
  • Learning Platform for tool customization
  • Template System for setting up new machines

Management Strategy

GNU Stow Approach

The repository uses GNU Stow for symlink management:

  • Clean Organization: Files organized by application/tool
  • Selective Installation: Install only what you need
  • Conflict Prevention: Easy to see what will be overwritten
  • Version Control: Full git history of configuration changes

Installation

Terminal window
# Clone repository
git clone https://codeberg.org/RyanParsley/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
# Install all configurations
stow .
# Or install selectively
stow nvim # Neovim configuration only
stow nushell # Nushell configuration only
stow tmux # Tmux configuration only

Core Components

Shell Environments

Nushell

Modern shell with structured data and powerful scripting

Zsh

Extended Bourne shell with plugins and customization

Bash

Standard shell with enhanced configuration

Development Tools

Neovim

Modal text editor with extensive plugin ecosystem

tmux

Terminal multiplexer for session management

Git

Version control with custom aliases and configuration

Ghostty

Modern terminal emulator configuration

Productivity Applications

Yazi

Terminal file manager with vim-like navigation

Amethyst

Tiling window manager for macOS

nb

Command-line note-taking application

Configuration Highlights

Nushell Configuration

Terminal window
# Modern shell with structured data support
# Custom prompt, aliases, and environment variables
# Plugin system for extended functionality

Neovim Setup

-- Modal editing with extensive plugin ecosystem
-- LSP integration for multiple languages
-- Custom keybindings and workflow optimizations
-- AI assistance integration (Avante plugin)

tmux Configuration

Terminal window
# Terminal multiplexing with custom layouts
# Session management and persistence
# Integration with system clipboard
# Custom status bar and keybindings

Tool Ecosystem

Language Version Management

Terminal window
# .tool-versions (mise/asdf compatible)
nodejs 20.10.0
python 3.11.6
rust 1.74.0

Development Workflow

  • mise: Polyglot runtime manager
  • fzf: Fuzzy finder for command-line tools
  • ripgrep: Fast text search tool
  • fd: Modern find replacement
  • bat: Enhanced cat with syntax highlighting

Platform Considerations

macOS Specific

Terminal window
# Homebrew path differences (Intel vs Apple Silicon)
# Application Support directory symlinks
# System integration considerations

Cross-Platform Compatibility

  • Shell Scripts: POSIX compliant where possible
  • Configuration Files: Platform-agnostic defaults
  • Conditional Logic: Platform detection in scripts

Key Configurations

Git Configuration

[user]
name = Ryan Parsley
email = ryan@example.com
[alias]
co = checkout
ci = commit
st = status
br = branch
lg = log --oneline --graph --decorate
[core]
editor = nvim
excludesfile = ~/.gitignore_global

Nushell Environment

Terminal window
# Custom PATH and environment variables
# Shell aliases and functions
# Plugin configurations
# Custom prompt and themes

Neovim Key Features

  • Plugin Management: Lazy loading system
  • LSP Integration: Language server protocol support
  • AI Assistance: Avante plugin for LLM integration
  • Custom Mappings: Optimized keybindings
  • Theme Configuration: Consistent color schemes

Installation Guide

Prerequisites

Terminal window
# Install GNU Stow
brew install stow # macOS
apt install stow # Ubuntu/Debian
# Install required tools
brew install nushell neovim tmux git fzf yazi

Step-by-Step Setup

  1. Clone Repository

    Terminal window
    git clone https://codeberg.org/RyanParsley/dotfiles.git ~/.dotfiles
    cd ~/.dotfiles
  2. Backup Existing Files

    Terminal window
    # Backup any existing configurations
    mkdir ~/dotfiles_backup
    cp ~/.bashrc ~/dotfiles_backup/
    cp ~/.zshrc ~/dotfiles_backup/
    # ... backup other files as needed
  3. Install Configurations

    Terminal window
    # Install all configurations
    stow .
    # Or install selectively
    stow nushell nvim tmux git
  4. Platform-Specific Setup

    Terminal window
    # macOS: Create Nushell symlink
    ln -s ~/.dotfiles/.config/nushell/* "$HOME/Library/Application Support/nushell/"
    # Install fzf integration
    /opt/homebrew/opt/fzf/install

Customization Philosophy

Modular Design

  • Application-Specific: Each tool has its own directory
  • Independent Installation: Mix and match configurations
  • Easy Maintenance: Update individual tools without affecting others

Learning Approach

  • Progressive Enhancement: Start simple, add complexity as needed
  • Documentation First: Well-commented configurations
  • Version Control: Track configuration evolution

Best Practices

  • Idempotent Operations: Scripts can be run multiple times safely
  • Error Handling: Graceful degradation when tools aren’t available
  • Performance: Lazy loading and efficient plugin management

Troubleshooting

Common Issues

Stow Conflicts

Terminal window
# Check what would be overwritten
stow --no --verbose nvim
# Remove conflicting files
rm ~/.config/nvim/init.lua
stow nvim

Platform Differences

Terminal window
# Check platform-specific files
ls -la ~/.dotfiles/*/platform/
# Install platform-specific configurations
stow macos/ # For macOS
stow linux/ # For Linux

Permission Issues

Terminal window
# Fix permission problems
chmod +x ~/.dotfiles/.bin/*
chown -R $USER ~/.dotfiles

Contributing

Adding New Configurations

  1. Create Tool Directory

    Terminal window
    mkdir ~/.dotfiles/newtool
    cd ~/.dotfiles/newtool
  2. Add Configuration Files

    Terminal window
    # Copy from home directory or create new
    cp ~/.config/newtool/config ~/.dotfiles/newtool/.config
  3. Test Installation

    Terminal window
    stow --no newtool # Dry run
    stow newtool # Install

Best Practices for Contributors

  • Document Changes: Update README with new tools
  • Platform Testing: Test on multiple platforms when possible
  • Version Pinning: Specify tool versions where relevant
  • Security Review: Check for sensitive data in configurations

Future Enhancements

Planned Improvements

  • Automated Setup: Installation scripts for new machines
  • Configuration Testing: Automated validation of configurations
  • Backup Integration: Automatic backup of existing configurations
  • Profile Management: Multiple configuration profiles
  • Documentation Generation: Auto-generated setup guides

Tool Integration

  • Additional Editors: VS Code, Emacs configurations
  • Cloud Services: Integration with development platforms
  • Container Support: Docker and development containers
  • Remote Development: SSH and remote machine configurations

View on Codeberg | Installation Guide