{"id":21805898,"url":"https://github.com/marvinpinto/kitchensink","last_synced_at":"2025-06-20T08:06:07.658Z","repository":{"id":30721199,"uuid":"34277415","full_name":"marvinpinto/kitchensink","owner":"marvinpinto","description":"A Kitchen Sink Development Environment","archived":false,"fork":false,"pushed_at":"2025-03-27T09:01:11.000Z","size":481,"stargazers_count":9,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-20T20:07:23.254Z","etag":null,"topics":["brew-tap","chezmoi","dev-image","development","docker","dotfiles","linuxbrew-tap","machine"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marvinpinto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-04-20T18:07:21.000Z","updated_at":"2025-03-27T09:01:15.000Z","dependencies_parsed_at":"2024-03-09T16:40:07.888Z","dependency_job_id":"db741a92-445a-442d-8d39-c275755e7f90","html_url":"https://github.com/marvinpinto/kitchensink","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/marvinpinto/kitchensink","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvinpinto%2Fkitchensink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvinpinto%2Fkitchensink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvinpinto%2Fkitchensink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvinpinto%2Fkitchensink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marvinpinto","download_url":"https://codeload.github.com/marvinpinto/kitchensink/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvinpinto%2Fkitchensink/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260907100,"owners_count":23080609,"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":["brew-tap","chezmoi","dev-image","development","docker","dotfiles","linuxbrew-tap","machine"],"created_at":"2024-11-27T12:16:38.016Z","updated_at":"2025-06-20T08:06:02.647Z","avatar_url":"https://github.com/marvinpinto.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A Kitchen Sink Development Environment\n\n\u003cimg alt=\"kitchen sink logo\" height=\"200px\" src=\"logo.png\"\u003e\n\n\n## OSX Manual Preparation\n\nInstall Xcode:\n```bash\nxcode-select --install\n```\n\n\n## Linux Manual Preparation\n\n1. Boot up the machine with the USB key in place and manually install a recent [Ubuntu Desktop](https://ubuntu.com/download/desktop) LTS release.\n\n1. For the main machine, hit F12 on startup and select USB Storage Device.\n\n1. After the installation process completes, disable power saving \u0026 screen lock (so that the bootstrap process proceeds without complications). Power Button (top right) -\u003e Settings -\u003e Power \u003e Blank Screen -\u003e Never.\n\n1. After the installation process completes, install a few bootstrap utilities to get going:\n```bash\nsudo apt-get install -y curl ca-certificates\n```\n\n\n## Software Setup\n\nInitialize the software installation process with homebrew and a few other basics:\n```bash\nbash -xec \"$(curl -L https://raw.githubusercontent.com/marvinpinto/kitchensink/main/bootstrap.sh)\"\n```\n\nWhen bootstrapping the machine, clone the kitchensink repo locally and run the manifest from within there:\n```bash\ngit clone https://github.com/marvinpinto/kitchensink.git /tmp/kitchensink\ncd /tmp/kitchensink\n```\n\nSetup the homebrew path initially:\n```bash\n# linux\neval \"$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)\"\n```\n\n```bash\n# osx\neval \"$(/usr/local/bin/brew shellenv)\"\n```\n\nRun ansible to install \u0026 manage all the sytem components:\n```bash\nANSIBLE_VERBOSITY=2 make machine\n```\n\nBootstrap the 1password CLI (for secrets), export the specified env vars after it completes:\n```bash\nmake op-init\n```\n\nValidate that the 1password cli create the config file correctly, sometimes this does not work on the first try for whatever reason:\n```bash\n[[ -e \"${HOME}/.openv-cfg-dir/config\" ]] \u0026\u0026 true || echo \"1password CLI did NOT initialize successfully, re-run: make op-init\"\n```\n\n```bash\nexport OP_CONFIG_DIR=/tmp/openv-XXXXXXXXXX\nexport OP_SESSION_my=XXXXXXXXXXX\n```\n\nInitialize the dotfiles using [chezmoi](https://github.com/twpayne/chezmoi):\n```bash\nmake chezmoi-init\n```\n\n\n## Post Software Setup\n\n- **osx/linux**: reboot the machine and log back in\n\n- **osx**: If a homebrew cask/cli app throws a \"cannot be verified\" error, ctrl+click the app icon in Finder/Applications, and then choose \"Open\". This effectively saves the exception in security settings and it should not throw this error again.\n\n- **osx**: Manual keyboard preference changes (System Preferences -\u003e Keyboard):\n  - Keyboard: Adjust keyboard brightness in low light (enable)\n  - Keyboard: Turn keyboard backlight off after 5 secs of inactivity (enable)\n  - Modifier Keys: Change Caps lock to Ctrl\n  - Shortcuts -\u003e Accessibility: Map Cmd+Q to \"Invert Colors\"\n\n- **osx**: Install divvy and tailscale from the App Store and ensure they both run on startup.\n\n- **linux**: Apply any updated software patches using the `yoloupdate` alias.\n\n- **osx/linux**: Add the core AWS vault credentials:\n  ```bash\n  export OP_AWS_MFA_NAME=AWS-useraccount-marvin-dev\n  ave-init marvin\n  ```\n\n- **osx/linux**: Reboot the machine at least once to verify everything worked correctly.\n\n\n## Using the Kitchensink Tap\n\nThe [HomebrewFormula](/HomebrewFormula) directory contains a bunch of linux CLI \u0026 AppImage maps for use as Homebrew installations.\n\nAdd the `kitchensink` tap as follows:\n\n```bash\nbrew tap marvinpinto/kitchensink \"https://github.com/marvinpinto/kitchensink.git\"\n```\n\nThen install a formula as follows - using digikam as an example:\n\n```bash\nbrew install marvinpinto/kitchensink/digikam\n```\n\n\n## Development within VSCode Remote Containers\n\nCombining [remote containers](https://code.visualstudio.com/docs/remote/containers#_create-a-devcontainerjson-file) with [automatically setup dotfiles](https://code.visualstudio.com/docs/remote/containers#_personalizing-with-dotfile-repositories) enables very powerful throwaway dev environments.\n\nSee the example [devcontainer.json](/.devcontainer/devcontainer.json) and my vscode [settings.json](https://github.com/marvinpinto/kitchensink/blob/26c23c94de21e00b9adfee9a3f900f0abdb889f3/dotfiles/.chezmoitemplates/vscode_settings.json#L18-L20) file for inspiration.\n\n\n## Throwaway Environments from the Command Line\n\nAside from automatically creating environments in VSCode, this can also be used to to generate _throwaway_ environments/containers from the command line. This has only been used on Linux and probably won't work with OSX.\n\nUsing the [sink](https://github.com/marvinpinto/kitchensink/blob/775f75aec6cbd77727af87b6ceb119fb5b5d1922/dotfiles/dot_bash.d/kitchensink#L3-L45) bash function, this would create a temporary environment to experiment in, without affecting the host. Would look something like this:\n\n```text\n[mp-desktop: 19:56:07] ~\n$ sink test-env\nCreating new docker container\nCloning into '/home/worker/dotfiles'...\nremote: Enumerating objects: 1039, done.\nremote: Counting objects: 100% (364/364), done.\nremote: Compressing objects: 100% (242/242), done.\nremote: Total 1039 (delta 159), reused 294 (delta 97), pack-reused 675\nReceiving objects: 100% (1039/1039), 321.92 KiB | 4.13 MiB/s, done.\nResolving deltas: 100% (495/495), done.\n\n[test-env: 19:56:32] ~\n# echo \"hello from within test-env\"\nhello from within test-env\n\n[test-env: 19:56:55] ~\n# exit\nexit\n```\n\nThe above function creates the container (from the [Dockerfile](/Dockerfile) image), optionally mounts a source directory, then initializes the dotfiles within the container using [chezmoi](https://github.com/twpayne/chezmoi).\n\n\n## Troubleshooting Tips\n\nUse the following to discover ansible built-in variables:\n\n```text\nansible localhost -m ansible.builtin.setup | less\n```\n\n\n## License\n\nThe source code for this project is released under the [MIT License]((LICENSE.txt)).\n\n\n## Credits\n\nThe original incantation of this project was inspired by [github.com/shykes/devbox](https://github.com/shykes/devbox). The logo was made by [github.com/des4maisons](https://github.com/des4maisons).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarvinpinto%2Fkitchensink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarvinpinto%2Fkitchensink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarvinpinto%2Fkitchensink/lists"}