Skip to content

Commit

Permalink
Working on cross-seed and updated the thanks
Browse files Browse the repository at this point in the history
  • Loading branch information
rasmus-kirk committed Feb 29, 2024
1 parent 068a99c commit b37650d
Show file tree
Hide file tree
Showing 5 changed files with 196 additions and 19 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -238,8 +238,8 @@ you. However, this also means that you don't have to give _any_ personal data.
## Thanks

A big thanks to [Maroka-chan](https://github.com/Maroka-chan) for the heavy
lifting on the VPN-submodule, that was integral to making this project
possible.
lifting on the [VPN-submodule](https://github.com/Maroka-chan/VPN-Confinement),
that was integral to making this project possible.

I would also like to thank [Lasse](https://github.com/lassebomh) for helping
out with the website.
8 changes: 4 additions & 4 deletions mkDocs.nix
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ in
pandoc \
--standalone \
--highlight-style docs/pandoc/gruvbox.theme \
--metadata title="Nixarr - Option Documentation" \
--template docs/pandoc/template.html \
--metadata date="$(date -u '+%Y-%m-%d - %H:%M:%S %Z')" \
--highlight-style docs/pandoc/gruvbox.theme \
--template docs/pandoc/template.html \
--css docs/pandoc/style.css \
--lua-filter docs/pandoc/lua/anchor-links.lua \
--lua-filter docs/pandoc/lua/code-default-to-nix.lua \
Expand All @@ -56,11 +56,11 @@ in
"$tmpdir"/nixos.md
pandoc \
--metadata title="Nixarr" \
--metadata date="$(date -u '+%Y-%m-%d - %H:%M:%S %Z')" \
--standalone \
--highlight-style docs/pandoc/gruvbox.theme \
--template docs/pandoc/template.html \
--metadata date="$(date -u '+%Y-%m-%d - %H:%M:%S %Z')" \
--metadata title="Nixarr" \
--css docs/pandoc/style.css \
-V lang=en \
-V --mathjax \
Expand Down
75 changes: 75 additions & 0 deletions nixarr/transmission/cross-seed/default.nix
Original file line number Diff line number Diff line change
@@ -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") {};
};
}
53 changes: 40 additions & 13 deletions nixarr/transmission/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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.
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 ¯\\_(ツ)_/¯.
'';
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 ¯\\_(ツ)_/¯.
'';
};
cross-seed = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Enable the cross-seed service.
'';
};
};
};

messageLevel = mkOption {
Expand Down Expand Up @@ -94,6 +105,10 @@ in {
};
};

imports = [
./cross-seed
];

config = mkIf cfg.enable {
assertions = [
{
Expand All @@ -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 = [
Expand Down Expand Up @@ -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
Expand All @@ -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 = [
{
Expand Down
75 changes: 75 additions & 0 deletions pkgs/cross-seed/default.nix
Original file line number Diff line number Diff line change
@@ -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.json";
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") {};
};
}

0 comments on commit b37650d

Please sign in to comment.