lol

add updateSettings drv which will union nix settings configurations into the a vscode settings file

+39
+33
pkgs/misc/vscode-extensions/updateSettings.nix
··· 1 + # Updates the vscode setting file base on a nix expression 2 + # should run from the workspace root. 3 + { writeShellScriptBin 4 + , lib 5 + , jq 6 + }: 7 + ##User Input 8 + { settings ? {} 9 + # if marked as true will create an empty json file if does not exists 10 + , createIfDoesNotExists ? true 11 + , vscodeSettingsFile ? .vscode/settings.json 12 + }: 13 + let 14 + #VSCode Settings file 15 + vscodeSettingsFileStr = toString vscodeSettingsFile; 16 + 17 + updateVSCodeSettingsCmd = '' 18 + ( 19 + echo 'updateSettings.nix: Updating ${vscodeSettingsFileStr}...' 20 + oldSettings=$(cat ${vscodeSettingsFileStr}) 21 + echo $oldSettings' ${builtins.toJSON settings}' | ${jq}/bin/jq -s add > ${vscodeSettingsFileStr} 22 + )''; 23 + 24 + createEmptySettingsCmd = ''mkdir -p .vscode && echo "{}" > ${vscodeSettingsFileStr}''; 25 + in 26 + writeShellScriptBin ''vscodeNixUpdate-${lib.removeSuffix ".json" (builtins.baseNameOf vscodeSettingsFileStr)}'' 27 + (lib.optionalString (settings != {}) 28 + (if createIfDoesNotExists then '' 29 + [ ! -f "${vscodeSettingsFileStr}" ] && ${createEmptySettingsCmd} 30 + ${updateVSCodeSettingsCmd} 31 + '' 32 + else ''[ -f "${vscodeSettingsFileStr}" ] && ${updateVSCodeSettingsCmd}'' 33 + ))
+6
pkgs/misc/vscode-extensions/updateSettingsTest.nix
··· 1 + with import <nixpkgs>{}; 2 + callPackage (import ./updateSettings.nix) {} { 3 + settings = { 4 + a = "fdsdf"; 5 + }; 6 + }