summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--user/modules/tabnine.nix41
-rw-r--r--user/settings/tabnine.nix29
2 files changed, 49 insertions, 21 deletions
diff --git a/user/modules/tabnine.nix b/user/modules/tabnine.nix
new file mode 100644
index 00000000..3230bde7
--- /dev/null
+++ b/user/modules/tabnine.nix
@@ -0,0 +1,41 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.programs.tabnine;
+  configFile = config:
+    pkgs.runCommand "TabNine.toml"
+      {
+         buildInputs = [ pkgs.remarshal ];
+         preferLocalBuild = true;
+         allowSubstitutes = false;
+      }
+      ''
+        remarshal -if json -of toml \
+          < ${pkgs.writeText "config.json" (builtins.toJSON cfg.lspConfig)} \
+          > $out
+      '';
+in
+{
+
+  options.programs.tabnine = {
+    enable = mkEnableOption "TabNine, Smart Compose for code.";
+
+    lspConfig = mkOption {
+      type = types.attrs;
+      default = {};
+      description = ''
+        LSP Server configuration written to
+        <filename>~/.config/TabNine/TabNine.toml</filename>.
+        </para><para>
+      '';
+    };
+  };
+
+  config = mkIf cfg.enable {
+    xdg.configFile."TabNine/TabNine.toml" = {
+      source = configFile cfg.lspConfig;
+    };
+  };
+}
diff --git a/user/settings/tabnine.nix b/user/settings/tabnine.nix
index 8018bcca..9fa586b0 100644
--- a/user/settings/tabnine.nix
+++ b/user/settings/tabnine.nix
@@ -1,8 +1,12 @@
-{ config, pkgs, ... }:
+{ ... }:
 
-let
-  cfg = {
-    config = {
+{
+  imports = [
+    ../modules/tabnine.nix
+  ];
+  programs.tabnine = {
+    enable = true;
+    lspConfig = {
       "language.typescript" = {
         command = "typescript-language-server";
         args = ["--stdio"];
@@ -37,21 +41,4 @@ let
       };
     };
   };
-  configFile = config:
-    pkgs.runCommand "TabNine.toml"
-      {
-         buildInputs = [ pkgs.remarshal ];
-         preferLocalBuild = true;
-         allowSubstitutes = false;
-      }
-      ''
-        remarshal -if json -of toml \
-          < ${pkgs.writeText "config.json" (builtins.toJSON cfg.config)} \
-          > $out
-      '';
-in
-{
-  xdg.configFile."TabNine/TabNine.toml" = {
-    source = configFile cfg.config;
-  };
 }