# Yadm Dotfiles Setup Notes ## Overview Successfully configured yadm (Yet Another Dotfiles Manager) to manage personal dotfiles while preserving Arch Linux system functionality. ## Setup Process ### 1. Initial Yadm Installation and Clone - ✅ Installed yadm: `pacman -S yadm` - ✅ Cloned personal dotfiles repository: `yadm clone git@gitlab.com:akrejczinger/dotfiles.git` - ✅ Created backup of existing dotfiles before merge: `~/dotfiles-backup/20250730_142945/` ### 2. Dotfiles Merge Strategy Rather than force-overwriting local files, manually merged each configuration file to preserve both: - **Arch Linux system functionality** (session management, package integration) - **Personal customizations** (themes, keybindings, development tools) ### 3. Files Successfully Merged #### Shell Configuration - **`.bashrc`**: Enhanced with yadm aliases, functions, and development tools - **`.bash_profile`**: Added poetry PATH export - **`.bash_logout`**: Replaced with yadm version (console clearing for privacy) - **`.zshrc`**: Comprehensive setup with vi-mode, custom functions, 293-line config - **`.profile`**: Merged X11/touchpad config with environment setup #### System Integration - **`.xinitrc`**: Combined Arch session management with colemak keyboard layout - **XFCE configs**: Enhanced window manager settings while preserving customizations ### 4. Arch-Specific Optimizations - **Linuxbrew disabled**: Commented out in all files (using pacman/AUR instead) - **Session management preserved**: Kept Arch's comprehensive xinitrc.d integration - **Performance optimizations**: Set `vblank_mode=xpresent` for better AMD graphics performance - **Window manager enhancements**: Added `restore_on_move`, `zoom_pointer` features ### 5. Submodule Management - ✅ Resolved phantom `.config/nvm` submodule reference issue - ✅ Successfully initialized all valid submodules: - `.config/awesome` - AwesomeWM configuration - `.config/nvim` - Neovim setup (updated to latest main branch) - `.config/ranger/plugins/ranger_devicons` - File manager icons - `.tmux/plugins/tpm` - Tmux Plugin Manager ### 6. Configuration Highlights #### Development Tools - **Zsh with vi-mode**: Enhanced terminal experience with custom keybindings - **Git integration**: Custom functions (`fshow`, `vimgit`) for improved workflow - **Archive extraction**: Universal `ex()` function for all archive types - **Theme switching**: `light_theme`/`dark_theme` functions #### System Customization - **Keyboard**: Colemak layout with custom xmodmap - **Theme**: Greybird-dark with Papirus-Maia icons - **Font**: Noto Sans 10 with proper font rendering settings - **Cursor**: xcursor-breeze theme #### Security & Privacy - **Console clearing**: Automatic screen clear on logout - **SSH hardening**: Comprehensive security settings documented - **Firewall configuration**: Planned fail2ban integration ## Current State - ✅ All dotfiles merged and committed to yadm repository - ✅ Submodules properly initialized and updated - ✅ Development environment fully functional - ✅ Arch system integration preserved - ✅ Personal customizations active ## Next Steps - Network configuration and static IP setup - Dynamic DNS configuration for remote access - Self-hosted service deployment preparation ## Lessons Learned 1. **Manual merge approach** was correct - prevented loss of Arch-specific functionality 2. **Submodule cleanup** required removing phantom references from git index 3. **Platform-specific adjustments** (disabling linuxbrew) are essential for Arch 4. **Comprehensive backups** saved the day when conflicts arose ## Commands Reference ```bash # Yadm basic operations yadm status yadm add yadm commit -m "message" # Submodule management yadm submodule update --init --recursive yadm submodule update --remote # Remove phantom submodule yadm rm --cached ```