This commit is contained in:
2025-11-03 17:46:57 +09:00
parent ca5bc1f1b4
commit 96743ee859
+60 -12
View File
@@ -1,20 +1,68 @@
{ pkgs, ... }: {
{ pkgs, lib, ... }:
let
vsc = pkgs.vscode-extensions;
inherit (lib) recursiveUpdate;
layers = rec {
common = {
extensions = with vsc; [
dracula-theme.theme-dracula
];
userSettings = {
"workbench.colorTheme" = "Dracula";
"window.autoDetectColorScheme" = false;
"editor.formatOnSave" = true;
};
};
web = {
extensions = with vsc; [
dbaeumer.vscode-eslint
];
userSettings = {
"editor.defaultFormatter" = "esbenp.prettier-vscode";
};
};
nix = {
extensions = with vsc; [
bbenoist.Nix
jnoortheen.nix-ide
];
userSettings = {
"nix.enableLanguageServer" = true;
"nix.serverPath" = "nil";
};
};
};
combine = (ls:
builtins.foldl' (acc: l: {
extensions = acc.extensions ++ (l.extensions or []);
userSettings = recursiveUpdate acc.userSettings (l.userSettings or {});
}) { extensions = []; userSettings = {}; } ls
);
# mkProfile [layers...] { extensions = [...]; userSettings = { ... }; }
mkProfile = layersList: extras:
let base = combine layersList;
in {
extensions = base.extensions ++ (extras.extensions or []);
userSettings = recursiveUpdate base.userSettings (extras.userSettings or {});
};
in {
nixpkgs.config.allowUnfree = true;
programs.vscode = {
enable = true;
profiles = {
default = {
extensions = with pkgs.vscode-extensions; [
esbenp.prettier-vscode
dracula-theme.theme-dracula
];
userSettings = {
"workbench.colorTheme" = "Dracula";
"window.autoDetectColorScheme" = false;
};
};
profiles = {
default = mkProfile [ layers.common ] { };
nix = mkProfile [ layers.common layers.nix ] { };
web = mkProfile [ layers.common layers.web ] { };
};
};
}