about summary refs log tree commit diff
path: root/pkgs/applications/editors/oni2/common.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/editors/oni2/common.nix')
-rw-r--r--pkgs/applications/editors/oni2/common.nix251
1 files changed, 0 insertions, 251 deletions
diff --git a/pkgs/applications/editors/oni2/common.nix b/pkgs/applications/editors/oni2/common.nix
deleted file mode 100644
index 6cd4ddca4a184..0000000000000
--- a/pkgs/applications/editors/oni2/common.nix
+++ /dev/null
@@ -1,251 +0,0 @@
-{ lib, stdenv, nodePackages
-# Fetch dependencies
-, fetchFromGitHub, gitMinimal, curlMinimal, cacert, yarn, unzip, xorg, nodejs
-, ripgrep, fontconfig, libGL, libGLU, ncurses, acl, harfbuzz, libjpeg, expat
-, icu58, libpng
-# Build
-, jq, perl, makeWrapper, bash, which, nasm, python2, gn, ninja, cmake, clang
-, fixup_yarn_lock, callPackage }:
-
-{ variant, version, rev, sha256, fetchDepsSha256, license }:
-
-let
-  source = fetchFromGitHub {
-    repo = variant;
-    owner = "onivim";
-    inherit rev sha256;
-  };
-
-  fetchDeps = stdenv.mkDerivation {
-    name = "oni2-fetch-deps";
-
-    unpackPhase = ''
-      cp ${source}/{release,package}.json ./
-      cp -r ${source}/{release.esy.lock,node,extensions} ./
-      chmod -R +w node extensions
-    '';
-
-    nativeBuildInputs = [
-      jq
-      nodePackages.esy
-      gitMinimal
-      curlMinimal
-      cacert
-      python2
-      perl
-      unzip
-      yarn
-    ];
-
-    buildPhase = ''
-      export ESY__PREFIX=$NIX_BUILD_TOP/esy
-      export ESY__GLOBAL_PATH=PATH
-
-      esy '@release' install
-
-      ln -s $NIX_BUILD_TOP/esy/source/i/ $NIX_BUILD_TOP/source
-
-      cd $NIX_BUILD_TOP/source
-      cd $(ls | grep "^esy_skia")
-
-      # Prefetch esy_skia pinned dependencies
-      # angle2, dng_sdk, piex and sfntly are unique and need to be fetched
-      # zlib and webp used here seem to be outdated, so it's impossible to link esy_skia against upstream zlib and webp
-      cat DEPS | grep -E '{|}|angle2|dng_sdk|piex|sfntly|zlib|webp' > DEPS-upd
-      mv DEPS{-upd,}
-      python tools/git-sync-deps
-      # Patch esy_skia builder to use nixpkgs ninja, gn tools and icu, expat and libpng libraries.
-      cd esy
-      patch build.sh ${./esy_skia_use_nixpkgs.patch}
-
-      cd $NIX_BUILD_TOP/source
-      cd $(ls | grep '^revery' | grep -v '__s__')
-      jq '.esy.build |= "bash -c \"\(.)\""' package.json > package-upd.json
-      mv package{-upd,}.json
-
-      # Delete esy_cmake and ninja dependencies (they are brought from Nixpkgs)
-      # Removing them from release.esy.lock is hard because it reports corruption
-      for d in "revery__s__esy_cmake" "ninja"; do
-        cd $NIX_BUILD_TOP/source
-        cd $(ls | grep $d)
-        rm -rf *
-      done
-
-      rm -rf $(find $NIX_BUILD_TOP/esy -name .git)
-    '';
-
-    installPhase = ''
-      mkdir $out
-      cp -r $NIX_BUILD_TOP/esy $out/
-    '';
-
-    dontPatchShebangs = true;
-
-    impureEnvVars = lib.fetchers.proxyImpureEnvVars;
-
-    outputHashMode = "recursive";
-    outputHashAlgo = "sha256";
-    outputHash = fetchDepsSha256;
-  };
-in stdenv.mkDerivation (rec {
-  pname = "oni2";
-  inherit version;
-
-  nativeBuildInputs = [
-    clang
-    makeWrapper
-    nodePackages.esy
-    perl
-    which
-    nasm
-    python2
-    gn
-    ninja
-    cmake
-    jq
-    yarn
-    fixup_yarn_lock
-  ];
-
-  buildInputs = [
-    nodejs
-    ripgrep
-    fontconfig
-    libGL
-    libGLU
-    ncurses
-    acl
-    harfbuzz
-    libjpeg
-    expat
-    icu58
-    libpng
-  ] ++ (with xorg; [
-    libX11
-    libXext
-    libXi
-    libXxf86vm
-    libXrandr
-    libXinerama
-    libXcursor
-    libICE
-    libSM
-    libXt
-    libxkbfile
-  ]);
-
-  unpackPhase = ''
-    cp -r ${source}/* ./
-    cp -r ${fetchDeps}/esy ./
-
-    chmod -R +w esy node/ extensions/
-    chmod +w assets/configuration
-  '';
-
-  hardeningDisable = [ "fortify" ];
-
-  node = (callPackage ./node.nix { }).offline_cache;
-  extensions = (callPackage ./extensions.nix { }).offline_cache;
-
-  configurePhase = ''
-    runHook preConfigure
-
-    # Esy by default erases the entire environment, so the builder makes a wrapper over bash to automatically re-export it
-    mkdir wrapped-bash
-    echo "#!${bash}/bin/bash" > wrapped-bash/bash
-    export | sed 's/PATH="/PATH="$PATH:/' >> wrapped-bash/bash
-    echo "exec ${bash}/bin/bash \"\$@\"" >> wrapped-bash/bash
-    chmod +x wrapped-bash/bash
-
-    # Use custom builder for Oni2 to provide necessary environment to it
-    echo 'declare -x NIX_LDFLAGS="$NIX_LDFLAGS -lXext -lharfbuzz -ljpeg -lpthread -lpng -lexpat"' > build.sh
-    echo $(jq -r '.esy.build' package.json) >> build.sh
-    jq '.esy.build |= "bash build.sh"' package.json > package-upd.json
-    mv package{-upd,}.json
-
-    export PATH="$NIX_BUILD_TOP/wrapped-bash:$PATH"
-    patchShebangs $NIX_BUILD_TOP/esy/source
-
-    echo "" > assets/configuration/setup.json # it will be set at installation phase.
-
-    substituteInPlace src/gen_buildinfo/generator.re --replace "git rev-parse --short HEAD" "echo '${version}'"
-
-    runHook postConfigure
-  '';
-
-  buildPhase = ''
-    runHook preBuild
-
-    # Required by yarn
-    export HOME=$(mktemp -d)
-
-    # Install pinned yarn packages
-    yarnInstall() {
-      # Remove `resolutions` section from package.json
-      jq 'del(.resolutions)' $3/package.json > $3/package-upd.json
-      cp $3/package{-upd,}.json
-
-      # Copy custom yarn.lock to match updated package.json, do fixup
-      cp $2 $3/yarn.lock
-      fixup_yarn_lock $3/yarn.lock
-
-    # Make yarn install prefetched dependencies
-     yarn config --offline set yarn-offline-mirror $1
-     # Set explicit node install directory for node-gyp.
-     npm_config_nodedir=${nodejs} yarn install --frozen-lockfile --offline --no-progress --non-interactive --cwd $3
-    }
-    yarnInstall ${node} ${./node.lock} node
-    yarnInstall ${extensions} ${./extensions.lock} extensions
-
-    export ESY__PREFIX="$NIX_BUILD_TOP/esy"
-    esy '@release' install # should do nothing
-
-    export ESY__GLOBAL_PATH=PATH
-    # Create link to bin directory, currently empty
-    esy '@release' sh -c "ln -s \$cur__bin result"
-    # Finish building Oni2
-    esy '@release' x Oni2 --help
-
-    runHook postBuild
-  '';
-
-  installPhase = ''
-    runHook preInstall
-
-    mkdir $out
-
-    cp -Lr ./result $out/bin
-    cp -r ./node $out/
-    cp -r ./extensions $out/
-
-    chmod +w $out/bin
-    chmod +x $out/bin/Oni2 $out/bin/Oni2_editor
-    # Unset LANG and XMODIFIERS. See https://github.com/onivim/oni2/issues/3772
-    # Unset SDL_VIDEODRIVER because Wayland is not supported. See https://github.com/onivim/oni2/issues/3438
-    mv $out/bin/Oni2{,_unwrapped}
-    makeWrapper $out/bin/Oni2{_unwrapped,} --unset LANG --unset XMODIFIERS --unset SDL_VIDEODRIVER
-    mv $out/bin/Oni2_editor{,_unwrapped}
-    makeWrapper $out/bin/Oni2_editor{_unwrapped,} --unset LANG --unset XMODIFIERS --unset SDL_VIDEODRIVER
-
-    rm -f $out/bin/setup.json
-    jq -n "{node: \"${nodejs}/bin/node\", nodeScript: \"$out/node\", bundledExtensions: \"$out/extensions\", rg: \"${ripgrep}/bin/rg\"}" > $out/bin/setup.json
-
-    mkdir -p $out/share/applications $out/share/pixmaps
-    cp ${source}/scripts/linux/Onivim2.desktop $out/share/applications
-    cp ${source}/assets/images/icon512.png $out/share/pixmaps/Onivim2.png
-
-    runHook postInstall
-  '';
-
-  meta = with lib; {
-    description = "Native, lightweight modal code editor";
-    longDescription = ''
-      Onivim 2 is a reimagination of the Oni editor. Onivim 2 aims to bring the speed of Sublime, the language integration of VSCode, and the modal editing experience of Vim together, in a single package.
-    '';
-    homepage = "https://v2.onivim.io/";
-    inherit license;
-    maintainers = with maintainers; [ gardspirito ];
-    platforms = [ "x86_64-linux" "x86_64-darwin" ];
-  };
-})
-