diff --git a/nixos/modules/misc/ids.nix b/nixos/modules/misc/ids.nix
index 3bb7fdb9b2d..bf8365e3464 100644
--- a/nixos/modules/misc/ids.nix
+++ b/nixos/modules/misc/ids.nix
@@ -173,6 +173,7 @@
peerflix = 163;
chronos = 164;
gitlab = 165;
+ tox-bootstrapd = 166;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 1005e281f9b..2c52ebb37bc 100755
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -286,6 +286,7 @@
./services/networking/tcpcrypt.nix
./services/networking/teamspeak3.nix
./services/networking/tftpd.nix
+ ./services/networking/tox-bootstrapd.nix
./services/networking/unbound.nix
./services/networking/unifi.nix
./services/networking/vsftpd.nix
diff --git a/nixos/modules/services/networking/tox-bootstrapd.nix b/nixos/modules/services/networking/tox-bootstrapd.nix
new file mode 100644
index 00000000000..65aa87be44c
--- /dev/null
+++ b/nixos/modules/services/networking/tox-bootstrapd.nix
@@ -0,0 +1,80 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+ home = "/var/lib/tox-bootstrapd";
+ PIDFile = "${home}/pid";
+
+ pkg = pkgs.libtoxcore;
+ cfg = config.services.toxBootstrapd;
+ cfgFile = builtins.toFile "tox-bootstrapd.conf"
+ ''
+ port = ${toString cfg.port}
+ keys_file_path = "${home}/keys"
+ pid_file_path = "${PIDFile}"
+ ${cfg.extraConfig}
+ '';
+in
+{
+ options =
+ { services.toxBootstrapd =
+ { enable = mkOption {
+ type = types.bool;
+ default = false;
+ description =
+ ''
+ Whether to enable the Tox DHT boostrap daemon.
+ '';
+ };
+
+ port = mkOption {
+ type = types.int;
+ default = 33445;
+ description = "Listening port (UDP).";
+ };
+
+ keysFile = mkOption {
+ type = types.str;
+ default = "${home}/keys";
+ description = "Node key file.";
+ };
+
+ extraConfig = mkOption {
+ type = types.lines;
+ default = "";
+ description =
+ ''
+ Configuration for boostrap daemon.
+ See
+ and .
+ '';
+ };
+ };
+
+ };
+
+ config = mkIf config.services.toxBootstrapd.enable {
+
+ users.extraUsers = singleton
+ { name = "tox-bootstrapd";
+ uid = config.ids.uids.tox-bootstrapd;
+ description = "Tox bootstrap daemon user";
+ inherit home;
+ createHome = true;
+ };
+
+ systemd.services.tox-bootstrapd = {
+ description = "Tox DHT bootstrap daemon";
+ after = [ "network.target" ];
+ wantedBy = [ "multi-user.target" ];
+ serviceConfig =
+ { ExecStart = "${pkg}/bin/tox-bootstrapd ${cfgFile}";
+ Type = "forking";
+ inherit PIDFile;
+ User = "tox-bootstrapd";
+ };
+ };
+
+ };
+}
diff --git a/pkgs/development/libraries/libtoxcore/default.nix b/pkgs/development/libraries/libtoxcore/default.nix
index d569cf28c37..de224f6b613 100644
--- a/pkgs/development/libraries/libtoxcore/default.nix
+++ b/pkgs/development/libraries/libtoxcore/default.nix
@@ -1,17 +1,18 @@
-{ stdenv, fetchurl, autoconf, libtool, automake, libsodium, ncurses, libopus
+{ stdenv, fetchFromGitHub, autoconf, libtool, automake, libsodium, ncurses, libopus
, libvpx, check, libconfig, pkgconfig }:
let
version = "f6b3e6e8fe98d2457827ac6da944e715f008a08a";
- date = "20141203";
+ date = "20141219";
in
stdenv.mkDerivation rec {
- name = "tox-core-${date}-${version}";
+ name = "tox-core-${date}-${builtins.substring 0 7 version}";
- src = fetchurl {
- url = "https://github.com/irungentoo/toxcore/tarball/${version}";
- name = "${name}.tar.gz";
- sha256 = "1zsx7saqs25vva3pp0bw31yqzrn40fx84w42ig6fiv723k9gpdzy";
+ src = fetchFromGitHub {
+ owner = "irungentoo";
+ repo = "toxcore";
+ rev = version;
+ sha256 = "1wd817kix3zjyzzb68jz02iir3z4y5k5p40dgl7a29757yb9m608";
};
NIX_LDFLAGS = "-lgcc_s";
@@ -33,6 +34,7 @@ stdenv.mkDerivation rec {
"--with-libsodium-headers=${libsodium}/include"
"--with-libsodium-libs=${libsodium}/lib"
"--enable-ntox"
+ "--enable-daemon"
];
buildInputs = [