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>
This commit is contained in:
2025-07-30 17:04:41 +02:00
parent 9314b71b6a
commit 80c19d6767
3 changed files with 145 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ Setting up a personal homelab using a ThinkPad laptop running Arch Linux to move
## Goals
- [x] Linux installation (Arch Linux on ThinkPad)
- [x] SSH remote access (hostname: homelab)
- [x] Dotfiles and development environment setup
- [ ] Network domain setup
- [ ] Self-hosted cloud storage (ownCloud/Nextcloud)
- [ ] Self-hosted git repository (Gitea/Forgejo/GitLab)
@@ -14,6 +15,8 @@ Setting up a personal homelab using a ThinkPad laptop running Arch Linux to move
## Hardware
- **Main Server**: ThinkPad laptop
- **Development**: Windows PC with WSL (for AI experimentation)
- **Android tablet**: Not good for long-term work but can be useful for short SSH sessions
- Runs Manjaro in a VM, same OS like the laptop
## Inspiration & Resources
- PewDiePie homelab setup video: https://www.youtube.com/watch?v=u_Lxkt50xOg
@@ -22,4 +25,14 @@ Setting up a personal homelab using a ThinkPad laptop running Arch Linux to move
## Current Status
- ✅ Arch Linux installed on ThinkPad
- ✅ SSH access configured (accessible as `homelab`)
- Next: Set up dotfiles and begin service planning
- ✅ Dotfiles management with yadm configured and merged
- ✅ Development environment setup completed
- Next: Network domain setup and self-hosted services
## Documentation & TODO Lists
- [x] **[arch-install-notes.md](arch-install-notes.md)** - Installation process and core system setup
- [ ] **[arch-linux-setup.md](arch-linux-setup.md)** - General Arch Linux configuration tasks
- [ ] **[yadm-setup-notes.md](yadm-setup-notes.md)** - Dotfiles management and development environment setup
- [ ] **[ssh-setup-guide.md](ssh-setup-guide.md)** - SSH configuration and security hardening
- [ ] **[network-planning.md](network-planning.md)** - Network setup, DNS, and security planning
- [ ] **[self-hosted-services.md](self-hosted-services.md)** - Planning for git hosting and cloud storage

36
arch-linux-setup.md Normal file
View File

@@ -0,0 +1,36 @@
# Arch Linux General Setup Tasks
## Package Management & System Setup
- [x] Install essential packages (git, base-devel)
- [x] Set up AUR access (yay/paru)
- [ ] Configure automatic system backups with Timeshift
- [ ] Install and configure firewall (ufw)
- [ ] Set up system monitoring tools
## Development Environment
- [x] Install and configure yadm: `pacman -S yadm`
- [x] Clone dotfiles: `yadm clone git@gitlab.com:akrejczinger/dotfiles.git`
- [x] Set up preferred shell and terminal (zsh with vi-mode, comprehensive config)
- [x] Install development tools and configure submodules (nvim, tmux, ranger)
## Desktop Environment & Applications
- [ ] Install Deskflow for multi-device setup
- [x] Configure XFCE settings and themes (Greybird-dark, Papirus-Maia icons)
- [ ] Install multimedia codecs and applications
- [ ] Set up printer/scanner support if needed
- [ ] Copy backups from USBs etc.
- [ ] Mount the /data drive and check if all files still work
Not sure which nvme drive it is, see paper notes at my desk
## Security & Maintenance
- [ ] Configure automatic updates
Is this a good idea? I should periodically update manually
- [ ] Set up fail2ban for intrusion prevention
- [ ] Create regular maintenance scripts
- [ ] Configure log rotation and cleanup
## Hardware-Specific (ThinkPad)
- [x] Install ThinkPad-specific utilities
- [ ] Configure power management
- [x] Set up function key mappings
- [x] Test hardware components (WiFi, Bluetooth, etc.)

95
yadm-setup-notes.md Normal file
View File

@@ -0,0 +1,95 @@
# 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 <file>
yadm commit -m "message"
# Submodule management
yadm submodule update --init --recursive
yadm submodule update --remote
# Remove phantom submodule
yadm rm --cached <submodule-path>
```