diff options
Diffstat (limited to 'pkgs/applications/version-management/sublime-merge/common.nix')
-rw-r--r-- | pkgs/applications/version-management/sublime-merge/common.nix | 68 |
1 files changed, 41 insertions, 27 deletions
diff --git a/pkgs/applications/version-management/sublime-merge/common.nix b/pkgs/applications/version-management/sublime-merge/common.nix index 17f36ab4161..8cb447445c6 100644 --- a/pkgs/applications/version-management/sublime-merge/common.nix +++ b/pkgs/applications/version-management/sublime-merge/common.nix @@ -1,33 +1,28 @@ -{ buildVersion, sha256, dev ? false }: +{ buildVersion, x64sha256, dev ? false }: { fetchurl, lib, stdenv, xorg, glib, libGL, glibcLocales, gtk3, cairo, pango, libredirect, makeWrapper, wrapGAppsHook , pkexecPath ? "/run/wrappers/bin/pkexec" -, writeScript, common-updater-scripts, curl, gnugrep, coreutils +, writeShellScript, common-updater-scripts, curl, gnugrep, coreutils }: let - pname = "sublime-merge"; + pnameBase = "sublime-merge"; packageAttribute = "sublime-merge${lib.optionalString dev "-dev"}"; binaries = [ "sublime_merge" "crash_reporter" "git-credential-sublime" "ssh-askpass-sublime" ]; primaryBinary = "sublime_merge"; primaryBinaryAliases = [ "smerge" ]; - downloadUrl = "https://download.sublimetext.com/sublime_merge_build_${buildVersion}_${arch}.tar.xz"; + downloadUrl = arch: "https://download.sublimetext.com/sublime_merge_build_${buildVersion}_${arch}.tar.xz"; versionUrl = "https://www.sublimemerge.com/${if dev then "dev" else "download"}"; versionFile = builtins.toString ./default.nix; - archSha256 = sha256; - arch = "x64"; libPath = lib.makeLibraryPath [ xorg.libX11 glib gtk3 cairo pango curl ]; redirects = [ "/usr/bin/pkexec=${pkexecPath}" "/bin/true=${coreutils}/bin/true" ]; in let - binaryPackage = stdenv.mkDerivation { - pname = "${pname}-bin"; + binaryPackage = stdenv.mkDerivation rec { + pname = "${pnameBase}-bin"; version = buildVersion; - src = fetchurl { - url = downloadUrl; - sha256 = archSha256; - }; + src = passthru.sources.${stdenv.hostPlatform.system}; dontStrip = true; dontPatchELF = true; @@ -78,9 +73,18 @@ in let makeWrapper $out/.${primaryBinary}-wrapped $out/ssh-askpass-sublime \ --argv0 "/ssh-askpass-sublime" ''; + + passthru = { + sources = { + "x86_64-linux" = fetchurl { + url = downloadUrl "x64"; + sha256 = x64sha256; + }; + }; + }; }; in stdenv.mkDerivation (rec { - inherit pname; + pname = pnameBase; version = buildVersion; dontUnpack = true; @@ -102,20 +106,30 @@ in stdenv.mkDerivation (rec { done ''; - passthru.updateScript = writeScript "${pname}-update-script" '' - #!${stdenv.shell} - set -o errexit - PATH=${lib.makeBinPath [ common-updater-scripts curl gnugrep ]} - - latestVersion=$(curl -s ${versionUrl} | grep -Po '(?<=<p class="latest"><i>Version:</i> Build )([0-9]+)') - - for platform in ${lib.concatStringsSep " " meta.platforms}; do - # The script will not perform an update when the version attribute is up to date from previous platform run - # We need to clear it before each run - update-source-version ${packageAttribute}.${primaryBinary} 0 0000000000000000000000000000000000000000000000000000000000000000 --file=${versionFile} --version-key=buildVersion --system=$platform - update-source-version ${packageAttribute}.${primaryBinary} $latestVersion --file=${versionFile} --version-key=buildVersion --system=$platform - done - ''; + passthru = { + updateScript = + let + script = writeShellScript "${pnameBase}-update-script" '' + set -o errexit + PATH=${lib.makeBinPath [ common-updater-scripts curl gnugrep ]} + + versionFile=$1 + latestVersion=$(curl -s ${versionUrl} | grep -Po '(?<=<p class="latest"><i>Version:</i> Build )([0-9]+)') + + if [[ "${buildVersion}" = "$latestVersion" ]]; then + echo "The new version same as the old version." + exit 0 + fi + + for platform in ${lib.escapeShellArgs meta.platforms}; do + # The script will not perform an update when the version attribute is up to date from previous platform run + # We need to clear it before each run + update-source-version "${packageAttribute}.${primaryBinary}" 0 "${lib.fakeSha256}" --file="$versionFile" --version-key=buildVersion --source-key="sources.$platform" + update-source-version "${packageAttribute}.${primaryBinary}" "$latestVersion" --file="$versionFile" --version-key=buildVersion --source-key="sources.$platform" + done + ''; + in [ script versionFile ]; + }; meta = with lib; { description = "Git client from the makers of Sublime Text"; |