Skip to content

pgodschalk/dotfiles

@pgodschalk/dotfiles

Report a Bug · Request a Feature

My collection of dotfiles

Project license

Pull Requests welcome code with love by pgodschalk

About

My collection of dotfiles. I mainly use this with Ghostty as a terminal emulator on macOS, and Windows Terminal on Windows.

Zed is my main editor, though I do keep Visual Studio Code around mainly for Windows support and Jupyter Notebooks (until that feature gets merged into mainline Zed).

Other than that,

  • 1Password is my secrets manager.
  • Lens is my Kubernetes IDE. I don't like TUI's but I also don't like typing kubectl (even with aliases) thousands of times per day.
  • Monodraw is my diagramming tool.
  • OrbStack runs my Docker containers, since Docker Desktop is just slow, and gets in my way a lot.
  • Passepartout is my VPN manager, other than Tailscale.
  • RapidAPI is used for playing with API's, if xh isn't enough.
  • Secretive is my SSH agent.
  • SnippetsLab is where I keep my code snippets.
  • TablePlus is my database browser.
  • Tailscale is my personal VPN.
  • Ulysses is my long form Markdown editor.
  • UTM is my virtualization manager.
  • Xcode kinda just exists.

Light theme Dark theme

Built with

Getting started

Prerequisites

  • A macOS or Linux environment to copy or symlink everything into.

Installation

These dotfiles are managed with chezmoi. The chezmoi source state lives in home/ (see .chezmoiroot).

# Install chezmoi (macOS)
brew install chezmoi

# Initialise from this repo and apply
chezmoi init --apply pgodschalk/dotfiles

On a fresh machine, also remove any system-level ZDOTDIR override so the chezmoi-managed ~/.zshenv can bootstrap it:

sudo rm -f /etc/zshenv      # macOS
sudo rm -f /etc/zsh/zshenv  # Linux

Usage

Edit the source and apply:

chezmoi edit ~/.config/git/config   # opens the source file
chezmoi apply                       # write changes to your home directory
chezmoi cd                          # drop into the source directory

The repo keeps the XDG convention, so $XDG_CONFIG_HOME resolves to ~/Library/Application Support on macOS but ~/.config on Linux. Because chezmoi derives each target path statically from its source path, shared files are stored once as a canonical copy at their Linux target path (home/dot_config/…, home/dot_local/…) and a small macOS stub under home/Library/… pulls the canonical bytes in with chezmoi's include function. home/.chezmoiignore selects the right subtree per OS.

Dev containers

These dotfiles apply inside a dev container or GitHub Codespace through the editor's personal dotfiles integration. Point your client at this repo — in VS Code, set dotfiles.repository to pgodschalk/dotfiles — and it clones the repo into the container and runs install.sh, which bootstraps chezmoi from home/.

The only thing bootstrapped is chezmoi itself — installed into ~/.local/bin via get.chezmoi.io when it is missing. Every other binary (git, zsh, starship, …) is assumed to already be present.

Secret-backed configs resolve each secret in order: a named environment variable first, then 1Password via op, then an empty fallback. So in a container — where 1Password is usually unavailable — supply the secrets as env vars through your platform's mechanism (Codespaces secrets, or a local dev container's remoteEnv), and the apply picks them up. Anything left unset degrades to empty instead of failing the apply. The variables are:

  • CONTEXT7_API_KEY — Context7 MCP server (Zed, Gemini).
  • GITHUB_PERSONAL_ACCESS_TOKEN — GitHub MCP server (Zed, Gemini); falls back to GITHUB_TOKEN when unset.
  • GHA_LANGUAGE_SERVER_TOKEN — Zed gh-actions-language-server.
  • INTELEPHENSE_LICENCE_KEY — intelephense license.

Codespaces injects a scoped GITHUB_TOKEN/GH_TOKEN automatically (and pre-authenticates gh), so the GitHub MCP server picks it up via the fallback above — subject to that token's scopes. The other variables are never set automatically; add each one you want populated as a Codespaces secret (or via a local dev container's remoteEnv).

Roadmap

See the open issues for a list of proposed features (and known issues).

Support

Reach out to the maintainer at one of the following places:

Project assistance

If you want to say thank you or/and support active development of dotfiles:

  • Add a GitHub Star to the project.
  • Write interesting articles about the project on Dev.to, Medium or your personal blog.

Together, we can make dotfiles better!

Contributing

First off, thanks for taking the time to contribute! Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make will benefit everybody else and are greatly appreciated.

Please read our contribution guidelines, and thank you for being involved!

Authors & contributors

The original setup of this repository is by Patrick Godschalk.

For a full list of all authors and contributors, see the contributors page.

Security

dotfiles follows good practices of security, but 100% security cannot be assured. dotfiles is provided "as is" without any warranty. Use at your own risk.

For more information and to report security issues, please refer to our security documentation.

License

This project is licensed under the EUPL-1.2 license.

See LICENSE for more information.

Acknowledgements

About

find /Users/patrick -name '.*' -type f -maxdepth 1

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors