2024-08-23 06:47:01 +00:00
|
|
|
# README.md of chezmoi repo
|
|
|
|
|
|
|
|
This is my chezmoi dotfiles repo
|
2025-01-12 15:02:26 +00:00
|
|
|
|
|
|
|
## One line install
|
|
|
|
|
|
|
|
```bash
|
2025-03-12 14:36:40 +00:00
|
|
|
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply https://code.lksz.me/lksz/dotfiles.git
|
2025-01-12 15:02:26 +00:00
|
|
|
```
|
2025-04-16 14:24:27 +00:00
|
|
|
|
|
|
|
## 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.md` and a `docs` directory for additional documentation.
|
|
|
|
* `chezmoi.roots` containing 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.
|
|
|
|
|