ca9932abe5
I am deeply saddened at the fact that I need to do this. I have no interest in re-litigating everything that has happened over the past weeks and months, but I want to make my position(s) extremely clear: The thought of any of my work contributing to someone's death by drone makes me feel physically ill. Recent communications from senior members of the NixOS community have made it clear that leadership is unaware or uninterested in the basics of how to run and moderate a community in a way that is resilient to bad actors. The recent post by @edolstra is tone-deaf and gives me no confidence that the Nix/NixOS community is a place that I want to remain involved in going forward. I am thus choosing to remove myself from such a community. I also hereby resign from the ACME team. See also: #307033 Signed-off-by: Andrew Dunham <andrew@du.nham.ca>
125 lines
3.7 KiB
Nix
125 lines
3.7 KiB
Nix
{ pkgsBuildBuild
|
|
, go
|
|
, buildGoModule
|
|
, stdenv
|
|
, lib
|
|
, procps
|
|
, fetchFromGitHub
|
|
, nixosTests
|
|
, autoSignDarwinBinariesHook
|
|
}:
|
|
|
|
let
|
|
common = { stname, target, postInstall ? "" }:
|
|
buildGoModule rec {
|
|
pname = stname;
|
|
version = "1.27.6";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "syncthing";
|
|
repo = "syncthing";
|
|
rev = "v${version}";
|
|
hash = "sha256-BZAje6dA3wmJ6feHWIYPPYTA3sp1WGwl4MjUJS7iZCo=";
|
|
};
|
|
|
|
vendorHash = "sha256-xVSSFFTqU7jww8YTeXKfa3096c2FmEgkcXvuqFHb12E=";
|
|
|
|
nativeBuildInputs = lib.optionals stdenv.isDarwin [
|
|
# Recent versions of macOS seem to require binaries to be signed when
|
|
# run from Launch Agents/Daemons, even on x86 devices where it has a
|
|
# more lax code signing policy compared to Apple Silicon. So just sign
|
|
# the binaries on both architectures to make it possible for launchd to
|
|
# auto-start Syncthing at login.
|
|
autoSignDarwinBinariesHook
|
|
];
|
|
|
|
doCheck = false;
|
|
|
|
BUILD_USER = "nix";
|
|
BUILD_HOST = "nix";
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
(
|
|
export GOOS="${pkgsBuildBuild.go.GOOS}" GOARCH="${pkgsBuildBuild.go.GOARCH}" CC=$CC_FOR_BUILD
|
|
go build build.go
|
|
go generate github.com/syncthing/syncthing/lib/api/auto github.com/syncthing/syncthing/cmd/strelaypoolsrv/auto
|
|
)
|
|
./build -goos ${go.GOOS} -goarch ${go.GOARCH} -no-upgrade -version v${version} build ${target}
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
install -Dm755 ${target} $out/bin/${target}
|
|
runHook postInstall
|
|
'';
|
|
|
|
inherit postInstall;
|
|
|
|
passthru.tests = {
|
|
inherit (nixosTests) syncthing syncthing-init syncthing-relay;
|
|
};
|
|
|
|
meta = with lib; {
|
|
homepage = "https://syncthing.net/";
|
|
description = "Open Source Continuous File Synchronization";
|
|
changelog = "https://github.com/syncthing/syncthing/releases/tag/v${version}";
|
|
license = licenses.mpl20;
|
|
maintainers = with maintainers; [ joko peterhoeg ];
|
|
mainProgram = target;
|
|
platforms = platforms.unix;
|
|
};
|
|
};
|
|
|
|
in
|
|
{
|
|
syncthing = common {
|
|
stname = "syncthing";
|
|
target = "syncthing";
|
|
|
|
postInstall = ''
|
|
# This installs man pages in the correct directory according to the suffix
|
|
# on the filename
|
|
for mf in man/*.[1-9]; do
|
|
mantype="$(echo "$mf" | awk -F"." '{print $NF}')"
|
|
mandir="$out/share/man/man$mantype"
|
|
install -Dm644 "$mf" "$mandir/$(basename "$mf")"
|
|
done
|
|
|
|
'' + lib.optionalString (stdenv.isLinux) ''
|
|
mkdir -p $out/lib/systemd/{system,user}
|
|
|
|
substitute etc/linux-systemd/system/syncthing-resume.service \
|
|
$out/lib/systemd/system/syncthing-resume.service \
|
|
--replace /usr/bin/pkill ${procps}/bin/pkill
|
|
|
|
substitute etc/linux-systemd/system/syncthing@.service \
|
|
$out/lib/systemd/system/syncthing@.service \
|
|
--replace /usr/bin/syncthing $out/bin/syncthing
|
|
|
|
substitute etc/linux-systemd/user/syncthing.service \
|
|
$out/lib/systemd/user/syncthing.service \
|
|
--replace /usr/bin/syncthing $out/bin/syncthing
|
|
'';
|
|
};
|
|
|
|
syncthing-discovery = common {
|
|
stname = "syncthing-discovery";
|
|
target = "stdiscosrv";
|
|
};
|
|
|
|
syncthing-relay = common {
|
|
stname = "syncthing-relay";
|
|
target = "strelaysrv";
|
|
|
|
postInstall = lib.optionalString (stdenv.isLinux) ''
|
|
mkdir -p $out/lib/systemd/system
|
|
|
|
substitute cmd/strelaysrv/etc/linux-systemd/strelaysrv.service \
|
|
$out/lib/systemd/system/strelaysrv.service \
|
|
--replace /usr/bin/strelaysrv $out/bin/strelaysrv
|
|
'';
|
|
};
|
|
}
|