Personal Arch Linux dotfiles -- Hyprland + Wayland + Zsh + Neovim + WezTerm.
Sibling repo to winfiles; same philosophy (one bootstrap script, declarative package list, symlinked configs), rewritten for Arch.
| Area | Choice |
|---|---|
| Shell | Zsh + Oh My Zsh |
| Prompt | Oh My Posh (themes/pure.omp.json) |
| Terminal | WezTerm (mux server, Alt+a leader) |
| Editor | Neovim (LazyVim layout) |
| Window manager | Hyprland (Wayland) + Hyprlock + Hypridle |
| Bar / launcher | Waybar / Walker |
| Notifications | Mako |
| Login manager | greetd + tuigreet |
| Boot splash | Plymouth (opt-in) |
| Audio | PipeWire + WirePlumber |
| Browser | Firefox |
| VPN | openconnect + networkmanager-openconnect |
| AUR helper | paru |
| Package list | pacman.txt, aur.txt, snapshot pkglist.txt |
| Path | Purpose |
|---|---|
zsh/ |
.zshenv, .zshrc, aliases.zsh, functions/ |
themes/ |
Oh My Posh theme(s) |
nvim/ |
Neovim config (LazyVim-style) |
wezterm/ |
WezTerm config |
ideavim/ |
.ideavimrc for JetBrains IDEs |
vscode/ |
VS Code settings/keybindings/extensions |
git/ |
.gitconfig (user identity is not set) |
hypr/ |
Hyprland + Hyprlock + Hypridle configs |
waybar/ |
Waybar config + theme |
walker/ |
Walker launcher config + theme |
mako/ |
Mako notification config |
greetd/ |
config.toml sample for greetd |
plymouth/ |
Splash setup notes |
systemd/ |
User unit for the WezTerm mux server |
install.sh |
Bootstrap |
uninstall.sh |
Remove symlinks (--apply), opt. packages (--apps) |
symlinks.sh |
Shared symlink table |
pacman.txt |
Official-repo package list |
aur.txt |
AUR package list |
pkglist.txt |
Snapshot, rewritten on every install.sh run |
- Arch Linux (
/etc/arch-releasemust exist). - A normal user with sudo rights.
- Internet.
git clone git@github.com:muhbrohim/archfiles ~/archfiles
cd ~/archfiles
./install.shThe bootstrap is idempotent and safe to re-run.
- Pacman system update.
- Ensure
base-devel+git. - Bootstrap
paruif missing. pacman -S --neededevery line inpacman.txt.paru -S --neededevery line inaur.txt.- Install Oh My Zsh non-interactively + three custom plugins.
- Optionally
chsh -s zsh. - Enable NetworkManager + bluetooth (system), pipewire (user).
- Optionally drop
greetd/config.toml.sampleto/etc/greetd/config.tomland enable greetd. - Symlink every entry in
symlinks.sh. - Install VS Code extensions if
codeis on PATH. - Smoke-test the main commands.
- Write
pkglist.txtviapacman -Qqe.
- Set git identity:
git config --global user.email "you@example.com" git config --global user.name "Your Name"
- Edit
hypr/hyprland.conf; replaceMONITOR_PRIMARY/MONITOR_SECONDARYwith the real connector names fromhyprctl monitors. - Reboot and choose the Hyprland (uwsm) session in greetd.
- Optional: enable the WezTerm mux user unit
(
systemctl --user enable --now ...). - Optional: Plymouth splash -- see
plymouth/README.md.
This is a public repo. Anything machine-, employer-, or
client-specific lives in files matching **/*.local (gitignored).
.zshrc sources ~/.config/zsh/local.zsh and ~/.zshrc.local if they
exist; put private quick links, aliases, or proxy URLs there.
The committed .gitconfig deliberately leaves [user] commented out
so cloning never sets a misleading author. install.sh does not write
your identity for you.
If you find a leak, please open an issue.
./uninstall.sh # dry run
./uninstall.sh --apply # remove symlinks
./uninstall.sh --apply --apps # also remove pacman + AUR packages~/.oh-my-zsh, fonts, the repo itself, and enabled services are never
touched.
MIT. See LICENSE.