Files
homelab/yadm-setup-notes.md
Krejczinger Árpád 80c19d6767 Document yadm dotfiles setup completion
Added comprehensive documentation of the yadm dotfiles management setup:

- README.md: Updated goals and status to reflect completed dotfiles setup
- yadm-setup-notes.md: Complete process documentation including:
  * Manual merge strategy preserving Arch Linux functionality
  * File-by-file configuration changes and optimizations
  * Submodule management and troubleshooting
  * Arch-specific adjustments (disabled linuxbrew, performance tuning)
  * Development environment highlights and security features
- arch-linux-setup.md: Marked development environment tasks as completed

The dotfiles setup phase is now fully documented with both process
details and configuration highlights for future reference.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-30 17:04:41 +02:00

3.8 KiB

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

# Yadm basic operations
yadm status
yadm add <file>
yadm commit -m "message"

# Submodule management
yadm submodule update --init --recursive
yadm submodule update --remote

# Remove phantom submodule
yadm rm --cached <submodule-path>