67 lines
2 KiB
Nix
67 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;
|
||
|
};
|
||
|
};
|
||
|
}
|