diff --git a/pkgs/applications/networking/syncthing/default.nix b/pkgs/applications/networking/syncthing/default.nix deleted file mode 100644 index e9c3104bbfa0..000000000000 --- a/pkgs/applications/networking/syncthing/default.nix +++ /dev/null @@ -1,151 +0,0 @@ -{ - pkgsBuildBuild, - go, - buildGoModule, - stdenv, - lib, - fetchFromGitHub, - nixosTests, - autoSignDarwinBinariesHook, - nix-update-script, -}: - -let - common = - { - stname, - target, - postInstall ? "", - }: - buildGoModule rec { - pname = stname; - version = "2.0.15"; - - src = fetchFromGitHub { - owner = "syncthing"; - repo = "syncthing"; - tag = "v${version}"; - hash = "sha256-v77ovjV+UoCRA1GteP+HDqC8dsRvtOhFX/IkSgSIf8Y="; - }; - - vendorHash = "sha256-boYTLgvH+iWlh3y3Z0LPvSVGEget3X94AthtJKphhCw="; - - nativeBuildInputs = lib.optionals stdenv.hostPlatform.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; - - env = { - 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/infra/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-folders - syncthing-guiPassword - syncthing-guiPasswordFile - syncthing-init - syncthing-no-settings - syncthing-relay - ; - }; - updateScript = nix-update-script { }; - }; - - meta = { - homepage = "https://syncthing.net/"; - description = "Open Source Continuous File Synchronization"; - changelog = "https://github.com/syncthing/syncthing/releases/tag/v${version}"; - license = lib.licenses.mpl20; - maintainers = with lib.maintainers; [ - joko - peterhoeg - ]; - mainProgram = target; - platforms = lib.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 - - install -Dm644 etc/linux-desktop/syncthing-ui.desktop $out/share/applications/syncthing-ui.desktop - install -Dm644 assets/logo-32.png $out/share/icons/hicolor/32x32/apps/syncthing.png - install -Dm644 assets/logo-64.png $out/share/icons/hicolor/64x64/apps/syncthing.png - install -Dm644 assets/logo-128.png $out/share/icons/hicolor/128x128/apps/syncthing.png - install -Dm644 assets/logo-256.png $out/share/icons/hicolor/256x256/apps/syncthing.png - install -Dm644 assets/logo-512.png $out/share/icons/hicolor/512x512/apps/syncthing.png - install -Dm644 assets/logo-only.svg $out/share/icons/hicolor/scalable/apps/syncthing.svg - - '' - + lib.optionalString (stdenv.hostPlatform.isLinux) '' - mkdir -p $out/lib/systemd/{system,user} - - substitute etc/linux-systemd/system/syncthing@.service \ - $out/lib/systemd/system/syncthing@.service \ - --replace-fail /usr/bin/syncthing $out/bin/syncthing - - substitute etc/linux-systemd/user/syncthing.service \ - $out/lib/systemd/user/syncthing.service \ - --replace-fail /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.hostPlatform.isLinux) '' - mkdir -p $out/lib/systemd/system - - substitute cmd/strelaysrv/etc/linux-systemd/strelaysrv.service \ - $out/lib/systemd/system/strelaysrv.service \ - --replace-fail /usr/bin/strelaysrv $out/bin/strelaysrv - ''; - }; -} diff --git a/pkgs/by-name/sy/syncthing-discovery/package.nix b/pkgs/by-name/sy/syncthing-discovery/package.nix new file mode 100644 index 000000000000..48522ee5f083 --- /dev/null +++ b/pkgs/by-name/sy/syncthing-discovery/package.nix @@ -0,0 +1,10 @@ +{ + syncthing, +}: +(syncthing.override { + target = "stdiscosrv"; +}).overrideAttrs + { + pname = "syncthing-discovery"; + postInstall = ""; + } diff --git a/pkgs/by-name/sy/syncthing-relay/package.nix b/pkgs/by-name/sy/syncthing-relay/package.nix new file mode 100644 index 000000000000..e03fdff2a435 --- /dev/null +++ b/pkgs/by-name/sy/syncthing-relay/package.nix @@ -0,0 +1,19 @@ +{ + lib, + stdenv, + syncthing, +}: + +(syncthing.override { + target = "strelaysrv"; +}).overrideAttrs + { + pname = "syncthing-relay"; + postInstall = lib.optionalString (stdenv.hostPlatform.isLinux) '' + mkdir -p $out/lib/systemd/system + + substitute cmd/strelaysrv/etc/linux-systemd/strelaysrv.service \ + $out/lib/systemd/system/strelaysrv.service \ + --replace-fail /usr/bin/strelaysrv $out/bin/strelaysrv + ''; + } diff --git a/pkgs/by-name/sy/syncthing/package.nix b/pkgs/by-name/sy/syncthing/package.nix new file mode 100644 index 000000000000..de32f29866a9 --- /dev/null +++ b/pkgs/by-name/sy/syncthing/package.nix @@ -0,0 +1,126 @@ +{ + lib, + stdenv, + buildGoModule, + fetchFromGitHub, + pkgsBuildBuild, + + go, + darwin, + nixosTests, + + nix-update-script, + + target ? "syncthing", +}: + +assert builtins.elem target [ + "syncthing" + "stdiscosrv" # syncthing-discovery + "strelaysrv" # syncthing-relay +]; + +buildGoModule (finalAttrs: { + pname = "syncthing"; + version = "2.0.15"; + + src = fetchFromGitHub { + owner = "syncthing"; + repo = "syncthing"; + tag = "v${finalAttrs.version}"; + hash = "sha256-v77ovjV+UoCRA1GteP+HDqC8dsRvtOhFX/IkSgSIf8Y="; + }; + + vendorHash = "sha256-boYTLgvH+iWlh3y3Z0LPvSVGEget3X94AthtJKphhCw="; + + nativeBuildInputs = lib.optionals stdenv.hostPlatform.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. + darwin.autoSignDarwinBinariesHook + ]; + + doCheck = false; + + env = { + 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/infra/strelaypoolsrv/auto + ) + ./build -goos ${go.GOOS} -goarch ${go.GOARCH} -no-upgrade -version v${finalAttrs.version} build ${target} + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + install -Dm755 ${target} $out/bin/${target} + runHook postInstall + ''; + + 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 + + install -Dm644 etc/linux-desktop/syncthing-ui.desktop $out/share/applications/syncthing-ui.desktop + install -Dm644 assets/logo-32.png $out/share/icons/hicolor/32x32/apps/syncthing.png + install -Dm644 assets/logo-64.png $out/share/icons/hicolor/64x64/apps/syncthing.png + install -Dm644 assets/logo-128.png $out/share/icons/hicolor/128x128/apps/syncthing.png + install -Dm644 assets/logo-256.png $out/share/icons/hicolor/256x256/apps/syncthing.png + install -Dm644 assets/logo-512.png $out/share/icons/hicolor/512x512/apps/syncthing.png + install -Dm644 assets/logo-only.svg $out/share/icons/hicolor/scalable/apps/syncthing.svg + + '' + + lib.optionalString (stdenv.hostPlatform.isLinux) '' + mkdir -p $out/lib/systemd/{system,user} + + substitute etc/linux-systemd/system/syncthing@.service \ + $out/lib/systemd/system/syncthing@.service \ + --replace-fail /usr/bin/syncthing $out/bin/syncthing + + substitute etc/linux-systemd/user/syncthing.service \ + $out/lib/systemd/user/syncthing.service \ + --replace-fail /usr/bin/syncthing $out/bin/syncthing + ''; + + passthru = { + tests = { + inherit (nixosTests) + syncthing + syncthing-folders + syncthing-guiPassword + syncthing-guiPasswordFile + syncthing-init + syncthing-no-settings + syncthing-relay + ; + }; + updateScript = nix-update-script { }; + }; + + meta = { + homepage = "https://syncthing.net/"; + description = "Open Source Continuous File Synchronization"; + changelog = "https://github.com/syncthing/syncthing/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.mpl20; + maintainers = with lib.maintainers; [ + joko + peterhoeg + ]; + mainProgram = target; + platforms = lib.platforms.unix; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6efbc06c786f..689e1cdd331f 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9937,15 +9937,6 @@ with pkgs; waylandSupport = true; }; - inherit - (callPackages ../applications/networking/syncthing { - inherit (darwin) autoSignDarwinBinariesHook; - }) - syncthing - syncthing-discovery - syncthing-relay - ; - synergyWithoutGUI = synergy.override { withGUI = false; }; tabbed = callPackage ../applications/window-managers/tabbed {