Working on cross-seed and updated the thanks

This commit is contained in:
rasmus-kirk
2024-02-29 12:27:36 +01:00
parent 068a99ce60
commit b37650d2c7
5 changed files with 195 additions and 18 deletions
@@ -0,0 +1,75 @@
{
config,
pkgs,
lib,
...
}:
with lib; let
cfg = config.util-nixarr.services.prowlarr;
#settingsFormat = pkgs.formats.json {};
#settingsFile = settingsFormat.generate "settings.json" cfg.settings;
cross-seedPkg = import ../../../pkgs/cross-seed { inherit (pkgs) stdenv lib fetchFromGitHub; };
in {
options = {
util-nixarr.services.prowlarr = {
enable = mkEnableOption "cross-seed";
configFile = mkOption {
type = with types; nullOr path;
default = null;
example = "/var/lib/secrets/cross-seed/settings.js";
description = "";
};
dataDir = mkOption {
type = types.path;
default = "/var/lib/cross-seed";
};
user = mkOption {
type = types.str;
default = "cross-seed";
description = "User account under which cross-seed runs.";
};
group = mkOption {
type = types.str;
default = "cross-seed";
description = "Group under which cross-seed runs.";
};
};
};
config = mkIf cfg.enable {
systemd.tmpfiles.rules = [
"d '${cfg.dataDir}' 0700 ${cfg.user} ${cfg.group} - -"
];
systemd.services.prowlarr = {
description = "cross-seed";
after = ["network.target"];
wantedBy = ["multi-user.target"];
environment.CONFIG_DIR = cfg.dataDir;
serviceConfig = {
ExecStartPre = [("+" + pkgs.writeShellScript "transmission-prestart" ''
mv ${cfg.configFile} ${cfg.dataDir}
'')];
Type = "simple";
User = cfg.user;
Group = cfg.group;
ExecStart = "${getExe cross-seedPkg} daemon";
Restart = "on-failure";
};
};
users.users = mkIf (cfg.user == "cross-seed") {
cross-seed = {
group = cfg.group;
};
};
users.groups = mkIf (cfg.group == "cross-seed") {};
};
}
+39 -12
View File
@@ -41,18 +41,29 @@ in {
flood.enable = mkEnableOption "the flood web-UI for the transmission web-UI.";
privateTrackers = mkOption {
type = types.bool;
default = false;
description = ''
Disable pex and dht, which is required for some private trackers.
privateTrackers = {
disableDhtPex = mkOption {
type = types.bool;
default = false;
description = ''
Disable pex and dht, which is required for some private trackers.
You don't want to enable this unless a private tracker requires you
to, and some don't. All torrents from private trackers are set as
"private", and this automatically disables dht and pex for that torrent,
so it shouldn't even be a necessary rule to have, but I don't make
their rules ¯\\_()_/¯.
'';
You don't want to enable this unless a private tracker requires you
to, and some don't. All torrents from private trackers are set as
"private", and this automatically disables dht and pex for that torrent,
so it shouldn't even be a necessary rule to have, but I don't make
their rules ¯\\_()_/¯.
'';
};
cross-seed = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable the cross-seed service.
'';
};
};
};
messageLevel = mkOption {
@@ -94,6 +105,10 @@ in {
};
};
imports = [
./cross-seed
];
config = mkIf cfg.enable {
assertions = [
{
@@ -103,6 +118,12 @@ in {
nixarr.vpn.enable option to be set, but it was not.
'';
}
{
assertion = cfg.privateTrackers.cross-seed.enable -> nixarr.prowlarr.enable;
message = ''
TODO: todo
'';
}
];
systemd.tmpfiles.rules = [
@@ -150,7 +171,6 @@ in {
anti-brute-force-enabled = true;
anti-brute-force-threshold = 10;
# 0 = None, 1 = Critical, 2 = Error, 3 = Warn, 4 = Info, 5 = Debug, 6 = Trace
message-level =
if cfg.messageLevel == "none"
then 0
@@ -171,6 +191,13 @@ in {
// cfg.extraConfig;
};
services.cross-seed = mkIf cfg.cross-seed.enable {
enable = true;
group = "media";
dataDir = cfg.privateTrackers.cross-seed.dataDir;
configFile = cfg.privateTrackers.cross-seed.configFile;
};
util-nixarr.vpnnamespace = mkIf cfg.vpn.enable {
portMappings = [
{