This commit is contained in:
Bryan Ramos 2025-07-06 01:02:30 -04:00
parent 1d99368b0a
commit 433dac83d8
Signed by: bryan
GPG key ID: 6ABDCD144D6643C8
3 changed files with 24 additions and 18 deletions

View file

@ -7,11 +7,6 @@ let
home = "/var/lib/bitcoind"; home = "/var/lib/bitcoind";
bitcoinConf = pkgs.writeTextFile {
name = "bitcoin.conf";
text = builtins.readFile ./config/bitcoin.conf;
};
in in
{ options.modules.system.bitcoin = { enable = mkEnableOption "Bitcoin Server"; }; { options.modules.system.bitcoin = { enable = mkEnableOption "Bitcoin Server"; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -36,7 +31,7 @@ in
group = "bitcoin"; group = "bitcoin";
createHome = true; createHome = true;
}; };
"nginx" = { "${config.services.nginx.user}" = {
extraGroups = mkIf nginx.enable [ extraGroups = mkIf nginx.enable [
"bitcoin" "bitcoin"
]; ];
@ -60,7 +55,7 @@ in
enable = true; enable = true;
user = "btc"; user = "btc";
group = "bitcoin"; group = "bitcoin";
configFile = bitcoinConf; configFile = ./config/bitcoin.conf;
dataDir = home; dataDir = home;
pidFile = "${home}/bitcoind.pid"; pidFile = "${home}/bitcoind.pid";
}; };

View file

@ -37,7 +37,7 @@ in
services.forgejo = rec { services.forgejo = rec {
enable = true; enable = true;
user = "git"; user = "git";
group = user; group = "git";
stateDir = "/var/lib/forgejo"; stateDir = "/var/lib/forgejo";
settings = { settings = {
@ -45,15 +45,24 @@ in
PROTOCOL = "http+unix"; PROTOCOL = "http+unix";
DOMAIN = "127.0.0.1"; DOMAIN = "127.0.0.1";
HTTP_ADDR = "/run/forgejo/forgejo.sock"; HTTP_ADDR = "/run/forgejo/forgejo.sock";
ROOT_URL = "https://git.ramos.codes";
}; };
}; };
database = { database = {
name = "git";
inherit user; inherit user;
type = "sqlite3"; type = "sqlite3";
path = "${stateDir}/data/forgejo.db"; path = "${stateDir}/data/forgejo.db";
createDatabase = true; createDatabase = true;
}; };
dump = {
enable = true;
file = "git.bkup";
type = "tar.gz";
interval = "weekly";
};
}; };
}; };
} }

View file

@ -4,6 +4,7 @@ with lib;
let let
cfg = config.modules.system.nginx; cfg = config.modules.system.nginx;
module = config.modules.system; module = config.modules.system;
forgejo = config.services.forgejo;
in in
{ options.modules.system.nginx = { enable = mkEnableOption "Nginx Reverse Proxy"; }; { options.modules.system.nginx = { enable = mkEnableOption "Nginx Reverse Proxy"; };
@ -14,13 +15,16 @@ in
description = "Web server system user"; description = "Web server system user";
isSystemUser = true; isSystemUser = true;
group = mkForce "${config.services.nginx.group}"; group = mkForce "${config.services.nginx.group}";
extraGroups = [
"${config.security.acme.defaults.group}"
];
}; };
"btc" = { "btc" = {
extraGroups = mkIf module.bitcoin.enable [ extraGroups = mkIf module.bitcoin.enable [
"${config.services.nginx.group}" "${config.services.nginx.group}"
]; ];
}; };
"${config.services.forgejo.user}" = { "${forgejo.user}" = {
extraGroups = mkIf module.forgejo.enable [ extraGroups = mkIf module.forgejo.enable [
"${config.services.nginx.group}" "${config.services.nginx.group}"
]; ];
@ -36,18 +40,14 @@ in
}; };
security.acme = security.acme =
let
acmeDir = "/var/lib/acme";
in
{ {
acceptTerms = true; acceptTerms = true;
defaults = {
email = "${config.user.email}";
validMinDays = 90;
};
certs = { certs = {
"ramos.codes" = { "ramos.codes" = {
#webroot = "${acmeDir}/acme-challenge";
directory = "${acmeDir}/ramos.codes";
email = config.user.email;
group = "web";
validMinDays = 90;
extraDomainNames = attrNames config.services.nginx.virtualHosts; extraDomainNames = attrNames config.services.nginx.virtualHosts;
listenHTTP = ":80"; listenHTTP = ":80";
}; };
@ -58,6 +58,8 @@ in
enable = true; enable = true;
user = "nginx"; user = "nginx";
group = "web"; group = "web";
recommendedProxySettings = true;
recommendedTlsSettings = true;
virtualHosts = virtualHosts =
let let
@ -74,7 +76,7 @@ in
"git.ramos.codes" = mkIf module.forgejo.enable { "git.ramos.codes" = mkIf module.forgejo.enable {
locations = { locations = {
"/" = { "/" = {
proxyPass = "http://unix:${config.services.forgejo.settings.server.HTTP_ADDR}"; proxyPass = "http://unix:${forgejo.settings.server.HTTP_ADDR}";
}; };
}; };
}; };