Skip to content

mike-aalyria/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ› οΈ mike-aalyria / dotfiles

Personal dotfiles for setting up and configuring development environments on Linux systems.

πŸš€ Quick Installation

curl -sSL https://raw.githubusercontent.com/mike-aalyria/dotfiles/main/bootstrap.sh | bash

πŸ“‹ Manual Installation

git clone https://github.com/mike-aalyria/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./install.sh

🎯 What's Included

Core Setup:

  • Bash as primary shell with advanced configuration
  • Modern command-line tools with automatic fallbacks to standard commands
  • Centralized alias management in .aliases
  • Centralized PATH management in .paths
  • Centralized package management in .packages
  • Environment setup in .profile

Enhanced Features:

  • Advanced history management (100k entries with timestamps)
  • Colorized prompt with git branch info
  • Modern alternatives to standard commands (exa, batcat, ripgrep, fzf)
  • Smart aliases that use enhanced tools when available, fall back to standard tools
  • Comprehensive aliases for git, system, and development
  • Robust PATH management for custom tools
  • Configurable package installation for Debian/Ubuntu systems

πŸ“‚ Repository Structure

~/.dotfiles/
β”œβ”€β”€ .bashrc          β†’ Primary shell configuration
β”œβ”€β”€ .profile         β†’ Login shell environment (PATH, locale)
β”œβ”€β”€ .aliases         β†’ Modern tool aliases (requires packages)
β”œβ”€β”€ .paths           β†’ Custom directories for PATH
β”œβ”€β”€ .packages        β†’ System packages to install
β”œβ”€β”€ install.sh       β†’ Installation and symlink script
β”œβ”€β”€ bootstrap.sh     β†’ Remote installation script
└── README.md        β†’ This file

πŸ”— File Purposes

File Purpose When It's Used
~/.profile Environment variables, PATH setup, locale Login shells
~/.bashrc Interactive shell config, prompt, history Interactive shells
~/.aliases Smart aliases with automatic fallbacks Sourced by .bashrc
~/.paths Custom PATH directories Processed by .profile
~/.packages System packages to install Read by install.sh

βš™οΈ Key Features

Modern Command Replacements

Smart aliases that prefer modern tools but fall back gracefully:

Standard Command Modern Tool What You Get
ls exa Colors, icons, directory grouping
cat batcat Syntax highlighting, line numbers
grep ripgrep Much faster searching
fd fdfind Simpler syntax, faster results (find unchanged for compatibility)
tree exa --tree Better formatting

Note: These aliases automatically detect and use modern tools when available. If tools aren't installed, they fall back to standard commands. Run ./install.sh to install modern tools for the best experience.

Package Management

Required packages are defined in .packages:

# === IMPROVED COMMAND LINE TOOLS ===
ripgrep          # rg - much faster grep alternative
fd-find          # fdfind - better find command
fzf              # fuzzy finder for files/history/commands
bat              # better cat with syntax highlighting
exa              # modern ls replacement with colors/icons

# === DEVELOPMENT TOOLS ===
tldr             # simplified man pages
jq               # JSON processor

PATH Management

Add custom directories to your PATH by editing ~/.paths:

# Add to ~/.paths
$HOME/my-tools
$HOME/.local/bin/custom

Aliases

Comprehensive aliases organized by category:

Navigation & Files:

  • .., ..., .... - Navigate up directories
  • ll, la, l - Directory listings with exa
  • dsize - Show directory sizes sorted by size
  • tree - Directory tree with exa

Enhanced Commands:

  • cat, less, more - File viewing with batcat (fallback to standard)
  • grep - Searching with ripgrep (fallback to grep)
  • fgrep, egrep - Preserved standard semantics
  • fd - Modern file finding (find unchanged for script compatibility)

Git Workflow:

  • gs, ga, gc, gp, gl - Git status, add, commit, push, pull
  • glog - Beautiful git log with graph

Development:

  • fe - Fuzzy find and edit files
  • fh - Fuzzy search command history
  • bashrc, aliases, profile - Quick edit config files

System & Network:

  • df, du, free - Human-readable system info
  • myip, localip - Get IP addresses
  • psg - Search processes

Git Integration

  • Git branch shown in prompt
  • Comprehensive git aliases
  • Colored output

Fuzzy Finding

Powerful fuzzy finding with fzf:

fe           # Fuzzy find and edit files
fh           # Fuzzy search command history

πŸ–₯️ System Requirements

  • Linux (Debian/Ubuntu tested)
  • Bash 4.0+
  • Modern CLI tools (installed automatically via .packages)

πŸ”„ Scripts Explained

bootstrap.sh

  • Purpose: Remote installation from GitHub
  • Use case: Setting up new machines
  • What it does: Clones repo and runs install.sh

install.sh

  • Purpose: Local installation and configuration
  • Use case: Initial setup or updates
  • What it does:
    • Reads and installs packages from .packages
    • Creates symlinks for all dotfiles
    • Sets up directories

πŸ”§ Usage

Initial Setup

# Run bootstrap for new machines
curl -sSL https://raw.githubusercontent.com/mike-aalyria/dotfiles/main/bootstrap.sh | bash

# Or clone and install manually
git clone https://github.com/mike-aalyria/dotfiles.git ~/.dotfiles
cd ~/.dotfiles && ./install.sh

Managing Packages

# Edit package list
nano ~/.packages

# Add/remove packages as needed
# Uncomment optional tools you want
# Comment out tools you don't need

# Reinstall packages
cd ~/.dotfiles && ./install.sh

Adding Custom Paths

echo '$HOME/my-tools' >> ~/.paths
source ~/.profile

Adding Custom Aliases

echo "alias myalias='my command'" >> ~/.aliases
source ~/.bashrc

Updating

cd ~/.dotfiles
git pull
./install.sh

🎨 Command Examples

After installation, commands use modern tools:

# Enhanced file listing
ls              # Uses exa with colors and grouping
ll              # Detailed listing with exa
tree            # Directory tree with exa

# Better file viewing
cat file.txt    # Syntax highlighting with bat
less file.txt   # Paged viewing with bat

# Faster searching
grep "term" *   # Uses ripgrep if available, otherwise standard grep
fd "*.txt"      # Uses fd/fdfind for better syntax (find still works normally)

# Fuzzy finding
fe              # Fuzzy find and edit files
fh              # Fuzzy search command history

# Utility shortcuts
dsize           # Directory sizes sorted
myip            # Your external IP
psg firefox     # Search for firefox processes

⚠️ Important Notes

  • Smart fallbacks: Aliases automatically use modern tools when available, standard tools otherwise
  • Script compatibility: Standard commands like find, cat, grep work normally in scripts
  • Best experience: Run ./install.sh to install modern tools for enhanced features
  • Editor preference: VSCode preferred if available, nano as fallback

πŸ›‘οΈ License

MIT License

πŸ’¬ Contact

Maintained by Mike Aalyria

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages