refactor: split flake.nix into multiple files (#8)

Reviewed-on: https://git.vdx.hu/voidcontext/woodpecker-plugin-nix-attic/pulls/8
Co-authored-by: Gabor Pihaj <gabor.pihaj@gmail.com>
Co-committed-by: Gabor Pihaj <gabor.pihaj@gmail.com>
This commit is contained in:
Gabor Pihaj 2023-09-30 17:44:43 +00:00 committed by Gabor Pihaj
parent a68dcbc4db
commit 0b5b538077
No known key found for this signature in database
GPG key ID: 7BCF5D144C6C06E3
3 changed files with 67 additions and 59 deletions

33
entrypoint.nix Normal file
View file

@ -0,0 +1,33 @@
{pkgs, ...}:
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
cat << EOF >> run.sh
#!/usr/bin/env bash
export PATH=/bin:$PATH
set -x -e -o pipefail
$PLUGIN_SCRIPT
EOF
sh run.sh
'';
}

View file

@ -13,67 +13,11 @@
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
cat << EOF >> run.sh
#!/usr/bin/env bash
export PATH=/bin:$PATH
set -x -e -o pipefail
$PLUGIN_SCRIPT
EOF
sh run.sh
'';
};
nixImage = pkgs.dockerTools.pullImage {
imageName = "nixos/nix";
imageDigest = "sha256:cee9f1cda2d794c53ca0db0794ee54cfea32748dddb718beba9bf654416e437a";
sha256 = "1angy2h02q3smpcyja3h3rzqx6nip50w56pn3yc56qcr9q896ffb";
finalImageName = "nixos/nix";
finalImageTag = "2.15.1";
};
mkImage = tag:
pkgs.dockerTools.buildImage {
name = "git.vdx.hu/voidcontext/woodpecker-plugin-nix-attic";
tag = tag;
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;
};
latest = mkImage "latest";
entrypoint = import ./entrypoint.nix {inherit pkgs;};
mkImage = import ./mkImage.nix {inherit pkgs entrypoint;};
in {
packages.x86_64-linux.default = mkImage null;
packages.x86_64-linux.woodpecker-plugin-nix-attic-latest = latest;
packages.x86_64-linux.woodpecker-plugin-nix-attic-latest = mkImage "latest";
packages.x86_64-linux.woodpecker-plugin-nix-attic-release = mkImage "0.1.0";
};
}

31
mkImage.nix Normal file
View file

@ -0,0 +1,31 @@
{
pkgs,
entrypoint,
...
}: let
nixImage = pkgs.dockerTools.pullImage {
imageName = "nixos/nix";
imageDigest = "sha256:cee9f1cda2d794c53ca0db0794ee54cfea32748dddb718beba9bf654416e437a";
sha256 = "1angy2h02q3smpcyja3h3rzqx6nip50w56pn3yc56qcr9q896ffb";
finalImageName = "nixos/nix";
finalImageTag = "2.15.1";
};
in
tag:
pkgs.dockerTools.buildImage {
name = "git.vdx.hu/voidcontext/woodpecker-plugin-nix-attic";
tag = tag;
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;
}