Skip to content

Personal dotfiles configurations for Linux, MacOS, and Windows for terminals and other configurables.

License

Notifications You must be signed in to change notification settings

Matthew-Benson/dotfiles

Repository files navigation

dotfiles

Personal dotfiles configurations for Linux, MacOS, and Windows for terminals and other configurables.

To bring this configuration to a new system, use chezmoi.

See the install instructions from chezmoi docs for more. Typically, install via the following.

NOTE: run in home directory for this to write the correct directory.

sh -c "$(curl -fsLS get.chezmoi.io/lb)" -- init --apply matthew-benson

Also create chezmoi.toml config file that cannot be managed by chezmoi:

cat <<EOF > $HOME/.config/chezmoi/chezmoi.toml
[diff]
    exclude = ["externals"]
EOF

On Windows:

# To install in ./bin
(iwr -UseBasicParsing https://git.io/chezmoi.ps1).Content | powershell -c -

# To install in another location
'$params = "-BinDir ~/other"', (iwr https://git.io/chezmoi.ps1).Content | powershell -c -

# For information about other options, run
'$params = "-?"', (iwr https://git.io/chezmoi.ps1).Content | powershell -c -

See https://www.chezmoi.io/docs/install/ for more.

See also: chezmoi quick start guide.

Linux/MacOS ZSH Theme

Fonts

Install meslo-nerd and configure for Linux/MacOS:

https://github.com/romkatv/powerlevel10k#meslo-nerd-font-patched-for-powerlevel10k

Plugins and oh-my-zsh are managed by chezmoi, but versions for releases in the config may need updated from time to time.

Dependencies

Scripts depend on python 3+ and are needed to manage external targets.

Making Changes

There are a few approaches outlined in this doc: How do I edit my dotfiles with chezmoi?

The best approaches are using chezmoi edit --apply $FILE to apply the changes when you quit your editor, and chezmoi edit --watch $FILE to apply the changes whenever you save the file.

Alternatively, edit the file in your home directory, and then either re-add it by running chezmoi add $FILE or chezmoi re-add.

You can also open the local chezmoi repo in your editor then use chezmoi apply to sync all changes to your home directory.

Updating Chezmoi

chezmoi upgrade

Updating External Files

chezmoi -R apply

See Dealing with State Drift.

Dealing with State Drift

Sometimes the local state of dotfiles in the home directory becomes different from the state in the local chezmoi repo. chezmoi diff will show the changes between the local chezmoi repo and the contents of the home directory.

Very often, files from .oh-my-zsh will be updated automatically and cause a state diff between local chezmoi repo and the home directory. These can be updated with chezmoi -R apply. This will prompt for an overwrite for every changed file, and because this can be a lot, typically you choose "all-override". See External Files.

External Files

chezmoi managed outputs all files managed by Chezmoi, including files created by external dependencies. To date in this repo, that's mainly just files from .oh-my-zsh. These can be filtered out with the following command:

chezmoi managed | awk '!/.oh-my-zsh/'

This is helpful, for instance, for external dependencies managed by .chezmoiexternal.toml, which are external files that are treated as if they are in the source state, but are not tracked by git. An external dependency like .oh-my-zsh includes hundreds of files that will appear in the output of chezmoi diff or chezmoi managed if not ignored, which makes it hard to discern quickly whether a diff shows a drift in state from repo source or not. See chezmoiexternal reference and Dealing with State Drift.

For file and archive externals, chezmoi will cache downloaded URLs. The optional duration refreshPeriod field specifies how often chezmoi will re-download the URL. The default is zero meaning that chezmoi will never re-download unless forced. To force chezmoi to re-download URLs, pass the -R/--refresh-externals flag. Suitable refresh periods include one day (24h), one week (168h), or four weeks (672h).

Development

Dependencies

  • Python 3+
  • protoc

About

Personal dotfiles configurations for Linux, MacOS, and Windows for terminals and other configurables.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages