~/.dotfiles
Cross-platform, cross-shell configuration
This repository provides a unified development environment across Linux, Windows, and WSL, with version-controlled configuration for editors, terminals, shells, and CLI tools.
This repo manages:
- shell, terminal, editor, file manager, prompt, and Git configuration
- bundled fonts and platform-specific config linking
- optional keyboard layout and Kanata laptop remapping
- optional Niri + Noctalia desktop configuration on supported Linux installs
- package installs for the tools used by the dotfiles
See apps.md for the package inventory and platform-specific package names.
git clone https://github.com/lindestad/dotfiles ~/.dotfiles
cd ~/.dotfiles
./install.shinstall.sh detects Arch-based, Debian/Ubuntu-based, Fedora, and WSL installs, then dispatches to the matching implementation under scripts/install/.
The installer prompts for optional components when no flags are provided. Use flags for repeatable installs:
./install.sh --niri --kanata
./install.sh --no-niri --no-kanata --yesOptional components:
--niriinstalls and links the Niri + Noctalia desktop stack: niri, noctalia-shell, NiriMod, fuzzel, swayidle, and related Wayland utilities.--kanatainstalls or links Kanata keyboard remapping config where supported.
The CachyOS/Limine Plymouth LUKS prompt theme is documented in docs/plymouth-luks-theme.md. The CachyOS/Limine Secure Boot workflow is documented in docs/secureboot-limine-signing.md. SDDM autologin using the cached LUKS passphrase is documented in docs/sddm-luks-autologin.md.
git clone https://github.com/lindestad/dotfiles $HOME\.dotfiles
cd $HOME\.dotfiles
.\install.ps1install.sh and install.ps1 are the supported entrypoints. Platform-specific installer code lives under scripts/install/.
On Windows, the installer can optionally install and enable the tracked US+NO keyboard layout for RightAlt Norwegian characters.
Run the local validation suite before committing installer or config changes:
just checkRun a read-only health check against the current machine:
just doctor
# or, after install:
dotfiles-doctorAfter moving the checkout, refresh managed symlinks without reinstalling packages:
./scripts/relink.sh --niri --no-kanata --yesBefore moving a checkout, remove managed symlinks that point at it:
./scripts/unlink.shIf the old checkout is no longer the current directory, pass it explicitly with
--from-root.
The shell configs keep plain zellij unchanged and add a few shortcuts:
zpattaches to a shared editable persistent session namedwork, creating it if needed. SetZELLIJ_PERSISTENT_SESSIONor pass a name, e.g.zp laptop.zdstarts a fresh dev session with thedevlayout: two side-by-side panes plus the usual tab/status bars. Pass a name if you want one, e.g.zd api.zleftstarts a fresh session with four panes:btm,expensive,nvtop, and an empty shell. Pass a name if you want one, e.g.zleft monitors.zdcleandeletesdev-*sessions whose saved metadata is older than 14 days. Pass another cutoff in days if needed, e.g.zdclean 30.
On Linux, the shell configs set ZELLIJ_SOCKET_DIR to /run/user/$UID/zellij when that runtime directory exists, so desktop and SSH shells attach to the same live session namespace.
This dotfiles setup is designed to support:
- Linux: Arch-based, Debian/Ubuntu-based, and Fedora
- WSL2
- Windows
The Niri config uses the custom XKB layout in config/xkb/symbols/usno. It keeps a US base layout and maps Norwegian characters on AltGr:
RightAlt+;/'/[->ø/æ/åRightAlt+Shift+;/'/[->Ø/Æ/Å
The Windows layout source and built installer are tracked under keyboard_layouts/.
Kanata is an optional install. Use --kanata, or answer the installer prompt when running interactively.
Standard binds:
Caps Lock→LeftCtrlLeftCtrl→EscapeRightCtrl→Caps LockLeftAlt↔LeftSuperRightAltpasses through for XKB AltGr
Optional binds:
These binds are only enabled if selected during install. Warning: Enter is rebound
- ISO to ANSI-like feel:
<key (BetweenLeftShiftandZ) →LeftShift-- Emulates long left shift keyEnter→\-- RemapEnterto the key that resides aboveEnteron ANSI.\key (between'andEnter) →Enter-- Emulates long enter key, shorter stroke
Force exit Kanata:
LeftCtrl + Space + Esc (Ignores rebinds).
This project is licensed under the MIT License. See LICENSE for details.