{"id":29294996,"url":"https://github.com/hesam-fattahi/bootstrapper","last_synced_at":"2025-07-06T14:02:00.343Z","repository":{"id":302516486,"uuid":"1012725071","full_name":"hesam-fattahi/bootstrapper","owner":"hesam-fattahi","description":"Lightweight Bash-powered Linux bootstrapper for automating system setup.","archived":false,"fork":false,"pushed_at":"2025-07-02T19:39:42.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-02T20:36:11.611Z","etag":null,"topics":["automation","bash","cli","linux","package-management","python"],"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/hesam-fattahi.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}},"created_at":"2025-07-02T19:28:51.000Z","updated_at":"2025-07-02T19:42:17.000Z","dependencies_parsed_at":"2025-07-02T20:47:32.289Z","dependency_job_id":null,"html_url":"https://github.com/hesam-fattahi/bootstrapper","commit_stats":null,"previous_names":["hesam-fattahi/bootstrapper"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hesam-fattahi/bootstrapper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hesam-fattahi%2Fbootstrapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hesam-fattahi%2Fbootstrapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hesam-fattahi%2Fbootstrapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hesam-fattahi%2Fbootstrapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hesam-fattahi","download_url":"https://codeload.github.com/hesam-fattahi/bootstrapper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hesam-fattahi%2Fbootstrapper/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263913668,"owners_count":23529073,"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":["automation","bash","cli","linux","package-management","python"],"created_at":"2025-07-06T14:00:34.656Z","updated_at":"2025-07-06T14:02:00.334Z","avatar_url":"https://github.com/hesam-fattahi.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bootstrapper\n\nA lightweight, modular system setup tool that bootstraps your Linux machine by installing essential packages, setting system values like hostname and timezone, and optionally customizing your environment. Written in Bash with optional Python and Vagrant support.\n\n\n## Features\n\n- Installs apt packages from a customizable list\n- Optional Snap app installation\n- Sets hostname and timezone via config file\n- Python CLI (optional) for profile switching or advanced UX\n- Vagrant support for testing your setup in a sandboxed VM\n- Easily extendable with post-install scripts (aliases, dotfiles, etc.)\n\n\n## Project Structure\n\n```bash\nbootstrapper/\n├── bootstrap.sh            # Main Bash script\n├── config/\n│   ├── packages.txt        # APT package list\n│   ├── snap.txt            # Snap package list (optional)\n│   └── setup.conf          # Hostname, timezone, etc.\n├── scripts/\n│   └── post_install.sh     # Optional customizations (dotfiles, aliases)\n├── python/\n│   └── bootstrap_cli.py    # Optional CLI interface for profile selection\n├── Vagrantfile             # Spins up Ubuntu Jammy64 VM by default\n├── LICENSE\n└── README.md\n```\n\n## Getting Started\n\n### 1. Clone the repo\n\n```bash\ngit clone https://github.com/hesamfattahi/bootstrapper.git\ncd bootstrapper\n```\n\n### 2. Configure\n\nEdit the files under the `config/` directory to customize your setup:\n\n- **packages.txt** — APT packages to install:\n- **snap.txt** *(optional)* — Snap packages to install:\n- **setup.conf** — Hostname and timezone configuration:\n\n\u003e If `snap.txt` is missing, Snap install is skipped silently.  \n\u003e If `setup.conf` is missing, hostname/timezone remain unchanged.\n\n### 3. Run the Bootstrap Script\n\nMake the script executable and run it:\n```bash\nchmod +x bootstrap.sh\n./bootstrap.sh\n```\n\nThis script will:\n- Update the system\n- Install APT packages from `packages.txt`\n- Optionally install Snap packages\n- Apply system settings from `setup.conf`\n- Run `scripts/post_install.sh` if it exists\n\n### 4. (Optional) Use the Python CLI\n\nCall the CLI to select a custom profile:\n\n```bash\npython3 python/bootstrap_cli.py --profile dev\n```\n\nExample logic in the Python script:\n\n```python\nimport argparse, shutil\nparser = argparse.ArgumentParser()\nparser.add_argument(\"--profile\", help=\"Profile name\")\nargs = parser.parse_args()\nshutil.copyfile(f\"config/packages-{args.profile}.txt\", \"config/packages.txt\")\n```\n\nThis lets you dynamically switch to different package lists (e.g. `dev`, `minimal`, `data`) and optionally override configs.\n\n### 5. (Optional) Test in a Vagrant VM\n\nSpin up an isolated test environment:\n```bash\nvagrant up\n```\n\nThe included `Vagrantfile` uses `ubuntu/jammy64` and provisions automatically using `bootstrap.sh`.  \n\n## License\n\nThis project is licensed under the [MIT License](./LICENSE).  \nYou are free to use, modify, and distribute it with proper attribution.\n\n## Contributing\n\nContributions are welcome and highly appreciated! Whether it’s fixing bugs, suggesting enhancements, or adding new profiles — feel free to fork the repo and open a pull request.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhesam-fattahi%2Fbootstrapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhesam-fattahi%2Fbootstrapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhesam-fattahi%2Fbootstrapper/lists"}