dotfiles/README.md

93 lines
2.8 KiB
Markdown
Raw Normal View History

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
```
## 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.