1{ 2 pkgs, 3 config, 4 lib, 5 options, 6 colour-guesser, 7 ... 8}: 9 10let 11 cfg = config.custom.website.colour-guesser; 12in 13{ 14 options = { 15 custom.website.colour-guesser = { 16 enable = lib.mkEnableOption "Colour Guesser"; 17 domain = lib.mkOption { 18 type = lib.types.str; 19 default = "colour-guesser.${config.networking.domain}"; 20 }; 21 cname = lib.mkOption { 22 type = lib.types.str; 23 default = null; 24 description = '' 25 CNAME to create DNS records for. 26 Ignored if null 27 ''; 28 }; 29 }; 30 }; 31 32 config = lib.mkIf cfg.enable { 33 security.acme-eon.nginxCerts = [ cfg.domain ]; 34 services.nginx = { 35 enable = true; 36 recommendedProxySettings = true; 37 virtualHosts."${cfg.domain}" = { 38 forceSSL = true; 39 root = "${colour-guesser.packages.${pkgs.stdenv.hostPlatform.system}.default}"; 40 }; 41 }; 42 43 # requires dns module 44 eilean.services.dns.zones.${config.networking.domain}.records = [ 45 { 46 name = "${cfg.domain}."; 47 type = "CNAME"; 48 value = cfg.cname; 49 } 50 { 51 name = "www.${cfg.domain}."; 52 type = "CNAME"; 53 value = cfg.cname; 54 } 55 ]; 56 }; 57}