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:
parent
a68dcbc4db
commit
0b5b538077
3 changed files with 67 additions and 59 deletions
33
entrypoint.nix
Normal file
33
entrypoint.nix
Normal 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
|
||||||
|
'';
|
||||||
|
}
|
62
flake.nix
62
flake.nix
|
@ -13,67 +13,11 @@
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
overlays = [attic.overlays.default];
|
overlays = [attic.overlays.default];
|
||||||
};
|
};
|
||||||
entrypoint = pkgs.writeShellApplication {
|
entrypoint = import ./entrypoint.nix {inherit pkgs;};
|
||||||
name = "woodpecker-nix-attic-entrypoint";
|
mkImage = import ./mkImage.nix {inherit pkgs 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";
|
|
||||||
in {
|
in {
|
||||||
packages.x86_64-linux.default = mkImage null;
|
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";
|
packages.x86_64-linux.woodpecker-plugin-nix-attic-release = mkImage "0.1.0";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
31
mkImage.nix
Normal file
31
mkImage.nix
Normal 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;
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue