54 lines
1.5 KiB
Nix
54 lines
1.5 KiB
Nix
{ stdenv
|
|
, vscode-utils
|
|
, useLocalExtensions ? false}:
|
|
# Note that useLocalExtensions requires that vscode-server is not running
|
|
# on host. If it is, you'll need to remove ~/.vscode-server,
|
|
# and redo the install by running "Connect to host" on client
|
|
|
|
let
|
|
inherit (vscode-utils) buildVscodeMarketplaceExtension;
|
|
|
|
# patch runs on remote machine hence use of which
|
|
patch = ''
|
|
f="/home/''$USER/.vscode-server/bin/''$COMMIT_ID/node"
|
|
nodePath=''$(which node)
|
|
if [ -x "''$nodePath" ]; then
|
|
nodeVersion=''$(node -v)
|
|
if [[ "${nodeVersion:1:2}" == "12" ]]; then
|
|
echo PATCH: replacing ''$f with ''$nodePath
|
|
rm ''$f
|
|
ln -s ''$nodePath ''$f
|
|
fi
|
|
fi
|
|
${stdenv.lib.optionalString useLocalExtensions ''
|
|
# Use local extensions
|
|
if test -f "~/.vscode/extensions"; then
|
|
if ! test -L "~/.vscode-server/extensions"; then
|
|
ln -s ~/.vscode/extensions ~/.vscode-server/
|
|
fi
|
|
fi
|
|
''}
|
|
'';
|
|
in
|
|
buildVscodeMarketplaceExtension {
|
|
mktplcRef = {
|
|
name = "remote-ssh";
|
|
publisher = "ms-vscode-remote";
|
|
version = "0.48.0";
|
|
sha256 = "04q53gljqh5snkrdf5l69g0ahn1s5z35a4ipfcbf1rsjjmm85a19";
|
|
};
|
|
|
|
postPatch = ''
|
|
substituteInPlace "out/extension.js" \
|
|
--replace "# install extensions" '${patch}'
|
|
'';
|
|
|
|
meta = with stdenv.lib; {
|
|
description ="Use any remote machine with a SSH server as your development environment.";
|
|
license = licenses.unfree;
|
|
maintainers = with maintainers; [
|
|
tbenst
|
|
];
|
|
};
|
|
}
|