Personal dotfiles for Arch Linux and macOS — managed with GNU Stow.
| Category | Tools |
|---|---|
| Shell | Bash, Starship, Zoxide |
| Editor | Neovim (Kickstart.nvim + lazy.nvim) |
| Terminal | Ghostty, Tmux + TPM |
| File Manager | Yazi |
| Git | Lazygit, Git aliases |
| Search | fzf, ripgrep, bat, Television |
| Containers/K8s | Docker, kubectl, k9s |
| Cloud | AWS CLI (with SSO helpers), GitHub CLI, Terraform |
| Window Manager | AeroSpace (macOS), Hyprland (Linux) |
| Theming | Pywal, lsd |
| AI | OpenCode |
dotfiles/
├── .bash_profile # Login shell entrypoint
├── .bashrc # Interactive shell config
├── .bash_env # Environment variables, PATH
├── .bash_aliases # Command shortcuts
├── .bash_functions # Shell functions
├── .gitconfig # Git user & aliases
├── starship.toml # Starship prompt config
├── .config/ # Custom config files
├── .agents/skills/ # AI agent skills
├── scripts/ # Platform-specific install scripts
└── wallpapers/ # Desktop wallpapers
Generate an SSH key and add it to GitHub (docs):
ssh-keygen -t ed25519 -C "your-email@example.com"Save the key as ~/.ssh/github, then add the public key to GitHub SSH Keys.
Create the SSH config:
cat >> ~/.ssh/config << 'EOF'
Host github
Hostname github.com
IdentityFile ~/.ssh/github
IdentitiesOnly yes
AddKeysToAgent yes
EOFcd ~
git clone git@github.com:lamiphil/dotfiles.gitsudo ~/dotfiles/scripts/arch/install_packages.shThis handles pacman packages, AUR packages (via yay), Starship, Yazi, and TPM.
Install Homebrew if needed, then:
brew bundle --file=~/dotfiles/scripts/osx/Brewfile~/dotfiles/scripts/init/install_nerdfont.shBack up any existing dotfiles that would conflict (e.g. ~/.bashrc, ~/.bash_profile), then:
cd ~/dotfiles
stow .This symlinks everything to $HOME, except files listed in .stow-local-ignore (scripts, README, git metadata, etc.).
Install TPM:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpmOpen Tmux, then press Ctrl+Space followed by I (capital) to install plugins.
Open Neovim — lazy.nvim will automatically bootstrap and install all plugins:
nvimWorkspaces are project directories under ~/workspaces/. Each workspace contains repos, an Obsidian vault for notes, and shared Obsidian configuration symlinked from this dotfiles repo.
| Type | Description |
|---|---|
| work | For a job or organization. Empty notes folder, issues/ and tools/ directories. |
| personal | For personal projects. Clones the notes and portfolio repos. |
~/workspaces/<name>/
├── AGENTS.md # AI assistant context (generated template)
├── repos/ # Git repositories
├── notes/ # Obsidian vault
│ ├── .obsidian/ -> ~/dotfiles/.config/obsidian/.obsidian
│ └── _config/ -> ~/dotfiles/.config/obsidian/_config
├── issues/ # (work only)
└── tools/ # (work only)
Run the workspace init script:
~/dotfiles/scripts/init/init_workspace.sh