2026-03-19 18:17:07 -04:00

99 lines
3.6 KiB
Nix

# unpackPhase
# patchPhase
# configurePhase
# buildPhase
# checkPhase
# installPhase
# fixupPhase
# installCheckPhase
# distPhase
{
lib,
stdenv,
writeShellScript,
k8s,
...
}:
let
bootstrap_script = (writeShellScript "bootstrap-script" bootstrap_script_body);
bootstrap_script_body = (''
set -euo pipefail
IFS=$'\n\t'
DIR="$( cd "$( dirname "''${BASH_SOURCE[0]}" )" && pwd )"
${apply_manifests}
echo "Bootstrap finished"
'');
manifests = (
lib.concatMapStringsSep "," lib.escapeShellArg (
[
./files/manifests/initial_clusterrole.yaml
]
++ gateway_crds
++ [
"${k8s.cilium-manifest}/cilium.yaml"
"${k8s.coredns-manifest}/coredns.yaml"
./files/manifests/flux_namespace.yaml
./files/manifests/flux.yaml
./files/manifests/flux_instance.yaml
]
++ (lib.attrsets.mapAttrsToList (
secret_name: secret_value: "${secret_value}/${secret_name}.yaml"
) k8s.k8s-secrets-generic)
++ [
./files/manifests/flux_apply_git.yaml
]
)
);
apply_manifests = "kubectl --kubeconfig=${k8s.client-configs.admin}/admin.kubeconfig apply --server-side --force-conflicts -f ${manifests}";
gateway_crds = [
(builtins.fetchurl {
url = "https://github.com/kubernetes-sigs/gateway-api/raw/refs/tags/v1.5.1/config/crd/standard/gateway.networking.k8s.io_backendtlspolicies.yaml";
sha256 = "0wbrylglinba48ibqnrzs5vp4raa1azb0b83hjf2zmsk44bii24v";
})
(builtins.fetchurl {
url = "https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/refs/tags/v1.5.1/config/crd/standard/gateway.networking.k8s.io_gatewayclasses.yaml";
sha256 = "1x5yws3q7grd5xlnz071v6ymn707vycbp1s1d9cv7qbyfnrd8ji3";
})
(builtins.fetchurl {
url = "https://github.com/kubernetes-sigs/gateway-api/raw/refs/tags/v1.5.1/config/crd/standard/gateway.networking.k8s.io_gateways.yaml";
sha256 = "0cbwwzmy3kqrn224a440pklcpfjv0w4mci133akw1n5l1qqfh5kl";
})
(builtins.fetchurl {
url = "https://github.com/kubernetes-sigs/gateway-api/raw/refs/tags/v1.5.1/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml";
sha256 = "1pr7g06q3m9dx2mfi4ri892nrrzq9z8d205sb53g4gadshjl37wp";
})
(builtins.fetchurl {
url = "https://github.com/kubernetes-sigs/gateway-api/raw/refs/tags/v1.5.1/config/crd/standard/gateway.networking.k8s.io_httproutes.yaml";
sha256 = "0w632khanl080fzjf34vzqi7vhf2gf7mffh7726v3v5s16qh68k8";
})
(builtins.fetchurl {
url = "https://github.com/kubernetes-sigs/gateway-api/raw/refs/tags/v1.5.1/config/crd/standard/gateway.networking.k8s.io_listenersets.yaml";
sha256 = "1fz0y0w8n6rn20jgynlp0xvg4r5cmdjfzc8kc41b1yzx366lc8cj";
})
(builtins.fetchurl {
url = "https://github.com/kubernetes-sigs/gateway-api/raw/refs/tags/v1.5.1/config/crd/standard/gateway.networking.k8s.io_referencegrants.yaml";
sha256 = "0ldv1ydvdjq1vhml0j400gmih2dsr9n4g2mvylwp62zddr42r458";
})
(builtins.fetchurl {
url = "https://github.com/kubernetes-sigs/gateway-api/raw/refs/tags/v1.5.1/config/crd/standard/gateway.networking.k8s.io_tlsroutes.yaml";
sha256 = "0ickl2fj23ch5j0l9pd8zr82qy2nws8ib1d24wjhx939qhkli3l1";
})
(builtins.fetchurl {
url = "https://github.com/kubernetes-sigs/gateway-api/raw/refs/tags/v1.5.1/config/crd/standard/gateway.networking.k8s.io_vap_safeupgrades.yaml";
sha256 = "18aqz4abwyi9kiqx035rakq4g6a257r6y00y0my5djq64ylls6lq";
})
];
in
stdenv.mkDerivation (finalAttrs: {
name = "bootstrap-script";
nativeBuildInputs = [ ];
buildInputs = [ ];
unpackPhase = "true";
installPhase = ''
cp ${bootstrap_script} "$out"
'';
})