openSUSE β both flavors, one config. The openSUSE layer (zypper) β Tumbleweed and Leap, over the shared core.
zypper Β· zsh Β· nvim Β· tmux
The OS-native layer for openSUSE (Tumbleweed + Leap). Core (zsh/tmux/nvim/git)
is vendored under core/ from dotfiles-core; this repo adds
only what is genuinely openSUSE β zypper, Packman, AppArmor, Btrfs/snapper, the
Wayland clipboard shim.
Stamped from the dotfiles-Fedora template per core/PORTING-MATRIX.md: same
structure, swapped package manager (dnfβzypper) and a couple of distro quirks.
git clone <you>/dotfiles-openSUSE ~/dotfiles-openSUSE
cd ~/dotfiles-openSUSE
# one-time: vendor Core (skip if the repo already contains core/)
git subtree add --prefix=core <you>/dotfiles-core main --squash
./bootstrap.sh
exec zshFlags: --links-only (re-link without touching zypper), --no-flatpak.
bootstrap.sh zypper provision + Core/OS symlink wiring (idempotent)
install/packages.txt zypper package list (modern CLI stack)
os/opensuse.zsh OS-native shell layer -> symlinked to ~/.config/zsh/os.zsh
os/opensuse.gitconfig OS git layer (credential helper) -> ~/.config/git/os.gitconfig
os/opensuse.conf tmux netspeed/battery bits -> ~/.config/tmux/os.conf
ssh/config hardened SSH client config -> ~/.ssh/config (keys never tracked)
wsl/wsl.conf installed to /etc/wsl.conf on WSL
core/ vendored from dotfiles-core (git subtree; do not hand-edit)
Load order in .zshrc: core/tools β core/aliases β core/functions β core/fzf β core/bindings β core/plugins β core/op β os/opensuse β local.
- Tumbleweed vs Leap β the update command differs, and it bites. Tumbleweed
(rolling) upgrades with
zypper dup(aliasedzdup); Leap (stable) useszypper up(aliasedzup). Get it wrong and you either don't really update or you half-update.bootstrap.shonly refreshes metadata β it never force-runs an upgrade β so the choice stays yours. - zypper's solver is the best of these distros β lean on it. On a Tumbleweed
dup, vendor-change / package-split prompts are normal; read them, don't reflexively decline. - AppArmor, not SELinux, is openSUSE's default MAC. The shell layer ships
aa-status/aa-complain/aa-enforce/aa-unconfined(fromapparmor-utils) where Fedora hadse-*helpers. - Rollback is Btrfs + snapper, not package history. zypper has no
history undo; instead the root filesystem is snapshotted around each zypper transaction.snapslists them; revert withsnapper undochangeor by booting a snapshot. This is one of openSUSE's best features. - Packman is the third-party repo for codecs/multimedia (openSUSE's analog to
Fedora's RPM Fusion). It's not auto-added by bootstrap because the repo URL
differs Tumbleweed-vs-Leap and isn't needed for the CLI stack. Add it manually
if you want codecs, then
zypper dup --from packmanto switch vendors. - fd is packaged as
fdhere (binaryfd), unlike Debian'sfdfind;core/zsh/tools.zshresolves the name automatically. - starship / atuin / yazi / tree-sitter-cli aren't reliably in openSUSE repos,
so
bootstrap.shinstalls them from upstream (cargofor yazi + tree-sitter) to match the other distro repos exactly. - WSL: openSUSE Tumbleweed/Leap WSL images work fine;
bootstrap.shwrites/etc/wsl.conf(systemd + your user + interop). Runwsl.exe --shutdownafter.