{"id":16653554,"url":"https://github.com/norm/suited","last_synced_at":"2025-10-08T17:27:47.948Z","repository":{"id":66550736,"uuid":"66565850","full_name":"norm/suited","owner":"norm","description":"Set up your macOS development environment","archived":false,"fork":false,"pushed_at":"2018-05-05T06:05:43.000Z","size":123,"stargazers_count":9,"open_issues_count":14,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-02T12:31:16.443Z","etag":null,"topics":["macos-setup"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"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/norm.png","metadata":{"files":{"readme":"README.markdown","changelog":"CHANGELOG.markdown","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}},"created_at":"2016-08-25T14:37:25.000Z","updated_at":"2022-07-17T11:28:25.000Z","dependencies_parsed_at":"2023-02-28T13:30:53.616Z","dependency_job_id":null,"html_url":"https://github.com/norm/suited","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/norm/suited","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Fsuited","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Fsuited/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Fsuited/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Fsuited/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/norm","download_url":"https://codeload.github.com/norm/suited/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/norm%2Fsuited/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264679366,"owners_count":23648274,"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":["macos-setup"],"created_at":"2024-10-12T09:45:51.298Z","updated_at":"2025-10-08T17:27:42.912Z","avatar_url":"https://github.com/norm.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"suited\n======\n\nSet up your Mac OS X development environment as a lone developer, or as\npart of a team.\n\n## Quick example usage and suitfile\n\nFrom a fresh install of macOS/OS X, create an account that can administer\nthe computer.\n\nOpen the Terminal application and setup some environment variables.\n\n    export GIT_NAME='Wendy Testaburger'\n    export GIT_EMAIL='wendy@example.com'\n    export GITHUB_USER='wendy'\n\nCreate a new GitHub [personal access token][token] with at least the `repo`\nand `write:public_key` scopes active. Copy the token into your environment.\n\n    export GITHUB_TOKEN='123abc...'\n\nCreate a new SSH key and register it with GitHub (or copy an existing one\nyou already have to your computer).\n\n```bash\n# create key and add to the ssh-agent\nssh-keygen -trsa -b4096 -C \"$GIT_EMAIL\" -f $HOME/.ssh/id_rsa\nssh-add $HOME/.ssh/id_rsa\n\n# upload new key to GitHub\npubkey=$( cat $HOME/.ssh/id_rsa.pub )\njson=$( printf '{\"title\": \"%s\", \"key\": \"%s\"}' \"$GIT_EMAIL\" \"$pubkey\" )\ncurl -d \"$json\" https://api.github.com/user/keys?access_token=$GITHUB_TOKEN\n```\n\nFetch `suited.sh` and run it, telling it which file(s) to use to setup\nyour computer. They can be relative or absolute path, URLs or special \ngithub notation (as explained in [the suitfile documentation][sfd]).\n\n    curl -O https://raw.githubusercontent.com/norm/suited/latest/suited.sh\n    bash suited.sh github:wendy/suit:main.conf\n\nAlternatively, an argument of a hyphen (`-`) means to use standard input\nas the suitfile:\n\n    echo \"github:wendy/suit:Brewfile\" | bash suited.sh -\n\n\n[token]: https://github.com/settings/tokens\n[sfd]: documentation/suitfile.markdown##relative-and-absolute-paths-and-urls\n\n\n### Example suitfile\n\n    # setup xcode, homebrew and git\n    github:norm/suited:setup/install_xcode.sh\n    github:norm/suited:setup/homebrew.sh\n    github:norm/suited:setup/git.sh\n\n    # personal software\n    github:wendy/suit:Brewfile\n\n    # checkout code\n    repo wendy/suit\n    repo wendy/dotfiles\n\n    # lastly, ensure software is up to date\n    github:norm/suited:setup/software_update.sh\n\n\n## More documentation\n\nYou should read these before getting starting with `suited`:\n\n  * [Using suited](documentation/usage.markdown)\n  * [The suitfile in depth](documentation/suitfile.markdown)\n\nI keep my setup [in a separate public repo](https://github.com/norm/suit/),\nto serve as a reference example of how to use `suited`.\n\n\n## Why yet another macOS/OSX bootstrapper\n\nWhy create another bootstrapper for your Mac computer? There are already\nmany other systems, such as:\n\n  * [battleschool](https://github.com/spencergibb/battleschool)\n  * [boxen](https://github.com/boxen/our-boxen)\n  * [chef-osx](http://chef-osx.github.io)\n  * [dev-setup](https://github.com/donnemartin/dev-setup)\n  * [laptop](https://github.com/thoughtbot/laptop)\n  * [mac-dev-playbook](https://github.com/geerlingguy/mac-dev-playbook)\n  * [osxc](https://osxc.github.io)\n  * [strap][strap]\n  * [vanilla Puppet](http://blog.tfnico.com/2016/03/replacing-boxen-with-vanilla-puppet-for.html)\n  * [workstation-chef](https://github.com/jtimberman/workstation-chef-repo)\n\nOne reason to create this is to minimise the amount of **stuff** needed\nto write in order to setup a new laptop.\n\nAnother reason is frustration with the fragility of using software like\npuppet to only partially manage a machine — GitHub have abandoned using\nboxen ([replacing it with strap][blog-strap]) for similar reasons.\n\nAnother is that whilst something like [strap][strap] (which is little more\nthan a bit of shell setup and then using Homebrew) is almost what I wanted,\nI still missed the ability for multiple users to collaborate on setups,\nas when using boxen (a great example was the [GDS boxen][gds-boxen]).\n\nSo here is `suited` (taken from the phrase [suited and booted][sb], but you\ncan pretend it is a reference to making a computer suitable for use).\n\n[blog-strap]: http://mikemcquaid.com/2016/06/15/replacing-boxen/\n[gds-boxen]: https://github.com/alphagov/gds-boxen\n[sb]: https://en.wiktionary.org/wiki/suited_and_booted\n[strap]: https://github.com/mikemcquaid/strap\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnorm%2Fsuited","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnorm%2Fsuited","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnorm%2Fsuited/lists"}