My personal dotfiles managed with YADM and automated with Ansible
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.
- Terminal: Alacritty with custom keybindings for tmux integration
- Browser: Zen Browser as primary browser
- Window Manager: DWM (Custom Build) for X11
- Wayland Compositor: Hyprland for Wayland sessions
- Shell: ZSH with custom configuration and plugins
- Terminal Multiplexer: Tmux with custom keybindings and session management
- 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.)
- 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
- Alacritty (
.config/alacritty/
): Main terminal with tmux-optimized keybindings - Kitty (
.config/kitty/
): Alternative terminal configuration - WezTerm (
.config/wezterm/
): Lua-based terminal configuration - Tmux (
.config/tmux/
): Terminal multiplexer with custom keybindings and appearance
- DWM Config: Custom DWM build configurations
- Hyprland (
.config/hypr/
): Wayland compositor with custom keybindings - Picom (
.config/picom/
): X11 compositor for transparency and effects
- Starship (
.config/starship.toml
): Modern, fast shell prompt - Sesh (
.config/sesh/
): Tmux session manager with predefined sessions - Git Configuration: Version control setup and aliases
- 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
-
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
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
My tmux configuration is optimized for development workflow:
- Session Management: Quick switching with
sesh
andtmux-sessionizer
- Custom Keybindings: Terminal-integrated keybindings for seamless usage
- Smart Splits: Automatic path preservation and intelligent sizing
- File Navigation: Integrated yazi file manager
- 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
- Modern CLI Tools:
bat
instead ofcat
eza
instead ofls
fd
instead offind
ripgrep
instead ofgrep
zoxide
instead ofcd
- Fuzzy Finding: FZF integration for files, commands, and directories
- Smart Navigation: Quick project switching with tmux-sessionizer
- Neovim: Modern IDE-like experience with:
- Custom configuration from razobeckett/nvim
- LSP integration for code intelligence
- Plugin management and optimizations
- Custom keymaps and workflows
# 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 pull
The Ansible playbooks can be re-run to update system packages:
cd ~/.config/yadm/ansible
ansible-playbook -K -i "localhost," -c local setup.yml
- 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
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
And to the broader open-source community for inspiration and countless hours of development that make these tools possible.
This project is open source and available under the UNLICENSE.
Feel free to explore, adapt, and make these configurations your own. Happy hacking! π