nixpkgs/pkgs/applications/editors/vscode/default.nix
mucaho 0c195db5dd vscode: shrink derivation size
Prune out compile-time dependencies.
2016-04-04 02:49:58 +01:00

101 lines
3.4 KiB
Nix

{ callPackage, stdenv, fetchurl, makeWrapper
, jq, xlibs, gtk, python, nodejs
, ...
} @ args:
let
electron = callPackage ../../../development/tools/electron/default.nix (args // rec {
version = "0.35.6";
sha256 = "1bwn14769nby04zkza9jphsya2p6fjnkm1k2y4h5y2l4gnqdvmx0";
});
in
stdenv.mkDerivation rec {
name = "vscode-${version}";
version = "0.10.10";
src = fetchurl {
url = "https://github.com/Microsoft/vscode/archive/${version}.tar.gz";
sha256 = "1mzkip6621111xwwksqjad1kgpbhna4dhpkf6cnj2r18dkk2jmcw";
};
buildInputs = [ makeWrapper jq xlibs.libX11 xlibs.xproto gtk python nodejs electron ];
extensionGalleryJSON = ''
{
\"extensionsGallery\": {
\"serviceUrl\": \"https://marketplace.visualstudio.com/_apis/public/gallery\",
\"cacheUrl\": \"https://vscode.blob.core.windows.net/gallery/index\",
\"itemUrl\": \"https://marketplace.visualstudio.com/items\"
}
}
'';
configurePhase = ''
# PATCH SCRIPT SHEBANGS
echo "PATCH SCRIPT SHEBANGS"
patchShebangs ./scripts
# ADD EXTENSION GALLERY URLS TO APPLICATION CONFIGURATION
echo "AUGMENT APPLICATION CONFIGURATION"
echo "$(cat ./product.json) ${extensionGalleryJSON}" | jq -s add > tmpFile && \
mv tmpFile ./product.json
'';
buildPhase = ''
# BUILD COMPILE- & RUN-TIME DEPENDENCIES
echo "BUILD COMPILE- & RUN-TIME DEPENDENCIES"
mkdir -p ./tmp
HOME=./tmp ./scripts/npm.sh install
# COMPILE SOURCES
echo "COMPILE SOURCES"
./node_modules/.bin/gulp
'';
doCheck = true;
checkPhase = ''
# CHECK APPLICATION
echo "CHECK APPLICATION"
ATOM_SHELL_INTERNAL_RUN_AS_NODE=1 ${electron}/bin/electron ./node_modules/.bin/_mocha
'';
installPhase = ''
# PRUNE COMPILE-TIME DEPENDENCIES
echo "PRUNE COMPILE-TIME DEPENDENCIES"
npm prune --production
# COPY FILES NEEDED FOR RUNNING APPLICATION TO OUT DIRECTORY
echo "COPY FILES NEEDED FOR RUNNING APPLICATION TO OUT DIRECTORY"
mkdir -p "$out"
cp -R ./.vscode "$out"/.vscode
cp -R ./extensions "$out"/extensions
cp -R ./out "$out"/out
cp -R ./node_modules "$out"/node_modules
cp ./package.json "$out"/package.json
cp ./product.json "$out"/product.json
cp ./tslint.json "$out"/tslint.json
# COPY LEGAL STUFF
cp ./LICENSE.txt "$out"/LICENSE.txt
cp ./OSSREADME.json "$out"/OSSREADME.json
cp ./ThirdPartyNotices.txt "$out"/ThirdPartyNotices.txt
# CREATE RUNNER SCRIPT
echo "CREATE RUNNER SCRIPT"
mkdir -p "$out"/bin
makeWrapper "${electron}/bin/electron" "$out/bin/vscode" \
--set VSCODE_DEV 1 \
--add-flags "$out"
'';
meta = with stdenv.lib; {
description = "Visual Studio Code is an open source source code editor developed by Microsoft for Windows, Linux and OS X.";
longDescription = ''
Visual Studio Code is an open source source code editor developed by Microsoft for Windows, Linux and OS X.
It includes support for debugging, embedded Git control, syntax highlighting, intelligent code completion, snippets, and code refactoring.
It is also customizable, so users can change the editor's theme, keyboard shortcuts, and preferences.
'';
homepage = http://code.visualstudio.com/;
license = licenses.mit;
platforms = [ "x86_64-linux" ];
};
}