diff --git a/nix/configuration/roles/vscode/default.nix b/nix/configuration/roles/vscode/default.nix index 6b65927..e3103d8 100644 --- a/nix/configuration/roles/vscode/default.nix +++ b/nix/configuration/roles/vscode/default.nix @@ -5,6 +5,62 @@ ... }: +let + extensions_to_install = + final: + with final.vscode-extensions; + let + common = [ + bbenoist.nix + ms-azuretools.vscode-docker + ms-vscode-remote.remote-ssh + esbenp.prettier-vscode + ]; + work_specific = [ + # ms-python.vscode-pylance + ] + ++ (pkgs.vscode-utils.extensionsFromVscodeMarketplace [ + { + name = "remote-server"; + publisher = "ms-vscode"; + version = "1.5.3"; + sha256 = "MSayIBwvSgIHg6gTrtUotHznvo5kTiveN8iSrehllW0="; + } + { + name = "vscode-python-envs"; + publisher = "ms-python"; + version = "1.12.0"; + sha256 = "8dCnGBuxv+8QwP0FrUZIKFxllVOR2z+wIhyyJgxsRns="; + } + { + name = "vscode-pylance"; + publisher = "ms-python"; + version = "2025.10.1"; + sha256 = "7NLq5huykRAhhEIHjtXLKDBFwQ5yiJKFLG64Tjh0yaM="; + } + { + name = "debugpy"; + publisher = "ms-python"; + version = "2025.16.0"; + sha256 = "QPIDUzzwIfzyicsCwqU2u6hVSjCJMInHhHMBqvL8tYs="; + } + { + name = "python"; + publisher = "ms-python"; + version = "2025.18.0"; + sha256 = "6auzfS1DmOuaqV2rDHSCC9BlrcON4xUrdJZ0N0wYCs4="; + } + ]); + personal_specific = [ + ms-python.python + ms-python.debugpy + ]; + in + if config.me.vscode.enable_work_profile then + common ++ work_specific + else + common ++ personal_specific; +in { imports = [ ]; @@ -34,66 +90,7 @@ ]; environment.systemPackages = with pkgs; [ - (vscode-with-extensions.override { - vscodeExtensions = - with vscode-extensions; - ( - [ - bbenoist.nix - ms-azuretools.vscode-docker - ms-vscode-remote.remote-ssh - esbenp.prettier-vscode - ] - ++ ( - if config.me.vscode.enable_work_profile then - [ - # ms-python.vscode-pylance - ] - else - [ - ms-python.python - ms-python.debugpy - ] - ) - ++ (pkgs.vscode-utils.extensionsFromVscodeMarketplace ( - if config.me.vscode.enable_work_profile then - [ - { - name = "remote-server"; - publisher = "ms-vscode"; - version = "1.5.3"; - sha256 = "MSayIBwvSgIHg6gTrtUotHznvo5kTiveN8iSrehllW0="; - } - { - name = "vscode-python-envs"; - publisher = "ms-python"; - version = "1.12.0"; - sha256 = "8dCnGBuxv+8QwP0FrUZIKFxllVOR2z+wIhyyJgxsRns="; - } - { - name = "vscode-pylance"; - publisher = "ms-python"; - version = "2025.10.1"; - sha256 = "7NLq5huykRAhhEIHjtXLKDBFwQ5yiJKFLG64Tjh0yaM="; - } - { - name = "debugpy"; - publisher = "ms-python"; - version = "2025.16.0"; - sha256 = "QPIDUzzwIfzyicsCwqU2u6hVSjCJMInHhHMBqvL8tYs="; - } - { - name = "python"; - publisher = "ms-python"; - version = "2025.18.0"; - sha256 = "6auzfS1DmOuaqV2rDHSCC9BlrcON4xUrdJZ0N0wYCs4="; - } - ] - else - [ ] - )) - ); - }) + vscode-with-extensions ]; me.install.user.talexander.file = { @@ -156,5 +153,25 @@ ]; }; }; + + nixpkgs.overlays = [ + (final: prev: { + vscode-with-extensions = ( + prev.vscode-with-extensions.override { + vscodeExtensions = (extensions_to_install final); + } + ); + }) + (final: prev: { + vscode-with-extensions = pkgs.symlinkJoin { + name = prev.vscode-with-extensions.name; + paths = [ prev.vscode-with-extensions ]; + buildInputs = [ pkgs.makeWrapper ]; + postBuild = '' + wrapProgram $out/bin/code --add-flags --password-store=gnome-libsecret + ''; + }; + }) + ]; }; }