From 2edcb2d5a75acf42c177c634a42484ebc20be58d Mon Sep 17 00:00:00 2001 From: Mykhailo Nikiforov Date: Sun, 24 Mar 2024 18:25:13 +0200 Subject: [PATCH] feat: release lazyVim 1.0.0 --- .gitingore | 2 +- config/default.nix | 9 ++ config/src/lazygit/config.yml | 1 + config/src/lazygit/state.yml | 1 + {nvim => config/src/nvim}/.neoconf.json | 0 {nvim => config/src/nvim}/init.lua | 0 config/src/nvim/lazy-lock.json | 1 + config/src/nvim/lazyvim.json | 1 + .../src/nvim}/lua/config/autocmds.lua | 0 .../src/nvim}/lua/config/keymaps.lua | 0 {nvim => config/src/nvim}/lua/config/lazy.lua | 1 + .../src/nvim}/lua/config/options.lua | 0 config/src/nvim/lua/plugins/lang/nix.lua | 41 ++++++++++ .../src/nvim}/lua/plugins/lang/shell.lua | 0 .../nvim}/lua/plugins/misc/tmux-navigator.lua | 0 .../src/nvim}/lua/plugins/telescope.lua | 0 .../src/nvim}/lua/plugins/tokyonight.lua | 0 .../src/nvim}/lua/plugins/undotree.lua | 0 {nvim => config/src/nvim}/stylua.toml | 0 flake.lock | 46 ++++++++++- flake.nix | 82 +++++-------------- lazygit/config.yml | 1 - lazygit/state.yml | 1 - nvim/lazy-lock.json | 1 - nvim/lazyvim.json | 1 - packages/lazyVim.nix | 12 +++ renovate.json5 | 3 - runtimeDeps.nix | 28 +++++++ 28 files changed, 160 insertions(+), 72 deletions(-) create mode 100644 config/default.nix create mode 120000 config/src/lazygit/config.yml create mode 120000 config/src/lazygit/state.yml rename {nvim => config/src/nvim}/.neoconf.json (100%) rename {nvim => config/src/nvim}/init.lua (100%) create mode 120000 config/src/nvim/lazy-lock.json create mode 120000 config/src/nvim/lazyvim.json rename {nvim => config/src/nvim}/lua/config/autocmds.lua (100%) rename {nvim => config/src/nvim}/lua/config/keymaps.lua (100%) rename {nvim => config/src/nvim}/lua/config/lazy.lua (98%) rename {nvim => config/src/nvim}/lua/config/options.lua (100%) create mode 100644 config/src/nvim/lua/plugins/lang/nix.lua rename {nvim => config/src/nvim}/lua/plugins/lang/shell.lua (100%) rename {nvim => config/src/nvim}/lua/plugins/misc/tmux-navigator.lua (100%) rename {nvim => config/src/nvim}/lua/plugins/telescope.lua (100%) rename {nvim => config/src/nvim}/lua/plugins/tokyonight.lua (100%) rename {nvim => config/src/nvim}/lua/plugins/undotree.lua (100%) rename {nvim => config/src/nvim}/stylua.toml (100%) delete mode 100644 lazygit/config.yml delete mode 120000 lazygit/state.yml delete mode 120000 nvim/lazy-lock.json delete mode 120000 nvim/lazyvim.json create mode 100644 packages/lazyVim.nix delete mode 100644 renovate.json5 create mode 100644 runtimeDeps.nix diff --git a/.gitingore b/.gitingore index b2be92b..1cd791b 100644 --- a/.gitingore +++ b/.gitingore @@ -1 +1 @@ -result +result/ diff --git a/config/default.nix b/config/default.nix new file mode 100644 index 0000000..58f8239 --- /dev/null +++ b/config/default.nix @@ -0,0 +1,9 @@ +{pkgs}: +pkgs.stdenv.mkDerivation { + name = "nvim-config"; + src = ./src; + installPhase = '' + mkdir -p $out/ + cp -r . $out/ + ''; +} diff --git a/config/src/lazygit/config.yml b/config/src/lazygit/config.yml new file mode 120000 index 0000000..dc10f6f --- /dev/null +++ b/config/src/lazygit/config.yml @@ -0,0 +1 @@ +/usr/local/etc/xaked-nvim-lazygit-config.yml \ No newline at end of file diff --git a/config/src/lazygit/state.yml b/config/src/lazygit/state.yml new file mode 120000 index 0000000..293c70c --- /dev/null +++ b/config/src/lazygit/state.yml @@ -0,0 +1 @@ +/usr/local/etc/xaked-nvim-lazygit-state.yml \ No newline at end of file diff --git a/nvim/.neoconf.json b/config/src/nvim/.neoconf.json similarity index 100% rename from nvim/.neoconf.json rename to config/src/nvim/.neoconf.json diff --git a/nvim/init.lua b/config/src/nvim/init.lua similarity index 100% rename from nvim/init.lua rename to config/src/nvim/init.lua diff --git a/config/src/nvim/lazy-lock.json b/config/src/nvim/lazy-lock.json new file mode 120000 index 0000000..51440b9 --- /dev/null +++ b/config/src/nvim/lazy-lock.json @@ -0,0 +1 @@ +/usr/local/etc/xaked-nvim-lazy-lock.json \ No newline at end of file diff --git a/config/src/nvim/lazyvim.json b/config/src/nvim/lazyvim.json new file mode 120000 index 0000000..64f97c4 --- /dev/null +++ b/config/src/nvim/lazyvim.json @@ -0,0 +1 @@ +/usr/local/etc/xaked-nvim-lazyvim.json \ No newline at end of file diff --git a/nvim/lua/config/autocmds.lua b/config/src/nvim/lua/config/autocmds.lua similarity index 100% rename from nvim/lua/config/autocmds.lua rename to config/src/nvim/lua/config/autocmds.lua diff --git a/nvim/lua/config/keymaps.lua b/config/src/nvim/lua/config/keymaps.lua similarity index 100% rename from nvim/lua/config/keymaps.lua rename to config/src/nvim/lua/config/keymaps.lua diff --git a/nvim/lua/config/lazy.lua b/config/src/nvim/lua/config/lazy.lua similarity index 98% rename from nvim/lua/config/lazy.lua rename to config/src/nvim/lua/config/lazy.lua index d37f40f..c9eadc4 100644 --- a/nvim/lua/config/lazy.lua +++ b/config/src/nvim/lua/config/lazy.lua @@ -29,6 +29,7 @@ require("lazy").setup({ { import = "lazyvim.plugins.extras.ui.mini-animate" }, { import = "plugins.tokyonight" }, { import = "plugins.telescope" }, + { import = "plugins.lang.nix" }, { import = "plugins.lang.shell" }, { import = "plugins.misc.tmux-navigator" }, { import = "plugins.undotree" }, diff --git a/nvim/lua/config/options.lua b/config/src/nvim/lua/config/options.lua similarity index 100% rename from nvim/lua/config/options.lua rename to config/src/nvim/lua/config/options.lua diff --git a/config/src/nvim/lua/plugins/lang/nix.lua b/config/src/nvim/lua/plugins/lang/nix.lua new file mode 100644 index 0000000..b8e9a2a --- /dev/null +++ b/config/src/nvim/lua/plugins/lang/nix.lua @@ -0,0 +1,41 @@ +return { + { + "stevearc/conform.nvim", + optional = true, + opts = { + formatters_by_ft = { + ["nix"] = { "alejandra" }, + }, + }, + }, + { + "neovim/nvim-lspconfig", + opts = { + servers = { + nixd = {}, + }, + }, + }, + { + "nvim-treesitter/nvim-treesitter", + opts = function(_, opts) + if type(opts.ensure_installed) == "table" then + vim.list_extend(opts.ensure_installed, { + "nix", + }) + end + end, + }, + { + "nvimtools/none-ls.nvim", + optional = true, + opts = function(_, opts) + local null_ls = require("null-ls") + opts.sources = vim.list_extend(opts.sources or {}, { + null_ls.builtins.code_actions.statix, + null_ls.builtins.diagnostics.statix, + null_ls.builtins.formatting.alejandra, + }) + end, + }, +} diff --git a/nvim/lua/plugins/lang/shell.lua b/config/src/nvim/lua/plugins/lang/shell.lua similarity index 100% rename from nvim/lua/plugins/lang/shell.lua rename to config/src/nvim/lua/plugins/lang/shell.lua diff --git a/nvim/lua/plugins/misc/tmux-navigator.lua b/config/src/nvim/lua/plugins/misc/tmux-navigator.lua similarity index 100% rename from nvim/lua/plugins/misc/tmux-navigator.lua rename to config/src/nvim/lua/plugins/misc/tmux-navigator.lua diff --git a/nvim/lua/plugins/telescope.lua b/config/src/nvim/lua/plugins/telescope.lua similarity index 100% rename from nvim/lua/plugins/telescope.lua rename to config/src/nvim/lua/plugins/telescope.lua diff --git a/nvim/lua/plugins/tokyonight.lua b/config/src/nvim/lua/plugins/tokyonight.lua similarity index 100% rename from nvim/lua/plugins/tokyonight.lua rename to config/src/nvim/lua/plugins/tokyonight.lua diff --git a/nvim/lua/plugins/undotree.lua b/config/src/nvim/lua/plugins/undotree.lua similarity index 100% rename from nvim/lua/plugins/undotree.lua rename to config/src/nvim/lua/plugins/undotree.lua diff --git a/nvim/stylua.toml b/config/src/nvim/stylua.toml similarity index 100% rename from nvim/stylua.toml rename to config/src/nvim/stylua.toml diff --git a/flake.lock b/flake.lock index be28c21..96081c5 100644 --- a/flake.lock +++ b/flake.lock @@ -18,13 +18,52 @@ "type": "github" } }, + "flake-utils_2": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "neovim": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "dir": "contrib", + "lastModified": 1703942320, + "narHash": "sha256-CcaBqA0yFCffNPmXOJTo8c9v1jrEBiqAl8CG5Dj5YxE=", + "owner": "neovim", + "repo": "neovim", + "rev": "8744ee8783a8597f9fce4a573ae05aca2f412120", + "type": "github" + }, + "original": { + "dir": "contrib", + "owner": "neovim", + "ref": "stable", + "repo": "neovim", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1710838473, - "narHash": "sha256-RLvwdQSENKOaLdKhNie8XqHmTXzNm00/M/THj6zplQo=", + "lastModified": 1711124224, + "narHash": "sha256-l0zlN/3CiodvWDtfBOVxeTwYSRz93muVbXWSpaMjXxM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "fa9f817df522ac294016af3d40ccff82f5fd3a63", + "rev": "56528ee42526794d413d6f244648aaee4a7b56c0", "type": "github" }, "original": { @@ -37,6 +76,7 @@ "root": { "inputs": { "flake-utils": "flake-utils", + "neovim": "neovim", "nixpkgs": "nixpkgs" } }, diff --git a/flake.nix b/flake.nix index 9896dbc..65354e3 100644 --- a/flake.nix +++ b/flake.nix @@ -3,78 +3,38 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; flake-utils.url = "github:numtide/flake-utils"; + neovim = { + url = "github:neovim/neovim/stable?dir=contrib"; + inputs.nixpkgs.follows = "nixpkgs"; + }; }; outputs = inputs @ { self, nixpkgs, flake-utils, + neovim, ... }: flake-utils.lib.eachDefaultSystem (system: let - pkgs = import nixpkgs { - inherit system; + overlayFlakeInputs = prev: final: { + neovim = neovim.packages.${system}.neovim; }; - recursiveMerge = attrList: let - f = attrPath: - builtins.zipAttrsWith (n: values: - if pkgs.lib.tail values == [] - then pkgs.lib.head values - else if pkgs.lib.all pkgs.lib.isList values - then pkgs.lib.unique (pkgs.lib.concatLists values) - else if pkgs.lib.all pkgs.lib.isAttrs values - then f (attrPath ++ [n]) values - else pkgs.lib.last values); - in - f [] attrList; + overlayLazyVim = prev: final: { + lazyVim = import ./packages/lazyVim.nix { + pkgs = final; + }; + }; + + pkgs = import nixpkgs { + inherit system; + overlays = [overlayFlakeInputs overlayLazyVim]; + }; in rec { - dependencies = with pkgs; [ - ripgrep - fd - git - curl # needed to fetch titles from urls - wget - cargo - python311 - python311Packages.pip - php82 - php82Packages.composer - go - ruby - luarocks - nodejs - zulu #java11 - fish - fzf - perl536 - perl536Packages.CPAN - unzip - tree-sitter - gcc - gnumake - lazygit - ]; - neovim-augmented = recursiveMerge [ - pkgs.neovim-unwrapped - {buildInputs = dependencies;} - ]; - packages.pwnvim = pkgs.wrapNeovim neovim-augmented { - viAlias = true; - vimAlias = true; - withNodeJs = false; - withPython3 = false; - withRuby = false; - extraMakeWrapperArgs = ''--prefix PATH : "${pkgs.lib.makeBinPath dependencies}" --set XDG_CONFIG_HOME "${self}"''; - }; - apps.pwnvim = flake-utils.lib.mkApp { - drv = self.packages.${system}.pwnvim; - name = "pwnvim"; - exePath = "/bin/nvim"; - }; - packages.default = packages.pwnvim; - apps.default = apps.pwnvim; - devShell = pkgs.mkShell { - buildInputs = with pkgs; [packages.pwnvim] ++ dependencies; + packages.default = pkgs.lazyVim; + apps.default = { + type = "app"; + program = "${packages.default}/bin/nvim"; }; }); } diff --git a/lazygit/config.yml b/lazygit/config.yml deleted file mode 100644 index 8b13789..0000000 --- a/lazygit/config.yml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lazygit/state.yml b/lazygit/state.yml deleted file mode 120000 index 7344c6a..0000000 --- a/lazygit/state.yml +++ /dev/null @@ -1 +0,0 @@ -/tmp/state.yml \ No newline at end of file diff --git a/nvim/lazy-lock.json b/nvim/lazy-lock.json deleted file mode 120000 index b8f7329..0000000 --- a/nvim/lazy-lock.json +++ /dev/null @@ -1 +0,0 @@ -/opt/lazy-lock.json \ No newline at end of file diff --git a/nvim/lazyvim.json b/nvim/lazyvim.json deleted file mode 120000 index 1e6467d..0000000 --- a/nvim/lazyvim.json +++ /dev/null @@ -1 +0,0 @@ -/opt/lazyvim.json \ No newline at end of file diff --git a/packages/lazyVim.nix b/packages/lazyVim.nix new file mode 100644 index 0000000..77c9df7 --- /dev/null +++ b/packages/lazyVim.nix @@ -0,0 +1,12 @@ +{pkgs}: let + config = import ../config {inherit pkgs;}; + runtimeDeps = import ../runtimeDeps.nix {inherit pkgs;}; +in + pkgs.wrapNeovim pkgs.neovim { + viAlias = true; + vimAlias = true; + withNodeJs = true; + withPython3 = true; + withRuby = false; + extraMakeWrapperArgs = ''--prefix PATH : "${pkgs.lib.makeBinPath runtimeDeps.dependencies}" --set XDG_CONFIG_HOME "${config}"''; + } diff --git a/renovate.json5 b/renovate.json5 deleted file mode 100644 index 7190a60..0000000 --- a/renovate.json5 +++ /dev/null @@ -1,3 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json" -} diff --git a/runtimeDeps.nix b/runtimeDeps.nix new file mode 100644 index 0000000..524257c --- /dev/null +++ b/runtimeDeps.nix @@ -0,0 +1,28 @@ +{pkgs}: { + dependencies = with pkgs; [ + nixd # nix lsp + alejandra # nix formatter + statix # linter for nix + ripgrep + fd + git + curl # needed to fetch titles from urls + wget + cargo + php82 + php82Packages.composer + go + ruby + luarocks + zulu #java11 + fish + fzf + perl536 + perl536Packages.CPAN + unzip + tree-sitter + gcc + gnumake + lazygit + ]; +}