fix(vscode): pin theme extensions for 10 marketplace palettes
Before this fix, only the 6 palettes whose theme extensions ship in
pkgs.vscode-extensions had working VSCode theming. Every other palette
had `workbench.colorTheme` set to a name VSCode couldn't find, so it
silently fell back to its built-in default. Including the DEFAULT
summer-night palette (sainnhe.everforest) — the default install had
broken VSCode theming.
Probed the 13 unique extensions against the VSCode marketplace
extensionquery API:
- 10 exist and are pinnable: sainnhe.everforest,
shadesOfBuntu.flexoki-light, qufiwefefwoyn.kanagawa,
oldjobobo.{lumon,miasma,retro-82}-theme, TahaYVR.matteblack,
jovejonovski.ocean-green, monokai.theme-monokai-pro-vscode,
Bjarne.white-theme.
- 3 don't exist on the marketplace and are unpublished custom
Nomarchy themes: Bjarne.{ethereal,hackerman,vantablack}-nomarchy.
Logged as a new Later row.
For the 10, fetched version + sha256 via:
URL='https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage'
nix store prefetch-file --hash-type sha256 "$URL"
Added a marketplaceExtensions list to features/apps/vscode.nix that
wraps each in pkgs.vscode-utils.extensionFromVscodeMarketplace and
concatenates with the existing nixpkgs-packaged list — so 10 more
palettes (including the default) now get correct VSCode theming on
first launch. Smoke-built sainnhe.everforest end-to-end. Module
comment documents the version-bump procedure.
docs/OPTIONS.md updated: the nomarchy.vscode.devExtensions entry
drops the "still break" caveat for everything except the three
unpublished Bjarne palettes.
`nix flake check --no-build` clean.
This commit is contained in:
@@ -7,24 +7,76 @@ let
|
||||
else
|
||||
{ name = "Default Dark Modern"; };
|
||||
|
||||
# Theme extensions matching palette vscode.json `extension` fields. Always
|
||||
# installed because workbench.colorTheme is set unconditionally from the
|
||||
# active palette — without the matching extension VSCode silently falls
|
||||
# back to its default theme. Only the extensions available in
|
||||
# pkgs.vscode-extensions are listed. Palettes whose theme extension is on
|
||||
# the VSCode marketplace but not packaged in nixpkgs (sainnhe.everforest —
|
||||
# affects the DEFAULT summer-night palette — plus qufiwefefwoyn.kanagawa,
|
||||
# monokai.theme-monokai-pro-vscode, oldjobobo.*, Bjarne.*,
|
||||
# shadesOfBuntu.flexoki-light, jovejonovski.ocean-green, TahaYVR.matteblack)
|
||||
# still break and need pkgs.vscode-utils.extensionFromVscodeMarketplace —
|
||||
# tracked in ROADMAP Later.
|
||||
themeExtensions = with pkgs.vscode-extensions; [
|
||||
# Theme extensions matching palette vscode.json `extension` fields.
|
||||
# Always installed because workbench.colorTheme is set unconditionally
|
||||
# from the active palette — without the matching extension VSCode
|
||||
# silently falls back to its default theme.
|
||||
#
|
||||
# The list is split because nixpkgs doesn't package every theme our
|
||||
# palettes use. Six are in pkgs.vscode-extensions; the rest are pulled
|
||||
# from the VSCode marketplace via extensionFromVscodeMarketplace with
|
||||
# publisher / name / version / sha256 pinned. To refresh a version,
|
||||
# bump the `version` and `nix-prefetch-url` the new .vsix:
|
||||
#
|
||||
# URL='https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage'
|
||||
# nix store prefetch-file --hash-type sha256 "$URL"
|
||||
#
|
||||
# Three palette extensions remain unfixed because the corresponding
|
||||
# marketplace entries don't exist — Bjarne.ethereal-nomarchy,
|
||||
# Bjarne.hackerman-nomarchy, Bjarne.vantablack-nomarchy. The matching
|
||||
# palettes (ethereal, hackerman, vantablack) still fall back to
|
||||
# VSCode's default theme; see the ROADMAP Later row for next steps.
|
||||
|
||||
marketplaceExtensions = with pkgs.vscode-utils; [
|
||||
(extensionFromVscodeMarketplace { # everforest, summer-day, summer-night
|
||||
publisher = "sainnhe"; name = "everforest"; version = "0.3.0";
|
||||
sha256 = "sha256-nZirzVvM160ZTpBLTimL2X35sIGy5j2LQOok7a2Yc7U=";
|
||||
})
|
||||
(extensionFromVscodeMarketplace { # flexoki-light
|
||||
publisher = "shadesOfBuntu"; name = "flexoki-light"; version = "1.0.0";
|
||||
sha256 = "sha256-//y9uvIUGGDEhd8inDHvNy2e1IKNx6hSfO9sxNOTcUE=";
|
||||
})
|
||||
(extensionFromVscodeMarketplace { # kanagawa
|
||||
publisher = "qufiwefefwoyn"; name = "kanagawa"; version = "1.5.1";
|
||||
sha256 = "sha256-AGGioXcK/fjPaFaWk2jqLxovUNR59gwpotcSpGNbj1c=";
|
||||
})
|
||||
(extensionFromVscodeMarketplace { # lumon
|
||||
publisher = "oldjobobo"; name = "lumon-theme"; version = "0.0.7";
|
||||
sha256 = "sha256-YlO1r1JjaumiicvMk5fBr+PZCYFaII03PaLiyqE35Go=";
|
||||
})
|
||||
(extensionFromVscodeMarketplace { # matte-black
|
||||
publisher = "TahaYVR"; name = "matteblack"; version = "1.0.3";
|
||||
sha256 = "sha256-wn/llGidzyPd91XT3xVqAvaU4NcTTggTSz8WmUcV8HM=";
|
||||
})
|
||||
(extensionFromVscodeMarketplace { # miasma
|
||||
publisher = "oldjobobo"; name = "miasma-theme"; version = "0.1.1";
|
||||
sha256 = "sha256-STFTGFhQqxocr+YNFQp36IQWJRKTDBgBg4MOCOq1IPQ=";
|
||||
})
|
||||
(extensionFromVscodeMarketplace { # osaka-jade
|
||||
publisher = "jovejonovski"; name = "ocean-green"; version = "1.1.2";
|
||||
sha256 = "sha256-sUNjnzqXya23Uieg8RLcEfnxiX0ImZ6CIjFtSJ66vM4=";
|
||||
})
|
||||
(extensionFromVscodeMarketplace { # retro-82
|
||||
publisher = "oldjobobo"; name = "retro-82-theme"; version = "0.1.4";
|
||||
sha256 = "sha256-GqFeFFG5scO7CEXlKjj6uoilCoUfpRaQa5jBSnNJyJA=";
|
||||
})
|
||||
(extensionFromVscodeMarketplace { # ristretto
|
||||
publisher = "monokai"; name = "theme-monokai-pro-vscode"; version = "2.0.13";
|
||||
sha256 = "sha256-5bKwVzDfZoSipR04tPDx9jbKhYsSsa3z6Ei9E2jhudo=";
|
||||
})
|
||||
(extensionFromVscodeMarketplace { # white
|
||||
publisher = "Bjarne"; name = "white-theme"; version = "0.0.1";
|
||||
sha256 = "sha256-3ZyWNVlQO3Tof49FFF3OImuo7hgtJXLNuwQ+iHjzzGk=";
|
||||
})
|
||||
];
|
||||
|
||||
themeExtensions = (with pkgs.vscode-extensions; [
|
||||
catppuccin.catppuccin-vsc # catppuccin, catppuccin-latte
|
||||
enkia.tokyo-night # tokyo-night
|
||||
arcticicestudio.nord-visual-studio-code # nord
|
||||
mvllow.rose-pine # rose-pine
|
||||
jdinhlife.gruvbox # gruvbox
|
||||
];
|
||||
]) ++ marketplaceExtensions;
|
||||
|
||||
# Development extensions — opt-in via nomarchy.vscode.devExtensions.
|
||||
devExtensions = with pkgs.vscode-extensions; [
|
||||
|
||||
Reference in New Issue
Block a user