about summary refs log tree commit diff
path: root/modules/common/vscode.nix
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2024-03-31 21:29:27 +0300
committerAzat Bahawi <azat@bahawi.net>2024-03-31 21:29:27 +0300
commit9a5427e3a0c0ccf2a82dc503149a26b23fbd6004 (patch)
treef28beec29deeea36038615a8fb98a810891940b5 /modules/common/vscode.nix
parent2024-03-19 (diff)
2024-03-31
Diffstat (limited to '')
-rw-r--r--modules/common/vscode.nix349
1 files changed, 181 insertions, 168 deletions
diff --git a/modules/common/vscode.nix b/modules/common/vscode.nix
index 8901113..bd840d8 100644
--- a/modules/common/vscode.nix
+++ b/modules/common/vscode.nix
@@ -5,15 +5,22 @@
   pkgs,
   ...
 }:
-with lib; let
+with lib;
+let
   cfg = config.nixfiles.modules.vscode;
-in {
+in
+{
   options.nixfiles.modules.vscode = {
     enable = mkEnableOption "VSCode";
 
-    package = with pkgs;
+    package =
+      with pkgs;
       mkOption {
-        type = types.enum [vscodium vscode vscode-fhs];
+        type = types.enum [
+          vscodium
+          vscode
+          vscode-fhs
+        ];
         default = vscodium;
         description = "Which package to use as a VSCode implementation.";
       };
@@ -29,203 +36,209 @@ in {
     hm = {
       stylix.targets.vscode.enable = false;
 
-      programs.vscode = with config.nixfiles;
-      with modules;
-      with profiles; {
-        enable = true;
-
-        inherit (cfg) package;
-
-        extensions = with pkgs.open-vsx;
-          [
-            editorconfig.editorconfig
-            efoerster.texlab
-            github.vscode-pull-request-github
-            gitlab.gitlab-workflow
-            golang.go
-            graphql.vscode-graphql
-            graphql.vscode-graphql-execution
-            graphql.vscode-graphql-syntax
-            hashicorp.hcl
-            hashicorp.terraform
-            haskell.haskell
-            jnoortheen.nix-ide
-            kahole.magit
-            mads-hartmann.bash-ide-vscode
-            mkhl.direnv
-            ms-kubernetes-tools.vscode-kubernetes-tools
-            ms-python.python
-            redhat.ansible
-            redhat.vscode-xml
-            redhat.vscode-yaml
-            rust-lang.rust
-            signageos.signageos-vscode-sops
-            skellock.just
-            streetsidesoftware.code-spell-checker
-            streetsidesoftware.code-spell-checker-british-english
-            streetsidesoftware.code-spell-checker-russian
-            streetsidesoftware.code-spell-checker-scientific-terms
-            tamasfe.even-better-toml
-            task.vscode-task
-            vscode-org-mode.org-mode
-            ziglang.vscode-zig
-          ]
-          ++ optional cfg.vim.enable vscodevim.vim;
-
-        userSettings = {
-          editor = {
-            codeLens = false;
-            cursorStyle = "block";
-            detectIndentation = true;
-            minimap.enabled = false;
-            renderWhitespace = "trailing";
-            rulers = [80 120];
-            smoothScrolling = false;
-            tabCompletion = "on";
-            cursorSurroundingLines = 10;
-            scrollBeyondLastColumn = 10;
-          };
+      programs.vscode =
+        with config.nixfiles;
+        with modules;
+        with profiles;
+        {
+          enable = true;
+
+          inherit (cfg) package;
+
+          extensions =
+            with pkgs.open-vsx;
+            [
+              editorconfig.editorconfig
+              efoerster.texlab
+              github.vscode-pull-request-github
+              gitlab.gitlab-workflow
+              golang.go
+              graphql.vscode-graphql
+              graphql.vscode-graphql-execution
+              graphql.vscode-graphql-syntax
+              hashicorp.hcl
+              hashicorp.terraform
+              haskell.haskell
+              jnoortheen.nix-ide
+              kahole.magit
+              mads-hartmann.bash-ide-vscode
+              mkhl.direnv
+              ms-kubernetes-tools.vscode-kubernetes-tools
+              ms-python.python
+              redhat.ansible
+              redhat.vscode-xml
+              redhat.vscode-yaml
+              rust-lang.rust
+              signageos.signageos-vscode-sops
+              skellock.just
+              streetsidesoftware.code-spell-checker
+              streetsidesoftware.code-spell-checker-british-english
+              streetsidesoftware.code-spell-checker-russian
+              streetsidesoftware.code-spell-checker-scientific-terms
+              tamasfe.even-better-toml
+              task.vscode-task
+              vscode-org-mode.org-mode
+              ziglang.vscode-zig
+            ]
+            ++ optional cfg.vim.enable vscodevim.vim;
+
+          userSettings = {
+            editor = {
+              codeLens = false;
+              cursorStyle = "block";
+              detectIndentation = true;
+              minimap.enabled = false;
+              renderWhitespace = "trailing";
+              rulers = [
+                80
+                120
+              ];
+              smoothScrolling = false;
+              tabCompletion = "on";
+              cursorSurroundingLines = 10;
+              scrollBeyondLastColumn = 10;
+            };
 
-          keyboard.dispatch = "keyCode";
+            keyboard.dispatch = "keyCode";
 
-          diffEditor.codeLens = false;
+            diffEditor.codeLens = false;
 
-          files = {
-            autoSave = "off";
-            enableTrash = false;
-          };
+            files = {
+              autoSave = "off";
+              enableTrash = false;
+            };
 
-          workbench = {
-            activityBar.location = "hidden";
-            colorTheme = "Default Light Modern";
-            editor.highlightModifiedTabs = true;
-            enableExperiments = false;
-            settings.enableNaturalLanguageSearch = false;
-            startupEditor = "none";
-            tips.enabled = false;
-            tree.indent = 4;
-            welcomePage = {
-              walkthroughs.openOnInstall = false;
-              preferReducedMotion = true;
+            workbench = {
+              activityBar.location = "hidden";
+              colorTheme = "Default Light Modern";
+              editor.highlightModifiedTabs = true;
+              enableExperiments = false;
+              settings.enableNaturalLanguageSearch = false;
+              startupEditor = "none";
+              tips.enabled = false;
+              tree.indent = 4;
+              welcomePage = {
+                walkthroughs.openOnInstall = false;
+                preferReducedMotion = true;
+              };
             };
-          };
 
-          extensions = {
-            autoCheckUpdates = false;
-            autoUpdate = false;
-            ignoreRecommendations = true;
-          };
+            extensions = {
+              autoCheckUpdates = false;
+              autoUpdate = false;
+              ignoreRecommendations = true;
+            };
 
-          terminal.integrated = {
-            enableBell = true;
-          };
+            terminal.integrated = {
+              enableBell = true;
+            };
 
-          update = {
-            mode = "none";
-            showReleaseNotes = false;
-          };
+            update = {
+              mode = "none";
+              showReleaseNotes = false;
+            };
 
-          telemetry = {
-            enableCrashReporter = false;
-            enableTelemetry = false;
-          };
+            telemetry = {
+              enableCrashReporter = false;
+              enableTelemetry = false;
+            };
 
-          security.workspace.trust.enabled = false;
+            security.workspace.trust.enabled = false;
 
-          # Extensions.
+            # Extensions.
 
-          ansible = {
             ansible = {
-              useFullyQualifiedCollectionNames = true;
-              reuseTerminal = true;
+              ansible = {
+                useFullyQualifiedCollectionNames = true;
+                reuseTerminal = true;
+              };
+              validation.lint.path = getExe' pkgs.ansible-lint "ansible-lint";
             };
-            validation.lint.path = getExe' pkgs.ansible-lint "ansible-lint";
-          };
 
-          bashIde.shellcheckPath = getExe' pkgs.shellcheck "shellcheck";
+            bashIde.shellcheckPath = getExe' pkgs.shellcheck "shellcheck";
 
-          cSpell.language = "en-GB,en,ru";
+            cSpell.language = "en-GB,en,ru";
 
-          direnv = {
-            restart.automatic = true;
-          };
+            direnv = {
+              restart.automatic = true;
+            };
 
-          magit = {
-            forge-enabled = true;
-            git-path = getExe config.hm.programs.git.package;
-          };
+            magit = {
+              forge-enabled = true;
+              git-path = getExe config.hm.programs.git.package;
+            };
 
-          git.openRepositoryInParentFolders = "always";
+            git.openRepositoryInParentFolders = "always";
 
-          github = {
-            branchProtection = true;
-            gitProtocol = "ssh";
-          };
+            github = {
+              branchProtection = true;
+              gitProtocol = "ssh";
+            };
 
-          terraform = {
-            languageServer.path = getExe' pkgs.terraform-ls "terraform-ls";
-            languageServer.terraform.path = getExe pkgs.opentofu;
-          };
+            terraform = {
+              languageServer.path = getExe' pkgs.terraform-ls "terraform-ls";
+              languageServer.terraform.path = getExe pkgs.opentofu;
+            };
 
-          haskell = {
-            formattingProvider = "ormolu";
-            serverExecutablePath = getExe' pkgs.haskell-language-server "haskell-language-server";
-          };
+            haskell = {
+              formattingProvider = "ormolu";
+              serverExecutablePath = getExe' pkgs.haskell-language-server "haskell-language-server";
+            };
 
-          nix = {
-            enableLanguageServer = true;
-            serverPath = getExe pkgs.nil;
-          };
+            nix = {
+              enableLanguageServer = true;
+              serverPath = getExe pkgs.nil;
+            };
 
-          python = with pkgs.python311Packages; {
-            experiments.optOutFrom = ["All"];
-            pipenvPath = getExe' pkgs.pipenv "pipenv";
-            poetryPath = getExe' pkgs.poetry "poetry";
-            formatting = {
-              provider = "black";
-              autopep8Path = getExe' autopep8 "autopep8";
-              blackPath = getExe' black "black";
-              yapfPath = getExe' yapf "yapf";
-            };
-            linting = {
-              enabled = true;
-              banditPath = getExe' bandit "bandit";
-              flake8Path = getExe' flake8 "flake8";
-              mypyPath = getExe' mypy "mypy";
-              pycodestylePath = getExe' pycodestyle "pycodestyle";
-              pydocstylePath = getExe' pydocstyle "pydocstyle";
-              pylamaPath = getExe' pylama "pylama";
-              pylintPath = getExe' pylint "pylint";
-            };
-            testing = {
-              pytestPath = getExe' pytest "pytest";
+            python = with pkgs.python311Packages; {
+              experiments.optOutFrom = [ "All" ];
+              pipenvPath = getExe' pkgs.pipenv "pipenv";
+              poetryPath = getExe' pkgs.poetry "poetry";
+              formatting = {
+                provider = "black";
+                autopep8Path = getExe' autopep8 "autopep8";
+                blackPath = getExe' black "black";
+                yapfPath = getExe' yapf "yapf";
+              };
+              linting = {
+                enabled = true;
+                banditPath = getExe' bandit "bandit";
+                flake8Path = getExe' flake8 "flake8";
+                mypyPath = getExe' mypy "mypy";
+                pycodestylePath = getExe' pycodestyle "pycodestyle";
+                pydocstylePath = getExe' pydocstyle "pydocstyle";
+                pylamaPath = getExe' pylama "pylama";
+                pylintPath = getExe' pylint "pylint";
+              };
+              testing = {
+                pytestPath = getExe' pytest "pytest";
+              };
             };
-          };
 
-          rust-client = {
-            disableRustup = true;
-            rustupPath = getExe' pkgs.rustup "rustup";
-            rustfmt_path = getExe pkgs.rustfmt;
-          };
+            rust-client = {
+              disableRustup = true;
+              rustupPath = getExe' pkgs.rustup "rustup";
+              rustfmt_path = getExe pkgs.rustfmt;
+            };
 
-          vim = mkIf cfg.vim.enable {
-            easymotion = true;
+            vim = mkIf cfg.vim.enable {
+              easymotion = true;
 
-            leader = " ";
+              leader = " ";
 
-            useSystemClipboard = true;
-          };
+              useSystemClipboard = true;
+            };
 
-          zig.zls = {
-            checkForUpdate = false;
-            path = getExe' pkgs.zls "zls";
-          };
+            zig.zls = {
+              checkForUpdate = false;
+              path = getExe' pkgs.zls "zls";
+            };
 
-          redhat.telemetry.enabled = false;
+            redhat.telemetry.enabled = false;
+          };
         };
-      };
     };
 
-    nixpkgs.overlays = [inputs.vscode-extensions.overlays.default];
+    nixpkgs.overlays = [ inputs.vscode-extensions.overlays.default ];
   };
 }

Consider giving Nix/NixOS a try! <3