From 18258dec544c59cd58587a3316325416c885f621 Mon Sep 17 00:00:00 2001 From: Nick Date: Wed, 20 Nov 2024 16:07:09 -0600 Subject: [PATCH] refactor: abstracted out vscode config --- home-manager/modules/vscode.nix | 61 ------------------- .../modules/vscode/config/extensions.nix | 17 ++++++ .../modules/vscode/config/keybindings.nix | 19 ++++++ .../modules/vscode/config/userSettings.nix | 23 +++++++ home-manager/modules/vscode/default.nix | 16 +++++ 5 files changed, 75 insertions(+), 61 deletions(-) delete mode 100755 home-manager/modules/vscode.nix create mode 100644 home-manager/modules/vscode/config/extensions.nix create mode 100644 home-manager/modules/vscode/config/keybindings.nix create mode 100644 home-manager/modules/vscode/config/userSettings.nix create mode 100755 home-manager/modules/vscode/default.nix diff --git a/home-manager/modules/vscode.nix b/home-manager/modules/vscode.nix deleted file mode 100755 index 46dfb46..0000000 --- a/home-manager/modules/vscode.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ - pkgs, - lib, - ... -}: { - programs = { - vscode = { - enable = true; - package = pkgs.vscode; - keybindings = [ - { - key = "ctrl+shift+s"; - command = "editor.action.insertCursorAtEndOfEachLineSelected"; - when = "textInputFocus"; - } - { - key = "ctrl+shift+a"; - command = "editor.action.quickFix"; - when = "editorHasCodeActionsProvider && textInputFocus && !editorReadonly"; - } - { - key = "ctrl+shift+f"; - command = "editor.action.formatDocument"; - when = "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor"; - } - ]; - extensions = builtins.attrValues { - inherit (pkgs.vscode-extensions.catppuccin) catppuccin-vsc; - inherit (pkgs.vscode-extensions.eamodio) gitlens; - inherit (pkgs.vscode-extensions.elmtooling) elm-ls-vscode; - inherit (pkgs.vscode-extensions.esbenp) prettier-vscode; - inherit (pkgs.vscode-extensions.haskell) haskell; - inherit (pkgs.vscode-extensions.james-yu) latex-workshop; - inherit (pkgs.vscode-extensions.jnoortheen) nix-ide; - inherit (pkgs.vscode-extensions.kamadorueda) alejandra; - inherit (pkgs.vscode-extensions.mattn) lisp; - inherit (pkgs.vscode-extensions.mkhl) direnv; - inherit (pkgs.vscode-extensions.pkief) material-icon-theme; - inherit (pkgs.vscode-extensions.streetsidesoftware) code-spell-checker; - inherit (pkgs.vscode-extensions.tamasfe) even-better-toml; - }; - userSettings = { - "git.confirmSync" = false; - "editor.insertSpaces" = false; - "files.autoSave" = "afterDelay"; - "git.enableSmartCommit" = true; - "nix.enableLanguageServer" = true; - "nix.serverPath" = lib.getExe pkgs.nil; - "nix.formatterPath" = lib.getExe pkgs.alejandra; - "window.menuBarVisibility" = "toggle"; - "workbench.iconTheme" = "material-icon-theme"; - "workbench.startupEditor" = "none"; - "workbench.colorTheme" = "Catppuccin Mocha"; - "workbench.statusBar.visible" = false; - "editor.multiCursorLimit" = 700000; - "elmLS.disableElmLSDiagnostics" = true; - "elmLS.elmReviewDiagnostics" = "warning"; - }; - }; - }; -} diff --git a/home-manager/modules/vscode/config/extensions.nix b/home-manager/modules/vscode/config/extensions.nix new file mode 100644 index 0000000..c5863d7 --- /dev/null +++ b/home-manager/modules/vscode/config/extensions.nix @@ -0,0 +1,17 @@ +{pkgs, ...}: { + extensions = builtins.attrValues { + inherit (pkgs.vscode-extensions.catppuccin) catppuccin-vsc; + inherit (pkgs.vscode-extensions.eamodio) gitlens; + inherit (pkgs.vscode-extensions.elmtooling) elm-ls-vscode; + inherit (pkgs.vscode-extensions.esbenp) prettier-vscode; + inherit (pkgs.vscode-extensions.haskell) haskell; + inherit (pkgs.vscode-extensions.james-yu) latex-workshop; + inherit (pkgs.vscode-extensions.jnoortheen) nix-ide; + inherit (pkgs.vscode-extensions.kamadorueda) alejandra; + inherit (pkgs.vscode-extensions.mattn) lisp; + inherit (pkgs.vscode-extensions.mkhl) direnv; + inherit (pkgs.vscode-extensions.pkief) material-icon-theme; + inherit (pkgs.vscode-extensions.streetsidesoftware) code-spell-checker; + inherit (pkgs.vscode-extensions.tamasfe) even-better-toml; + }; +} diff --git a/home-manager/modules/vscode/config/keybindings.nix b/home-manager/modules/vscode/config/keybindings.nix new file mode 100644 index 0000000..eb98318 --- /dev/null +++ b/home-manager/modules/vscode/config/keybindings.nix @@ -0,0 +1,19 @@ +{ + keybindings = [ + { + key = "ctrl+shift+s"; + command = "editor.action.insertCursorAtEndOfEachLineSelected"; + when = "textInputFocus"; + } + { + key = "ctrl+shift+a"; + command = "editor.action.quickFix"; + when = "editorHasCodeActionsProvider && textInputFocus && !editorReadonly"; + } + { + key = "ctrl+shift+f"; + command = "editor.action.formatDocument"; + when = "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor"; + } + ]; +} diff --git a/home-manager/modules/vscode/config/userSettings.nix b/home-manager/modules/vscode/config/userSettings.nix new file mode 100644 index 0000000..9c725e8 --- /dev/null +++ b/home-manager/modules/vscode/config/userSettings.nix @@ -0,0 +1,23 @@ +{ + lib, + pkgs, + ... +}: { + userSettings = { + "git.confirmSync" = false; + "editor.insertSpaces" = false; + "files.autoSave" = "afterDelay"; + "git.enableSmartCommit" = true; + "nix.enableLanguageServer" = true; + "nix.serverPath" = lib.getExe pkgs.nil; + "nix.formatterPath" = lib.getExe pkgs.alejandra; + "window.menuBarVisibility" = "toggle"; + "workbench.iconTheme" = "material-icon-theme"; + "workbench.startupEditor" = "none"; + "workbench.colorTheme" = "Catppuccin Mocha"; + "workbench.statusBar.visible" = false; + "editor.multiCursorLimit" = 700000; + "elmLS.disableElmLSDiagnostics" = true; + "elmLS.elmReviewDiagnostics" = "warning"; + }; +} diff --git a/home-manager/modules/vscode/default.nix b/home-manager/modules/vscode/default.nix new file mode 100755 index 0000000..435c736 --- /dev/null +++ b/home-manager/modules/vscode/default.nix @@ -0,0 +1,16 @@ +{ + pkgs, + lib, + ... +}: { + programs = { + vscode = + { + enable = true; + package = pkgs.vscode; + } + // (import ./config/keybindings.nix) + // (import ./config/extensions.nix) {inherit pkgs;} + // (import ./config/userSettings.nix) {inherit pkgs lib;}; + }; +}