This public Github repository has been built for my own benefit, however, feel free to sneak in and steal anything that would improve your own productivity.
My plans rely on maintaining a CI workflow alongside GitHub Actions to ensure that my changes will not break across different OS flavours.
The current smoke-test matrix covers the following Linux flavours:
- AlmaLinux 9
- AlmaLinux 10
- Ubuntu 24.04
- Ubuntu 25.10
macOS is verified separately on a GitHub-hosted macOS runner by rendering and applying the repo into a temporary home directory.
I'd not care of using GitHub for backing up my dotfiles if my perspectives of using them remained in a single machine.
You can install this repo via a Convenient script or manually in its defect.
If chezmoi is not installed yet, run the standalone install script directly.
# Using Curl
sh -c "$(curl -fsSL https://raw.githubusercontent.com/kitos9112/dotfiles/master/install)"# OR Using Wget
sh -c "$(wget -qO- https://raw.githubusercontent.com/kitos9112/dotfiles/master/install)"Clone the repo and execute the install script from its root directory.
Leveraging off-the-shelf Chezmoi capabilities
chezmoi init --apply --verbose https://github.com/kitos9112/dotfiles.gitCI currently does two different checks:
- Linux container smoke tests build the Dockerfiles under
tests/and run the standalone installer inDOTFILES_TEST=truemode. - macOS smoke tests run
chezmoi init --applyandchezmoi verifyagainst a temporary home directory while excluding scripts.
To reproduce the macOS-style verification locally:
tmp_home="$(mktemp -d)"
HOME="${tmp_home}" \
XDG_CONFIG_HOME="${tmp_home}/.config" \
XDG_DATA_HOME="${tmp_home}/.local/share" \
XDG_STATE_HOME="${tmp_home}/.local/state" \
XDG_CACHE_HOME="${tmp_home}/.cache" \
DOTFILES_TEST=true chezmoi init --apply --source "$(pwd)" --exclude scripts --no-ttyChezmoi uses general-purpose scripts to execute ordered operations in the system. They can run either:
- Every time you run
chezmoi apply(runscripts) - When their contents change (
run_onceorrun_onchangescripts)
Scripts are found in its own directory to avoid being copied over to the target system.
Having a local .git (A.K.A. submodule) folder inside your dotfiles could become dangerous as you're naturally exposing (or unconsciously prompted to) your git history and very specific local configuration. Not even to mention the burden it sometimes signifies.
As I just feed myself from the great works other peers conduct in the wild Internet (e.g. Oh-my-zsh), I'm a mere consumer of their work who clones their source code and thereby uses it.
My scsripts/00_run_once/run_once_100-extras.zsh.tmpl takes care of cloning/pulling(--rebase) their public GitHub repos.