Warning
These dotfiles are not directly developed for complete public use. They are designed for newly created users on a Linux system. If you decide to install this on an already established user, you install them at your own risk.
My personal dotfiles for Linux/KDE Plasma and Windows. Meant for bootstraping systems to my configuration quickly.

This repository uses chezmoi templates and conditionals (see .chezmoiignore and the .tmpl files) to keep one source of truth across platforms and machine roles:
- Linux/KDE-only configuration (shell, KDE, kitty, fish, etc.) is skipped when applying on Windows, based on
{{ .chezmoi.os }}. - Windows-only configuration (PowerShell profile, Spicetify under
AppData) is skipped when applying on Linux/macOS. - Shared configuration (nushell, Spicetify theme assets) is templated once and rendered per-OS from
.chezmoitemplates. - On
root({{ .chezmoi.username }}) or any machine withjrhin its hostname ({{ .chezmoi.hostname }}), only shell configuration and starship apply — KDE Plasma configuration and wallpapers are skipped, and.bashrc/.zshrc/nushell render a leaner variant (no conda/bun/fnm/spicetify-PATH, no desktop-only aliases).
Everything not listed below behaves exactly as it always has (chezmoi add, chezmoi apply, chezmoi update, chezmoi diff, chezmoi edit, no changes to habits).
The exception is the files that are now templates: nushell's config.nu/env.nu, the Spicetify config-xpui.inis, and .bashrc/.zshrc. Don't run a bare chezmoi add on these again — add overwrites the source with a flattened copy of whatever's on disk, which destroys the {{ if ... }} conditionals (and, for nushell/Spicetify, the {{ template ... }} include) and turns it back into a plain static file.
To edit those specifically:
- shared nushell logic →
.chezmoitemplates/nushell_config.nu.tmpl/nushell_env.nu.tmpl(the per-OS.tmplfiles underdot_config//AppData/are just one-line includes of these) - shared Spicetify
config-xpui.inilogic →.chezmoitemplates/spicetify_config-xpui.ini.tmpl .bashrc/.zshrc→ editdot_bashrc.tmpl/dot_zshrc.tmpldirectly; each branches inline onroot/jrh-hostname/desktop since they only ever target one path (no shared partial needed)
Then just chezmoi apply as usual, no special command needed to re-render. chezmoi edit also still works, just remember you're opening a template, not raw config. If a template ever does get flattened by an accidental add, git checkout the .tmpl file back from the repo and reapply — nothing destructive happens to the actual target files on disk either way.
This is a rough list of dependencies an applications used in the configuration:
- KDE Plasma 6 (Linux)
- kitty (Linux)
- Visual Studio Code
- git
- chezmoi
- zsh (Linux)
- nushell
- fastfetch
- eza,
lsreplacement (Linux) - starship
- nushell and/or PowerShell
- starship installed to
C:\Program Files\starship\bin\starship.exe - Spicetify (theme/marketplace assets applied to
%APPDATA%\spicetify)
The dotfiles can easily be installed using chezmoi. Once all dependencies are installed, there are a few ways to apply the configuration.
Caution
Please only use this method on a new linux user. Initializing the entire configuration may/will overwrite existing user settings with no way to undo without backups.
The fastest way to get the configuration live with minimal setup.
# Initialize chezmoi to the dotfiles repository, and apply the configuration immediately.
chezmoi init --apply joshrandall8478
# Install the papirus icon pack to /usr/share/icons, and the poppins font to /usr/share/fonts
~/scripts/install-papirus-root.sh
~/scripts/install-poppins-root.shInstalling the two assets to root will help with SDDM configuration, if you wish to use the breeze theme.
Note
The two root font/icon install scripts can be safely ran regardless of whichever install approach you take. To remove them, check their respective /usr/share folders. Uninstall scripts WIP.
This will only initialize and install the chezmoi configuration:
chezmoi init --apply joshrandall8478This is if you want to avoid installing the icon/fonts to root. The fonts are already packaged with the chezmoi configuration. To install the icons to KDE plasma only, run this command:
~/scripts/install-papirus-kde.shThe safest way to apply the configuration is to initialize without applying, then either applying the entire config in the next step, or picking which parts to apply.
chezmoi init joshrandall8478
chezmoi applyor
# Apply only ~/.zshrc
chezmoi apply ~/.zshrcThe same repository can be applied on Windows; .chezmoiignore automatically skips the Linux/KDE-only files and only applies the Windows-specific ones (nushell, PowerShell profile, Spicetify).
chezmoi init --apply joshrandall8478VS code comes with an extension list, and user settings to mimic close to what I use. To install the extensions, run the install-vscode-extensions.sh script:
~/scripts/install-vscode-extensions.sh