stockholm/krebs/3modules/krebs-pages.nix

46 lines
1.3 KiB
Nix
Raw Normal View History

2023-06-10 10:50:53 +00:00
{ config, modulesPath, pkgs, lib, ... }: let
2022-12-09 14:50:25 +00:00
cfg = config.krebs.pages;
extraTypes.nginx-vhost = lib.types.submodule (
lib.recursiveUpdate
(import (modulesPath + "/services/web-servers/nginx/vhost-options.nix")
{ inherit config lib; })
{}
);
in {
options.krebs.pages = {
enable = lib.mkEnableOption "krebs-pages";
domain = lib.mkOption {
2023-06-10 10:50:53 +00:00
type = pkgs.stockholm.lib.types.hostname;
2022-12-09 14:50:25 +00:00
default = "krebsco.de";
};
nginx = lib.mkOption {
type = extraTypes.nginx-vhost;
default = {};
example = lib.literalExpression /* nix */ ''
{
# To enable encryption and let let's encrypt take care of certificate
enableACME = true;
forceSSL = true;
}
'';
description = lib.mkDoc ''
With this option, you can customize the nginx virtualHost settings.
'';
};
package = lib.mkOption {
type = lib.types.package;
default = pkgs.krebs-pages;
};
};
config = lib.mkIf cfg.enable {
services.nginx = {
enable = lib.mkDefault true;
virtualHosts.${cfg.domain} = lib.mkMerge [ cfg.nginx {
root = lib.mkForce cfg.package;
2022-12-14 11:45:22 +00:00
locations."= /ip".return = "200 $remote_addr";
2022-12-13 23:04:36 +00:00
locations."= /redirect".return = "301 /redirect";
2022-12-09 14:50:25 +00:00
}];
};
};
}