diff --git a/nixos/modules/nixos/editor/default.nix b/nixos/modules/nixos/editor/default.nix index 969feda..867fdeb 100644 --- a/nixos/modules/nixos/editor/default.nix +++ b/nixos/modules/nixos/editor/default.nix @@ -2,6 +2,50 @@ with lib; let cfg = config.mySystem.editor.vscode; + # VSCode Community Extensions. These are updated daily. + vscodeCommunityExtensions = [ + "dracula-theme.theme-dracula" + "esbenp.prettier-vscode" + "jnoortheen.nix-ide" + "mikestead.dotenv" + "ms-azuretools.vscode-docker" + # Python extensions *required* for redhat.ansible/vscode-yaml + "ms-python.python" + "ms-python.vscode-pylance" + "ms-vscode-remote.remote-ssh" + "ms-vscode-remote.remote-ssh-edit" + "pkief.material-icon-theme" + "redhat.ansible" + "redhat.vscode-yaml" + "signageos.signageos-vscode-sops" + "tamasfe.even-better-toml" + "tyriar.sort-lines" + "yzhang.markdown-all-in-one" + ]; + # Nixpkgs Extensions. These are updated whenver they get around to it. + vscodeNixpkgsExtensions = [ + # Continue ships with a binary that requires the patchelf fix which is done by default in nixpkgs. + "continue.continue" + ]; + # Straight from the VSCode marketplace. + marketplaceExtensions = [ + { + name = "copilot"; + publisher = "github"; + version = "1.219.0"; + sha256 = "Y/l59JsmAKtENhBBf965brSwSkTjSOEuxc3tlWI88sY="; + } + { + name = "copilot-chat"; + publisher = "github"; + version = "0.17.1"; + sha256 = "Aa4gmHJCveP18v6CAvmkxmqf1JV1LygyQFNpzDz64Gw="; + } + ]; + # Extract extension strings and coerce them to a list of valid attribute paths. + vscodeCommunityExtensionsPackages = map (ext: getAttrFromPath (splitString "." ext) pkgs.vscode-marketplace) vscodeCommunityExtensions; + nixpkgsExtensionsPackages = map (ext: getAttrFromPath (splitString "." ext) pkgs.vscode-extensions) vscodeNixpkgsExtensions; + marketplaceExtensionsPackages = pkgs.vscode-utils.extensionsFromVscodeMarketplace marketplaceExtensions; in { options.mySystem.editor.vscode.enable = mkEnableOption "vscode"; @@ -11,41 +55,9 @@ in environment.systemPackages = with pkgs; [ (vscode-with-extensions.override { vscode = unstable.vscode; - + # Merge all the extension packages together. vscodeExtensions = - [ - vscode-extensions.dracula-theme.theme-dracula - vscode-extensions.yzhang.markdown-all-in-one - vscode-extensions.signageos.signageos-vscode-sops - vscode-extensions.redhat.ansible - vscode-extensions.ms-azuretools.vscode-docker - vscode-extensions.mikestead.dotenv - vscode-extensions.tamasfe.even-better-toml - vscode-extensions.pkief.material-icon-theme - vscode-extensions.jnoortheen.nix-ide - vscode-extensions.ms-vscode-remote.remote-ssh - vscode-extensions.ms-vscode-remote.remote-ssh-edit - vscode-extensions.redhat.vscode-yaml - # vscode-marketplace.continue.continue - # vscode-marketplace.github.copilot - # vscode-marketplace.github.copilot-chat - vscode-extensions.continue.continue - vscode-extensions.ms-python.python - vscode-extensions.ms-python.vscode-pylance - ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ - { - name = "copilot"; - publisher = "github"; - version = "1.219.0"; - sha256 = "Y/l59JsmAKtENhBBf965brSwSkTjSOEuxc3tlWI88sY="; - } - { - name = "copilot-chat"; - publisher = "github"; - version = "0.17.1"; - sha256 = "sha256-Aa4gmHJCveP18v6CAvmkxmqf1JV1LygyQFNpzDz64Gw="; - } - ]; + vscodeCommunityExtensionsPackages ++ nixpkgsExtensionsPackages ++ marketplaceExtensionsPackages; }) ]; };