syncthing: new package and nixos module
This commit is contained in:
parent
8b5c617237
commit
7df1ce5088
@ -198,6 +198,7 @@
|
||||
./services/networking/sabnzbd.nix
|
||||
./services/networking/searx.nix
|
||||
./services/networking/supybot.nix
|
||||
./services/networking/syncthing.nix
|
||||
./services/networking/ssh/lshd.nix
|
||||
./services/networking/ssh/sshd.nix
|
||||
./services/networking/tftpd.nix
|
||||
|
73
nixos/modules/services/networking/syncthing.nix
Normal file
73
nixos/modules/services/networking/syncthing.nix
Normal file
@ -0,0 +1,73 @@
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
with pkgs.lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.syncthing;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.syncthing = {
|
||||
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable the Syncthing, self-hosted open-source alternative
|
||||
to Dropbox and BittorrentSync. Initial interface will be
|
||||
available on http://127.0.0.1:8080/.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
default = "syncthing";
|
||||
description = ''
|
||||
Syncthing will be run under this user (user must exist,
|
||||
this can be your user name).
|
||||
'';
|
||||
};
|
||||
|
||||
dataDir = mkOption {
|
||||
default = "/var/lib/syncthing";
|
||||
description = ''
|
||||
Path where the `.syncthing` (settings and keys) and `Sync`
|
||||
(your synced files) directories will exist. This can be your home
|
||||
directory.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.services.syncthing.enable {
|
||||
|
||||
systemd.services.syncthing =
|
||||
{
|
||||
description = "Syncthing service";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
environment.STNORESTART = "placeholder"; # do not self-restart
|
||||
environment.HOME = "${config.services.syncthing.dataDir}";
|
||||
serviceConfig = {
|
||||
User = "${config.services.syncthing.user}";
|
||||
ExecStart = "${pkgs.syncthing}/bin/syncthing -home=${config.services.syncthing.dataDir}/.syncthing";
|
||||
Restart = "always";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.syncthing ];
|
||||
|
||||
};
|
||||
|
||||
}
|
51
pkgs/applications/networking/syncthing/default.nix
Normal file
51
pkgs/applications/networking/syncthing/default.nix
Normal file
@ -0,0 +1,51 @@
|
||||
{ stdenv, fetchurl, fetchgit, go }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "syncthing-${version}";
|
||||
version = "0.7.1";
|
||||
|
||||
src = fetchgit {
|
||||
url = "git://github.com/calmh/syncthing.git";
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "1rja837kimiq15km8cridbm5yxvkm6mkvkwywdi76qf9rm0pcjl1";
|
||||
};
|
||||
|
||||
buildInputs = [ go ];
|
||||
|
||||
buildPhase = ''
|
||||
mkdir -p "./dependencies/src/github.com/calmh/syncthing"
|
||||
|
||||
cp -r "./auto" "./dependencies/src/github.com/calmh/syncthing"
|
||||
cp -r "./buffers" "./dependencies/src/github.com/calmh/syncthing"
|
||||
cp -r "./cid" "./dependencies/src/github.com/calmh/syncthing"
|
||||
cp -r "./discover" "./dependencies/src/github.com/calmh/syncthing"
|
||||
cp -r "./files" "./dependencies/src/github.com/calmh/syncthing"
|
||||
cp -r "./lamport" "./dependencies/src/github.com/calmh/syncthing"
|
||||
cp -r "./protocol" "./dependencies/src/github.com/calmh/syncthing"
|
||||
cp -r "./scanner" "./dependencies/src/github.com/calmh/syncthing"
|
||||
cp -r "./mc" "./dependencies/src/github.com/calmh/syncthing"
|
||||
cp -r "./xdr" "./dependencies/src/github.com/calmh/syncthing"
|
||||
|
||||
export GOPATH="`pwd`/Godeps/_workspace:`pwd`/dependencies"
|
||||
|
||||
go test -cpu=1,2,4 ./...
|
||||
|
||||
mkdir ./bin
|
||||
|
||||
go build -o ./bin/syncthing -ldflags "-w -X main.Version v${version}" ./cmd/syncthing
|
||||
go build -o ./bin/stcli -ldflags "-w -X main.Version v${version}" ./cmd/stcli
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
ensureDir $out/bin
|
||||
cp -r ./bin $out
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = http://syncthing.net/;
|
||||
description = "Syncthing replaces Dropbox and BitTorrent Sync with something open, trustworthy and decentralized";
|
||||
license = with stdenv.lib.licenses; mit;
|
||||
maintainers = with stdenv.lib.maintainers; [ matejc ];
|
||||
platforms = with stdenv.lib.platforms; linux;
|
||||
};
|
||||
}
|
@ -9111,6 +9111,8 @@ let
|
||||
gpgSupport = true;
|
||||
};
|
||||
|
||||
syncthing = callPackage ../applications/networking/syncthing { };
|
||||
|
||||
# linux only by now
|
||||
synergy = callPackage ../applications/misc/synergy { };
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user