Loading pkgs/by-name/af/affine-bin/package.nix +134 −65 Original line number Diff line number Diff line { lib, fetchurl, stdenvNoCC, copyDesktopItems, electron, fetchFromGitHub, fetchurl, lib, makeDesktopItem, makeWrapper, stdenvNoCC, unzip, electron, buildType ? "stable", commandLineArgs ? "", }: stdenvNoCC.mkDerivation ( finalAttrs: let icon = fetchurl { url = "https://raw.githubusercontent.com/toeverything/AFFiNE/v${finalAttrs.version}/packages/frontend/core/public/favicon-192.png"; hash = "sha256-smZ5W7fy3TK3bvjwV4i71j2lVmKSZcyhMhcWfPxNnN4="; }; hostPlatform = stdenvNoCC.hostPlatform; nodePlatform = hostPlatform.parsed.kernel.name; # nodejs's `process.platform` nodeArch = # nodejs's `process.arch` { "x86_64" = "x64"; "aarch64" = "arm64"; } .${hostPlatform.parsed.cpu.name} or (throw "affine-bin(${buildType}): unsupported CPU family ${hostPlatform.parsed.cpu.name}"); in stdenvNoCC.mkDerivation ( finalAttrs: ( { pname = "affine-bin"; version = "0.17.5"; src = fetchurl { url = "https://github.com/toeverything/AFFiNE/releases/download/v${finalAttrs.version}/affine-${finalAttrs.version}-stable-linux-x64.zip"; hash = "sha256-lK5DDI9CKRneY4AwMI4r1qlGyYtQG4Xi8Ys4I3jawTk="; # https://github.com/toeverything/AFFiNE/releases/tag/v0.18.1 version = "0.18.1"; githubSourceCode = fetchFromGitHub { owner = "toeverything"; repo = "AFFiNE"; rev = "8b066a4b398aace25a20508a8e3c1a381721971f"; hash = "sha256-TWwojG3lqQlQFX3BKoFjJ27a3T/SawXgNDO6fP6gW4k="; }; nativeBuildInputs = [ copyDesktopItems makeWrapper unzip ]; postInstall = '' mkdir -p $out/lib cp -r ./resources/* -t $out/lib/ mkdir -p $out/share/doc/affine/ cp LICENSE* $out/share/doc/affine/ install -Dm644 ${icon} $out/share/pixmaps/affine.png makeWrapper "${electron}/bin/electron" $out/bin/affine \ --inherit-argv0 \ --add-flags $out/lib/app.asar \ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ --add-flags ${lib.escapeShellArg commandLineArgs} ''; desktopItems = [ (makeDesktopItem { name = "affine"; desktopName = "AFFiNE"; exec = "affine %U"; terminal = false; icon = "affine"; startupWMClass = "affine"; categories = [ "Utility" ]; }) ]; meta = { productName = if buildType == "stable" then "AFFiNE" else "AFFiNE-" + buildType; binName = lib.toLower finalAttrs.productName; pname = "${finalAttrs.binName}-bin"; meta = { description = "Workspace with fully merged docs, whiteboards and databases"; longDescription = '' AFFiNE is an open-source, all-in-one workspace and an operating Loading @@ -62,14 +47,98 @@ stdenvNoCC.mkDerivation ( and digital assets ''; homepage = "https://affine.pro/"; downloadPage = "https://affine.pro/download"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ richar redyf xiaoxiangmoe ]; mainProgram = "affine"; platforms = [ "x86_64-linux" ]; platforms = [ "aarch64-darwin" "x86_64-darwin" "x86_64-linux" ]; sourceProvenance = [ lib.sourceTypes.binaryBytecode ]; } // lib.optionalAttrs hostPlatform.isLinux { mainProgram = finalAttrs.binName; }; src = ( let inherit (finalAttrs) version; affinePrebuiltBinariesHashes = { darwin-arm64 = "I8lOO97MNLkha0utWPAP4EKv9HiPMWpLi2ibvXjzjhdl7abgSPmMKbv1dGHxMzgMzGbDzhzKqzhYtJI+0Asfzw=="; darwin-x64 = "LZdd7yHJx9Hx0Po8NQgeDp0BhIyXGr0QsbF6bWP5pS08c4fdtE9UzNPfJGfzz/snTkWfKMQZop0Ea4fYGosr1Q=="; linux-x64 = "+impaFLuvcfpj4QjHwjZ06+fUpsxxRlk4eWO6+E4xkBMrV43gwZGeSeAw2pMgXogRGb/Oy6XUoA7o8tTQt9J6A=="; }; platform = if hostPlatform.isLinux then "linux" else "macos"; in fetchurl { # example: https://github.com/toeverything/AFFiNE/releases/download/v0.18.1/affine-0.18.1-stable-darwin-arm64.zip url = "https://github.com/toeverything/AFFiNE/releases/download/v${version}/affine-${version}-${buildType}-${platform}-${nodeArch}.zip"; sha512 = affinePrebuiltBinariesHashes."${nodePlatform}-${nodeArch}"; } ); nativeBuildInputs = [ unzip ] ++ lib.optionals hostPlatform.isLinux [ copyDesktopItems makeWrapper ]; installPhase = let inherit (finalAttrs) binName productName; in if hostPlatform.isDarwin then '' runHook preInstall mkdir -p $out/Applications cd .. mv ${productName}.app $out/Applications runHook postInstall '' else '' runHook preInstall mkdir --parents $out/lib/${binName}/ mv ./{resources,LICENSE*} $out/lib/${binName}/ install -Dm644 "${finalAttrs.githubSourceCode}/packages/frontend/apps/electron/resources/icons/icon_${buildType}_64x64.png" $out/share/icons/hicolor/64x64/apps/${binName}.png makeWrapper "${electron}/bin/electron" $out/bin/${binName} \ --inherit-argv0 \ --add-flags $out/lib/${binName}/resources/app.asar \ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ --add-flags ${lib.escapeShellArg commandLineArgs} runHook postInstall ''; } // lib.optionalAttrs hostPlatform.isLinux { desktopItems = let inherit (finalAttrs) binName productName; in [ (makeDesktopItem { name = binName; desktopName = productName; comment = "AFFiNE Desktop App"; exec = "${binName} %U"; terminal = false; icon = binName; startupWMClass = binName; categories = [ "Utility" ]; mimeTypes = [ "x-scheme-handler/${binName}" ]; }) ]; } ) ) Loading
pkgs/by-name/af/affine-bin/package.nix +134 −65 Original line number Diff line number Diff line { lib, fetchurl, stdenvNoCC, copyDesktopItems, electron, fetchFromGitHub, fetchurl, lib, makeDesktopItem, makeWrapper, stdenvNoCC, unzip, electron, buildType ? "stable", commandLineArgs ? "", }: stdenvNoCC.mkDerivation ( finalAttrs: let icon = fetchurl { url = "https://raw.githubusercontent.com/toeverything/AFFiNE/v${finalAttrs.version}/packages/frontend/core/public/favicon-192.png"; hash = "sha256-smZ5W7fy3TK3bvjwV4i71j2lVmKSZcyhMhcWfPxNnN4="; }; hostPlatform = stdenvNoCC.hostPlatform; nodePlatform = hostPlatform.parsed.kernel.name; # nodejs's `process.platform` nodeArch = # nodejs's `process.arch` { "x86_64" = "x64"; "aarch64" = "arm64"; } .${hostPlatform.parsed.cpu.name} or (throw "affine-bin(${buildType}): unsupported CPU family ${hostPlatform.parsed.cpu.name}"); in stdenvNoCC.mkDerivation ( finalAttrs: ( { pname = "affine-bin"; version = "0.17.5"; src = fetchurl { url = "https://github.com/toeverything/AFFiNE/releases/download/v${finalAttrs.version}/affine-${finalAttrs.version}-stable-linux-x64.zip"; hash = "sha256-lK5DDI9CKRneY4AwMI4r1qlGyYtQG4Xi8Ys4I3jawTk="; # https://github.com/toeverything/AFFiNE/releases/tag/v0.18.1 version = "0.18.1"; githubSourceCode = fetchFromGitHub { owner = "toeverything"; repo = "AFFiNE"; rev = "8b066a4b398aace25a20508a8e3c1a381721971f"; hash = "sha256-TWwojG3lqQlQFX3BKoFjJ27a3T/SawXgNDO6fP6gW4k="; }; nativeBuildInputs = [ copyDesktopItems makeWrapper unzip ]; postInstall = '' mkdir -p $out/lib cp -r ./resources/* -t $out/lib/ mkdir -p $out/share/doc/affine/ cp LICENSE* $out/share/doc/affine/ install -Dm644 ${icon} $out/share/pixmaps/affine.png makeWrapper "${electron}/bin/electron" $out/bin/affine \ --inherit-argv0 \ --add-flags $out/lib/app.asar \ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ --add-flags ${lib.escapeShellArg commandLineArgs} ''; desktopItems = [ (makeDesktopItem { name = "affine"; desktopName = "AFFiNE"; exec = "affine %U"; terminal = false; icon = "affine"; startupWMClass = "affine"; categories = [ "Utility" ]; }) ]; meta = { productName = if buildType == "stable" then "AFFiNE" else "AFFiNE-" + buildType; binName = lib.toLower finalAttrs.productName; pname = "${finalAttrs.binName}-bin"; meta = { description = "Workspace with fully merged docs, whiteboards and databases"; longDescription = '' AFFiNE is an open-source, all-in-one workspace and an operating Loading @@ -62,14 +47,98 @@ stdenvNoCC.mkDerivation ( and digital assets ''; homepage = "https://affine.pro/"; downloadPage = "https://affine.pro/download"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ richar redyf xiaoxiangmoe ]; mainProgram = "affine"; platforms = [ "x86_64-linux" ]; platforms = [ "aarch64-darwin" "x86_64-darwin" "x86_64-linux" ]; sourceProvenance = [ lib.sourceTypes.binaryBytecode ]; } // lib.optionalAttrs hostPlatform.isLinux { mainProgram = finalAttrs.binName; }; src = ( let inherit (finalAttrs) version; affinePrebuiltBinariesHashes = { darwin-arm64 = "I8lOO97MNLkha0utWPAP4EKv9HiPMWpLi2ibvXjzjhdl7abgSPmMKbv1dGHxMzgMzGbDzhzKqzhYtJI+0Asfzw=="; darwin-x64 = "LZdd7yHJx9Hx0Po8NQgeDp0BhIyXGr0QsbF6bWP5pS08c4fdtE9UzNPfJGfzz/snTkWfKMQZop0Ea4fYGosr1Q=="; linux-x64 = "+impaFLuvcfpj4QjHwjZ06+fUpsxxRlk4eWO6+E4xkBMrV43gwZGeSeAw2pMgXogRGb/Oy6XUoA7o8tTQt9J6A=="; }; platform = if hostPlatform.isLinux then "linux" else "macos"; in fetchurl { # example: https://github.com/toeverything/AFFiNE/releases/download/v0.18.1/affine-0.18.1-stable-darwin-arm64.zip url = "https://github.com/toeverything/AFFiNE/releases/download/v${version}/affine-${version}-${buildType}-${platform}-${nodeArch}.zip"; sha512 = affinePrebuiltBinariesHashes."${nodePlatform}-${nodeArch}"; } ); nativeBuildInputs = [ unzip ] ++ lib.optionals hostPlatform.isLinux [ copyDesktopItems makeWrapper ]; installPhase = let inherit (finalAttrs) binName productName; in if hostPlatform.isDarwin then '' runHook preInstall mkdir -p $out/Applications cd .. mv ${productName}.app $out/Applications runHook postInstall '' else '' runHook preInstall mkdir --parents $out/lib/${binName}/ mv ./{resources,LICENSE*} $out/lib/${binName}/ install -Dm644 "${finalAttrs.githubSourceCode}/packages/frontend/apps/electron/resources/icons/icon_${buildType}_64x64.png" $out/share/icons/hicolor/64x64/apps/${binName}.png makeWrapper "${electron}/bin/electron" $out/bin/${binName} \ --inherit-argv0 \ --add-flags $out/lib/${binName}/resources/app.asar \ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ --add-flags ${lib.escapeShellArg commandLineArgs} runHook postInstall ''; } // lib.optionalAttrs hostPlatform.isLinux { desktopItems = let inherit (finalAttrs) binName productName; in [ (makeDesktopItem { name = binName; desktopName = productName; comment = "AFFiNE Desktop App"; exec = "${binName} %U"; terminal = false; icon = binName; startupWMClass = binName; categories = [ "Utility" ]; mimeTypes = [ "x-scheme-handler/${binName}" ]; }) ]; } ) )