nginx init config

This commit is contained in:
Bryan Ramos 2026-03-12 02:29:56 -04:00
parent c10f28c977
commit a10ba82767
2 changed files with 33 additions and 83 deletions

View file

@ -4,17 +4,9 @@
imports = [ ../../modules ]; imports = [ ../../modules ];
# Modules disabled for base install modules.system = {
# modules = { nginx.enable = true;
# system = { };
# nginx.enable = true;
# forgejo.enable = true;
# bitcoin = {
# enable = true;
# electrum.enable = true;
# };
# };
# };
users.users = { users.users = {
${config.user.name} = { ${config.user.name} = {

View file

@ -3,87 +3,45 @@
with lib; with lib;
let let
cfg = config.modules.system.nginx; cfg = config.modules.system.nginx;
module = config.modules.system; domain = "ramos.codes";
in in
{ options.modules.system.nginx = { enable = mkEnableOption "Nginx Reverse Proxy"; }; {
config = mkIf cfg.enable { options.modules.system.nginx = {
users = { enable = mkEnableOption "Nginx Reverse Proxy";
users = {
"nginx" = {
description = "Web server system user";
isSystemUser = true;
group = mkForce "web";
};
"btc" = {
extraGroups = mkIf module.bitcoin.enable [
"web"
];
};
"git" = {
extraGroups = mkIf module.forgejo.enable [
"web"
];
};
};
groups = {
"web" = {
members = [
"nginx"
];
};
};
}; };
security.acme = config = mkIf cfg.enable {
let networking.firewall.allowedTCPPorts = [ 80 /* 443 */ ];
acmeDir = "/var/lib/acme";
in # security.acme = {
{ # acceptTerms = true;
acceptTerms = true; # defaults.email = config.user.email;
certs = { #
"ramos.codes" = { # certs."${domain}" = {
#webroot = "${acmeDir}/acme-challenge"; # domain = "*.${domain}";
directory = "${acmeDir}/ramos.codes"; # dnsProvider = "namecheap";
email = config.user.email; # environmentFile = "/var/lib/acme/namecheap.env";
group = "web"; # group = "nginx";
validMinDays = 90; # };
extraDomainNames = attrNames config.services.nginx.virtualHosts; # };
listenHTTP = ":80";
};
};
};
services.nginx = { services.nginx = {
enable = true; enable = true;
virtualHosts = # recommendedTlsSettings = true;
let recommendedOptimisation = true;
certPath = config.security.acme.certs."ramos.codes".directory; recommendedGzipSettings = true;
sslCertificate = "${certPath}/fullchain.pem";
sslCertificateKey = "${certPath}/key.pem";
withSSL = hosts: mapAttrs (name: hostConfig: hostConfig // { virtualHosts."test.${domain}" = {
inherit sslCertificate sslCertificateKey; # useACMEHost = domain;
forceSSL = true; # forceSSL = true;
}) hosts; locations."/" = {
return = "200 'nginx is working'";
in withSSL extraConfig = ''
{ add_header Content-Type text/plain;
"git.ramos.codes" = mkIf module.forgejo.enable { '';
locations = {
"/" = {
proxyPass = "http://unix:${config.services.forgejo.settings.server.HTTP_ADDR}";
}; };
}; };
}; };
#"btc.ramos.codes" = mkIf module.bitcoin.electrum.enable {
# locations = {
# "/" = {
# proxyPass = "";
# };
# };
#};
};
};
}; };
} }