Personal dotfiles configuration for kamontat.
For additional terminology, see chezmoi reference.
Destination Directory: The directory being managed (typically~).Target: Individual files, directories, or symlinks inside the destination directory.Target State: The computed desired state for your destination directory.
Source Directory: Where chezmoi stores source state (~/.local/share/chezmoiby default).Source State: The desired state definition (including templates and machine-specific data).
The Git repository on your local machine (usually your Source Directory), which contains your source state and configuration.
An external Git repository (for example, GitHub) that you push local changes to and pull updates from. This is how you sync your dotfiles across multiple machines.
Install only non-encrypted data based on data flags.
chezmoi init kc-workspace --apply --force --purge-binary --promptDefaultsInstall all configured data based on data flags.
Requirement:
$HOME/.config/chezmoi/key.txt(otherwise, setup scripts will prompt for the encryption password).
chezmoi init kc-workspace --apply --force --purge-binary \
--promptDefaults --promptBool "Enable 1Password=true,Enable age=true"- Sign in to the App Store.
- Open the
Terminalapp. - Install Homebrew (macOS only).
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"- Install prerequisite dependencies.
## macOS (you will see <path> from step 2 output)
eval "$("/<path>/brew" shellenv)"
brew install git
## Debian-based
apt install -y git curl
## Alpine-based
apk add -y git curl- Install chezmoi temporarily via direct download.
sh -c "$(curl -fsSL get.chezmoi.io)" -- -b "$HOME/.local/bin" -t "v2.70.5"- Initialize the chezmoi repository.
## Add --dry-run to check the expected result first
"$HOME/.local/bin/chezmoi" init kc-workspace \
--apply --force --purge-binary --promptDefaults- Sign in to your account in the 1Password app.
- Enable Developer mode in 1Password (learn more).
- Enable
Show 1Password Developer experience. - Enable
Integrate with 1Password CLI. - Enable
Integrate with other apps. - Enable
Check for developer credentials on disk.
- Enable
- Open a new terminal window or tab. Zinit should start downloading dependencies.
- Validate
opstatus (optional).
## Validate account status
op whoami
# URL: https://my.1password.com/
# Email: <your-email>
# User ID: <your-user-id>- Get the full-setup encryption password from 1Password (optional).
## Use app search bar
# 7qxsqxktd3qziyp2m2hzw7bpp4
## Use 1Password CLI
op read --account my "op://h75rks2xxgluyljikha4oforri/7qxsqxktd3qziyp2m2hzw7bpp4/password"- Run full setup.
## This prompts for the encryption password from step 10
kdf-setup-full.sh- Restart your computer at least once to apply all changes.
- https://www.chezmoi.io/user-guide/daily-operations/
- https://www.chezmoi.io/user-guide/command-overview/
Common actions you might perform with this repository:
chezmoi update --init --applychezmoi purge- Zsh configuration: here
- Zinit as the Zsh plugin manager
- Git configuration: here
- Applications and packages (via Homebrew or apt)
- Command-line tools (via mise)
- Installed tools: here
- Working directory layout
- Encrypted files via gpg
- Password manager via 1Password
Installation method: chezmoi/external
zinit self-updatezinit update --allInstallation method: mise
Used to manage Neovim plugins and configuration.
nvim --headless -c '+Lazy! sync' +qaInstallation method: chezmoi/external
--greedy also upgrades casks with :latest or :auto-upgrade.
brew upgrade --greedyMain config:
$HOME/.config/mise/config.toml
Additional configs:
~/Works/<name>/mise.tomlfor work-related config~/Personal/mise.tomlfor personal-related config
Installation method: Homebrew (mise for CLI)
This is the core app that ties the configuration together. All secrets and private documents are stored in 1Password.
Installation method: Homebrew
- License location: 1Password
- Preference location: iCloud
- Enter your license (if any).
- Enable the permissions requested by the app.
- Go to
Preferences > Advanced > Reveal in Finder. - Copy your existing configuration and replace the current one.
Installation method: Setapp
- Connections file: iCloud
- Connection passwords: 1Password
Installation method: Homebrew
Important: You need your previous device to transfer an account. If your device was reset or sold, use the account recovery method.
Installation method: Homebrew
Important: You need your previous device to transfer an account. If your device was reset or sold, use the account recovery method.
Dotfiles in Docker have a two-stage setup.
By default, only Lite Setup is applied.
To use full setup, run kdf-setup.sh in the Docker instance.
## Start an interactive shell session
docker run -it --rm kamontat/dotfiles:localAll Docker images include attestations. You can verify integrity and provenance using the associated cryptographically signed attestations.
Verification output should include:
- Status:
✓ Verification succeeded! - The repository where the image was created
- The workflow and Git reference used to create the image
# gh attestation verify oci://kamontat/dotfiles:latest --owner kc-workspace
$ gh attestation verify "oci://kamontat/dotfiles:<tag-name>" --owner kc-workspace
...
✓ Verification succeeded!
...## Add read:packages scope to read images from GHCR
## You may need to log in first: https://cli.github.com/manual/gh_auth_login
$ gh auth refresh --scopes "read:packages"
# gh auth token | docker login "ghcr.io" --username "kamontat" --password-stdin
$ gh auth token | docker login "ghcr.io" --username "<username>" --password-stdin
# gh attestation verify "oci://ghcr.io/kc-workspace/dotfiles:latest" --owner kc-workspace
$ gh attestation verify "oci://ghcr.io/kc-workspace/dotfiles:<tag-name>" --owner kc-workspace
...
✓ Verification succeeded!
...The repository provides helper scripts named kdf-*.sh that should be available to everyone.
If you cannot run kdf-*.sh, check your ~/.local/bin directory.
There are still a few things we cannot automate.
- Menu bar items:
System Settings > Menu Bar > Menu Bar Controls
Please refer to the CONTRIBUTING guide.