add vscode-modernized
This commit is contained in:
@@ -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' \
|
||||
-e 's/>/\>/g' \
|
||||
/tmp/vscode-modernized-inline.css)"
|
||||
|
||||
inject="
|
||||
<!-- VS Code Modernized - Nix injected -->
|
||||
<style id=\"vscode-modernized-nix\">
|
||||
$css
|
||||
</style>
|
||||
<!-- /VS Code Modernized - Nix injected -->
|
||||
"
|
||||
|
||||
substituteInPlace "$workbench" \
|
||||
--replace-fail '</html>' "$inject
|
||||
</html>"
|
||||
)
|
||||
'';
|
||||
});
|
||||
in
|
||||
{
|
||||
vscode-modernized = injectModernized prev.vscode;
|
||||
}
|
||||
Reference in New Issue
Block a user