diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index b0c4e245e52c..790dd48b95ee 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -711,6 +711,15 @@ githubId = 20405311; name = "Aksh Gupta"; }; + al3xtjames = { + email = "nix@alextjam.es"; + github = "al3xtjames"; + githubId = 5672538; + name = "Alex James"; + keys = [{ + fingerprint = "F354 FFAB EA89 A49D 33ED 2590 4729 B829 AC5F CC72"; + }]; + }; alanpearce = { email = "alan@alanpearce.eu"; github = "alanpearce"; diff --git a/nixos/modules/services/torrent/transmission.nix b/nixos/modules/services/torrent/transmission.nix index 94919509ce17..497297ba693a 100644 --- a/nixos/modules/services/torrent/transmission.nix +++ b/nixos/modules/services/torrent/transmission.nix @@ -251,6 +251,20 @@ in For instance, SSH sessions may time out more easily. ''; }; + + webHome = mkOption { + type = types.nullOr types.path; + default = null; + example = "pkgs.flood-for-transmission"; + description = lib.mdDoc '' + If not `null`, sets the value of the `TRANSMISSION_WEB_HOME` + environment variable used by the service. Useful for overriding + the web interface files, without overriding the transmission + package and thus requiring rebuilding it locally. Use this if + you want to use an alternative web interface, such as + `pkgs.flood-for-transmission`. + ''; + }; }; }; @@ -280,6 +294,7 @@ in requires = optional apparmor.enable "apparmor.service"; wantedBy = [ "multi-user.target" ]; environment.CURL_CA_BUNDLE = etc."ssl/certs/ca-certificates.crt".source; + environment.TRANSMISSION_WEB_HOME = lib.optionalString (cfg.webHome != null) cfg.webHome; serviceConfig = { # Use "+" because credentialsFile may not be accessible to User= or Group=. @@ -492,6 +507,10 @@ in # https://gitlab.com/apparmor/apparmor/-/wikis/AppArmorStacking#seccomp-and-no_new_privs px ${cfg.settings.script-torrent-done-filename} -> &@{dirs}, ''} + + ${optionalString (cfg.webHome != null) '' + r ${cfg.webHome}/**, + ''} ''; }; diff --git a/pkgs/applications/networking/p2p/flood-for-transmission/default.nix b/pkgs/applications/networking/p2p/flood-for-transmission/default.nix new file mode 100644 index 000000000000..1de4e05c6cfc --- /dev/null +++ b/pkgs/applications/networking/p2p/flood-for-transmission/default.nix @@ -0,0 +1,37 @@ +# To use this package, use: `services.transmission.webHome = pkgs.flood-for-transmission;` +{ lib +, buildNpmPackage +, fetchFromGitHub +}: + +buildNpmPackage rec { + pname = "flood-for-transmission"; + version = "2023-11-17T12-46-13"; + + src = fetchFromGitHub { + owner = "johman10"; + repo = pname; + rev = version; + hash = "sha256-TaLWhly/4hOigWY1XP7FmgN4LbrdLb79NQ47z5JiiYE="; + }; + + npmDepsHash = "sha256-PCeknfS81K8ttU4hV2D841tgQsGfIVaAOVIEDXe8fVQ="; + + npmInstallFlags = [ "--legacy-peer-deps" ]; + + installPhase = '' + runHook preInstall + + cp -r public $out + + runHook postInstall + ''; + + meta = with lib; { + description = "A Flood clone for Transmission"; + homepage = "https://github.com/johman10/flood-for-transmission"; + maintainers = with maintainers; [ al3xtjames ]; + license = licenses.gpl3Only; + platforms = platforms.all; + }; +} diff --git a/pkgs/applications/networking/p2p/transmission/4.nix b/pkgs/applications/networking/p2p/transmission/4.nix index aa1f7f50daf8..9e0a1d69ef21 100644 --- a/pkgs/applications/networking/p2p/transmission/4.nix +++ b/pkgs/applications/networking/p2p/transmission/4.nix @@ -35,7 +35,6 @@ , enableCli ? true , installLib ? false , apparmorRulesFromClosure -, extraAppArmorPaths ? [] }: stdenv.mkDerivation (finalAttrs: { @@ -136,7 +135,6 @@ stdenv.mkDerivation (finalAttrs: { rwk /tmp/tr_session_id_*, r $out/share/transmission/public_html/**, - ${lib.strings.concatMapStrings (x: "r ${x},\n") extraAppArmorPaths} include } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5ba31c6d6db2..a24f6037805b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3864,6 +3864,8 @@ with pkgs; flood = callPackage ../applications/networking/p2p/flood { }; + flood-for-transmission = callPackage ../applications/networking/p2p/flood-for-transmission { }; + font-config-info = callPackage ../tools/misc/font-config-info { }; foxdot = with python3Packages; toPythonApplication foxdot;