M .gitignore => .gitignore +8 -0
@@ 1,3 1,11 @@
+# Nix Flake
/.direnv/
/.pre-commit-config.yaml
/result
+
+# makeimg outputs
+/anemos-test.img
+/anemos-test.packages
+
+# Alpine Linux keys
+/files/etc/apk/keys/*
A .makeimg.modes => .makeimg.modes +19 -0
@@ 0,0 1,19 @@
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub
+644 files/etc/apk/keys/alpine-devel@lists.alpinelinux.org-66ba20fe.rsa.pub
+644 files/etc/apk/repositories
A IMGBUILD => IMGBUILD +7 -0
@@ 0,0 1,7 @@
+imgname=anemos-test
+target=alpine
+format="raw 4g msdos ext4"
+
+packages="
+ alpine-base
+"
A files/etc/apk/repositories => files/etc/apk/repositories +2 -0
@@ 0,0 1,2 @@
+https://dl-cdn.alpinelinux.org/alpine/v3.22/main
+https://dl-cdn.alpinelinux.org/alpine/v3.22/community
A justfile => justfile +37 -0
@@ 0,0 1,37 @@
+_default:
+ just --list
+
+alpine-keys:
+ #!/usr/bin/env sh
+ mkdir -p files/etc/apk/keys
+ cd files/etc/apk/keys
+
+ # Copy the names unser APKBUILD from here:
+ # https://git.alpinelinux.org/aports/plain/main/alpine-keys
+ keys="
+ alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub
+ alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub
+ alpine-devel@lists.alpinelinux.org-524d27bb.rsa.pub
+ alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub
+ alpine-devel@lists.alpinelinux.org-58199dcc.rsa.pub
+ alpine-devel@lists.alpinelinux.org-58cbb476.rsa.pub
+ alpine-devel@lists.alpinelinux.org-58e4f17d.rsa.pub
+ alpine-devel@lists.alpinelinux.org-5e69ca50.rsa.pub
+ alpine-devel@lists.alpinelinux.org-60ac2099.rsa.pub
+ alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub
+ alpine-devel@lists.alpinelinux.org-61666e3f.rsa.pub
+ alpine-devel@lists.alpinelinux.org-616a9724.rsa.pub
+ alpine-devel@lists.alpinelinux.org-616abc23.rsa.pub
+ alpine-devel@lists.alpinelinux.org-616ac3bc.rsa.pub
+ alpine-devel@lists.alpinelinux.org-616adfeb.rsa.pub
+ alpine-devel@lists.alpinelinux.org-616ae350.rsa.pub
+ alpine-devel@lists.alpinelinux.org-616db30d.rsa.pub
+ alpine-devel@lists.alpinelinux.org-66ba20fe.rsa.pub
+ "
+
+ for key in $keys; do
+ curl -O "https://git.alpinelinux.org/aports/plain/main/alpine-keys/${key}"
+ done
+
+build:
+ sudo makeimg
A keys => keys +1 -0
@@ 0,0 1,1 @@
+files/etc/apk/keys<
\ No newline at end of file
M makeimg.nix => makeimg.nix +18 -1
@@ 1,6 1,14 @@
{
- stdenv,
+ makeWrapper,
+ lib,
pkgs,
+ stdenv,
+ coreutils,
+ util-linux,
+ e2fsprogs,
+ parted,
+ apk-tools,
+ findutils,
...
}: let
in
@@ 17,7 25,16 @@ in
dontBuild = true;
+ nativeBuildInputs = [makeWrapper];
installPhase = ''
install -Dm755 -t $out/bin makeimg
+ wrapProgram $out/bin/makeimg --set PATH ${lib.makeBinPath [
+ coreutils
+ util-linux
+ e2fsprogs
+ parted
+ apk-tools
+ findutils
+ ]}
'';
}
A repositories => repositories +1 -0
@@ 0,0 1,1 @@
+files/etc/apk/repositories<
\ No newline at end of file