{"id":18708326,"url":"https://github.com/bottlesdevs/components","last_synced_at":"2026-04-02T13:05:00.795Z","repository":{"id":37965969,"uuid":"332453669","full_name":"bottlesdevs/components","owner":"bottlesdevs","description":"Repository for Bottles components","archived":false,"fork":false,"pushed_at":"2026-01-25T13:20:48.000Z","size":1490,"stargazers_count":79,"open_issues_count":21,"forks_count":47,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-01-25T21:54:29.379Z","etag":null,"topics":["bottles","components","dxvk","repository","wine"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bottlesdevs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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},"funding":{"liberapay":"Bottles","github":["bottlesdevs"],"custom":["https://usebottles.com/funding"]}},"created_at":"2021-01-24T13:15:31.000Z","updated_at":"2026-01-25T13:20:53.000Z","dependencies_parsed_at":"2023-10-03T13:33:41.231Z","dependency_job_id":"c60ae594-2ee9-4408-b414-ec595876d267","html_url":"https://github.com/bottlesdevs/components","commit_stats":null,"previous_names":[],"tags_count":181,"template":false,"template_full_name":null,"purl":"pkg:github/bottlesdevs/components","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottlesdevs%2Fcomponents","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottlesdevs%2Fcomponents/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottlesdevs%2Fcomponents/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottlesdevs%2Fcomponents/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bottlesdevs","download_url":"https://codeload.github.com/bottlesdevs/components/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bottlesdevs%2Fcomponents/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28974393,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T08:16:14.655Z","status":"ssl_error","status_checked_at":"2026-02-01T08:06:51.373Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["bottles","components","dxvk","repository","wine"],"created_at":"2024-11-07T12:22:45.961Z","updated_at":"2026-02-01T09:10:02.937Z","avatar_url":"https://github.com/bottlesdevs.png","language":"Shell","readme":"# Components\nRepository for Bottles components\n\n\n## Why a centralized repository?\nWith a centralized repository we can provide some data such as the checksum, which is useful for validate downloads.\n\n\n## How to contribute\nTo propose new components, it is necessary to open a [Pull Request](https://github.com/bottlesdevs/components/pulls) with the manifest of the component we want to add, here are some examples of manifest:\n- [caffe-7.2](https://github.com/bottlesdevs/components/blob/main/runners/wine/caffe-7.2.yml)\n- [Proton-5.21-GE-1](https://github.com/bottlesdevs/components/blob/main/runners/proton/Proton-5.21-GE-1.yml)\n- [dxvk-1.9](https://github.com/bottlesdevs/components/blob/main/dxvk/dxvk-1.9.yml)\n- [vkd3d-v2.4](https://github.com/bottlesdevs/components/blob/main/vkd3d/vkd3d-v2.4.yml)\n\nTo do it, there is currently two methods.\n\n### 1 - Add an entry to the CI (preferred method)\nFor most components, new stable versions (and experimental builds if they exist) are automatically pulled. This is accomplished by the [pull-components.yml](https://github.com/bottlesdevs/components/blob/main/.github/workflows/pull-components.yml) workflow, where components are described in the following format:\n\n```yaml\nrepo : \"doitsujin/dxvk\",\nworkflow: \"artifacts.yml\",\nbranch: \"master\",\nname-prefix: \"dxvk-\",\nname-suffix: \"\",\nversion-prefix: \"v\",\nyaml-file: \"14-dxvk.yml\",\nCategory: \"dxvk\",\nSub-category: \"\",\n```\nwhere:\n- **repo** is the GitHub repository in the format `owner/repository`\n- **workflow** is the workflow filename used to generate experimental builds, if any\n- **branch** is the **workflow** branch used to generate experimental builds, if any\n- **name-prefix** is used to generate the full name of the component using **name-prefix** + `version` + **name-suffix** (e.g. `dxvk-` + `2.0` + ∅), and look for release/experimental asset whose filename is beginning by **name-prefix**\n- **name-suffix** serves the exact same purpose as **name-prefix**, is only used when multiple variants are available for one component (e.g. `-x86`, `-x64`, etc.)\n- **version-prefix** is used to find the latest release version whose [tag](https://github.com/doitsujin/dxvk/tags) is beginning by **version-prefix**, and to remove **version-prefix** from the final `version` string (e.g. `v2.0` will become `2.0`)\n- **yaml-file** is the YAML component filename located in the [input_files](https://github.com/bottlesdevs/components/blob/main/input_files) directory\n- **Category** and **Sub-category** are respectively the Category and Sub-category as described in the **yaml-file** (e.g. [14-dxvk.yml](https://github.com/bottlesdevs/components/blob/main/input_files/14-dxvk.yml))\n\n### 2 - Manually (legacy method)\nEach poster must follow the following layout:\n```yaml\nName: caffe-7.2\nProvider: bottles\nChannel: stable\nFile:\n- file_name: caffe-7.2-x86_64.tar.xz\n  url: https://github.com/bottlesdevs/wine/releases/download/caffe-7.2/caffe-7.2-x86_64.tar.xz\n  file_checksum: 659ee0ee3dbe5274825734ad19692e12\n  rename: caffe-7.2-x86_64.tar.xz\n```\nOld JSON manifests can be converted using this [online tool](https://www.json2yaml.com), where:\n- **Name** is a name without spaces, including version, of the component (must reflect the name of the manifest file)\n- **Provider** is the name of the component supplier (not the maintainer)\n- **Channel** should be stable or unstable\n- **File** is where it is stated how to get the component archive\n  - **file_name** is the full name of the component archive\n  - **url** is the direct URL to the archive download (only tarball are supported)\n  - **file_checksum** is the MD5 checksum of the archive\n  - **rename** this field should be the same as the name of the component for must cases (plus the extension), it is needed to rename the archive.\n\nThere is also an optional `Post` section, which can be used to rename the path after extraction:\n\n```yaml\nPost:\n- action: rename\n  source: lutris-fshack-6.14-2\n  dest: lutris-6.14-2-fshack\n```\n\nWe provide an [automatic tools](https://github.com/bottlesdevs/tools/blob/main/MaintainersHelpers/component-generator.py) for generating the manifest.\n\nIn addition to the manifest, an entry must be created in the corresponding file located in the [input_files](https://github.com/bottlesdevs/components/blob/main/input_files) directory. The index can then be regenerated using the [generate_index.sh](https://github.com/bottlesdevs/components/blob/main/generate_index.sh) script.\n\nPlease double-check and test using the `LOCAL_COMPONENTS=/path/to/components flatpak run com.usebottles.bottles` command before open a pull request.\n\n### Guidelines\nThe sources of the components must be public and searchable and must not infringe any copyright. Also, each archive must contain the compiled version and not the source code.\n\n\n### Testing repository\nThere is also a testing repository to test components before publishing them to the main repository.\nTo do so you need to add the new component to the `testing.yml` file (opening a Pull request) and run bottles with the environment variable `TESTING_REPOS=1` to use the testing repository.\n\n\n## Need help?\nReach us on our [Forums](https://github.com/orgs/bottlesdevs/discussions), [Discord](https://discord.gg/wF4JAdYrTR), [Telegram](https://t.me/usebottles) or [Matrix](https://matrix.to/#/%23UseBottles:matrix.org).\n","funding_links":["https://liberapay.com/Bottles","https://github.com/sponsors/bottlesdevs","https://usebottles.com/funding"],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbottlesdevs%2Fcomponents","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbottlesdevs%2Fcomponents","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbottlesdevs%2Fcomponents/lists"}