From 2c6fbdefad035963793b51fb24e5323b65cd33bf Mon Sep 17 00:00:00 2001 From: Joel Moberg Date: Wed, 15 Apr 2015 12:38:17 +0200 Subject: [PATCH 1/3] i2p: fix platform --- pkgs/tools/networking/i2p/default.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pkgs/tools/networking/i2p/default.nix b/pkgs/tools/networking/i2p/default.nix index 088e8e8de7fa..9f44a8d84a5e 100644 --- a/pkgs/tools/networking/i2p/default.nix +++ b/pkgs/tools/networking/i2p/default.nix @@ -1,8 +1,5 @@ { stdenv, procps, coreutils, fetchurl, openjdk8, ant, gcj, gettext }: -# TODO: support other systems, just copy appropriate lib/wrapper.. to $out -assert stdenv.system != "x86_64-linux"; - stdenv.mkDerivation rec { name = "i2p-0.9.18"; src = fetchurl { @@ -36,6 +33,7 @@ stdenv.mkDerivation rec { description = "Applications and router for I2P, anonymity over the Internet"; maintainers = [ stdenv.lib.maintainers.joelmo ]; licenses = licenses.gpl2; - platforms = platforms.linux; + # TODO: support other systems, just copy appropriate lib/wrapper.. to $out + platforms = [ "x86_64-linux" ]; }; } From 5b075eb400e738635ddbcb2fbf46980d595e9249 Mon Sep 17 00:00:00 2001 From: Joel Moberg Date: Wed, 15 Apr 2015 12:52:06 +0200 Subject: [PATCH 2/3] i2p: add nixos service --- nixos/modules/misc/ids.nix | 2 ++ nixos/modules/services/networking/i2p.nix | 42 +++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 nixos/modules/services/networking/i2p.nix diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix index 426518585520..312c24db98b9 100644 --- a/nixos/modules/misc/ids.nix +++ b/nixos/modules/misc/ids.nix @@ -215,6 +215,7 @@ mediatomb = 187; rdnssd = 188; ihaskell = 189; + i2p = 190; # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! @@ -407,6 +408,7 @@ mediatomb = 187; #rdnssd = 188; # unused ihaskell = 189; + i2p = 190; # When adding a gid, make sure it doesn't match an existing # uid. Users and groups with the same name should have equal diff --git a/nixos/modules/services/networking/i2p.nix b/nixos/modules/services/networking/i2p.nix new file mode 100644 index 000000000000..bad22c791388 --- /dev/null +++ b/nixos/modules/services/networking/i2p.nix @@ -0,0 +1,42 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.i2p; + homeDir = "/var/lib/i2p"; +in { + ###### interface + options.services.i2p = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + Enables i2p as a running service upon activation. + ''; + }; + }; + + ###### implementation + config = mkIf cfg.enable { + users.extraUsers.i2p = { + group = "i2p"; + description = "i2p User"; + home = homeDir; + createHome = true; + uid = config.ids.uids.i2p; + }; + users.extraGroups.i2p.gid = config.ids.gids.i2p; + systemd.services.i2p = { + description = "I2P router with administration interface for hidden services"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + User = "i2p"; + WorkingDirectory = homeDir; + Restart = "on-abort"; + ExecStart = "${pkgs.i2p}/bin/i2prouter-plain"; + }; + }; + }; +} From e82a94f81617444758c852ebc394a5548f5fb787 Mon Sep 17 00:00:00 2001 From: Joel Moberg Date: Wed, 15 Apr 2015 12:59:25 +0200 Subject: [PATCH 3/3] i2p: fix wrapper --- pkgs/tools/networking/i2p/default.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/networking/i2p/default.nix b/pkgs/tools/networking/i2p/default.nix index 9f44a8d84a5e..0a26aff83dd1 100644 --- a/pkgs/tools/networking/i2p/default.nix +++ b/pkgs/tools/networking/i2p/default.nix @@ -1,4 +1,4 @@ -{ stdenv, procps, coreutils, fetchurl, openjdk8, ant, gcj, gettext }: +{ stdenv, procps, coreutils, fetchurl, openjdk8, openjre, ant, gcj, gettext }: stdenv.mkDerivation rec { name = "i2p-0.9.18"; @@ -6,7 +6,7 @@ stdenv.mkDerivation rec { url = "https://github.com/i2p/i2p.i2p/archive/${name}.tar.gz"; sha256 = "1hahdzvfh1zqb8qdc59xbjpqm8qq95k2xx22mpnhcdh90lb6xqnl"; }; - buildInputs = [ openjdk8 ant gcj gettext ]; + buildInputs = [ openjdk8 ant gettext ]; buildPhase = '' export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8" ant preppkg-linux-only @@ -21,7 +21,8 @@ stdenv.mkDerivation rec { -e "s#/usr/ucb/ps#${procps}/bin/ps#" \ -e "s#/usr/bin/tr#${coreutils}/bin/tr#" \ -e 's#%USER_HOME#$HOME#' \ - -e "s#%SYSTEM_java_io_tmpdir#/tmp#" + -e "s#%SYSTEM_java_io_tmpdir#/tmp#" \ + -e 's#JAVA=java#JAVA=${openjre}/bin/java#' mv $out/runplain.sh $out/bin/i2prouter-plain mv $out/man $out/share/ chmod +x $out/bin/* $out/i2psvc