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

@@ -29,12 +29,13 @@ lib.mkMerge [
}; };
}; };
home-manager.users.${user}.home = { home-manager.users.${user} = {
packages = with pkgs; [ docker-compose ]; home = {
packages = with pkgs; [ docker-compose ];
sessionVariables = { sessionVariables.DOCKER_CONFIG = "${home}/.config/docker";
DOCKER_CONFIG = "${home}/.config/docker";
}; };
programs.vscode.languages.docker.enable = true;
}; };
} }
(lib.mkIf rootless { (lib.mkIf rootless {

View File

@@ -13,5 +13,7 @@
config.environment.persistence."/persist"."${home}/.config/sops-nix/key.txt".source; config.environment.persistence."/persist"."${home}/.config/sops-nix/key.txt".source;
home.sessionVariables.SOPS_AGE_KEY_FILE = home.sessionVariables.SOPS_AGE_KEY_FILE =
config.environment.persistence."/persist"."${home}/.config/sops-nix/key.txt".source; config.environment.persistence."/persist"."${home}/.config/sops-nix/key.txt".source;
programs.vscode.languages.sops.enable = true;
}; };
} }

View File

@@ -31,6 +31,8 @@ in
}; };
home-manager.users.${user} = { home-manager.users.${user} = {
imports = [ ./options.nix ];
programs.vscode = { programs.vscode = {
enable = true; enable = true;
@@ -39,11 +41,8 @@ in
extensions = with pkgs.vscode-extensions; [ extensions = with pkgs.vscode-extensions; [
mkhl.direnv mkhl.direnv
mhutchie.git-graph mhutchie.git-graph
ms-azuretools.vscode-docker
ms-vsliveshare.vsliveshare ms-vsliveshare.vsliveshare
naumovs.color-highlight naumovs.color-highlight
signageos.signageos-vscode-sops
humao.rest-client
]; ];
userSettings = { userSettings = {
@@ -105,7 +104,6 @@ in
"window.menuBarVisibility" = "toggle"; "window.menuBarVisibility" = "toggle";
"workbench.editor.historyBasedLanguageDetection" = true; "workbench.editor.historyBasedLanguageDetection" = true;
"workbench.list.smoothScrolling" = true; "workbench.list.smoothScrolling" = true;
"rest-client.enableTelemetry" = false;
}; };
}; };
@@ -115,19 +113,6 @@ in
password-store = "basic"; 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}" ]; 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; [ programs.vscode.extensions = with pkgs.vscode-extensions; [
ms-vscode.cpptools ms-vscode.cpptools
ms-vscode.cmake-tools 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; [ programs.vscode.extensions = with pkgs.vscode-extensions; [
golang.go golang.go
]; ];

View File

@@ -1,5 +1,10 @@
{ pkgs, ... }:
{ {
config,
lib,
pkgs,
...
}:
lib.mkIf config.programs.vscode.languages.java.enable {
programs.vscode = { programs.vscode = {
extensions = extensions =
with pkgs; 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; [ programs.vscode.extensions = with pkgs.vscode-extensions; [
sumneko.lua 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; [ programs.vscode.extensions = with pkgs.vscode-extensions; [
yzhang.markdown-all-in-one 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 = { programs.vscode = {
userSettings = { userSettings = {
"nix.enableLanguageServer" = true; "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; [ programs.vscode.extensions = with pkgs.vscode-extensions; [
ms-python.python ms-python.python
ms-python.vscode-pylance 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

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

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 = { programs.vscode = {
userSettings = { userSettings = {
"svelte.enable-ts-plugin" = true; "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 = { programs.vscode.userSettings = {
"typescript.updateImportsOnFileMove.enabled" = "always"; "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; [ programs.vscode.extensions = with pkgs.vscode-extensions; [
redhat.vscode-yaml 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;
})
];
};
};
}

View File

@@ -0,0 +1,19 @@
{
user ? throw "user argument is required",
home ? throw "home argument is required",
}:
{ ... }:
{
home-manager.users.${user}.programs.vscode.languages = {
c.enable = true;
go.enable = true;
java.enable = true;
lua.enable = true;
markdown.enable = true;
nix.enable = true;
python.enable = true;
rest.enable = true;
typescript.enable = true;
yaml.enable = true;
};
}

View File

@@ -80,6 +80,7 @@ in
(import ./configs/console/syncthing { inherit user home; }) (import ./configs/console/syncthing { inherit user home; })
(import ./configs/gui/obsidian { inherit user home; }) (import ./configs/gui/obsidian { inherit user home; })
(import ./configs/gui/vscode { inherit user home; })
]; ];
# echo "password" | mkpasswd -s # echo "password" | mkpasswd -s

View File

@@ -2,25 +2,24 @@
user ? throw "user argument is required", user ? throw "user argument is required",
home ? throw "home argument is required", home ? throw "home argument is required",
}: }:
{ pkgs, ... }: { ... }:
{ {
home-manager.users.${user} = { home-manager.users.${user}.programs.vscode = {
programs.vscode = { copilot.enable = true;
extensions = with pkgs.vscode-extensions; [
github.copilot
github.copilot-chat
];
userSettings = { languages = {
"github.copilot.enable" = { c.enable = true;
"*" = true; go.enable = true;
"plaintext" = true; java.enable = true;
"markdown" = true; jinja.enable = true;
}; lua.enable = true;
"chat.editing.alwaysSaveWithGeneratedChanges" = true; markdown.enable = true;
}; nix.enable = true;
python.enable = true;
rest.enable = true;
sas.enable = true;
typescript.enable = true;
yaml.enable = true;
}; };
imports = [ ./langs/sas ];
}; };
} }