summary refs log tree commit diff
path: root/pkgs/applications/editors/kodestudio
diff options
context:
space:
mode:
authorpatternspandemic <patternspandemic@live.com>2017-02-08 13:47:50 -0700
committerpatternspandemic <patternspandemic@live.com>2017-03-16 15:50:01 -0700
commitbb728268b5f64f1a4ea708acc0a826d521baddd1 (patch)
tree2ed8a3952fe73a9d489d4892900c809b12adfd96 /pkgs/applications/editors/kodestudio
parent14315cf4f59daf6efde281ac2be2e27602d39b41 (diff)
downloadnixlib-bb728268b5f64f1a4ea708acc0a826d521baddd1.tar
nixlib-bb728268b5f64f1a4ea708acc0a826d521baddd1.tar.gz
nixlib-bb728268b5f64f1a4ea708acc0a826d521baddd1.tar.bz2
nixlib-bb728268b5f64f1a4ea708acc0a826d521baddd1.tar.lz
nixlib-bb728268b5f64f1a4ea708acc0a826d521baddd1.tar.xz
nixlib-bb728268b5f64f1a4ea708acc0a826d521baddd1.tar.zst
nixlib-bb728268b5f64f1a4ea708acc0a826d521baddd1.zip
kodestudio: init at 17.1
Diffstat (limited to 'pkgs/applications/editors/kodestudio')
-rw-r--r--pkgs/applications/editors/kodestudio/default.nix133
1 files changed, 133 insertions, 0 deletions
diff --git a/pkgs/applications/editors/kodestudio/default.nix b/pkgs/applications/editors/kodestudio/default.nix
new file mode 100644
index 000000000000..a0e941289099
--- /dev/null
+++ b/pkgs/applications/editors/kodestudio/default.nix
@@ -0,0 +1,133 @@
+{ stdenv, lib, callPackage, fetchurl, makeDesktopItem, makeWrapper
+, # Patchelf dependencies:
+  alsaLib, atomEnv, boehmgc, flac, libogg, libvorbis, libXScrnSaver, mesa
+, openssl, xlibs, xorg, zlib
+}:
+
+let
+
+  version = "17.1";
+
+  sha256 = if stdenv.system == "x86_64-linux"  then "1kddisnvlk48jip6k59mw3wlkrl7rkck2lxpaghn0gfx02cvms5f"
+      else if stdenv.system == "i686-cygwin"   then "1izp42afrlh4yd322ax9w85ki388gnkqfqbw8dwnn4k3j7r5487z"
+      else throw "Unsupported system: ${stdenv.system}";
+
+  urlBase = "https://github.com/Kode/KodeStudio/releases/download/v${version}/KodeStudio-";
+
+  urlStr = if stdenv.system == "x86_64-linux"  then urlBase + "linux64.tar.gz"
+      else if stdenv.system == "i686-cygwin"   then urlBase + "win32.zip"
+      else throw "Unsupported system: ${stdenv.system}";
+
+in
+
+  stdenv.mkDerivation rec {
+    name = "kodestudio-${version}";
+
+    src = fetchurl {
+        url = urlStr;
+        inherit sha256;
+    };
+
+    buildInputs = [ makeWrapper libXScrnSaver ];
+
+    desktopItem = makeDesktopItem {
+      name = "kodestudio";
+      exec = "kodestudio";
+      icon = "kodestudio";
+      comment = "Kode Studio is an IDE for Kha based on Visual Studio Code";
+      desktopName = "Kode Studio";
+      genericName = "Text Editor";
+      categories = "GNOME;GTK;Utility;TextEditor;Development;";
+    };
+
+    sourceRoot = ".";
+
+    installPhase = ''
+      mkdir -p $out
+      cp -r ./* $out
+    '';
+
+    postFixup = lib.optionalString (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") ''
+      # Patch Binaries
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath "$out:${atomEnv.libPath}" \
+          $out/kodestudio
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ".:${stdenv.cc.libc}/lib:${xorg.libXinerama}/lib:${xorg.libX11}/lib:${alsaLib}/lib:${mesa}/lib:${openssl.out}/lib" \
+          $out/resources/app/extensions/krom/Krom/linux/Krom
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ".:${stdenv.cc.libc}/lib" \
+          $out/resources/app/extensions/kha/Kha/Kore/Tools/krafix/krafix-linux64
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ".:${stdenv.cc.libc}/lib" \
+          $out/resources/app/extensions/kha/Kha/Kore/Tools/kraffiti/kraffiti-linux64
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" \
+          $out/resources/app/extensions/kha/Kha/Tools/kravur/kravur-linux64
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ".:${stdenv.cc.libc}/lib:${zlib}/lib" \
+          $out/resources/app/extensions/kha/Kha/Tools/haxe/haxe-linux64
+      patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath ".:${stdenv.cc.libc}/lib:${libvorbis}/lib:${libogg}/lib:${flac.out}/lib" \
+          $out/resources/app/extensions/kha/Kha/Tools/oggenc/oggenc-linux64
+
+      # Patch Shared Objects
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/libnode.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib" $out/libffmpeg.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/extensions/krom/Krom/linux/libv8_libplatform.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/extensions/krom/Krom/linux/libicuuc.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/extensions/krom/Krom/linux/libv8_libbase.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/extensions/krom/Krom/linux/libv8.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/extensions/krom/Krom/linux/libicui18n.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${boehmgc}/lib" $out/resources/app/extensions/kha/Kha/Backends/Kore/khacpp/project/libs/nekoapi/bin/RPi/libneko.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${boehmgc}/lib" $out/resources/app/extensions/kha/Kha/Backends/Kore/khacpp/project/libs/nekoapi/bin/Linux64/libneko.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${boehmgc}/lib" $out/resources/app/extensions/kha/Kha/Backends/Kore/khacpp/project/libs/nekoapi/bin/Linux/libneko.so
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/node_modules/pty.js/build/Release/pty.node
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/node_modules/gc-signals/build/Release/gcsignals.node
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/node_modules/gc-signals/build/Release/obj.target/gcsignals.node
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/node_modules/oniguruma/build/Release/onig_scanner.node
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib" $out/resources/app/node_modules/oniguruma/build/Release/obj.target/onig_scanner.node
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib:${xorg.libX11}/lib" $out/resources/app/node_modules/native-keymap/build/Release/keymapping.node
+      patchelf --set-rpath ".:${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib:${xorg.libX11}/lib" $out/resources/app/node_modules/native-keymap/build/Release/obj.target/keymapping.node
+
+      # Rewrite VSCODE_PATH inside bin/kodestudio to $out
+      substituteInPlace $out/bin/kodestudio --replace "/usr/share/kodestudio" $out
+
+      # Patch library calls that expects nix store files to be mode 644:
+      #   A stat is made on srcFile (in the nix store), and its mode used
+      #   for destFile, but it expects the mode to be read write, whereas
+      #   all regular files in the nix store are made read only.
+      #   (33188 is 100644 octal, the required mode)
+      substituteInPlace $out/resources/app/extensions/kha/Kha/Tools/khamake/node_modules/fs-extra/lib/copy-sync/copy-file-sync.js --replace "stat.mode" "33188"
+      substituteInPlace $out/resources/app/extensions/kha/Kha/Kore/Tools/koremake/node_modules/fs-extra/lib/copy-sync/copy-file-sync.js --replace "stat.mode" "33188"
+
+      # Wrap preload libXss
+      wrapProgram $out/bin/kodestudio \
+          --prefix LD_PRELOAD : ${stdenv.lib.makeLibraryPath [ libXScrnSaver ]}/libXss.so.1
+    '';
+
+    meta = with stdenv.lib; {
+      description = ''
+        An IDE for Kha based on Visual Studio Code
+      '';
+      longDescription = ''
+        Kode Studio is an IDE for Kha based on Visual Studio Code.
+
+        Kha and Kore are multimedia frameworks for Haxe and C++ respectively
+        (with JavaScript coming soon). Using Kha or Kore you can access all
+        hardware at the lowest possible level in a completely portable way.
+      '';
+      homepage = http://kode.tech/;
+      downloadPage = https://github.com/Kode/KodeStudio/releases;
+      license = licenses.mit;
+      maintainers = [ maintainers.patternspandemic ];
+      platforms = [ "x86_64-linux" "i686-cygwin" ];
+    };
+  }