diff --git a/common/fonts.nix b/common/fonts.nix index 0154354..ced7ab8 100644 --- a/common/fonts.nix +++ b/common/fonts.nix @@ -1,24 +1,9 @@ { pkgs, ... }: { stylix.fonts = { - monospace = { - name = "Iosevka"; - package = pkgs.iosevka; - }; - - # monospace = { - # name = "Cascadia Code"; - # package = pkgs.cascadia-code; - # }; - - sansSerif = { - name = "CMUSansSerif"; - package = pkgs.cm_unicode; - }; - - serif = { - name = "CMUSerif-Roman"; - package = pkgs.cm_unicode; - }; + # monospace = { name = "Iosevka"; package = pkgs.iosevka; }; + monospace = { name = "Cascadia Code"; package = pkgs.cascadia-code; }; + sansSerif = { name = "CMUSansSerif"; package = pkgs.cm_unicode; }; + serif = { name = "CMUSerif-Roman"; package = pkgs.cm_unicode; }; sizes = { desktop = 13; diff --git a/flake.lock b/flake.lock index 1039aca..d3652e6 100644 --- a/flake.lock +++ b/flake.lock @@ -2045,11 +2045,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1701718080, - "narHash": "sha256-6ovz0pG76dE0P170pmmZex1wWcQoeiomUZGggfH9XPs=", + "lastModified": 1708475490, + "narHash": "sha256-g1v0TsWBQPX97ziznfJdWhgMyMGtoBFs102xSYO4syU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "2c7f3c0fb7c08a0814627611d9d7d45ab6d75335", + "rev": "0e74ca98a74bc7270d28838369593635a5db3260", "type": "github" }, "original": { diff --git a/home/features/neovim/config/ftplugin/purescript.lua b/home/features/neovim/config/ftplugin/purescript.lua index 407fadc..6188a5d 100644 --- a/home/features/neovim/config/ftplugin/purescript.lua +++ b/home/features/neovim/config/ftplugin/purescript.lua @@ -1,19 +1 @@ --- Use vt to test -vim.keymap.set( - "n", - "vt", - ':VimuxRunCommand "clear && spago test"', - { desc = "[V]imtex run [t]ests", buffer = true } -) - --- Use vb to build -vim.keymap.set( - "n", - "vb", - ':VimuxRunCommand "clear && spago build"', - { desc = "[V]imtex [b]uild", buffer = true } -) - -vim.opt.expandtab = true -- Use spaces for the tab char - require("my.abbreviations.fp").setup() diff --git a/home/features/neovim/config/lazy-lock.json b/home/features/neovim/config/lazy-lock.json index 0effc48..98764e2 100644 --- a/home/features/neovim/config/lazy-lock.json +++ b/home/features/neovim/config/lazy-lock.json @@ -1,74 +1,69 @@ { - "LuaSnip": { "branch": "master", "commit": "118263867197a111717b5f13d954cd1ab8124387" }, - "alpha-nvim": { "branch": "main", "commit": "29074eeb869a6cbac9ce1fbbd04f5f5940311b32" }, - "catppuccin": { "branch": "main", "commit": "079500a625f3ae5aa6efb758f1a17fe4c7a57e52" }, + "alpha-nvim": { "branch": "main", "commit": "1356b9ef31b985d541d94314f2cf73c61124bf1d" }, + "catppuccin": { "branch": "main", "commit": "9703f227bfab20d04bcee62d2f08f1795723b4ae" }, "clipboard-image": { "branch": "main", "commit": "485de5493d196154db30f85665f8ac480ce116a2" }, - "cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" }, + "cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" }, "cmp-digraphs": { "branch": "master", "commit": "5efc1f0078d7c5f3ea1c8e3aad04da3fd6e081a9" }, "cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, - "conform": { "branch": "master", "commit": "48bc9996ebfe90e7766f46338360f75fd6ecb174" }, - "crates": { "branch": "main", "commit": "b8ea20fda2e1029fbbb1bae7a9eab35c84037ca0" }, + "conform": { "branch": "master", "commit": "192a6d2ddace343f1840a8f72efe2315bd392243" }, + "crates": { "branch": "main", "commit": "ec2b04a380c9f3a8e6ca38c230e4990d71978143" }, "discord-rich-presence": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, - "dressing": { "branch": "master", "commit": "94b0d24483d56f3777ee0c8dc51675f21709318c" }, - "dressing.nvim": { "branch": "master", "commit": "94b0d24483d56f3777ee0c8dc51675f21709318c" }, - "edit-code-block": { "branch": "main", "commit": "5e4e31012eafa113216cb5894f696682833f8e7f" }, + "dressing": { "branch": "master", "commit": "6f212262061a2120e42da0d1e87326e8a41c0478" }, "fidget": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" }, "flash": { "branch": "main", "commit": "48817af25f51c0590653bbc290866e4890fe1cbe" }, - "ftft": { "branch": "master", "commit": "09a72f9adf8ee7c824c517ef8408c9e687453039" }, + "ftft": { "branch": "master", "commit": "f3e43c9584e14b27f04c27a95a9d9f0e58dfec02" }, "github-actions": { "branch": "master", "commit": "f2f16243447cea174daa6b4a9ffd3ff9213814ef" }, "gitlinker": { "branch": "master", "commit": "cc59f732f3d043b626c8702cb725c82e54d35c25" }, - "gitsigns": { "branch": "main", "commit": "d195f0c35ced5174d3ecce1c4c8ebb3b5bc23fa9" }, - "harpoon": { "branch": "master", "commit": "867e212ac153e793f95b316d1731f3ca1894625e" }, + "gitsigns": { "branch": "main", "commit": "2c2463dbd82eddd7dbab881c3a62cfbfbe3c67ae" }, + "harpoon": { "branch": "master", "commit": "ccae1b9bec717ae284906b0bf83d720e59d12b91" }, "haskell-tools": { "branch": "master", "commit": "92e097c6832405fb64e4c44a7ce8bebe7836cae6" }, "hydra.nvim": { "branch": "master", "commit": "3ced42c0b6a6c85583ff0f221635a7f4c1ab0dd0" }, - "hyprland": { "branch": "main", "commit": "be665459a21730a6acdfaa9c6352cda5e4763af6" }, + "hyprland": { "branch": "main", "commit": "71760fe0cad972070657b0528f48456f7e0027b2" }, "idris": { "branch": "main", "commit": "8bff02984a33264437e70fd9fff4359679d910da" }, "inc-rename": { "branch": "main", "commit": "6f9b5f9cb237e12935144cdc535322b8c93c1b25" }, - "indent-blankline": { "branch": "master", "commit": "7206c77cb931f79885fc47f88ae18f99148392eb" }, + "indent-blankline": { "branch": "master", "commit": "821a7acd88587d966f7e464b0b3031dfe7f5680c" }, "lastplace": { "branch": "main", "commit": "0bb6103c506315044872e0f84b1f736c4172bb20" }, - "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" }, - "lean": { "branch": "main", "commit": "a5daac8ebccb93af25ace2a2041b503f18ff3dcb" }, + "lazy.nvim": { "branch": "main", "commit": "aedcd79811d491b60d0a6577a9c1701063c2a609" }, + "lean": { "branch": "main", "commit": "1a2a2dfbc7e6775e9ec8b84e5eadaf31fde1894e" }, "live-command": { "branch": "main", "commit": "d460067d47948725a6f25b20f31ea8bbfdfe4622" }, - "lspkind.nvim": { "branch": "master", "commit": "57610d5ab560c073c465d6faf0c19f200cb67e6e" }, - "luasnip": { "branch": "master", "commit": "118263867197a111717b5f13d954cd1ab8124387" }, - "mini.base16": { "branch": "main", "commit": "867265505d5147af45d38ca120bbfddaa43e61aa" }, - "mini.colors": { "branch": "main", "commit": "a6b594b7cc07a55fd9e9698be2ff5d2194fd4ac6" }, - "mini.comment": { "branch": "main", "commit": "3d9c8009615857e982f09bc5357fc95f2a2175f3" }, - "mini.files": { "branch": "main", "commit": "173d73f5d0b2a9abbb2d6533a3770fdbbd0c4dcc" }, - "mini.operators": { "branch": "main", "commit": "7a97e2528a4c274e9da8953d3ba22f493c360a9f" }, - "mini.pairs": { "branch": "main", "commit": "552062017ff207e1f35f7028bfb3f27c7421d22d" }, - "mini.statusline": { "branch": "main", "commit": "950d9029c7ed901b67c839e74478f784b7432665" }, - "mini.surround": { "branch": "main", "commit": "af8129efcabe95fc08a233e9f91569829bed031f" }, - "neoconf": { "branch": "main", "commit": "64437787dba70fce50dad7bfbb97d184c5bc340f" }, - "neodev.nvim": { "branch": "main", "commit": "c4ce017bd4bacf60bf59330cec9e93c5d5e104a6" }, - "neogit": { "branch": "master", "commit": "761e9be2aa7cc4c8ca87f10c8c37108a687b928e" }, - "nui": { "branch": "main", "commit": "c9b4de623d19a85b353ff70d2ae9c77143abe69c" }, - "nui.nvim": { "branch": "main", "commit": "c9b4de623d19a85b353ff70d2ae9c77143abe69c" }, + "lspkind.nvim": { "branch": "master", "commit": "1735dd5a5054c1fb7feaf8e8658dbab925f4f0cf" }, + "luasnip": { "branch": "master", "commit": "8ae1dedd988eb56441b7858bd1e8554dfadaa46d" }, + "mini.base16": { "branch": "main", "commit": "f770a9cecf91bc690ba7943818caff0b5770f0f1" }, + "mini.colors": { "branch": "main", "commit": "f64963332f7fcb45c8dfcc243f682a9a0fb9935d" }, + "mini.comment": { "branch": "main", "commit": "a4b7e46deb9ad2feb8902cc5dbf087eced112ee5" }, + "mini.files": { "branch": "main", "commit": "eab771c69b787a3f042dc6505d15613c282aa786" }, + "mini.operators": { "branch": "main", "commit": "0765e4818086e96b8fb55d280e47af781a5bc56a" }, + "mini.pairs": { "branch": "main", "commit": "04f58f2545ed80ac3b52dd4826e93f33e15b2af6" }, + "mini.statusline": { "branch": "main", "commit": "dfd3d2ba295473930f78f143852b9b53eb54ae2a" }, + "mini.surround": { "branch": "main", "commit": "a1b590cc3b676512de507328d6bbab5e43794720" }, + "neoconf": { "branch": "main", "commit": "4ef6c6c5882e7e16209173fb8c47414202843384" }, + "neodev.nvim": { "branch": "main", "commit": "b0ccf605c952eb0d1efe3692d5b241c52ceee187" }, + "neogit": { "branch": "master", "commit": "4075ca97222e0a1ab517dcb8fd4542fd8df4ca91" }, + "nui": { "branch": "main", "commit": "c3c7fd618dcb5a89e443a2e1033e7d11fdb0596b" }, "null-ls": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" }, - "nvim-lspconfig": { "branch": "master", "commit": "511609ae0311abfcfaed3c398429a147e895ce2c" }, - "nvim-tree": { "branch": "master", "commit": "7d1760f892951dd6a118dae1d7a1d8df5f029edf" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "ec1c5bdb3d87ac971749fa6c7dbc2b14884f1f6a" }, - "nvim-web-devicons": { "branch": "master", "commit": "5efb8bd06841f91f97c90e16de85e96d57e9c862" }, + "nvim-lspconfig": { "branch": "master", "commit": "6b9f4bbe0aa1f351fd4845dc5fd4f3450b010f88" }, + "nvim-tree": { "branch": "master", "commit": "030defdb6522f5f716d8201d20ca1a2baa57ca66" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "7f00d94543f1fd37cab2afa2e9a6cd54e1c6b9ef" }, + "nvim-web-devicons": { "branch": "master", "commit": "14ac5887110b06b89a96881d534230dac3ed134d" }, "paperlanes": { "branch": "master", "commit": "bd52c54c36ad2e9ac563ae1c6a4f6ed1f5faacd2" }, - "plenary": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" }, - "plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" }, - "rust-tools": { "branch": "master", "commit": "0cc8adab23117783a0292a0c8a2fbed1005dc645" }, - "scrap": { "branch": "main", "commit": "0f833d8dccaabe49c1ed7a2b24cfd887d9d5003f" }, - "smart-splits.nvim": { "branch": "master", "commit": "c970c7a3cc7ba635fd73d43c81b40f04c00f5058" }, + "plenary": { "branch": "master", "commit": "4f71c0c4a196ceb656c824a70792f3df3ce6bb6d" }, + "rust-tools": { "branch": "master", "commit": "676187908a1ce35ffcd727c654ed68d851299d3e" }, + "scrap": { "branch": "main", "commit": "cc8453ed613932c744c3d1ec42f379b78bd8b92c" }, + "smart-splits.nvim": { "branch": "master", "commit": "e1e1e6ca3754bd8ef971fb69673cc17965eb9e37" }, "ssr": { "branch": "main", "commit": "bb323ba621ac647b4ac5638b47666e3ef3c279e1" }, "telescope": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" }, - "treesitter-top-context": { "branch": "master", "commit": "c9f2b429a1d63023f7a33b5404616f4cd2a109c5" }, - "treesitter-virtual-context": { "branch": "master", "commit": "a14f9292b4bd68ceed433fc513f287641816dc6d" }, - "typst": { "branch": "main", "commit": "308e7737d09de8c1100320ddc6bc270615ae791a" }, - "undotree": { "branch": "master", "commit": "36ff7abb6b60980338344982ad4cdf03f7961ecd" }, + "treesitter": { "branch": "master", "commit": "19bf991be2403c10fa379fa0fb11b7de2560ac31" }, + "treesitter-virtual-context": { "branch": "master", "commit": "8f7b6b46292e0819290b0d368abc3366b8a163fc" }, + "typst": { "branch": "main", "commit": "e28d440c7ba4df2516d7d7f908c4fb664a8cf86c" }, + "undotree": { "branch": "master", "commit": "9dbbf3b7d19dda0d22ceca461818e4739ad8154d" }, "venn.nvim": { "branch": "main", "commit": "e4d68341a73dd56c64955058821a58295fb337b1" }, - "wakatime": { "branch": "master", "commit": "8c8856327815a077cbebeba8c7456312a3d2c39c" }, - "web-devicons": { "branch": "master", "commit": "5efb8bd06841f91f97c90e16de85e96d57e9c862" }, + "wakatime": { "branch": "master", "commit": "285c2e4e48fb0c63ced233c00fb10a2edb3b6c94" }, + "web-devicons": { "branch": "master", "commit": "14ac5887110b06b89a96881d534230dac3ed134d" }, "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" }, "winbar": { "branch": "main", "commit": "13739fdb31be51a1000486189662596f07a59a31" } } \ No newline at end of file diff --git a/home/features/neovim/config/lua/my/abbreviations/fp.lua b/home/features/neovim/config/lua/my/abbreviations/fp.lua index 6e8d622..e4790b6 100644 --- a/home/features/neovim/config/lua/my/abbreviations/fp.lua +++ b/home/features/neovim/config/lua/my/abbreviations/fp.lua @@ -4,7 +4,7 @@ local M = {} M.symols = { { "mto", ">>=" }, -- [M]onadic [t]o - { "oalt", "<\\|>" }, -- [O]peration [A]lternative + { "oalt", "<|>" }, -- [O]peration [A]lternative { "omono", "<>" }, -- [O]peration [M]onoid } @@ -24,17 +24,9 @@ M.functions = { } function M.setup() - scrap.many_local_abbreviations( - scrap.expand_many(M.types, A.no_capitalization) - ) - - scrap.many_local_abbreviations( - scrap.expand_many(M.symols, A.no_capitalization) - ) - - scrap.many_local_abbreviations( - scrap.expand_many(M.functions, A.no_capitalization) - ) + A.manyLocalAbbr(scrap.expand_many(M.types, A.no_capitalization)) + A.manyLocalAbbr(scrap.expand_many(M.symols, A.no_capitalization)) + A.manyLocalAbbr(scrap.expand_many(M.functions, A.no_capitalization)) end return M diff --git a/home/features/neovim/config/lua/my/abbreviations/unicode.lua b/home/features/neovim/config/lua/my/abbreviations/unicode.lua index f0db9f7..7d87d2a 100644 --- a/home/features/neovim/config/lua/my/abbreviations/unicode.lua +++ b/home/features/neovim/config/lua/my/abbreviations/unicode.lua @@ -150,7 +150,7 @@ M.unicode = { -- }}} function M.setup() - A.manyGlobalAbbr(scrap.expand_many(M.unicode, { capitalized = false })) + A.manyLocalAbbr(scrap.expand_many(M.unicode, { capitalized = false })) end return M diff --git a/home/features/neovim/config/lua/my/plugins/lspconfig.lua b/home/features/neovim/config/lua/my/plugins/lspconfig.lua index 5dfa934..335db53 100644 --- a/home/features/neovim/config/lua/my/plugins/lspconfig.lua +++ b/home/features/neovim/config/lua/my/plugins/lspconfig.lua @@ -1,6 +1,6 @@ local runtime = require("my.tempest") -local lspconfig = { +local M = { "neovim/nvim-lspconfig", event = "VeryLazy", dependencies = { @@ -13,99 +13,6 @@ local lspconfig = { cond = runtime.blacklist("vscode"), } -local M = lspconfig - --- {{{ General server config ----@type lspconfig.options ----@diagnostic disable-next-line: missing-fields -local servers = { - -- {{{ Typescript - ---@diagnostic disable-next-line: missing-fields - tsserver = { - on_attach = function(client, bufnr) - -- We handle formatting using null-ls and prettierd - client.server_capabilities.documentFormattingProvider = false - M.on_attach(client, bufnr) - end, - }, - -- }}} - -- {{{ Purescript - purescriptls = { - settings = { - ---@diagnostic disable-next-line: missing-fields - purescript = { - censorWarnings = { "UnusedName", "ShadowedName", "UserDefinedWarning" }, - formatter = "purs-tidy", - }, - }, - }, - -- }}} - -- {{{ Lua - lua_ls = { - cmd = { - "lua-language-server", - "--logpath=/home/adrielus/.local/share/lua-language-server/log", - }, - settings = { - ---@diagnostic disable-next-line: missing-fields - Lua = { - ---@diagnostic disable-next-line: missing-fields - format = { - enable = true, - }, - -- Do not send telemetry data containing a randomized but unique identifier - telemetry = { - enable = false, - }, - }, - }, - }, - -- }}} - -- {{{ Latex - texlab = { - settings = { - texlab = { - build = { - args = { - -- Here by default: - "-pdf", - "-interaction=nonstopmode", - "-synctex=1", - "%f", - -- Required for syntax highlighting inside the generated pdf aparently - "-shell-escape", - }, - executable = "latexmk", - forwardSearchAfter = true, - onSave = true, - }, - chktex = { - onOpenAndSave = true, - onEdit = true, - }, - }, - }, - }, - -- }}} - -- {{{ Nix - rnix = {}, - -- nil_ls = {}, - nixd = {}, - -- }}} - ---@diagnostic disable-next-line: missing-fields - cssls = {}, - ---@diagnostic disable-next-line: missing-fields - jsonls = {}, - dhall_lsp_server = {}, - typst_lsp = {}, - ---@diagnostic disable-next-line: missing-fields - elmls = {}, - -- {{{ Inactive - -- pylsp = {}, - -- pyright = {}, - -- }}} -} --- }}} -- {{{ Capabilities M.capabilities = function() local c = require("cmp_nvim_lsp").default_capabilities() @@ -119,17 +26,114 @@ M.capabilities = function() end -- }}} -- {{{ Main config function -function lspconfig.config() +function M.config() + local lspconfig = require("lspconfig") + + -- {{{ General server config + ---@type lspconfig.options + ---@diagnostic disable-next-line: missing-fields + local servers = { + -- {{{ Typescript + ---@diagnostic disable-next-line: missing-fields + tsserver = { + on_attach = function(client) + -- We handle formatting using null-ls and prettierd + client.server_capabilities.documentFormattingProvider = false + end, + }, + -- }}} + -- {{{ Purescript + purescriptls = { + root_dir = lspconfig.util.root_pattern("spago.yaml"), + settings = { + ---@diagnostic disable-next-line: missing-fields + purescript = { + censorWarnings = { + "UnusedName", + "ShadowedName", + "UserDefinedWarning", + }, + formatter = "purs-tidy", + }, + }, + }, + -- }}} + -- {{{ Lua + lua_ls = { + cmd = { + "lua-language-server", + "--logpath=/home/adrielus/.local/share/lua-language-server/log", + }, + settings = { + ---@diagnostic disable-next-line: missing-fields + Lua = { + ---@diagnostic disable-next-line: missing-fields + format = { + enable = true, + }, + -- Do not send telemetry data containing a randomized but unique identifier + telemetry = { + enable = false, + }, + }, + }, + }, + -- }}} + -- {{{ Latex + texlab = { + settings = { + texlab = { + build = { + args = { + -- Here by default: + "-pdf", + "-interaction=nonstopmode", + "-synctex=1", + "%f", + -- Required for syntax highlighting inside the generated pdf aparently + "-shell-escape", + }, + executable = "latexmk", + forwardSearchAfter = true, + onSave = true, + }, + chktex = { + onOpenAndSave = true, + onEdit = true, + }, + }, + }, + }, + -- }}} + -- {{{ Nix + rnix = {}, + -- nil_ls = {}, + nixd = {}, + -- }}} + ---@diagnostic disable-next-line: missing-fields + cssls = {}, + ---@diagnostic disable-next-line: missing-fields + jsonls = {}, + dhall_lsp_server = {}, + typst_lsp = {}, + ---@diagnostic disable-next-line: missing-fields + elmls = {}, + -- {{{ Inactive + -- pylsp = {}, + -- pyright = {}, + -- }}} + } + -- }}} + vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "single" }) vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { border = "single" }) - -- }}} local capabilities = M.capabilities() for lsp, details in pairs(servers) do details.capabilities = capabilities - require("lspconfig")[lsp].setup(details) + lspconfig[lsp].setup(details) end end --}}} diff --git a/home/features/neovim/default.nix b/home/features/neovim/default.nix index 6cfc43d..446973b 100644 --- a/home/features/neovim/default.nix +++ b/home/features/neovim/default.nix @@ -250,23 +250,39 @@ let }; # }}} # {{{ Language specific settings - "5:language-specific-settings".autocmds = [{ - event = "FileType"; - group = "UserNixSettings"; - pattern = "nix"; - action = { - vim.opt.commentstring = "# %s"; - keys = { - mapping = "lg"; - action = thunk /* lua */ '' - D.tempest.withSavedCursor(function() - vim.cmd(":%!${lib.getExe pkgs.update-nix-fetchgit}") - end) - ''; - desc = "Update all fetchgit calls"; - }; - }; - }]; + "5:language-specific-settings" = { + autocmds = [ + { + event = "FileType"; + group = "UserNixSettings"; + pattern = "nix"; + action = { + vim.opt.commentstring = "# %s"; + keys = { + mapping = "lg"; + action = thunk /* lua */ '' + D.tempest.withSavedCursor(function() + vim.cmd(":%!${lib.getExe pkgs.update-nix-fetchgit}") + end) + ''; + desc = "Update all fetchgit calls"; + }; + }; + } + { + event = "FileType"; + group = "UserPurescriptSettings"; + pattern = "purs"; + action.vim.opt = { + expandtab = true; # Use spaces for the tab char + commentstring = "-- %s"; + }; + } + ]; + + # Make neovim aware about the existence of the purescript datatype. + callback = lua ''vim.filetype.add({ extension = { purs = "purescript" } })''; + }; # }}} }; # }}} @@ -310,7 +326,7 @@ let mini-statusline = { package = "echasnovski/mini.statusline"; name = "mini.statusline"; - dependencies.lua = [ self.lazy.web-devicons.package ]; + dependencies.lua = [ "web-devicons" ]; cond = blacklist [ "vscode" "firenvim" ]; lazy = false; @@ -342,7 +358,7 @@ let mini-files = { package = "echasnovski/mini.files"; name = "mini.files"; - dependencies.lua = [ self.lazy.web-devicons.package ]; + dependencies.lua = [ "web-devicons" ]; cond = blacklist [ "vscode" "firenvim" ]; keys = { @@ -411,7 +427,7 @@ let # {{{ neogit neogit = { package = "TimUntersberger/neogit"; - dependencies.lua = [ self.lazy.plenary.package ]; + dependencies.lua = [ "plenary" ]; cond = blacklist [ "vscode" "firenvim" ]; cmd = "Neogit"; # We sometimes spawn this directly from fish using a keybind @@ -436,7 +452,7 @@ let dependencies = { nix = [ pkgs.ripgrep ]; lua = [ - self.lazy.plenary.package + "plenary" { # We want a prebuilt version of this plugin dir = pkgs.vimPlugins.telescope-fzf-native-nvim; @@ -562,12 +578,15 @@ let # {{{ treesitter treesitter = { # REASON: more grammars - dir = upkgs.vimPlugins.nvim-treesitter.withAllGrammars; + # dir = upkgs.vimPlugins.nvim-treesitter.withAllGrammars; + package = "nvim-treesitter/nvim-treesitter"; + main = "nvim-treesitter.configs"; + dependencies.lua = [ "nvim-treesitter/nvim-treesitter-textobjects" ]; dependencies.nix = [ pkgs.tree-sitter ]; cond = blacklist "vscode"; - event = "BufReadPost"; + event = "VeryLazy"; #{{{ Highlighting opts.highlight = { @@ -628,15 +647,16 @@ let event = "VeryLazy"; }; + # REASON: broken # show context at top of file - treesitter-top-context = { - package = "nvim-treesitter/nvim-treesitter-context"; - dependencies.lua = [ "treesitter" ]; - - cond = blacklist "vscode"; - event = "VeryLazy"; - opts.enable = true; - }; + # treesitter-top-context = { + # package = "nvim-treesitter/nvim-treesitter-context"; + # dependencies.lua = [ "treesitter" ]; + # + # cond = blacklist "vscode"; + # event = "VeryLazy"; + # opts.enable = true; + # }; # }}} # }}} # {{{ editing @@ -735,21 +755,22 @@ let opts.keymaps.replace_all = ""; }; # }}} - # {{{ edit-code-block (edit injections in separate buffers) - edit-code-block = { - package = "dawsers/edit-code-block.nvim"; - dependencies.lua = [ "treesitter" ]; - main = "ecb"; - - cond = blacklist "vscode"; - config = true; - keys = { - mapping = "e"; - action = "EditCodeBlock"; - desc = "[e]dit injection"; - }; - }; - # }}} + # # {{{ edit-code-block (edit injections in separate buffers) + # REASON: broken + # edit-code-block = { + # package = "dawsers/edit-code-block.nvim"; + # dependencies.lua = [ "treesitter" ]; + # main = "ecb"; + # + # cond = blacklist "vscode"; + # config = true; + # keys = { + # mapping = "e"; + # action = "EditCodeBlock"; + # desc = "[e]dit injection"; + # }; + # }; + # # }}} # {{{ mini.comment mini-comment = { package = "echasnovski/mini.comment"; @@ -890,6 +911,7 @@ let # {{{ ide # {{{ conform conform = { + dependencies.lua = [ "neovim/nvim-lspconfig" ]; package = "stevearc/conform.nvim"; cond = blacklist "vscode"; @@ -1052,7 +1074,7 @@ let "dmitmel/cmp-digraphs" # }}} "onsails/lspkind.nvim" # show icons in lsp completion menus - self.lazy.luasnip.package + "luasnip" ]; cond = blacklist "vscode"; @@ -1063,7 +1085,7 @@ let # {{{ inc-rename inc-rename = { package = "smjonas/inc-rename.nvim"; - dependencies.lua = [ self.lazy.dressing.package ]; + dependencies.lua = [ "dressing" ]; cond = blacklist "vscode"; event = "VeryLazy"; @@ -1085,7 +1107,7 @@ let # {{{ haskell support haskell-tools = { package = "mrcjkb/haskell-tools.nvim"; - dependencies.lua = [ self.lazy.plenary.package ]; + dependencies.lua = [ "plenary" ]; version = "^2"; cond = blacklist "vscode"; @@ -1126,7 +1148,7 @@ let # {{{ crates crates = { package = "saecki/crates.nvim"; - dependencies.lua = [ self.lazy.plenary.package ]; + dependencies.lua = [ "plenary" ]; cond = blacklist "vscode"; event = "BufReadPost Cargo.toml"; @@ -1203,7 +1225,7 @@ let package = "Julian/lean.nvim"; name = "lean"; dependencies.lua = [ - self.lazy.plenary.package + "plenary" "neovim/nvim-lspconfig" ]; @@ -1229,7 +1251,7 @@ let package = "ShinKage/idris2-nvim"; name = "idris"; dependencies.lua = [ - self.lazy.nui.package + "nui" "neovim/nvim-lspconfig" ]; @@ -1278,6 +1300,14 @@ let ft = "typst"; }; # }}} + # {{{ purescript support + # purescript = { + # package = "purescript-contrib/purescript-vim"; + # + # cond = blacklist "vscode"; + # ft = "purescript"; + # }; + # }}} # {{{ hyprland hyprland = { package = "theRealCarneiro/hyprland-vim-syntax"; @@ -1322,7 +1352,7 @@ let in { package = "ruifm/gitlinker.nvim"; - dependencies.lua = [ self.lazy.plenary.package ]; + dependencies.lua = [ "plenary" ]; cond = blacklist [ "vscode" "firenvim" ]; opts.mappings = mapping; @@ -1345,7 +1375,7 @@ let in { package = "epwalsh/obsidian.nvim"; - dependencies.lua = [ self.lazy.plenary.package ]; + dependencies.lua = [ "plenary" ]; cond = [ (blacklist [ "vscode" "firenvim" ]) @@ -1393,7 +1423,7 @@ let extraPackages = with pkgs; [ # Language servers nodePackages.typescript-language-server # typescript - nodePackages_latest.purescript-language-server # purescript + # nodePackages_latest.purescript-language-server # purescript lua-language-server # lua rnix-lsp # nix nil # nix @@ -1404,7 +1434,7 @@ let # Formatters stylua # Lua - nodePackages_latest.purs-tidy # Purescript + # nodePackages_latest.purs-tidy # Purescript nodePackages_latest.prettier # Js & friends nodePackages_latest.prettier_d_slim # Js & friends @@ -1483,7 +1513,7 @@ let base = if config.satellite.toggles.neovim-nightly.enable then pkgs.neovim-nightly - else pkgs.neovim; + else upkgs.neovim; name = "nvim"; }; diff --git a/hosts/nixos/common/optional/services/kanata.nix b/hosts/nixos/common/optional/services/kanata.nix index f9176fe..f8f127d 100644 --- a/hosts/nixos/common/optional/services/kanata.nix +++ b/hosts/nixos/common/optional/services/kanata.nix @@ -1,164 +1,170 @@ { ... }: -let mkConfig = { blueTrigger, redTrigger, chordDelay }: '' - ;; {{{ Source layout - (defsrc - grv 1 2 3 4 5 6 7 8 9 0 - = bspc - tab q w e r t y u i o p [ ] \ - caps a s d f g h j k l ; ' ret - lsft z x c v b n m , . / rsft - lctl lmet ${redTrigger} spc ${blueTrigger} - ) - ;; }}} - ;; {{{ Layer & utility aliases - (defalias - red (layer-while-held red) - blue (layer-while-held blue) - purple (layer-while-held purple) - - em (unicode —) - udo (arbitrary-code 131) - cpy (arbitrary-code 133) - pst (arbitrary-code 135) - cut (arbitrary-code 137) - ) - ;; }}} - ;; {{{ Chord aliases - (defalias - chq (chord mainchords q) - chw (chord mainchords w) - che (chord mainchords e) - chr (chord mainchords r) - cha (chord mainchords a) - chs (chord mainchords s) - chd (chord mainchords d) - chf (chord mainchords f) - chz (chord mainchords z) - chx (chord mainchords x) - chc (chord mainchords c) - chg (chord mainchords g) - chh (chord mainchords h) - chi (chord mainchords i) - chp (chord mainchords p) - chj (chord mainchords j) - chk (chord mainchords k) - chl (chord mainchords l) - ch: (chord mainchords :) - chn (chord mainchords n) - ) - ;; }}} - - (defchords mainchords ${toString chordDelay} - ;; {{{ Single keys - (q) q - (w) w - (e) e - (r) r - (a) a - (s) s - (d) d - (f) f - (z) z - (x) x - (c) c - (g) g - (h) h - (i) i - (p) p - (j) j - (k) k - (l) l - (:) ; - (n) n - ;; }}} - ;; {{{ Left modifiers - (a s ) lalt - ( s d ) lsft - ( s f) lctl - ( s d f) C-lsft - (a s d ) S-lalt - (a s d f) C-S-lalt +let + stickTap = action: "tap-hold-press 0 200 (one-shot-press-pcancel 1000 (${action})) (${action})"; + mkConfig = { blueTrigger, redTrigger, chordDelay }: '' + ;; {{{ Source layout + (defsrc + grv 1 2 3 4 5 6 7 8 9 0 - = bspc + tab q w e r t y u i o p [ ] \ + caps a s d f g h j k l ; ' ret + lsft z x c v b n m , . / rsft + lctl lmet ${redTrigger} spc ${blueTrigger} + ) ;; }}} - ;; {{{ Right modifiers - ( l :) ralt - ( k l ) rsft - (j l ) rctl - (j k l ) C-rsft - ( k l :) S-ralt - (j k l :) C-S-ralt - ;; }}} - ;; {{{ Special keys - (d f) tab - (e f) ret - (q w) esc + ;; {{{ Layer & utility aliases + (defalias + red (${stickTap "layer-while-held red"}) + blue (${stickTap "layer-while-held blue"}) + purple (layer-while-held purple) - (g h) bspc - (n l) rmet - - (j k) f10 - (c p) f11 - (j i) f12 + em (unicode —) + ) ;; }}} - ;; {{{ Wm keybinds - (n l k) M-p - (n l q) M-1 - (n l w) M-2 - (n l e) M-3 - (n l r) M-4 - (n l a) M-5 - (n l s) M-6 - (n l d) M-7 - (n l f) M-8 - (n l z) M-9 - (n l x) M-0 + ;; {{{ Chord aliases + (defalias + chq (chord mainchords q) + chw (chord mainchords w) + che (chord mainchords e) + chr (chord mainchords r) + cha (chord mainchords a) + chs (chord mainchords s) + chd (chord mainchords d) + chf (chord mainchords f) + chz (chord mainchords z) + chx (chord mainchords x) + chc (chord mainchords c) + chg (chord mainchords g) + chh (chord mainchords h) + chi (chord mainchords i) + chp (chord mainchords p) + chj (chord mainchords j) + chk (chord mainchords k) + chl (chord mainchords l) + ch: (chord mainchords :) + chn (chord mainchords n) + ) ;; }}} - ) - ;; {{{ Qwerty - (deflayer qwerty - XX XX XX XX XX XX XX XX XX XX XX XX XX XX - XX @chq @chw @che @chr t y u @chi o @chp XX XX XX - XX @cha @chs @chd @chf @chg @chh @chj @chk @chl @ch: XX XX - lsft @chz @chx @chc v b @chn m , . ' XX - XX lmet @red spc @blue - ) - ;; }}} - ;; {{{ Transparent template - (deflayer template - _ _ _ _ _ _ _ _ _ _ _ _ _ _ - _ _ _ _ _ _ _ _ _ _ _ _ _ _ - _ _ _ _ _ _ _ _ _ _ _ _ _ - _ _ _ _ _ _ _ _ _ _ _ _ - _ _ _ _ _ - ) - ;; }}} - ;; {{{ Blue - (deflayer blue - _ _ _ _ _ _ _ _ _ _ _ _ _ _ - _ S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 grv S-grv _ _ _ - _ S-, S-9 [ S-[ - S-/ S-- / = S-; _ _ - _ S-. S-0 ] S-] @em _ S-\ \ S-= S-' _ - _ _ @purple _ _ - ) - ;; }}} - ;; {{{ Red - (deflayer red - _ _ _ _ _ _ _ _ _ _ _ _ _ _ - _ 1 2 3 4 _ _ _ _ _ _ _ _ _ - _ 5 6 7 8 _ left down up rght _ _ _ - _ 9 0 _ _ _ _ _ _ _ _ _ - _ _ _ _ @purple - ) - ;; }}} - ;; {{{ Purple - (deflayer purple - _ _ _ _ _ _ _ _ _ _ _ _ _ _ - _ _ _ _ _ _ _ _ _ _ @cpy _ _ _ - _ _ _ _ _ _ _ _ _ _ @pst _ _ - _ _ _ _ _ _ _ _ @udo _ @cut _ - _ _ _ _ _ - ) - ;; }}} -''; + (defchords mainchords ${toString chordDelay} + ;; {{{ Single keys + (q) q + (w) w + (e) e + (r) r + (a) a + (s) s + (d) d + (f) f + (z) z + (x) x + (c) c + (g) g + (h) h + (i) i + (p) p + (j) j + (k) k + (l) l + (:) ; + (n) n + ;; }}} + ;; {{{ Left modifiers + (a s ) lalt + ( s d ) lsft + ( s f) lctl + ( s d f) C-lsft + (a s d ) S-lalt + (a s d f) C-S-lalt + ;; }}} + ;; {{{ Right modifiers + ( l :) ralt + ( k l ) rsft + (j l ) rctl + (j k l ) C-rsft + ( k l :) S-ralt + (j k l :) C-S-ralt + ;; }}} + ;; {{{ Special keys + (d f) tab + (e f) ret + (q w) esc + + (g h) bspc + (n l) rmet + + (j k) f10 + (c p) f11 + (j i) f12 + ;; }}} + ;; {{{ Wm keybinds + (n l k) M-p + (n l q) M-1 + (n l w) M-2 + (n l e) M-3 + (n l r) M-4 + (n l a) M-5 + (n l s) M-6 + (n l d) M-7 + (n l f) M-8 + (n l z) M-9 + (n l x) M-0 + ;; }}} + ) + + ;; {{{ Qwerty + (deflayer qwerty + XX XX XX XX XX XX XX XX XX XX XX XX XX XX + XX @chq @chw @che @chr t y u @chi o @chp XX XX XX + XX @cha @chs @chd @chf @chg @chh @chj @chk @chl @ch: XX XX + lsft @chz @chx @chc v b @chn m , . ' XX + XX lmet @red spc @blue + ) + ;; }}} + ;; {{{ Transparent template + (deflayer template + _ _ _ _ _ _ _ _ _ _ _ _ _ _ + _ _ _ _ _ _ _ _ _ _ _ _ _ _ + _ _ _ _ _ _ _ _ _ _ _ _ _ + _ _ _ _ _ _ _ _ _ _ _ _ + _ _ _ _ _ + ) + ;; }}} + ;; {{{ Blue + (deflayer blue + _ _ _ _ _ _ _ _ _ _ _ _ _ _ + _ S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8 grv S-grv _ _ _ + _ S-, S-[ [ S-9 S-/ S-\ - / = S-; _ _ + _ S-. S-] ] S-0 _ @em S-- \ S-= S-' _ + _ _ @purple _ _ + ) + ;; }}} + ;; {{{ Red + (deflayer red + _ _ _ _ _ _ _ _ _ _ _ _ _ _ + _ 1 2 3 4 _ _ _ _ _ _ _ _ _ + _ 5 6 7 8 _ left down up rght _ _ _ + _ 9 0 _ _ _ _ _ _ _ _ _ + _ _ _ _ @purple + ) + ;; }}} + ;; {{{ Purple + (defalias + cps (caps-word 2000) ;; revert after being idle for 2s + udo (arbitrary-code 131) ;; undo + cpy (arbitrary-code 133) ;; copy + pst (arbitrary-code 135) ;; paste + cut (arbitrary-code 137) ;; cut + ) + + (deflayer purple + _ _ _ _ _ _ _ _ _ _ _ _ _ _ + _ _ _ _ _ _ @cps @cpy next volu brup _ _ _ + _ _ _ _ _ _ @udo @pst pp vold brdn _ _ + _ _ _ _ _ _ _ @cut prev mute _ _ + _ _ _ _ _ + ) + ;; }}} + ''; in { services.kanata = { diff --git a/hosts/nixos/tethys/default.nix b/hosts/nixos/tethys/default.nix index 14dd2c8..619f532 100644 --- a/hosts/nixos/tethys/default.nix +++ b/hosts/nixos/tethys/default.nix @@ -21,6 +21,8 @@ # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion system.stateVersion = "22.11"; + services.mullvad-vpn.enable = true; + # {{{ Machine ids networking.hostName = "tethys"; environment.etc.machine-id.text = "08357db3540c4cd2b76d4bb7f825ec88";