diff --git a/.gitignore b/.gitignore index d36977dc..2d81b42f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .tmp +result diff --git a/docs/default.nix b/docs/default.nix new file mode 100644 index 00000000..f60fe88b --- /dev/null +++ b/docs/default.nix @@ -0,0 +1,51 @@ +{ pkgs, lib, ... }: +let + nmdSrc = pkgs.fetchFromGitLab { + name = "nmd"; + owner = "rycee"; + repo = "nmd"; + rev = "527245ff605bde88c2dd2ddae21c6479bb7cf8aa"; + sha256 = "1zi0f9y3wq4bpslx1py3sfgrgd9av41ahpandvs6rvkpisfsqqlp"; + }; + nmd = import nmdSrc { inherit pkgs lib; }; + scrubbedPkgsModule = { + imports = [{ + _module.args = { + pkgs = lib.mkForce (nmd.scrubDerivations "pkgs" pkgs); + pkgs_i686 = lib.mkForce { }; + }; + }]; + }; + buildModulesDocs = args: + nmd.buildModulesDocs ({ + moduleRootPaths = [ ./.. ]; + mkModuleUrl = path: + "https://github.com/pta2002/nixvim/blob/master/${path}#blob-path"; + channelName = "nixvim"; + } // args); + nixvimDocs = buildModulesDocs { + modules = [ + (import ../nixvim.nix {}) + scrubbedPkgsModule + ]; + docBook.id = "nixvim-options"; + }; + + docs = nmd.buildDocBookDocs { + pathName = ""; + modulesDocs = [ nixvimDocs ]; + documentsDirectory = ./.; + documentType = "book"; + chunkToc = '' + + + + + + + + + + ''; + }; +in docs.html diff --git a/docs/man-nixvim.xml b/docs/man-nixvim.xml new file mode 100644 index 00000000..de162807 --- /dev/null +++ b/docs/man-nixvim.xml @@ -0,0 +1,27 @@ + + + nixvim.nix + 5 + NixVim + + + + nixvim.nix + NixVim configuration specification + + + Description + + TODO + + + + Options + + You can use the following options in your nixvim config + + + + diff --git a/docs/man-pages.xml b/docs/man-pages.xml new file mode 100644 index 00000000..9d4c1ce8 --- /dev/null +++ b/docs/man-pages.xml @@ -0,0 +1,11 @@ + + NixVim Reference Pages + + NixVim contributors + 2021-2022NixVim contributors + + + + diff --git a/docs/manual.xml b/docs/manual.xml new file mode 100644 index 00000000..090643d3 --- /dev/null +++ b/docs/manual.xml @@ -0,0 +1,23 @@ + + + NixVim Manual + + + Preface + + This manual is meant to serve as the ultimate reference for how to use and install NixVim. + + + If you have any issues, questions, or plugin suggestions please open an issue on the + NixVim GitHub + + + + Configuration Options + + + diff --git a/doc/plugins.md b/docs/plugins.md similarity index 100% rename from doc/plugins.md rename to docs/plugins.md diff --git a/doc/plugins/colorschemes/base16.md b/docs/plugins/colorschemes/base16.md similarity index 100% rename from doc/plugins/colorschemes/base16.md rename to docs/plugins/colorschemes/base16.md diff --git a/doc/plugins/colorschemes/gruvbox.md b/docs/plugins/colorschemes/gruvbox.md similarity index 100% rename from doc/plugins/colorschemes/gruvbox.md rename to docs/plugins/colorschemes/gruvbox.md diff --git a/doc/plugins/colorschemes/one.md b/docs/plugins/colorschemes/one.md similarity index 100% rename from doc/plugins/colorschemes/one.md rename to docs/plugins/colorschemes/one.md diff --git a/doc/plugins/colorschemes/onedark.md b/docs/plugins/colorschemes/onedark.md similarity index 100% rename from doc/plugins/colorschemes/onedark.md rename to docs/plugins/colorschemes/onedark.md diff --git a/doc/plugins/colorschemes/tokyonight.md b/docs/plugins/colorschemes/tokyonight.md similarity index 100% rename from doc/plugins/colorschemes/tokyonight.md rename to docs/plugins/colorschemes/tokyonight.md diff --git a/doc/plugins/git/fugitive.md b/docs/plugins/git/fugitive.md similarity index 100% rename from doc/plugins/git/fugitive.md rename to docs/plugins/git/fugitive.md diff --git a/doc/plugins/git/gitgutter.md b/docs/plugins/git/gitgutter.md similarity index 100% rename from doc/plugins/git/gitgutter.md rename to docs/plugins/git/gitgutter.md diff --git a/doc/plugins/languages/ledger.md b/docs/plugins/languages/ledger.md similarity index 100% rename from doc/plugins/languages/ledger.md rename to docs/plugins/languages/ledger.md diff --git a/doc/plugins/languages/nix.md b/docs/plugins/languages/nix.md similarity index 100% rename from doc/plugins/languages/nix.md rename to docs/plugins/languages/nix.md diff --git a/doc/plugins/languages/treesitter.md b/docs/plugins/languages/treesitter.md similarity index 100% rename from doc/plugins/languages/treesitter.md rename to docs/plugins/languages/treesitter.md diff --git a/doc/plugins/languages/zig.md b/docs/plugins/languages/zig.md similarity index 100% rename from doc/plugins/languages/zig.md rename to docs/plugins/languages/zig.md diff --git a/doc/plugins/nvim-lsp/clangd.md b/docs/plugins/nvim-lsp/clangd.md similarity index 100% rename from doc/plugins/nvim-lsp/clangd.md rename to docs/plugins/nvim-lsp/clangd.md diff --git a/doc/plugins/nvim-lsp/default.md b/docs/plugins/nvim-lsp/default.md similarity index 100% rename from doc/plugins/nvim-lsp/default.md rename to docs/plugins/nvim-lsp/default.md diff --git a/doc/plugins/nvim-lsp/lspsaga.md b/docs/plugins/nvim-lsp/lspsaga.md similarity index 100% rename from doc/plugins/nvim-lsp/lspsaga.md rename to docs/plugins/nvim-lsp/lspsaga.md diff --git a/doc/plugins/nvim-lsp/rnix-lsp.md b/docs/plugins/nvim-lsp/rnix-lsp.md similarity index 100% rename from doc/plugins/nvim-lsp/rnix-lsp.md rename to docs/plugins/nvim-lsp/rnix-lsp.md diff --git a/doc/plugins/nvim-lsp/rust-analyzer.md b/docs/plugins/nvim-lsp/rust-analyzer.md similarity index 100% rename from doc/plugins/nvim-lsp/rust-analyzer.md rename to docs/plugins/nvim-lsp/rust-analyzer.md diff --git a/doc/plugins/pluginmanagers/packer.md b/docs/plugins/pluginmanagers/packer.md similarity index 100% rename from doc/plugins/pluginmanagers/packer.md rename to docs/plugins/pluginmanagers/packer.md diff --git a/doc/plugins/statuslines/airline.md b/docs/plugins/statuslines/airline.md similarity index 100% rename from doc/plugins/statuslines/airline.md rename to docs/plugins/statuslines/airline.md diff --git a/doc/plugins/statuslines/lightline.md b/docs/plugins/statuslines/lightline.md similarity index 100% rename from doc/plugins/statuslines/lightline.md rename to docs/plugins/statuslines/lightline.md diff --git a/doc/plugins/utils/barbar.md b/docs/plugins/utils/barbar.md similarity index 100% rename from doc/plugins/utils/barbar.md rename to docs/plugins/utils/barbar.md diff --git a/doc/plugins/utils/commentary.md b/docs/plugins/utils/commentary.md similarity index 100% rename from doc/plugins/utils/commentary.md rename to docs/plugins/utils/commentary.md diff --git a/doc/plugins/utils/endwise.md b/docs/plugins/utils/endwise.md similarity index 100% rename from doc/plugins/utils/endwise.md rename to docs/plugins/utils/endwise.md diff --git a/doc/plugins/utils/goyo.md b/docs/plugins/utils/goyo.md similarity index 100% rename from doc/plugins/utils/goyo.md rename to docs/plugins/utils/goyo.md diff --git a/doc/plugins/utils/nvim-autopairs.md b/docs/plugins/utils/nvim-autopairs.md similarity index 100% rename from doc/plugins/utils/nvim-autopairs.md rename to docs/plugins/utils/nvim-autopairs.md diff --git a/doc/plugins/utils/startify.md b/docs/plugins/utils/startify.md similarity index 100% rename from doc/plugins/utils/startify.md rename to docs/plugins/utils/startify.md diff --git a/doc/plugins/utils/telescope.md b/docs/plugins/utils/telescope.md similarity index 100% rename from doc/plugins/utils/telescope.md rename to docs/plugins/utils/telescope.md diff --git a/doc/plugins/utils/undotree.md b/docs/plugins/utils/undotree.md similarity index 100% rename from doc/plugins/utils/undotree.md rename to docs/plugins/utils/undotree.md diff --git a/flake.lock b/flake.lock index 96aafd6d..ef3662b4 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1638986258, - "narHash": "sha256-OceRdctKZRSgqQxVRvvNB0MaEnFMzQqjUffecoDE9eI=", + "lastModified": 1641710811, + "narHash": "sha256-yVJ+CtwWZY8BnkNIJ/ue5a28yrRM6CkDF1LvmGmqqwM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "581d2d6c9cd5c289002203581d8aa0861963a933", + "rev": "0ecf7d414811f831060cf55707c374d54fbb1dec", "type": "github" }, "original": { @@ -16,9 +16,26 @@ "type": "github" } }, + "nmdSrc": { + "flake": false, + "locked": { + "lastModified": 1637239786, + "narHash": "sha256-l2KsnY537mz0blZdqALZKrWXn9PD39CpvotgPnxyIP4=", + "owner": "rycee", + "repo": "nmd", + "rev": "527245ff605bde88c2dd2ddae21c6479bb7cf8aa", + "type": "gitlab" + }, + "original": { + "owner": "rycee", + "repo": "nmd", + "type": "gitlab" + } + }, "root": { "inputs": { - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "nmdSrc": "nmdSrc" } } }, diff --git a/flake.nix b/flake.nix index 8e49dc8e..7cadbc9c 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,15 @@ inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - outputs = { self, nixpkgs, ... }@inputs: rec { + inputs.nmdSrc.url = "gitlab:rycee/nmd"; + inputs.nmdSrc.flake = false; + + outputs = { self, nixpkgs, nmdSrc, ... }@inputs: rec { + packages."x86_64-linux".docs = import ./docs { + pkgs = import nixpkgs { system = "x86_64-linux"; }; + lib = nixpkgs.lib; + }; + nixosModules.nixvim = import ./nixvim.nix { nixos = true; }; homeManagerModules.nixvim = import ./nixvim.nix { homeManager = true; }; diff --git a/nixvim.nix b/nixvim.nix index aeff199c..729b1833 100644 --- a/nixvim.nix +++ b/nixvim.nix @@ -1,5 +1,5 @@ { nixos ? false, nixOnDroid ? false, homeManager ? false }: -{ pkgs, lib, config, ... }: +{ pkgs , lib, config, ... }: with lib; let cfg = config.programs.nixvim; @@ -100,8 +100,9 @@ in }; colorscheme = mkOption { - type = types.str; + type = types.nullOr types.str; description = "The name of the colorscheme"; + default = null; }; extraConfigLua = mkOption { @@ -126,6 +127,7 @@ in configure = mkOption { type = types.attrsOf types.anything; default = { }; + description = "Internal option"; }; options = mkOption { @@ -257,7 +259,7 @@ in in mkIf cfg.enable (if nixos then { environment.systemPackages = [ wrappedNeovim ]; - programs.nixvim = { + programs.neovim = { configure = configure; extraConfigLua = extraConfigLua; @@ -273,14 +275,5 @@ in extraConfig = configure.customRC; plugins = cfg.extraPlugins; }; - } else { - environment.packages = [ wrappedNeovim ]; - programs.nixvim = { - configure = configure; - - extraConfigLua = extraConfigLua; - }; - - environment.etc."xdg/nvim/sysinit.vim".text = neovimConfig.neovimRcContent; - })); + } else {})); } diff --git a/plugins/git/gitgutter.nix b/plugins/git/gitgutter.nix index 4995e3df..a8655584 100644 --- a/plugins/git/gitgutter.nix +++ b/plugins/git/gitgutter.nix @@ -91,7 +91,7 @@ in { }; grep = mkOption { - type = types.nullOr (types.oneOf [ types.submodule { + type = types.nullOr (types.oneOf [ (types.submodule { options = { command = mkOption { type = types.str; @@ -103,7 +103,7 @@ in { description = "The package of the grep alternative to use"; }; }; - } types.str]); + }) types.str]); default = null; description = "A non-standard grep to use instead of the default"; }; diff --git a/plugins/statuslines/airline.nix b/plugins/statuslines/airline.nix index 696c4b9d..f58b75e4 100644 --- a/plugins/statuslines/airline.nix +++ b/plugins/statuslines/airline.nix @@ -30,12 +30,14 @@ in { sections = mkOption { default = null; type = with types; nullOr (submodule { - a = sectionOption; - b = sectionOption; - c = sectionOption; - x = sectionOption; - y = sectionOption; - z = sectionOption; + options = { + a = sectionOption; + b = sectionOption; + c = sectionOption; + x = sectionOption; + y = sectionOption; + z = sectionOption; + }; }); }; diff --git a/plugins/statuslines/lightline.nix b/plugins/statuslines/lightline.nix index 5260bfed..3cfff5a4 100644 --- a/plugins/statuslines/lightline.nix +++ b/plugins/statuslines/lightline.nix @@ -21,7 +21,7 @@ in { description = '' A list of function component definitions. - You should define the functions themselves in extraConfig + You should define the functions themselves in extraConfig ''; example = '' programs.nixvim.plugins.lightline = { diff --git a/plugins/utils/comment-nvim.nix b/plugins/utils/comment-nvim.nix index 2904a5cc..80873d85 100644 --- a/plugins/utils/comment-nvim.nix +++ b/plugins/utils/comment-nvim.nix @@ -64,8 +64,7 @@ in options = { basic = mkOption { type = types.bool; - description = "operator-pending mapping. Includes 'gcc', 'gcb', 'gc[count]{motion}' - and 'gb[count]{motion}'"; + description = "operator-pending mapping. Includes 'gcc', 'gcb', 'gc[count]{motion}' and 'gb[count]{motion}'"; default = true; }; extra = mkOption { @@ -75,8 +74,7 @@ in }; extended = mkOption { type = types.bool; - description = "extended mapping. Includes 'g>', 'g<', 'g>[count]{motion}' and - 'g<[count]{motion}'"; + description = "extended mapping. Includes 'g>', 'g<', 'g>[count]{motion}' and 'g<[count]{motion}'"; default = false; }; }; diff --git a/plugins/utils/floaterm.nix b/plugins/utils/floaterm.nix index 4441ba1b..e9d52b4b 100644 --- a/plugins/utils/floaterm.nix +++ b/plugins/utils/floaterm.nix @@ -23,12 +23,12 @@ in }; winWidth = mkOption { type = types.nullOr types.float; - description = "number of columns relative to &columns."; + description = "number of columns relative to &columns."; default = null; }; winHeight = mkOption { type = types.nullOr types.float; - description = "number of lines relative to &lines."; + description = "number of lines relative to &lines."; default = null; }; borderChars = mkOption { @@ -38,7 +38,7 @@ in }; rootMarkers = mkOption { type = types.nullOr (types.listOf types.str); - description = "Markers used to detect the project root directory for --cwd="; + description = "Markers used to detect the project root directory for --cwd=<root>"; default = null; }; opener = mkOption { diff --git a/plugins/utils/startify.nix b/plugins/utils/startify.nix index 1df6771c..de5d2a98 100644 --- a/plugins/utils/startify.nix +++ b/plugins/utils/startify.nix @@ -17,23 +17,25 @@ mkPlugin args { lists = mkDefaultOpt { description = "Startify display lists. If it's a string, it'll be interpreted as literal lua code"; global = "startify_lists"; - type = types.listOf (types.oneOf [types.submodule { - type = mkOption { - type = types.str; - description = "The type of the list"; + type = types.listOf (types.oneOf [(types.submodule { + options = { + type = mkOption { + type = types.str; + description = "The type of the list"; + }; + # TODO the header should be a literal lua string! + header = mkOption { + type = types.nullOr (types.listOf types.str); + description = "Optional header. It's a list of strings"; + default = null; + }; + indices = mkOption { + type = types.nullOr (types.listOf types.str); + description = "Optional indices for the current list"; + default = null; + }; }; - # TODO the header should be a literal lua string! - header = mkOption { - type = types.nullOr (types.listOf types.str); - description = "Optional header. It's a list of strings"; - default = null; - }; - indices = mkOption { - type = types.nullOr (types.listOf types.str); - description = "Optional indices for the current list"; - default = null; - }; - } types.str]); + }) types.str]); value = val: let list = map (v: if builtins.isAttrs v then toLuaObject v else v) val; @@ -131,7 +133,7 @@ mkPlugin args { }; enableSpecial = mkDefaultOpt { - description = "Show and "; + description = "Show <empty buffer> and <quit>"; global = "startify_enable_special"; type = types.bool; };