{"id":14155288,"url":"https://github.com/tsirysndr/envhub","last_synced_at":"2025-04-06T02:09:36.445Z","repository":{"id":199108951,"uuid":"701606786","full_name":"tsirysndr/envhub","owner":"tsirysndr","description":"Manage your dotfiles, secrets and packages with ease. Define your $HOME as Code and re-use it everywhere (local machine, CI, server ...)  💻 🚀 ✨","archived":false,"fork":false,"pushed_at":"2025-01-10T05:12:25.000Z","size":19741,"stargazers_count":37,"open_issues_count":5,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-30T01:09:46.790Z","etag":null,"topics":["devbox","devenv","dotfiles","dotfiles-linux","dotfiles-macos","environment","gnu-stow","home-manager","homebrew","linux","macos","nix","packages","pkgx","wsl"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsirysndr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"github":"tsirysndr","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":[]}},"created_at":"2023-10-07T03:31:52.000Z","updated_at":"2025-02-01T19:00:43.000Z","dependencies_parsed_at":"2023-10-17T08:45:16.888Z","dependency_job_id":"c6edbc56-e844-45d8-9bc9-302066f77cc3","html_url":"https://github.com/tsirysndr/envhub","commit_stats":{"total_commits":112,"total_committers":4,"mean_commits":28.0,"dds":0.0357142857142857,"last_synced_commit":"7de5e1cc4a3aeac855712dda4e124a33f48780f6"},"previous_names":["tsirysndr/envhub"],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fenvhub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fenvhub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fenvhub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fenvhub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsirysndr","download_url":"https://codeload.github.com/tsirysndr/envhub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247423515,"owners_count":20936626,"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":["devbox","devenv","dotfiles","dotfiles-linux","dotfiles-macos","environment","gnu-stow","home-manager","homebrew","linux","macos","nix","packages","pkgx","wsl"],"created_at":"2024-08-17T08:02:42.359Z","updated_at":"2025-04-06T02:09:36.428Z","avatar_url":"https://github.com/tsirysndr.png","language":"TypeScript","funding_links":["https://github.com/sponsors/tsirysndr"],"categories":["TypeScript","wsl"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg \n    src=\"banner.png\"\n    alt=\"EnvHub\"\n    style=\"width:100%;\"\n  /\u003e\n\u003c/p\u003e\n\n[![FlakeHub](https://img.shields.io/endpoint?url=https://flakehub.com/f/tsirysndr/envhub/badge)](https://flakehub.com/flake/tsirysndr/envhub)\n[![built with nix](https://img.shields.io/badge/Built_With-Nix-5277C3.svg?logo=nixos\u0026labelColor=73C3D5)](https://builtwithnix.org)\n[![flakestry.dev](https://flakestry.dev/api/badge/flake/github/tsirysndr/envhub)](https://flakestry.dev/flake/github/tsirysndr/envhub)\n[![crates](https://img.shields.io/crates/v/envhub.svg)](https://crates.io/crates/envhub)\n[![downloads](https://img.shields.io/crates/dr/envhub)](https://crates.io/crates/envhub)\n[![ci](https://github.com/tsirysndr/envhub/actions/workflows/ci.yml/badge.svg)](https://github.com/tsirysndr/envhub/actions/workflows/ci.yml)\n[![discord](https://img.shields.io/discord/1160636024167333979?label=discord\u0026logo=discord\u0026color=5865F2)](https://discord.gg/aTGPE3Myhk)\n\nEnvHub is a simple tool to manage dotfiles and packages accross multiple machines.\n\nWritten in [Rust](https://www.rust-lang.org/), internally it uses [nix](https://nixos.org)/[homebrew](https://brew.sh)/[pkgx](https://pkgx.sh)/[devbox](https://www.jetpack.io/devbox) to manage packages and [home-manager](https://nix-community.github.io/home-manager/)/[stow](https://www.gnu.org/software/stow/) to manage dotfiles.\n\n![Made with VHS](https://vhs.charm.sh/vhs-3jvaLIJUoMP67jfuoCMuex.gif)\n\n## 🚚 Installation\n\nUsing bash :\n\n```bash\ncurl -sSL https://install.envhub.sh | bash\n```\n\nUsing [Cargo](https://crates.io) :\n\n```bash\ncargo install envhub\n```\n\nUsing [Nix](https://nixos.org) :\n\n```bash\ncachix use tsirysndr\nnix profile install --experimental-features \"nix-command flakes\" github:tsirysndr/envhub\n```\n\nCompile from source :\n\n```bash\ngit clone https://github.com/tsirysndr/envhub.git\ncd envhub\nnix develop --experimental-features \"nix-command flakes\"\ncargo install --path crates/cli\nenvhub --help\n```\n\nUsing [Homebrew](https://brew.sh) :\n\n```bash\nbrew install tsirysndr/tap/envhub\n```\n\nOr download the latest release for your platform [here](https://github.com/tsirysndr/envhub/releases).\n\n\n## 🚀 Quick Start\n\nInitialize a new environment :\n\n```sh\nenvhub init\n```\n\nIt will create a new `envhub.hcl` file and a `dotfiles` directory in the current directory.\n\nYou can then edit the `envhub.hcl` file to add packages and add dotfiles to the `dotfiles` directory.\n\nEnable the environment :\n\n```sh\nenvhub use\n```\n\n## 📚 Example\n\nThe following example will install the `hello` package, set the `EDITOR` environment variable to `vim`, and copy the `.screenrc` and `gradle.properties` files from the current directory to the home directory.\n\n```hcl\n# Path: envhub.hcl\npackages = [\n  \"hello\"\n]\n\nenvs {\n  \"EDITOR\" = \"vim\"\n}\n\nfile \".screenrc\" {\n  source = \".screenrc\"\n}\n\nfile \".gradle/gradle.properties\" {\n  content = \"org.gradle.daemon=true\"\n}\n```\n\nSee [demo](demo) and [examples](examples) for a more complete example.\n\n## 🧩 As a Dagger Module\n\nCall from the command line:\n\n```bash\ndagger -m github.com/tsirysndr/daggerverse/envhub call \\\n  use --environment github:tsirysndr/dotfiles-example \\\n  --src .\n```\n\ncall from a [Fluent CI](https://fluentci.io/) module:\n\n```typescript\nimport { use } from 'jsr:@fx/envhub';\n\nawait use(\n  \".\",\n  \"github:tsirysndr/dotfiles-example\"\n);\n```\n\n## As a GitHub Action\n\nYou can use EnvHub as a [GitHub Action](https://github.com/tsirysndr/setup-envhub) to manage your dotfiles and packages in your CI/CD workflow.\n\n```yaml\n- uses: tsirysndr/setup-envhub@v1\n  with:\n    version: 'v0.2.18'\n- run: envhub --help\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsirysndr%2Fenvhub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsirysndr%2Fenvhub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsirysndr%2Fenvhub/lists"}