{"id":25868280,"url":"https://github.com/sherpalabsio/.dotfiles","last_synced_at":"2026-05-06T15:45:47.487Z","repository":{"id":177076213,"uuid":"659704610","full_name":"sherpalabsio/.dotfiles","owner":"sherpalabsio","description":"Tools and shortcuts for lazy developers","archived":false,"fork":false,"pushed_at":"2025-02-22T16:14:30.000Z","size":1111,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-22T17:23:31.713Z","etag":null,"topics":["dotfiles","shell","zsh","zsh-configuration"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sherpalabsio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-28T11:38:13.000Z","updated_at":"2025-02-22T16:14:33.000Z","dependencies_parsed_at":"2023-10-24T23:23:18.397Z","dependency_job_id":"c8650376-150c-4582-9721-3b865bd2ff19","html_url":"https://github.com/sherpalabsio/.dotfiles","commit_stats":null,"previous_names":["tothpeter/dotfiles","tothpeter/.dotfiles","nomadsherpa/.dotfiles","sherpalabsio/.dotfiles"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sherpalabsio%2F.dotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sherpalabsio%2F.dotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sherpalabsio%2F.dotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sherpalabsio%2F.dotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sherpalabsio","download_url":"https://codeload.github.com/sherpalabsio/.dotfiles/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241460089,"owners_count":19966511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotfiles","shell","zsh","zsh-configuration"],"created_at":"2025-03-02T04:37:06.095Z","updated_at":"2025-10-30T14:10:41.996Z","avatar_url":"https://github.com/sherpalabsio.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Peter's Dotfiles\n\nTools and shortcuts I built for myself to automate manual work so I can focus on what matters.\\\nThese also help me to reduce the mental load of remembering and typing out commands.\\\nNo-one gets paid because they know by heart how to do connect to staging in a particular project.\n\n## Highlights\n\nAll the .sh files are loaded recursively.\\\nThe local folder keeps everything I want to keep private, like API keys, secrets, etc.\n\n### Terminal command palette\n\n- cmd + shift + p: Open the command palette\n- It is a fuzzy search for commands I defined globally and for the current folder\n- Select a command then hit cmd + enter to paste it to the prompt and execute it\n\n### Shortcuts\n\n```shell\n# Open a Ruby, Rails, Elixir, or Phoenix console depending on the current folder\n$ c\n\n# Start docker, start the containers, offer an fzf list to select a container\n# to connect to\n$ con\n\n# Git update - for feature branch workflow\n# Update the current Git branch with changes from the upstream main branch\n# It's best to work with the most recent version of the app\n\n# Steps it follows:\n# - Pulls the latest changes to my local main and feature branch\n# - Deletes the merged branches\n# - Runs an after hook if a folder specifies one\n# (run bundle install, yarn install, migrate the DB, etc.)\n$ gupd\n\n# Git: Discard all changes\n$ nah\n\n# GitX: Open the current Git repository in SourceTree\n# It works even if the Git folder is several levels up\n$ gx\n\n# Git amend: Add all changes to the last commit. Useful for TDD\n$ gam\n\n# Git rebase interactive all: Starts an interactive rebase for all the commits\n# on the current branch\n$ grbia\n\n# Git undo: Removes the last commit without losing its changes\n$ gu\n```\n\n### Terminal prompt (Zsh)\n\n\u003cimg width=\"1324\" height=\"676\" src=\"https://github.com/user-attachments/assets/17b97ebd-834c-4864-999e-d90c2749bd30\" /\u003e\n\n- When in a Git repository:\n  - Normal mode: `\"{top-level-directory} {git-branch}\"`\n    - For example: \"project_awesome main\"\n    - It also adds a ! after the branch name if there is any change\n  - Stopping at a commit: `\"{top-level-directory} rebase-i \u003e {target-sha} | {commit-subject}\"`\n    - For example: \"project_awesome rebase-i \u003e 123456 | Fix Stripe webhook verification\"\n    - This lets me know which commit is problematic in case of a rebase conflict or which commit we stopped at during an interactive rebase\n- When not in a Git repository:\n  - `\"{top-level-directory}\"`\n\n### SourceTree custom actions\n\n#### Fixup commit for the selected commit\n\nIn SourceTree: Right click on a commit \u003e Custom Actions \u003e Fixup. It will create a fixup commit\nfor the selected commit using the files added to staging.\n\nCreate a new SourceTree custom action\n\n- Menu caption: Fixup\n- Script to run: ~/.dotfiles/git/sourcetree_custom_actions/create_fixup_commit.sh\n- Parameters: $SHA\n\n#### Amend all changes to the selected commit\n\nIn SourceTree: Right click on a commit \u003e Custom Actions \u003e Amend all. It will amend\nall the changes to the selected commit.\n\nSourceTree custom action settings:\n\n- Menu caption: Amend all\n- Script to run: ~/.dotfiles/git/sourcetree_custom_actions/amend_all.sh\n- Parameters: $SHA\n\n## Install\n\n```shell\ngit clone git@github.com:nomadsherpa/dotfiles.git\nmv ~/dotfiles ~/.dotfiles\n# Homebrew https://brew.sh\n/bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"\n```\n\n## VS Code\n\n### Sync config\n\n```shell\nln -s ~/.dotfiles/vs_code/settings.json ~/Library/Application\\ Support/Code/User/settings.json\nln -s ~/.dotfiles/vs_code/keybindings.json ~/Library/Application\\ Support/Code/User/keybindings.json\nln -s ~/.dotfiles/vs_code/tasks.json ~/Library/Application\\ Support/Code/User/tasks.json\nln -s ~/.dotfiles/vs_code/snippets/ ~/Library/Application\\ Support/Code/User/snippets\n```\n\n### Make `code` command available in the terminal\n\nCommand Palette \u003e shell command\n\n## iTerm2\n\n### Sync config\n\n```shell\n# Specify the preferences directory\ndefaults write com.googlecode.iterm2 PrefsCustomFolder -string \"~/.dotfiles/iTerm/settings\"\n\n# Tell iTerm2 to use the custom preferences in the directory\ndefaults write com.googlecode.iterm2 LoadPrefsFromCustomFolder -bool true\n```\n\n### Turn off the login banner (\"Last login ...\")\n\n```shell\ntouch ~/.hushlogin\n```\n\n## Oh My ZSH\n\n### Install\n\nhttps://ohmyz.sh/#install\n\n### Sync config\n\n```shell\nmv ~/.zshrc ~/.zshrc.old\nln -s ~/.dotfiles/zsh/zshrc.symlink ~/.zshrc\n```\n\n### zsh-syntax-highlighting plugin\n\nIt has to be listed LAST in the plugins list in `~/.zshrc` for it to be enabled.\n\n```shell\ngit clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting\n```\n\n### Setup local secrets\n\n```shell\ntouch $DOTFILES_PATH/local/localrc.sh\n```\n\n## Git\n\n### Sync config\n\n```shell\nln -s ~/.dotfiles/git/.gitconfig.global ~/.gitconfig\n```\n\n### Signing commits with GPG\n\n```shell\nbrew install gpg\nln -s $DROPBOX_PATH/backup/.dotfiles/.gnupg ~/.gnupg\n```\n\n#### Sourcetree\n\n```shell\nln `brew --prefix gpg`/bin/gpg `brew --prefix gpg`/bin/gpg2\n```\n\nSourcetree \u003e Preferences \u003e Advanced \u003e set custom path for GPG Program to `brew --prefix gpg`/bin/gpg\n\nSourcetree \u003e Repo settings \u003e Security \u003e Enable GPG signing\n\nSourcetree \u003e commit \u003e Commit options \u003e Sign commit\n\n## asdf\n\n### Install\n\n```shell\nbrew install asdf\n```\n\n### Update\n\n```shell\nasdf plugin-update ruby\n```\n\n## Ruby\n\n### Install\n\n```shell\nasdf plugin add ruby\nasdf install ruby latest\nasdf global ruby latest # set global ruby version\n```\n\n### Initial Set-up\n\n```shell\nln -s ~/.dotfiles/ruby/irbrc.symlink ~/.irbrc\nln -s ~/.dotfiles/ruby/gemrc.symlink ~/.gemrc\n```\n\n### Install Rails and Bundler\n\n```shell\ngem install rails\ngem install bundler\n```\n\n## Other tools\n\n```shell\nbrew install fzf\n$(brew --prefix)/opt/fzf/install # To install key bindings to iTerm and fuzzy completion\n\n# Local Sherpa\ngit clone git@github.com:nomadsherpa/local_sherpa.git ~/.dotfiles/lib/local_sherpa\n```\n\n### VLC\n\n```shell\nmv -v ~/Library/Preferences/org.videolan.vlc/vlcrc ~/.dotfiles/others/vlc/vlcrc\nln -s ~/.dotfiles/others/vlc/vlcrc ~/Library/Preferences/org.videolan.vlc/vlcrc\n```\n\n## OSX Shortcuts\n\nTo check what we have:\n\n```shell\ndefaults read -g NSUserKeyEquivalents\n```\n\n### Merge All Windows shortcut for all apps (cmd + shift + m)\n\n```shell\ndefaults write -g NSUserKeyEquivalents -dict-add \"Merge All Windows\" -string '@$m'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsherpalabsio%2F.dotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsherpalabsio%2F.dotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsherpalabsio%2F.dotfiles/lists"}