Improve createScript function

This commit is contained in:
Pim Kunis 2024-05-19 14:05:20 +02:00
parent f8cca093cd
commit 05a49f4e35
3 changed files with 16 additions and 8 deletions

View file

@ -9,7 +9,9 @@ Nix definitions to configure our servers at home.
- [agenix](https://github.com/ryantm/agenix): deployment of encrypted secrets to NixOS machines - [agenix](https://github.com/ryantm/agenix): deployment of encrypted secrets to NixOS machines
- [dns.nix](https://github.com/kirelagin/dns.nix): A Nix DSL for defining DNS zones - [dns.nix](https://github.com/kirelagin/dns.nix): A Nix DSL for defining DNS zones
- [flake-utils](https://github.com/numtide/flake-utils): Handy utilities to develop Nix flakes - [flake-utils](https://github.com/numtide/flake-utils): Handy utilities to develop Nix flakes
- [nixos-hardware](https://github.com/NixOS/nixos-hardware): Hardware-specific NixOS modules. Doing the heavy lifting for our Raspberry Pi. - [nixos-hardware](https://github.com/NixOS/nixos-hardware): Hardware-specific NixOS modules. Doing the heavy lifting for our Raspberry Pi
- [kubenix](https://kubenix.org/): declare and deploy Kubernetes resources using Nix
- [nixhelm](https://github.com/farcaller/nixhelm): Nix-digestible Helm charts
## Installation ## Installation
@ -43,8 +45,6 @@ This puts a private key, signed certificate and a kubeconfig in the kubeconfig d
If the cluster has not been initialized yet, next run `nix run .#kubenix-bootstrap.x86_64-linux`. If the cluster has not been initialized yet, next run `nix run .#kubenix-bootstrap.x86_64-linux`.
⚠️ Do not do this if the cluster has been initialized already, as it will prune any deployed resources! ⚠️
Lastly, deploy everything to the cluster using `nix run .#kubenix.x86_64-linux`. Lastly, deploy everything to the cluster using `nix run .#kubenix.x86_64-linux`.
## Known bugs ## Known bugs

View file

@ -22,5 +22,4 @@ in
}; };
}); });
}; };
} }

View file

@ -1,6 +1,6 @@
{ flake-utils, pkgs, ... }: flake-utils.lib.eachDefaultSystem (system: { flake-utils, pkgs, ... }: flake-utils.lib.eachDefaultSystem (system:
let let
createScript = name: runtimeInputs: scriptPath: createScript = { name, runtimeInputs, scriptPath, extraWrapperFlags ? "", ... }:
let let
script = (pkgs.writeScriptBin name (builtins.readFile scriptPath)).overrideAttrs (old: { script = (pkgs.writeScriptBin name (builtins.readFile scriptPath)).overrideAttrs (old: {
buildCommand = "${old.buildCommand}\n patchShebangs $out"; buildCommand = "${old.buildCommand}\n patchShebangs $out";
@ -10,10 +10,19 @@ let
inherit name; inherit name;
paths = [ script ] ++ runtimeInputs; paths = [ script ] ++ runtimeInputs;
buildInputs = [ pkgs.makeWrapper ]; buildInputs = [ pkgs.makeWrapper ];
postBuild = "wrapProgram $out/bin/${name} --set PATH $out/bin"; postBuild = "wrapProgram $out/bin/${name} --set PATH $out/bin ${extraWrapperFlags}";
}; };
in in
{ {
packages.bootstrap = createScript "bootstrap" (with pkgs; [ libsecret coreutils nixos-anywhere ]) ./bootstrap.sh; packages.bootstrap = createScript {
packages.gen-k3s-cert = createScript "create-k3s-cert" (with pkgs; [ openssl coreutils openssh yq ]) ./gen-k3s-cert.sh; name = "bootstrap";
runtimeInputs = with pkgs; [ libsecret coreutils nixos-anywhere ];
scriptPath = ./bootstrap.sh;
};
packages.gen-k3s-cert = createScript {
name = "create-k3s-cert";
runtimeInputs = with pkgs; [ openssl coreutils openssh yq ];
scriptPath = ./gen-k3s-cert.sh;
};
}) })