diff --git a/bad_paths.txt b/bad_paths.txt deleted file mode 100644 index 5bbbaa7..0000000 --- a/bad_paths.txt +++ /dev/null @@ -1,27 +0,0 @@ -path '/nix/store/rx5ij82mb3kdhiqr6qk206hmhyzi73gi-aws-c-common-0.5.5' was modified! expected hash 'sha256:16cx02l50cf85kbpslk1j0fck9y4hlnyhv4v7wydhzcg3bp0bnkb', got 'sha256:1qm0fg6wjdxzfpsgym8g9592ybmrz6xsfli88pfg2gwgnz0smjnv' -path '/nix/store/f9sqmvn5vc31dy57iyv8rvsdakr281qx-apple-framework-CoreFoundation-11.0.0' was modified! expected hash 'sha256:0107j8v3g2hhymf9sq3jnbcbxnwz0wyyn2n7q920qyrayv61gc65', got 'sha256:12d6c1967gnl6czi9igphbwzhh3df9dbiwnk0phlzqm5ykpyxrz6' -path '/nix/store/9dg39kyqa8zqnivp83h7cczkd21vmyp9-aws-c-cal-0.4.5' was modified! expected hash 'sha256:0wvwk1rcb7xg52jq1hmzz7w59v9jbmxdzcr77hnnl7q793r54xb2', got 'sha256:1qjg5vcnkk1bmgdaknqb0kgclh6yhy81vqgj0za6dz05wy2kj9a6' -path '/nix/store/17m4bcp3y2y99g1bka0wfvp0x26l744g-aws-c-io-0.9.1' was modified! expected hash 'sha256:1j2pnbjns27rf1mdaviijzs31piy947p3w7kk5776aagk4prv59k', got 'sha256:0sjq5jdgrvlhi68p1k2b3nwx3k7z4b56as22kcr90l2z1r4i9jfg' -path '/nix/store/s6p2agp3gxkjfwmjswjn8gpyv8l2ijxp-apple-framework-Security-11.0.0' was modified! expected hash 'sha256:0hkvn8wwnhn81dacygz4biw0bgvpfcdsnb02nc6c1g6gpm61h77v', got 'sha256:1a5m8ix7z4qwpc42dxkqhfik6vq8gzb6is35xwmkg4iys35qr91l' -path '/nix/store/jxxlf9z137d7nfinqmscinv5ma30ckz5-apple-framework-IOKit-11.0.0' was modified! expected hash 'sha256:148c986n7aq5vfglxqzyzrqag6fvhk7p96hh42a7x681lcg8xv4q', got 'sha256:1aayllkxkmij8k0szdrd9dz0hw18bbnaq2v9kqsqinxn4jyzry25' -path '/nix/store/8imb44frl4jrgjpq89hcph15s7lffhd0-bash-4.4-p23' was modified! expected hash 'sha256:181a8w54xl2fcn9h14scb7s6702h9ci7h9xfjz6n8bm5fxqlcdvm', got 'sha256:131m6aidg7l5wp032mgiwnbcdazgz8q6p15jdzbjk838cvad8lqf' -path '/nix/store/2cl9n67fjnczrbaqlww4ipp2z3mnw5dz-libkrb5-1.18' was modified! expected hash 'sha256:0ww3fzl6qhszpy7252by6hbi9wl8kip4li4h34f557jcpwzfs1gv', got 'sha256:17s5g4b3ywlpx0vyxv91whi9v3rm61lvs26bdwfwbmmk7kffgyb7' -path '/nix/store/3pzpaacii5gb60n2x9f9hs93bnakyqgr-sqlite-3.35.5' was modified! expected hash 'sha256:174im233z6qf05yid29hgnvi0d37vwnfay6zkmhnj7nnihm81293', got 'sha256:16dja4vxxjgpc7mhd5xb7i6z3hd9fzv5h5nbg0ksdq7c40f8ghmm' -path '/nix/store/5n7rr6x0zmi82x2p7scd8w1x8qnj6yfc-boehm-gc-8.0.4' was modified! expected hash 'sha256:12n509pxbs9qlgqcqxdzhkwlngp85hh91nbnqdgf3b427kp9iffm', got 'sha256:174zvsilif8f1l19wqpavl929hg2cj6nl953lwxm0lcn6sgw9p31' -path '/nix/store/775cc9g4k78ay84w4iy15z0q426yny1n-libcxx-11.1.0' was modified! expected hash 'sha256:1bmcvkxcldnfbdvyjfs1czig3kh90fpic9g5zvvbcybwlzakc0cl', got 'sha256:0by7az45bny1nzfyr0wjm0v64qnm5w8b936bwg7kpwficrp3r83f' -path '/nix/store/92wka994gxzb5p5rgdj0a8p1kp9ayv0a-zstd-1.4.9' was modified! expected hash 'sha256:0x3fpn3mjf0yf7bx50nfqmkqzx0xnsqj8blzwanksds3vvyx4fdm', got 'sha256:1n3f2cy3fg9sk4z12m779820zvhkmib90dyyiihlpzhf86yxvmnh' -path '/nix/store/a6745bp7pzbzb7xbigg5jrbp75lanb61-editline-1.17.1' was modified! expected hash 'sha256:1rs075m3zkac109rizxqj4n6s08zm3hq23d24si2prssaia4fmh5', got 'sha256:1mg2sqb7dgjz8kv84pqvk4j4bq0dgmb4wzrm5b0dywawzrjanq5l' -path '/nix/store/kd0vg2scdiwrnhh8425ixjs7qfsif2s8-openssl-1.1.1l' was modified! expected hash 'sha256:1fr0b7xv6p4fny13n3jiyag4lldq2977wijmkci0vh87hgh8w24y', got 'sha256:1hfbvaf228k6iwcicx0m6mjaxlshmmgwccbxnlr74ah0scdgm961' -path '/nix/store/mswlivp76jpf68069gcf0ivkc07kf1l3-nghttp2-1.43.0-lib' was modified! expected hash 'sha256:1kz6k06c73l7xczqw18b4y2xfb54sxcyg5d53lr0dyjab5qwnp5f', got 'sha256:03gzfvxlddzwzpiz7m4mw1xb417pllax84iwrnvs1lhlh8rqzvdq' -path '/nix/store/pssw9x69dxpwmjn84ac8a8xf7irhy2qj-libssh2-1.9.0' was modified! expected hash 'sha256:1567q82czdrdw0ir1lhwdca9mz5ljxbiyan4y33sm8w87c107s47', got 'sha256:1k9q7br7v6bhzw60qs8iixkzsnvzphxb6mc0cgbx8f1wnz30yv99' -path '/nix/store/bn1svfd6w0mjscvndpr08z161i8zycb5-curl-7.76.1' was modified! expected hash 'sha256:03zal8rj4jnqszyzybbhn849s9j2l146l7nqmfxvrvk2k6k90zld', got 'sha256:0y6f740b3fqyrmmllrghahfg413ahwp169rzjkjp91192c8dfq6m' -path '/nix/store/yfg8rhph33103x3949w3zy0aapx1jcms-brotli-1.0.9-lib' was modified! expected hash 'sha256:1jkhzh59n3y36gpyyvvd2hbzflblrnpa5amygyy7rnqda2j492x3', got 'sha256:0y8prdz066d1h7d5mg0ninj17d3wc7iwrvz8cz2074fm3bg6i215' -path '/nix/store/c7lpgqfw4izdxspdy8s94rd9hwlpw78s-libiconv-50' was modified! expected hash 'sha256:1xfmq9m4l7ffsl311q9fvs1kmr9myv8micp9s2fvsp4wm2xahkpl', got 'sha256:1m6j7q0iqwbq37hrqf97f5mb22kf0p369byiscd01km75hn77rkn' -path '/nix/store/hsbqghjjayl9k55ng276gvi26sn7g137-aws-checksums-0.1.11' was modified! expected hash 'sha256:0g11brrwkia8v6nh2k8j0kaj19h3ajn8f75xzjrd1cba8zpnc2ad', got 'sha256:0rikr1ymb0c10wxr5c2cgn8453dfzrf4gn4m2hdhxkndngppxmfg' -path '/nix/store/sp33d11b1wqyaijrhyryvgpgz5vnpahk-aws-c-event-stream-0.2.7' was modified! expected hash 'sha256:0z4ayakfwskvhdb4nzkwv6dj147yf82hfzc2xrd79vji769sxm9p', got 'sha256:1jaax3l4fwl2vc2h0gami49b8a3d4jr0p1gnnqwh7gln8wv4wnbp' -path '/nix/store/b3079yijhwkgp23rn3i5x1bm6zbfd3rb-bzip2-1.0.6.0.2' was modified! expected hash 'sha256:1n8v9rarb5sc5in2zd35nla4ywd06345iml4nmqbffpwsgl66qca', got 'sha256:0zj3q718cs4dx4xpnds46kjdayjzr5k2i46dv7l1qdhxg57gx4i8' -path '/nix/store/gx0g26n0jjxcspz8g9ipq9sgjl7y0d4v-xz-5.2.5' was modified! expected hash 'sha256:1dm765spz4wnk0flgkd1cvqfad8xjil7m4zfzdxfm9k8lbgjvdfb', got 'sha256:015y7ylnbma205pqqy9bqjg0j8i2dm8vhc4khblj5nsjc051c4my' -path '/nix/store/pygjnddvk75kpxvk1ipr9y80wj03jrqa-libarchive-3.5.2-lib' was modified! expected hash 'sha256:0czb8s8za5jnz8cdgbf3h1v5zlgihl6rpa9x5vv9s3lj2ww7pkik', got 'sha256:0xvmnj3y1fxvihcx4ziamn4mv0hc62hnj1xaqn5ja7ikgyzqf34k' -path '/nix/store/mlspxp4w6nday8ggxp30lmx6acd61v7w-libxml2-2.9.12' was modified! expected hash 'sha256:1synqbf82c0q52dmizh5k5qmiwc0iv2gm1cy9wa2l336ir63vj42', got 'sha256:1b49gw77s2znww48p0yvckx7y411q96kvvg329wglann7rkw2ai7' -path '/nix/store/q2v2ikih1f014sazv74skisbj3ar834q-libsodium-1.0.18' was modified! expected hash 'sha256:01flzxjdcjfq9044zfmss6f4mw8s33bg6dm78y16kp2q83fms6sx', got 'sha256:0pbckq7v15m1j5ay2zcvrzaypp1gzadw3rjvnzb1gb4ynfiw9xka' -path '/nix/store/9l96qllhbb6xrsjaai76dn74ap7rq92n-nix-2.7.0' was modified! expected hash 'sha256:08805lmwzsvq1202b19chx70rhzscxydnxamp9ld0jssgmbb1sip', got 'sha256:16mbwyx33y4xc2jbn648qa7iq7vs44vlv8bj7j3kkrrc6c91zjsw' diff --git a/nix/base-system/.vimrc b/nix/base-system/.vimrc index 0666069..a72401d 100644 --- a/nix/base-system/.vimrc +++ b/nix/base-system/.vimrc @@ -18,9 +18,9 @@ au BufNewFile,BufRead *.sil set filetype=tex au BufNewFile,BufRead *.erl filetype indent off au BufNewFile,BufRead *.hrl filetype indent off -nmap :execute "!make && make test" - let g:BASH_AuthorName = 'Jeremy Wall' let g:BASH_AuthorRef = 'jw' let g:BASH_Email = 'jeremy@marzhillstudios.com' +" Lua configuration +source /etc/nvim.lua diff --git a/nix/base-system/.zshrc b/nix/base-system/.zshrc index b1f3aa8..fffff04 100644 --- a/nix/base-system/.zshrc +++ b/nix/base-system/.zshrc @@ -1,2 +1,2 @@ -export PROMPT='%F{green}[%T] %F{cyan}(%n@%m) %F{lightgrey}(%y) -%F{white}%(!.>>.$>) ' \ No newline at end of file +export PROMPT='%F{green}[%T] %F{cyan}(%n@%m) %F{lightgrey}(%y) %F{cyan} %~ +%F{white}%(!.>>.$>) ' diff --git a/nix/base-system/flake.nix b/nix/base-system/flake.nix index 801dec0..1a0b199 100644 --- a/nix/base-system/flake.nix +++ b/nix/base-system/flake.nix @@ -46,36 +46,56 @@ PAGER="less -R"; }; + environment.etc."nvim.lua" = { + source = ./init.lua; + }; + programs = with pkgs; { neovim.enable = true; neovim.vimAlias = true; neovim.viAlias = true; neovim.configure = { - customRc = (builtins.readFile ./.vimrc); + customRC = (builtins.readFile ./.vimrc); packages.myVimPackage = with pkgs.vimPlugins; { start = [ - coc-nvim - nerdtree - vim-nix - coc-rust-analyzer - coc-diagnostic - coc-markdownlint - coc-tslint - coc-explorer - coc-git - coc-vimlsp - coc-python - coc-clangd - coc-go - coc-html - coc-css - coc-yaml - coc-json - vim-toml - hoon-vim - ]; + nvim-tree-lua + nvim-lspconfig + packer-nvim + nvim-cmp + vim-lsp + cmp-nvim-lua + cmp-nvim-lsp + cmp-nvim-lsp-signature-help + cmp-path + cmp-buffer + cmp-vsnip + vim-vsnip + mason-nvim + mason-lspconfig-nvim + rust-tools-nvim + vimspector + vimagit + hoon-vim + nvim-treesitter + omnisharp-extended-lsp-nvim + #neotest-dotnet + nix-develop-nvim + trouble-nvim + nightfox-nvim + ] ++ (with nvim-treesitter-parsers; [ + rust + lua + toml + yaml + json + ini + html + css + nix + ]); }; }; + zsh.enable = true; # default shell on catalina # This is a total hack but we don't want the default clobbering it which it does if it's an empty string or null zsh.promptInit = "#noop"; @@ -125,6 +145,7 @@ kubo dotnet-sdk_7 powershell + rust-analyzer # TODO add sonic-pi here if it supports the arch ]) ++ [ sile diff --git a/nix/base-system/init.lua b/nix/base-system/init.lua new file mode 100644 index 0000000..ba34917 --- /dev/null +++ b/nix/base-system/init.lua @@ -0,0 +1,214 @@ +-- theming +-- Default options +require('nightfox').setup({ + options = { + -- Compiled file's destination location + compile_path = vim.fn.stdpath("cache") .. "/nightfox", + compile_file_suffix = "_compiled", -- Compiled file suffix + transparent = false, -- Disable setting background + terminal_colors = true, -- Set terminal colors (vim.g.terminal_color_*) used in `:terminal` + dim_inactive = false, -- Non focused panes set to alternative background + module_default = true, -- Default enable value for modules + }, +}) +vim.cmd("colorscheme carbonfox") + +-- Mason setup for lsp management +require("mason").setup({ + ui = { + icons = { + package_installed = "*", + package_pending = "."; + package_uninstalled = "-", + }, + } +}) +require("mason-lspconfig").setup() + +--https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md + +-- Nix language server support +require'lspconfig'.nil_ls.setup{} + +-- This needs a path to the omnisharp dll provided +require'lspconfig'.omnisharp.setup {} + +-- Java language server support +require'lspconfig'.java_language_server.setup{} + +-- Typescript language server support +require'lspconfig'.tsserver.setup{} + +-- Global lsp configuration +vim.api.nvim_create_autocmd('LspAttach', { + callback = function(args) + vim.keymap.set('n', '', vim.lsp.buf.hover, { buffer = args.buf }) + vim.keymap.set("n", "a", vim.lsp.buf.code_action, { buffer = args.buf }) + vim.keymap.set("n", "M-f", vim.lsp.buf.references, { buffer = args.buf }) + --vim.keymap.set("n", "", vim.lsp.buf.format, { buffer = args.buf }) + --vim.keymap.set("n", "", vim.lsp.buf.implementation, { buffer = args.buf }) + end, +}) + +-- Rust language server support +local rt = require("rust-tools") + +-- https://github.com/simrat39/rust-tools.nvim#configuration +rt.setup({ + server = { + on_attach = function(_, bufnr) + -- Hover actions + vim.keymap.set("n", "", rt.hover_actions.hover_actions, { buffer = bufnr }) + -- Code action groups + vim.keymap.set("n", "a", rt.code_action_group.code_action_group, { buffer = bufnr }) + end, + }, +}) + +-- LSP Diagnostics Options Setup +local sign = function(opts) + vim.fn.sign_define(opts.name, { + texthl = opts.name, + text = opts.text, + numhl = '' + }) +end + +sign({name = 'DiagnosticSignError', text = '🔥'}) +sign({name = 'DiagnosticSignWarn', text = '⚠️'}) +sign({name = 'DiagnosticSignHint', text = '➡️'}) +sign({name = 'DiagnosticSignInfo', text = '🗒️'}) + +vim.diagnostic.config({ + virtual_text = false, + signs = true, + update_in_insert = true, + underline = true, + severity_sort = false, + float = { + border = 'rounded', + source = 'always', + header = '', + prefix = '', + }, +}) + +vim.cmd([[ +set signcolumn=yes +autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false }) +]]) + +--Set completeopt to have a better completion experience +-- :help completeopt +-- menuone: popup even when there's only one match +-- noinsert: Do not insert text until a selection is made +-- noselect: Do not select, force to select one from the menu +-- shortness: avoid showing extra messages when using completion +-- updatetime: set updatetime for CursorHold +vim.opt.completeopt = {'menuone', 'noselect', 'noinsert'} +vim.opt.shortmess = vim.opt.shortmess + { c = true} +vim.api.nvim_set_option('updatetime', 300) + +-- Fixed column for diagnostics to appear +-- Show autodiagnostic popup on cursor hover_range +-- Goto previous / next diagnostic warning / error +-- Show inlay_hints more frequently +vim.cmd([[ +set signcolumn=yes +autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false }) +]]) + +-- Completion Plugin Setup +local cmp = require'cmp' +cmp.setup({ + -- Enable LSP snippets + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + mapping = { + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + -- Add tab support + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.close(), + [''] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Insert, + select = true, + }) + }, + -- Installed sources: + sources = { + { name = 'path' }, -- file paths + { name = 'nvim_lsp', keyword_length = 3 }, -- from language server + { name = 'nvim_lsp_signature_help'}, -- display function signatures with current parameter emphasized + { name = 'nvim_lua', keyword_length = 2}, -- complete neovim's Lua runtime API such vim.lsp.* + { name = 'buffer', keyword_length = 2 }, -- source current buffer + { name = 'vsnip', keyword_length = 2 }, -- nvim-cmp source for vim-vsnip + { name = 'calc'}, -- source for math calculation + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + formatting = { + fields = {'menu', 'abbr', 'kind'}, + format = function(entry, item) + local menu_icon ={ + nvim_lsp = 'λ', + vsnip = '⋗', + buffer = 'Ω', + path = '🖫', + } + item.menu = menu_icon[entry.source.name] + return item + end, + }, +}) + +-- Treesitter Plugin Setup +require('nvim-treesitter.configs').setup { + highlight = { + enable = true, + additional_vim_regex_highlighting=false, + }, + ident = { enable = true }, + rainbow = { + enable = true, + extended_mode = true, + max_file_lines = nil, + } +} + +require'cmp'.setup { + sources = { + { name = 'nvim_lua' } + } +} + +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 + +-- set termguicolors to enable highlight groups +vim.opt.termguicolors = true + +-- OR setup with some options +require("nvim-tree").setup({ + sort_by = "case_sensitive", + view = { + width = 30, + }, + renderer = { + group_empty = true, + }, + filters = { + dotfiles = true, + }, +}) + +vim.keymap.set("n", "C-t", vim.cmd('NvimTreeToggle'), { } ) diff --git a/nix/darwin/flake.lock b/nix/darwin/flake.lock index 1384583..67c40d0 100644 --- a/nix/darwin/flake.lock +++ b/nix/darwin/flake.lock @@ -34,12 +34,12 @@ }, "locked": { "lastModified": 1, - "narHash": "sha256-BCPkQmfIGNCZSE0aGAiuvtLXwBwoeNRq2ICOvyIuYas=", - "path": "/nix/store/2bpzrvjxbsv4jjn8q7vakmxlyi8wx7kc-source/nix/base-system", + "narHash": "sha256-4RSqxxjRPaMEobyNpPlRVnQYVSV2uTx3qYty2nEJRkw=", + "path": "/nix/store/692frf2vp9qan3655z2p3mcb6vrl05bx-source/nix/base-system", "type": "path" }, "original": { - "path": "/nix/store/2bpzrvjxbsv4jjn8q7vakmxlyi8wx7kc-source/nix/base-system", + "path": "/nix/store/692frf2vp9qan3655z2p3mcb6vrl05bx-source/nix/base-system", "type": "path" } },