Fully migrate to transmission
This commit is contained in:
parent
576da79ba7
commit
7c81f1eb6c
8 changed files with 45 additions and 102 deletions
|
@ -46,6 +46,7 @@
|
||||||
element.enable = true;
|
element.enable = true;
|
||||||
hledger.enable = true;
|
hledger.enable = true;
|
||||||
obs.enable = true;
|
obs.enable = true;
|
||||||
|
torrents.enable = true;
|
||||||
};
|
};
|
||||||
work.enable = true;
|
work.enable = true;
|
||||||
};
|
};
|
||||||
|
|
|
@ -40,11 +40,11 @@
|
||||||
graphical.enable = true;
|
graphical.enable = true;
|
||||||
programs = {
|
programs = {
|
||||||
calibre.enable = true;
|
calibre.enable = true;
|
||||||
deluge.enable = true;
|
|
||||||
eid.enable = true;
|
eid.enable = true;
|
||||||
element.enable = true;
|
element.enable = true;
|
||||||
hledger.enable = true;
|
hledger.enable = true;
|
||||||
obs.enable = true;
|
obs.enable = true;
|
||||||
|
torrents.enable = true;
|
||||||
};
|
};
|
||||||
# It's a pandemic.
|
# It's a pandemic.
|
||||||
work.enable = true;
|
work.enable = true;
|
||||||
|
|
|
@ -49,10 +49,7 @@
|
||||||
accentor.enable = true;
|
accentor.enable = true;
|
||||||
containers.externalInterface = "eno3";
|
containers.externalInterface = "eno3";
|
||||||
data-access.enable = true;
|
data-access.enable = true;
|
||||||
deluge = {
|
torrents.enable = true;
|
||||||
enable = true;
|
|
||||||
count = 6;
|
|
||||||
};
|
|
||||||
git.runner.enable = true;
|
git.runner.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,11 +3,11 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./calibre
|
./calibre
|
||||||
./deluge
|
|
||||||
./eid
|
./eid
|
||||||
./element
|
./element
|
||||||
./hledger
|
./hledger
|
||||||
./obs
|
./obs
|
||||||
|
./torrents
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.charlotte = { ... }: {
|
home-manager.users.charlotte = { ... }: {
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
options.chvp.programs.deluge.enable = lib.mkOption {
|
options.chvp.programs.torrents.enable = lib.mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
example = true;
|
example = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.chvp.programs.deluge.enable {
|
config = lib.mkIf config.chvp.programs.torrents.enable {
|
||||||
home-manager.users.charlotte = { pkgs, ... }: {
|
home-manager.users.charlotte = { pkgs, ... }: {
|
||||||
home.packages = with pkgs; [ transmission-remote-gtk ];
|
home.packages = with pkgs; [ transmission-remote-gtk ];
|
||||||
};
|
};
|
|
@ -5,7 +5,6 @@
|
||||||
./accentor
|
./accentor
|
||||||
./containers
|
./containers
|
||||||
./data-access
|
./data-access
|
||||||
./deluge
|
|
||||||
./garmin-scraper
|
./garmin-scraper
|
||||||
./git
|
./git
|
||||||
./grafana
|
./grafana
|
||||||
|
@ -15,6 +14,7 @@
|
||||||
./nextcloud
|
./nextcloud
|
||||||
./nginx
|
./nginx
|
||||||
./syncthing
|
./syncthing
|
||||||
|
./torrents
|
||||||
];
|
];
|
||||||
|
|
||||||
services.postgresql.package = pkgs.postgresql_15;
|
services.postgresql.package = pkgs.postgresql_15;
|
||||||
|
|
|
@ -1,93 +0,0 @@
|
||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
options.chvp.services.deluge = {
|
|
||||||
enable = lib.mkOption {
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
};
|
|
||||||
count = lib.mkOption {
|
|
||||||
default = 1;
|
|
||||||
example = 6;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.chvp.services.deluge.enable {
|
|
||||||
chvp.services.nginx.hosts = (builtins.genList
|
|
||||||
(n: {
|
|
||||||
fqdn = "del${toString (n + 1)}.vanpetegem.me";
|
|
||||||
basicProxy = "http://localhost:${toString (8112 + n)}";
|
|
||||||
})
|
|
||||||
config.chvp.services.deluge.count) ++ [
|
|
||||||
{ fqdn = "transmission.vanpetegem.me"; basicProxy = "http://localhost:9091"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
networking.firewall = {
|
|
||||||
allowedTCPPortRanges = [
|
|
||||||
{ from = 60000; to = 60000 + config.chvp.services.deluge.count - 1; }
|
|
||||||
{ from = 58846; to = 58846 + config.chvp.services.deluge.count - 1; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.transmission = {
|
|
||||||
enable = true;
|
|
||||||
user = "charlotte";
|
|
||||||
group = "users";
|
|
||||||
home = "/data/var/lib/transmission";
|
|
||||||
openRPCPort = true;
|
|
||||||
openPeerPorts = true;
|
|
||||||
credentialsFile = config.age.secrets."files/programs/transmission/config.json".path;
|
|
||||||
settings = {
|
|
||||||
umask = 18;
|
|
||||||
download-dir = "/srv/data";
|
|
||||||
rpc-authentication-required = true;
|
|
||||||
rpc-bind-address = "0.0.0.0";
|
|
||||||
rpc-enabled = true;
|
|
||||||
rpc-host-whitelist-enabled = false;
|
|
||||||
rpc-whitelist-enabled = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
age.secrets."files/programs/transmission/config.json" = {
|
|
||||||
file = ../../../secrets/files/programs/transmission/config.json.age;
|
|
||||||
owner = "charlotte";
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services = builtins.foldl' (x: y: x // y) { } (builtins.genList
|
|
||||||
(n:
|
|
||||||
let num = toString (n + 1); in
|
|
||||||
{
|
|
||||||
"del${num}" = {
|
|
||||||
after = [ "network-online.target" ];
|
|
||||||
requires = [ "network-online.target" ];
|
|
||||||
description = "Deluge daemon ${num}";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
path = [ pkgs.deluge ];
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = ''
|
|
||||||
${pkgs.deluge}/bin/deluged --do-not-daemonize --config /data/var/lib/deluge/del${toString (n + 1)}
|
|
||||||
'';
|
|
||||||
Restart = "on-success";
|
|
||||||
User = "charlotte";
|
|
||||||
Group = "users";
|
|
||||||
UMask = "022";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"del${num}-web" = {
|
|
||||||
after = [ "network.target" "del${num}.service" ];
|
|
||||||
requires = [ "del${num}.service" ];
|
|
||||||
description = "Deluge Web UI for daemon ${num}";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
path = [ pkgs.deluge ];
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = ''
|
|
||||||
${pkgs.deluge}/bin/deluge-web --do-not-daemonize --config /data/var/lib/deluge/del${toString (n + 1)} --port ${toString (8112 + n)}
|
|
||||||
'';
|
|
||||||
User = "charlotte";
|
|
||||||
Group = "users";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
config.chvp.services.deluge.count);
|
|
||||||
};
|
|
||||||
}
|
|
38
modules/services/torrents/default.nix
Normal file
38
modules/services/torrents/default.nix
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
options.chvp.services.torrents = {
|
||||||
|
enable = lib.mkOption {
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.chvp.services.torrents.enable {
|
||||||
|
chvp.services.nginx.hosts = [{ fqdn = "transmission.vanpetegem.me"; basicProxy = "http://localhost:9091"; }];
|
||||||
|
|
||||||
|
services.transmission = {
|
||||||
|
enable = true;
|
||||||
|
user = "charlotte";
|
||||||
|
group = "users";
|
||||||
|
home = "/data/var/lib/transmission";
|
||||||
|
openRPCPort = false;
|
||||||
|
openPeerPorts = true;
|
||||||
|
credentialsFile = config.age.secrets."files/programs/transmission/config.json".path;
|
||||||
|
settings = {
|
||||||
|
umask = 18;
|
||||||
|
download-dir = "/srv/data";
|
||||||
|
rpc-authentication-required = true;
|
||||||
|
rpc-bind-address = "0.0.0.0";
|
||||||
|
rpc-enabled = true;
|
||||||
|
rpc-host-whitelist-enabled = false;
|
||||||
|
rpc-whitelist-enabled = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
age.secrets."files/programs/transmission/config.json" = {
|
||||||
|
file = ../../../secrets/files/programs/transmission/config.json.age;
|
||||||
|
owner = "charlotte";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue