diff --git a/hosts/common/configs/user/console/docker/default.nix b/hosts/common/configs/user/console/docker/default.nix index 56a32a9..be5b9a7 100644 --- a/hosts/common/configs/user/console/docker/default.nix +++ b/hosts/common/configs/user/console/docker/default.nix @@ -29,12 +29,13 @@ lib.mkMerge [ }; }; - home-manager.users.${user}.home = { - packages = with pkgs; [ docker-compose ]; - - sessionVariables = { - DOCKER_CONFIG = "${home}/.config/docker"; + home-manager.users.${user} = { + home = { + packages = with pkgs; [ docker-compose ]; + sessionVariables.DOCKER_CONFIG = "${home}/.config/docker"; }; + + programs.vscode.languages.docker.enable = true; }; } (lib.mkIf rootless { diff --git a/hosts/common/configs/user/console/sops/default.nix b/hosts/common/configs/user/console/sops/default.nix index 5023dc2..7ad8431 100644 --- a/hosts/common/configs/user/console/sops/default.nix +++ b/hosts/common/configs/user/console/sops/default.nix @@ -13,5 +13,7 @@ config.environment.persistence."/persist"."${home}/.config/sops-nix/key.txt".source; home.sessionVariables.SOPS_AGE_KEY_FILE = config.environment.persistence."/persist"."${home}/.config/sops-nix/key.txt".source; + + programs.vscode.languages.sops.enable = true; }; } diff --git a/hosts/common/configs/user/gui/vscode/default.nix b/hosts/common/configs/user/gui/vscode/default.nix index 2cdb67a..f16e2f4 100644 --- a/hosts/common/configs/user/gui/vscode/default.nix +++ b/hosts/common/configs/user/gui/vscode/default.nix @@ -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}" ]; }; } diff --git a/hosts/common/configs/user/gui/vscode/langs/c/default.nix b/hosts/common/configs/user/gui/vscode/langs/c/default.nix index ce6b998..4f0a1d3 100644 --- a/hosts/common/configs/user/gui/vscode/langs/c/default.nix +++ b/hosts/common/configs/user/gui/vscode/langs/c/default.nix @@ -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 diff --git a/hosts/common/configs/user/gui/vscode/langs/docker/default.nix b/hosts/common/configs/user/gui/vscode/langs/docker/default.nix new file mode 100644 index 0000000..14aaef4 --- /dev/null +++ b/hosts/common/configs/user/gui/vscode/langs/docker/default.nix @@ -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 + ]; +} diff --git a/hosts/common/configs/user/gui/vscode/langs/go/default.nix b/hosts/common/configs/user/gui/vscode/langs/go/default.nix index cc50b3f..da61eac 100644 --- a/hosts/common/configs/user/gui/vscode/langs/go/default.nix +++ b/hosts/common/configs/user/gui/vscode/langs/go/default.nix @@ -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 ]; diff --git a/hosts/common/configs/user/gui/vscode/langs/java/default.nix b/hosts/common/configs/user/gui/vscode/langs/java/default.nix index e601f63..f783503 100644 --- a/hosts/common/configs/user/gui/vscode/langs/java/default.nix +++ b/hosts/common/configs/user/gui/vscode/langs/java/default.nix @@ -1,5 +1,10 @@ -{ pkgs, ... }: { + config, + lib, + pkgs, + ... +}: +lib.mkIf config.programs.vscode.languages.java.enable { programs.vscode = { extensions = with pkgs; diff --git a/hosts/common/configs/user/gui/vscode/langs/jinja/default.nix b/hosts/common/configs/user/gui/vscode/langs/jinja/default.nix new file mode 100644 index 0000000..9e28d46 --- /dev/null +++ b/hosts/common/configs/user/gui/vscode/langs/jinja/default.nix @@ -0,0 +1,11 @@ +{ + config, + lib, + pkgs, + ... +}: +lib.mkIf config.programs.vscode.languages.jinja.enable { + programs.vscode.extensions = with pkgs.vscode-extensions; [ + wholroyd.jinja + ]; +} diff --git a/hosts/common/configs/user/gui/vscode/langs/lua/default.nix b/hosts/common/configs/user/gui/vscode/langs/lua/default.nix index d9838e7..75abd9f 100644 --- a/hosts/common/configs/user/gui/vscode/langs/lua/default.nix +++ b/hosts/common/configs/user/gui/vscode/langs/lua/default.nix @@ -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 ]; diff --git a/hosts/common/configs/user/gui/vscode/langs/markdown/default.nix b/hosts/common/configs/user/gui/vscode/langs/markdown/default.nix index 9fd5a15..0bac97a 100644 --- a/hosts/common/configs/user/gui/vscode/langs/markdown/default.nix +++ b/hosts/common/configs/user/gui/vscode/langs/markdown/default.nix @@ -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 ]; diff --git a/hosts/common/configs/user/gui/vscode/langs/nix/default.nix b/hosts/common/configs/user/gui/vscode/langs/nix/default.nix index 54d215a..2b28623 100644 --- a/hosts/common/configs/user/gui/vscode/langs/nix/default.nix +++ b/hosts/common/configs/user/gui/vscode/langs/nix/default.nix @@ -1,5 +1,10 @@ -{ lib, pkgs, ... }: { + config, + lib, + pkgs, + ... +}: +lib.mkIf config.programs.vscode.languages.nix.enable { programs.vscode = { userSettings = { "nix.enableLanguageServer" = true; diff --git a/hosts/common/configs/user/gui/vscode/langs/python/default.nix b/hosts/common/configs/user/gui/vscode/langs/python/default.nix index 7c5852c..cf3b8a9 100644 --- a/hosts/common/configs/user/gui/vscode/langs/python/default.nix +++ b/hosts/common/configs/user/gui/vscode/langs/python/default.nix @@ -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 diff --git a/hosts/common/configs/user/gui/vscode/langs/rest/default.nix b/hosts/common/configs/user/gui/vscode/langs/rest/default.nix new file mode 100644 index 0000000..a2276a2 --- /dev/null +++ b/hosts/common/configs/user/gui/vscode/langs/rest/default.nix @@ -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; + }; + }; +} diff --git a/hosts/elara/users/nikara/configs/gui/vscode/langs/sas/default.nix b/hosts/common/configs/user/gui/vscode/langs/sas/default.nix similarity index 72% rename from hosts/elara/users/nikara/configs/gui/vscode/langs/sas/default.nix rename to hosts/common/configs/user/gui/vscode/langs/sas/default.nix index 2666d16..f27e9ff 100644 --- a/hosts/elara/users/nikara/configs/gui/vscode/langs/sas/default.nix +++ b/hosts/common/configs/user/gui/vscode/langs/sas/default.nix @@ -1,5 +1,10 @@ -{ pkgs, ... }: { + config, + lib, + pkgs, + ... +}: +lib.mkIf config.programs.vscode.languages.sas.enable { programs.vscode = { extensions = with pkgs.vscode-extensions; [ sas.sas-lsp diff --git a/hosts/common/configs/user/gui/vscode/langs/sops/default.nix b/hosts/common/configs/user/gui/vscode/langs/sops/default.nix new file mode 100644 index 0000000..08a13e8 --- /dev/null +++ b/hosts/common/configs/user/gui/vscode/langs/sops/default.nix @@ -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 + ]; +} diff --git a/hosts/common/configs/user/gui/vscode/langs/svelte/default.nix b/hosts/common/configs/user/gui/vscode/langs/svelte/default.nix index a1e4547..5d6127b 100644 --- a/hosts/common/configs/user/gui/vscode/langs/svelte/default.nix +++ b/hosts/common/configs/user/gui/vscode/langs/svelte/default.nix @@ -1,5 +1,10 @@ -{ pkgs, ... }: { + config, + lib, + pkgs, + ... +}: +lib.mkIf config.programs.vscode.languages.svelte.enable { programs.vscode = { userSettings = { "svelte.enable-ts-plugin" = true; diff --git a/hosts/common/configs/user/gui/vscode/langs/typescript/default.nix b/hosts/common/configs/user/gui/vscode/langs/typescript/default.nix index 142afc6..8b60e93 100644 --- a/hosts/common/configs/user/gui/vscode/langs/typescript/default.nix +++ b/hosts/common/configs/user/gui/vscode/langs/typescript/default.nix @@ -1,5 +1,10 @@ -{ ... }: { + config, + lib, + pkgs, + ... +}: +lib.mkIf config.programs.vscode.languages.typescript.enable { programs.vscode.userSettings = { "typescript.updateImportsOnFileMove.enabled" = "always"; }; diff --git a/hosts/common/configs/user/gui/vscode/langs/yaml/default.nix b/hosts/common/configs/user/gui/vscode/langs/yaml/default.nix index 2534a0a..15b0c95 100644 --- a/hosts/common/configs/user/gui/vscode/langs/yaml/default.nix +++ b/hosts/common/configs/user/gui/vscode/langs/yaml/default.nix @@ -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 ]; diff --git a/hosts/common/configs/user/gui/vscode/options.nix b/hosts/common/configs/user/gui/vscode/options.nix new file mode 100644 index 0000000..e538cfe --- /dev/null +++ b/hosts/common/configs/user/gui/vscode/options.nix @@ -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; + }) + ]; + }; + }; +} diff --git a/hosts/eirene/users/nick/configs/gui/vscode/default.nix b/hosts/eirene/users/nick/configs/gui/vscode/default.nix new file mode 100644 index 0000000..912a73f --- /dev/null +++ b/hosts/eirene/users/nick/configs/gui/vscode/default.nix @@ -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; + }; +} diff --git a/hosts/eirene/users/nick/default.nix b/hosts/eirene/users/nick/default.nix index b11ba9d..e56998f 100644 --- a/hosts/eirene/users/nick/default.nix +++ b/hosts/eirene/users/nick/default.nix @@ -80,6 +80,7 @@ in (import ./configs/console/syncthing { inherit user home; }) (import ./configs/gui/obsidian { inherit user home; }) + (import ./configs/gui/vscode { inherit user home; }) ]; # echo "password" | mkpasswd -s diff --git a/hosts/elara/users/nikara/configs/gui/vscode/default.nix b/hosts/elara/users/nikara/configs/gui/vscode/default.nix index 654d51b..e15c94d 100644 --- a/hosts/elara/users/nikara/configs/gui/vscode/default.nix +++ b/hosts/elara/users/nikara/configs/gui/vscode/default.nix @@ -2,25 +2,24 @@ user ? throw "user argument is required", home ? throw "home argument is required", }: -{ pkgs, ... }: +{ ... }: { - home-manager.users.${user} = { - programs.vscode = { - extensions = with pkgs.vscode-extensions; [ - github.copilot - github.copilot-chat - ]; + home-manager.users.${user}.programs.vscode = { + copilot.enable = true; - userSettings = { - "github.copilot.enable" = { - "*" = true; - "plaintext" = true; - "markdown" = true; - }; - "chat.editing.alwaysSaveWithGeneratedChanges" = true; - }; + languages = { + c.enable = true; + go.enable = true; + java.enable = true; + jinja.enable = true; + lua.enable = 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 ]; }; }