Files
dotfiles/hosts/remilia/services.nix
2025-09-04 16:35:31 +05:30

118 lines
2.8 KiB
Nix

{
config,
pkgs,
lib,
conf,
...
}:
let
domain = conf.network.addresses.domain.natto;
in
{
services = {
cron.enable = true;
openssh = {
enable = true;
settings.PermitRootLogin = "yes";
ports = [
22
22002
];
};
nginx = {
enable = true;
clientMaxBodySize = "512m";
package = pkgs.nginx.override {
withMail = true;
};
appendHttpConfig = ''
map $uri $expires {
default off;
~\.(jpg|jpeg|png|gif|ico)$ 30d;
}
'';
virtualHosts =
let
genericHttpRProxy =
{
addr,
ssl ? true,
conf ? "",
}:
{
enableACME = ssl;
# addSSL = ssl;
forceSSL = ssl;
locations."/" = {
proxyPass = toString addr;
extraConfig = ''
expires $expires;
proxy_set_header Host $host;
''
+ conf;
};
};
in
with conf.network.addresses.wireguard.ips;
{
"${domain}" = {
addSSL = true;
enableACME = true;
locations."/" = {
root = "/var/lib/site";
index = "index.html";
};
serverAliases = [ "www.${domain}" ];
};
# MPD server
"radio.${domain}" = genericHttpRProxy { addr = "http://${satori}:8001"; };
# Some random music server I once had
/*
"radio.${domain}" = {
addSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${satori}:7590";
extraConfig = ''
expires $expires;
proxy_set_header Host $host;
'';
};
locations."= /".return = "301 /radio";
};
*/
# Gitea
/*
"git.${domain}" = genericHttpRProxy {
addr = "http://${marisa}:5001";
conf = "client_max_body_size 64M;";
};
*/
# Personal filehost
# "f.${domain}" = genericHttpRProxy { addr = "http://${marisa}:8000"; };
# Hashicorp Vault
# "vault.${domain}" = genericHttpRProxy { addr = "https://${marisa}:8800"; };
# Hashicorp Consul
# "consul.${domain}" = genericHttpRProxy { addr = "http://${marisa}:8500"; };
# Hashicorp Nomad
/*
"nomad.${domain}" = genericHttpRProxy {
addr = "http://${marisa}:4646";
conf = ''
proxy_buffering off;
proxy_read_timeout 310s;
'';
};
*/
};
};
};
}