Refactor vscode language handling
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -29,12 +29,13 @@ lib.mkMerge [
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.${user}.home = {
|
home-manager.users.${user} = {
|
||||||
|
home = {
|
||||||
packages = with pkgs; [ docker-compose ];
|
packages = with pkgs; [ docker-compose ];
|
||||||
|
sessionVariables.DOCKER_CONFIG = "${home}/.config/docker";
|
||||||
sessionVariables = {
|
|
||||||
DOCKER_CONFIG = "${home}/.config/docker";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs.vscode.languages.docker.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
(lib.mkIf rootless {
|
(lib.mkIf rootless {
|
||||||
|
@@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -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}" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
@@ -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; [
|
programs.vscode.extensions = with pkgs.vscode-extensions; [
|
||||||
golang.go
|
golang.go
|
||||||
];
|
];
|
||||||
|
@@ -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;
|
||||||
|
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; [
|
programs.vscode.extensions = with pkgs.vscode-extensions; [
|
||||||
sumneko.lua
|
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; [
|
programs.vscode.extensions = with pkgs.vscode-extensions; [
|
||||||
yzhang.markdown-all-in-one
|
yzhang.markdown-all-in-one
|
||||||
];
|
];
|
||||||
|
@@ -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;
|
||||||
|
@@ -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
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@@ -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
|
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 = {
|
programs.vscode = {
|
||||||
userSettings = {
|
userSettings = {
|
||||||
"svelte.enable-ts-plugin" = true;
|
"svelte.enable-ts-plugin" = true;
|
||||||
|
@@ -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";
|
||||||
};
|
};
|
||||||
|
@@ -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
|
||||||
];
|
];
|
||||||
|
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;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
19
hosts/eirene/users/nick/configs/gui/vscode/default.nix
Normal file
19
hosts/eirene/users/nick/configs/gui/vscode/default.nix
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
@@ -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
|
||||||
|
@@ -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;
|
||||||
|
markdown.enable = true;
|
||||||
|
nix.enable = true;
|
||||||
|
python.enable = true;
|
||||||
|
rest.enable = true;
|
||||||
|
sas.enable = true;
|
||||||
|
typescript.enable = true;
|
||||||
|
yaml.enable = true;
|
||||||
};
|
};
|
||||||
"chat.editing.alwaysSaveWithGeneratedChanges" = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
imports = [ ./langs/sas ];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user