mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 04:19:19 -08:00
77 lines
2.6 KiB
Nix
77 lines
2.6 KiB
Nix
{}:
|
|
let
|
|
meta = import ./default.nix;
|
|
config = meta;
|
|
inherit (meta) pkgs;
|
|
fixedSources = removeAttrs config.sources [ "__functor" ];
|
|
nf-update = pkgs.writeShellScriptBin "nf-update" ''
|
|
TEMP=$(mktemp -d)
|
|
git init -q $TEMP
|
|
${pkgs.lib.concatStringsSep "\n" (pkgs.lib.mapAttrsToList (source: spec: let
|
|
update = "niv update ${source}";
|
|
fetch = "timeout 30 git -C $TEMP fetch -q --depth 1 ${spec.repo} ${spec.branch}:source-${source}";
|
|
revision = "$(git -C $TEMP show-ref -s source-${source})";
|
|
isGit = pkgs.lib.hasPrefix "https://" spec.repo or "";
|
|
git = ''
|
|
if ${fetch}; then
|
|
echo "${source}:${spec.branch} HEAD at ${revision}" >&2
|
|
${update} -r ${revision} || true
|
|
else
|
|
echo "failed to fetch latest revision from ${spec.repo}" >&2
|
|
fi
|
|
'';
|
|
auto = "${update} || true";
|
|
in if isGit then git else auto) fixedSources)}
|
|
'';
|
|
nf-actions = pkgs.writeShellScriptBin "nf-actions" ''
|
|
export START_DIR="$PWD"
|
|
cd "${toString ./.}"
|
|
export NF_CONFIG_ROOT=${toString ./.}/ci
|
|
NF_CONFIG_FILES=($NF_CONFIG_ROOT/{nodes,niv-cron}.nix)
|
|
for f in "''${NF_CONFIG_FILES[@]}"; do
|
|
echo $f
|
|
nix run --argstr config "$f" ci.run.gh-actions-generate
|
|
done
|
|
cd "${toString ./config/trusted}"
|
|
export TRUSTED_CONFIG_ROOT=${toString ./config/trusted}/ci
|
|
TRUSTED_CONFIG_FILES=($TRUSTED_CONFIG_ROOT/nodes.nix)
|
|
for f in "''${TRUSTED_CONFIG_FILES[@]}"; do
|
|
echo $f
|
|
nix run --argstr config "$f" ci.run.gh-actions-generate
|
|
done
|
|
cd $START_DIR
|
|
'';
|
|
nf-actions-test = pkgs.writeShellScriptBin "nf-actions-test" ''
|
|
export START_DIR="$PWD"
|
|
cd "${toString ./.}"
|
|
export NF_CONFIG_ROOT=${toString ./.}/ci
|
|
NF_CONFIG_FILES=($NF_CONFIG_ROOT/{nodes,niv-cron}.nix)
|
|
for f in "''${NF_CONFIG_FILES[@]}"; do
|
|
echo $f
|
|
nix run --argstr config "$f" ci.test
|
|
done
|
|
cd "${toString ./config/trusted}"
|
|
export TRUSTED_CONFIG_ROOT=${toString ./config/trusted}/ci
|
|
TRUSTED_CONFIG_FILES=($TRUSTED_CONFIG_ROOT/nodes.nix)
|
|
for f in "''${TRUSTED_CONFIG_FILES[@]}"; do
|
|
echo $f
|
|
nix run --argstr config "$f" ci.test
|
|
done
|
|
cd $START_DIR
|
|
'';
|
|
in
|
|
pkgs.mkShell {
|
|
nativeBuildInputs = with pkgs; [
|
|
inetutils
|
|
nf-update
|
|
nf-actions
|
|
nf-actions-test
|
|
] ++ config.runners.lazy.nativeBuildInputs;
|
|
shellHook = ''
|
|
export HOME_HOSTNAME=$(hostname -s)
|
|
export HOME_UID=$(id -u)
|
|
export CI_PLATFORM="impure"
|
|
export NIX_PATH="$NIX_PATH:home=${toString ./.}"
|
|
'';
|
|
}
|
|
|