{"id":18648325,"url":"https://github.com/luciditi/env-setup","last_synced_at":"2026-04-08T11:31:01.750Z","repository":{"id":182707564,"uuid":"668961518","full_name":"Luciditi/env-setup","owner":"Luciditi","description":"A workstation provisioner powered by Ansible \u0026 Homebrew.","archived":false,"fork":false,"pushed_at":"2025-12-14T23:01:23.000Z","size":160,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-03T12:25:04.256Z","etag":null,"topics":["ansible","aws","bash","cloudflare","docker","dockerfile","git","homebrew","hono","router","tart","terraform","typescript","vm","wrangler","yaml","zsh"],"latest_commit_sha":null,"homepage":"https://jig.io/env-setup","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/Luciditi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-07-21T02:46:41.000Z","updated_at":"2025-12-14T23:00:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"1d761948-f657-4253-91fa-9acbe5804bc8","html_url":"https://github.com/Luciditi/env-setup","commit_stats":null,"previous_names":["luciditi/env-setup"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/Luciditi/env-setup","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luciditi%2Fenv-setup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luciditi%2Fenv-setup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luciditi%2Fenv-setup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luciditi%2Fenv-setup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Luciditi","download_url":"https://codeload.github.com/Luciditi/env-setup/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luciditi%2Fenv-setup/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31553967,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T10:21:54.569Z","status":"ssl_error","status_checked_at":"2026-04-08T10:21:38.171Z","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":["ansible","aws","bash","cloudflare","docker","dockerfile","git","homebrew","hono","router","tart","terraform","typescript","vm","wrangler","yaml","zsh"],"created_at":"2024-11-07T06:30:18.557Z","updated_at":"2026-04-08T11:31:01.729Z","avatar_url":"https://github.com/Luciditi.png","language":"Shell","readme":"# env-setup\n\u003cimg align=\"right\" width=\"250\" src=\"https://github.com/Luciditi/env-setup/assets/1087111/7ad0d467-384e-483c-8dcd-b63c19d90c3e\"\u003e\n\nA workstation provisioner powered by [Ansible](https://www.ansible.com/) / [Homebrew](https://brew.sh/) for either macOS or Linux.\n\n## Quickstart\nGet started with `env-setup`:\n\n1. Init: `bash \u003c(curl -sL jig.io/env-setup)` \n    - or `brew install luciditi/tap/env-setup` with [Homebrew](https://brew.sh/).\n2. Config: `env-setup -c` \n    - `none`: You want an **empty** config.\n    - `mini`: You want a **minimum** config.\n    - `default`: You want a **workable default** config.\n    - `most`: You want it **all**.\n    - `custom`: You want a **new** `config.yml` config started. (edit w/ `env-setup -e`)\n3. Run: `env-setup`\n\n## Usage\n\n\u003cimg align=\"right\" width=\"250\" src=\"https://github.com/Luciditi/env-setup/assets/1087111/0e6b5b99-477c-49df-b6f3-42e908dffa8a\"\u003e\n\n### Init\nThe initialize command will verify you have `git` \u0026 a SSH key to retrieve this \nrepo. You'll need to allow a new SSH key in [GitHub](https://github.com/settings/keys) \nif not already set. It will install the tool in your home dir under `env-setup`.\n\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\n\n\u003cimg align=\"right\" width=\"250\" src=\"https://github.com/Luciditi/env-setup/assets/1087111/4abc41e2-79b0-4f11-9504-ce9221852d83\"\u003e\n\n### Config\nThe configuration yml file (`config.yml`) contains a **manifest** of Ansible _variables_ \nthat define **_what should be installed in your environment_**. You can change the \nvalues in `config.yml` to fit what your environment setup needs.\n\n`env-setup` has a few starter config templates from these starter scenarios:\n  - `none`: You don't need an environment setup, but you want the `env-setup` tool for later use.\n  - `mini`: You want a environment setup with only the basic functionality (scripts, Homebrew, \u0026 Ansible).\n  - `default`: You **workable default** environment setup that will be used semi-often.\n  - `most`: You want it **all** in a environment setup that you'll use often.\n  - `custom`: You want a **custom** `config.yml` that you'll specify on your own (see an [example config.yml](https://gist.github.com/ShawnConn/2400705e601d6315394f0e4f01bb66b8))\n\nIf you need to manually update a `custom` config, use `env-setup -e` to edit it.\n\u003cimg align=\"right\" width=\"250\" src=\"https://github.com/Luciditi/env-setup/assets/1087111/7d30e859-b7c6-4f21-b35d-879ae550a4f7\"\u003e\n\n### Run\nWhen `env-setup` is first run it will verify you have Ansible. After that, you'll\nbe prompted to select an Ansible _playbook_ to run. Optionally, you can specify\nwhat playbook to run directly (e.g. `env-setup 01-config` will run the config \nplaybook directly, `env-setup all` will run all playbooks in sequential order)\n\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\u003cbr /\u003e\n\n### Updating\nRunning `env-setup -u` will update the installed repo alongside the installed \n[dotfiles repo](https://github.com/Luciditi/env-setup-dotfiles). \n\n### Playbooks\nAn Ansible _playbook_ is a series of _tasks_ that need to run to get to your wanted setup.\n`env-setup` has 8 main playbooks with other optional ones based on your needs.\n\n- `01-config`: Configure your [dotfiles](https://dotfiles.github.io/) for your app \u0026 CLI configuration (defaults to [env-setup-dotfiles](https://github.com/Luciditi/env-setup-dotfiles) if not overridden)\n- `02-cli`: Install CLI tools via [Homebrew formulas](https://formulae.brew.sh/formula/)\n- `03-apps`: Install GUI applications via [Homebrew casks](https://formulae.brew.sh/cask/) \u0026 other means (e.g., Linux package manager \u0026 App Store via [mas](https://github.com/mas-cli/mas))\n- `04-packages`: Install common programming language (Go/Node/PHP/Ruby/Rust/Python) dependencies for development tooling.\n- `05-repos`: Clones Git repos used for active development (projects) or reference (vendors).\n- `06-os`: Configure the OS settings.\n- `07-cloud`: Configure the host for cloud file sync.\n- `08-prefs`: Configure any other app settings.\n\nSee **custom playbook** section for adding other playbooks as needed.\n\n### Task Info\nIf you like a _list_ of what _tasks_ in a playbook will do, run `env-setup -i` with \nthe playbook name (e.g. `env-setup -i 03-apps`). It will print an ordered task \nlist, with a description and tags that describe what the playbook will do.\n\n### Skipping Tasks\nIf you'd like to _skip_ tasks in a playbook, each task have tags associated \nwith them. You can **select tags** with the `-t` option or **skip tags** with the `-s` \noption. You can specify multiple tags by comma-delimiting. For example:\n\n- `env-setup -t node,python 04-packages`: Install only **Node \u0026 Python** packages.\n- `env-setup -s php 04-packages`: Install all packages, except **PHP** packages.\n\n### Environment Variable Overrides \nThere are a few environment variables that can be overridden to change behavior:\n\n- **Init:**\n    - `ENVSETUP_INTERACT`: enable interactive prompts during init (default `1`)\n    - `ENVSETUP_KEY_FILE`: the SSH key path created during init (default: `$HOME/.ssh/id_rsa`)\n    - `ENVSETUP_KEY_FILE_COMMENT`: the SSH key comment created during init (default: `env-setup:$USER@$(hostname)`)\n    - `ENVSETUP_INSTALL_DIR`: the path to install env-setup during init (default: `$HOME/env-setup`)\n- **RunTime:**\n    - `ENVSETUP_INSTALL_DIR`: the path where env-setup looks for its config.yml files (default: `$HOME/env-setup`)\n    - `ANSIBLE_SUDO`: env-setup runs ansible w/ a sudo prompt, set to `-n` to disable (default: `-K`)\n    - `ANSIBLE_CHECK`: env-setup runs ansible w/ a dry-run check, set to `-C` to enable (default: ``)\n    - `ANSIBLE_STDOUT_CALLBACK`: env-setup runs ansible w/ a differ status update, set one of these options: `unixy | dense | debug | yaml | selective` (default: `unixy`)\n    - `ANSIBLE_PLAYBOOK_INFO`: env-setup runs ansible w/ a display of playbook steps, set to `--list-tasks` to enable (default: ``)\n    - `ANSIBLE_SKIPPED_TAGS`: env-setup runs ansible w/ skipping tags, set to a comma-delimited list of tags to skip (default: ``)\n    - `ANSIBLE_TAGS`: env-setup runs ansible w/ specific tags, set to a comma-delimited list of tags to run (default: ``)\n    - `ANSIBLE_VERBOSE`: env-setup runs ansible w/ verbosity, set to `-vvv` to enable (default: ``)\n\n## Testing\nIf you'd like to have a environment for testing deployment, `env-setup` has a \ncouple of scripts/tools that can help setup an environment:\n\n- The `docker` [directory](docker) contains a `Dockerfile` that can be used to build a Ubuntu Linux docker image with `env-setup` installed w/ all the playbooks. \n    - Pre-built images can be found on [ghcr.io/luciditi/env-setup](https://github.com/Luciditi/env-setup/tree/main/docker#hosted-images). \n    - If you want a quick one-liner to test, `source \u003c(curl -sL jig.io/dev-aliases) \u0026\u0026 dev-env` will setup an alias for `docker run ... ghcr.io/luciditi/env-setup`\n- The `terraform` [directory](terraform) is a basic Terraform module that can stand up a SSH key and EC2 VMs (Linux (Ubuntu 20) \u0026 macOS (Sonoma)). \n    - Once built, there are a few [scripts](terraform/scripts) that can be used to test `env-setup` in the new VMs.\n- The `vm` [directory](vm) has a couple of [scripts](vm/scripts) that can stand up Linux (Ubuntu) \u0026 macOS (Sonoma) VMs in [Tart](https://tart.run/). \n    - Run `eval \"$(env-setup -A)\"` to create `env-vm-*` aliases:\n    - Run `env-vm-create` to create a new VM\n    - Run `env-vm-start` to run the VM\n    - Run `env-vm-init` to initialize the VM with `env-setup`\n    - Run `env-vm-ssh` to shell into the VM\n    - Run `env-vm-env-setup` to run `env-setup` inside the VM\n    - Run `env-vm-stop` to stop the VM\n\n## Custom Playbook\nTo get started with a custom playbook: \n\n- run `./scripts/add-playbook 09-my-playbook`\n\nThis will setup the directory structure in the `ansible` dir and make it \nselectable in the `env-setup` tool.\n\nFrom there, you can edit:\n- `ansible/*/09-my-playbook/main.yml` to add your playbook tasks\n- `ansible/*/09-my-playbook/requirements.yml` to add any ansible-galaxy dependencies for the playbook.\n\n## Development\nSee the development [README](DEV-README.md).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluciditi%2Fenv-setup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluciditi%2Fenv-setup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluciditi%2Fenv-setup/lists"}