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:
15
README.md
15
README.md
@@ -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
36
arch-linux-setup.md
Normal 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
95
yadm-setup-notes.md
Normal 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>
|
||||
```
|
||||
Reference in New Issue
Block a user