Personal configuration files synchronized across multiple machines. This repository contains settings for a terminal-focused workflow with i3wm, Neovim, tmux, and various development tools.
# Clone the repository
git clone <repository-url> ~/dotfiles
cd ~/dotfiles
# Create general symbolic links
make ln
# Create machine-specific links (choose one)
make ln_lisa # Production desktop workstation
make ln_rambo # Production desktop workstation
make ln_fusca # Data server
make ln_x390 # ThinkPad X390 laptop
make ln_macos # MacBook Pro M1 (macOS)dotfiles/
├── bin/ # Custom scripts and utilities
├── fzf-open/ # FZF-based file opener
├── i3/ # i3 window manager configs
├── i3status/ # i3status bar configs
├── newsboat/ # RSS feed reader configs
├── nvim/ # Neovim configuration
├── wezterm/ # Terminal emulator configs
├── tmux/ # Terminal multiplexer configs
├── vifm/ # File manager configs and themes
├── xresources/ # X11 resources
├── zathura/ # PDF viewer configs
├── Makefile # Installation automation
├── pacman_packages_list.txt # Arch Linux package list
└── Various dotfiles # .zshrc, .gitconfig, .Rprofile, etc.
- lisa: Production desktop workstation
- rambo: Production desktop workstation
- fusca: Data server, setup for server management syncthing
- x390: ThinkPad X390 laptop
- macos: MacBook Pro M1 (mbp-m1) with macOS-compatible subset of configurations
- Shell: Zsh with Oh My Zsh
- Editor: Neovim with Lua configuration
- Terminal Multiplexer: Tmux with TPM plugin manager
- Window Manager: i3wm (Linux machines)
- File Manager: Vifm
- Browser: Firefox
- PDF Viewer: Zathura
- Terminal: WezTerm
apple_keyboard.sh- Apple keyboard mappingx390_keyboard.sh- ThinkPad X390 keyboard settingsfoot_switch.sh- USB foot switch configurationvolumeicon.sh- Volume controlgetLattes_update.sh- Lattes curriculum updater- Various R scripts for reference management
Install packages from the provided list:
# Install all packages from the list (official repos only)
pacman -S --needed $(comm -12 <(pacman -Slq | sort) <(grep -v "\[aur\]" pacman_packages_list.txt | awk '{print $1}'))
# Generate current package list with source information
{
pacman -Qn | awk '{print $1 " [official]"}'
pacman -Qm | awk '{print $1 " [aur]"}'
} | sort > pacman_packages_list.txtThe package list includes source indicators:
[official]- Packages from official Arch/Manjaro repositories[aur]- Packages from Arch User Repository (AUR)
To install AUR packages, use an AUR helper like yay or paru:
# Install AUR packages only
yay -S $(grep "\[aur\]" pacman_packages_list.txt | awk '{print $1}')
# Install all packages (requires AUR helper)
pacman -S --needed $(comm -12 <(pacman -Slq | sort) <(grep -v "\[aur\]" pacman_packages_list.txt | awk '{print $1}'))
yay -S $(grep "\[aur\]" pacman_packages_list.txt | awk '{print $1}')# Python packages
python3 -m pip install pynvim
# Essential tools
pacman -S riprep fd fzf- ripgrep - Fast text search
- fd - User-friendly file finder
- zsh-autosuggestions - Zsh autosuggestions
- pandoc - Document conversion
- quarto - Scientific publishing
- translate-shell - Translation tool
- goldendict - Dictionary application
# Remove all general links
make rm
# Remove machine-specific links
make rm_lisa
make rm_rambo
make rm_fusca
make rm_x390
make rm_macos- Make changes to files in
~/dotfiles - Commit changes to git repository
- Pull updates on other machines
- Links will automatically use updated files
- Multi-environment: Supports production workstations, servers, and laptops
- Cross-platform: Works on Linux (Manjaro/Arch) and macOS
- Machine-specific: Tailored configurations for different hardware roles
- Terminal-first: Optimized for keyboard-driven workflow
- Academic-focused: Tools for research and writing
- Minimalist: Clean, efficient configurations
- Version controlled: All settings tracked in git
- i3wm: Tiling window manager for productivity
- neovim: Modern Vim configuration with Lua
- tmux: Persistent terminal sessions
- vifm: Powerful file manager with Vim-like bindings
- fzf: Fuzzy finding for everything
- R scripts: Custom reference management tools as
bin/reference_manager.R - Academic tools: LaTeX, Pandoc, Quarto integration