{"id":30618047,"url":"https://github.com/postfinance/devcontainer-features","last_synced_at":"2025-08-30T11:07:44.769Z","repository":{"id":309902562,"uuid":"1033312773","full_name":"postfinance/devcontainer-features","owner":"postfinance","description":"Contains Features that can be used in Dev-Containers","archived":false,"fork":false,"pushed_at":"2025-08-28T21:16:16.000Z","size":140,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-29T02:08:45.102Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/postfinance.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-08-06T16:07:28.000Z","updated_at":"2025-08-28T21:16:19.000Z","dependencies_parsed_at":"2025-08-14T13:35:59.724Z","dependency_job_id":null,"html_url":"https://github.com/postfinance/devcontainer-features","commit_stats":null,"previous_names":["postfinance/devcontainer-features"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/postfinance/devcontainer-features","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/postfinance%2Fdevcontainer-features","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/postfinance%2Fdevcontainer-features/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/postfinance%2Fdevcontainer-features/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/postfinance%2Fdevcontainer-features/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/postfinance","download_url":"https://codeload.github.com/postfinance/devcontainer-features/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/postfinance%2Fdevcontainer-features/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272839742,"owners_count":25001869,"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-08-30T02:00:09.474Z","response_time":77,"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":"2025-08-30T11:07:42.440Z","updated_at":"2025-08-30T11:07:44.742Z","avatar_url":"https://github.com/postfinance.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# devcontainer-features\n\nThis repository provides features that can be used in dev containers.\n\nThe features provided here have the following benefits:\n* AMD64 and ARM compatible (when possible)\n* Support for Debian, Ubuntu, Alpine (where possible)\n* Corporate ready (download URLs can be overwritten with e.g. an Artifactory cache but default to the official source)\n* Small and fast\n* Good extensibility\n\n## Features\n\nBelow is a list with included features, click on the link for more details.\n\n| Name | Description |\n| --- | --- |\n| [docker-out](./features/src/docker-out/README.md) | A feature which installs the Docker client and re-uses the host socket. |\n| [git-lfs](./features/src/git-lfs/README.md) | A feature which installs Git LFS. |\n| [go](./features/src/go/README.md) | A feature which installs Go. |\n| [node](./features/src/node/README.md) | A package which installs Node.js. |\n| [vault-cli](./features/src/vault-cli/README.md) | A feature which installs the Vault CLI. |\n| [zig](./features/src/zig/README.md) | A feature which installs Zig. |\n\n## Usage\n\n### Versions\n\nMost features allow you to define one or more versions of the software that should be installed by the feature.\n\nThe preferred way to do this is by defining the full version number, e.g. 1.24.3 for Go. The features by default try to directly download this version and fail if this does not work.\n\nAlternatively, the version often can be set to `latest` or a partial version (e.g. `1.24`). In this case, the feature will resolve the version and find out the appropriate one to install and install that.\n\nNOTE: If you use partial versions, there is also a matching `versionResolve` option that needs to be set to `true` in order for the resolving to be used. This is because some tools do not respect semver and deploy eg. version 2.13.0 as 2.13 instead of 2.13.0, so with this flag, we can distinguish those cases.\n\nNOTE2: The URLs for resolving the versions are usually in separate configuration options. This is so that a feature can be configured to use a cache service (e.g. Artifactory) for downloading the binaries but use the `live` URL for checking versions.\n\n### Global overrides\n\nEach feature that needs to download something provides options to override the download URL.\nThis is good if a few projects need a few features.\nBut if many projects need many features, it can become a nightmare to maintain that.\n\nFor this reason, there is a possibility to globally set those overrides (e.g. for the whole company):\n\nAn environment variable `DEV_FEATURE_OVERRIDE_LOCATION` can be set to a location where a text file with the overrides can be found.\n* The variable itself can be defined in the `devcontainer.json` file or already be set in your base images used for dev containers.\n* This file can either be on a reachable web or file path. So it can be hosted in a git repository or directly copied into your base images used for dev containers.\n\nThe content of the file is simple `key=value` like an env file.\nThe key names are `DEV_FEATURE_OVERRIDE_\u003ckey-to-override\u003e`, but you can also just skip the `DEV_FEATURE_OVERRIDE_` and directly use the desired key name. So for example:\n```\nGO_DOWNLOAD_URL_BASE=https://mycompany.com/artifactory/dl-google-generic-remote\nGO_DOWNLOAD_URL_PATH=/go\n```\nAs the remote can be configured differently (e.g. by including or excluding sub-paths), there are usually two variables: one for the base and one for the path.\n\nExample:\n\nIf your remote points to `https://dl.google.com`, you need to set:\n* base = \"your-remote\"\n* url = \"/go\" (the default) or leave out the URL, then it will use the default\n\nIf your remote points directly to `https://dl.google.com/go`, you need to set:\n* base = \"your-remote\"\n* url = \"/\" (so it will not add any sub-path after the remote)\n\nSee [override-all.env](./override-all.env) for a file with all possible override variables.\n\n#### Special overrides\n\nThere are a few sources which are used in multiple installations. For those sources, there is an override that globaly overrides all installations from this sources. Here is the list of those sources and their keys.\n\n```\nGITHUB_DOWNLOAD_URL_BASE=...\n```\n\n### Extend an existing feature\n\nTBD\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpostfinance%2Fdevcontainer-features","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpostfinance%2Fdevcontainer-features","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpostfinance%2Fdevcontainer-features/lists"}