RazoBeckett/dotfiles
My dotfiles - Powered by Yadm & Ansible
๐ RazoBeckett's Dotfiles
My personal dotfiles managed with YADM and automated with Ansible
๐ Overview
This repository contains my personal configuration files (dotfiles) for various applications and tools I use in my development environment. These dotfiles are managed using YADM for easy synchronization across machines, with system bootstrapping automated through Ansible playbooks.
Note: This repository includes configurations for various programs and tools that I've experimented with over time. Not all configurations represent my current active setup - some are from tools I've tried and configured but may not actively use anymore.
๐ฅ๏ธ Current Setup
Primary Environment
- Terminal: Alacritty with custom keybindings for tmux integration
- Browser: Zen Browser as primary browser
- Window Manager: DWM (Custom Build) for X11 (switched to hyprland)
- Wayland Compositor: Hyprland for Wayland sessions
- Shell: ZSH with custom configuration and plugins
- Terminal Multiplexer: Tmux with custom keybindings and session management
Key Features
- Seamless Tmux Integration: Custom keybindings in Alacritty for effortless tmux usage
- Smart Session Management: Using sesh for quick tmux session switching
- Fuzzy Finding: Extensive FZF integration for file navigation and command history
- Modern CLI Tools: Replacements for traditional UNIX tools (bat, eza, fd, ripgrep, etc.)
๐ ๏ธ What's Included
Shell Configuration
- ZSH (
.config/zsh/.zshrc): Custom shell with plugins, history, and completion - Bash (
.bashrc): Fallback shell configuration - Modular Shell Scripts (
.config/shellrc/): Shared configurations for aliases, functions, exports, and FZF tricks
Terminal Setup
- Alacritty (
.config/alacritty/): Main terminal with tmux-optimized keybindings - Ghostty (
.config/ghostty/): nice to have a terminal with image viewing capabilities - Tmux (
.config/tmux/): Terminal multiplexer with custom keybindings and appearance
Window Management
- Hyprland (
.config/hypr/): Wayland compositor with custom keybindings - DWM Config: Custom DWM build configurations
- Picom (
.config/picom/): X11 compositor for transparency and effects
Development Tools
- Starship (
.config/starship.toml): Modern, fast shell prompt - Sesh (
.config/sesh/): Tmux session manager with predefined sessions - Git Configuration: Version control setup and aliases
System Automation
- YADM Bootstrap (
.config/yadm/bootstrap): Automated setup script - Ansible Playbooks (
.config/yadm/ansible/): System configuration automation- Package installation for Arch Linux and Debian-based systems
- System security hardening
- User environment setup
๐ Installation
Prerequisites
Quick Setup
-
Install YADM:
# Arch Linux sudo pacman -S yadm # Ubuntu/Debian sudo apt install yadm # macOS brew install yadm
-
Clone and Setup:
yadm clone https://github.com/RazoBeckett/dotfiles.git yadm bootstrap
The bootstrap script will automatically:
- Install Ansible if not present
- Run the appropriate playbook for your system
- Install essential packages and tools
- Set up the development environment
Manual Installation (Without Bootstrap)
If you prefer to install manually or the bootstrap fails:
yadm clone https://github.com/RazoBeckett/dotfiles.git
# For Arch Linux users
cd ~/.config/yadm/ansible
ansible-playbook -K -i "localhost," -c local setup.yml
# Install individual components as neededโ๏ธ Configuration Highlights
Tmux Workflow
My tmux configuration is optimized for development workflow:
- Session Management: Quick switching with
seshandtmux-sessionizer - Custom Keybindings: Terminal-integrated keybindings for seamless usage
- Smart Splits: Automatic path preservation and intelligent sizing
- File Navigation: Integrated yazi file manager
ZSH Environment
- Plugin System: Autosuggestions, syntax highlighting, and fzf-tab
- Smart Completion: Enhanced tab completion with fuzzy matching
- History Management: Optimized history with deduplication
- Vi Mode: Vim-like editing with visual indicators
Development Environment
- Modern CLI Tools:
batinstead ofcatezainstead oflsfdinstead offindripgrepinstead ofgrepzoxideinstead ofcd
- Fuzzy Finding: FZF integration for files, commands, and directories
- Smart Navigation: Quick project switching with tmux-sessionizer
Editor Setup (external, not included)
- Neovim: Modern IDE-like experience with:
- Custom configuration from razobeckett/nvim
- LSP integration for code intelligence
- Plugin management and optimizations
- Custom keymaps and workflows
๐ Keeping Up-to-date
Managing Changes
# Check status
yadm status
# Add changes
yadm add .
# Commit changes
yadm commit -m "Update configuration"
# Push to repository
yadm push
# Pull changes on another machine
yadm pullUpdating System Packages
The Ansible playbooks can be re-run to update system packages:
cd ~/.config/yadm/ansible
ansible-playbook -K -i "localhost," -c local setup.yml๐ Notes
Bootstrap Status
Configuration Philosophy
- Modular Design: Configurations are split into logical modules for easy maintenance
- Cross-Platform: Support for Arch Linux, Debian-based systems, and macOS
- Experimental Configs: Some configurations are from tools I've experimented with - not all represent my current active setup
๐ Acknowledgments
Special thanks to the creators and maintainers of these amazing tools that make my workflow possible:
- Neovim - hyperextensible Vim-based text editor
- sesh - Fast tmux session manager
- tmux-sessionizer - Project-based tmux session creation (script by ThePrimeagen
- starship - Cross-shell prompt
- zoxide - Smarter cd command
- fzf - Command-line fuzzy finder
- direnv - Environment variable manager
- YADM - Yet Another Dotfiles Manager
- vim-tmux-navigator - Seamless navigation between vim and tmux
- tmux-sessionx - Enhanced tmux session management
- ghostty - fast, feature-rich, and cross-platform terminal emulator
And to the broader open-source community for inspiration and countless hours of development that make these tools possible.
๐ License
This project is open source and available under the UNLICENSE.
Feel free to explore, adapt, and make these configurations your own. Happy hacking! ๐

