infrastructure/packages/snakeoil.nix
2024-02-02 13:16:03 -08:00

30 lines
736 B
Nix

{
runCommand,
buildPackages,
lib,
}: let
inherit (lib.strings) concatStringsSep;
inherit (lib.lists) toList head;
in { domain, name }: runCommand name {
domains = concatStringsSep "," (toList domain);
domain = head (toList domain);
nativeBuildInputs = [ buildPackages.minica ];
outputs = [ "out" "key" "cakey" "ca" "cert" "fullchain" ];
} ''
install -d $out
minica \
--ca-key ca.key.pem \
--ca-cert ca.pem \
--domains "$domains"
mv ca.pem $ca
mv ca.key.pem $cakey
mv $domain/cert.pem $cert
mv $domain/key.pem $key
cat $cert $ca > $fullchain
ln -s $fullchain $out/fullchain.pem
ln -s $key $out/key.pem
ln -s $cakey $out/ca.key.pem
ln -s $cert $out/cert.pem
ln -s $ca $out/ca.pem
''