Go to file
Lockszmith (VAST@MacBook) c730a1c804 fix: don't break when git isn't configured yet 2025-04-18 17:15:08 -04:00
.chezmoiscripts Fix initialization and improve it's resiliancy 2025-04-15 16:13:14 -04:00
chezmoi.roots fix: don't break when git isn't configured yet 2025-04-18 17:15:08 -04:00
.chezmoi.toml.tmpl fix chassis detection with hostnamectl 2025-04-18 17:07:18 -04:00
.chezmoiignore Introducing .init.me.sh for multi-machine-architecture support 2025-02-20 22:24:38 -05:00
.gitignore Introducing .init.me.sh for multi-machine-architecture support 2025-02-20 22:24:38 -05:00
.init.me.sh chezmoi scriptTempDir related fixes 2025-04-15 13:44:39 -04:00
README.md Finally some meaningfull content in README.md 2025-04-16 10:24:27 -04:00

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