Refactor vscode language handling
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -31,6 +31,8 @@ in
|
||||
};
|
||||
|
||||
home-manager.users.${user} = {
|
||||
imports = [ ./options.nix ];
|
||||
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
|
||||
@@ -39,11 +41,8 @@ in
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
mkhl.direnv
|
||||
mhutchie.git-graph
|
||||
ms-azuretools.vscode-docker
|
||||
ms-vsliveshare.vsliveshare
|
||||
naumovs.color-highlight
|
||||
signageos.signageos-vscode-sops
|
||||
humao.rest-client
|
||||
];
|
||||
|
||||
userSettings = {
|
||||
@@ -105,7 +104,6 @@ in
|
||||
"window.menuBarVisibility" = "toggle";
|
||||
"workbench.editor.historyBasedLanguageDetection" = true;
|
||||
"workbench.list.smoothScrolling" = true;
|
||||
"rest-client.enableTelemetry" = false;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -115,19 +113,6 @@ in
|
||||
password-store = "basic";
|
||||
};
|
||||
|
||||
imports = [
|
||||
./langs/c
|
||||
./langs/go
|
||||
./langs/java
|
||||
./langs/lua
|
||||
./langs/markdown
|
||||
./langs/nix
|
||||
./langs/python
|
||||
./langs/svelte
|
||||
./langs/typescript
|
||||
./langs/yaml
|
||||
];
|
||||
|
||||
wayland.windowManager.hyprland.settings.bind = [ "$mod, c, exec, ${lib.meta.getExe pkgs.vscode}" ];
|
||||
};
|
||||
}
|
||||
|
@@ -1,5 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.c.enable {
|
||||
programs.vscode.extensions = with pkgs.vscode-extensions; [
|
||||
ms-vscode.cpptools
|
||||
ms-vscode.cmake-tools
|
||||
|
@@ -0,0 +1,11 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.docker.enable {
|
||||
programs.vscode.extensions = with pkgs.vscode-extensions; [
|
||||
ms-azuretools.vscode-docker
|
||||
];
|
||||
}
|
@@ -1,5 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.go.enable {
|
||||
programs.vscode.extensions = with pkgs.vscode-extensions; [
|
||||
golang.go
|
||||
];
|
||||
|
@@ -1,5 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.java.enable {
|
||||
programs.vscode = {
|
||||
extensions =
|
||||
with pkgs;
|
||||
|
11
hosts/common/configs/user/gui/vscode/langs/jinja/default.nix
Normal file
11
hosts/common/configs/user/gui/vscode/langs/jinja/default.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.jinja.enable {
|
||||
programs.vscode.extensions = with pkgs.vscode-extensions; [
|
||||
wholroyd.jinja
|
||||
];
|
||||
}
|
@@ -1,5 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.lua.enable {
|
||||
programs.vscode.extensions = with pkgs.vscode-extensions; [
|
||||
sumneko.lua
|
||||
];
|
||||
|
@@ -1,5 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.markdown.enable {
|
||||
programs.vscode.extensions = with pkgs.vscode-extensions; [
|
||||
yzhang.markdown-all-in-one
|
||||
];
|
||||
|
@@ -1,5 +1,10 @@
|
||||
{ lib, pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.nix.enable {
|
||||
programs.vscode = {
|
||||
userSettings = {
|
||||
"nix.enableLanguageServer" = true;
|
||||
|
@@ -1,5 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.python.enable {
|
||||
programs.vscode.extensions = with pkgs.vscode-extensions; [
|
||||
ms-python.python
|
||||
ms-python.vscode-pylance
|
||||
|
17
hosts/common/configs/user/gui/vscode/langs/rest/default.nix
Normal file
17
hosts/common/configs/user/gui/vscode/langs/rest/default.nix
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.rest.enable {
|
||||
programs.vscode = {
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
humao.rest-client
|
||||
];
|
||||
|
||||
userSettings = {
|
||||
"rest-client.enableTelemetry" = false;
|
||||
};
|
||||
};
|
||||
}
|
20
hosts/common/configs/user/gui/vscode/langs/sas/default.nix
Normal file
20
hosts/common/configs/user/gui/vscode/langs/sas/default.nix
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.sas.enable {
|
||||
programs.vscode = {
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
sas.sas-lsp
|
||||
];
|
||||
|
||||
userSettings = {
|
||||
"SAS.connectionProfiles" = {
|
||||
activeProfile = "";
|
||||
profiles = { };
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
11
hosts/common/configs/user/gui/vscode/langs/sops/default.nix
Normal file
11
hosts/common/configs/user/gui/vscode/langs/sops/default.nix
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.sops.enable {
|
||||
programs.vscode.extensions = with pkgs.vscode-extensions; [
|
||||
signageos.signageos-vscode-sops
|
||||
];
|
||||
}
|
@@ -1,5 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.svelte.enable {
|
||||
programs.vscode = {
|
||||
userSettings = {
|
||||
"svelte.enable-ts-plugin" = true;
|
||||
|
@@ -1,5 +1,10 @@
|
||||
{ ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.typescript.enable {
|
||||
programs.vscode.userSettings = {
|
||||
"typescript.updateImportsOnFileMove.enabled" = "always";
|
||||
};
|
||||
|
@@ -1,5 +1,10 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
lib.mkIf config.programs.vscode.languages.yaml.enable {
|
||||
programs.vscode.extensions = with pkgs.vscode-extensions; [
|
||||
redhat.vscode-yaml
|
||||
];
|
||||
|
73
hosts/common/configs/user/gui/vscode/options.nix
Normal file
73
hosts/common/configs/user/gui/vscode/options.nix
Normal file
@@ -0,0 +1,73 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.programs.vscode;
|
||||
in
|
||||
{
|
||||
options.programs.vscode = with lib; {
|
||||
languages = {
|
||||
c.enable = mkEnableOption "C";
|
||||
docker.enable = mkEnableOption "Docker";
|
||||
go.enable = mkEnableOption "Go";
|
||||
java.enable = mkEnableOption "Java";
|
||||
jinja.enable = mkEnableOption "Jinja";
|
||||
lua.enable = mkEnableOption "Lua";
|
||||
markdown.enable = mkEnableOption "Markdown";
|
||||
nix.enable = mkEnableOption "Nix";
|
||||
python.enable = mkEnableOption "Python";
|
||||
rest.enable = mkEnableOption "REST";
|
||||
sas.enable = mkEnableOption "SAS";
|
||||
sops.enable = mkEnableOption "SOPS";
|
||||
svelte.enable = mkEnableOption "Svelte";
|
||||
typescript.enable = mkEnableOption "TypeScript";
|
||||
yaml.enable = mkEnableOption "YAML";
|
||||
};
|
||||
|
||||
copilot.enable = mkEnableOption "GitHub Copilot";
|
||||
};
|
||||
|
||||
imports = [
|
||||
./langs/c
|
||||
./langs/docker
|
||||
./langs/go
|
||||
./langs/java
|
||||
./langs/jinja
|
||||
./langs/lua
|
||||
./langs/markdown
|
||||
./langs/nix
|
||||
./langs/python
|
||||
./langs/rest
|
||||
./langs/sas
|
||||
./langs/sops
|
||||
./langs/svelte
|
||||
./langs/typescript
|
||||
./langs/yaml
|
||||
];
|
||||
|
||||
config = {
|
||||
programs.vscode = {
|
||||
extensions =
|
||||
with pkgs.vscode-extensions;
|
||||
[ ]
|
||||
++ lib.lists.optionals cfg.copilot.enable [
|
||||
github.copilot
|
||||
github.copilot-chat
|
||||
];
|
||||
|
||||
userSettings = lib.mkMerge [
|
||||
(lib.mkIf cfg.copilot.enable {
|
||||
"github.copilot.enable" = {
|
||||
"*" = true;
|
||||
"plaintext" = true;
|
||||
"markdown" = true;
|
||||
};
|
||||
"chat.editing.alwaysSaveWithGeneratedChanges" = true;
|
||||
})
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user