nixpkgs/pkgs/applications/networking/syncthing/default.nix
Peter Hoeg 1026bebee6
syncthing: use service files from upstream
Currently only for the user services as NixOS handles the named system
instances slightly differently.

syncthing and syncthing-inotify are done the same way.

There are 4 parts to this:

 1) Copy in the upstream unit files
 2) Make the nixos module use the definition from upstream
 3) Enable restarting of all instances (system and user) on resume
 4) Allow the traffic in the firewall on default ports if wanted

fixes #18973
2016-10-19 21:20:57 +02:00

53 lines
1.6 KiB
Nix

{ stdenv, lib, fetchFromGitHub, go, pkgs }:
stdenv.mkDerivation rec {
version = "0.14.8";
name = "syncthing-${version}";
src = fetchFromGitHub {
owner = "syncthing";
repo = "syncthing";
rev = "v${version}";
sha256 = "0zhxgl6pgf60x99cappdfzk7h23g37hlanh72bwypx7pwbvhc91l";
};
buildInputs = [ go ];
buildPhase = ''
mkdir -p src/github.com/syncthing
ln -s $(pwd) src/github.com/syncthing/syncthing
export GOPATH=$(pwd)
# Syncthing's build.go script expects this working directory
cd src/github.com/syncthing/syncthing
go run build.go -no-upgrade -version v${version} install all
'';
installPhase = ''
mkdir -p $out/bin $out/etc/systemd/{system,user}
cp bin/* $out/bin
'' + lib.optionalString (stdenv.isLinux) ''
substitute etc/linux-systemd/system/syncthing-resume.service \
$out/etc/systemd/system/syncthing-resume.service \
--replace /usr/bin/pkill ${pkgs.procps}/bin/pkill
substitute etc/linux-systemd/system/syncthing@.service \
$out/etc/systemd/system/syncthing@.service \
--replace /usr/bin/syncthing $out/bin/syncthing
substitute etc/linux-systemd/user/syncthing.service \
$out/etc/systemd/user/syncthing.service \
--replace /usr/bin/syncthing $out/bin/syncthing
'';
meta = with stdenv.lib; {
homepage = https://www.syncthing.net/;
description = "Open Source Continuous File Synchronization";
license = stdenv.lib.licenses.mpl20;
maintainers = with stdenv.lib.maintainers; [ pshendry joko peterhoeg ];
platforms = stdenv.lib.platforms.unix;
};
}