flake(pihole): build pihole docker image (x86_64 & aarch64) + basic devShell for updating image info

This commit is contained in:
Christopher Bacher 2022-09-25 22:15:27 +02:00
commit ef77de3abd
2 changed files with 69 additions and 0 deletions

63
flake.nix Normal file
View file

@ -0,0 +1,63 @@
{
description = "Pihole docker image & NixOS module for configuring a rootless pihole container (w/ port-forwarding)";
inputs = {
nixpkgs.url = "nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }: with flake-utils.lib; eachSystem (with system; [ x86_64-linux aarch64-linux ]) (curSystem:
let
pkgs = nixpkgs.legacyPackages.${curSystem};
imageName = "pihole/pihole";
imageBaseInfo = import ./pihole-image-base-info.nix;
imageInfo = {
${system.x86_64-linux}.pihole = imageBaseInfo // {
arch = "amd64";
sha256 = "sha256-5FUtafW2YdTfOfA0ieiyJasMUYEGReOMQ4PGZ8e32hY=";
};
${system.aarch64-linux}.pihole = imageBaseInfo // {
arch = "arm64";
sha256 = "sha256-1gizGShpYT1IM3OzomTrHzoLWBejhOWmcLs52YauGzc=";
};
};
piholeImage = pkgs.dockerTools.pullImage imageInfo.${curSystem}.pihole;
in {
packages = {
inherit piholeImage;
default = piholeImage;
};
devShells.default = let
updatePiholeImageInfoScript = pkgs.writeShellScriptBin "update-pihole-image-info" ''
INSPECT_RESULT=`skopeo inspect "docker://${imageName}:latest"`
IMAGE_DIGEST=`echo $INSPECT_RESULT | jq '.Digest'`
LATEST_LABEL=`echo $INSPECT_RESULT | jq '.Labels."org.opencontainers.image.version"'`
cat >pihole-image-base-info.nix <<EOF
{
imageName = "${imageName}";
imageDigest = $IMAGE_DIGEST;
finalImageTag = $LATEST_LABEL;
os = "linux";
}
EOF
'';
in pkgs.mkShell {
packages = with pkgs; [
skopeo
jq
updatePiholeImageInfoScript
];
inputsFrom = [ self.packages.${curSystem}.default ];
};
}
);
}

View file

@ -0,0 +1,6 @@
{
imageName = "pihole/pihole";
imageDigest = "sha256:aa6140856dfc67f3ae36c352e30903f944e4e220699ffeeaf6b85235b2d84c95";
finalImageTag = "2022.09.4";
os = "linux";
}