{"id":50797106,"url":"https://github.com/nebari-dev/nebari-environments","last_synced_at":"2026-06-12T15:30:32.099Z","repository":{"id":338811207,"uuid":"1157375285","full_name":"nebari-dev/nebari-environments","owner":"nebari-dev","description":"Community-contributed Pixi environments for data science, ML, and scientific computing — published as OCI artifacts via nebi","archived":false,"fork":false,"pushed_at":"2026-02-17T22:39:56.000Z","size":250,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-11T13:33:45.737Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://quay.io/organization/nebari_environments","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nebari-dev.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":"2026-02-13T18:41:59.000Z","updated_at":"2026-02-17T22:40:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nebari-dev/nebari-environments","commit_stats":null,"previous_names":["nebari-dev/nebari-environments"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nebari-dev/nebari-environments","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebari-dev%2Fnebari-environments","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebari-dev%2Fnebari-environments/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebari-dev%2Fnebari-environments/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebari-dev%2Fnebari-environments/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nebari-dev","download_url":"https://codeload.github.com/nebari-dev/nebari-environments/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nebari-dev%2Fnebari-environments/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34251773,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"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":[],"created_at":"2026-06-12T15:30:30.993Z","updated_at":"2026-06-12T15:30:32.088Z","avatar_url":"https://github.com/nebari-dev.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nebari Environments\n\n[![Publish Environments](https://github.com/nebari-dev/nebari-environments/actions/workflows/publish.yml/badge.svg)](https://github.com/nebari-dev/nebari-environments/actions/workflows/publish.yml)\n\n![nebi import demo](nebi-import-demo.gif)\n\nA collection of community-contributed, ready-to-use [Pixi](https://pixi.sh) environments for data science, machine learning, and scientific computing. Environments are automatically published as OCI artifacts to [`quay.io/nebari_environments`](https://quay.io/organization/nebari_environments) and can be imported with a single command using the [nebi](https://github.com/nebari-dev/nebi) CLI.\n\n## Using an environment\n\nInstall the [nebi](https://github.com/nebari-dev/nebi) CLI, then import any published environment:\n\n```bash\nnebi import quay.io/nebari_environments/data-science-demo:v1\n```\n\nThis pulls the `pixi.toml` and `pixi.lock` into the current directory. Then install and activate with [Pixi](https://pixi.sh):\n\n```bash\npixi install\npixi shell\n```\n\nYou can also import into a specific directory or as a global workspace:\n\n```bash\n# Import into a specific directory\nnebi import quay.io/nebari_environments/data-science-demo:v1 -o ./my-project\n\n# Import as a global workspace\nnebi import quay.io/nebari_environments/data-science-demo:v1 --global data-science\n```\n\nBrowse available environments at [`quay.io/nebari_environments`](https://quay.io/organization/nebari_environments).\n\n## Contributing an environment\n\n1. Create a new directory under `environments/`:\n   ```\n   mkdir environments/my-env\n   ```\n2. Add a `pixi.toml` with a `[workspace]` section:\n   ```toml\n   [workspace]\n   name = \"my-env\"\n   channels = [\"conda-forge\"]\n   platforms = [\"linux-64\", \"linux-aarch64\", \"osx-arm64\", \"osx-64\"]\n   version = \"0.1.0\"\n\n   [dependencies]\n   python = \"\u003e=3.11\"\n   # add your packages here\n   ```\n3. Open a pull request. Once merged to `main`, the environment will be automatically published to `quay.io/nebari_environments/my-env`.\n\n## Repository structure\n\n```\nenvironments/\n  \u003cenv-name\u003e/\n    pixi.toml\n```\n\nEach directory under `environments/` is a standalone Pixi environment. The directory name is used as the environment name when publishing.\n\n## CI / Publishing\n\nA GitHub Actions workflow (`.github/workflows/publish.yml`) runs on every push to `main`. It:\n\n1. Downloads the [nebi](https://github.com/nebari-dev/nebi) CLI\n2. Starts an ephemeral nebi server\n3. Pushes and publishes every environment to `quay.io/nebari_environments/\u003cenv-name\u003e`\n\nNebi handles deduplication server-side, so all environments are published on every run.\n\n### Required GitHub secrets\n\n| Secret | Purpose |\n|--------|---------|\n| `QUAY_USERNAME` | quay.io robot account username |\n| `QUAY_PASSWORD` | quay.io robot account password/token |\n| `QUAY_API_TOKEN` | quay.io OAuth token for setting repos to public |\n\n### Quay.io setup\n\nThe target organization is [`nebari_environments`](https://quay.io/organization/nebari_environments) on quay.io.\n\nThe robot account used by CI needs permission to **create new repositories** in the organization. By default, robot accounts cannot create repos. To grant this:\n\n1. Go to the [nebari_environments org](https://quay.io/organization/nebari_environments) on quay.io\n2. Navigate to **Teams and Membership**\n3. Create a team (e.g. `ci-publishers`) or use an existing one\n4. Set the team's **role to \"Creator\"** — this allows members to create new repositories\n5. Add the robot account to that team (e.g. `nebari_environments+ci`)\n\nThe robot account credentials are then stored as `QUAY_USERNAME` and `QUAY_PASSWORD` GitHub secrets on this repository.\n\nNew repositories on quay.io are **private by default**. The workflow automatically sets each repository to public after publishing using the quay.io API. This requires an OAuth token (`QUAY_API_TOKEN`) with the **\"Administer Repositories\"** scope. To generate it:\n\n1. In the same org, navigate to **Applications** (under org settings)\n2. Create a new OAuth application (e.g. `ci-visibility`)\n3. Generate a token with the **\"Administer Repositories\"** permission\n4. Store the token as the `QUAY_API_TOKEN` GitHub secret on this repository\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnebari-dev%2Fnebari-environments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnebari-dev%2Fnebari-environments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnebari-dev%2Fnebari-environments/lists"}