diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 6bfd3a29a76..57afda9f93e 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -54,6 +54,7 @@ copumpkin = "Dan Peebles "; coroa = "Jonas Hörsch "; cstrahan = "Charles Strahan "; + cwoac = "Oliver Matthews "; DamienCassou = "Damien Cassou "; davidrusu = "David Rusu "; dbohdan = "Danyil Bohdan "; diff --git a/nixos/modules/services/networking/btsync.nix b/nixos/modules/services/networking/btsync.nix index 34bddf90873..0bfd3b74348 100644 --- a/nixos/modules/services/networking/btsync.nix +++ b/nixos/modules/services/networking/btsync.nix @@ -4,6 +4,9 @@ with lib; let cfg = config.services.btsync; + + bittorrentSync = cfg.package; + listenAddr = cfg.httpListenAddr + ":" + (toString cfg.httpListenPort); boolStr = x: if x then "true" else "false"; @@ -57,7 +60,7 @@ let '' { "device_name": "${cfg.deviceName}", - "storage_path": "/var/lib/btsync/", + "storage_path": "${cfg.storagePath}", "listening_port": ${toString cfg.listeningPort}, "use_gui": false, @@ -195,6 +198,24 @@ in ''; }; + package = mkOption { + type = types.package; + default = pkgs.bittorrentSync14; + example = literalExample "pkgs.bittorrentSync20"; + description = '' + Branch of bittorrent sync to use. + ''; + }; + + storagePath = mkOption { + type = types.path; + default = "/var/lib/btsync"; + example = "/var/lib/btsync"; + description = '' + Where to store the bittorrent sync files. + ''; + }; + apiKey = mkOption { type = types.str; default = ""; @@ -258,7 +279,7 @@ in users.extraUsers.btsync = { description = "Bittorrent Sync Service user"; - home = "/var/lib/btsync"; + home = cfg.storagePath; createHome = true; uid = config.ids.uids.btsync; group = "btsync"; @@ -292,6 +313,6 @@ in }; }; - environment.systemPackages = [ pkgs.bittorrentSync ]; + environment.systemPackages = [ cfg.package ]; }; } diff --git a/pkgs/applications/networking/bittorrentsync/default.nix b/pkgs/applications/networking/bittorrentsync/1.4.x.nix similarity index 100% rename from pkgs/applications/networking/bittorrentsync/default.nix rename to pkgs/applications/networking/bittorrentsync/1.4.x.nix diff --git a/pkgs/applications/networking/bittorrentsync/2.0.x.nix b/pkgs/applications/networking/bittorrentsync/2.0.x.nix new file mode 100644 index 00000000000..9a7c07c322e --- /dev/null +++ b/pkgs/applications/networking/bittorrentsync/2.0.x.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, patchelf }: + +let + arch = if stdenv.system == "x86_64-linux" then "x64" + else if stdenv.system == "i686-linux" then "i386" + else throw "Bittorrent Sync for: ${stdenv.system} not supported!"; + + sha256 = if stdenv.system == "x86_64-linux" then "cbce76f73f47c23d9073644504fa454976629450d008354bd8faef1bddf368fd" + else if stdenv.system == "i686-linux" then "d3e8583c8a54cbeb34ea3621daf0498316a959d944b30f24aa4e518a851ecdeb" + else throw "Bittorrent Sync for: ${stdenv.system} not supported!"; + + libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.libc ]; +in +stdenv.mkDerivation rec { + name = "btsync-${version}"; + version = "2.0.93"; + + src = fetchurl { + url = "http://syncapp.bittorrent.com/${version}/btsync_${arch}-${version}.tar.gz"; + inherit sha256; + }; + + dontStrip = true; # Don't strip, otherwise patching the rpaths breaks + sourceRoot = "."; + buildInputs = [ patchelf ]; + + installPhase = '' + mkdir -p "$out/bin/" + cp -r "btsync" "$out/bin/" + + patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath ${libPath} "$out/bin/btsync" + ''; + + meta = { + description = "Automatically sync files via secure, distributed technology"; + homepage = "http://www.bittorrent.com/sync"; + license = stdenv.lib.licenses.unfreeRedistributable; + platforms = stdenv.lib.platforms.linux; + maintainers = with stdenv.lib.maintainers; [ iElectric thoughtpolice cwoac ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1ff198df265..93eadeb1905 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -11767,7 +11767,9 @@ let sxiv = callPackage ../applications/graphics/sxiv { }; - bittorrentSync = callPackage ../applications/networking/bittorrentsync { }; + bittorrentSync = bittorrentSync14; + bittorrentSync14 = callPackage ../applications/networking/bittorrentsync/1.4.x.nix { }; + bittorrentSync20 = callPackage ../applications/networking/bittorrentsync/2.0.x.nix { }; copy-com = callPackage ../applications/networking/copy-com { };