diff --git a/flake.lock b/flake.lock index 23c561f..01c0331 100644 --- a/flake.lock +++ b/flake.lock @@ -35,27 +35,6 @@ "type": "github" } }, - "flake-parts_2": { - "inputs": { - "nixpkgs-lib": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1769996383, - "narHash": "sha256-AnYjnFWgS49RlqX7LrC4uA+sCCDBj0Ry/WOJ5XWAsa0=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "57928607ea566b5db3ad13af0e57e921e6b12381", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -163,28 +142,6 @@ "type": "github" } }, - "nixvim": { - "inputs": { - "flake-parts": "flake-parts_2", - "nixpkgs": [ - "nixpkgs" - ], - "systems": "systems" - }, - "locked": { - "lastModified": 1770630823, - "narHash": "sha256-5SEmOnJ61vmbap39vzWEsCX5UQ+3Ul8J4mXWKdqSn3w=", - "owner": "nix-community", - "repo": "nixvim", - "rev": "6acc964664ac916c64fe4e394edd467af4d90790", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "nixvim", - "type": "github" - } - }, "root": { "inputs": { "easy-hosts": "easy-hosts", @@ -192,7 +149,6 @@ "home-manager": "home-manager", "niri": "niri", "nixpkgs": "nixpkgs", - "nixvim": "nixvim", "silentSDDM": "silentSDDM", "sops-nix": "sops-nix" } @@ -237,21 +193,6 @@ "type": "github" } }, - "systems": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "xwayland-satellite-stable": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 25e28a5..936cb1d 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,6 @@ outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } { imports = with inputs; [ easy-hosts.flakeModule - nixvim.homeModules.nixvim home-manager.flakeModules.home-manager ]; @@ -73,7 +72,6 @@ # inputs.lix.follows = "lix"; # }; - niri = { type = "github"; owner = "sodiboo"; @@ -81,13 +79,6 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - nixvim = { - type = "github"; - owner = "nix-community"; - repo = "nixvim"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - sops-nix = { type = "github"; owner = "Mic92"; diff --git a/hmModules/apps/neovim.old/app.nix b/hmModules/apps/neovim.old/app.nix deleted file mode 100644 index d655103..0000000 --- a/hmModules/apps/neovim.old/app.nix +++ /dev/null @@ -1,169 +0,0 @@ -{ config, pkgs, lib, ... }: - -{ - options.neovim = { - enable = lib.mkEnableOption "Enables neovim"; - languages = { - c.enable = lib.mkEnableOption "Enables c support"; - go.enable = lib.mkEnableOption "Enables go support"; - nix.enable = lib.mkEnableOption "Enables nix support"; - rust.enable = lib.mkEnableOption "Enables rust support"; - typescript.enable = lib.mkEnableOption "Enables typescript support"; - }; - themes = { - catppuccin.enable = lib.mkEnableOption "Enables catppuccin theme"; - }; - plugins = { - comments.enable = lib.mkEnableOption "Enables nvim-comment"; - fugitive.enable = lib.mkEnableOption "Enables git-fugitive"; - lualine.enable = lib.mkEnableOption "Enables lualine"; - luasnip.enable = lib.mkEnableOption "Enables luasnip snippets"; - nvimcmp.enable = lib.mkEnableOption "Enables nvim completion"; - telescope = { - enable = lib.mkEnableOption "Enables telescope"; - fzf.enable = lib.mkEnableOption "Enables telescope-fzf"; - }; - treesitter.enable = lib.mkEnableOption "Enables treesitter"; - wiki.enable = lib.mkEnableOption "Enables a wiki"; - }; - }; - - imports = [ - ./plugin/lsp.nix - ./plugin/nvimcmp.nix - ./plugin/telescope.nix - ./plugin/treesitter.nix - ]; - - config = lib.mkIf config.neovim.enable { - home.sessionVariables = { - EDITOR = "nvim"; - VISUAL = "nvim"; - }; - - programs.neovim = { - enable = true; - viAlias = true; - vimAlias = true; - vimdiffAlias = true; - - extraLuaConfig = '' - ${builtins.readFile ./options.lua} - ''; - - extraPackages = with pkgs; [ - (lib.mkIf config.neovim.languages.c.enable libclang) - (lib.mkIf config.neovim.languages.go.enable gopls) - (lib.mkIf config.neovim.languages.nix.enable nil) - (lib.mkIf config.neovim.languages.rust.enable rust-analyzer) - ]; - - # Additional packages are added through imports - plugins = let - lopts = lib.lists.optionals; - cfgp = config.neovim.plugins; - cfgl = config.neovim.languages; - cfgt = config.neovim.themes; - - comments = lopts cfgp.comments.enable (with pkgs.vimPlugins; [ - { - plugin = comment-nvim; - type = "lua"; - config = "require(\"Comment\").setup()"; - } - ]); - - fugitive = lopts cfgp.fugitive.enable (with pkgs.vimPlugins; [ - vim-fugitive - ]); - - luasnip-pkg = lopts cfgp.luasnip.enable (with pkgs.vimPlugins; [ - luasnip - friendly-snippets - (lib.mkIf cfgp.nvimcmp.enable cmp_luasnip) - ]); - - lualine = lopts cfgp.lualine.enable (with pkgs.vimPlugins; [ - { - plugin = lualine-nvim; - type = "lua"; - config = '' - require("lualine").setup { - options = { - icons_enabled = true, - '' + lib.strings.optionalString cfgt.catppuccin.enable '' - theme = "catppuccin" - '' + '' - } - } - ''; - } - nvim-web-devicons - ]); - - nix-pkg = lopts cfgl.nix.enable (with pkgs.vimPlugins; [ - vim-nix - ]); - - rust-pkg = lopts cfgl.rust.enable (with pkgs.vimPlugins; [ - { - plugin = rustaceanvim; - type = "lua"; - config = '' - vim.g.rust_recommended_style = 0 - ''; - } - ]); - - go-pkg = lopts cfgl.go.enable (with pkgs.vimPlugins; [ - go-nvim - ]); - - typescript-pkg = lopts cfgl.typescript.enable (with pkgs.vimPlugins; [ - { - plugin = typescript-tools-nvim; - type = "lua"; - config = '' - require("typescript-tools").setup {} - ''; - } - ]); - - catppuccin-pkg = lopts cfgt.catppuccin.enable (with pkgs.vimPlugins; [ - { - plugin = catppuccin-nvim; - type = "lua"; - config = '' - vim.cmd.colorscheme "catppuccin-mocha" - require('catppuccin').setup({ - integrations = { - '' + lib.strings.optionalString cfgp.wiki.enable '' - vimwiki = true - '' + '' - } - }) - ''; - } - ]); - - wiki = lopts cfgp.wiki.enable (with pkgs.vimPlugins; [ - { - plugin = vimwiki; - type = "lua"; - config = '' - vim.g.vimwiki_list = { - { - path = '${config.xdg.userDirs.documents}/wiki', - links_space_char = '_', - ext = '.md', - syntax = 'markdown', - } - } - ''; - } - ]); - in comments ++ fugitive ++ luasnip-pkg ++ lualine ++ nix-pkg ++ rust-pkg - ++ go-pkg ++ wiki ++ catppuccin-pkg ++ typescript-pkg; - }; - }; -} diff --git a/hmModules/apps/neovim.old/options.lua b/hmModules/apps/neovim.old/options.lua deleted file mode 100644 index db669e2..0000000 --- a/hmModules/apps/neovim.old/options.lua +++ /dev/null @@ -1,60 +0,0 @@ --- Globals -vim.g.mapleader = ' ' -vim.g.maplocalleader = ' ' -vim.opt.list = true -vim.bo.filetype = "on" -vim.opt.updatetime = 300 - --- Indentations -vim.opt.tabstop = 2 -vim.opt.softtabstop = 0 -vim.opt.shiftwidth = 2 -vim.opt.smarttab = true -vim.opt.expandtab = true - --- Style -vim.opt.colorcolumn = "80" -vim.opt.showmatch = true -vim.opt.number = true -vim.opt.relativenumber = true - --- Easy Split Navigation --- nnoremap --- nnoremap --- nnoremap --- nnoremap - --- Searching -vim.opt.smartcase = true - --- Backups -vim.opt.swapfile = false -vim.opt.backup = false -vim.opt.undofile = true -vim.opt.undodir = '/home/pan/.config/nvim/undodir' - --- Error viewing -vim.keymap.set('n', 'd', function() vim.diagnostic.open_float() end) - --- Easy copy and pasting to external programs --- map "+yy --- map "+P - --- autocmd BufRead,BufNewFile *.md call WritingMode() --- autocmd BufRead,BufNewFile *.tex call WritingMode() --- autocmd BufRead,BufNewFile *.svx call WritingMode() - --- autocmd BufRead,BufNewFile *.py call PythonMode() - --- function! WritingMode() - -- setlocal textwidth=80 - -- setlocal wrap linebreak nolist - -- setlocal whichwrap+=<,>,h,l - -- nnoremap j gj - -- nnoremap k gk - -- setlocal spell spelllang=en_us --- endfunction --- function! PythonMode() - -- setlocal foldmethod=indent - -- setlocal foldlevel=99 --- endfunction diff --git a/hmModules/apps/neovim.old/plugin/lsp.nix b/hmModules/apps/neovim.old/plugin/lsp.nix deleted file mode 100644 index f5a66c5..0000000 --- a/hmModules/apps/neovim.old/plugin/lsp.nix +++ /dev/null @@ -1,53 +0,0 @@ -{ config, pkgs, lib, ... }: - -{ - config = lib.mkIf config.neovim.enable { - programs.neovim.plugins = let - cfgp = config.neovim.plugins; - cfgl = config.neovim.languages; - - configText = '' - local on_attach = function(_, bufnr) - - local bufmap = function(keys, func) - vim.keymap.set('n', keys, func, { buffer = bufnr }) - end - - bufmap('r', vim.lsp.buf.rename) - bufmap('a', vim.lsp.buf.code_action) - - bufmap('gd', vim.lsp.buf.definition) - bufmap('gD', vim.lsp.buf.declaration) - bufmap('gI', vim.lsp.buf.implementation) - bufmap('D', vim.lsp.buf.type_definition) - - '' + lib.strings.optionalString cfgp.telescope.enable '' - bufmap('gr', require('telescope.builtin').lsp_references) - bufmap('s', require('telescope.builtin').lsp_document_symbols) - bufmap('S', require('telescope.builtin').lsp_dynamic_workspace_symbols) - '' + '' - - bufmap('K', vim.lsp.buf.hover) - - vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) - vim.lsp.buf.format() - end, {}) - end - - local capabilities = vim.lsp.protocol.make_client_capabilities() - '' + lib.strings.optionalString cfgl.c.enable '' - require('lspconfig').clangd.setup {} - '' + lib.strings.optionalString cfgl.go.enable '' - require('lspconfig').gopls.setup {} - '' + lib.strings.optionalString cfgl.nix.enable '' - require('lspconfig').nil_ls.setup {} - ''; - in with pkgs.vimPlugins; [ - { - plugin = nvim-lspconfig; - type = "lua"; - config = configText; - } - ]; - }; -} diff --git a/hmModules/apps/neovim.old/plugin/nvimcmp.nix b/hmModules/apps/neovim.old/plugin/nvimcmp.nix deleted file mode 100644 index 82098ef..0000000 --- a/hmModules/apps/neovim.old/plugin/nvimcmp.nix +++ /dev/null @@ -1,72 +0,0 @@ -{ config, pkgs, lib, ... }: - -let - cfgp = config.neovim.plugins; -in { - config = lib.mkIf (config.neovim.enable && cfgp.nvimcmp.enable) { - programs.neovim.plugins = let - - configText = '' - local cmp = require('cmp') - '' + lib.strings.optionalString cfgp.luasnip.enable '' - local luasnip = require('luasnip') - - require('luasnip.loaders.from_vscode').lazy_load() - luasnip.config.setup {} - '' + '' - - cmp.setup { - mapping = cmp.mapping.preset.insert { - [''] = cmp.mapping.select_next_item(), - [''] = cmp.mapping.select_prev_item(), - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete {}, - [''] = cmp.mapping.confirm { - behavior = cmp.ConfirmBehavior.Replace, - select = true, - }, - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - '' + lib.strings.optionalString cfgp.luasnip.enable '' - elseif luasnip.expand_or_locally_jumpable() then - luasnip.expand_or_jump() - '' + '' - else - fallback() - end - end, { 'i', 's' }), - [''] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - '' + lib.strings.optionalString cfgp.luasnip.enable '' - elseif luasnip.locally_jumpable(-1) then - luasnip.jump(-1) - '' + '' - else - fallback() - end - end, { 'i', 's' }), - }, - '' + lib.strings.optionalString cfgp.luasnip.enable '' - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - sources = { - { name = 'luasnip' }, - }, - '' + '' - } - ''; - in with pkgs.vimPlugins; [ - { - plugin = nvim-cmp; - type = "lua"; - config = configText; - } - ]; - }; -} diff --git a/hmModules/apps/neovim.old/plugin/telescope.nix b/hmModules/apps/neovim.old/plugin/telescope.nix deleted file mode 100644 index 48a96e9..0000000 --- a/hmModules/apps/neovim.old/plugin/telescope.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ config, pkgs, lib, ... }: - -let - cfgp = config.neovim.plugins; -in { - config = lib.mkIf (config.neovim.enable && cfgp.telescope.enable) { - programs.neovim.plugins = let - configText = '' - require('telescope').setup({ - extensions = { - '' + lib.strings.optionalString cfgp.telescope.fzf.enable '' - fzf = { - fuzzy = true, -- false will only do exact matching - override_generic_sorter = true, -- override the generic sorter - override_file_sorter = true, -- override the file sorter - case_mode = "smart_case", -- or "ignore_case" or "respect_case" - -- the default case_mode is "smart_case" - } - '' + '' - } - }) - local builtin = require('telescope.builtin') - vim.keymap.set('n', 'ff', builtin.find_files, {}) - vim.keymap.set('n', 'fg', builtin.git_files, {}) - - '' + lib.strings.optionalString cfgp.telescope.fzf.enable '' - require('telescope').load_extension('fzf') - ''; - in with pkgs.vimPlugins; [ - { - plugin = telescope-nvim; - type = "lua"; - config = configText; - } - (lib.mkIf cfgp.nvimcmp.enable telescope-fzf-native-nvim) - ]; - - home.packages = with pkgs; [ - (lib.mkIf cfgp.telescope.fzf.enable fzf) - ]; - - }; -} diff --git a/hmModules/apps/neovim.old/plugin/treesitter.nix b/hmModules/apps/neovim.old/plugin/treesitter.nix deleted file mode 100644 index a6bb8c0..0000000 --- a/hmModules/apps/neovim.old/plugin/treesitter.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ config, pkgs, lib, ... }: - -let - cfgp = config.neovim.plugins; - cfgl = config.neovim.languages; -in { - config = lib.mkIf (config.neovim.enable && cfgp.treesitter.enable) { - programs.neovim.plugins = let - configText = '' - require('nvim-treesitter.configs').setup { - ensure_installed = {}, - - auto_install = false, - - highlight = { enable = true }, - - indent = { enable = true }, - } - ''; - - # I've tried many things, and can't get treesitter plugins changing - # dynamically. For not just have them always loaded regardless of config - treeplugs = p: [ - p.tree-sitter-c - p.tree-sitter-go - p.tree-sitter-nix - p.tree-sitter-rust - p.tree-sitter-typescript - ]; - in with pkgs.vimPlugins; [ - { - plugin = (nvim-treesitter.withPlugins treeplugs); - type = "lua"; - config = configText; - } - ]; - }; -} diff --git a/hmModules/apps/neovim/app.nix b/hmModules/apps/neovim/app.nix index 6d078ae..d655103 100644 --- a/hmModules/apps/neovim/app.nix +++ b/hmModules/apps/neovim/app.nix @@ -28,12 +28,12 @@ }; }; - # imports = [ - # ./plugin/lsp.nix - # ./plugin/nvimcmp.nix - # ./plugin/telescope.nix - # ./plugin/treesitter.nix - # ]; + imports = [ + ./plugin/lsp.nix + ./plugin/nvimcmp.nix + ./plugin/telescope.nix + ./plugin/treesitter.nix + ]; config = lib.mkIf config.neovim.enable { home.sessionVariables = { @@ -41,114 +41,129 @@ VISUAL = "nvim"; }; - programs.nixvim = { + programs.neovim = { enable = true; viAlias = true; vimAlias = true; vimdiffAlias = true; + + extraLuaConfig = '' + ${builtins.readFile ./options.lua} + ''; + + extraPackages = with pkgs; [ + (lib.mkIf config.neovim.languages.c.enable libclang) + (lib.mkIf config.neovim.languages.go.enable gopls) + (lib.mkIf config.neovim.languages.nix.enable nil) + (lib.mkIf config.neovim.languages.rust.enable rust-analyzer) + ]; + + # Additional packages are added through imports + plugins = let + lopts = lib.lists.optionals; + cfgp = config.neovim.plugins; + cfgl = config.neovim.languages; + cfgt = config.neovim.themes; + + comments = lopts cfgp.comments.enable (with pkgs.vimPlugins; [ + { + plugin = comment-nvim; + type = "lua"; + config = "require(\"Comment\").setup()"; + } + ]); + + fugitive = lopts cfgp.fugitive.enable (with pkgs.vimPlugins; [ + vim-fugitive + ]); + + luasnip-pkg = lopts cfgp.luasnip.enable (with pkgs.vimPlugins; [ + luasnip + friendly-snippets + (lib.mkIf cfgp.nvimcmp.enable cmp_luasnip) + ]); + + lualine = lopts cfgp.lualine.enable (with pkgs.vimPlugins; [ + { + plugin = lualine-nvim; + type = "lua"; + config = '' + require("lualine").setup { + options = { + icons_enabled = true, + '' + lib.strings.optionalString cfgt.catppuccin.enable '' + theme = "catppuccin" + '' + '' + } + } + ''; + } + nvim-web-devicons + ]); + + nix-pkg = lopts cfgl.nix.enable (with pkgs.vimPlugins; [ + vim-nix + ]); + + rust-pkg = lopts cfgl.rust.enable (with pkgs.vimPlugins; [ + { + plugin = rustaceanvim; + type = "lua"; + config = '' + vim.g.rust_recommended_style = 0 + ''; + } + ]); + + go-pkg = lopts cfgl.go.enable (with pkgs.vimPlugins; [ + go-nvim + ]); + + typescript-pkg = lopts cfgl.typescript.enable (with pkgs.vimPlugins; [ + { + plugin = typescript-tools-nvim; + type = "lua"; + config = '' + require("typescript-tools").setup {} + ''; + } + ]); + + catppuccin-pkg = lopts cfgt.catppuccin.enable (with pkgs.vimPlugins; [ + { + plugin = catppuccin-nvim; + type = "lua"; + config = '' + vim.cmd.colorscheme "catppuccin-mocha" + require('catppuccin').setup({ + integrations = { + '' + lib.strings.optionalString cfgp.wiki.enable '' + vimwiki = true + '' + '' + } + }) + ''; + } + ]); + + wiki = lopts cfgp.wiki.enable (with pkgs.vimPlugins; [ + { + plugin = vimwiki; + type = "lua"; + config = '' + vim.g.vimwiki_list = { + { + path = '${config.xdg.userDirs.documents}/wiki', + links_space_char = '_', + ext = '.md', + syntax = 'markdown', + } + } + ''; + } + ]); + in comments ++ fugitive ++ luasnip-pkg ++ lualine ++ nix-pkg ++ rust-pkg + ++ go-pkg ++ wiki ++ catppuccin-pkg ++ typescript-pkg; }; - # extraLuaConfig = '' - # ${builtins.readFile ./options.lua} - # ''; - - programs.nixvim.colorschemes = with config.neovim.themes; { - catppuccin = lib.mkIf catppuccin.enable { - enable = true; - flavour = "mocha"; - integrations.vimwiki = lib.mkIf wiki.enable true; - } - }; - - programs.nixvim.plugins = with config.neovim.plugins; { - comment.enable = comments.enable; - - fugitive.enable = fugitive.enable; - - lualine = lib.mkIf lualine.enable { - enable = true; - icons_enabled = true; - }; - web-devicons.enable = lualine.enable; - - luasnip.enable = luasnip.enable; - friendly-snippets.enable = luasnip.enable; - - cmp = { - enable = nvimcmp.enable; - autoEnableSources = true; - settings.sources = lib.options luasnip.enable { name = "cmp-luasnip" }; - }; - - - - - # telescope = { - # enable = lib.mkEnableOption "Enables telescope"; - # fzf.enable = lib.mkEnableOption "Enables telescope-fzf"; - # }; - # treesitter.enable = lib.mkEnableOption "Enables treesitter"; - # wiki.enable = lib.mkEnableOption "Enables a wiki"; - # - # - # wiki = lopts cfgp.wiki.enable (with pkgs.vimPlugins; [ - # { - # plugin = vimwiki; - # type = "lua"; - # config = '' - # vim.g.vimwiki_list = { - # { - # path = '${config.xdg.userDirs.documents}/wiki', - # links_space_char = '_', - # ext = '.md', - # syntax = 'markdown', - # } - # } - # ''; - # } - # ]); - } - - # extraPackages = with pkgs; [ - # (lib.mkIf config.neovim.languages.c.enable libclang) - # (lib.mkIf config.neovim.languages.go.enable gopls) - # (lib.mkIf config.neovim.languages.nix.enable nil) - # (lib.mkIf config.neovim.languages.rust.enable rust-analyzer) - # ]; - # - # # Additional packages are added through imports - # plugins = let - # lopts = lib.lists.optionals; - # cfgp = config.neovim.plugins; - # cfgl = config.neovim.languages; - # cfgt = config.neovim.themes; - # - # nix-pkg = lopts cfgl.nix.enable (with pkgs.vimPlugins; [ - # vim-nix - # ]); - # - # rust-pkg = lopts cfgl.rust.enable (with pkgs.vimPlugins; [ - # { - # plugin = rustaceanvim; - # type = "lua"; - # config = '' - # vim.g.rust_recommended_style = 0 - # ''; - # } - # ]); - # - # go-pkg = lopts cfgl.go.enable (with pkgs.vimPlugins; [ - # go-nvim - # ]); - # - # typescript-pkg = lopts cfgl.typescript.enable (with pkgs.vimPlugins; [ - # { - # plugin = typescript-tools-nvim; - # type = "lua"; - # config = '' - # require("typescript-tools").setup {} - # ''; - # } - # ]); - # }; }; }