Auto generate certificates for local web development

This commit is contained in:
Daniel Siepmann 2024-06-23 20:33:06 +02:00
parent 1c5e9ac4ad
commit e895f5a40f
Signed by: Daniel Siepmann
GPG key ID: 33D6629915560EF4
2 changed files with 13 additions and 25 deletions

View file

@ -32,7 +32,6 @@
litecli
sqlite
mycli
mkcert # TODO: Create own wrapper script to create new certs
tig
universal-ctags
ripgrep

View file

@ -6,31 +6,12 @@
}:
let
certFolder = "/var/projects/own/mkcert";
domains = builtins.concatStringsSep " " (
map (domain: "\"${domain}\"") (
builtins.attrNames config.services.httpd.virtualHosts
)
);
custom-generate-certs = pkgs.writeShellApplication {
name = "custom-generate-certs";
runtimeInputs = [
pkgs.mkcert
];
text = ''
mkdir -p ${certFolder}
pushd ${certFolder}
declare -a domains=(${domains})
for domain in "''${domains[@]}"
do
CAROOT="${certFolder}" mkcert "$domain"
done
'';
};
in {
options = {
custom.web-development = {
@ -43,16 +24,24 @@ in {
config = {
# TODO: Run once before httpd service starts?
environment.systemPackages = [
custom-generate-certs
];
# NOTE: Disable until root certificate is generated, then add again
# Maybe check for file existense and throw proper error message?
security.pki.certificates = [
(builtins.readFile "${config.custom.web-development.certFolder}rootCA.pem")
];
system.activationScripts.createWebDevelopmentCerts = {
text = ''
mkdir -p ${config.custom.web-development.certFolder}
pushd ${config.custom.web-development.certFolder}
declare -a domains=(${domains})
for domain in "''${domains[@]}"
do
CAROOT="${config.custom.web-development.certFolder}" ${pkgs.mkcert}/bin/mkcert "$domain" 2> /dev/null
done
chown ${config.services.httpd.user}:${config.services.httpd.group} ${config.custom.web-development.certFolder}/*
'';
};
};
}