Remove vscode pin

This commit is contained in:
Dave Gallant
2021-03-09 08:16:07 -05:00
parent b83d8a8992
commit f0216ea2d9
5 changed files with 9 additions and 221 deletions

View File

@@ -4,6 +4,5 @@ final: prev: {
rfd = prev.callPackage ./rfd { };
srv = prev.callPackage ./srv { };
vpngate = prev.callPackage ./vpngate { };
vscode = prev.callPackage ./vscode { };
}

View File

@@ -1,47 +0,0 @@
{ stdenv, lib, callPackage, fetchurl, isInsiders ? false }:
let
inherit (stdenv.hostPlatform) system;
plat = { x86_64-linux = "linux-x64"; }.${system};
archive_fmt = "tar.gz";
sha256 = {
x86_64-linux = "sha256-jDD936sLQDtouBUeeaPCzLSj1Euo4GPA+Vf5ARZecs0=";
}.${system};
in callPackage ./generic.nix rec {
version = "1.52.1";
pname = "vscode";
executableName = "code" + lib.optionalString isInsiders "-insiders";
longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders";
shortName = "Code" + lib.optionalString isInsiders " - Insiders";
src = fetchurl {
name = "VSCode_${version}_${plat}.${archive_fmt}";
url = "https://vscode-update.azurewebsites.net/${version}/${plat}/stable";
inherit sha256;
};
sourceRoot = "";
meta = with lib; {
description = ''
Open source source code editor developed by Microsoft for Windows,
Linux and macOS
'';
longDescription = ''
Open source source code editor developed by Microsoft for Windows,
Linux and macOS. 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 = "https://code.visualstudio.com/";
downloadPage = "https://code.visualstudio.com/Updates";
license = licenses.unfree;
maintainers = with maintainers; [ davegallant ];
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -1,91 +0,0 @@
{ stdenv, lib, makeDesktopItem, unzip, libsecret, libXScrnSaver, wrapGAppsHook
, gtk2, atomEnv, at-spi2-atk, autoPatchelfHook, systemd, fontconfig, libdbusmenu
# Populate passthru.tests
, tests
# Attributes inherit from specific versions
, version, src, meta, sourceRoot, executableName, longName, shortName, pname }:
let inherit (stdenv.hostPlatform) system;
in stdenv.mkDerivation {
inherit pname version src sourceRoot;
passthru = { inherit executableName tests; };
desktopItem = makeDesktopItem {
name = executableName;
desktopName = longName;
comment = "Code Editing. Redefined.";
genericName = "Text Editor";
exec = "${executableName} %F";
icon = "code";
startupNotify = "true";
categories = "Utility;TextEditor;Development;IDE;";
mimeType = "text/plain;inode/directory;";
extraEntries = ''
StartupWMClass=${shortName}
Actions=new-empty-window;
Keywords=vscode;
[Desktop Action new-empty-window]
Name=New Empty Window
Exec=${executableName} --new-window %F
Icon=code
'';
};
urlHandlerDesktopItem = makeDesktopItem {
name = executableName + "-url-handler";
desktopName = longName + " - URL Handler";
comment = "Code Editing. Redefined.";
genericName = "Text Editor";
exec = executableName + " --open-url %U";
icon = "code";
startupNotify = "true";
categories = "Utility;TextEditor;Development;IDE;";
mimeType = "x-scheme-handler/vscode;";
extraEntries = ''
NoDisplay=true
Keywords=vscode;
'';
};
buildInputs = (if stdenv.isDarwin then
[ unzip ]
else
[ gtk2 at-spi2-atk wrapGAppsHook ] ++ atomEnv.packages)
++ [ libsecret libXScrnSaver ];
runtimeDependencies = lib.optional (stdenv.isLinux) [
(lib.getLib systemd)
fontconfig.lib
libdbusmenu
];
nativeBuildInputs = lib.optional (!stdenv.isDarwin) autoPatchelfHook;
dontBuild = true;
dontConfigure = true;
installPhase = ''
mkdir -p $out/lib/vscode $out/bin
cp -r ./* $out/lib/vscode
ln -s $out/lib/vscode/bin/${executableName} $out/bin
mkdir -p $out/share/applications
ln -s $desktopItem/share/applications/${executableName}.desktop $out/share/applications/${executableName}.desktop
ln -s $urlHandlerDesktopItem/share/applications/${executableName}-url-handler.desktop $out/share/applications/${executableName}-url-handler.desktop
mkdir -p $out/share/pixmaps
cp $out/lib/vscode/resources/app/resources/linux/code.png $out/share/pixmaps/code.png
# Override the previously determined VSCODE_PATH with the one we know to be correct
sed -i "/ELECTRON=/iVSCODE_PATH='$out/lib/vscode'" $out/bin/${executableName}
grep -q "VSCODE_PATH='$out/lib/vscode'" $out/bin/${executableName} # check if sed succeeded
'';
inherit meta;
}

View File

@@ -1,73 +0,0 @@
{ lib, runCommand, buildEnv, vscode, makeWrapper, vscodeExtensions ? [ ] }:
/* `vscodeExtensions`
: A set of vscode extensions to be installed alongside the editor. Here's a an
example:
~~~
vscode-with-extensions.override {
# When the extension is already available in the default extensions set.
vscodeExtensions = with vscode-extensions; [
bbenoist.Nix
]
# Concise version from the vscode market place when not available in the default set.
++ vscode-utils.extensionsFromVscodeMarketplace [
{
name = "code-runner";
publisher = "formulahendry";
version = "0.6.33";
sha256 = "166ia73vrcl5c9hm4q1a73qdn56m0jc7flfsk5p5q41na9f10lb0";
}
];
}
~~~
This expression should fetch
- the *nix* vscode extension from whatever source defined in the
default nixpkgs extensions set `vscodeExtensions`.
- the *code-runner* vscode extension from the marketplace using the
following url:
~~~
https://bbenoist.gallery.vsassets.io/_apis/public/gallery/publisher/bbenoist/extension/nix/1.0.1/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage
~~~
The original `code` executable will be wrapped so that it uses the set of pre-installed / unpacked
extensions as its `--extensions-dir`.
*/
let
inherit (vscode) executableName;
wrappedPkgVersion = lib.getVersion vscode;
wrappedPkgName = lib.removeSuffix "-${wrappedPkgVersion}" vscode.name;
combinedExtensionsDrv = buildEnv {
name = "vscode-extensions";
paths = vscodeExtensions;
};
# When no extensions are requested, we simply redirect to the original
# non-wrapped vscode executable.
in runCommand "${wrappedPkgName}-with-extensions-${wrappedPkgVersion}" {
buildInputs = [ vscode makeWrapper ];
dontPatchELF = true;
dontStrip = true;
meta = vscode.meta;
} ''
mkdir -p "$out/bin"
mkdir -p "$out/share/applications"
mkdir -p "$out/share/pixmaps"
ln -sT "${vscode}/share/pixmaps/code.png" "$out/share/pixmaps/code.png"
ln -sT "${vscode}/share/applications/${executableName}.desktop" "$out/share/applications/${executableName}.desktop"
ln -sT "${vscode}/share/applications/${executableName}-url-handler.desktop" "$out/share/applications/${executableName}-url-handler.desktop"
makeWrapper "${vscode}/bin/${executableName}" "$out/bin/${executableName}" ${
lib.optionalString (vscodeExtensions != [ ]) ''
--add-flags "--extensions-dir ${combinedExtensionsDrv}/share/vscode/extensions"
''
}
''