diff --git a/dotfiles/neovim/README.md b/dotfiles/neovim/README.md index b602fe7..d660d69 100644 --- a/dotfiles/neovim/README.md +++ b/dotfiles/neovim/README.md @@ -19,6 +19,7 @@ Table of my own keybinds. Here as documentation for myself. I am yet to include | _cp_ | Use system clipboard | | | _jl_ | Save | | | _jk_ | Exit insert mode | | +| _rw_ | Rename word under cursor | | | _\k_ | Insert digraph | | | _\a_ | Swap last 2 used buffers | | | C-n | Open tree | nvim-tree | @@ -35,10 +36,6 @@ Table of my own keybinds. Here as documentation for myself. I am yet to include | \rn | Rename | lspconfig | | \f | format | lspconfig | -### Lh-brackets - -The default brackets I load in each buffer are (), [], "", '', {} and \`\`. Different brackets are added in different filetypes. - ### Telescope | Keybind | Description | Plugins | @@ -60,13 +57,13 @@ The default brackets I load in each buffer are (), [], "", '', {} and \`\`. Diff | Keybind | Description | | ------- | ------------------- | -| _sc_ | Case split | -| _mc_ | Make case | -| _ml_ | Make lemma | -| _es_ | Expression search | -| _gd_ | Generate definition | -| _rh_ | Refine hole | -| _ac_ | Add clause | +| _isc_ | Case split | +| _imc_ | Make case | +| _iml_ | Make lemma | +| _ies_ | Expression search | +| _igd_ | Generate definition | +| _irh_ | Refine hole | +| _iac_ | Add clause | ### Purescript @@ -75,6 +72,12 @@ The default brackets I load in each buffer are (), [], "", '', {} and \`\`. Diff | _vb_ | Make tmux run spago build in sepearate pane | | _vt_ | Make tmux run spago test in separate pane | +### Nix + +| Keybind | Description | +| ------- | ------------------------------------------- | +| _ug_ | Run nix-fetchgit on the current file | + ### Lean - Extra brackets: ⟨⟩ diff --git a/dotfiles/neovim/ftplugin/nix.lua b/dotfiles/neovim/ftplugin/nix.lua new file mode 100644 index 0000000..5b3a950 --- /dev/null +++ b/dotfiles/neovim/ftplugin/nix.lua @@ -0,0 +1,12 @@ +local A = require("my.plugins.arpeggio") +local C = require("my.plugins.comment") + +print("Initializing nix keybinds...") + +-- Use _ug_ to fetchgit stuff +A.chordSilent("n", "ug", + ":lua require('my.helpers.update-nix-fetchgit').update()", + { settings = "b" }) + +-- Idk why this isn't here by default +C.setCommentString("nix", "# %s") diff --git a/dotfiles/neovim/ftplugin/purescript.lua b/dotfiles/neovim/ftplugin/purescript.lua index b83e13e..4c891ed 100644 --- a/dotfiles/neovim/ftplugin/purescript.lua +++ b/dotfiles/neovim/ftplugin/purescript.lua @@ -1,11 +1,13 @@ local arpeggio = require("my.plugins.arpeggio") +print("Initializing nix keybinds...") + -- Use vt to test arpeggio.chordSilent("n", "vt", ":VimuxRunCommand \"clear && spago test\"", - {settings = "b"}) + { settings = "b" }) -- Use vb to build arpeggio.chordSilent("n", "vb", ":VimuxRunCommand \"clear && spago build\"", - {settings = "b"}) + { settings = "b" }) vim.opt.expandtab = true -- Use spaces for the tab char diff --git a/dotfiles/neovim/lua/my/keymaps.lua b/dotfiles/neovim/lua/my/keymaps.lua index c050c9b..62ce997 100644 --- a/dotfiles/neovim/lua/my/keymaps.lua +++ b/dotfiles/neovim/lua/my/keymaps.lua @@ -5,36 +5,38 @@ local au = require("my.helpers.augroup") local M = {} function M.map(mode, lhs, rhs, opts) - if string.len(mode) > 1 then - for i = 1, #mode do - local c = mode:sub(i, i) - M.map(c, lhs, rhs, opts) - end - else - local options = helpers.mergeTables(opts, {noremap = true}) - vim.api.nvim_set_keymap(mode, lhs, rhs, options) + if string.len(mode) > 1 then + for i = 1, #mode do + local c = mode:sub(i, i) + M.map(c, lhs, rhs, opts) end + else + local options = helpers.mergeTables(opts, { noremap = true }) + vim.api.nvim_set_keymap(mode, lhs, rhs, options) + end end function M.mapSilent(mode, lhs, rhs, opts) - local options = helpers.mergeTables(opts, {silent = true}) - M.map(mode, lhs, rhs, options) + local options = helpers.mergeTables(opts, { silent = true }) + M.map(mode, lhs, rhs, options) end function M.setup() - M.map("n", "qq", ":wq") -- Create vertical split + M.map("n", "qq", ":wq") -- Create vertical split - -- Create chords - if arpeggio ~= nil then - arpeggio.chord("n", "vs", "v") -- Create vertical split - arpeggio.chord("n", "ji", ":w") -- Saving - arpeggio.chord("i", "jk", "") -- Remap Esc to jk - arpeggio.chord("i", "k", "") -- Rebind digraph insertion to leader+k - arpeggio.chord("inv", "a", "") -- Rebind switching to the last pane using leader+a - arpeggio.chord("nv", "cp", "\"+") -- Press cp to use the global clipboard - end + -- Create chords + if arpeggio ~= nil then + arpeggio.chord("n", "vs", "v") -- Create vertical split + arpeggio.chord("n", "ji", ":w") -- Saving + arpeggio.chord("i", "jk", "") -- Remap Esc to jk + arpeggio.chord("i", "k", "") -- Rebind digraph insertion to leader+k + arpeggio.chord("inv", "a", "") -- Rebind switching to the last pane using leader+a + arpeggio.chord("inv", "a", "") -- Rebind switching to the last pane using leader+a + arpeggio.chord("nv", "cp", "\"+") -- Press cp to use the global clipboard + arpeggio.chord("n", "rw", ":%s//") -- Press rt to rename word under cursor + end - return M + return M end return M diff --git a/dotfiles/neovim/lua/my/paq.lua b/dotfiles/neovim/lua/my/paq.lua index ef3a3e4..e5f816e 100644 --- a/dotfiles/neovim/lua/my/paq.lua +++ b/dotfiles/neovim/lua/my/paq.lua @@ -1,52 +1,54 @@ local M = {} function M.setup() - local paq = require("paq") - local themePackages = require("my.theme").deps - local base = { - "neovim/nvim-lspconfig", -- configures lsps for me - "windwp/nvim-autopairs", -- closes pairs for me (should look for a better one) - "nvim-lua/plenary.nvim", -- async utility lib it seems? - "nvim-telescope/telescope.nvim", -- fuzzy search for say opening files - "purescript-contrib/purescript-vim", -- purescript support - "terrortylor/nvim-comment", -- allows toggling line comments - {"nvim-treesitter/nvim-treesitter", run = ":TSUpdate"}, -- use treesitter for syntax highlighting - {"nvim-treesitter/nvim-treesitter-textobjects", run = ":TSUpdate"}, -- the lean plugin wants me to install this, lol - "startup-nvim/startup.nvim", -- splash screen - "kyazdani42/nvim-web-devicons", -- nice looking icons - "nvim-lualine/lualine.nvim", -- customizable status line - "kyazdani42/nvim-tree.lua", -- file tree - "lervag/vimtex", -- latex support - "jose-elias-alvarez/null-ls.nvim", -- generic language server - "nvim-telescope/telescope-file-browser.nvim", -- file creation/deletion menu - "onsails/lspkind.nvim", -- show icons in lsp completion menus - "preservim/vimux", -- interact with tmux from within vim - "christoomey/vim-tmux-navigator", -- easly switch between tmux and vim panes - "kana/vim-arpeggio", -- chord support, let"s fucking goooo - {"andweeb/presence.nvim", run = ":DownloadUnicode"}, -- discord rich presence - "Julian/lean.nvim", -- lean support - "kmonad/kmonad-vim", -- kmonad config support - -- "LucHermitte/lh-vim-lib", -- dependency for lh-brackets - -- "LucHermitte/lh-brackets", -- kinda useless bruh, should find something better - -- Cmp related stuff - "hrsh7th/cmp-nvim-lsp", -- lsp completion - "hrsh7th/cmp-buffer", -- idr what this is - "hrsh7th/cmp-path", -- path completion ig? - "hrsh7th/cmp-cmdline", -- cmdline completion perhaps? - "hrsh7th/nvim-cmp", -- completion engine - "L3MON4D3/LuaSnip", -- snippeting engine - "saadparwaiz1/cmp_luasnip", -- snippet support for cmp - "wakatime/vim-wakatime", -- track time usage - "vmchale/dhall-vim", -- dhall syntax highlighting - "folke/which-key.nvim" - } + local paq = require("paq") + local themePackages = require("my.theme").deps + local base = { + "neovim/nvim-lspconfig", -- configures lsps for me + "windwp/nvim-autopairs", -- closes pairs for me (should look for a better one) + "nvim-lua/plenary.nvim", -- async utility lib it seems? + "nvim-telescope/telescope.nvim", -- fuzzy search for say opening files + "purescript-contrib/purescript-vim", -- purescript support + "terrortylor/nvim-comment", -- allows toggling line comments + -- This gets installed by nix now! + -- {"nvim-treesitter/nvim-treesitter", run = ":TSUpdate"}, -- use treesitter for syntax highlighting + "nvim-treesitter/nvim-treesitter-textobjects", -- the lean plugin wants me to install this, lol + -- "startup-nvim/startup.nvim", -- splash screen + "glepnir/dashboard-nvim", -- similar to startup.nvim + "kyazdani42/nvim-web-devicons", -- nice looking icons + "nvim-lualine/lualine.nvim", -- customizable status line + "kyazdani42/nvim-tree.lua", -- file tree + "lervag/vimtex", -- latex support + "jose-elias-alvarez/null-ls.nvim", -- generic language server + "nvim-telescope/telescope-file-browser.nvim", -- file creation/deletion menu + "onsails/lspkind.nvim", -- show icons in lsp completion menus + "preservim/vimux", -- interact with tmux from within vim + "christoomey/vim-tmux-navigator", -- easly switch between tmux and vim panes + "kana/vim-arpeggio", -- chord support, let"s fucking goooo + { "andweeb/presence.nvim", run = ":DownloadUnicode" }, -- discord rich presence + "Julian/lean.nvim", -- lean support + "kmonad/kmonad-vim", -- kmonad config support + -- "LucHermitte/lh-vim-lib", -- dependency for lh-brackets + -- "LucHermitte/lh-brackets", -- kinda useless bruh, should find something better + -- Cmp related stuff + "hrsh7th/cmp-nvim-lsp", -- lsp completion + "hrsh7th/cmp-buffer", -- idr what this is + "hrsh7th/cmp-path", -- path completion ig? + "hrsh7th/cmp-cmdline", -- cmdline completion perhaps? + "hrsh7th/nvim-cmp", -- completion engine + "L3MON4D3/LuaSnip", -- snippeting engine + "saadparwaiz1/cmp_luasnip", -- snippet support for cmp + "wakatime/vim-wakatime", -- track time usage + "vmchale/dhall-vim", -- dhall syntax highlighting + "folke/which-key.nvim" + } - for _, v in ipairs(themePackages) do - -- append package in the base list - table.insert(base, v) - end + for _, v in ipairs(themePackages) do + -- append package in the base list + table.insert(base, v) + end - paq(base) + paq(base) end return M diff --git a/dotfiles/neovim/lua/my/plugins/comment.lua b/dotfiles/neovim/lua/my/plugins/comment.lua index 354eb7c..229d835 100644 --- a/dotfiles/neovim/lua/my/plugins/comment.lua +++ b/dotfiles/neovim/lua/my/plugins/comment.lua @@ -1,26 +1,26 @@ local A = require("my.helpers.augroup") local M = {} -local extraCommentStrings = {nix = "# %s", lean = "/- %s -/", bkf = "-- %s"} +local extraCommentStrings = { lean = "/- %s -/", bkf = "-- %s" } -- Update comments for certain languages -local function setCommentString(extension, commentString) - A.augroup('set-commentstring-' .. extension, function() - local action = - ':lua vim.api.nvim_buf_set_option(0, "commentstring", "' .. - commentString .. '")' +function M.setCommentString(extension, commentString) + A.augroup('set-commentstring-' .. extension, function() + local action = + ':lua vim.api.nvim_buf_set_option(0, "commentstring", "' .. + commentString .. '")' - A.autocmd('BufEnter', '*.' .. extension, action) - A.autocmd('BufFilePost', '*.' .. extension, action) - end) + A.autocmd('BufEnter', '*.' .. extension, action) + A.autocmd('BufFilePost', '*.' .. extension, action) + end) end function M.setup() - require('nvim_comment').setup() + require('nvim_comment').setup() - for lang, commentString in pairs(extraCommentStrings) do - setCommentString(lang, commentString) - end + for lang, commentString in pairs(extraCommentStrings) do + M.setCommentString(lang, commentString) + end end return M diff --git a/dotfiles/neovim/lua/my/plugins/dashboard.lua b/dotfiles/neovim/lua/my/plugins/dashboard.lua new file mode 100644 index 0000000..c8600a7 --- /dev/null +++ b/dotfiles/neovim/lua/my/plugins/dashboard.lua @@ -0,0 +1,32 @@ +local M = {} + +function M.setup() + local db = require("dashboard") + -- db.custom_header = { + -- "", "", + -- [[ /\ \ /\ \ /\ \ /\ \ /\ \ ]], + -- [[ /::\____\ /::\ \ /::\ \ /::\ \ /::\ \ ]], + -- [[ /:::/ / /::::\ \ \:::\ \ /::::\ \ /::::\ \ ]], + -- [[ /:::/ _/___ /::::::\ \ \:::\ \ /::::::\ \ /::::::\ \ ]], + -- [[ /:::/ /\ \ /:::/\:::\ \ \:::\ \ /:::/\:::\ \ /:::/\:::\ \ ]], + -- [[ /:::/ /::\____\ /:::/__\:::\ \ \:::\ \ /:::/__\:::\ \ /:::/__\:::\ \ ]], + -- [[ /:::/ /:::/ / /::::\ \:::\ \ /::::\ \ /::::\ \:::\ \ /::::\ \:::\ \ ]], + -- [[ /:::/ /:::/ _/___ /::::::\ \:::\ \ /::::::\ \ /::::::\ \:::\ \ /::::::\ \:::\ \ ]], + -- [[ /:::/___/:::/ /\ \ /:::/\:::\ \:::\ \ /:::/\:::\ \ /:::/\:::\ \:::\ \ /:::/\:::\ \:::\____\ ]], + -- [[|:::| /:::/ /::\____\/:::/ \:::\ \:::\____\ /:::/ \:::\____\/:::/__\:::\ \:::\____\/:::/ \:::\ \:::| |]], + -- [[|:::|__/:::/ /:::/ /\::/ \:::\ /:::/ / /:::/ \::/ /\:::\ \:::\ \::/ /\::/ |::::\ /:::|____|]], + -- [[ \:::\/:::/ /:::/ / \/____/ \:::\/:::/ / /:::/ / \/____/ \:::\ \:::\ \/____/ \/____|:::::\/:::/ / ]], + -- [[ \::::::/ /:::/ / \::::::/ / /:::/ / \:::\ \:::\ \ |:::::::::/ / ]], + -- [[ \::::/___/:::/ / \::::/ / /:::/ / \:::\ \:::\____\ |::|\::::/ / ]], + -- [[ \:::\__/:::/ / /:::/ / \::/ / \:::\ \::/ / |::| \::/____/ ]], + -- [[ \::::::::/ / /:::/ / \/____/ \:::\ \/____/ |::| ~| ]], + -- [[ \::::::/ / /:::/ / \:::\ \ |::| | ]], + -- [[ \::::/ / /:::/ / \:::\____\ \::| | ]], + -- [[ \::/____/ \::/ / \::/ / \:| | ]], + -- [[ ~~ \/____/ \/____/ \|___| ]], + -- "" + -- } + +end + +return M diff --git a/dotfiles/neovim/lua/my/plugins/init.lua b/dotfiles/neovim/lua/my/plugins/init.lua index 9e3f3d8..16aaea4 100644 --- a/dotfiles/neovim/lua/my/plugins/init.lua +++ b/dotfiles/neovim/lua/my/plugins/init.lua @@ -1,29 +1,30 @@ local M = {} function M.setup() - -- Other unconfigured plugins - require('nvim-autopairs').setup() - require("startup").setup() - require("presence"):setup({}) -- wtf does the : do here? - -- require("which-key").setup() + -- Other unconfigured plugins + require('nvim-autopairs').setup() + -- require("startup").setup() + require("presence"):setup({}) -- wtf does the : do here? + -- require("which-key").setup() - -- Plugins with their own configs: - require("my.plugins.vim-tmux-navigator").setup() - -- require("my.plugins.fzf-lua").setup() - -- require("my.plugins.nerdtree").setup() - require("my.plugins.treesitter").setup() - require("my.plugins.cmp").setup() - require("my.plugins.lspconfig").setup() - require("my.plugins.null-ls").setup() - require("my.plugins.lualine").setup() - require("my.plugins.comment").setup() - require("my.plugins.nvim-tree").setup() - require("my.plugins.vimtex").setup() - require("my.plugins.telescope").setup() - require("my.plugins.vimux").setup() - -- require("my.plugins.idris").setup() - -- require("my.plugins.lh-brackets").setup() - require("my.plugins.lean").setup() + -- Plugins with their own configs: + require("my.plugins.vim-tmux-navigator").setup() + -- require("my.plugins.fzf-lua").setup() + -- require("my.plugins.nerdtree").setup() + require("my.plugins.treesitter").setup() + require("my.plugins.dashboard").setup() + require("my.plugins.cmp").setup() + require("my.plugins.lspconfig").setup() + require("my.plugins.null-ls").setup() + require("my.plugins.lualine").setup() + require("my.plugins.comment").setup() + require("my.plugins.nvim-tree").setup() + require("my.plugins.vimtex").setup() + require("my.plugins.telescope").setup() + require("my.plugins.vimux").setup() + -- require("my.plugins.idris").setup() + -- require("my.plugins.lh-brackets").setup() + require("my.plugins.lean").setup() end return M diff --git a/dotfiles/neovim/lua/my/plugins/lspconfig.lua b/dotfiles/neovim/lua/my/plugins/lspconfig.lua index a8eeaab..2cfce09 100644 --- a/dotfiles/neovim/lua/my/plugins/lspconfig.lua +++ b/dotfiles/neovim/lua/my/plugins/lspconfig.lua @@ -1,143 +1,133 @@ -local A = require("my.plugins.arpeggio") - local M = {} local function map(buf, mode, lhs, rhs, opts) - local options = {noremap = true, silent = true} - if opts then options = vim.tbl_extend('force', options, opts) end - vim.api.nvim_buf_set_keymap(buf, mode, lhs, rhs, options) + local options = { noremap = true, silent = true } + if opts then options = vim.tbl_extend('force', options, opts) end + vim.api.nvim_buf_set_keymap(buf, mode, lhs, rhs, options) end function M.on_attach(client, bufnr) - -- Enable completion triggered by - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') + -- Enable completion triggered by + vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - if client.server_capabilities.documentFormattingProvider then - print("Initializing formatter...") - vim.cmd([[ + if client.server_capabilities.documentFormattingProvider then + print("Initializing formatter...") + vim.cmd([[ augroup LspFormatting autocmd! * autocmd BufWritePre lua vim.lsp.buf.formatting_sync() augroup END ]]) - end + end - print("Setting up keybinds...") - -- Go to declaration / definition / implementation - map(bufnr, "n", 'gD', 'lua vim.lsp.buf.declaration()') - map(bufnr, "n", 'gd', 'lua vim.lsp.buf.definition()') - map(bufnr, 'n', 'gi', 'lua vim.lsp.buf.implementation()') + print("Setting up keybinds...") + -- Go to declaration / definition / implementation + map(bufnr, "n", 'gD', 'lua vim.lsp.buf.declaration()') + map(bufnr, "n", 'gd', 'lua vim.lsp.buf.definition()') + map(bufnr, 'n', 'gi', 'lua vim.lsp.buf.implementation()') - -- Hover - map(bufnr, 'n', 'J', "lua vim.diagnostic.open_float()") - map(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()') - map(bufnr, 'n', 'L', 'lua vim.lsp.buf.signature_help()') + -- Hover + map(bufnr, 'n', 'J', "lua vim.diagnostic.open_float()") + map(bufnr, 'n', 'K', 'lua vim.lsp.buf.hover()') + map(bufnr, 'n', 'L', 'lua vim.lsp.buf.signature_help()') - -- Workspace stuff - -- map(bufnr, 'n', 'wa', - -- 'lua vim.lsp.buf.add_workspace_folder()') - -- map(bufnr, 'n', 'wr', - -- 'lua vim.lsp.buf.remove_workspace_folder()') - -- map(bufnr, 'n', 'wl', - -- 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))') + -- Workspace stuff + -- map(bufnr, 'n', 'wa', + -- 'lua vim.lsp.buf.add_workspace_folder()') + -- map(bufnr, 'n', 'wr', + -- 'lua vim.lsp.buf.remove_workspace_folder()') + -- map(bufnr, 'n', 'wl', + -- 'lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))') - -- Code actions - map(bufnr, 'n', 'D', 'lua vim.lsp.buf.type_definition()') - map(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()') - map(bufnr, 'n', 'ca', 'lua vim.lsp.buf.code_action()') - map(bufnr, 'n', 'gr', 'lua vim.lsp.buf.references()') - map(bufnr, 'n', 'f', - 'lua vim.lsp.buf.format({async = true})') + -- Code actions + map(bufnr, 'n', 'D', 'lua vim.lsp.buf.type_definition()') + map(bufnr, 'n', 'rn', 'lua vim.lsp.buf.rename()') + map(bufnr, 'n', 'ca', 'lua vim.lsp.buf.code_action()') + map(bufnr, 'n', 'gr', 'lua vim.lsp.buf.references()') + map(bufnr, 'n', 'f', + 'lua vim.lsp.buf.format({async = true})') - print("Initialized language server!") + print("Initialized language server!") end local function on_attach_typescript(client, bufnr) - -- We handle formatting using null-ls and prettierd - client.server_capabilities.documentFormattingProvider = false + -- We handle formatting using null-ls and prettierd + client.server_capabilities.documentFormattingProvider = false - M.on_attach(client, bufnr) -end - -local function on_attach_nix(c, b) - A.chordSilent("n", "ug", - ":lua require('my.helpers.update-nix-fetchgit').update()", - {settings = "b"}) - - M.on_attach(c, b) + M.on_attach(client, bufnr) end -- General server config local servers = { - tsserver = {on_attach = on_attach_typescript}, - dhall_lsp_server = {}, - sumneko_lua = { - settings = { - Lua = { - runtime = { - -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) - version = 'LuaJIT', - -- Setup your lua path - path = runtime_path - }, - diagnostics = { - -- Get the language server to recognize the `vim` global - globals = {'vim'} - }, - workspace = { - -- Make the server aware of Neovim runtime files - library = vim.api.nvim_get_runtime_file("", true) - }, - -- Do not send telemetry data containing a randomized but unique identifier - telemetry = {enable = false} - } + tsserver = { on_attach = on_attach_typescript }, + dhall_lsp_server = {}, + sumneko_lua = { + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + -- Setup your lua path + path = runtime_path }, - cmd = {"lua-language-server"} + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = { 'vim' } + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = vim.api.nvim_get_runtime_file("", true) + }, + -- Do not send telemetry data containing a randomized but unique identifier + telemetry = { enable = false } + } }, - purescriptls = { - settings = { - purescript = { - censorWarnings = { - "UnusedName", "ShadowedName", "UserDefinedWarning" - }, - formatter = "purs-tidy" - } - } - }, - rnix = {on_attach = on_attach_nix}, - hls = { - haskell = { - -- set formatter - formattingProvider = "ormolu" - } - }, - cssls = {} - -- agda = {}, Haven't gotten this one to work yet + cmd = { "lua-language-server" } + }, + purescriptls = { + settings = { + purescript = { + censorWarnings = { + "UnusedName", "ShadowedName", "UserDefinedWarning" + }, + formatter = "purs-tidy" + } + } + }, + hls = { + haskell = { + -- set formatter + formattingProvider = "ormolu" + } + }, + rnix = {}, + cssls = {} + -- agda = {}, Haven't gotten this one to work yet } function M.setup() - local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp - .protocol - .make_client_capabilities()) + local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp + .protocol + .make_client_capabilities()) - -- Setup basic language servers - for lsp, details in pairs(servers) do - if details.on_attach == nil then - -- Default setting for on_attach - details.on_attach = M.on_attach - end - - require('lspconfig')[lsp].setup { - on_attach = details.on_attach, - settings = details.settings, -- Specific per-language settings - flags = { - debounce_text_changes = 150 -- This will be the default in neovim 0.7+ - }, - cmd = details.cmd, - capabilities = capabilities - } + -- Setup basic language servers + for lsp, details in pairs(servers) do + if details.on_attach == nil then + -- Default setting for on_attach + details.on_attach = M.on_attach end + + require('lspconfig')[lsp].setup { + on_attach = details.on_attach, + settings = details.settings, -- Specific per-language settings + flags = { + debounce_text_changes = 150 -- This will be the default in neovim 0.7+ + }, + cmd = details.cmd, + capabilities = capabilities + } + end end return M diff --git a/dotfiles/neovim/lua/my/plugins/null-ls.lua b/dotfiles/neovim/lua/my/plugins/null-ls.lua index d741f4b..5d9a100 100644 --- a/dotfiles/neovim/lua/my/plugins/null-ls.lua +++ b/dotfiles/neovim/lua/my/plugins/null-ls.lua @@ -7,7 +7,7 @@ function M.setup() local sources = { null_ls.builtins.formatting.prettierd.with({extra_filetypes = {}}), -- format ts files - null_ls.builtins.formatting.lua_format -- format lua code + -- null_ls.builtins.formatting.lua_format -- format lua code } null_ls.setup({sources = sources, on_attach = lspconfig.on_attach}) diff --git a/dotfiles/neovim/lua/my/plugins/treesitter.lua b/dotfiles/neovim/lua/my/plugins/treesitter.lua index 17c34ad..348a7c1 100644 --- a/dotfiles/neovim/lua/my/plugins/treesitter.lua +++ b/dotfiles/neovim/lua/my/plugins/treesitter.lua @@ -1,24 +1,24 @@ local M = {} function M.setup() - require'nvim-treesitter.configs'.setup { - ensure_installed = { - "bash", "javascript", "typescript", "c", "cpp", "css", "dockerfile", - "elixir", "fish", "html", "json", "latex", "python", "rust", "scss", - "toml", "tsx", "vim", "yaml", "nix" - }, - sync_install = false, - indent = {enable = true}, - highlight = { - enable = false, + require 'nvim-treesitter.configs'.setup { + ensure_installed = { + "bash", "javascript", "typescript", "c", "cpp", "css", "dockerfile", + "elixir", "fish", "html", "json", "latex", "python", "rust", "scss", + "toml", "tsx", "vim", "yaml", "nix" + }, + sync_install = false, + indent = { enable = true }, + highlight = { + enable = true, - -- Setting this to true will run `:h syntax` and tree-sitter at the same time. - -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). - -- Using this option may slow down your editor, and you may see some duplicate highlights. - -- Instead of true it can also be a list of languages - additional_vim_regex_highlighting = false - } + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + additional_vim_regex_highlighting = false } + } end return M diff --git a/flake.lock b/flake.lock index b273019..17554d9 100644 --- a/flake.lock +++ b/flake.lock @@ -275,11 +275,11 @@ ] }, "locked": { - "lastModified": 1654113405, - "narHash": "sha256-VpK+0QaWG2JRgB00lw77N9TjkE3ec0iMYIX1TzGpxa4=", + "lastModified": 1656169755, + "narHash": "sha256-Nlnm4jeQWEGjYrE6hxi/7HYHjBSZ/E0RtjCYifnNsWk=", "owner": "nix-community", "repo": "home-manager", - "rev": "ac2287df5a2d6f0a44bbcbd11701dbbf6ec43675", + "rev": "4a3d01fb53f52ac83194081272795aa4612c2381", "type": "github" }, "original": { @@ -555,11 +555,11 @@ }, "nixos-unstable": { "locked": { - "lastModified": 1653407748, - "narHash": "sha256-g9puJaILRTb9ttlLQ7IehpV7Wcy0n+vs8LOFu6ylQcM=", + "lastModified": 1658161305, + "narHash": "sha256-X/nhnMCa1Wx4YapsspyAs6QYz6T/85FofrI6NpdPDHg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "5ce6597eca7d7b518c03ecda57d45f9404b5e060", + "rev": "e4d49de45a3b5dbcb881656b4e3986e666141ea9", "type": "github" }, "original": { @@ -571,11 +571,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1654605205, - "narHash": "sha256-aRTGBWpAr6DlLMoUyIvctWRcL59vpW98CdWUl+BhnXg=", + "lastModified": 1658237535, + "narHash": "sha256-z3Ff9oSXEPSZMfXdM+r29oJxtyKUnlUOc18U9E6Q48g=", "owner": "nixos", "repo": "nixpkgs", - "rev": "daa78e40e9592dbbcfd53937cbd9aae9e69a2999", + "rev": "e732e1fdbf79bec59f7ade4a3675b091b4a9f6d6", "type": "github" }, "original": { @@ -587,11 +587,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1653326962, - "narHash": "sha256-W8feCYqKTsMre4nAEpv5Kx1PVFC+hao/LwqtB2Wci/8=", + "lastModified": 1658150454, + "narHash": "sha256-dhyOQvRT8oYWN0SwsNyujohBsJqwF5W7fnhEcfgBk7E=", "owner": "nixos", "repo": "nixpkgs", - "rev": "41cc1d5d9584103be4108c1815c350e07c807036", + "rev": "3110964916469ad6ed9fea72a0a3119a0959a14e", "type": "github" }, "original": { diff --git a/modules/applications/default.nix b/modules/applications/default.nix index 91309bb..7062f0a 100644 --- a/modules/applications/default.nix +++ b/modules/applications/default.nix @@ -20,7 +20,7 @@ ./tmux.nix ./kmonad.nix ./direnv.nix - ./chromium.nix + # ./chromium.nix ./vieb.nix ]; } diff --git a/modules/applications/misc.nix b/modules/applications/misc.nix index 2651ac5..1fdff17 100644 --- a/modules/applications/misc.nix +++ b/modules/applications/misc.nix @@ -40,10 +40,11 @@ vimclip # use neovim anywhere # chat apps - discord - # deluge + unstable.discord slack + signal-desktop tdesktop # telegram for the desktop + # deluge # zoom-us # teams diff --git a/modules/applications/neovim.nix b/modules/applications/neovim.nix index 0adf766..a08472e 100644 --- a/modules/applications/neovim.nix +++ b/modules/applications/neovim.nix @@ -17,12 +17,13 @@ let sumneko-lua-language-server # lua rnix-lsp # nix haskell-language-server # haskell - vscode-langservers-extracted # css and shit + # vscode-langservers-extracted # css and shit # Formatters luaformatter # lua ormolu # haskell - prettierd # prettier but faster + easy-purescript-nix.purs-tidy + # prettierd # prettier but faster # Others wakatime # time tracking @@ -31,6 +32,7 @@ let nodePackages.typescript # typescript language update-nix-fetchgit # useful for nix stuff tree-sitter # syntax highlighting + libstdcxx5 # required by treesitter aparently texlive.combined.scheme-full # latex stuff python38Packages.pygments # required for latex syntax highlighting @@ -54,20 +56,20 @@ let --prefix PATH : ${lib.makeBinPath extraPackages} ''; }; + nvim-treesitter = pkgs.vimPlugins.nvim-treesitter.withPlugins (plugins: pkgs.tree-sitter.allGrammars); in { home-manager.users.adrielus = { home.file.".local/share/nvim/site/pack/paqs/start/paq-nvim".source = paq; + home.file.".local/share/nvim/site/pack/treesitter/start/nvim-treesitter".source = nvim-treesitter; xdg.configFile."nvim/init.lua".text = myConfig; xdg.configFile."nvim/lua/my/theme.lua".source = theme.neovim.theme; + programs.neovim.enable = false; + home.packages = [ neovim ]; - - programs.neovim = { - enable = false; - }; }; } diff --git a/modules/applications/shells/sessionVariables.nix b/modules/applications/shells/sessionVariables.nix index baad0d7..ac171ef 100644 --- a/modules/applications/shells/sessionVariables.nix +++ b/modules/applications/shells/sessionVariables.nix @@ -14,5 +14,5 @@ in home-manager.users.adrielus.home.sessionVariables = theme.env or { }; }]; - home-manager.users.adrielus = { home.sessionVariables = variables; }; + home-manager.users.adrielus.home.sessionVariables = variables; } diff --git a/modules/themes/catppuccin/default.nix b/modules/themes/catppuccin/default.nix index 33bb86c..8260a05 100644 --- a/modules/themes/catppuccin/default.nix +++ b/modules/themes/catppuccin/default.nix @@ -22,7 +22,7 @@ in sddm.path = "${foreign.sddm}"; grub.path = pkgs.nixos-grub2-theme; - xresources = builtins.readFile "${foreign.xresources}/Xresources"; + xresources = builtins.readFile "${foreign.xresources}/${variant}.Xresources"; rofi = { theme = builtins.readFile "${foreign.rofi}/.local/share/rofi/themes/catppuccin.rasi"; @@ -55,15 +55,17 @@ in alacritty.settings = { import = [ "${foreign.alacritty}/catppuccin.yml" ]; + # colors = variant; window = { padding = { x = 4; y = 4; }; + opacity = transparency; + gtk_theme_variant = v "light" "dark"; }; - background_opacity = transparency; }; } diff --git a/modules/themes/catppuccin/foreign.nix b/modules/themes/catppuccin/foreign.nix index 887a135..20c2e29 100644 --- a/modules/themes/catppuccin/foreign.nix +++ b/modules/themes/catppuccin/foreign.nix @@ -2,49 +2,49 @@ tmux = fetchFromGitHub { owner = "catppuccin"; repo = "tmux"; - sha256 = "0frqk3g85licwl06qnck1bpxm9c7h9mj5law5vq28i2kv24qvv9n"; - rev = "87c33d683cf2b40e1340a10fa9049af2d28f5606"; + sha256 = "1vz6srk4zfgsjpwb7xa7n9mg5kfb3x7aq963mwqnl8m4zvmcy8vz"; + rev = "1c87a9e1d2fac21815497ed7f599a1c1208d40cd"; }; sddm = fetchFromGitHub { owner = "catppuccin"; repo = "sddm"; - sha256 = "19r04g28w17cg4c520qnz4gdf133vz8wlgjv6538wymh13pazh84"; - rev = "da92da8ba221c85a3d0722cd35efece616c487cf"; + sha256 = "065g331issjw8jh0hjqfhc98sqhb4i77mwx7y9v5wdy32pmym9i1"; + rev = "cfe861c1ea9c92e4b4cd5acb3627021e1d2f5e6c"; }; grub = fetchFromGitHub { owner = "catppuccin"; repo = "grub"; - sha256 = "06ji9w3n36c5kdkqavpnx1bb9xz4l83i1fx059a4gwkvni5lapkp"; - rev = "3f62cd4174465631b40269a7c5631e5ee86dec45"; + sha256 = "0ra1psb37wsgdag5swfwwzcgy73014j34c9njnvxz1jdv0k56qlc"; + rev = "b2919a93ef37ea1b220bab90fa0a5fa3a26eec0b"; }; gtk = fetchFromGitHub { owner = "catppuccin"; repo = "gtk"; - sha256 = "16dnfaj2w34m9i0b1jcg8wpaz5zdscl56gl3hqs4b7nkap1lan01"; - rev = "359c584f607c021fcc657ce77b81c181ebaff6de"; + sha256 = "1l8xr651mh4lf26s5d7jfk7vv1jxh9qld0w5hgcnqsa13lncsd5h"; + rev = "7bfea1f0d569010998302c8242bb857ed8a83058"; }; rofi = fetchFromGitHub { owner = "catppuccin"; repo = "rofi"; - sha256 = "063qwhy9hpy7i7wykliccpy9sdxhj77v6ry3ys69dwcchmspyn3j"; - rev = "b5ebfaf11bb90f1104b3d256e4671c6abb66d060"; + sha256 = "076xkxxmwhffns35n3cnbn6lz9i4w6hvma1g4mdw0zmayvy5rmpj"; + rev = "2e14344b789d70d42853ffe2abe79b3b85b16e24"; }; alacritty = fetchFromGitHub { owner = "catppuccin"; repo = "alacritty"; - sha256 = "0x90ac9v9j93i8l92nn1lhzwn6kzcg55v5xv7mg6g8rcrxlsm0xk"; - rev = "8f6b261375302657136c75569bdbd6dc3e2c67c4"; + sha256 = "0ka3a79i4iv2ahkc3hy41b4s220z8ydkrma52fvcqmphw1y3h7ml"; + rev = "c2d27714b43984e47347c6d81216b7670a3fe07f"; }; wallpapers = fetchFromGitHub { owner = "catppuccin"; repo = "wallpapers"; - sha256 = "055080z71zf752psmgywhkm51jhba5a1b23nnb9wqhksxd5saa0n"; - rev = "61d997b8f4c33f6890b0d138bfed6329f3aff794"; + sha256 = "0p1xfr6hv4w0zw04jpbylwiy3n2w9zpxfq041ql8j3jh4inn0w1g"; + rev = "72f67e1e198cf07bdfd30f70c074a946e5dc64b4"; }; xresources = fetchFromGitHub { owner = "catppuccin"; repo = "xresources"; - sha256 = "0jj30xhpdgpl2ii67rv181c8pdgy88jzqnc584z4zpq4am3z4yip"; - rev = "8caaef8e506f1a1da185ee46685dd791f0efffd1"; + sha256 = "1ffx73l6s0pkf4d4g5lp2d0cfxjrbczsr5fy45i0503sa279fan7"; + rev = "a9cd582faeef2f7410eb7d4b5a83d026e3f2b865"; }; } diff --git a/modules/themes/catppuccin/nvim.lua b/modules/themes/catppuccin/nvim.lua index 1fb3692..0347af2 100644 --- a/modules/themes/catppuccin/nvim.lua +++ b/modules/themes/catppuccin/nvim.lua @@ -1,17 +1,18 @@ local M = {} -M.deps = {{"catppuccin/nvim", as = "catppuccin"}} +M.deps = { { "catppuccin/nvim", as = "catppuccin" } } function M.setup() - local catppuccin = require("catppuccin") + local catppuccin = require("catppuccin") - catppuccin.setup({ - transparent_background = false, - integrations = {nvimtree = {transparent_panel = false}} - }) + catppuccin.setup({ + compile = { enable = true }, + transparent_background = false, + integrations = { nvimtree = { transparent_panel = false } } + }) - vim.g.catppuccin_flavour = os.getenv("CATPPUCCIN_FLAVOUR") - vim.cmd [[colorscheme catppuccin]] + vim.g.catppuccin_flavour = os.getenv("CATPPUCCIN_FLAVOUR") + vim.cmd [[colorscheme catppuccin]] end return M diff --git a/modules/themes/themes.nix b/modules/themes/themes.nix index 1c073b2..db65ed4 100644 --- a/modules/themes/themes.nix +++ b/modules/themes/themes.nix @@ -7,13 +7,13 @@ lib.lists.map (theme: pkgs.callPackage theme { }) [ (catppuccin { # wallpaper = "os/nix-magenta-pink-1920x1080.png"; # wallpaper = "minimalistic/tetris.png"; - # wallpaper = "os/nix-black-4k.png"; + wallpaper = "os/nix-black-4k.png"; # wallpaper = "landscapes/forrest.png"; # wallpaper = "landscapes/salty_mountains.png"; - wallpaper = "misc/rainbow.png"; + # wallpaper = "misc/rainbow.png"; # wallpaper.foreign = ./wallpapers/eye.png; transparency = 0.93; - variant = "latte"; + variant = "frappe"; }) (githubVariant { variant = "light";