mirror of
https://github.com/moons-14/dotfiles.git
synced 2026-10-06 01:58:12 +09:00
vscode
This commit is contained in:
+60
-12
@@ -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 ] { };
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user