Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
980 commits
Select commit Hold shift + click to select a range
48e8a0d
Add script to convert persistent history to CSV.
jimlawton Oct 31, 2025
f0d169f
Add atuin eval to zshrc.
jimlawton Nov 3, 2025
f3fe508
Update crontab: disable PH.
jimlawton Nov 3, 2025
6ba9b06
Add atuin config.
jimlawton Nov 3, 2025
2edde86
Update atuin config.
jimlawton Nov 3, 2025
e30af17
Add template to set fish as default shell.
jimlawton Nov 3, 2025
0064d95
Add base fish config.
jimlawton Nov 3, 2025
0a5d192
fish: Remove zellij, comment out .sensitive.
jimlawton Nov 3, 2025
8e95476
fish: add Homebrew setup.
jimlawton Nov 3, 2025
ad3aa29
Add Cargo bin to paths.
jimlawton Nov 3, 2025
4d1b912
Remove Ghostty var.
jimlawton Nov 3, 2025
1acd4fb
Prune shellpaths. This is semi-obsolete now.
jimlawton Nov 3, 2025
395d260
Add Tide config.
jimlawton Nov 3, 2025
8a2f391
Pull in work shellvars.
jimlawton Nov 3, 2025
5a0a4da
Update tide config.
jimlawton Nov 3, 2025
d39f56f
brew: install fisher.
jimlawton Nov 3, 2025
a440861
Use fisher to install tide.
jimlawton Nov 3, 2025
442b95e
Disable fisher for now, can't run it here.
jimlawton Nov 3, 2025
7f2267b
Remove starship setup, make sure tide is installed.
jimlawton Nov 3, 2025
8325e84
Remove commented out line.
jimlawton Nov 3, 2025
6d4cd65
Revert starship removal.
jimlawton Nov 3, 2025
4b5609a
Remove fisher.
jimlawton Nov 3, 2025
57f6d9b
Remove tide fish vars.
jimlawton Nov 3, 2025
fa92568
Add starship config.
jimlawton Nov 3, 2025
3dd9fc1
Update starship config.
jimlawton Nov 3, 2025
caa5f57
Update starship config.
jimlawton Nov 3, 2025
cf6fdbc
Update fish config.
jimlawton Nov 3, 2025
99e9acf
Update fish config.
jimlawton Nov 3, 2025
406df30
Prune shell aliases.
jimlawton Nov 3, 2025
a88ca09
fish: add abbreviations.
jimlawton Nov 3, 2025
9fbd91c
fish: add variables.
jimlawton Nov 3, 2025
2246914
fish: fix variables file.
jimlawton Nov 3, 2025
75d4289
starship: more tweaking, right prompt now works.
jimlawton Nov 3, 2025
4198e55
starship: move status prompt char to RHS.
jimlawton Nov 3, 2025
6a4be1c
starship: RHS success prompt is now a green tick.
jimlawton Nov 3, 2025
c64e6b4
starship: add spacing after LHS prompt.
jimlawton Nov 3, 2025
fdadbfb
starship: tweak colours.
jimlawton Nov 3, 2025
a8ecaab
fish: add paths file.
jimlawton Nov 3, 2025
598f275
fish: prune old zsh/bash config files.
jimlawton Nov 3, 2025
58b5d9a
fish: remove unused empty fish setup.
jimlawton Nov 3, 2025
102523e
fish: add paths file.
jimlawton Nov 3, 2025
60586f1
Remove oh-my-zsh.
jimlawton Nov 3, 2025
cb65767
Remove z submodule.
jimlawton Nov 3, 2025
f847f73
Remove z-zsh submodule.
jimlawton Nov 3, 2025
0b6442d
Remove z-autosuggestions submodule.
jimlawton Nov 3, 2025
dbbe020
Remove powerlevel10k submodule.
jimlawton Nov 3, 2025
d712666
fish: update paths module.
jimlawton Nov 3, 2025
e6d467d
starship: tweak git status.
jimlawton Nov 3, 2025
9cf1f37
fish: disable the greeting.
jimlawton Nov 3, 2025
a8ae0df
chezmoi: remove p10k config.
jimlawton Nov 3, 2025
845ac08
fish: remove ephemeral file.
jimlawton Nov 3, 2025
55ba97e
fish: disable some abbrevs.
jimlawton Nov 3, 2025
b6da401
Trying better Git prompt.
jimlawton Nov 4, 2025
4eb73f5
Removed custom git_status attempts.
jimlawton Nov 4, 2025
dba89e2
starship: tweak prompt colours.
jimlawton Nov 4, 2025
15efcda
Remove more zsh files.
jimlawton Nov 4, 2025
47ff4d6
Tidy.
jimlawton Nov 4, 2025
d25b8cd
Add template for chezmoi machine config.
jimlawton Nov 4, 2025
730f77e
Update prompts.
jimlawton Nov 4, 2025
51f12d7
chezmoi: moved config template to chezmoi dir.
jimlawton Nov 4, 2025
86823b3
brew: add age, rage.
jimlawton Nov 4, 2025
b51ce7c
chezmoi: ignore key.txt.age.
jimlawton Nov 4, 2025
6db35b4
chezmoi: encryption: switch from gpg to rage.
jimlawton Nov 4, 2025
343e751
chezmoi: ignore identity.txt.
jimlawton Nov 4, 2025
a9f1911
ignore identity.txt.
jimlawton Nov 4, 2025
53bb994
chezmoi: add encrypted key file.
jimlawton Nov 4, 2025
927ca9b
chezmoi: encryption, use age.
jimlawton Nov 4, 2025
397b850
chezmoi: add decryption template.
jimlawton Nov 4, 2025
bd0a4c1
chezmoi: remove dup include of vars file.
jimlawton Nov 4, 2025
8556f7f
Replace shellvars files.
jimlawton Nov 4, 2025
68f8244
Rename shellvars file.
jimlawton Nov 4, 2025
17b6cc6
chezmoi: shell vars file.
jimlawton Nov 4, 2025
ba4fb8b
Remove old file.
jimlawton Nov 4, 2025
96ceaad
Move config.
jimlawton Nov 4, 2025
56d2b89
Moved old script.
jimlawton Nov 4, 2025
692cac8
Moved old scripts.
jimlawton Nov 4, 2025
ea72600
chezmoi: move git aliases.
jimlawton Nov 4, 2025
050928a
chezmoi: move git identity files.
jimlawton Nov 4, 2025
feaedfc
Remove Dropbox symlinking, no longer needed.
jimlawton Nov 4, 2025
c46f43a
Move old script.
jimlawton Nov 4, 2025
d70b603
chezmoi: change gitconfig to template, pull in platform files.
jimlawton Nov 4, 2025
3f820ba
Update gitignore.
jimlawton Nov 4, 2025
3a04755
Update crontab.
jimlawton Nov 4, 2025
32e11db
Rename readme.
jimlawton Nov 4, 2025
4599727
Update readme.
jimlawton Nov 4, 2025
c06b737
Disable now abbrev.
jimlawton Nov 4, 2025
48e5953
Move crontab to chezmoi.
jimlawton Nov 4, 2025
49d082e
chezmoi: add template script to update crontab.
jimlawton Nov 4, 2025
0096b97
chezmoi: better crontab updater.
jimlawton Nov 4, 2025
99b8bf6
Rename crontab.
jimlawton Nov 4, 2025
782cc78
chezmoi: ignore crontab.
jimlawton Nov 4, 2025
a33d418
chezmoi: move hammerspoon setup.
jimlawton Nov 4, 2025
274ee73
More cleanup of setup script.
jimlawton Nov 4, 2025
9effe13
Remote iterm2 zsh integration.
jimlawton Nov 4, 2025
16828fa
Move iTerm settings to directory.
jimlawton Nov 4, 2025
17f97d1
Update iTerm2 settings.
jimlawton Nov 4, 2025
b510849
Add iTerm2 profiles.
jimlawton Nov 4, 2025
3cb5799
chezmoi: move iTerm2 setup.
jimlawton Nov 4, 2025
7c0b1ca
Remove some more vestigial setup.
jimlawton Nov 4, 2025
73608b9
chezmoi: add karabiner setup.
jimlawton Nov 4, 2025
3782c29
Setup: remove more obsolete stuff.
jimlawton Nov 4, 2025
228dcad
Moved daymd from wcripts repo.
jimlawton Nov 4, 2025
da4bac1
Point script into chezmoi checkout.
jimlawton Nov 4, 2025
5fe3a9d
Remove obsolete path.
jimlawton Nov 4, 2025
497092f
Point crontab at chezmoi dotfiles copy.
jimlawton Nov 4, 2025
357fbf4
Point hammerspoon at chezmoi dotfiles copy.
jimlawton Nov 4, 2025
4aedc91
Remove old setup script, finally.
jimlawton Nov 4, 2025
e7a575e
Remove scripts submodule.
jimlawton Nov 4, 2025
15b149d
chezmoi: fix links.
jimlawton Nov 5, 2025
1d5cc18
chezmoi: change Hammerspoon/Karabiner synlinks to templated symlinks.
jimlawton Nov 5, 2025
04012cb
chezmoi: update iTerm2 profiles.
jimlawton Nov 5, 2025
eb9fa05
chezmoi: add iTerm2 fish shell integration.
jimlawton Nov 5, 2025
8e24d07
chezmoi: rename iTerm2 file.
jimlawton Nov 5, 2025
6537a89
chezmoi: fish: use in-place iTerm2 integration.
jimlawton Nov 5, 2025
a2f4d22
chezmoi: fix crontab paths.
jimlawton Nov 5, 2025
8b81f00
starship: fix git_status ahead/behind.
jimlawton Nov 5, 2025
dc2517e
Update hyper-hacks module.
jimlawton Nov 5, 2025
50f6a8e
starship: fix git status issues.
jimlawton Nov 5, 2025
90d9362
chezmoi: remove obsolete file.
jimlawton Nov 5, 2025
2ee90fd
update readme.
jimlawton Nov 5, 2025
8382075
Update readme.
jimlawton Nov 5, 2025
6c23008
Initialise zoxide.
jimlawton Nov 6, 2025
5ff5d3f
Update hyper-hacks module.
jimlawton Nov 6, 2025
c62ef79
Update hyper-hacks module.
jimlawton Nov 6, 2025
88bc169
Update hyper-hacks module.
jimlawton Nov 6, 2025
f34f2db
Update hyper-hacks module.
jimlawton Nov 6, 2025
7996072
Update hyper-hacks module.
jimlawton Nov 6, 2025
771602e
Update hyper-hacks module.
jimlawton Nov 6, 2025
be716e1
Remove time from right prompt.
jimlawton Nov 7, 2025
75f943c
Fix starship transient prompt.
jimlawton Nov 7, 2025
0229e78
Update hyper-hacks module.
jimlawton Nov 7, 2025
014832c
Update hyper-hacks module.
jimlawton Nov 7, 2025
0221f06
Remove mise setup.
jimlawton Nov 10, 2025
a99bad1
Update readme.
jimlawton Nov 10, 2025
0cfdddd
Remove mise and OneNote.
jimlawton Nov 10, 2025
1708f64
Disable Microsoft apps from MAS install.
jimlawton Nov 10, 2025
5430bb3
fish: set up pyenv.
jimlawton Nov 10, 2025
3cdb677
Add script to ensure pyenv and Python are installed.
jimlawton Nov 10, 2025
557ddd5
chezmoi: change to template.
jimlawton Nov 10, 2025
ed6824c
pyenv: skip if already installed.
jimlawton Nov 10, 2025
adeb835
Add template script to set up Rust env.
jimlawton Nov 10, 2025
7fccd24
Add cargo-semver version constraint.
jimlawton Nov 10, 2025
ffff033
Rename script template and install pipx tools also.
jimlawton Nov 10, 2025
61e2eea
Rust: fix typo in crate name.
jimlawton Nov 10, 2025
3634a86
cargo: remove sccache.
jimlawton Nov 10, 2025
4b31a19
Disable unused daily note section.
jimlawton Nov 13, 2025
76c3909
Fix lint issue.
jimlawton Nov 14, 2025
6e7222a
atuin: disable automatic update check, let brew do it.
jimlawton Nov 14, 2025
0bba434
Add rcmd.
jimlawton Nov 17, 2025
c814f09
Restore Brewfile.
jimlawton Nov 17, 2025
7448327
Update Brewfile.
jimlawton Nov 17, 2025
735bbde
Install packages from Brewfile.
jimlawton Nov 17, 2025
a4eb138
When installing from Brewfile, avoid upgrading existing packages, whi…
jimlawton Nov 17, 2025
c8db731
Add a simple bootstrap script.
jimlawton Nov 17, 2025
a2bc487
Add .local/bin to path (for pipx stuff).
jimlawton Nov 24, 2025
fb8c7cc
Update Brewfile.
jimlawton Dec 8, 2025
687c66c
Update cargo installs.
jimlawton Dec 8, 2025
9125954
Update Brewfile.
jimlawton Dec 12, 2025
01887c9
Add more abbrevs.
jimlawton Dec 12, 2025
cd6f582
Disable make alias.
jimlawton Dec 12, 2025
cd33118
Remove the fish abbrev for make, it does not honour tab completions.
jimlawton Dec 12, 2025
b628e2e
Clean paths, add gmake path so it replaces system make.
jimlawton Dec 12, 2025
acf1258
Update Brewfile.
jimlawton Dec 16, 2025
4add690
Update Brewfile.
jimlawton Jan 5, 2026
e249e18
Update Brewfile.
jimlawton Jan 5, 2026
13e1b86
Update shell vars.
jimlawton Jan 5, 2026
e315387
Update Brewfile.
jimlawton Jan 6, 2026
04a5b4d
Update Brewfile.
jimlawton Jan 6, 2026
49d6c40
Update Brewfile.
jimlawton Jan 6, 2026
8ea83d1
Don't copy Brewfile to home dir.
jimlawton Jan 6, 2026
68f3b4d
Ensure script runs whenever Brewfile changes.
jimlawton Jan 6, 2026
efa9fc5
Use Brewfile from chezmoi directory.
jimlawton Jan 6, 2026
2a9e161
Update Brewfile.
jimlawton Jan 13, 2026
3b188e8
Update Brewfile.
jimlawton Jan 23, 2026
fe17740
Update Brewfile.
jimlawton Jan 23, 2026
cc6ab5d
Update Brewfile.
jimlawton Jan 23, 2026
01587b5
Update Brewfile.
jimlawton Jan 29, 2026
b758d78
Disable invalid tmux options.
jimlawton Jan 29, 2026
afd84cc
Update tmux config.
jimlawton Jan 30, 2026
04ec194
tmux: display pane info.
jimlawton Jan 30, 2026
3776b58
Stop fish from modifying tmux pane titles.
jimlawton Jan 30, 2026
1e5e6ff
Prune daily note heading.
jimlawton Feb 6, 2026
ecdec86
Update shell vars.
jimlawton Feb 6, 2026
97bd8ba
Add ghostty config.
jimlawton Feb 10, 2026
2736f69
Add ghostty shell integration for SSH.
jimlawton Feb 10, 2026
454757d
Update Brewfile.
jimlawton Feb 11, 2026
0595d6c
Add opencode config.
jimlawton Mar 10, 2026
2c78068
Add zed config.
jimlawton Mar 10, 2026
66fc808
Set path for Obsidian CLI.
jimlawton Mar 10, 2026
9d9e362
Add opencode config.
jimlawton Feb 25, 2026
000aa97
Add Claude config files.
jimlawton Mar 11, 2026
e6499df
Update Claude configs.
jimlawton Mar 12, 2026
b94d63a
Update Claude configs.
jimlawton Mar 13, 2026
3339f1b
Update Claude settings.
jimlawton Mar 18, 2026
0623977
Rename zed settings file.
jimlawton Mar 18, 2026
8d034c1
Update Claude settings.
jimlawton Mar 18, 2026
64644f5
Update Claude settings.
jimlawton Mar 18, 2026
5342770
Update atuin settings.
jimlawton Mar 18, 2026
a09b7ed
Update Claude settings.
jimlawton Mar 18, 2026
32fe4ee
Update Brewfile.
jimlawton Mar 19, 2026
6964284
Update Claude settings.
jimlawton Mar 19, 2026
d36e804
Remove ~/.claude.json, it's ephemeral.
jimlawton Mar 19, 2026
a5da5f6
Add Claude status line script.
jimlawton Mar 19, 2026
28dc6ea
Re-add Claude settings as plain file.
jimlawton Mar 19, 2026
e9501a7
Ghostty: enable copy on select.
jimlawton Mar 19, 2026
7b6dc63
Update Claude app settings.
jimlawton Mar 19, 2026
8bd6b1e
Ghostty: enable ctrl/option left/right nav.
jimlawton Mar 19, 2026
508f260
Add key bindings for Ghostty.
jimlawton Mar 20, 2026
4ac03cb
Update Claude app settings.
jimlawton Mar 20, 2026
c6d0448
Update Claude app settings.
jimlawton Mar 20, 2026
475a93a
Update Claude app settings.
jimlawton Mar 23, 2026
39242a5
Enable Claude auto-prompt.
jimlawton Mar 23, 2026
214ad47
Update Claude app settings.
jimlawton Mar 24, 2026
b1f82f1
Add bootstrap sequence to readme.
jimlawton Mar 24, 2026
2420d65
brew: update git-spice from formula to cask.
jimlawton Mar 24, 2026
bebf030
fish: add gs abbreviation for git-spice
jimlawton Mar 24, 2026
f7547af
fish: add env var to quieten homebrew
jimlawton Mar 24, 2026
ddc75d1
Update Claude app settings.
jimlawton Mar 24, 2026
19a4a58
brew: add brave-browser
jimlawton Mar 24, 2026
c321dd7
Remove SublimeText and SublimeMerge.
jimlawton Mar 24, 2026
7f8d3b7
Remove vscode and extensions.
jimlawton Mar 24, 2026
eaa249c
Update Claude app settings.
jimlawton Mar 24, 2026
89b4d3f
brew: add beyond-compare.
jimlawton Mar 24, 2026
07b25e3
brew: add claudebar.
jimlawton Mar 24, 2026
01eae8c
brew: add docker-desktop.
jimlawton Mar 24, 2026
f0fde88
brew: add ddpm.
jimlawton Mar 24, 2026
013b36b
brew: add fork.
jimlawton Mar 24, 2026
065a5d6
brew: add pocket-casts.
jimlawton Mar 24, 2026
86fef9a
brew: add slack.
jimlawton Mar 24, 2026
d9be00d
brew: add UTM.
jimlawton Mar 24, 2026
1dae8df
brew: add Wireshark.
jimlawton Mar 24, 2026
07328e8
brew: add Wispr Flow.
jimlawton Mar 24, 2026
a51f598
brew: add Zoom.
jimlawton Mar 24, 2026
006ea9d
brew: remove powerpoint.
jimlawton Mar 24, 2026
2cc4de3
bootstrap: install Rosetta.
jimlawton Mar 24, 2026
167d6b4
brew: remove temurin.
jimlawton Mar 24, 2026
43acc5c
brew: remove Proxy.
jimlawton Mar 24, 2026
ee74335
Update Brewfile.
jimlawton Mar 24, 2026
86f7276
claude: add superpowers skills.
jimlawton Mar 26, 2026
375319d
claude: enable auto-dream.
jimlawton Mar 26, 2026
89ad49e
brew: remove packer-completion.
jimlawton Mar 26, 2026
bed8ab9
Add instructions about avoiding App Store logins for free apps.
jimlawton Mar 27, 2026
06a7af6
brew: add whatsapp cask.
jimlawton Mar 27, 2026
732e5df
brew: pin cargo-semver.
jimlawton Mar 27, 2026
56b7da2
brew: add google-drive.
jimlawton Mar 27, 2026
d8ae1d7
brew: remove insync.
jimlawton Mar 27, 2026
0da0071
Update hyper-hacks submodule.
jimlawton Mar 27, 2026
75f85d6
Update Brewfile.
jimlawton Mar 29, 2026
879f27e
Update from local.
jimlawton Mar 31, 2026
1c98f31
chezmoi: ensure umask is correct
jimlawton Mar 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .chezmoiroot
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
chezmoi
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
netrc
boom
cloudapp
karabiner/automatic_backups
shellvars-work
shellfunctions-work
identity.txt
63 changes: 3 additions & 60 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,60 +1,3 @@
[submodule "vim-fugitive"]
path = vim/bundle/vim-fugitive
url = git://github.com/tpope/vim-fugitive.git
[submodule "vim-markdown"]
path = vim/bundle/vim-markdown
url = git://github.com/tpope/vim-markdown.git
[submodule "vim-sensible"]
path = vim/bundle/vim-sensible
url = git://github.com/tpope/vim-sensible.git
[submodule "vim-liquid"]
path = vim/bundle/vim-liquid
url = git://github.com/tpope/vim-liquid.git
[submodule "vim-scriptease"]
path = vim/bundle/vim-scriptease
url = git://github.com/tpope/vim-scriptease.git
[submodule "vim-surround"]
path = vim/bundle/vim-surround
url = git://github.com/tpope/vim-surround.git
[submodule "scripts"]
path = scripts
url = https://github.com/jimlawton/scripts
[submodule "unison-sync"]
path = unison-sync
url = https://github.com/jimlawton/unison-sync
[submodule "vim/bundle/vundle"]
path = vim/bundle/vundle
url = https://github.com/gmarik/vundle.git
[submodule "vim/bundle/vim-easymotion"]
path = vim/bundle/vim-easymotion
url = https://github.com/Lokaltog/vim-easymotion
[submodule "vim/bundle/sparkup"]
path = vim/bundle/sparkup
url = https://github.com/rstacruz/sparkup
[submodule "vim/bundle/L9"]
path = vim/bundle/L9
url = https://github.com/vim-scripts/L9
[submodule "vim/bundle/FuzzyFinder"]
path = vim/bundle/FuzzyFinder
url = https://github.com/vim-scripts/FuzzyFinder
[submodule "vim/bundle/command-t"]
path = vim/bundle/command-t
url = git://github.com/wincent/Command-T.git
[submodule "icdiff"]
path = icdiff
url = https://github.com/jeffkaufman/icdiff.git
[submodule "autoenv"]
path = autoenv
url = http://github.com/kennethreitz/autoenv.git
[submodule "git/mingit"]
path = git/mingit
url = https://github.com/jimlawton/mingit.git
[submodule "go-bash-completion"]
path = go-bash-completion
url = https://github.com/jimlawton/go-bash-completion.git
[submodule "git/git-identify"]
path = git/git-identify
url = https://github.com/ConnorAtherton/git-identify.git
[submodule "tmux/plugins/tpm"]
path = tmux/plugins/tpm
url = https://github.com/tmux-plugins/tpm
[submodule "hyper-hacks"]
path = hyper-hacks
url = https://github.com/jimlawton/hyper-hacks.git
23 changes: 0 additions & 23 deletions README.markdown

