{"id":16675897,"url":"https://github.com/martijngastkemper/dotfiles","last_synced_at":"2026-04-08T23:32:25.202Z","repository":{"id":60137037,"uuid":"135618705","full_name":"martijngastkemper/dotfiles","owner":"martijngastkemper","description":null,"archived":false,"fork":false,"pushed_at":"2026-03-04T16:03:35.000Z","size":7128,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-04T22:50:23.964Z","etag":null,"topics":["dotfiles","git","homebrew","iterm2","macos","tmux","vim","zsh"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/martijngastkemper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2018-05-31T18:03:11.000Z","updated_at":"2026-03-04T16:09:17.000Z","dependencies_parsed_at":"2026-02-17T07:00:12.119Z","dependency_job_id":null,"html_url":"https://github.com/martijngastkemper/dotfiles","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/martijngastkemper/dotfiles","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martijngastkemper%2Fdotfiles","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martijngastkemper%2Fdotfiles/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martijngastkemper%2Fdotfiles/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martijngastkemper%2Fdotfiles/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/martijngastkemper","download_url":"https://codeload.github.com/martijngastkemper/dotfiles/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/martijngastkemper%2Fdotfiles/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31579035,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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","git","homebrew","iterm2","macos","tmux","vim","zsh"],"created_at":"2024-10-12T13:08:20.149Z","updated_at":"2026-04-08T23:32:25.197Z","avatar_url":"https://github.com/martijngastkemper.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dotfiles\n\n[![Github Action linting badge](https://github.com/martijngastkemper/dotfiles/workflows/Linting/badge.svg)](https://github.com/martijngastkemper/dotfiles/actions)\n\n![Screenshot of my terminal](screenshot.png)\n\nInspired by [harmenjanssen/dotfiles](https://github.com/harmenjanssen/dotfiles), [jackfranklin/dotfiles](https://github.com/jackfranklin/dotfiles) and [mathiasbynens/dotfiles](https://github.com/mathiasbynens/dotfiles)\n\n## Utility scripts\n\n### `make`\n\nLists all the available source. For a fine grained install.\n\n### `bin/apply_git_templates`\n\nAfter changing a hook in `git_templates/` I want to apply these changes to existings checkouts. This scripts copies the files to `.git/` in the project. It asks to confirm overwriting existing files.\n\n### `bin/dark`\n\nSwitch tmux and vim to dark mode.\n\n### `bin/light`\n\nSwitch tmux and vim to light mode.\n\n### `bin/public_port`\n\nWhen using Docker Compose it's not clear which public ports services expose. Looking into one of the `docker-compose*.yml` files is cumbersome. Use `public_port` to get the public port of a service.\n\nUses port 80 by default\n\n```bash\npublic_port\n# Private port 80\n# web: 0.0.0.0:10000\n```\n\nGet the port for MySQL\n\n```bash\npublic_port 3306\n# Private port 3306\n# db: 0.0.0.0:20000\n```\n\n## Installation\n\n### Step 1: Dotfiles\n\n```bash\ngit clone git@github.com:martijngastkemper/dotfiles.git ~/.dotfiles\n# when git is not available install brew (https://brew.sh), this will install git on MacOS\ncd ~/.dotfiles\nmake symlinks\n```\n\n### Step 2: Brew\n\nFollow the installation instructions on [brew.sh](https://brew.sh).\n\n```bash\nmake install_brew_packages\n```\n\n### Step 3: Setup 1Password\n\n1Password should be installed by Brew. Open it, login and open preferences:\n\nGeneral:\n- Disable \"Keep 1Password in the menu bar\"\n- Enable \"Start at login\"\n- Disable \"Autofill\"\n\nAppearance:\n- Set \"Density\" to \"Compact\"\n- Disable \"Categories\" and \"Tags\"\n\nSecurity:\n- Enable \"Hold Option to toggle revealed fields\"\n\nDeveloper:\n\n- Enable \"Show 1Password Developer experience\"\n- Enable \"Use the SSH Agent\"\n- Set \"Open SSH URLs with\" to \"iTerm2\"\n\n### Step 4: Shell\n\nZsh will be installed by Brew. To activate it run:\n\n```bash\nmake configure_zsh\n```\n\nAlso configure bash, so when ZSH isn't available or you have to use Bash some convenient settings are at your hands:\n\n```bash\nmake configure_bash\n```\n\n### Step 5: vim\n\n```bash\nmake configure_vim\n```\n\n### Step 6: tmux\n\nStart tmux before configuring it.\n\n```bash\ntmux new-session -d\nmake configure_tmux\n```\n\n### Step 7: Node\n\n```bash\nmake install_nvm\nnvm install 20\nmake install_yarn\n```\n\n### Step 8: Composer\n\nInstall Composer 2* globally:\n\n```bash\nmake install_composer\n```\n\nA mechanism to more effectively merge `composer.json` and `composer.lock` files.\n\n```bash\nmake install_composer_git_merge_driver\n```\n\n### Step 9: Configure MacOS\n\n```bash\nmake configure_macos\n```\n\nSettings to change manually\n\n*Let Caps Lock be an Escape key*\nSystem Settings -\u003e Keyboard -\u003e Keyboard Shortcuts -\u003e Modifier Keys -\u003e Caps Lock -\u003e Esc\n\n*Lock computer immediately*\nSystem Settings -\u003e Lock Screen -\u003e Require password after screen saver...\n\nSwitch between light and dark tmux theme automatically when macOS appearance changes:\n\n```bash\nmake configure_theme_switcher\n```\n\nRun QMD MCP server as a background service (HTTP on port 8181):\n\n```bash\nmake configure_qmd\n```\n\n### Step 10: Python\n\nInstall Python 3 and make the `python` and `pip` binaries available:\n\n```bash\nmake install_python\n```\n\n## Override Zsh settings\n\nTo load settings to Zsh which aren't global, add them to:\n\n```bash\nvim ~/.zshrc.local\n```\n\n## PhpStorm\n\nThe plugins I use:\n\n- .env files support\n- IdeaVim\n- Makefile support\n- Prettier\n- Terraform and HCL\n\n## Find domain and key for usage in ``defaults``\n\nIt's hard to find the right domain and key of a preference. To find it, use ``diff`` showing some extra lines of context:\n\n```bash\ndefaults read \u003e before\n# make the desired changes to your preferences\ndefaults read \u003e after\ndiff -C3 before after\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartijngastkemper%2Fdotfiles","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmartijngastkemper%2Fdotfiles","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmartijngastkemper%2Fdotfiles/lists"}