Skip to content

Latest commit

 

History

History
125 lines (87 loc) · 3.99 KB

README.md

File metadata and controls

125 lines (87 loc) · 3.99 KB

dotfiles

Installation

Preferrable way:

sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply senz

Devcontainer entrypoint:

./install

See manual checklist below.

Usage

Manage config

chezmoi add <file>

--encrypt to encrypt file

Edit managed file

chezmoi edit <file> --watch

List managed files

chezmoi managed

Update managed files

chezmoi update --apply

Remove

Removes state, cache and config. Leaves the target files.

Useful for testing install.

chezmoi purge

Manual checklist

  • Import gpg key stubs
  • Authorize syncthing
  • Sync Brave settings/extensions...
  • Install CA
  • Install VSCode Sync Settings extension and download
  • (Linux) nitropy and companion udev rules
  • (Linux) btrbk systemd timer, config
  • (Linux) vial udev rules
  • (Linux) sudo systemctl enable zerotier-one.service && sudo systemctl start zerotier-one.service
  • (Linux) sudo bash -c 'grep -E '^dialout:' /usr/lib/group >> /etc/group' && sudo usermod -a -G dialout $USER
Sync settings.yml
hostname: "<hostname>"
profile: <chosen profile>

repository:
  type: git
  url: https://github.com/senz/vscode-settings.git
  branch: main

Declarative package management

I have 'invented' several package spec files in order to manage packages in a declarative way. I only support 'additive' package management, meaning that I only add packages, never remove them. This is generally non error-prone, and I can always remove packages manually. There is certain risk of having packages installed and not added to the spec file. This is a tradeoff I am willing to take.

Files suffixed with .pers.asc are encrypted protions of main files. They are decrypted and merged into the main file during chezmoi apply.

Package spec files

  • Pakfile – flatpak packages
  • Rpmfile – rpm packages used in Fedora, and specifically in ostree package layering
  • Appfile – appimage packages

TODO

Package specs:

  • comparing installed packages with package manifest, reporting differences
  • formal specifications and JSON schemas for spec files, plus autogenerated docs
  • move to chezmoidata

AppImage auto update handling. topgrade?

Use password manager for secrets. here1 and here2

References and inspiration

  • zero-sh – I started with this, liked its simplicity, but quickly hit its limitations.
    • it's unmaintained
    • no encryption support
    • multiple workspaces and inheritance creates confusion
    • MacOS specific
  • Unofficial guide to dotfiles on GitHub. Look into utilities section as well as inspirations
  • chezmoi – Im currently using this. It's more complex, because of heavy reliance on templating (like helm for configs), but have everything I need. Its well maintened, and you dont have to use templates if you dont want to.

dotfiles inspirations