├── .github ├── ISSUE_TEMPLATE │ ├── bug-report.yml │ ├── new-arch.yml │ ├── new-image.yml │ └── new-package.yml └── workflows │ ├── almalinux.yaml │ ├── alpine.yaml │ ├── amazonlinux.yaml │ ├── centos.yaml │ ├── debian.yaml │ ├── opensuse.yaml │ ├── rockylinux.yaml │ └── wolfi.yaml ├── COPYING ├── README.md ├── almalinux ├── 8 │ ├── Containerfile │ ├── extra-packages │ └── missing-docs └── 9 │ ├── Containerfile │ ├── extra-packages │ └── missing-docs ├── alpine ├── 3.18 │ ├── Containerfile │ └── extra-packages ├── 3.19 │ ├── Containerfile │ └── extra-packages ├── 3.20 │ ├── Containerfile │ └── extra-packages ├── 3.21 │ ├── Containerfile │ └── extra-packages └── edge │ ├── Containerfile │ └── extra-packages ├── amazonlinux ├── 2 │ ├── Containerfile │ ├── extra-packages │ ├── missing-docs │ └── packages └── 2023 │ ├── Containerfile │ ├── extra-packages │ └── missing-docs ├── centos ├── stream10 │ ├── Containerfile │ ├── extra-packages │ └── missing-docs ├── stream8 │ ├── Containerfile │ ├── extra-packages │ └── missing-docs └── stream9 │ ├── Containerfile │ ├── extra-packages │ └── missing-docs ├── debian ├── 10 │ ├── Containerfile │ ├── extra-packages │ └── toolbox-flatpak-xdg-utils.sh ├── 11 │ ├── Containerfile │ ├── extra-packages │ └── toolbox-flatpak-xdg-utils.sh ├── 12 │ ├── Containerfile │ ├── extra-packages │ └── toolbox-flatpak-xdg-utils.sh ├── testing │ ├── Containerfile │ ├── extra-packages │ └── toolbox-flatpak-xdg-utils.sh └── unstable │ ├── Containerfile │ ├── extra-packages │ └── toolbox-flatpak-xdg-utils.sh ├── opensuse └── tumbleweed │ ├── Containerfile │ └── extra-packages ├── quay.io-toolbx-images.pub ├── rockylinux ├── 8 │ ├── Containerfile │ ├── extra-packages │ └── missing-docs └── 9 │ ├── Containerfile │ ├── extra-packages │ └── missing-docs └── wolfi └── latest ├── Containerfile └── extra-packages /.github/ISSUE_TEMPLATE/bug-report.yml: -------------------------------------------------------------------------------- 1 | name: Report a bug 2 | description: Report an issue with an existing image 3 | labels: ["bug"] 4 | assignees: [] 5 | body: 6 | - type: textarea 7 | id: bug-image 8 | attributes: 9 | label: Image and version of the image where the issue happens 10 | placeholder: AlmaLinux 9 11 | validations: 12 | required: true 13 | 14 | - type: textarea 15 | id: bug-description 16 | attributes: 17 | label: Describe the bug 18 | description: A clear and concise description of what the bug is. 19 | placeholder: I'm using the image foo and it fails with bar. 20 | validations: 21 | required: true 22 | 23 | - type: textarea 24 | id: bug-reproduction 25 | attributes: 26 | label: Reproduction steps 27 | description: Steps to reproduce the bug. 28 | placeholder: | 29 | 1. 30 | 2. 31 | 3. 32 | validations: 33 | required: true 34 | 35 | - type: textarea 36 | id: bug-host 37 | attributes: 38 | label: Host distribution and version, toolbx and podman versions 39 | validations: 40 | required: true 41 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/new-arch.yml: -------------------------------------------------------------------------------- 1 | name: Request an additional architecture for an existing image 2 | description: Ask for an image to be built for an additional architecture 3 | title: "Add architecture: " 4 | labels: ["new-architecture-request", "maintainers-wanted"] 5 | assignees: [] 6 | body: 7 | - type: textarea 8 | id: newarch-distribution 9 | attributes: 10 | label: Distribution name 11 | validations: 12 | required: true 13 | 14 | - type: textarea 15 | id: newarch-arch 16 | attributes: 17 | label: Architecture requested 18 | validations: 19 | required: true 20 | 21 | - type: textarea 22 | id: newarch-images 23 | attributes: 24 | label: Where are the official container images from the distribution published? 25 | validations: 26 | required: true 27 | 28 | - type: textarea 29 | id: newarch-maintainer 30 | attributes: 31 | label: Will you be interested in maintaining this image? 32 | validations: 33 | required: true 34 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/new-image.yml: -------------------------------------------------------------------------------- 1 | name: Request an image for a new distribution 2 | description: Ask for a new distribution to be included in this repo 3 | title: "Add distribution: " 4 | labels: ["new-image-request", "maintainers-wanted"] 5 | assignees: [] 6 | body: 7 | - type: textarea 8 | id: newimage-distribution 9 | attributes: 10 | label: Distribution name and versions requested 11 | validations: 12 | required: true 13 | 14 | - type: textarea 15 | id: newimage-images 16 | attributes: 17 | label: Where are the official container images from the distribution published? 18 | validations: 19 | required: true 20 | 21 | - type: textarea 22 | id: newimage-maintainer 23 | attributes: 24 | label: Will you be interested in maintaining this image? 25 | validations: 26 | required: true 27 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/new-package.yml: -------------------------------------------------------------------------------- 1 | name: Request a package 2 | description: Ask for a new package to be added to an existing distribution image 3 | title: "New Package: - " 4 | labels: ["enhancement"] 5 | assignees: [] 6 | body: 7 | - type: textarea 8 | id: newpackage-image 9 | attributes: 10 | label: To which distribution image and which version should we add this package? 11 | validations: 12 | required: true 13 | 14 | - type: textarea 15 | id: newpackage-reason 16 | attributes: 17 | label: Why should we include this package by default? 18 | description: Explain why this package should be added to the image by default and why it can not be installed after. 19 | validations: 20 | required: true 21 | -------------------------------------------------------------------------------- /.github/workflows/almalinux.yaml: -------------------------------------------------------------------------------- 1 | name: "AlmaLinux: Build and push toolbx images" 2 | 3 | permissions: read-all 4 | 5 | on: 6 | pull_request: 7 | branches: 8 | - main 9 | paths: 10 | - almalinux/** 11 | - .github/workflows/almalinux.yaml 12 | push: 13 | branches: 14 | - main 15 | paths: 16 | - almalinux/** 17 | - .github/workflows/almalinux.yaml 18 | schedule: 19 | - cron: '0 0 * * MON' 20 | 21 | env: 22 | distro: 'almalinux' 23 | distro_pretty: 'AlmaLinux' 24 | latest_release: '9' 25 | platforms: 'linux/amd64, linux/arm64' 26 | registry: 'quay.io/toolbx-images' 27 | 28 | # Prevent multiple workflow runs from racing to ensure that pushes are made 29 | # sequentially for the main branch. Also cancel in progress workflow runs for 30 | # pull requests only. 31 | concurrency: 32 | group: ${{ github.workflow }}-${{ github.ref }} 33 | cancel-in-progress: ${{ github.event_name == 'pull_request' }} 34 | 35 | jobs: 36 | build-push-images: 37 | strategy: 38 | fail-fast: false 39 | matrix: 40 | release: ['8', '9'] 41 | 42 | runs-on: ubuntu-24.04 43 | steps: 44 | - name: Checkout 45 | uses: actions/checkout@v4 46 | 47 | - name: Set up QEMU for multi-arch builds 48 | shell: bash 49 | run: | 50 | sudo apt update 51 | sudo apt install qemu-user-static 52 | 53 | - name: Build container image 54 | uses: redhat-actions/buildah-build@v2 55 | if: env.latest_release != matrix.release 56 | with: 57 | platforms: ${{ env.platforms }} 58 | context: ${{ env.distro }}/${{ matrix.release }} 59 | image: ${{ env.distro }}-toolbox 60 | tags: ${{ matrix.release }} 61 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 62 | layers: false 63 | oci: true 64 | 65 | - name: Build container image (latest tag) 66 | uses: redhat-actions/buildah-build@v2 67 | if: env.latest_release == matrix.release 68 | with: 69 | platforms: ${{ env.platforms }} 70 | context: ${{ env.distro }}/${{ matrix.release }} 71 | image: ${{ env.distro }}-toolbox 72 | tags: ${{ matrix.release }} latest 73 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 74 | layers: false 75 | oci: true 76 | 77 | - name: Push to Container Registry 78 | uses: redhat-actions/push-to-registry@v2 79 | id: push 80 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 81 | with: 82 | username: ${{ secrets.BOT_USERNAME }} 83 | password: ${{ secrets.BOT_SECRET }} 84 | image: ${{ env.distro }}-toolbox 85 | registry: ${{ env.registry }} 86 | tags: ${{ matrix.release }} 87 | 88 | - name: Push to Container Registry (latest tag) 89 | uses: redhat-actions/push-to-registry@v2 90 | id: push-latest 91 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 92 | with: 93 | username: ${{ secrets.BOT_USERNAME }} 94 | password: ${{ secrets.BOT_SECRET }} 95 | image: ${{ env.distro }}-toolbox 96 | registry: ${{ env.registry }} 97 | tags: ${{ matrix.release }} latest 98 | 99 | - name: Login to Container Registry 100 | uses: redhat-actions/podman-login@v1 101 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 102 | with: 103 | registry: ${{ env.registry }} 104 | username: ${{ secrets.BOT_USERNAME }} 105 | password: ${{ secrets.BOT_SECRET }} 106 | 107 | - uses: sigstore/cosign-installer@v3.3.0 108 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 109 | 110 | - name: Sign container image 111 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 112 | run: | 113 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push.outputs.digest }} 114 | env: 115 | COSIGN_EXPERIMENTAL: false 116 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 117 | 118 | - name: Sign container image (latest) 119 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 120 | run: | 121 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push-latest.outputs.digest }} 122 | env: 123 | COSIGN_EXPERIMENTAL: false 124 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 125 | -------------------------------------------------------------------------------- /.github/workflows/alpine.yaml: -------------------------------------------------------------------------------- 1 | name: "Alpine Linux: Build and push toolbx images" 2 | 3 | permissions: read-all 4 | 5 | on: 6 | pull_request: 7 | branches: 8 | - main 9 | paths: 10 | - alpine/** 11 | - .github/workflows/alpine.yaml 12 | push: 13 | branches: 14 | - main 15 | paths: 16 | - alpine/** 17 | - .github/workflows/alpine.yaml 18 | schedule: 19 | - cron: '0 0 * * MON' 20 | 21 | env: 22 | distro: 'alpine' 23 | distro_pretty: 'Alpine Linux' 24 | latest_release: '3.21' 25 | platforms: 'linux/amd64, linux/arm64' 26 | registry: 'quay.io/toolbx-images' 27 | 28 | # Prevent multiple workflow runs from racing to ensure that pushes are made 29 | # sequentially for the main branch. Also cancel in progress workflow runs for 30 | # pull requests only. 31 | concurrency: 32 | group: ${{ github.workflow }}-${{ github.ref }} 33 | cancel-in-progress: ${{ github.event_name == 'pull_request' }} 34 | 35 | jobs: 36 | build-push-images: 37 | strategy: 38 | fail-fast: false 39 | matrix: 40 | release: ['3.18', '3.19', '3.20', '3.21', 'edge'] 41 | 42 | runs-on: ubuntu-24.04 43 | steps: 44 | - name: Checkout 45 | uses: actions/checkout@v4 46 | 47 | - name: Set up QEMU for multi-arch builds 48 | shell: bash 49 | run: | 50 | sudo apt update 51 | sudo apt install qemu-user-static 52 | 53 | - name: Build container image 54 | uses: redhat-actions/buildah-build@v2 55 | if: env.latest_release != matrix.release 56 | with: 57 | platforms: ${{ env.platforms }} 58 | context: ${{ env.distro }}/${{ matrix.release }} 59 | image: ${{ env.distro }}-toolbox 60 | tags: ${{ matrix.release }} 61 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 62 | layers: false 63 | oci: true 64 | 65 | - name: Build container image (latest tag) 66 | uses: redhat-actions/buildah-build@v2 67 | if: env.latest_release == matrix.release 68 | with: 69 | platforms: ${{ env.platforms }} 70 | context: ${{ env.distro }}/${{ matrix.release }} 71 | image: ${{ env.distro }}-toolbox 72 | tags: ${{ matrix.release }} latest 73 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 74 | layers: false 75 | oci: true 76 | 77 | - name: Push to Container Registry 78 | uses: redhat-actions/push-to-registry@v2 79 | id: push 80 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 81 | with: 82 | username: ${{ secrets.BOT_USERNAME }} 83 | password: ${{ secrets.BOT_SECRET }} 84 | image: ${{ env.distro }}-toolbox 85 | registry: ${{ env.registry }} 86 | tags: ${{ matrix.release }} 87 | 88 | - name: Push to Container Registry (latest tag) 89 | uses: redhat-actions/push-to-registry@v2 90 | id: push-latest 91 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 92 | with: 93 | username: ${{ secrets.BOT_USERNAME }} 94 | password: ${{ secrets.BOT_SECRET }} 95 | image: ${{ env.distro }}-toolbox 96 | registry: ${{ env.registry }} 97 | tags: ${{ matrix.release }} latest 98 | 99 | - name: Login to Container Registry 100 | uses: redhat-actions/podman-login@v1 101 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 102 | with: 103 | registry: ${{ env.registry }} 104 | username: ${{ secrets.BOT_USERNAME }} 105 | password: ${{ secrets.BOT_SECRET }} 106 | 107 | - uses: sigstore/cosign-installer@v3.3.0 108 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 109 | 110 | - name: Sign container image 111 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 112 | run: | 113 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push.outputs.digest }} 114 | env: 115 | COSIGN_EXPERIMENTAL: false 116 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 117 | 118 | - name: Sign container image (latest) 119 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 120 | run: | 121 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push-latest.outputs.digest }} 122 | env: 123 | COSIGN_EXPERIMENTAL: false 124 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 125 | -------------------------------------------------------------------------------- /.github/workflows/amazonlinux.yaml: -------------------------------------------------------------------------------- 1 | name: "Amazon Linux: Build and push toolbx images" 2 | 3 | permissions: read-all 4 | 5 | on: 6 | pull_request: 7 | branches: 8 | - main 9 | paths: 10 | - amazonlinux/** 11 | - .github/workflows/amazonlinux.yaml 12 | push: 13 | branches: 14 | - main 15 | paths: 16 | - amazonlinux/** 17 | - .github/workflows/amazonlinux.yaml 18 | schedule: 19 | - cron: '0 0 * * MON' 20 | 21 | env: 22 | distro: 'amazonlinux' 23 | distro_pretty: 'Amazon Linux' 24 | latest_release: '2023' 25 | platforms: 'linux/amd64, linux/arm64' 26 | registry: 'quay.io/toolbx-images' 27 | 28 | # Prevent multiple workflow runs from racing to ensure that pushes are made 29 | # sequentially for the main branch. Also cancel in progress workflow runs for 30 | # pull requests only. 31 | concurrency: 32 | group: ${{ github.workflow }}-${{ github.ref }} 33 | cancel-in-progress: ${{ github.event_name == 'pull_request' }} 34 | 35 | jobs: 36 | build-push-images: 37 | strategy: 38 | fail-fast: false 39 | matrix: 40 | release: ['2', '2023'] 41 | 42 | runs-on: ubuntu-24.04 43 | steps: 44 | - name: Checkout 45 | uses: actions/checkout@v4 46 | 47 | - name: Set up QEMU for multi-arch builds 48 | shell: bash 49 | run: | 50 | sudo apt update 51 | sudo apt install qemu-user-static 52 | 53 | - name: Build container image 54 | uses: redhat-actions/buildah-build@v2 55 | if: env.latest_release != matrix.release 56 | with: 57 | platforms: ${{ env.platforms }} 58 | context: ${{ env.distro }}/${{ matrix.release }} 59 | image: ${{ env.distro }}-toolbox 60 | tags: ${{ matrix.release }} 61 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 62 | layers: false 63 | oci: true 64 | 65 | - name: Build container image (latest tag) 66 | uses: redhat-actions/buildah-build@v2 67 | if: env.latest_release == matrix.release 68 | with: 69 | platforms: ${{ env.platforms }} 70 | context: ${{ env.distro }}/${{ matrix.release }} 71 | image: ${{ env.distro }}-toolbox 72 | tags: ${{ matrix.release }} latest 73 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 74 | layers: false 75 | oci: true 76 | 77 | - name: Push to Container Registry 78 | uses: redhat-actions/push-to-registry@v2 79 | id: push 80 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 81 | with: 82 | username: ${{ secrets.BOT_USERNAME }} 83 | password: ${{ secrets.BOT_SECRET }} 84 | image: ${{ env.distro }}-toolbox 85 | registry: ${{ env.registry }} 86 | tags: ${{ matrix.release }} 87 | 88 | - name: Push to Container Registry (latest tag) 89 | uses: redhat-actions/push-to-registry@v2 90 | id: push-latest 91 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 92 | with: 93 | username: ${{ secrets.BOT_USERNAME }} 94 | password: ${{ secrets.BOT_SECRET }} 95 | image: ${{ env.distro }}-toolbox 96 | registry: ${{ env.registry }} 97 | tags: ${{ matrix.release }} latest 98 | 99 | - name: Login to Container Registry 100 | uses: redhat-actions/podman-login@v1 101 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 102 | with: 103 | registry: ${{ env.registry }} 104 | username: ${{ secrets.BOT_USERNAME }} 105 | password: ${{ secrets.BOT_SECRET }} 106 | 107 | - uses: sigstore/cosign-installer@v3.3.0 108 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 109 | 110 | - name: Sign container image 111 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 112 | run: | 113 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push.outputs.digest }} 114 | env: 115 | COSIGN_EXPERIMENTAL: false 116 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 117 | 118 | - name: Sign container image (latest) 119 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 120 | run: | 121 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push-latest.outputs.digest }} 122 | env: 123 | COSIGN_EXPERIMENTAL: false 124 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 125 | -------------------------------------------------------------------------------- /.github/workflows/centos.yaml: -------------------------------------------------------------------------------- 1 | name: "CentOS: Build and push toolbx images" 2 | 3 | permissions: read-all 4 | 5 | on: 6 | pull_request: 7 | branches: 8 | - main 9 | paths: 10 | - centos/** 11 | - .github/workflows/centos.yaml 12 | push: 13 | branches: 14 | - main 15 | paths: 16 | - centos/** 17 | - .github/workflows/centos.yaml 18 | schedule: 19 | - cron: '0 0 * * MON' 20 | 21 | env: 22 | distro: 'centos' 23 | distro_pretty: 'CentOS' 24 | latest_release: 'stream10' 25 | platforms: 'linux/amd64, linux/arm64' 26 | registry: 'quay.io/toolbx-images' 27 | 28 | # Prevent multiple workflow runs from racing to ensure that pushes are made 29 | # sequentially for the main branch. Also cancel in progress workflow runs for 30 | # pull requests only. 31 | concurrency: 32 | group: ${{ github.workflow }}-${{ github.ref }} 33 | cancel-in-progress: ${{ github.event_name == 'pull_request' }} 34 | 35 | jobs: 36 | build-push-images: 37 | strategy: 38 | fail-fast: false 39 | matrix: 40 | release: ['stream9', 'stream10'] 41 | 42 | runs-on: ubuntu-24.04 43 | steps: 44 | - name: Checkout 45 | uses: actions/checkout@v4 46 | 47 | - name: Set up QEMU for multi-arch builds 48 | shell: bash 49 | run: | 50 | sudo apt update 51 | sudo apt install qemu-user-static 52 | 53 | - name: Build container image 54 | uses: redhat-actions/buildah-build@v2 55 | if: env.latest_release != matrix.release 56 | with: 57 | platforms: ${{ env.platforms }} 58 | context: ${{ env.distro }}/${{ matrix.release }} 59 | image: ${{ env.distro }}-toolbox 60 | tags: ${{ matrix.release }} 61 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 62 | layers: false 63 | oci: true 64 | 65 | - name: Build container image (latest tag) 66 | uses: redhat-actions/buildah-build@v2 67 | if: env.latest_release == matrix.release 68 | with: 69 | platforms: ${{ env.platforms }} 70 | context: ${{ env.distro }}/${{ matrix.release }} 71 | image: ${{ env.distro }}-toolbox 72 | tags: ${{ matrix.release }} latest 73 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 74 | layers: false 75 | oci: true 76 | 77 | - name: Push to Container Registry 78 | uses: redhat-actions/push-to-registry@v2 79 | id: push 80 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 81 | with: 82 | username: ${{ secrets.BOT_USERNAME }} 83 | password: ${{ secrets.BOT_SECRET }} 84 | image: ${{ env.distro }}-toolbox 85 | registry: ${{ env.registry }} 86 | tags: ${{ matrix.release }} 87 | 88 | - name: Push to Container Registry (latest tag) 89 | uses: redhat-actions/push-to-registry@v2 90 | id: push-latest 91 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 92 | with: 93 | username: ${{ secrets.BOT_USERNAME }} 94 | password: ${{ secrets.BOT_SECRET }} 95 | image: ${{ env.distro }}-toolbox 96 | registry: ${{ env.registry }} 97 | tags: ${{ matrix.release }} latest 98 | 99 | - name: Login to Container Registry 100 | uses: redhat-actions/podman-login@v1 101 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 102 | with: 103 | registry: ${{ env.registry }} 104 | username: ${{ secrets.BOT_USERNAME }} 105 | password: ${{ secrets.BOT_SECRET }} 106 | 107 | - uses: sigstore/cosign-installer@v3.3.0 108 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 109 | 110 | - name: Sign container image 111 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 112 | run: | 113 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push.outputs.digest }} 114 | env: 115 | COSIGN_EXPERIMENTAL: false 116 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 117 | 118 | - name: Sign container image (latest) 119 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 120 | run: | 121 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push-latest.outputs.digest }} 122 | env: 123 | COSIGN_EXPERIMENTAL: false 124 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 125 | -------------------------------------------------------------------------------- /.github/workflows/debian.yaml: -------------------------------------------------------------------------------- 1 | name: "Debian: Build and push toolbx images" 2 | 3 | permissions: read-all 4 | 5 | on: 6 | pull_request: 7 | branches: 8 | - main 9 | paths: 10 | - debian/** 11 | - .github/workflows/debian.yaml 12 | push: 13 | branches: 14 | - main 15 | paths: 16 | - debian/** 17 | - .github/workflows/debian.yaml 18 | schedule: 19 | - cron: '0 0 * * MON' 20 | 21 | env: 22 | distro: 'debian' 23 | distro_pretty: 'Debian' 24 | latest_release: 'unstable' 25 | platforms: 'linux/amd64, linux/arm64' 26 | registry: 'quay.io/toolbx-images' 27 | 28 | # Prevent multiple workflow runs from racing to ensure that pushes are made 29 | # sequentially for the main branch. Also cancel in progress workflow runs for 30 | # pull requests only. 31 | concurrency: 32 | group: ${{ github.workflow }}-${{ github.ref }} 33 | cancel-in-progress: ${{ github.event_name == 'pull_request' }} 34 | 35 | jobs: 36 | build-push-images: 37 | strategy: 38 | fail-fast: false 39 | matrix: 40 | release: ['10', '11', '12', 'testing', 'unstable'] 41 | 42 | runs-on: ubuntu-22.04 43 | steps: 44 | - name: Checkout 45 | uses: actions/checkout@v4 46 | 47 | - name: Set up QEMU for multi-arch builds 48 | shell: bash 49 | run: | 50 | sudo apt update 51 | sudo apt install qemu-user-static 52 | 53 | - name: Build container image 54 | uses: redhat-actions/buildah-build@v2 55 | if: env.latest_release != matrix.release 56 | with: 57 | platforms: ${{ env.platforms }} 58 | context: ${{ env.distro }}/${{ matrix.release }} 59 | image: ${{ env.distro }}-toolbox 60 | tags: ${{ matrix.release }} 61 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 62 | layers: false 63 | oci: true 64 | 65 | - name: Build container image (latest tag) 66 | uses: redhat-actions/buildah-build@v2 67 | if: env.latest_release == matrix.release 68 | with: 69 | platforms: ${{ env.platforms }} 70 | context: ${{ env.distro }}/${{ matrix.release }} 71 | image: ${{ env.distro }}-toolbox 72 | tags: ${{ matrix.release }} latest 73 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 74 | layers: false 75 | oci: true 76 | 77 | - name: Push to Container Registry 78 | uses: redhat-actions/push-to-registry@v2 79 | id: push 80 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 81 | with: 82 | username: ${{ secrets.BOT_USERNAME }} 83 | password: ${{ secrets.BOT_SECRET }} 84 | image: ${{ env.distro }}-toolbox 85 | registry: ${{ env.registry }} 86 | tags: ${{ matrix.release }} 87 | 88 | - name: Push to Container Registry (latest tag) 89 | uses: redhat-actions/push-to-registry@v2 90 | id: push-latest 91 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 92 | with: 93 | username: ${{ secrets.BOT_USERNAME }} 94 | password: ${{ secrets.BOT_SECRET }} 95 | image: ${{ env.distro }}-toolbox 96 | registry: ${{ env.registry }} 97 | tags: ${{ matrix.release }} latest 98 | 99 | - name: Login to Container Registry 100 | uses: redhat-actions/podman-login@v1 101 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 102 | with: 103 | registry: ${{ env.registry }} 104 | username: ${{ secrets.BOT_USERNAME }} 105 | password: ${{ secrets.BOT_SECRET }} 106 | 107 | - uses: sigstore/cosign-installer@v3.3.0 108 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 109 | 110 | - name: Sign container image 111 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 112 | run: | 113 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push.outputs.digest }} 114 | env: 115 | COSIGN_EXPERIMENTAL: false 116 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 117 | 118 | - name: Sign container image (latest) 119 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 120 | run: | 121 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push-latest.outputs.digest }} 122 | env: 123 | COSIGN_EXPERIMENTAL: false 124 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 125 | -------------------------------------------------------------------------------- /.github/workflows/opensuse.yaml: -------------------------------------------------------------------------------- 1 | name: "openSUSE: Build and push toolbx images" 2 | 3 | permissions: read-all 4 | 5 | on: 6 | pull_request: 7 | branches: 8 | - main 9 | paths: 10 | - opensuse/** 11 | - .github/workflows/opensuse.yaml 12 | push: 13 | branches: 14 | - main 15 | paths: 16 | - opensuse/** 17 | - .github/workflows/opensuse.yaml 18 | schedule: 19 | - cron: '0 0 * * MON' 20 | 21 | env: 22 | distro: 'opensuse' 23 | distro_pretty: 'openSUSE' 24 | latest_release: 'tumbleweed' 25 | platforms: 'linux/amd64, linux/arm64' 26 | registry: 'quay.io/toolbx-images' 27 | 28 | # Prevent multiple workflow runs from racing to ensure that pushes are made 29 | # sequentially for the main branch. Also cancel in progress workflow runs for 30 | # pull requests only. 31 | concurrency: 32 | group: ${{ github.workflow }}-${{ github.ref }} 33 | cancel-in-progress: ${{ github.event_name == 'pull_request' }} 34 | 35 | jobs: 36 | build-push-images: 37 | strategy: 38 | matrix: 39 | release: ['tumbleweed'] 40 | 41 | runs-on: ubuntu-24.04 42 | steps: 43 | - name: Checkout 44 | uses: actions/checkout@v4 45 | 46 | - name: Set up QEMU for multi-arch builds 47 | shell: bash 48 | run: | 49 | sudo apt update 50 | sudo apt install qemu-user-static 51 | 52 | - name: Build container image 53 | uses: redhat-actions/buildah-build@v2 54 | if: env.latest_release != matrix.release 55 | with: 56 | platforms: ${{ env.platforms }} 57 | context: ${{ env.distro }}/${{ matrix.release }} 58 | image: ${{ env.distro }}-toolbox 59 | tags: ${{ matrix.release }} 60 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 61 | layers: false 62 | oci: true 63 | 64 | - name: Build container image (latest tag) 65 | uses: redhat-actions/buildah-build@v2 66 | if: env.latest_release == matrix.release 67 | with: 68 | platforms: ${{ env.platforms }} 69 | context: ${{ env.distro }}/${{ matrix.release }} 70 | image: ${{ env.distro }}-toolbox 71 | tags: ${{ matrix.release }} latest 72 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 73 | layers: false 74 | oci: true 75 | 76 | - name: Push to Container Registry 77 | uses: redhat-actions/push-to-registry@v2 78 | id: push 79 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 80 | with: 81 | username: ${{ secrets.BOT_USERNAME }} 82 | password: ${{ secrets.BOT_SECRET }} 83 | image: ${{ env.distro }}-toolbox 84 | registry: ${{ env.registry }} 85 | tags: ${{ matrix.release }} 86 | 87 | - name: Push to Container Registry (latest tag) 88 | uses: redhat-actions/push-to-registry@v2 89 | id: push-latest 90 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 91 | with: 92 | username: ${{ secrets.BOT_USERNAME }} 93 | password: ${{ secrets.BOT_SECRET }} 94 | image: ${{ env.distro }}-toolbox 95 | registry: ${{ env.registry }} 96 | tags: ${{ matrix.release }} latest 97 | 98 | - name: Login to Container Registry 99 | uses: redhat-actions/podman-login@v1 100 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 101 | with: 102 | registry: ${{ env.registry }} 103 | username: ${{ secrets.BOT_USERNAME }} 104 | password: ${{ secrets.BOT_SECRET }} 105 | 106 | - uses: sigstore/cosign-installer@v3.3.0 107 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 108 | 109 | - name: Sign container image 110 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 111 | run: | 112 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push.outputs.digest }} 113 | env: 114 | COSIGN_EXPERIMENTAL: false 115 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 116 | 117 | - name: Sign container image (latest) 118 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 119 | run: | 120 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push-latest.outputs.digest }} 121 | env: 122 | COSIGN_EXPERIMENTAL: false 123 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 124 | -------------------------------------------------------------------------------- /.github/workflows/rockylinux.yaml: -------------------------------------------------------------------------------- 1 | name: "Rocky Linux: Build and push toolbx images" 2 | 3 | permissions: read-all 4 | 5 | on: 6 | pull_request: 7 | branches: 8 | - main 9 | paths: 10 | - rockylinux/** 11 | - .github/workflows/rockylinux.yaml 12 | push: 13 | branches: 14 | - main 15 | paths: 16 | - rockylinux/** 17 | - .github/workflows/rockylinux.yaml 18 | schedule: 19 | - cron: '0 0 * * MON' 20 | 21 | env: 22 | distro: 'rockylinux' 23 | distro_pretty: 'Rocky Linux' 24 | latest_release: '9' 25 | platforms: 'linux/amd64, linux/arm64' 26 | registry: 'quay.io/toolbx-images' 27 | 28 | # Prevent multiple workflow runs from racing to ensure that pushes are made 29 | # sequentially for the main branch. Also cancel in progress workflow runs for 30 | # pull requests only. 31 | concurrency: 32 | group: ${{ github.workflow }}-${{ github.ref }} 33 | cancel-in-progress: ${{ github.event_name == 'pull_request' }} 34 | 35 | jobs: 36 | build-push-images: 37 | strategy: 38 | fail-fast: false 39 | matrix: 40 | release: ['8', '9'] 41 | 42 | runs-on: ubuntu-24.04 43 | steps: 44 | - name: Checkout 45 | uses: actions/checkout@v4 46 | 47 | - name: Set up QEMU for multi-arch builds 48 | shell: bash 49 | run: | 50 | sudo apt update 51 | sudo apt install qemu-user-static 52 | 53 | - name: Build container image 54 | uses: redhat-actions/buildah-build@v2 55 | if: env.latest_release != matrix.release 56 | with: 57 | platforms: ${{ env.platforms }} 58 | context: ${{ env.distro }}/${{ matrix.release }} 59 | image: ${{ env.distro }}-toolbox 60 | tags: ${{ matrix.release }} 61 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 62 | layers: false 63 | oci: true 64 | 65 | - name: Build container image (latest tag) 66 | uses: redhat-actions/buildah-build@v2 67 | if: env.latest_release == matrix.release 68 | with: 69 | platforms: ${{ env.platforms }} 70 | context: ${{ env.distro }}/${{ matrix.release }} 71 | image: ${{ env.distro }}-toolbox 72 | tags: ${{ matrix.release }} latest 73 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 74 | layers: false 75 | oci: true 76 | 77 | - name: Push to Container Registry 78 | uses: redhat-actions/push-to-registry@v2 79 | id: push 80 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 81 | with: 82 | username: ${{ secrets.BOT_USERNAME }} 83 | password: ${{ secrets.BOT_SECRET }} 84 | image: ${{ env.distro }}-toolbox 85 | registry: ${{ env.registry }} 86 | tags: ${{ matrix.release }} 87 | 88 | - name: Push to Container Registry (latest tag) 89 | uses: redhat-actions/push-to-registry@v2 90 | id: push-latest 91 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 92 | with: 93 | username: ${{ secrets.BOT_USERNAME }} 94 | password: ${{ secrets.BOT_SECRET }} 95 | image: ${{ env.distro }}-toolbox 96 | registry: ${{ env.registry }} 97 | tags: ${{ matrix.release }} latest 98 | 99 | - name: Login to Container Registry 100 | uses: redhat-actions/podman-login@v1 101 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 102 | with: 103 | registry: ${{ env.registry }} 104 | username: ${{ secrets.BOT_USERNAME }} 105 | password: ${{ secrets.BOT_SECRET }} 106 | 107 | - uses: sigstore/cosign-installer@v3.3.0 108 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 109 | 110 | - name: Sign container image 111 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 112 | run: | 113 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push.outputs.digest }} 114 | env: 115 | COSIGN_EXPERIMENTAL: false 116 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 117 | 118 | - name: Sign container image (latest) 119 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 120 | run: | 121 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push-latest.outputs.digest }} 122 | env: 123 | COSIGN_EXPERIMENTAL: false 124 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 125 | -------------------------------------------------------------------------------- /.github/workflows/wolfi.yaml: -------------------------------------------------------------------------------- 1 | name: "Wolfi Linux: Build and push toolbx images" 2 | 3 | permissions: read-all 4 | 5 | on: 6 | pull_request: 7 | branches: 8 | - main 9 | paths: 10 | - wolfi/** 11 | - .github/workflows/wolfi.yaml 12 | push: 13 | branches: 14 | - main 15 | paths: 16 | - wolfi/** 17 | - .github/workflows/wolfi.yaml 18 | schedule: 19 | - cron: '0 0 * * MON' 20 | 21 | env: 22 | distro: 'wolfi' 23 | distro_pretty: 'wolfi Linux' 24 | latest_release: 'latest' 25 | platforms: 'linux/amd64, linux/arm64' 26 | registry: 'quay.io/toolbx-images' 27 | 28 | # Prevent multiple workflow runs from racing to ensure that pushes are made 29 | # sequentially for the main branch. Also cancel in progress workflow runs for 30 | # pull requests only. 31 | concurrency: 32 | group: ${{ github.workflow }}-${{ github.ref }} 33 | cancel-in-progress: ${{ github.event_name == 'pull_request' }} 34 | 35 | jobs: 36 | build-push-images: 37 | strategy: 38 | matrix: 39 | release: ['latest'] 40 | 41 | runs-on: ubuntu-24.04 42 | steps: 43 | - name: Checkout 44 | uses: actions/checkout@v4 45 | 46 | - name: Set up QEMU for multi-arch builds 47 | shell: bash 48 | run: | 49 | sudo apt update 50 | sudo apt install qemu-user-static 51 | 52 | - name: Build container image 53 | uses: redhat-actions/buildah-build@v2 54 | if: env.latest_release != matrix.release 55 | with: 56 | platforms: ${{ env.platforms }} 57 | context: ${{ env.distro }}/${{ matrix.release }} 58 | image: ${{ env.distro }}-toolbox 59 | tags: ${{ matrix.release }} 60 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 61 | layers: false 62 | oci: true 63 | 64 | - name: Build container image (latest tag) 65 | uses: redhat-actions/buildah-build@v2 66 | if: env.latest_release == matrix.release 67 | with: 68 | platforms: ${{ env.platforms }} 69 | context: ${{ env.distro }}/${{ matrix.release }} 70 | image: ${{ env.distro }}-toolbox 71 | tags: ${{ matrix.release }} latest 72 | containerfiles: ${{ env.distro }}/${{ matrix.release }}/Containerfile 73 | layers: false 74 | oci: true 75 | 76 | - name: Push to Container Registry 77 | uses: redhat-actions/push-to-registry@v2 78 | id: push 79 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 80 | with: 81 | username: ${{ secrets.BOT_USERNAME }} 82 | password: ${{ secrets.BOT_SECRET }} 83 | image: ${{ env.distro }}-toolbox 84 | registry: ${{ env.registry }} 85 | tags: ${{ matrix.release }} 86 | 87 | - name: Push to Container Registry (latest tag) 88 | uses: redhat-actions/push-to-registry@v2 89 | id: push-latest 90 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 91 | with: 92 | username: ${{ secrets.BOT_USERNAME }} 93 | password: ${{ secrets.BOT_SECRET }} 94 | image: ${{ env.distro }}-toolbox 95 | registry: ${{ env.registry }} 96 | tags: ${{ matrix.release }} latest 97 | 98 | - name: Login to Container Registry 99 | uses: redhat-actions/podman-login@v1 100 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 101 | with: 102 | registry: ${{ env.registry }} 103 | username: ${{ secrets.BOT_USERNAME }} 104 | password: ${{ secrets.BOT_SECRET }} 105 | 106 | - uses: sigstore/cosign-installer@v3.3.0 107 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' 108 | 109 | - name: Sign container image 110 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release != matrix.release 111 | run: | 112 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push.outputs.digest }} 113 | env: 114 | COSIGN_EXPERIMENTAL: false 115 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 116 | 117 | - name: Sign container image (latest) 118 | if: (github.event_name == 'push' || github.event_name == 'schedule') && github.ref == 'refs/heads/main' && env.latest_release == matrix.release 119 | run: | 120 | cosign sign -y --recursive --key env://COSIGN_PRIVATE_KEY ${{ env.registry }}/${{ env.distro }}-toolbox@${{ steps.push-latest.outputs.digest }} 121 | env: 122 | COSIGN_EXPERIMENTAL: false 123 | COSIGN_PRIVATE_KEY: ${{ secrets.COSIGN_PRIVATE_KEY }} 124 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Container images for toolbx (and distrobox) 2 | 3 | Community maintained container images to use with [toolbx] ([GitHub]). See 4 | [containers/toolbox#1019] for the upstream discussion on the next steps to make 5 | those images more "official". 6 | 7 | You can also use them wih distrobox. See the discussion in [distrobox#544]. 8 | 9 | ### ⚠️ Looking for Arch Linux, Fedora, RHEL and Ubuntu images? See [below]. 10 | 11 | ## Available distributions and usage 12 | 13 | You can find all images in the [toolbx-images organization] on [Quay.io], or 14 | directly use the commands below: 15 | 16 | - [AlmaLinux] with [EPEL] enabled by default: 17 | ``` 18 | $ toolbox create --image quay.io/toolbx-images/almalinux-toolbox:9 19 | $ toolbox enter almalinux-toolbox-9 20 | 21 | $ toolbox create --image quay.io/toolbx-images/almalinux-toolbox:8 22 | $ toolbox enter almalinux-toolbox-8 23 | ``` 24 | 25 | - [Alpine Linux]: 26 | ``` 27 | $ toolbox create --image quay.io/toolbx-images/alpine-toolbox:edge 28 | $ toolbox enter alpine-toolbox-edge 29 | 30 | $ toolbox create --image quay.io/toolbx-images/alpine-toolbox:3.21 31 | $ toolbox enter alpine-toolbox-3.21 32 | 33 | $ toolbox create --image quay.io/toolbx-images/alpine-toolbox:3.20 34 | $ toolbox enter alpine-toolbox-3.20 35 | 36 | $ toolbox create --image quay.io/toolbx-images/alpine-toolbox:3.19 37 | $ toolbox enter alpine-toolbox-3.19 38 | 39 | $ toolbox create --image quay.io/toolbx-images/alpine-toolbox:3.18 40 | $ toolbox enter alpine-toolbox-3.18 41 | ``` 42 | 43 | - [Amazon Linux] Note: Only Amazon Linux 2 comes with [EPEL] enabled by default: 44 | ``` 45 | $ toolbox create --image quay.io/toolbx-images/amazonlinux-toolbox:2023 46 | $ toolbox enter amazonlinux-toolbox-2023 47 | 48 | $ toolbox create --image quay.io/toolbx-images/amazonlinux-toolbox:2 49 | $ toolbox enter amazonlinux-toolbox-2 50 | ``` 51 | 52 | - [CentOS (Stream)] with [EPEL] enabled by default: 53 | ``` 54 | $ toolbox create --image quay.io/toolbx-images/centos-toolbox:stream10 55 | $ toolbox enter centos-toolbox-stream10 56 | 57 | $ toolbox create --image quay.io/toolbx-images/centos-toolbox:stream9 58 | $ toolbox enter centos-toolbox-stream9 59 | ``` 60 | 61 | - [Debian]: 62 | ``` 63 | $ toolbox create --image quay.io/toolbx-images/debian-toolbox:unstable 64 | $ toolbox enter debian-toolbox-unstable 65 | 66 | $ toolbox create --image quay.io/toolbx-images/debian-toolbox:testing 67 | $ toolbox enter debian-toolbox-testing 68 | 69 | $ toolbox create --image quay.io/toolbx-images/debian-toolbox:12 70 | $ toolbox enter debian-toolbox-12 71 | 72 | $ toolbox create --image quay.io/toolbx-images/debian-toolbox:11 73 | $ toolbox enter debian-toolbox-11 74 | 75 | $ toolbox create --image quay.io/toolbx-images/debian-toolbox:10 76 | $ toolbox enter debian-toolbox-10 77 | ``` 78 | 79 | - [openSUSE]: 80 | ``` 81 | $ toolbox create --image quay.io/toolbx-images/opensuse-toolbox:tumbleweed 82 | $ toolbox enter opensuse-toolbox-tumbleweed 83 | ``` 84 | 85 | - [Rocky Linux] with [EPEL] enabled by default: 86 | ``` 87 | $ toolbox create --image quay.io/toolbx-images/rockylinux-toolbox:9 88 | $ toolbox enter rockylinux-toolbox-9 89 | 90 | $ toolbox create --image quay.io/toolbx-images/rockylinux-toolbox:8 91 | $ toolbox enter rockylinux-toolbox-8 92 | ``` 93 | 94 | - [Wolfi]: 95 | ``` 96 | $ toolbox create --image quay.io/toolbx-images/wolfi-toolbox:latest 97 | $ toolbox enter wolfi-toolbox-latest 98 | ``` 99 | 100 | ## Verifying sigstore container signatures with podman 101 | 102 | How to configure sigstore signature verification in podman: 103 | 104 | ``` 105 | $ sudo mkdir /etc/pki/containers 106 | $ curl -O "https://raw.githubusercontent.com/toolbx-images/images/main/quay.io-toolbx-images.pub" 107 | $ sudo cp quay.io-toolbx-images.pub /etc/pki/containers/ 108 | $ sudo restorecon -RFv /etc/pki/containers 109 | 110 | $ cat /etc/containers/registries.d/quay.io-toolbx-images.yaml 111 | docker: 112 | quay.io/toolbx-images: 113 | use-sigstore-attachments: true 114 | $ sudo restorecon -RFv /etc/containers/registries.d/quay.io-toolbx-images.yaml 115 | 116 | $ cat /etc/containers/policy.json 117 | { 118 | "default": [ 119 | { 120 | "type": "reject" 121 | } 122 | ], 123 | "transports": { 124 | "docker": { 125 | ... 126 | "quay.io/toolbx-images": [ 127 | { 128 | "type": "sigstoreSigned", 129 | "keyPath": "/etc/pki/containers/quay.io-toolbx-images.pub", 130 | "signedIdentity": { 131 | "type": "matchRepository" 132 | } 133 | } 134 | ], 135 | ... 136 | "": [ 137 | { 138 | "type": "insecureAcceptAnything" 139 | } 140 | ] 141 | }, 142 | ... 143 | } 144 | } 145 | ... 146 | ``` 147 | 148 | ## What about Arch Linux, Fedora, RHEL and Ubuntu images? 149 | 150 | The Arch Linux, Fedora and Ubuntu images are now maintained as part of [Toolbx] 151 | ([GitHub]): 152 | 153 | - [Arch Linux] ([repo on Quay.io][ArchLinuxRepo]). Usage: 154 | ``` 155 | $ toolbox create --distro arch 156 | $ toolbox enter arch-toolbox-latest 157 | ``` 158 | 159 | - [Fedora] (repo on `registry.fedoraproject.org`). Usage: 160 | ``` 161 | # Example for Fedora 40 162 | $ toolbox create --distro fedora --release 40 163 | $ toolbox enter fedora-toolbox-40 164 | ``` 165 | 166 | - [Ubuntu] ([repo on Quay.io][UbuntuRepo]). Usage: 167 | ``` 168 | # Example for Ubuntu 24.04 169 | $ toolbox create --distro ubuntu --release 24.04 170 | $ toolbox enter ubuntu-toolbox-24.04 171 | ``` 172 | 173 | The [Red Hat Enterprise Linux (Universal Base Image)] images are now maintained 174 | by Red Hat and their sources are part of [Toolbx] ([GitHub]) (repo on 175 | `registry.access.redhat.com` for [RHEL 8] and [RHEL 9]. Usage: 176 | 177 | ``` 178 | # Example for RHEL 9.4 179 | $ toolbox create --distro rhel --release 9.4 180 | $ toolbox enter rhel-toolbox-9.4 181 | ``` 182 | 183 | ## License 184 | 185 | See [COPYING](COPYING). 186 | 187 | [toolbx]: https://containertoolbx.org 188 | [GitHub]: https://github.com/containers/toolbox 189 | [containers/toolbox#1019]: https://github.com/containers/toolbox/issues/1019 190 | [distrobox#544]: https://github.com/89luca89/distrobox/issues/544 191 | [below]: #what-about-arch-linux-fedora-rhel-and-ubuntu-images 192 | [toolbx-images organization]: https://quay.io/organization/toolbx-images 193 | [Quay.io]: https://quay.io/ 194 | [Fedora]: https://quay.io/repository/fedora/fedora-toolbox 195 | [ArchLinuxRepo]: https://quay.io/repository/toolbx/arch-toolbox 196 | [UbuntuRepo]: https://quay.io/repository/toolbx/ubuntu-toolbox 197 | [RHEL 8]: https://catalog.redhat.com/software/containers/ubi8/toolbox/611bd665bd674341b5c5ed46 198 | [RHEL 9]: https://catalog.redhat.com/software/containers/ubi9/toolbox/61532d7dd2c7f84a4d2ed86b 199 | [toolbox#1389]: https://github.com/containers/toolbox/issues/1389 200 | [AlmaLinux]: https://hub.docker.com/_/almalinux 201 | [Alpine Linux]: https://hub.docker.com/_/alpine 202 | [Amazon Linux]: https://gallery.ecr.aws/amazonlinux/amazonlinux 203 | [Arch Linux]: https://hub.docker.com/_/archlinux/ 204 | [CentOS (Stream)]: https://www.centos.org/centos-stream/ 205 | [EPEL]: https://docs.fedoraproject.org/en-US/epel/ 206 | [Debian]: https://hub.docker.com/_/debian 207 | [Red Hat Enterprise Linux (Universal Base Image)]: https://developers.redhat.com/products/rhel/ubi 208 | [Red Hat Universal Base Image End User Licensing Agreement]: https://www.redhat.com/licenses/EULA_Red_Hat_Universal_Base_Image_English_20190422.pdf 209 | [Rocky Linux]: https://hub.docker.com/_/rockylinux 210 | [Ubuntu]: https://hub.docker.com/_/ubuntu 211 | [openSUSE]: https://registry.opensuse.org/cgi-bin/cooverview?srch_term=project%3D%5EopenSUSE%3AContainers%3A+container%3Dtoolbox 212 | [Wolfi]: cgr.dev/chainguard/ 213 | -------------------------------------------------------------------------------- /almalinux/8/Containerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/library/almalinux:8 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | com.redhat.component="almalinux-toolbox" \ 5 | name="almalinux-toolbox" \ 6 | version="8" \ 7 | usage="This image is meant to be used with the toolbox command" \ 8 | summary="Base image for creating AlmaLinux toolbox containers" \ 9 | maintainer="Ricardo Arguello " 10 | 11 | COPY missing-docs extra-packages / 12 | 13 | RUN dnf -y swap coreutils-single coreutils-full && \ 14 | dnf -y reinstall $( /etc/sudoers.d/toolbox 19 | 20 | # Copy the os-release file 21 | RUN cp -p /etc/os-release /usr/lib/os-release 22 | 23 | # Clear out /media 24 | RUN rm -rf /media 25 | -------------------------------------------------------------------------------- /alpine/3.18/extra-packages: -------------------------------------------------------------------------------- 1 | alpine-base 2 | bash 3 | bash-completion 4 | bc 5 | bzip2 6 | coreutils 7 | curl 8 | diffutils 9 | docs 10 | findutils 11 | gcompat 12 | git 13 | gnupg 14 | iproute2 15 | iputils 16 | keyutils 17 | less 18 | libcap 19 | man-pages 20 | mandoc 21 | musl-utils 22 | ncurses-terminfo 23 | net-tools 24 | openssh-client 25 | procps 26 | rsync 27 | shadow 28 | sudo 29 | tar 30 | tcpdump 31 | tree 32 | unzip 33 | util-linux 34 | wget 35 | which 36 | xz 37 | zip 38 | -------------------------------------------------------------------------------- /alpine/3.19/Containerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/library/alpine:3.19 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | name="alpine-toolbox" \ 5 | version="3.19" \ 6 | usage="This image is meant to be used with the toolbox command" \ 7 | summary="Base image for creating Alpine Linux toolbox containers" \ 8 | maintainer="Jorge O. Castro " 9 | 10 | # Install extra packages 11 | COPY extra-packages / 12 | RUN apk update && \ 13 | apk upgrade && \ 14 | cat /extra-packages | xargs apk add 15 | RUN rm /extra-packages 16 | 17 | # Enable password less sudo 18 | RUN echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/toolbox 19 | 20 | # Copy the os-release file 21 | RUN cp -p /etc/os-release /usr/lib/os-release 22 | 23 | # Clear out /media 24 | RUN rm -rf /media 25 | -------------------------------------------------------------------------------- /alpine/3.19/extra-packages: -------------------------------------------------------------------------------- 1 | alpine-base 2 | bash 3 | bash-completion 4 | bc 5 | bzip2 6 | coreutils 7 | curl 8 | diffutils 9 | docs 10 | findutils 11 | gcompat 12 | git 13 | gnupg 14 | iproute2 15 | iputils 16 | keyutils 17 | less 18 | libcap 19 | man-pages 20 | mandoc 21 | musl-utils 22 | ncurses-terminfo 23 | net-tools 24 | openssh-client 25 | procps 26 | rsync 27 | shadow 28 | sudo 29 | tar 30 | tcpdump 31 | tree 32 | unzip 33 | util-linux 34 | wget 35 | which 36 | xz 37 | zip 38 | -------------------------------------------------------------------------------- /alpine/3.20/Containerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/library/alpine:3.20 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | name="alpine-toolbox" \ 5 | version="3.20" \ 6 | usage="This image is meant to be used with the toolbox command" \ 7 | summary="Base image for creating Alpine Linux toolbox containers" \ 8 | maintainer="Jorge O. Castro " 9 | 10 | # Install extra packages 11 | COPY extra-packages / 12 | RUN apk update && \ 13 | apk upgrade && \ 14 | cat /extra-packages | xargs apk add 15 | RUN rm /extra-packages 16 | 17 | # Enable password less sudo 18 | RUN echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/toolbox 19 | 20 | # Copy the os-release file 21 | RUN cp -p /etc/os-release /usr/lib/os-release 22 | 23 | # Clear out /media 24 | RUN rm -rf /media 25 | -------------------------------------------------------------------------------- /alpine/3.20/extra-packages: -------------------------------------------------------------------------------- 1 | alpine-base 2 | bash 3 | bash-completion 4 | bc 5 | bzip2 6 | coreutils 7 | curl 8 | diffutils 9 | docs 10 | findutils 11 | gcompat 12 | git 13 | gnupg 14 | iproute2 15 | iputils 16 | keyutils 17 | less 18 | libcap 19 | man-pages 20 | mandoc 21 | musl-utils 22 | ncurses-terminfo 23 | net-tools 24 | openssh-client 25 | procps 26 | rsync 27 | shadow 28 | sudo 29 | tar 30 | tcpdump 31 | tree 32 | unzip 33 | util-linux 34 | wget 35 | which 36 | xz 37 | zip 38 | -------------------------------------------------------------------------------- /alpine/3.21/Containerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/library/alpine:3.21 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | name="alpine-toolbox" \ 5 | version="3.21" \ 6 | usage="This image is meant to be used with the toolbox command" \ 7 | summary="Base image for creating Alpine Linux toolbox containers" \ 8 | maintainer="Jorge O. Castro " 9 | 10 | # Install extra packages 11 | COPY extra-packages / 12 | RUN apk update && \ 13 | apk upgrade && \ 14 | cat /extra-packages | xargs apk add 15 | RUN rm /extra-packages 16 | 17 | # Enable password less sudo 18 | RUN echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/toolbox 19 | 20 | # Clear out /media 21 | RUN rm -rf /media 22 | -------------------------------------------------------------------------------- /alpine/3.21/extra-packages: -------------------------------------------------------------------------------- 1 | alpine-base 2 | bash 3 | bash-completion 4 | bc 5 | bzip2 6 | coreutils 7 | curl 8 | diffutils 9 | docs 10 | findutils 11 | gcompat 12 | git 13 | gnupg 14 | iproute2 15 | iputils 16 | keyutils 17 | less 18 | libcap 19 | man-pages 20 | mandoc 21 | musl-utils 22 | ncurses-terminfo 23 | net-tools 24 | openssh-client 25 | procps 26 | rsync 27 | shadow 28 | sudo 29 | tar 30 | tcpdump 31 | tree 32 | unzip 33 | util-linux 34 | wget 35 | which 36 | xz 37 | zip 38 | -------------------------------------------------------------------------------- /alpine/edge/Containerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/library/alpine:edge 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | name="alpine-toolbox" \ 5 | version="edge" \ 6 | usage="This image is meant to be used with the toolbox command" \ 7 | summary="Base image for creating Alpine Linux toolbox containers" \ 8 | maintainer="Jorge O. Castro " 9 | 10 | # Install extra packages 11 | COPY extra-packages / 12 | RUN apk update && \ 13 | apk upgrade && \ 14 | cat /extra-packages | xargs apk add 15 | RUN rm /extra-packages 16 | 17 | # Enable password less sudo 18 | RUN echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/toolbox 19 | 20 | # Clear out /media 21 | RUN rm -rf /media 22 | -------------------------------------------------------------------------------- /alpine/edge/extra-packages: -------------------------------------------------------------------------------- 1 | alpine-base 2 | bash 3 | bash-completion 4 | bc 5 | bzip2 6 | coreutils 7 | curl 8 | diffutils 9 | docs 10 | findutils 11 | gcompat 12 | git 13 | gnupg 14 | iproute2 15 | iputils 16 | keyutils 17 | less 18 | libcap 19 | man-pages 20 | mandoc 21 | musl-utils 22 | ncurses-terminfo 23 | net-tools 24 | openssh-client 25 | procps 26 | rsync 27 | shadow 28 | sudo 29 | tar 30 | tcpdump 31 | tree 32 | unzip 33 | util-linux 34 | wget 35 | which 36 | xz 37 | zip 38 | -------------------------------------------------------------------------------- /amazonlinux/2/Containerfile: -------------------------------------------------------------------------------- 1 | FROM public.ecr.aws/amazonlinux/amazonlinux:2 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | name="amazonlinux-toolbox" \ 5 | version="2" \ 6 | usage="This image is meant to be used with the toolbox command" \ 7 | summary="Base image for creating Amazon Linux 2 toolbx containers" \ 8 | maintainer="Adam Kaminski " 9 | 10 | RUN sed -i '/tsflags=nodocs/d' /etc/yum.conf 11 | 12 | COPY packages extra-packages missing-docs / 13 | 14 | RUN yum -y install $( /etc/sudoers.d/disable-sudo-lecture 22 | 23 | RUN echo VARIANT_ID=container >> /etc/os-release 24 | RUN ln -s /etc/os-release /usr/lib/os-release 25 | 26 | RUN rm /{packages,extra-packages,missing-docs} 27 | -------------------------------------------------------------------------------- /amazonlinux/2/extra-packages: -------------------------------------------------------------------------------- 1 | epel 2 | vim 3 | python3.8 4 | -------------------------------------------------------------------------------- /amazonlinux/2/missing-docs: -------------------------------------------------------------------------------- 1 | acl 2 | bash 3 | chkconfig 4 | curl 5 | dbus 6 | yum 7 | gawk 8 | grep 9 | gzip 10 | info 11 | libcap 12 | nss 13 | p11-kit 14 | pam 15 | pkgconfig 16 | python 17 | rpm 18 | sed 19 | systemd 20 | tar 21 | -------------------------------------------------------------------------------- /amazonlinux/2/packages: -------------------------------------------------------------------------------- 1 | amazon-linux-extras-yum-plugin 2 | bash-completion 3 | bc 4 | bzip2 5 | diffutils 6 | dnf-plugins-core 7 | findutils 8 | flatpak-spawn 9 | git 10 | gnupg 11 | gvfs-client 12 | hostname 13 | iproute 14 | iputils 15 | keyutils 16 | krb5-libs 17 | less 18 | lsof 19 | man-db 20 | man-pages 21 | mtr 22 | nano 23 | nss-mdns 24 | openssh-clients 25 | openssl 26 | passwd 27 | pigz 28 | procps-ng 29 | rsync 30 | shadow-utils 31 | sudo 32 | tcpdump 33 | time 34 | traceroute 35 | tree 36 | unzip 37 | util-linux 38 | vte-profile 39 | wget 40 | which 41 | words 42 | xorg-x11-xauth 43 | xz 44 | zip 45 | -------------------------------------------------------------------------------- /amazonlinux/2023/Containerfile: -------------------------------------------------------------------------------- 1 | FROM public.ecr.aws/amazonlinux/amazonlinux:2023 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | name="amazonlinux-toolbox" \ 5 | version="2023" \ 6 | usage="This image is meant to be used with the toolbox command" \ 7 | summary="Base image for creating Amazon Linux 2023 toolbox containers" \ 8 | maintainer="Stewart Smith " 9 | 10 | COPY missing-docs extra-packages / 11 | 12 | RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf 13 | RUN dnf -y swap coreutils-single coreutils-full && \ 14 | dnf -y reinstall $( /etc/sudoers.d/disable-sudo-lecture 21 | 22 | RUN echo VARIANT_ID=container >> /etc/os-release 23 | 24 | RUN rm /{extra-packages,missing-docs} 25 | -------------------------------------------------------------------------------- /amazonlinux/2023/extra-packages: -------------------------------------------------------------------------------- 1 | bash-completion 2 | bc 3 | bzip2 4 | diffutils 5 | dnf-plugins-core 6 | findutils 7 | git 8 | gnupg 9 | gnupg2-smime 10 | hostname 11 | iproute 12 | iputils 13 | keyutils 14 | krb5-libs 15 | less 16 | lsof 17 | man-db 18 | man-pages 19 | nano 20 | openssh-clients 21 | openssl 22 | passwd 23 | pigz 24 | procps-ng 25 | rsync 26 | shadow-utils 27 | sudo 28 | tcpdump 29 | time 30 | traceroute 31 | tree 32 | unzip 33 | util-linux 34 | wget 35 | which 36 | words 37 | xorg-x11-xauth 38 | xz 39 | zip 40 | -------------------------------------------------------------------------------- /amazonlinux/2023/missing-docs: -------------------------------------------------------------------------------- 1 | acl 2 | bash 3 | curl 4 | dnf 5 | gawk 6 | grep 7 | gzip 8 | info 9 | libcap 10 | nss 11 | p11-kit 12 | pam 13 | python3 14 | rpm 15 | sed 16 | systemd 17 | tar 18 | -------------------------------------------------------------------------------- /centos/stream10/Containerfile: -------------------------------------------------------------------------------- 1 | FROM quay.io/centos/centos:stream10 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | com.redhat.component="centos-toolbox" \ 5 | name="centos-toolbox" \ 6 | version="stream10" \ 7 | usage="This image is meant to be used with the toolbox command" \ 8 | summary="Base image for creating CentOS toolbox containers" \ 9 | maintainer="Timothée Ravier " 10 | 11 | RUN rm /etc/rpm/macros.image-language-conf 12 | RUN sed -i '/tsflags=nodocs/d' /etc/dnf/dnf.conf 13 | 14 | COPY missing-docs extra-packages / 15 | 16 | RUN dnf -y upgrade && \ 17 | dnf -y swap coreutils-single coreutils-full && \ 18 | dnf -y swap glibc-minimal-langpack glibc-all-langpacks && \ 19 | dnf -y reinstall $()\s*(.*)/\1\2 myhostname \3/' /etc/nsswitch.conf 19 | 20 | # Prevent questions when installing packages 21 | ARG DEBIAN_FRONTEND=noninteractive 22 | 23 | # Make flatpak-xdg-utils usable inside the toolbox 24 | COPY toolbox-flatpak-xdg-utils.sh /etc/profile.d 25 | 26 | # Install extra packages as well as libnss-myhostname 27 | COPY extra-packages / 28 | RUN apt-get update && \ 29 | DEBIAN_FRONTEND=noninteractive apt-get -y install \ 30 | libnss-myhostname \ 31 | $(cat extra-packages | xargs) && \ 32 | rm -rd /var/lib/apt/lists/* 33 | RUN rm /extra-packages 34 | 35 | # Enable password less sudo 36 | RUN sed -i -e 's/ ALL$/ NOPASSWD:ALL/' /etc/sudoers 37 | 38 | RUN echo VARIANT_ID=container >> /etc/os-release 39 | # ? 40 | RUN touch /etc/localtime 41 | -------------------------------------------------------------------------------- /debian/10/extra-packages: -------------------------------------------------------------------------------- 1 | bash-completion 2 | bc 3 | bzip2 4 | diffutils 5 | findutils 6 | flatpak-xdg-utils 7 | git 8 | gnupg 9 | gpgsm 10 | hostname 11 | iproute2 12 | iputils-tracepath 13 | keyutils 14 | less 15 | libcap2-bin 16 | libkrb5-3 17 | libnss-mdns 18 | lsof 19 | man-db 20 | manpages 21 | mtr 22 | nano 23 | openssh-client 24 | passwd 25 | pigz 26 | procps 27 | rsync 28 | sudo 29 | tcpdump 30 | time 31 | traceroute 32 | tree 33 | unzip 34 | util-linux 35 | wget 36 | xauth 37 | xz-utils 38 | zip 39 | -------------------------------------------------------------------------------- /debian/10/toolbox-flatpak-xdg-utils.sh: -------------------------------------------------------------------------------- 1 | # shellcheck shell=sh disable=SC2153 2 | # Add flatpak-xdg-utils to PATH to allow running nested toolbox 3 | # containers (i.e. uses flatpak-spawn). 4 | # This also makes the xdg-utils replacements available as part of 5 | # flatpak-xdg-utils (e.g. xdg-open) usable inside toolbox (requires 6 | # xdg-desktop-portal on the host side). 7 | 8 | if [ -f /run/.containerenv ] && [ -f /run/.toolboxenv ] 9 | then 10 | PATH="/usr/libexec/flatpak-xdg-utils:$PATH" 11 | export PATH 12 | fi 13 | -------------------------------------------------------------------------------- /debian/11/Containerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/library/debian:11 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | name="debian-toolbox" \ 5 | version="11" \ 6 | usage="This image is meant to be used with the toolbox command" \ 7 | summary="Base image for creating Debian toolbox containers" \ 8 | maintainer="" 9 | 10 | # Remove apt configuration optimized for containers 11 | # Remove docker-gzip-indexes to help with "command-not-found" 12 | RUN rm /etc/apt/apt.conf.d/docker-gzip-indexes /etc/apt/apt.conf.d/docker-no-languages 13 | 14 | # Enable myhostname nss plugin for clean hostname resolution without patching 15 | # hosts (at least for sudo), add it right after 'files' entry. We expect that 16 | # this entry is not present yet. Do this early so that package postinst (which 17 | # adds it too late in the order) skips this step 18 | RUN sed -Ei 's/^(hosts:.*)(\)\s*(.*)/\1\2 myhostname \3/' /etc/nsswitch.conf 19 | 20 | # Prevent questions when installing packages 21 | ARG DEBIAN_FRONTEND=noninteractive 22 | 23 | # Make flatpak-xdg-utils usable inside the toolbox 24 | COPY toolbox-flatpak-xdg-utils.sh /etc/profile.d 25 | 26 | # Install extra packages as well as libnss-myhostname 27 | COPY extra-packages / 28 | RUN apt-get update && \ 29 | DEBIAN_FRONTEND=noninteractive apt-get -y install \ 30 | libnss-myhostname \ 31 | $(cat extra-packages | xargs) && \ 32 | rm -rd /var/lib/apt/lists/* 33 | RUN rm /extra-packages 34 | 35 | # Enable password less sudo 36 | RUN sed -i -e 's/ ALL$/ NOPASSWD:ALL/' /etc/sudoers 37 | 38 | RUN echo VARIANT_ID=container >> /etc/os-release 39 | # ? 40 | RUN touch /etc/localtime 41 | -------------------------------------------------------------------------------- /debian/11/extra-packages: -------------------------------------------------------------------------------- 1 | bash-completion 2 | bc 3 | bzip2 4 | diffutils 5 | findutils 6 | flatpak-xdg-utils 7 | git 8 | gnupg 9 | gpgsm 10 | hostname 11 | iproute2 12 | iputils-tracepath 13 | keyutils 14 | less 15 | libcap2-bin 16 | libkrb5-3 17 | libnss-mdns 18 | lsof 19 | man-db 20 | manpages 21 | mtr 22 | nano 23 | openssh-client 24 | passwd 25 | pigz 26 | procps 27 | rsync 28 | sudo 29 | tcpdump 30 | time 31 | traceroute 32 | tree 33 | unzip 34 | util-linux 35 | wget 36 | xauth 37 | xz-utils 38 | zip 39 | -------------------------------------------------------------------------------- /debian/11/toolbox-flatpak-xdg-utils.sh: -------------------------------------------------------------------------------- 1 | # shellcheck shell=sh disable=SC2153 2 | # Add flatpak-xdg-utils to PATH to allow running nested toolbox 3 | # containers (i.e. uses flatpak-spawn). 4 | # This also makes the xdg-utils replacements available as part of 5 | # flatpak-xdg-utils (e.g. xdg-open) usable inside toolbox (requires 6 | # xdg-desktop-portal on the host side). 7 | 8 | if [ -f /run/.containerenv ] && [ -f /run/.toolboxenv ] 9 | then 10 | PATH="/usr/libexec/flatpak-xdg-utils:$PATH" 11 | export PATH 12 | fi 13 | -------------------------------------------------------------------------------- /debian/12/Containerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/library/debian:12 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | name="debian-toolbox" \ 5 | version="12" \ 6 | usage="This image is meant to be used with the toolbox command" \ 7 | summary="Base image for creating Debian toolbox containers" \ 8 | maintainer="" 9 | 10 | # Remove apt configuration optimized for containers 11 | # Remove docker-gzip-indexes to help with "command-not-found" 12 | RUN rm /etc/apt/apt.conf.d/docker-gzip-indexes /etc/apt/apt.conf.d/docker-no-languages 13 | 14 | # Enable myhostname nss plugin for clean hostname resolution without patching 15 | # hosts (at least for sudo), add it right after 'files' entry. We expect that 16 | # this entry is not present yet. Do this early so that package postinst (which 17 | # adds it too late in the order) skips this step 18 | RUN sed -Ei 's/^(hosts:.*)(\)\s*(.*)/\1\2 myhostname \3/' /etc/nsswitch.conf 19 | 20 | # Prevent questions when installing packages 21 | ARG DEBIAN_FRONTEND=noninteractive 22 | 23 | # Make flatpak-xdg-utils usable inside the toolbox 24 | COPY toolbox-flatpak-xdg-utils.sh /etc/profile.d 25 | 26 | # Install extra packages as well as libnss-myhostname 27 | COPY extra-packages / 28 | RUN apt-get update && \ 29 | DEBIAN_FRONTEND=noninteractive apt-get -y install \ 30 | libnss-myhostname \ 31 | $(cat extra-packages | xargs) && \ 32 | rm -rd /var/lib/apt/lists/* 33 | RUN rm /extra-packages 34 | 35 | # Enable password less sudo 36 | RUN sed -i -e 's/ ALL$/ NOPASSWD:ALL/' /etc/sudoers 37 | 38 | RUN echo VARIANT_ID=container >> /etc/os-release 39 | # ? 40 | RUN touch /etc/localtime 41 | -------------------------------------------------------------------------------- /debian/12/extra-packages: -------------------------------------------------------------------------------- 1 | bash-completion 2 | bc 3 | bzip2 4 | diffutils 5 | findutils 6 | flatpak-xdg-utils 7 | git 8 | gnupg 9 | gpgsm 10 | hostname 11 | iproute2 12 | iputils-tracepath 13 | keyutils 14 | less 15 | libcap2-bin 16 | libkrb5-3 17 | libnss-mdns 18 | lsof 19 | man-db 20 | manpages 21 | mtr 22 | nano 23 | openssh-client 24 | passwd 25 | pigz 26 | procps 27 | rsync 28 | sudo 29 | tcpdump 30 | time 31 | traceroute 32 | tree 33 | unzip 34 | util-linux 35 | wget 36 | xauth 37 | xz-utils 38 | zip 39 | -------------------------------------------------------------------------------- /debian/12/toolbox-flatpak-xdg-utils.sh: -------------------------------------------------------------------------------- 1 | # shellcheck shell=sh disable=SC2153 2 | # Add flatpak-xdg-utils to PATH to allow running nested toolbox 3 | # containers (i.e. uses flatpak-spawn). 4 | # This also makes the xdg-utils replacements available as part of 5 | # flatpak-xdg-utils (e.g. xdg-open) usable inside toolbox (requires 6 | # xdg-desktop-portal on the host side). 7 | 8 | if [ -f /run/.containerenv ] && [ -f /run/.toolboxenv ] 9 | then 10 | PATH="/usr/libexec/flatpak-xdg-utils:$PATH" 11 | export PATH 12 | fi 13 | -------------------------------------------------------------------------------- /debian/testing/Containerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/library/debian:testing 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | name="debian-toolbox" \ 5 | version="testing" \ 6 | usage="This image is meant to be used with the toolbox command" \ 7 | summary="Base image for creating Debian toolbox containers" \ 8 | maintainer="" 9 | 10 | # Remove apt configuration optimized for containers 11 | # Remove docker-gzip-indexes to help with "command-not-found" 12 | RUN rm /etc/apt/apt.conf.d/docker-gzip-indexes /etc/apt/apt.conf.d/docker-no-languages 13 | 14 | # Enable myhostname nss plugin for clean hostname resolution without patching 15 | # hosts (at least for sudo), add it right after 'files' entry. We expect that 16 | # this entry is not present yet. Do this early so that package postinst (which 17 | # adds it too late in the order) skips this step 18 | RUN sed -Ei 's/^(hosts:.*)(\)\s*(.*)/\1\2 myhostname \3/' /etc/nsswitch.conf 19 | 20 | # Prevent questions when installing packages 21 | ARG DEBIAN_FRONTEND=noninteractive 22 | 23 | # Make flatpak-xdg-utils usable inside the toolbox 24 | COPY toolbox-flatpak-xdg-utils.sh /etc/profile.d 25 | 26 | # Install extra packages as well as libnss-myhostname 27 | COPY extra-packages / 28 | RUN apt-get update && \ 29 | DEBIAN_FRONTEND=noninteractive apt-get -y install \ 30 | libnss-myhostname \ 31 | $(cat extra-packages | xargs) && \ 32 | rm -rd /var/lib/apt/lists/* 33 | RUN rm /extra-packages 34 | 35 | # Enable password less sudo 36 | RUN sed -i -e 's/ ALL$/ NOPASSWD:ALL/' /etc/sudoers 37 | 38 | RUN echo VARIANT_ID=container >> /etc/os-release 39 | # ? 40 | RUN touch /etc/localtime 41 | -------------------------------------------------------------------------------- /debian/testing/extra-packages: -------------------------------------------------------------------------------- 1 | bash-completion 2 | bc 3 | bzip2 4 | diffutils 5 | findutils 6 | flatpak-xdg-utils 7 | git 8 | gnupg 9 | gpgsm 10 | hostname 11 | iproute2 12 | iputils-tracepath 13 | keyutils 14 | less 15 | libcap2-bin 16 | libkrb5-3 17 | libnss-mdns 18 | lsof 19 | man-db 20 | manpages 21 | mtr 22 | nano 23 | openssh-client 24 | passwd 25 | pigz 26 | procps 27 | rsync 28 | sudo 29 | tcpdump 30 | time 31 | traceroute 32 | tree 33 | unzip 34 | util-linux 35 | wget 36 | xauth 37 | xz-utils 38 | zip 39 | -------------------------------------------------------------------------------- /debian/testing/toolbox-flatpak-xdg-utils.sh: -------------------------------------------------------------------------------- 1 | # shellcheck shell=sh disable=SC2153 2 | # Add flatpak-xdg-utils to PATH to allow running nested toolbox 3 | # containers (i.e. uses flatpak-spawn). 4 | # This also makes the xdg-utils replacements available as part of 5 | # flatpak-xdg-utils (e.g. xdg-open) usable inside toolbox (requires 6 | # xdg-desktop-portal on the host side). 7 | 8 | if [ -f /run/.containerenv ] && [ -f /run/.toolboxenv ] 9 | then 10 | PATH="/usr/libexec/flatpak-xdg-utils:$PATH" 11 | export PATH 12 | fi 13 | -------------------------------------------------------------------------------- /debian/unstable/Containerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/library/debian:unstable 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | name="debian-toolbox" \ 5 | version="unstable" \ 6 | usage="This image is meant to be used with the toolbox command" \ 7 | summary="Base image for creating Debian toolbox containers" \ 8 | maintainer="" 9 | 10 | # Remove apt configuration optimized for containers 11 | # Remove docker-gzip-indexes to help with "command-not-found" 12 | RUN rm /etc/apt/apt.conf.d/docker-gzip-indexes /etc/apt/apt.conf.d/docker-no-languages 13 | 14 | # Enable myhostname nss plugin for clean hostname resolution without patching 15 | # hosts (at least for sudo), add it right after 'files' entry. We expect that 16 | # this entry is not present yet. Do this early so that package postinst (which 17 | # adds it too late in the order) skips this step 18 | RUN sed -Ei 's/^(hosts:.*)(\)\s*(.*)/\1\2 myhostname \3/' /etc/nsswitch.conf 19 | 20 | # Prevent questions when installing packages 21 | ARG DEBIAN_FRONTEND=noninteractive 22 | 23 | # Make flatpak-xdg-utils usable inside the toolbox 24 | COPY toolbox-flatpak-xdg-utils.sh /etc/profile.d 25 | 26 | # Install extra packages as well as libnss-myhostname 27 | COPY extra-packages / 28 | RUN apt-get update && \ 29 | DEBIAN_FRONTEND=noninteractive apt-get -y install \ 30 | libnss-myhostname \ 31 | $(cat extra-packages | xargs) && \ 32 | rm -rd /var/lib/apt/lists/* 33 | RUN rm /extra-packages 34 | 35 | # Enable password less sudo 36 | RUN sed -i -e 's/ ALL$/ NOPASSWD:ALL/' /etc/sudoers 37 | 38 | RUN echo VARIANT_ID=container >> /etc/os-release 39 | # ? 40 | RUN touch /etc/localtime 41 | -------------------------------------------------------------------------------- /debian/unstable/extra-packages: -------------------------------------------------------------------------------- 1 | bash-completion 2 | bc 3 | bzip2 4 | diffutils 5 | findutils 6 | flatpak-xdg-utils 7 | git 8 | gnupg 9 | gpgsm 10 | hostname 11 | iproute2 12 | iputils-tracepath 13 | keyutils 14 | less 15 | libcap2-bin 16 | libkrb5-3 17 | libnss-mdns 18 | lsof 19 | man-db 20 | manpages 21 | mtr 22 | nano 23 | openssh-client 24 | passwd 25 | pigz 26 | procps 27 | rsync 28 | sudo 29 | tcpdump 30 | time 31 | traceroute 32 | tree 33 | unzip 34 | util-linux 35 | wget 36 | xauth 37 | xz-utils 38 | zip 39 | -------------------------------------------------------------------------------- /debian/unstable/toolbox-flatpak-xdg-utils.sh: -------------------------------------------------------------------------------- 1 | # shellcheck shell=sh disable=SC2153 2 | # Add flatpak-xdg-utils to PATH to allow running nested toolbox 3 | # containers (i.e. uses flatpak-spawn). 4 | # This also makes the xdg-utils replacements available as part of 5 | # flatpak-xdg-utils (e.g. xdg-open) usable inside toolbox (requires 6 | # xdg-desktop-portal on the host side). 7 | 8 | if [ -f /run/.containerenv ] && [ -f /run/.toolboxenv ] 9 | then 10 | PATH="/usr/libexec/flatpak-xdg-utils:$PATH" 11 | export PATH 12 | fi 13 | -------------------------------------------------------------------------------- /opensuse/tumbleweed/Containerfile: -------------------------------------------------------------------------------- 1 | FROM registry.opensuse.org/opensuse/toolbox:latest 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | name="opensuse-toolbox" \ 5 | version="tumbleweed" \ 6 | usage="This image is meant to be used with the toolbox command" \ 7 | summary="Base image for creating openSUSE toolbox containers" \ 8 | maintainer="Hari Rana " 9 | 10 | # Update packages, install extra packages and clean up cache 11 | COPY extra-packages / 12 | RUN zypper update -y && \ 13 | zypper install -y findutils diffutils && \ 14 | cat /extra-packages | xargs zypper install -y && \ 15 | zypper clean 16 | RUN rm /extra-packages 17 | 18 | # Enable sudo permission for wheel users 19 | RUN echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/toolbox 20 | -------------------------------------------------------------------------------- /opensuse/tumbleweed/extra-packages: -------------------------------------------------------------------------------- 1 | bash-completion 2 | bc 3 | bzip2 4 | flatpak-xdg-utils 5 | flatpak-spawn 6 | git 7 | gvfs 8 | hostname 9 | keyutils 10 | lsof 11 | man-pages 12 | Mesa-dri 13 | mtr 14 | nano 15 | nss-mdns 16 | openssh-clients 17 | pigz 18 | rsync 19 | time 20 | tree 21 | unzip 22 | wget 23 | words 24 | xauth 25 | zip 26 | -------------------------------------------------------------------------------- /quay.io-toolbx-images.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQr63Nsc66mA3oGMArrQPm8/AkuTO 3 | K+ZrK3WCWzx00LW5K1qu+BS3U4eyMmXaFKIsX69PEFZWzXKy9psum8wj9Q== 4 | -----END PUBLIC KEY----- 5 | -------------------------------------------------------------------------------- /rockylinux/8/Containerfile: -------------------------------------------------------------------------------- 1 | FROM docker.io/library/rockylinux:8 2 | 3 | LABEL com.github.containers.toolbox="true" \ 4 | com.redhat.component="rockylinux-toolbox" \ 5 | name="rockylinux-toolbox" \ 6 | version="8" \ 7 | usage="This image is meant to be used with the toolbox command" \ 8 | summary="Base image for creating Rocky Linux toolbox containers" \ 9 | maintainer="Ricardo Arguello " 10 | 11 | COPY missing-docs extra-packages / 12 | 13 | RUN dnf -y swap coreutils-single coreutils-full && \ 14 | dnf -y reinstall $( /etc/sudoers.d/sudoers 21 | 22 | # Copy the os-release file 23 | RUN cp -p /etc/os-release /usr/lib/os-release 24 | 25 | # Clear out /home 26 | RUN rm -rf /home/* && mkdir /media 27 | -------------------------------------------------------------------------------- /wolfi/latest/extra-packages: -------------------------------------------------------------------------------- 1 | bash 2 | bc 3 | busybox 4 | bzip2 5 | coreutils 6 | curl 7 | diffutils 8 | findmnt 9 | findutils 10 | gnupg 11 | gnutar 12 | gpg 13 | iproute2 14 | iputils 15 | keyutils 16 | less 17 | libcap 18 | libcap-utils 19 | locate 20 | man-db 21 | mesa 22 | mount 23 | ncurses 24 | ncurses-terminfo 25 | net-tools 26 | openssh-client 27 | pigz 28 | posix-libc-utils 29 | procps 30 | rsync 31 | shadow 32 | sudo 33 | tcpdump 34 | tree 35 | tzdata 36 | umount 37 | unzip 38 | util-linux 39 | util-linux-login 40 | util-linux-misc 41 | vulkan-loader 42 | wget 43 | xauth 44 | xz 45 | zip 46 | --------------------------------------------------------------------------------