woodpecker-plugin-nix-attic/flake.nix

66 lines
2 KiB
Nix

{
description = "Woodpecker plugin to run nix commands and cache builds using attic";
inputs.nixpkgs.url = "nixpkgs/771b86d407c567b57d791197ec464b46a5480b0b";
inputs.attic.url = "github:zhaofengli/attic";
outputs = { self, nixpkgs, attic }: {
packages.x86_64-linux.woodpecker-plugin-nix-attic =
let
pkgs = import nixpkgs {
system = "x86_64-linux";
overlays = [attic.overlays.default];
};
entrypoint = pkgs.writeShellApplication {
name = "woodpecker-nix-attic-entrypoint";
text = ''
cat << EOF >> /etc/nix/nix.conf
experimental-features = nix-command flakes
trusted-substituters = $PLUGIN_BINARY_CACHE
extra-trusted-public-keys = $PLUGIN_BINARY_CACHE_PUBLIC_KEY
extra-substituters = $PLUGIN_BINARY_CACHE
netrc-file = /tmp/netrc
EOF
if [[ $PLUGIN_BINARY_CACHE =~ ^https?:\/\/([^\/]+) ]]; then
machine=''${BASH_REMATCH[1]}
cat << EOF >> /tmp/netrc
machine $machine
password $PLUGIN_BINARY_CACHE_TOKEN
EOF
fi
export PATH=/bin:/$PATH
''${PLUGIN_COMMAND}
'';
};
nixImage = pkgs.dockerTools.pullImage {
imageName = "nixos/nix";
imageDigest = "sha256:ea010add01de314c23def4f333c2881ac5dda92031aaf5260a4d9491af401179";
sha256 = "1qkkqn00h90dhql2jx2bgf08qfd0fkwycy9kg0w7gcpij2p4lq9r";
finalImageName = "nixos/nix";
finalImageTag = "2.18.0";
};
in
pkgs.dockerTools.buildImage {
name = "git.vdx.hu/voidcontext/woodpecker-plugin-nix-attic";
tag = "latest";
fromImage = nixImage;
# runAsRoot = ''
# #!${pkgs.stdenv.shell}
# export PATH=/bin:/usr/bin:/sbin:/usr/sbin:$PATH
# '';
copyToRoot = pkgs.buildEnv {
name = "woodpecker-plugin-nix-attic-image-root";
paths = [ pkgs.gnumake pkgs.attic-client entrypoint ];
pathsToLink = [ "/bin" ];
};
config.Cmd = ["/bin/woodpecker-nix-attic-entrypoint"];
diskSize = 2048;
};
};
}