Refactor vscode language handling

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2025-02-13 10:21:37 +00:00
parent 05e04268da
commit 97a042adcd
22 changed files with 235 additions and 50 deletions

View File

@@ -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}" ];
};
}

View File

@@ -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

View File

@@ -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
];
}

View File

@@ -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
];

View File

@@ -1,5 +1,10 @@
{ pkgs, ... }:
{
config,
lib,
pkgs,
...
}:
lib.mkIf config.programs.vscode.languages.java.enable {
programs.vscode = {
extensions =
with pkgs;

View 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
];
}

View File

@@ -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
];

View File

@@ -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
];

View File

@@ -1,5 +1,10 @@
{ lib, pkgs, ... }:
{
config,
lib,
pkgs,
...
}:
lib.mkIf config.programs.vscode.languages.nix.enable {
programs.vscode = {
userSettings = {
"nix.enableLanguageServer" = true;

View File

@@ -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

View 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;
};
};
}

View 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 = { };
};
};
};
}

View 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
];
}

View File

@@ -1,5 +1,10 @@
{ pkgs, ... }:
{
config,
lib,
pkgs,
...
}:
lib.mkIf config.programs.vscode.languages.svelte.enable {
programs.vscode = {
userSettings = {
"svelte.enable-ts-plugin" = true;

View File

@@ -1,5 +1,10 @@
{ ... }:
{
config,
lib,
pkgs,
...
}:
lib.mkIf config.programs.vscode.languages.typescript.enable {
programs.vscode.userSettings = {
"typescript.updateImportsOnFileMove.enabled" = "always";
};

View File

@@ -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
];

View 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;
})
];
};
};
}