about summary refs log tree commit diff stats
path: root/modules/by-name/nv/nvim/module.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/by-name/nv/nvim/module.nix')
-rw-r--r--modules/by-name/nv/nvim/module.nix69
1 files changed, 69 insertions, 0 deletions
diff --git a/modules/by-name/nv/nvim/module.nix b/modules/by-name/nv/nvim/module.nix
new file mode 100644
index 00000000..829a9c2b
--- /dev/null
+++ b/modules/by-name/nv/nvim/module.nix
@@ -0,0 +1,69 @@
+{
+  pkgs,
+  lib,
+  config,
+  ...
+}: let
+  cfg = config.soispha.programs.nvim;
+in {
+  imports = [
+    ./autocmds
+    ./clipboard
+    ./files
+    ./mappings
+    ./options
+    ./plgs
+  ];
+
+  options.soispha.programs.nvim = {
+    enable = lib.mkEnableOption "custom nvim config";
+    shell = lib.mkOption {
+      type = lib.types.package;
+      description = "The package to use for the shell in :!";
+    };
+  };
+
+  config = lib.mkIf cfg.enable {
+    home-manager.users.soispha = {
+      home.sessionVariables = {
+        EDITOR = "nvim";
+        VISUAL = "nvim";
+        CODEEDITOR = "nvim";
+      };
+      programs.nixvim = {
+        enable = true;
+
+        # source: https://www.patorjk.com/software/taag/#p=display&f=ANSI%20Shadow&t=Neovim
+        extraConfigLuaPre = lib.mkBefore ''
+          ---------------------------------------------------------------------------
+          --
+          --     ███╗   ██╗███████╗ ██████╗ ██╗   ██╗██╗███╗   ███╗
+          --     ████╗  ██║██╔════╝██╔═══██╗██║   ██║██║████╗ ████║
+          --     ██╔██╗ ██║█████╗  ██║   ██║██║   ██║██║██╔████╔██║
+          --     ██║╚██╗██║██╔══╝  ██║   ██║╚██╗ ██╔╝██║██║╚██╔╝██║
+          --     ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║
+          --     ╚═╝  ╚═══╝╚══════╝ ╚═════╝   ╚═══╝  ╚═╝╚═╝     ╚═╝
+          --
+          ---------------------------------------------------------------------------
+        '';
+
+        extraPackages = with pkgs; [
+          /*
+          These are mostly linters and formatters used for different file types.
+          Including them here is fine, as they are not necessarily-sync able to different people.
+          */
+          # nix
+          alejandra
+          statix
+
+          # yaml
+          yamllint
+
+          # shell
+          shellcheck
+          shfmt
+        ];
+      };
+    };
+  };
+}