This file was deleted.

109 changes: 109 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
# dotfiles

This repository is meant to manage and configure a personalised dev env setup for MacOS/Linux.

This primarily uses [chezmoi](https://www.chezmoi.io/) to manage dotfiles and Homebrew to manage package installations.

## Structure

Packages are contained within .chezmoidata/packages.yaml

These are installed whenever the packages.yaml has changed and a `chezmoi apply` is run

## Usage

### App Store password setting

macOS asks for an App Store username/password by default, which makes unattended installs impossible.
If you are installing only (or mostly) free apps:

- Go to `System Settings` > [Your Name] > `Media & Purchases`.
- Under `Free Downloads`, change the setting to `Never Require`.

### The easiest way

```
$ curl https://raw.githubusercontent.com/jimlawton/dotfiles/refs/heads/master/bootstrap.sh -o bootstrap.sh
$ chmod +x bootstrap.sh
$ ./bootstrap.sh
```

### Install XCode Command Line Tools if necessary
```
xcode-select --install
```

### Install homebrew
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

### Install chezmoi
```
brew install chezmoi
```

### Clone the repo and apply the dotfiles
```
chezmoi init https://github.com/jimlawton/dotfiles

chezmoi apply
```

## Encrypted Files

Some files in this repo are encrypted. This is a good [page](https://www.chezmoi.io/user-guide/frequently-asked-questions/encryption/) that describes managing encrypted files in `chezmoi`.

The general sequence is:

- Use `chezmoi age-keygen` to generate a public/private key pair.
- The public key is a long string sth like `"age193wd0hfuhtjfsunlq3c83s8m93pde442dkcn7lmj3lspeekm9g7stwutrl"`. This is NOT a secret.
- The private key is a long string sth like `"AGE-SECRET-KEY-<REDACTED>"`. This IS a secret.
- Use `chezmoi age encrypt` to produce an encrypted private key file, using a passphrase. The encrypted key file is NOT a secret. However, the passphrase IS a secret.
- The FAQ says do this: `chezmoi age-keygen | chezmoi age encrypt --passphrase --output=key.txt.age`, however that never prints the public key, which you need, so do it in 2 steps:
- `chezmoi age-keygen -o identity.txt`
- `cat identity.txt | chezmoi age encrypt --passphrase --output=key.txt.age`
- Add `key.txt.age` to `.chezmoiignore` so chezmoi doesn't try to manage it.
- Don't leave `identity.txt` lying around, don't check it into Git and don't let chezmoi get its hands on it. Add it to `.gitignore` and `.chezmoiignore` for safety.
- Next, in your `.chezmoi.toml.tmpl` you'll need:

```
{{ $passphrase := promptStringOnce . "passphrase" "Chezmoi passphrase" -}}

encryption = "age"
[age]
identity = "~/.config/chezmoi/key.txt"
recipient = "<YOUR-AGE-PUBLIC-KEY-GOES-HERE"
```

- In chezmoi, add `run_onchange_before_decrypt-private-key.sh.tmpl`, with:

```
#!/bin/sh

if [ ! -f "${HOME}/.config/chezmoi/key.txt" ]; then
mkdir -p "${HOME}/.config/chezmoi"
chezmoi age decrypt --output "${HOME}/.config/chezmoi/key.txt" --passphrase "{{ .chezmoi.sourceDir }}/key.txt.age"
chmod 600 "${HOME}/.config/chezmoi/key.txt"
fi
```

- Add/commit `.chezmoi.toml.tmpl`, `.chezmoiignore`, `key.txt.age`, `run_onchange_before_decrypt-private-key.sh.tmpl` to Git.
- Finally: `chezmoi init --apply`
- Now, when you want to add files that should be stored encrypted in Git, you do: `chezmoi add --encrypt ~/.some-sensitive-file`.
- When you run `chezmoi init` on a new machine you will be prompted to enter your passphrase once to decrypt `key.txt.age`.
- Your decrypted private key will be stored on the target machine in `~/.config/chezmoi/key.txt`

## Git Identity Files

There are 2 encrypted Git identity files managed and used by this repo:
- `~/.gitidentity-personal` - for personal Git activity
- `~/.gitidentity-work` - for work Git activity

Each of these files is of the following form:

```
[user]
name = John Doe
email = john.doe@example.com
```
61 changes: 0 additions & 61 deletions _setupdotfiles.sh

This file was deleted.

3 changes: 0 additions & 3 deletions activities

This file was deleted.

Loading