1
0
Fork 0

Services: add Transmission

This commit is contained in:
Aires 2024-09-10 15:41:13 -04:00
parent 9d5c85fdb9
commit d87a31c999
4 changed files with 69 additions and 5 deletions

View file

@ -378,11 +378,11 @@
"secrets": {
"flake": false,
"locked": {
"lastModified": 1725817295,
"narHash": "sha256-Ttif3k1NMUesHDxieUrkqLyy8KO9kugXbatw9aP1d/Y=",
"lastModified": 1725996724,
"narHash": "sha256-/qG2amIN/cMpkCXAM1/ThYeJgEt4Ik+gv/YOkyVa0kg=",
"ref": "refs/heads/main",
"rev": "aa7b891f6e76ff86b28abd26d6073dfad723c99e",
"revCount": 70,
"rev": "9821d2162d2e2ee58ff65e12c986ef3a8f105058",
"revCount": 71,
"type": "git",
"url": "file:./secrets"
},

View file

@ -191,6 +191,11 @@ in
enable = true;
ports = [ config.secrets.hosts.dimaga.ssh.port ];
};
transmission = {
enable = false;
home = "${services-root}/transmission";
url = config.secrets.services.transmission.url;
};
virtualization.host = {
enable = true;
user = "aires";

View file

@ -0,0 +1,59 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.aux.system.services.transmission;
in
{
options = {
aux.system.services.transmission = {
enable = lib.mkEnableOption "Enables Transmission.";
home = lib.mkOption {
default = "/var/lib/transmission";
type = lib.types.str;
description = "Where to store Transmission's files";
};
url = lib.mkOption {
default = "";
type = lib.types.str;
description = "The complete URL where Transmission is hosted.";
example = "https://transmission.example.com";
};
};
};
config = lib.mkIf cfg.enable {
services = {
nginx.virtualHosts."${cfg.url}" = {
useACMEHost = pkgs.util.getDomainFromURL cfg.url;
forceSSL = true;
locations."/" = {
proxyPass = "http://127.0.0.1:9091";
extraConfig = ''
proxy_pass_header X-Transmission-Session-Id;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header X-Frame-Options SAMEORIGIN;
add_header Front-End-Https on;
'';
};
};
transmission = {
enable = true;
home = cfg.home;
};
};
systemd.services = {
transmission.unitConfig.RequiresMountsFor = cfg.home;
nginx.wants = [ config.systemd.services.transmission.name ];
};
};
}

@ -1 +1 @@
Subproject commit aa7b891f6e76ff86b28abd26d6073dfad723c99e
Subproject commit 9821d2162d2e2ee58ff65e12c986ef3a8f105058