diff --git a/pkgs/misc/vscode-extensions/updateSettings.nix b/pkgs/misc/vscode-extensions/updateSettings.nix index a033229c589..c7fecf08072 100644 --- a/pkgs/misc/vscode-extensions/updateSettings.nix +++ b/pkgs/misc/vscode-extensions/updateSettings.nix @@ -16,7 +16,7 @@ let updateVSCodeSettingsCmd = '' ( - echo 'updateSettings.nix: Updating ${vscodeSettingsFile}...' + echo 'updateSettings.nix: Updating ${vscodeSettingsFile}...' oldSettings=$(cat ${vscodeSettingsFile}) echo $oldSettings' ${builtins.toJSON settings}' | ${jq}/bin/jq -s add > ${vscodeSettingsFile} )''; @@ -25,10 +25,10 @@ let fileName = builtins.baseNameOf vscodeSettingsFile; symlinkFromUserSettingCmd = lib.optionalString symlinkFromUserSetting '' && mkdir -p "${userSettingsFolder}" && ln -sfv "$(pwd)/${vscodeSettingsFile}" "${userSettingsFolder}/" ''; -in +in writeShellScriptBin ''vscodeNixUpdate-${lib.removeSuffix ".json" (fileName)}'' - (lib.optionalString (settings != {}) + (lib.optionalString (settings != {}) (if createIfDoesNotExists then '' [ ! -f "${vscodeSettingsFile}" ] && ${createEmptySettingsCmd} ${updateVSCodeSettingsCmd} ${symlinkFromUserSettingCmd} diff --git a/pkgs/misc/vscode-extensions/vscodeEnv.nix b/pkgs/misc/vscode-extensions/vscodeEnv.nix index 6e4bb7b3ea8..7c58a4bdfb3 100644 --- a/pkgs/misc/vscode-extensions/vscodeEnv.nix +++ b/pkgs/misc/vscode-extensions/vscodeEnv.nix @@ -21,13 +21,13 @@ , user-data-dir ? ''"''${TMP}''${name}"/vscode-data-dir'' # if file exists will use it and import the extensions in it into this dervation else will use empty extensions list # this file will be created/updated by vscodeExts2nix when vscode exists -, mutableExtensionsFile +, mutableExtensionsFile }: -let +let mutableExtensionsFilePath = toString mutableExtensionsFile; - mutableExtensions = if builtins.pathExists mutableExtensionsFile + mutableExtensions = if builtins.pathExists mutableExtensionsFile then import mutableExtensionsFilePath else []; - vscodeWithConfiguration = import ./vscodeWithConfiguration.nix { + vscodeWithConfiguration = import ./vscodeWithConfiguration.nix { inherit lib writeShellScriptBin extensionsFromVscodeMarketplace; vscodeDefault = vscode; } @@ -63,19 +63,19 @@ let symlinkFromUserSetting = (user-data-dir != ""); }; - vscodeExts2nix = import ./vscodeExts2nix.nix { + vscodeExts2nix = import ./vscodeExts2nix.nix { inherit lib writeShellScriptBin; vscodeDefault = vscodeWithConfiguration; } { extensionsToIgnore = nixExtensions; - extensions = mutableExtensions; + extensions = mutableExtensions; }; code = writeShellScriptBin "code" '' ${updateSettingsCmd}/bin/vscodeNixUpdate-settings ${updateLaunchCmd}/bin/vscodeNixUpdate-launch ${updateKeybindingsCmd}/bin/vscodeNixUpdate-keybindings - ${vscodeWithConfiguration}/bin/code --wait "$@" + ${vscodeWithConfiguration}/bin/code --wait "$@" echo 'running vscodeExts2nix to update ${mutableExtensionsFilePath}...' ${vscodeExts2nix}/bin/vscodeExts2nix > ${mutableExtensionsFilePath} ''; diff --git a/pkgs/misc/vscode-extensions/vscodeEnvTest.nix b/pkgs/misc/vscode-extensions/vscodeEnvTest.nix index d7e586cab6e..19a9edbf1af 100644 --- a/pkgs/misc/vscode-extensions/vscodeEnvTest.nix +++ b/pkgs/misc/vscode-extensions/vscodeEnvTest.nix @@ -1,5 +1,5 @@ with import {}; -callPackage (import ./vscodeEnv.nix) { +callPackage (import ./vscodeEnv.nix) { extensionsFromVscodeMarketplace = vscode-utils.extensionsFromVscodeMarketplace; vscodeDefault = vscode; } { @@ -9,4 +9,3 @@ callPackage (import ./vscodeEnv.nix) { t = "test"; }; } - diff --git a/pkgs/misc/vscode-extensions/vscodeExts2nix.nix b/pkgs/misc/vscode-extensions/vscodeExts2nix.nix index afd176b4c5e..58ad5866c93 100644 --- a/pkgs/misc/vscode-extensions/vscodeExts2nix.nix +++ b/pkgs/misc/vscode-extensions/vscodeExts2nix.nix @@ -1,24 +1,24 @@ -# based on the passed vscode will stdout a nix expression with the installed vscode extensions +# based on the passed vscode will stdout a nix expression with the installed vscode extensions { lib , vscodeDefault , writeShellScriptBin }: ##User input -{ vscode ? vscodeDefault +{ vscode ? vscodeDefault , extensionsToIgnore ? [] # will use those extensions to get sha256 if still exists when executed. -, extensions ? [] +, extensions ? [] }: -let +let mktplcExtRefToFetchArgs = import ./mktplcExtRefToFetchArgs.nix; in writeShellScriptBin "vscodeExts2nix" '' - echo '[' + echo '[' for line in $(${vscode}/bin/code --list-extensions --show-versions \ ${lib.optionalString (extensionsToIgnore != []) '' - | grep -v -i '^\(${lib.concatMapStringsSep "\\|" (e : ''${e.publisher}.${e.name}'') extensionsToIgnore}\)' + | grep -v -i '^\(${lib.concatMapStringsSep "\\|" (e : ''${e.publisher}.${e.name}'') extensionsToIgnore}\)' ''} ) ; do [[ $line =~ ([^.]*)\.([^@]*)@(.*) ]] diff --git a/pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix b/pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix index f15d14c7441..e20c631f8c0 100644 --- a/pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix +++ b/pkgs/misc/vscode-extensions/vscodeWithConfiguration.nix @@ -1,22 +1,22 @@ # wrapper over vscode to control extensions per project (extensions folder will be created in execution path) -{ lib -, writeShellScriptBin -, extensionsFromVscodeMarketplace +{ lib +, writeShellScriptBin +, extensionsFromVscodeMarketplace , vscodeDefault }: ## User input -{ vscode ? vscodeDefault +{ vscode ? vscodeDefault # extensions to be symlinked into the project's extensions folder -, nixExtensions ? [] +, nixExtensions ? [] # extensions to be copied into the project's extensions folder -, mutableExtensions ? [] -, vscodeExtsFolderName ? ".vscode-exts" +, mutableExtensions ? [] +, vscodeExtsFolderName ? ".vscode-exts" , user-data-dir ? ''"''${TMP}vscodeWithConfiguration/vscode-data-dir"'' }: -let +let nixExtsDrvs = extensionsFromVscodeMarketplace nixExtensions; mutExtsDrvs = extensionsFromVscodeMarketplace mutableExtensions; - mutableExtsPaths = lib.forEach mutExtsDrvs ( e: + 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}''; @@ -39,16 +39,16 @@ let cp -a ${ePath.origin} ${ePath.target} chmod -R u+rwx ${ePath.target} fi - '') mutableExtsPaths} + '') mutableExtsPaths} ''; in writeShellScriptBin "code" '' - if ! [[ "$@" =~ "--list-extension" ]]; then - mkdir -p "${vscodeExtsFolderName}" + if ! [[ "$@" =~ "--list-extension" ]]; then + 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 }'' } "$@" ''