emily 4 months ago
parent a8f90e09e7
commit 5728d16097
Signed by: snaki
GPG Key ID: F6F4C66207FCF995

@ -26,34 +26,32 @@
buildPhase = '''';
installPhase = ''cp -r src $out'';
};
cfg = config.services.vyosBld;
bldFlags = (attrsets.mapAttrsToList (flag: opt: "--" + flag + " " + opt) cfg.buildFlags);
vyosBuildScript = prev.writeShellScript "build-vyos" ''
cleanup() {
rmdir "$root"
}
root="$(mktemp -d)"
trap cleanup EXIT
iso_name="vyos-${cfg.buildFlags.version}-${cfg.buildFlags.architecture}.iso"
bld_dir="$root/vyos-build"
docker_cmd="${prev.docker}/bin/docker run --rm -it --privileged -v $bld_dir:/vyos -w /vyos vyos/vyos-build:current"
git clone -b current --single-branch https://github.com/vyos/vyos-build $root
$docker_cmd sudo ./build-vyos-image ${flavor} ${builtins.concatStringsSep " " bldFlags}
$docker_cmd sudo chown -R ${config.users.users.vyos-bld.uid}:${config.users.groups.vyos-bld.gid} /vyos
cp $bld_dir/build/$iso_name ${cfg.output}
mapfile -t old_isos < <(ls ${cfg.output} | head -n -${builtins.toString cfg.keep})
for i in ''${old_isos[@]}; do
rm -r ${cfg.output}/''${old_iso[$i]}
done
'';
};
nixosModules.default =
{ config, options, pkgs, lib, ... }: with lib;
let
cfg = config.services.vyosBld;
bldFlags = (attrsets.mapAttrsToList (flag: opt: "--" + flag + " " + opt) cfg.buildFlags);
vyosBuildScript = pkgs.writeShellScript "build-vyos" ''
cleanup() {
rmdir "$root"
}
root="$(mktemp -d)"
trap cleanup EXIT
iso_name="vyos-${cfg.buildFlags.version}-${cfg.buildFlags.architecture}.iso"
bld_dir="$root/vyos-build"
docker_cmd="${pkgs.docker}/bin/docker run --rm -it --privileged -v $bld_dir:/vyos -w /vyos vyos/vyos-build:current"
git clone -b current --single-branch https://github.com/vyos/vyos-build $root
$docker_cmd sudo ./build-vyos-image ${flavor} ${builtins.concatStringsSep " " bldFlags}
$docker_cmd sudo chown -R ${config.users.users.vyos-bld.uid}:${config.users.groups.vyos-bld.gid} /vyos
cp $bld_dir/build/$iso_name ${cfg.output}
mapfile -t old_isos < <(ls ${cfg.output} | head -n -${builtins.toString cfg.keep})
for i in ''${old_isos[@]}; do
rm -r ${cfg.output}/''${old_iso[$i]}
done
'';
in {
options.services.vyosBld = {
enable = mkEnableOption "VyOS automatic build";
@ -120,7 +118,7 @@
serviceConfig = {
User = "vyos-bld";
Group = "vyos-bld";
ExecStart = pkgs.vyosBuildScript;
ExecStart = vyosBuildScript;
PrivateTmp = true;
ProtectHome = true;

Loading…
Cancel
Save