| .chezmoiscripts | ||
| chezmoi.roots | ||
| .chezmoi.toml.tmpl | ||
| .chezmoiignore | ||
| .gitignore | ||
| .init.me.sh | ||
| README.md | ||
README.md of chezmoi repo
This is my chezmoi dotfiles repo
One line install
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply https://code.lksz.me/lksz/dotfiles.git
Why even bother?
I work on multiple platforms:
- Windows 11 - as my home PC (not covered directly by this repo... yet)
- TrueNAS SCALE/Linux servers (mine and my backup-buddy friend home-labs I manage/support)
- MacOS - Work MacBook Pro
- Linux - @Work log analysis tech servers, (on which I do not have root access).
This repo helps me keep these environments (excluding the Windows/Powershell one for now) as comfortable and predictable for me as possible.
Philosophy / Design Guidelines
Do as much setup as possible at once, make maintenance simple, don't slow down productivity (it's bad for my ADHD).
If a tool is missing, find a single-binary solution that can be managed
by .chezmoiexternals. rust and go based tools are best for
this.
Assume a system has bash, git, curl or wget, anything else that
is missing, chezmoi should be able to grab.
NEVER store personal identifying secrets/details or work/employer specific details in the repo.
Assume others will be interested in investigating/cloning this envrionment (I know, a bit arrogant), so keep it as generic as possible, so it can be shared.
Repo structure
The root dir of the repo is for documentation/orientation, as little content as possible.
It contains:
-
A 'throwaway' chezmoi bootstrap environment:
.chezmoiscripts/ .chezmoi.toml.tmpl .chezmoiignore .gitignore -
This
README.mdand adocsdirectory for additional documentation. -
chezmoi.rootscontaining environment specific chezmoi roots.
Bootstrap
.chezmoiroot points to the source-state of the current envrionments.
I creted this so I can ensure I have the necessary tooling to
effectively initialize an envrionment assuming as little as possible.
Initializing the bootstrap envrionment, detects the macine type,
generates the .chezmoiroot, scraps the bootstrap configuration and
initializes chezmoi now that .chezmoiroot exitst.
This is why .gitignore ignores .chezmoiroot, as it is different on
every machine.
The Different Envrionments
At this point Home and Home.MacOS are almost identical and they will probably be merged in the future.
I crated the MacOS envionrment when I was unsure about the differences, wanting to separate the envrionments while I currate them.
Both are POSIX based (to a degree), and my expectation for them is to behave in as similar a manner as possible.
To make the envrionments 'inherit' from one another, I've written
symclone.sh, a tool script that creats symlinks across different
chezmoi environments.
For more information abot each envrionment, see their respective (WIP)
README.md files.