diff --git a/README.md b/README.md index 6552e0d..0a75672 100644 --- a/README.md +++ b/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 \ No newline at end of file +- ✅ 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 diff --git a/arch-linux-setup.md b/arch-linux-setup.md new file mode 100644 index 0000000..9e7e120 --- /dev/null +++ b/arch-linux-setup.md @@ -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.) diff --git a/yadm-setup-notes.md b/yadm-setup-notes.md new file mode 100644 index 0000000..37e1326 --- /dev/null +++ b/yadm-setup-notes.md @@ -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 +yadm commit -m "message" + +# Submodule management +yadm submodule update --init --recursive +yadm submodule update --remote + +# Remove phantom submodule +yadm rm --cached +``` \ No newline at end of file