From 29cf4af1d58e2fb38840f60d51b930bea7a82cf6 Mon Sep 17 00:00:00 2001 From: Yifei Sun Date: Sun, 17 Dec 2023 14:02:26 -0500 Subject: spacedrive: add darwin Co-authored-by: Mikael Fangel <34864484+MikaelFangel@users.noreply.github.com> --- pkgs/by-name/sp/spacedrive/package.nix | 88 ++++++++++++++++++++++++---------- 1 file changed, 63 insertions(+), 25 deletions(-) (limited to 'pkgs/by-name/sp') diff --git a/pkgs/by-name/sp/spacedrive/package.nix b/pkgs/by-name/sp/spacedrive/package.nix index 362b02043af7..bf281e372709 100644 --- a/pkgs/by-name/sp/spacedrive/package.nix +++ b/pkgs/by-name/sp/spacedrive/package.nix @@ -1,39 +1,77 @@ -{ lib, appimageTools, fetchurl, pkgs }: +{ lib +, pkgs +, stdenv +, fetchurl +, appimageTools +, undmg +, nix-update-script +}: let pname = "spacedrive"; version = "0.1.4"; src = fetchurl { - url = "https://github.com/spacedriveapp/spacedrive/releases/download/${version}/Spacedrive-linux-x86_64.AppImage"; - hash = "sha256-iBdW8iPuvztP0L5xLyVs7/K8yFe7kD7QwdTuKJLhB+c="; + aarch64-darwin = { + url = "https://github.com/spacedriveapp/spacedrive/releases/download/${version}/Spacedrive-darwin-aarch64.dmg"; + hash = "sha256-gKboB5W0vW6ssZHRRivqbVPE0d0FCUdiNCsP0rKKtNo="; + }; + x86_64-darwin = { + url = "https://github.com/spacedriveapp/spacedrive/releases/download/${version}/Spacedrive-darwin-x86_64.dmg"; + hash = "sha256-KD1hw6aDyqCsXLYM8WrOTI2AfFx7t++UWV7SaCmtypI="; + }; + x86_64-linux = { + url = "https://github.com/spacedriveapp/spacedrive/releases/download/${version}/Spacedrive-linux-x86_64.AppImage"; + hash = "sha256-iBdW8iPuvztP0L5xLyVs7/K8yFe7kD7QwdTuKJLhB+c="; + }; + }.${stdenv.system} or (throw "${pname}-${version}: ${stdenv.system} is unsupported."); + + meta = { + description = "An open source file manager, powered by a virtual distributed filesystem"; + homepage = "https://www.spacedrive.com"; + changelog = "https://github.com/spacedriveapp/spacedrive/releases/tag/${version}"; + platforms = [ "aarch64-darwin" "x86_64-darwin" "x86_64-linux" ]; + license = lib.licenses.agpl3Plus; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + maintainers = with lib.maintainers; [ heisfer mikaelfangel stepbrobd ]; + mainProgram = "spacedrive"; }; - appimageContents = appimageTools.extractType2 { inherit pname version src; }; -in appimageTools.wrapType2 { - inherit pname version src; + passthru.updateScript = nix-update-script { }; +in +if stdenv.isDarwin then stdenv.mkDerivation +{ + inherit pname version src meta passthru; - extraPkgs = pkgs: - (appimageTools.defaultFhsEnvArgs.multiPkgs pkgs) ++ [ pkgs.libthai ]; + sourceRoot = "Spacedrive.app"; - extraInstallCommands = '' - # Remove version from entrypoint - mv $out/bin/spacedrive-"${version}" $out/bin/spacedrive + nativeBuildInputs = [ undmg ]; - # Install .desktop files - install -Dm444 ${appimageContents}/spacedrive.desktop -t $out/share/applications - install -Dm444 ${appimageContents}/spacedrive.png -t $out/share/pixmaps - substituteInPlace $out/share/applications/spacedrive.desktop \ - --replace 'Exec=AppRun --no-sandbox %U' 'Exec=spacedrive' + installPhase = '' + mkdir -p "$out/Applications/Spacedrive.app" + cp -r . "$out/Applications/Spacedrive.app" + mkdir -p "$out/bin" + ln -s "$out/Applications/Spacedrive.app/Contents/MacOS/Spacedrive" "$out/bin/spacedrive" ''; +} +else appimageTools.wrapType2 { + inherit pname version src meta passthru; - meta = with lib; { - description = "An open source file manager, powered by a virtual distributed filesystem"; - homepage = "https://www.spacedrive.com/"; - platforms = [ "x86_64-linux" ]; - license = licenses.agpl3Plus; - sourceProvenance = with sourceTypes; [ binaryNativeCode ]; - maintainers = with maintainers; [ mikaelfangel heisfer ]; - mainProgram = "spacedrive"; - }; + extraPkgs = pkgs: + (appimageTools.defaultFhsEnvArgs.multiPkgs pkgs) ++ [ pkgs.libthai ]; + + extraInstallCommands = + let + appimageContents = appimageTools.extractType2 { inherit pname version src; }; + in + '' + # Remove version from entrypoint + mv $out/bin/spacedrive-"${version}" $out/bin/spacedrive + + # Install .desktop files + install -Dm444 ${appimageContents}/spacedrive.desktop -t $out/share/applications + install -Dm444 ${appimageContents}/spacedrive.png -t $out/share/pixmaps + substituteInPlace $out/share/applications/spacedrive.desktop \ + --replace 'Exec=AppRun --no-sandbox %U' 'Exec=spacedrive' + ''; } -- cgit 1.4.1