summary refs log tree commit diff
path: root/pkgs/applications/editors/sublime
diff options
context:
space:
mode:
authorGuillaume Massé <masgui@gmail.com>2018-04-06 18:31:10 +0200
committerzimbatm <zimbatm@zimbatm.com>2018-04-06 17:31:10 +0100
commit15a2dca15c25279843374003c8ae553e3b4af385 (patch)
tree7e4ad5d07093850bffdba523058a42a7301ce4cb /pkgs/applications/editors/sublime
parent0af5b254ab6b3a54037ebab6fa09a85f52568d7f (diff)
downloadnixpkgs-15a2dca15c25279843374003c8ae553e3b4af385.tar
nixpkgs-15a2dca15c25279843374003c8ae553e3b4af385.tar.gz
nixpkgs-15a2dca15c25279843374003c8ae553e3b4af385.tar.bz2
nixpkgs-15a2dca15c25279843374003c8ae553e3b4af385.tar.lz
nixpkgs-15a2dca15c25279843374003c8ae553e3b4af385.tar.xz
nixpkgs-15a2dca15c25279843374003c8ae553e3b4af385.tar.zst
nixpkgs-15a2dca15c25279843374003c8ae553e3b4af385.zip
Sublime dev (#38383)
* Package sublime-dev build.

* sublime3-dev: Init at 3160

* Sublime3: Refactor to share derivation between sublime-text 3 dev and stable

* Sublime3: Refactor as a fuction to avoid duplicating parameters

* Sublime3: Remove unnecessary rec

https://github.com/NixOS/nixpkgs/pull/38383#discussion_r178898901

* sublime3-dev: 3160 -> 3161
Diffstat (limited to 'pkgs/applications/editors/sublime')
-rw-r--r--pkgs/applications/editors/sublime/2/default.nix (renamed from pkgs/applications/editors/sublime/default.nix)0
-rw-r--r--pkgs/applications/editors/sublime/3/common.nix119
-rw-r--r--pkgs/applications/editors/sublime/3/packages.nix18
3 files changed, 137 insertions, 0 deletions
diff --git a/pkgs/applications/editors/sublime/default.nix b/pkgs/applications/editors/sublime/2/default.nix
index 9cf5bd97d0a..9cf5bd97d0a 100644
--- a/pkgs/applications/editors/sublime/default.nix
+++ b/pkgs/applications/editors/sublime/2/default.nix
diff --git a/pkgs/applications/editors/sublime/3/common.nix b/pkgs/applications/editors/sublime/3/common.nix
new file mode 100644
index 00000000000..7185a82a960
--- /dev/null
+++ b/pkgs/applications/editors/sublime/3/common.nix
@@ -0,0 +1,119 @@
+{buildVersion, x32sha256, x64sha256}:
+
+{ fetchurl, stdenv, glib, xorg, cairo, gtk2, pango, makeWrapper, openssl, bzip2,
+  pkexecPath ? "/run/wrappers/bin/pkexec", libredirect,
+  gksuSupport ? false, gksu, unzip, zip, bash}:
+
+assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
+assert gksuSupport -> gksu != null;
+
+let
+
+  libPath = stdenv.lib.makeLibraryPath [glib xorg.libX11 gtk2 cairo pango];
+  redirects = [ "/usr/bin/pkexec=${pkexecPath}" ]
+    ++ stdenv.lib.optional gksuSupport "/usr/bin/gksudo=${gksu}/bin/gksudo";
+in let
+  archSha256 =
+    if stdenv.system == "i686-linux" then
+      x32sha256
+    else
+      x64sha256;
+
+  arch =
+    if stdenv.system == "i686-linux" then
+      "x32"
+    else
+      "x64";
+
+  # package with just the binaries
+  sublime = stdenv.mkDerivation {
+    name = "sublimetext3-${buildVersion}-bin";
+    src =
+      fetchurl {
+        name = "sublimetext-${buildVersion}.tar.bz2";
+        url = "https://download.sublimetext.com/sublime_text_3_build_${buildVersion}_${arch}.tar.bz2";
+        sha256 = archSha256;
+      };
+
+    dontStrip = true;
+    dontPatchELF = true;
+    buildInputs = [ makeWrapper zip unzip ];
+
+    # make exec.py in Default.sublime-package use own bash with
+    # an LD_PRELOAD instead of "/bin/bash"
+    patchPhase = ''
+      mkdir Default.sublime-package-fix
+      ( cd Default.sublime-package-fix
+        unzip -q ../Packages/Default.sublime-package
+        substituteInPlace "exec.py" --replace \
+          "[\"/bin/bash\"" \
+          "[\"$out/sublime_bash\""
+        zip -q ../Packages/Default.sublime-package **/*
+      )
+      rm -r Default.sublime-package-fix
+    '';
+
+    buildPhase = ''
+      for i in sublime_text plugin_host crash_reporter; do
+        patchelf \
+          --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ${libPath}:${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"} \
+          $i
+      done
+
+      # Rewrite pkexec|gksudo argument. Note that we can't delete bytes in binary.
+      sed -i -e 's,/bin/cp\x00,cp\x00\x00\x00\x00\x00\x00,g' sublime_text
+    '';
+
+    installPhase = ''
+      # Correct sublime_text.desktop to exec `sublime' instead of /opt/sublime_text
+      sed -e "s,/opt/sublime_text/sublime_text,$out/sublime_text," -i sublime_text.desktop
+
+      mkdir -p $out
+      cp -prvd * $out/
+
+      # We can't just call /usr/bin/env bash because a relocation error occurs
+      # when trying to run a build from within Sublime Text
+      ln -s ${bash}/bin/bash $out/sublime_bash
+      wrapProgram $out/sublime_bash \
+        --set LD_PRELOAD "${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}/libgcc_s.so.1"
+
+      wrapProgram $out/sublime_text \
+        --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
+        --set NIX_REDIRECTS ${builtins.concatStringsSep ":" redirects}
+
+      # Without this, plugin_host crashes, even though it has the rpath
+      wrapProgram $out/plugin_host --prefix LD_PRELOAD : ${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}/libgcc_s.so.1:${openssl.out}/lib/libssl.so:${bzip2.out}/lib/libbz2.so
+    '';
+  };
+in stdenv.mkDerivation (rec {
+  name = "sublimetext3-${buildVersion}";
+
+  phases = [ "installPhase" ];
+
+  inherit sublime;
+
+  installPhase = ''
+    mkdir -p $out/bin
+
+    cat > $out/bin/subl <<-EOF
+    #!/bin/sh
+    exec $sublime/sublime_text "\$@"
+    EOF
+    chmod +x $out/bin/subl
+
+    ln $out/bin/subl $out/bin/sublime
+    ln $out/bin/subl $out/bin/sublime3
+    mkdir -p $out/share/applications
+    ln -s $sublime/sublime_text.desktop $out/share/applications/sublime_text.desktop
+    ln -s $sublime/Icon/256x256/ $out/share/icons
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Sophisticated text editor for code, markup and prose";
+    homepage = https://www.sublimetext.com/;
+    maintainers = with maintainers; [ wmertens demin-dmitriy zimbatm ];
+    license = licenses.unfree;
+    platforms = platforms.linux;
+  };
+})
diff --git a/pkgs/applications/editors/sublime/3/packages.nix b/pkgs/applications/editors/sublime/3/packages.nix
new file mode 100644
index 00000000000..84394e85c88
--- /dev/null
+++ b/pkgs/applications/editors/sublime/3/packages.nix
@@ -0,0 +1,18 @@
+{ callPackage }:
+
+let
+  common = opts: callPackage (import ./common.nix opts);
+in
+  rec {
+    sublime3-dev = common {
+      buildVersion = "3161";
+      x32sha256 = "0qrm2qmfsj71lr83c8zas2n3xk8hk9k4w8ygnasjhggmyjm3wy0q";
+      x64sha256 = "0cgadylm68s2jly10r038q1fvmbzmpc2nvqy86vlyq9avgqbm5pc";
+    } {};
+
+    sublime3 = common {
+      buildVersion = "3143";
+      x32sha256 = "0dgpx4wij2m77f478p746qadavab172166bghxmj7fb61nvw9v5i";
+      x64sha256 = "06b554d2cvpxc976rvh89ix3kqc7klnngvk070xrs8wbyb221qcw";    
+    } {};
+  }