{"id":31667889,"url":"https://github.com/tanyamushonga/workstation-orchestrator","last_synced_at":"2025-10-08T00:49:07.295Z","repository":{"id":317759452,"uuid":"1047804589","full_name":"TanyaMushonga/workstation-orchestrator","owner":"TanyaMushonga","description":"Cross-platform workstation bootstrapper for developers, DevOps, and security engineers on Linux, macOS, and Windows","archived":false,"fork":false,"pushed_at":"2025-10-02T20:35:50.000Z","size":3675,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-02T22:23:17.684Z","etag":null,"topics":["automation","cross-platform","debian","development","devops-tools","kali-linux","scripting","security-tools","shell-script","vim","windows","workstation-se"],"latest_commit_sha":null,"homepage":"https://tanyaradzwatmushonga.me","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/TanyaMushonga.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":null,"dco":null,"cla":null}},"created_at":"2025-08-31T09:15:17.000Z","updated_at":"2025-10-02T20:35:54.000Z","dependencies_parsed_at":"2025-10-06T07:32:46.396Z","dependency_job_id":null,"html_url":"https://github.com/TanyaMushonga/workstation-orchestrator","commit_stats":null,"previous_names":["tanyamushonga/workstation-orchestrator"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/TanyaMushonga/workstation-orchestrator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TanyaMushonga%2Fworkstation-orchestrator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TanyaMushonga%2Fworkstation-orchestrator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TanyaMushonga%2Fworkstation-orchestrator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TanyaMushonga%2Fworkstation-orchestrator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TanyaMushonga","download_url":"https://codeload.github.com/TanyaMushonga/workstation-orchestrator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TanyaMushonga%2Fworkstation-orchestrator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278872154,"owners_count":26060525,"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","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["automation","cross-platform","debian","development","devops-tools","kali-linux","scripting","security-tools","shell-script","vim","windows","workstation-se"],"created_at":"2025-10-08T00:49:03.272Z","updated_at":"2025-10-08T00:49:07.290Z","avatar_url":"https://github.com/TanyaMushonga.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Workstation Setup Toolkit\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n[![Platform: Linux](https://img.shields.io/badge/platform-linux-orange?logo=linux)](#supported-platforms)\n[![Platform: macOS](https://img.shields.io/badge/platform-macOS-black?logo=apple)](#supported-platforms)\n[![Platform: Windows](https://img.shields.io/badge/platform-windows-blue?logo=windows)](#supported-platforms)\n\n\u003e **One command to bootstrap a consistent developer, DevOps, and security workstation across Linux, macOS, and Windows.**\n\nOrganisations and individual makers often spend hours repeating manual setup steps, chasing platform-specific package names, and keeping dotfiles in sync. `workstation-orchestrator` standardises that process: a single, modular toolkit that provisions identical capabilities across all three major operating systems while honouring native package managers and post-install conventions.\n\n## Table of Contents\n\n1. [Supported Platforms](#supported-platforms)\n2. [Tool Groups](#tool-groups)\n3. [Repository Layout](#repository-layout)\n4. [Quick Start](#quick-start)\n5. [What the Installers Do](#what-the-installers-do)\n6. [Project Highlights](#project-highlights)\n7. [Post-Install Checklist](#post-install-checklist)\n8. [Customising](#customising)\n9. [Requirements](#requirements)\n10. [Contributing](#contributing)\n11. [Support \u0026 Feedback](#support--feedback)\n12. [License](#license)\n\n---\n\n## Supported Platforms\n\n- **Linux** (`install.sh` → `scripts/linux/install.sh`)\n  - Debian, Ubuntu, Kali, Linux Mint, Pop!\\_OS, Elementary, Zorin\n  - Fedora, RHEL, CentOS Stream, Rocky, AlmaLinux\n  - Arch, Manjaro, EndeavourOS, and other pacman-based distributions\n- **macOS** (`install.sh` → `scripts/macos/install.sh`)\n  - macOS 12 or newer with Homebrew available on PATH and Bash ≥ 4\n- **Windows** (`install.ps1` → `scripts/windows/install.ps1`)\n  - Windows 10 21H2+ / Windows 11 with winget (run in an elevated PowerShell session)\n\nThe entry-point scripts detect your operating system and forward to the OS-specific installer automatically.\n\n---\n\n## Tool Groups\n\nChoose the bundles you want at install time—mix and match or install everything.\n\n| Group          | Description                                         | Sample Tools                                                            |\n| -------------- | --------------------------------------------------- | ----------------------------------------------------------------------- |\n| `core`         | Shell enhancements, CLI basics, dotfiles, Git setup | git, curl, zsh/Oh My Zsh, Windows Terminal, Oh My Posh                  |\n| `development`  | Languages, databases, IDEs, API clients             | Python, Node.js, Java 21, Go, Rust, VS Code, JetBrains Toolbox, Postman |\n| `devops`       | Containers, cloud CLIs, infrastructure-as-code      | Docker, kubectl, Terraform, AWS CLI, Azure CLI, Google Cloud SDK        |\n| `security`     | Offensive security \u0026 network tooling                | Nmap, Wireshark, Metasploit (Kali), Burp Suite, hashcat                 |\n| `productivity` | Browsers, office suite, media, communications       | Chrome, Brave, LibreOffice, Slack, Discord, OBS, VLC                    |\n\nEnter `all` to install every group. Pressing Enter at the prompt installs the default `core development` combination.\n\n---\n\n## Repository Layout\n\n```\n.\n├── install.sh                  # OS dispatcher for Linux/macOS\n├── install.ps1                 # OS dispatcher for Windows\n├── scripts/\n│   ├── linux/\n│   │   ├── install.sh\n│   │   ├── groups.sh\n│   │   ├── actions.sh\n│   │   └── lib/\n│   ├── macos/\n│   │   ├── install.sh\n│   │   ├── groups.sh\n│   │   └── lib/\n│   └── windows/\n│       └── install.ps1\n├── dotfiles/                   # Optional shell/editor configs copied during setup\n├── packages.txt                # Legacy package manifest (Linux reference)\n└── LICENSE\n```\n\n---\n\n## Quick Start\n\n### Linux\n\n```bash\ngit clone https://github.com/TanyaMushonga/workstation-orchestrator.git\ncd workstation-orchestrator\nchmod +x install.sh\n./install.sh\n```\n\nThe script detects your distribution, updates package indexes, and prompts for tool groups.\n\n\u003e **Tip:** If you prefer to call the Linux installer directly from `scripts/linux/`, make it executable first (`chmod +x scripts/linux/install.sh`) or invoke it with Bash (`sudo bash scripts/linux/install.sh`). Running `sudo ./install.sh` without the execute bit produces the \"permission denied\" / \"command not found\" errors you may have seen.\n\n### macOS\n\n```bash\n# Optional if you're using the system Bash (3.x)\nbrew install bash\n\n/usr/local/bin/bash install.sh\n```\n\nRequirements: Homebrew installed and accessible on PATH. The installer verifies Bash 4+, updates Homebrew, and installs the selected formulae and casks.\n\n### Windows\n\n```powershell\n# Run PowerShell as Administrator\nSet-ExecutionPolicy RemoteSigned -Scope Process\ncd path\\to\\workstation-orchestrator\n./install.ps1 -Groups \"core,development,devops\"\n```\n\nOmit `-Groups` to accept defaults or pass `all` for the full stack.\n\n---\n\n## What the Installers Do\n\n1. Detect your OS/distro and choose the native package manager (`apt`, `dnf`, `pacman`, `Homebrew`, `winget`).\n2. Update package indexes to ensure the newest versions are available.\n3. Prompt for tool groups and install the selected bundles.\n4. Set up languages, SDKs, databases, and IDEs tailored to the platform.\n5. Configure DevOps tooling such as Docker, Kubernetes utilities, Terraform, and cloud CLIs.\n6. Apply dotfiles and shell customisations (Oh My Zsh / Oh My Posh).\n7. Scaffold development directories at `~/Development/{projects,tools,scripts}`.\n8. Offer Git configuration prompts and optional SSH key generation (Linux/macOS).\n9. Summarise next steps for authentication, Docker login, and environment validation.\n\n---\n\n## Project Highlights\n\n- **Idempotent installs** – safe to re-run when refreshing existing machines.\n- **Curated bundles** – consistent tooling across core dev, DevOps, security, and productivity use-cases.\n- **Distro-aware logic** – chooses the right package identifiers for `apt`, `dnf`, `pacman`, Homebrew, and winget.\n- **Modular architecture** – each OS ships its own `groups.sh`, helper library, and post-install routines for easy extension.\n- **Dotfiles friendly** – automatically syncs files from `dotfiles/` and applies shell customisations (Oh My Zsh/Oh My Posh).\n- **Cloud-ready** – installs AWS, Azure, and Google Cloud CLIs with optional Kubernetes helpers out of the box.\n\n## Post-Install Checklist\n\n- Restart your terminal session. Linux users should log out/in to pick up docker group membership.\n- Launch Docker Desktop once on macOS/Windows to finish setup.\n- Run `gh auth login`, `aws configure`, `az login`, and `gcloud init` as required.\n- Add generated SSH keys to your Git hosting provider.\n- On macOS, run `brew doctor` for a quick sanity check.\n\n---\n\n## Customising\n\n- Adjust group memberships in `scripts/*/groups.sh`.\n- Add or modify post-install hooks in `scripts/linux/actions.sh`.\n- Drop extra dotfiles into `dotfiles/` for automatic syncing.\n- Use `packages.txt` as a reference or seed for bespoke Linux builds.\n\n---\n\n## Requirements\n\n- **Linux**: Supported distro, sudo privileges, and internet access.\n- **macOS**: Homebrew installed and Bash ≥ 4 (installable via `brew install bash`).\n- **Windows**: Administrator PowerShell session with winget available.\n\n---\n\n## Contributing\n\nWe welcome contributions of all sizes—from typo fixes and package suggestions to new automation modules.\n\n1. **Open an issue first** for feature ideas, bug reports, or distro-specific package fixes. This helps us discuss scope before you invest time.\n2. **Fork the repository** and create a feature branch (`git checkout -b feature/my-enhancement`).\n3. **Test on your platform**: run the relevant installer locally and ensure shellcheck/PowerShell linting passes if you have them available.\n4. **Document changes**: update the README or inline comments for new behaviour, and extend group descriptions or post-install notes where appropriate.\n5. **Submit a pull request** referencing the issue. Fill out the PR template, include screenshots or terminal transcripts when useful, and describe validation steps.\n\n\u003e New to the project? Check the Issues tab for **good first issues** or **help wanted** labels.\n\n### Development Tips\n\n- Use the modular structure under `scripts/\u003cos\u003e/` to keep platform-specific logic isolated.\n- Keep package identifiers alphabetised within each group for readability.\n- Prefer native package managers before curl/bash installers unless no package exists.\n- When adding secrets-sensitive tools, document any manual authentication needed post-install.\n\n---\n\n## Support \u0026 Feedback\n\n- **Bug reports / Feature requests**: [Open an issue](https://github.com/TanyaMushonga/workstation-orchestrator/issues/new/choose).\n- **Questions \u0026 discussion**: Start a GitHub Discussion or comment on the relevant issue/PR.\n- **Professional contact**: [LinkedIn](https://www.linkedin.com/in/tanyaradzwa-t-mushonga-b23745209/)\n- **Portfolio**: [tanyaradzwatmushonga.me](https://tanyaradzwatmushonga.me)\n- **Security disclosures**: Email the maintainer (see Git history) rather than opening a public issue.\n\nIf you ship a workstation profile using this toolkit, share a link—we enjoy highlighting community setups.\n\n---\n\n## License\n\nReleased under the [MIT License](LICENSE). Contributions are welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftanyamushonga%2Fworkstation-orchestrator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftanyamushonga%2Fworkstation-orchestrator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftanyamushonga%2Fworkstation-orchestrator/lists"}