From 64324ab1507b25cc6cc09338ecf63faee1c96c69 Mon Sep 17 00:00:00 2001 From: Andreas Schaafsma Date: Sat, 29 Aug 2026 00:21:23 +0200 Subject: [PATCH] add vscode-modernized --- overlays/vscode-modernized/default.nix | 100 +++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 overlays/vscode-modernized/default.nix diff --git a/overlays/vscode-modernized/default.nix b/overlays/vscode-modernized/default.nix new file mode 100644 index 0000000..17bf2f5 --- /dev/null +++ b/overlays/vscode-modernized/default.nix @@ -0,0 +1,100 @@ +# overlays/vscode-modernized/default.nix +{ ... }: + +final: prev: + +let + modernized = prev.fetchFromGitHub { + owner = "Sukarth"; + repo = "VS-Code-Modernized"; + # Pin this once working. + rev = "main"; + hash = "sha256-hvNYlzThAPSR5IBQbqGYjn3kRaUvtWLWtDr2G7zjBoc="; + }; + + injectModernized = vscodePkg: + vscodePkg.overrideAttrs (old: { + postInstall = (old.postInstall or "") + '' + ( + set -euo pipefail + + candidates=( + "$out/lib/vscode/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html" + "$out/lib/vscode/resources/app/out/vs/code/electron-sandbox/workbench/workbench.esm.html" + "$out/lib/vscode/resources/app/out/vs/code/electron-browser/workbench/workbench.html" + "$out/lib/vscode/resources/app/out/vs/code/electron-browser/workbench/workbench.esm.html" + ) + + workbench="" + for candidate in "''${candidates[@]}"; do + if [ -f "$candidate" ]; then + workbench="$candidate" + break + fi + done + + if [ -z "$workbench" ]; then + echo "VS Code Modernized: could not find workbench.html" >&2 + find "$out/lib/vscode/resources/app/out/vs" -name 'workbench*.html' -print >&2 || true + exit 1 + fi + + # Build one self-contained CSS file. + cat > /tmp/vscode-modernized-inline.css <<'EOF' +/* VS Code Modernized dynamic settings */ +:root { + --vscode-modernized-spacing: 0.35rem; + --vscode-modernized-border-radius: 0.5rem; + --vscode-modernized-tab-spacing: 0.2rem; +} +EOF + + cat "${modernized}/styles/styles.css" >> /tmp/vscode-modernized-inline.css + + # Smoke-test styles. Remove later if you want. + cat >> /tmp/vscode-modernized-inline.css <<'EOF' + +/* Nix smoke test: these should be very visible */ +.monaco-workbench .part.sidebar, +.monaco-workbench .part.auxiliarybar, +.monaco-workbench .part.panel, +.monaco-workbench .editor-group-container, +.monaco-workbench .tabs-container, +.monaco-workbench .tab, +.monaco-workbench .monaco-list-row, +.monaco-workbench .quick-input-widget { + border-radius: var(--vscode-modernized-border-radius) !important; + overflow: hidden !important; +} + +.monaco-workbench .part.sidebar, +.monaco-workbench .part.panel, +.monaco-workbench .editor-group-container { + margin: var(--vscode-modernized-spacing) !important; +} +EOF + + css="$(sed \ + -e 's/&/\&/g' \ + -e 's//\>/g' \ + /tmp/vscode-modernized-inline.css)" + + inject=" + + + +" + + substituteInPlace "$workbench" \ + --replace-fail '' "$inject +" + ) + ''; + }); +in +{ + vscode-modernized = injectModernized prev.vscode; +} \ No newline at end of file