{"id":21607744,"url":"https://github.com/klardotsh/box-on-wheels","last_synced_at":"2026-06-17T23:31:07.273Z","repository":{"id":263202640,"uuid":"723289503","full_name":"klardotsh/box-on-wheels","owner":"klardotsh","description":"OCI containers for gnarly software [mirror]","archived":false,"fork":false,"pushed_at":"2024-11-16T22:53:13.000Z","size":7,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-13T07:45:25.220Z","etag":null,"topics":["distrobox","docker-image","oci","oci-image"],"latest_commit_sha":null,"homepage":"https://git.sr.ht/~klardotsh/box-on-wheels","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"0bsd","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/klardotsh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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}},"created_at":"2023-11-25T07:28:33.000Z","updated_at":"2024-11-16T22:53:16.000Z","dependencies_parsed_at":"2024-11-16T23:37:03.597Z","dependency_job_id":null,"html_url":"https://github.com/klardotsh/box-on-wheels","commit_stats":null,"previous_names":["klardotsh/box-on-wheels"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/klardotsh/box-on-wheels","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klardotsh%2Fbox-on-wheels","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klardotsh%2Fbox-on-wheels/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klardotsh%2Fbox-on-wheels/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klardotsh%2Fbox-on-wheels/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/klardotsh","download_url":"https://codeload.github.com/klardotsh/box-on-wheels/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/klardotsh%2Fbox-on-wheels/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34470322,"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-17T02:00:05.408Z","response_time":127,"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":["distrobox","docker-image","oci","oci-image"],"created_at":"2024-11-24T20:33:27.021Z","updated_at":"2026-06-17T23:31:07.249Z","avatar_url":"https://github.com/klardotsh.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Box On Wheels: OCI containers for gnarly software\n\nThis repository is a collection of OCI (\"Docker\", if you prefer) containers\nmeant to run various (generally proprietary) software that can't be run on\nMusl-based distributions such as Alpine or (some configurations of) Void. I use\nthese with [Distrobox](https://github.com/89luca89/distrobox) as somewhat of an\nalternative to Flatpak without all the runtime bloat and (unnecessary/undesired\nfor my usecases) security features. Indeed, tight integration with my home\ndirectory is a feature, not a bug.\n\nArch is used as a Glibc-having OS due to its general popularity: issues on Arch\ntend to get fixed quickly as a function of sheer userbase. Relatedly, most\nproprietary software runs well on Arch with little fuss, and the OS is\nrelatively easy to script in this context.\n\nIn general, if your distribution packages something out of this repo, use that\npackage instead, but if you're on Musl, they almost certainly do not.\n\n## How to use\n\nFor now, these images aren't published anywhere, so you'll need to build them\nbefore telling Distrobox (or whatever) to use them. I only test these with:\n\n- Buildah as a builder\n- Distrobox as an orchestrator\n- Podman as a container manager\n- crun as a container runtime\n\nAny other configurations are untested and unsupported, but patches are welcome.\nI presume these should run fairly well with Docker replacing steps 1, 3, and 4,\ntoo.\n\n### Building the base image\n\n```sh\nbuildah bud -t oci.klar.sh/bow-base:latest -f Containerfile.base\n```\n\n### Building app images\n\nFor whichever app(s) you're interested in:\n\n```sh\n# Valid options are (or just `ls Containerfile.*` in this directory):\n# discord, steam, zoom\nAPP_NAME=steam\n\nbuildah bud -t \"oci.klar.sh/bow-${APP_NAME}:latest\" -f \"Containerfile.${APP_NAME}\"\ndistrobox create \\\n    -n \"${APP_NAME}\" \\\n    --image oci.klar.sh/bow-${APP_NAME}:latest \\\n    --additional-flags \"--runtime /usr/bin/crun --group-add keep-groups\" \\\n    --home \"${HOME}/.distrobox/${APP_NAME}\"\n```\n\n\u003e The `--additional-flags` bit is not optional when using rootless containers\n\u003e (eg. Podman)! Without it (and `crun`), you won't have access to your webcam\n\u003e in the containers, which may be a problem for Discord and Zoom depending on\n\u003e your usecase. I'm not certain, but I believe Docker (which runs a root-ish\n\u003e daemon) should be unaffected, and so the `--additional-flags` could be left\n\u003e off.\n\n### Running Stuff\n\nWhile Distrobox has the `export` command, I prefer to remix their scripts such\nthat typing the command name launches the app, rather than sends me into a\nshell in the respective container. Here's my example files for how I handle\nDiscord:\n\n```sh\n#!/bin/sh\n# ~/.local/bin/discord\n#\n# distrobox_binary\n# name: discord\nif [ -z \"${CONTAINER_ID}\" ]; then\n\texec /usr/bin/distrobox-enter -n discord -- \t\t /usr/local/bin/discord  \"$@\"\nelse\n\texec /usr/local/bin/discord \"$@\"\nfi\n```\n\n\u003e N.B. in the above example, the `/usr/local/bin/discord` part is important, as\n\u003e there's a wrapper script in the BOW container which runs `betterdiscordctl`\n\u003e to ensure BetterDiscod is always installed. `/usr/bin/discord` is the raw\n\u003e Discord installation with no wrapper script, which isn't what I want.\n\n```ini\n# ~/.local/share/applications/discord\n[Desktop Entry]\nName=Discord\nCategories=Distrobox;System;Utility\nExec=/home/j/bin/discord\nIcon=/home/j/.local/share/icons/distrobox/arch.png\nKeywords=distrobox;\nTryExec=/usr/bin/distrobox\nType=Application\n```\n\n## Contributing\n\nPatches are welcome, but I hold myself to no obligation to merge them. Submit\nthem by email at [the SourceHut\nrepo](https://git.sr.ht/~klardotsh/box-on-wheels) or by pull request [at the\nGitHub repo](https://github.com/klardotsh/box-on-wheels). Formally, the\nSourceHut mirror is canonical; the repo is hosted on GitHub only for\ndiscoverability.\n\n## Legal Bullshit\n\nSee [COPYING](/COPYING) for the [Zero-Clause BSD\nLicense](https://www.tldrlegal.com/license/bsd-0-clause-license), which is\nmaximally-permissive and as close as I can get to a public domain dedication\nwithout pissing the EU and Fedora and a bunch of other entities off.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklardotsh%2Fbox-on-wheels","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fklardotsh%2Fbox-on-wheels","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fklardotsh%2Fbox-on-wheels/lists"}