diff options
Diffstat (limited to 'pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix')
-rw-r--r-- | pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix b/pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix index 0ad32392192..83cf84586b8 100644 --- a/pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix +++ b/pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix @@ -11,10 +11,17 @@ # extensions to be copied into the project's extensions folder , mutableExtensions ? [] , vscodeExtsFolderName ? ".vscode-exts" +, user-data-dir ? ''"''${TMP}vscodeWithConfiguration/vscode-data-dir"'' }: let nixExtsDrvs = extensionsFromVscodeMarketplace nixExtensions; mutExtsDrvs = extensionsFromVscodeMarketplace mutableExtensions; + mutableExtsPaths = lib.forEach mutExtsDrvs ( e: + { + origin = ''${e}/share/vscode/extensions/${e.vscodeExtUniqueId}''; + target = ''${vscodeExtsFolderName}/${e.vscodeExtUniqueId}-${(lib.findSingle (ext: ''${ext.publisher}.${ext.name}'' == e.vscodeExtUniqueId) "" "m" mutableExtensions ).version}''; + } + ); #removed not defined extensions rmExtensions = lib.optionalString (nixExtensions++mutableExtensions != []) '' @@ -23,16 +30,21 @@ let #copy mutable extension out of the nix store cpExtensions = '' ${lib.concatMapStringsSep "\n" (e : ''ln -sfn ${e}/share/vscode/extensions/* ${vscodeExtsFolderName}/'') nixExtsDrvs} - ${lib.concatMapStringsSep "\n" (e : '' - cp -a ${e}/share/vscode/extensions/${e.vscodeExtUniqueId} ${vscodeExtsFolderName}/${e.vscodeExtUniqueId}-${(lib.findSingle (ext: ''${ext.publisher}.${ext.name}'' == e.vscodeExtUniqueId) "" "m" mutableExtensions ).version} - '') mutExtsDrvs} + ${lib.concatMapStringsSep "\n" (ePath : '' + if [ ! -d ${ePath.target} ]; then + cp -a ${ePath.origin} ${ePath.target} + chmod -R u+rwx ${ePath.target} + fi + '') mutableExtsPaths} ''; in writeShellScriptBin "code" '' if ! [[ "$@" =~ "--list-extension" ]]; then - mkdir -p ${vscodeExtsFolderName} + mkdir -p "${vscodeExtsFolderName}" ${rmExtensions} ${cpExtensions} fi - ${vscode}/bin/code --extensions-dir ${vscodeExtsFolderName} "$@" + ${vscode}/bin/code --extensions-dir "${vscodeExtsFolderName}" ${ + lib.optionalString (user-data-dir != "") ''--user-data-dir ${user-data-dir }'' + } "$@" '' |