diff --git a/hosts/hetznix/services/caddy/default.nix b/hosts/hetznix/services/caddy/default.nix deleted file mode 100644 index 8fb54d34..00000000 --- a/hosts/hetznix/services/caddy/default.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - services.caddy.enable = true; - - imports = [ ./vhosts ]; -} diff --git a/hosts/hetznix/services/caddy/vhosts/bootstrap-with-tailwind.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/bootstrap-with-tailwind.oliverdavies.uk.nix deleted file mode 100644 index e89861ae..00000000 --- a/hosts/hetznix/services/caddy/vhosts/bootstrap-with-tailwind.oliverdavies.uk.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."bootstrap-with-tailwind.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/bootstrap-with-tailwind.oliverdavies.uk - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/default.nix b/hosts/hetznix/services/caddy/vhosts/default.nix deleted file mode 100644 index bcf8dbb8..00000000 --- a/hosts/hetznix/services/caddy/vhosts/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - imports = [ - ./bootstrap-with-tailwind.oliverdavies.uk.nix - ./eric.nix - ./florida-drupalcamp-tailwind-css.oliverdavies.uk.nix - ./luke.oliverdavies.uk.nix - ./phpsw-sculpin-demo.oliverdavies.uk.nix - ./rebuilding-acquia.oliverdavies.uk.nix - ./rebuilding-bartik.oliverdavies.uk.nix - ./rebuilding-bristol-js.oliverdavies.uk.nix - ./rebuilding-symfony.oliverdavies.uk.nix - ./tailwindcss-demo.oliverdavies.uk.nix - ./talking-drupal-tailwindcss.oliverdavies.uk.nix - ./wp-tailwind.oliverdavies.uk.nix - ./www.oliverdavies.uk.nix - ./zet.oliverdavies.uk.nix - ]; -} diff --git a/hosts/hetznix/services/caddy/vhosts/eric.nix b/hosts/hetznix/services/caddy/vhosts/eric.nix deleted file mode 100644 index fc6c44a9..00000000 --- a/hosts/hetznix/services/caddy/vhosts/eric.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."eric.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/eric - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/florida-drupalcamp-tailwind-css.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/florida-drupalcamp-tailwind-css.oliverdavies.uk.nix deleted file mode 100644 index cdb1623d..00000000 --- a/hosts/hetznix/services/caddy/vhosts/florida-drupalcamp-tailwind-css.oliverdavies.uk.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."florida-drupalcamp-tailwind-css.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/florida-drupalcamp-tailwind-css.oliverdavies.uk - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/luke.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/luke.oliverdavies.uk.nix deleted file mode 100644 index 3fdf2713..00000000 --- a/hosts/hetznix/services/caddy/vhosts/luke.oliverdavies.uk.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."luke.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/luke.oliverdavies.uk - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/phpsw-sculpin-demo.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/phpsw-sculpin-demo.oliverdavies.uk.nix deleted file mode 100644 index 5c3476df..00000000 --- a/hosts/hetznix/services/caddy/vhosts/phpsw-sculpin-demo.oliverdavies.uk.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."phpsw-sculpin-demo.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/phpsw-sculpin-demo.oliverdavies.uk - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/rebuilding-acquia.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/rebuilding-acquia.oliverdavies.uk.nix deleted file mode 100644 index 88d9407e..00000000 --- a/hosts/hetznix/services/caddy/vhosts/rebuilding-acquia.oliverdavies.uk.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."rebuilding-acquia.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/rebuilding-acquia.oliverdavies.uk - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/rebuilding-bartik.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/rebuilding-bartik.oliverdavies.uk.nix deleted file mode 100644 index a83aa182..00000000 --- a/hosts/hetznix/services/caddy/vhosts/rebuilding-bartik.oliverdavies.uk.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."rebuilding-bartik.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/rebuilding-bartik.oliverdavies.uk - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/rebuilding-bristol-js.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/rebuilding-bristol-js.oliverdavies.uk.nix deleted file mode 100644 index d842a2ee..00000000 --- a/hosts/hetznix/services/caddy/vhosts/rebuilding-bristol-js.oliverdavies.uk.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."rebuilding-bristol-js.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/rebuilding-bristol-js.oliverdavies.uk - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/rebuilding-symfony.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/rebuilding-symfony.oliverdavies.uk.nix deleted file mode 100644 index c7b08be4..00000000 --- a/hosts/hetznix/services/caddy/vhosts/rebuilding-symfony.oliverdavies.uk.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."rebuilding-symfony.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/rebuilding-symfony.oliverdavies.uk - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/tailwindcss-demo.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/tailwindcss-demo.oliverdavies.uk.nix deleted file mode 100644 index f3b9d398..00000000 --- a/hosts/hetznix/services/caddy/vhosts/tailwindcss-demo.oliverdavies.uk.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."tailwindcss-demo.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/tailwindcss-demo.oliverdavies.uk - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/talking-drupal-tailwindcss.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/talking-drupal-tailwindcss.oliverdavies.uk.nix deleted file mode 100644 index 5df66a61..00000000 --- a/hosts/hetznix/services/caddy/vhosts/talking-drupal-tailwindcss.oliverdavies.uk.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."talking-drupal-tailwindcss.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/talking-drupal-tailwindcss.oliverdavies.uk - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/wp-tailwind.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/wp-tailwind.oliverdavies.uk.nix deleted file mode 100644 index e951adc6..00000000 --- a/hosts/hetznix/services/caddy/vhosts/wp-tailwind.oliverdavies.uk.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."wp-tailwind.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/wp-tailwind.oliverdavies.uk - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/www.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/www.oliverdavies.uk.nix deleted file mode 100644 index 9ed00809..00000000 --- a/hosts/hetznix/services/caddy/vhosts/www.oliverdavies.uk.nix +++ /dev/null @@ -1,71 +0,0 @@ -{ - services.caddy.virtualHosts = { - "oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - redir https://www.oliverdavies.uk{uri} - ''; - }; - - "www.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = - let - tomePaths = [ - "core" - "sites/default/files" - "themes/custom/opdavies" - "tome-test" - ]; - - tomeConfig = builtins.concatStringsSep "\n\n" ( - builtins.map (path: '' - handle /${path} { - root * /var/www/vhosts/www.oliverdavies.uk-tome - file_server - } - - handle_path /${path}/* { - root * /var/www/vhosts/www.oliverdavies.uk-tome/${path} - file_server - } - '') tomePaths - ); - - redirects = import ./www.oliverdavies.uk-redirects.nix; - - redirectLines = builtins.concatStringsSep "\n" ( - map (r: "redir ${r.from} ${r.to} permanent") redirects - ); - in - '' - encode gzip - file_server - root * /var/www/vhosts/www.oliverdavies.uk-sculpin - - handle_errors { - @404 { - expression {http.error.status_code} == 404 - } - - rewrite @404 /404/index.html - file_server - } - - ${tomeConfig} - - @articles path_regexp ^/articles/(.*)$ - @talks path_regexp ^/talks/(.*)$ - @talks-archive path_regexp ^/talks/archive/(.*)$ - - redir @articles /blog/{re.1} permanent - redir @talks-archive /presentations/{re.1} permanent - redir @talks /presentations/{re.1} permanent - - ${redirectLines} - ''; - }; - }; -} diff --git a/hosts/hetznix/services/caddy/vhosts/zet.oliverdavies.uk.nix b/hosts/hetznix/services/caddy/vhosts/zet.oliverdavies.uk.nix deleted file mode 100644 index da45a2b1..00000000 --- a/hosts/hetznix/services/caddy/vhosts/zet.oliverdavies.uk.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ - services.caddy.virtualHosts."zet.oliverdavies.uk" = { - useACMEHost = "oliverdavies.uk"; - - extraConfig = '' - encode gzip - root * /var/www/vhosts/zet.oliverdavies.uk - file_server - header X-Robots-Tag "noindex, nofollow" - ''; - }; -} diff --git a/hosts/hetznix/services/default.nix b/hosts/hetznix/services/default.nix index 2e3779b0..55974127 100644 --- a/hosts/hetznix/services/default.nix +++ b/hosts/hetznix/services/default.nix @@ -1,6 +1,5 @@ { imports = [ - ./caddy ./jitsi.nix ./openssl.nix ]; diff --git a/hosts/nixedo/configuration.nix b/hosts/nixedo/configuration.nix index e4c714f6..d5f251cf 100644 --- a/hosts/nixedo/configuration.nix +++ b/hosts/nixedo/configuration.nix @@ -8,7 +8,6 @@ imports = with inputs.self.nixosModules; [ ./hardware-configuration.nix ./secrets.nix - ./services.nix mixins-common mixins-docker @@ -25,6 +24,7 @@ ./modules/forgejo.nix ./modules/immich.nix ./modules/jellyfin.nix + ./modules/nginx ./modules/paperless.nix ]; diff --git a/hosts/nixedo/modules/cloudflared.nix b/hosts/nixedo/modules/cloudflared.nix index 06b36352..4ec15b0f 100644 --- a/hosts/nixedo/modules/cloudflared.nix +++ b/hosts/nixedo/modules/cloudflared.nix @@ -7,10 +7,6 @@ tunnels."e1514105-327f-4984-974e-e2fbaca76466" = { credentialsFile = config.age.secrets.cloudflared.path; default = "http_status:404"; - - ingress = { - "bootstrap-with-tailwind.oliverdavies.uk" = "http://localhost:8000"; - }; }; }; } diff --git a/hosts/nixedo/modules/nginx/default.nix b/hosts/nixedo/modules/nginx/default.nix new file mode 100644 index 00000000..0975dfbf --- /dev/null +++ b/hosts/nixedo/modules/nginx/default.nix @@ -0,0 +1,51 @@ +let + sites = import ./sites.nix; +in +{ + services = { + nginx = { + enable = true; + + virtualHosts = builtins.listToAttrs ( + map (site: { + name = site.url; + + value = { + root = site.root; + + listen = [ + { + addr = "localhost"; + port = site.port; + } + ]; + + locations."/".tryFiles = "$uri $uri/index.html =404"; + + extraConfig = builtins.concatStringsSep "\n\n" [ + site.extraConfig or "" + + '' + port_in_redirect off; + + # Remove trailing slashes. + rewrite ^/(.*)/$ /$1 permanent; + '' + ]; + }; + }) sites + ); + }; + + cloudflared.tunnels."e1514105-327f-4984-974e-e2fbaca76466" = { + ingress = builtins.listToAttrs ( + map (site: { + name = site.url; + value = "http://localhost:${toString site.port}"; + }) sites + ); + }; + }; + + imports = [ ./www.oliverdavies.uk.nix ]; +} diff --git a/hosts/nixedo/modules/nginx/sites.nix b/hosts/nixedo/modules/nginx/sites.nix new file mode 100644 index 00000000..c8b3983e --- /dev/null +++ b/hosts/nixedo/modules/nginx/sites.nix @@ -0,0 +1,87 @@ +[ + { + url = "bootstrap-with-tailwind.oliverdavies.uk"; + root = "/var/www/bootstrap-with-tailwind"; + port = 8081; + } + + { + port = 8084; + root = "/var/www/eric"; + url = "eric.oliverdavies.uk"; + + extraConfig = '' + add_header X-Robots-Tag "noindex, nofollow"; + ''; + } + + { + port = 8083; + root = "/var/www/florida-drupalcamp-tailwind-css"; + url = "florida-drupalcamp-tailwind-css.oliverdavies.uk"; + } + + { + port = 8094; + root = "/var/www/luke"; + url = "luke.oliverdavies.uk"; + + extraConfig = '' + add_header X-Robots-Tag "noindex, nofollow"; + ''; + } + + { + port = 8085; + root = "/var/www/phpsw-sculpin-demo"; + url = "phpsw-sculpin-demo.oliverdavies.uk"; + } + + { + port = 8086; + root = "/var/www/rebuilding-acquia"; + url = "rebuilding-acquia.oliverdavies.uk"; + } + + { + port = 8087; + root = "/var/www/rebuilding-bartik"; + url = "rebuilding-bartik.oliverdavies.uk"; + } + + { + port = 8088; + root = "/var/www/rebuilding-bristol-js"; + url = "rebuilding-bristol-js.oliverdavies.uk"; + } + + { + port = 8089; + root = "/var/www/rebuilding-symfony"; + url = "rebuilding-symfony.oliverdavies.uk"; + } + + { + port = 8090; + root = "/var/www/tailwindcss-demo"; + url = "tailwindcss-demo.oliverdavies.uk"; + } + + { + port = 8091; + root = "/var/www/wp-tailwind"; + url = "wp-tailwind.oliverdavies.uk"; + } + + { + port = 8092; + root = "/var/www/zet"; + url = "zet.oliverdavies.uk"; + } + + { + port = 8093; + root = "/var/www/talking-drupal-tailwindcss"; + url = "talking-drupal-tailwindcss.oliverdavies.uk"; + } +] diff --git a/hosts/hetznix/services/caddy/vhosts/www.oliverdavies.uk-redirects.nix b/hosts/nixedo/modules/nginx/www.oliverdavies.uk-redirects.nix similarity index 100% rename from hosts/hetznix/services/caddy/vhosts/www.oliverdavies.uk-redirects.nix rename to hosts/nixedo/modules/nginx/www.oliverdavies.uk-redirects.nix diff --git a/hosts/nixedo/modules/nginx/www.oliverdavies.uk.nix b/hosts/nixedo/modules/nginx/www.oliverdavies.uk.nix new file mode 100644 index 00000000..28173837 --- /dev/null +++ b/hosts/nixedo/modules/nginx/www.oliverdavies.uk.nix @@ -0,0 +1,72 @@ +let + port = 8095; + + redirects = import ./www.oliverdavies.uk-redirects.nix; + + redirectLines = builtins.concatStringsSep "\n" ( + map (r: "rewrite ^${r.from}/?$ ${r.to} redirect;") redirects + ); + + tomePaths = [ + "core" + "sites/default/files" + "themes/custom/opdavies" + "tome-test" + ]; + + tomeLocations = builtins.listToAttrs ( + map (path: { + name = "/${path}"; + + value = { + root = "/var/www/website-tome"; + tryFiles = "$uri $uri.html $uri/index.html =404"; + }; + }) tomePaths + ); +in +{ + services = { + nginx.virtualHosts = { + "www.oliverdavies.uk" = { + root = "/var/www/website-sculpin"; + + listen = [ + { + inherit port; + + addr = "localhost"; + } + ]; + + locations = tomeLocations // { + "/".tryFiles = "$uri $uri.html $uri/index.html =404"; + }; + + extraConfig = '' + port_in_redirect off; + + # Remove trailing slashes. + rewrite ^/(.*)/$ /$1 permanent; + + error_page 404 /404; + + rewrite ^/talks/archive/?$ /talks permanent; + rewrite ^/talks/(.*)$ /presentations/$1 permanent; + rewrite ^/talks/?$ /presentations permanent; + + ${redirectLines} + ''; + }; + + "oliverdavies.uk".globalRedirect = "www.oliverdavies.uk"; + }; + + cloudflared.tunnels."e1514105-327f-4984-974e-e2fbaca76466" = { + ingress = { + "oliverdavies.uk" = "http://localhost:${toString port}"; + "www.oliverdavies.uk" = "http://localhost:${toString port}"; + }; + }; + }; +} diff --git a/hosts/nixedo/services.nix b/hosts/nixedo/services.nix index 273b8b2f..272c30d0 100644 --- a/hosts/nixedo/services.nix +++ b/hosts/nixedo/services.nix @@ -1,6 +1,5 @@ { services = { - caddy.enable = true; openssh.enable = true; }; }