mirror of
https://github.com/DeterminateSystems/nix-installer-action.git
synced 2024-12-23 21:42:11 +01:00
53 lines
1.5 KiB
Markdown
53 lines
1.5 KiB
Markdown
|
# Determinate Nix Installer Action: Docker Shim
|
||
|
|
||
|
The image in this repository is a product of the contained Dockerfile.
|
||
|
It is an otherwise empty image with a configuration layer.
|
||
|
|
||
|
This image is to be used in GitHub Actions runners which don't have systemd available, like self-hosted ARC runners.
|
||
|
|
||
|
The image would have no layers / content at all, however Docker has a bug and refuses to export those images.
|
||
|
This isn't a technical limitation preventing us from creating and distributing that image, but an ease-of-use limitation.
|
||
|
Since some of Docker's inspection tools break on an empty image, the image contains a single layer containing a README.
|
||
|
|
||
|
To build:
|
||
|
|
||
|
```shell
|
||
|
docker build . --tag determinate-nix-shim:latest
|
||
|
docker image save determinate-nix-shim:latest | gzip --best > amd64.tar
|
||
|
```
|
||
|
|
||
|
Then, extract the tarball:
|
||
|
|
||
|
```
|
||
|
mkdir extract
|
||
|
cd extract
|
||
|
tar -xf ../amd64.tar
|
||
|
```
|
||
|
|
||
|
It'll look like this, though the hashes will be different.
|
||
|
|
||
|
```
|
||
|
.
|
||
|
├── 771204abb853cdde06bbbc680001a02642050a1db1a7b0a48cf5f20efa8bdc5d.json
|
||
|
├── c4088111818e553e834adfc81bda8fe6da281afa9a40012eaa82796fb5476e98
|
||
|
│ ├── VERSION
|
||
|
│ ├── json
|
||
|
│ └── layer.tar
|
||
|
├── manifest.json
|
||
|
└── repositories
|
||
|
```
|
||
|
|
||
|
Ignore `manifest.json`, and edit the other two JSON documents to replace `amd64` with `arm64`, both in a key named "architecture:
|
||
|
|
||
|
```
|
||
|
"architecture":"amd64"
|
||
|
```
|
||
|
|
||
|
Then re-create the tar, from within the `extract` directory:
|
||
|
|
||
|
```
|
||
|
tar --options gzip:compression-level=9 -zcf ../arm64.tar.gz .
|
||
|
```
|
||
|
|
||
|
Then `git add` the two .tar.gz's and you're done.
|