Compare commits

...

170 commits

Author SHA1 Message Date
7a86861f09 use jj.nvim instead of custom jank
Some checks failed
build / build (nvim-min) (push) Failing after 37m5s
2026-01-19 23:50:07 -06:00
3c5c3a6745 misc cleanup
Some checks failed
build / build (nvim-min) (push) Failing after 36m25s
2026-01-12 01:13:57 -06:00
775af7d730 flake.lock: Update
Flake lock file updates:

• Updated input 'dart':
    'github:iofq/dart.nvim/26b476f2113143329637a27d4e52ce9772bcae5b?narHash=sha256-Z9idyP9kiKxC10VL0vHnxcBwrkpNtBrC%2BZxl9mQbCj8%3D' (2025-10-18)
  → 'github:iofq/dart.nvim/205f809fbb27d56aff22756a97b5ba6f0c7243c3?narHash=sha256-lLY34wnbyzi21zE8i%2BVM0AoEt67r4aPn/EoaZ8o4NgU%3D' (2025-12-07)
• Updated input 'neovim-nightly-overlay':
    'github:nix-community/neovim-nightly-overlay/3c9432813e5528a13075f5493da6ff9ef249ad1d?narHash=sha256-THAk4qzBOsp03bDBYK9Ek3mQEvl2g8Fea0QhpCoEzfs%3D' (2025-10-19)
  → 'github:nix-community/neovim-nightly-overlay/d31b28318affe5d58ef12e7f72a7adfa66930a7a?narHash=sha256-pxxUR3VRDcDpMgF1qb9FnlHAEOGi24bk6pdB1QzL1II%3D' (2026-01-10)
• Removed input 'neovim-nightly-overlay/flake-compat'
• Updated input 'neovim-nightly-overlay/flake-parts':
    'github:hercules-ci/flake-parts/4e627ac2e1b8f1de7f5090064242de9a259dbbc8?narHash=sha256-lbHQ7FXGzt6/IygWvJ1lCq%2BTxcut3xYYd6VIpF1ojkg%3D' (2025-10-18)
  → 'github:hercules-ci/flake-parts/250481aafeb741edfe23d29195671c19b36b6dca?narHash=sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY%3D' (2026-01-05)
• Removed input 'neovim-nightly-overlay/git-hooks'
• Removed input 'neovim-nightly-overlay/git-hooks/flake-compat'
• Removed input 'neovim-nightly-overlay/git-hooks/gitignore'
• Removed input 'neovim-nightly-overlay/git-hooks/gitignore/nixpkgs'
• Removed input 'neovim-nightly-overlay/git-hooks/nixpkgs'
• Removed input 'neovim-nightly-overlay/hercules-ci-effects'
• Removed input 'neovim-nightly-overlay/hercules-ci-effects/flake-parts'
• Removed input 'neovim-nightly-overlay/hercules-ci-effects/nixpkgs'
• Updated input 'neovim-nightly-overlay/neovim-src':
    'github:neovim/neovim/be73c35943f85e7835c3a0fc89bddaeba944db29?narHash=sha256-VYkZdjjMOYsugoSydDDWE/1l79swm4zc4NJl1Z0brjA%3D' (2025-10-18)
  → 'github:neovim/neovim/930817f1009d9d392103b5440e2503cb47fdacc0?narHash=sha256-hcdQHR8l8oZDIl0vXKNtbrN%2B32dTs9EYvlqppoHgG2k%3D' (2026-01-09)
• Removed input 'neovim-nightly-overlay/treefmt-nix'
• Removed input 'neovim-nightly-overlay/treefmt-nix/nixpkgs'
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/6a3b08503e9cab108f9f0ec27065c5854655662a?narHash=sha256-Il5%2B67iRA3xp0cIErILj4VwEJ2ICrDrvTAHEmBsZJKQ%3D' (2025-10-19)
  → 'github:NixOS/nixpkgs/299d331f770cdf7c466a4faa08b3070a767d681d?narHash=sha256-V7El1ktdJ0/WWEr6wGBKFYu433vitrWvxmvPk79FsSc%3D' (2026-01-10)
• Updated input 'nvim-treesitter-main':
    'github:iofq/nvim-treesitter-main/420c14c0523d65c6c7ce943e8f2fb896eff950e3?narHash=sha256-WJScDX0q/%2BPCRpvBSlJfV01kwvu9WCk5YDpzW2Zswj8%3D' (2025-10-19)
  → 'github:iofq/nvim-treesitter-main/d82b04e1a05f88ed88c6221672ca0636dc8d6ef7?narHash=sha256-ej7y4nhiJNFE/HcZSPTEIrU6/WQmkMJo%2BbVQfgT3abE%3D' (2026-01-06)
• Updated input 'nvim-treesitter-main/nixpkgs':
    'github:nixos/nixpkgs/544961dfcce86422ba200ed9a0b00dd4b1486ec5?narHash=sha256-EVAqOteLBFmd7pKkb0%2BFIUyzTF61VKi7YmvP1tw4nEw%3D' (2025-10-15)
  → 'github:nixos/nixpkgs/fb7944c166a3b630f177938e478f0378e64ce108?narHash=sha256-EgE0pxsrW9jp9YFMkHL9JMXxcqi/OoumPJYwf%2BOkucw%3D' (2026-01-02)
• Updated input 'nvim-treesitter-main/nvim-treesitter':
    'github:nvim-treesitter/nvim-treesitter/71bf1665f804d46f7e4b24ad7ffc11f6ea5b271a?narHash=sha256-ZeNCXy6%2BI18N%2BNu2sKnEk2otVEb8V3tKhL8Jq95wS5k%3D' (2025-10-19)
  → 'github:nvim-treesitter/nvim-treesitter/300b906a9514d5e0ce02911d371445382fe35a31?narHash=sha256-LX0rKTZ56Rp0uQfIXZ2JrcWxuCA/t8NJjK05aKiT0Yw%3D' (2026-01-03)
• Updated input 'nvim-treesitter-main/nvim-treesitter-textobjects':
    'github:nvim-treesitter/nvim-treesitter-textobjects/1b2d85d3de6114c4bcea89ffb2cd1ce9e3a19931?narHash=sha256-%2BKmOpRi4JAqm6UqYdtk80jwFrJhLCs0lZM/Liofq0R4%3D' (2025-08-28)
  → 'github:nvim-treesitter/nvim-treesitter-textobjects/28a3494c075ef0f353314f627546537e43c09592?narHash=sha256-5VeIAW09my%2B4fqXbzVG7RnLXrjpXAk/g2vd7RbhNws8%3D' (2026-01-03)
2026-01-09 23:08:24 -06:00
63f5dd46e9 flake.lock: Update
Some checks failed
build / build (nvim) (push) Has been cancelled
Flake lock file updates:

• Updated input 'dart':
    'github:iofq/dart.nvim/8822aabbfef95eda2b22a8f7ee08912c762ef941?narHash=sha256-ADZ2b2Oz%2BMOSjdKKCcQX9KmlhtmvVlZFEJr0HigWsOY%3D' (2025-11-01)
  → 'github:iofq/dart.nvim/205f809fbb27d56aff22756a97b5ba6f0c7243c3?narHash=sha256-lLY34wnbyzi21zE8i%2BVM0AoEt67r4aPn/EoaZ8o4NgU%3D' (2025-12-07)
• Updated input 'neovim-nightly-overlay':
    'github:nix-community/neovim-nightly-overlay/2c33f92a62588cd30dbba26fa39384e29229bc6f?narHash=sha256-h3c8Mcs4wI0U9JKzDyj1X%2BJUMc5KsfIXu2eyRE5ktAs%3D' (2025-11-09)
  → 'github:nix-community/neovim-nightly-overlay/f7fbc4e3d4ccea45eaa5b187884592eb42dfdbbd?narHash=sha256-YMf/PUyY4z7RlIe/Dzn1NnxZGS0Vp2eHxcMNWJM9q%2BA%3D' (2025-12-18)
• Updated input 'neovim-nightly-overlay/flake-parts':
    'github:hercules-ci/flake-parts/26d05891e14c88eb4a5d5bee659c0db5afb609d8?narHash=sha256-xxdepIcb39UJ94%2BYydGP221rjnpkDZUlykKuF54PsqI%3D' (2025-11-06)
  → 'github:hercules-ci/flake-parts/a34fae9c08a15ad73f295041fec82323541400a9?narHash=sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw%3D' (2025-12-15)
• Updated input 'neovim-nightly-overlay/neovim-src':
    'github:neovim/neovim/ded578625219d5056fdacdba4b04f0d5bf4fbe9d?narHash=sha256-npSk%2BFSPkiaGwKTluegZ3tXqDpe3EFiRMQJ2Cc6rq4Y%3D' (2025-11-08)
  → 'github:neovim/neovim/c172fd9f464d5766eab9071e8f4770504c920c05?narHash=sha256-KE/ufBGH8XFXTw3Vt1DrK1rQmAEp1Q%2BoyLQibX5UKO0%3D' (2025-12-17)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/cdfa60cc7448c7943dd3feb0ab18e342d569c7a4?narHash=sha256-kGEigbGxzpXpyeU9BtILXsMwTls5XcLyXEwYVfNjO4g%3D' (2025-11-09)
  → 'github:NixOS/nixpkgs/1306659b587dc277866c7b69eb97e5f07864d8c4?narHash=sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4%3D' (2025-12-15)
• Updated input 'nvim-treesitter-main':
    'github:iofq/nvim-treesitter-main/69e9583fe72fa2dbffcb740563a9cc48396e3f75?narHash=sha256-hRGD%2BCE04Z1qAJAaiJs6o%2BblS0WUEqfVS/5cqA0NcDI%3D' (2025-11-09)
  → 'github:iofq/nvim-treesitter-main/2e8b5c686fc346c34b1d2a269584b32f480e7b7f?narHash=sha256-%2BUw%2B965kDJTriyUGiYF/eYAuQBowoBZpLzJswInqLCY%3D' (2025-12-14)
• Updated input 'nvim-treesitter-main/nixpkgs':
    'github:nixos/nixpkgs/ae814fd3904b621d8ab97418f1d0f2eb0d3716f4?narHash=sha256-YRqMDEtSMbitIMj%2BJLpheSz0pwEr0Rmy5mC7myl17xs%3D' (2025-11-05)
  → 'github:nixos/nixpkgs/2fbfb1d73d239d2402a8fe03963e37aab15abe8b?narHash=sha256-9VvC20PJPsleGMewwcWYKGzDIyjckEz8uWmT0vCDYK0%3D' (2025-12-11)
• Updated input 'nvim-treesitter-main/nvim-treesitter':
    'github:nvim-treesitter/nvim-treesitter/d97d226cfd4c00af000b3b8529261352677fc6a8?narHash=sha256-hXs9TdytYtBeXW6nx9QZiQcqsuj1uLuZMf8kclaScQ8%3D' (2025-11-08)
  → 'github:nvim-treesitter/nvim-treesitter/74b119812e9f82bccc2f0eca156faff0354362ae?narHash=sha256-HT%2BUzX1m4hm2QAqDa0dltArr3gMyYhXHnHoYkkQBWZA%3D' (2025-12-13)
• Updated input 'nvim-treesitter-main/nvim-treesitter-textobjects':
    'github:nvim-treesitter/nvim-treesitter-textobjects/7024f8687b060dd9a425bde1fa8621c896a38138?narHash=sha256-gzeT2gtmFaXhRSC13mijH6tlk/eWRZaUrGiEpKoAorA%3D' (2025-11-08)
  → 'github:nvim-treesitter/nvim-treesitter-textobjects/0d7c800fadcfe2d33089f5726cb8907fc846eece?narHash=sha256-w2dzc5oWyEoPUgbqaAuNKCeFeh81rYJPOCPVRnFC724%3D' (2025-12-14)
2025-12-18 00:14:36 -06:00
8fc4e6a407 flake.lock: Update
Some checks failed
build / build (nvim) (push) Has been cancelled
Flake lock file updates:

• Updated input 'dart':
    'github:iofq/dart.nvim/71421e7ef5aee8267e24dc562fdd07a83bda192e?narHash=sha256-ULrZW4b8SKRvPpJPt8/jkqqc/blQiIWUriNWVXA33so%3D' (2025-10-23)
  → 'github:iofq/dart.nvim/8822aabbfef95eda2b22a8f7ee08912c762ef941?narHash=sha256-ADZ2b2Oz%2BMOSjdKKCcQX9KmlhtmvVlZFEJr0HigWsOY%3D' (2025-11-01)
• Updated input 'neovim-nightly-overlay':
    'github:nix-community/neovim-nightly-overlay/21595d9f79b5da0eef177dcfdd84ca981ac253a9?narHash=sha256-X4SNeOXdFkE7Gt%2BwaO5ck3TqfqWskqJHxt1WIu3nnUQ%3D' (2025-10-26)
  → 'github:nix-community/neovim-nightly-overlay/2c33f92a62588cd30dbba26fa39384e29229bc6f?narHash=sha256-h3c8Mcs4wI0U9JKzDyj1X%2BJUMc5KsfIXu2eyRE5ktAs%3D' (2025-11-09)
• Removed input 'neovim-nightly-overlay/flake-compat'
• Updated input 'neovim-nightly-overlay/flake-parts':
    'github:hercules-ci/flake-parts/864599284fc7c0ba6357ed89ed5e2cd5040f0c04?narHash=sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4%3D' (2025-10-20)
  → 'github:hercules-ci/flake-parts/26d05891e14c88eb4a5d5bee659c0db5afb609d8?narHash=sha256-xxdepIcb39UJ94%2BYydGP221rjnpkDZUlykKuF54PsqI%3D' (2025-11-06)
• Removed input 'neovim-nightly-overlay/git-hooks'
• Removed input 'neovim-nightly-overlay/git-hooks/flake-compat'
• Removed input 'neovim-nightly-overlay/git-hooks/gitignore'
• Removed input 'neovim-nightly-overlay/git-hooks/gitignore/nixpkgs'
• Removed input 'neovim-nightly-overlay/git-hooks/nixpkgs'
• Removed input 'neovim-nightly-overlay/hercules-ci-effects'
• Removed input 'neovim-nightly-overlay/hercules-ci-effects/flake-parts'
• Removed input 'neovim-nightly-overlay/hercules-ci-effects/nixpkgs'
• Updated input 'neovim-nightly-overlay/neovim-src':
    'github:neovim/neovim/a121ede1bfee2704c26159124f8f61f96c6aa136?narHash=sha256-S%2BYmbP/bPETjKk6B/tlh%2BjwIH7K7iPoXyHLLwTqVOhk%3D' (2025-10-25)
  → 'github:neovim/neovim/ded578625219d5056fdacdba4b04f0d5bf4fbe9d?narHash=sha256-npSk%2BFSPkiaGwKTluegZ3tXqDpe3EFiRMQJ2Cc6rq4Y%3D' (2025-11-08)
• Removed input 'neovim-nightly-overlay/treefmt-nix'
• Removed input 'neovim-nightly-overlay/treefmt-nix/nixpkgs'
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/887b4accbb94043a752c086c2aae6c6b365f7b3f?narHash=sha256-aK%2BBZgnXKktKD1DFAJoB%2B8KD9L8sf/dmiOa2bShlhlk%3D' (2025-10-26)
  → 'github:NixOS/nixpkgs/cdfa60cc7448c7943dd3feb0ab18e342d569c7a4?narHash=sha256-kGEigbGxzpXpyeU9BtILXsMwTls5XcLyXEwYVfNjO4g%3D' (2025-11-09)
• Updated input 'nvim-treesitter-main':
    'github:iofq/nvim-treesitter-main/834d66648bb7a96a2ad11d53a33f2d9b13766447?narHash=sha256-xTQUiJu0jJNSEHEv4La1HbaFokup0eWr67Kqf/wDENA%3D' (2025-10-26)
  → 'github:iofq/nvim-treesitter-main/69e9583fe72fa2dbffcb740563a9cc48396e3f75?narHash=sha256-hRGD%2BCE04Z1qAJAaiJs6o%2BblS0WUEqfVS/5cqA0NcDI%3D' (2025-11-09)
• Updated input 'nvim-treesitter-main/nixpkgs':
    'github:nixos/nixpkgs/01f116e4df6a15f4ccdffb1bcd41096869fb385c?narHash=sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d%2BdAiC3H%2BCDle4%3D' (2025-10-22)
  → 'github:nixos/nixpkgs/ae814fd3904b621d8ab97418f1d0f2eb0d3716f4?narHash=sha256-YRqMDEtSMbitIMj%2BJLpheSz0pwEr0Rmy5mC7myl17xs%3D' (2025-11-05)
• Updated input 'nvim-treesitter-main/nvim-treesitter':
    'github:nvim-treesitter/nvim-treesitter/98fe644cb3b5ba390d1bc3f89299f93c70020803?narHash=sha256-/SGikTPEMxI7rcfGvuJlNZs73/wZiQx14QX9xlfsTv0%3D' (2025-10-25)
  → 'github:nvim-treesitter/nvim-treesitter/d97d226cfd4c00af000b3b8529261352677fc6a8?narHash=sha256-hXs9TdytYtBeXW6nx9QZiQcqsuj1uLuZMf8kclaScQ8%3D' (2025-11-08)
• Updated input 'nvim-treesitter-main/nvim-treesitter-textobjects':
    'github:nvim-treesitter/nvim-treesitter-textobjects/1b2d85d3de6114c4bcea89ffb2cd1ce9e3a19931?narHash=sha256-%2BKmOpRi4JAqm6UqYdtk80jwFrJhLCs0lZM/Liofq0R4%3D' (2025-08-28)
  → 'github:nvim-treesitter/nvim-treesitter-textobjects/7024f8687b060dd9a425bde1fa8621c896a38138?narHash=sha256-gzeT2gtmFaXhRSC13mijH6tlk/eWRZaUrGiEpKoAorA%3D' (2025-11-08)
2025-11-09 10:13:55 -06:00
c8d9279372 combine diffs 2025-11-09 10:13:05 -06:00
a004f24728 jj file hist 2025-10-23 03:10:31 -05:00
ce017fd37c fix os.execute return
Some checks failed
build / build (nvim-min) (push) Has been cancelled
2025-10-15 19:53:57 -05:00
35b0e05965 fix local flake path 2025-10-15 19:41:31 -05:00
49e373fe9a remove unused nix code
Some checks are pending
build / build (nvim-min) (push) Waiting to run
flake.lock: Update

Flake lock file updates:

• Updated input 'neovim-nightly-overlay':
    'github:nix-community/neovim-nightly-overlay/b7b3632fab34541543373254c265da03c1d0f240?narHash=sha256-SDLZMha2miaChOBGBkQJlTtk2kvcB7WIVVZ2l0/9byc%3D' (2025-10-01)
  → 'github:nix-community/neovim-nightly-overlay/7ff73a295b0065bde2f8b43b31558136ca77bd98?narHash=sha256-39JFRb006AOsIcOq%2B03H3y6YcGyaphk1CW5DRi14cOE%3D' (2025-10-13)
• Updated input 'neovim-nightly-overlay/flake-parts':
    'github:hercules-ci/flake-parts/4524271976b625a4a605beefd893f270620fd751?narHash=sha256-%2BuWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw%3D' (2025-09-01)
  → 'github:hercules-ci/flake-parts/758cf7296bee11f1706a574c77d072b8a7baa881?narHash=sha256-wfG0S7pltlYyZTM%2BqqlhJ7GMw2fTF4mLKCIVhLii/4M%3D' (2025-10-01)
• Updated input 'neovim-nightly-overlay/git-hooks':
    'github:cachix/git-hooks.nix/54df955a695a84cd47d4a43e08e1feaf90b1fd9b?narHash=sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo%3D' (2025-09-17)
  → 'github:cachix/git-hooks.nix/cfc9f7bb163ad8542029d303e599c0f7eee09835?narHash=sha256-PTod9NG%2Bi3XbbnBKMl/e5uHDBYpwIWivQ3gOWSEuIEM%3D' (2025-10-03)
• Updated input 'neovim-nightly-overlay/neovim-src':
    'github:neovim/neovim/198c9e9bca7549cf7110be8c6f1df1c38d4e747f?narHash=sha256-oc1pPeoe8458X0r/Wum8CucVcJLlIp4mg%2B1HiOSVRgA%3D' (2025-09-30)
  → 'github:neovim/neovim/72b0bfa1fb7e897e5126aabae718a5480f466b9e?narHash=sha256-RnB%2BoJcP37YT9pjr1osUQtJc%2B1qcVyaaeSbiSyXwm1Y%3D' (2025-10-12)
• Updated input 'neovim-nightly-overlay/nixpkgs':
    'github:NixOS/nixpkgs/647e5c14cbd5067f44ac86b74f014962df460840?narHash=sha256-JVZl8NaVRYb0%2B381nl7LvPE%2BA774/dRpif01FKLrYFQ%3D' (2025-09-28)
  → 'github:NixOS/nixpkgs/362791944032cb532aabbeed7887a441496d5e6e?narHash=sha256-gKl2Gtro/LNf8P%2B4L3S2RsZ0G390ccd5MyXYrTdMCFE%3D' (2025-10-11)
• Updated input 'neovim-nightly-overlay/treefmt-nix':
    'github:numtide/treefmt-nix/5eda4ee8121f97b218f7cc73f5172098d458f1d1?narHash=sha256-ySNJ008muQAds2JemiyrWYbwbG%2BV7S5wg3ZVKGHSFu8%3D' (2025-09-24)
  → 'github:numtide/treefmt-nix/761ae7aff00907b607125b2f57338b74177697ed?narHash=sha256-gq9rdocpmRZCwLS5vsHozwB6b5nrOBDNc2kkEaTXHfg%3D' (2025-10-10)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/d48b56f4899ee1d5377291576284969c9e37acc2?narHash=sha256-7G5fSMPNVwWNlFpZLwvKB8PUOaqPzFQbrtZ7RAzg2nw%3D' (2025-10-01)
  → 'github:NixOS/nixpkgs/09c05674757a82f32b67f70f702e56c4901a3cdd?narHash=sha256-IzUhHp/jU06jBW6S%2Bd12AO3sgq5yehYVTCBH7J6re5c%3D' (2025-10-13)

flake.lock: Update

Flake lock file updates:

• Updated input 'neovim-nightly-overlay/nixpkgs':
    'github:NixOS/nixpkgs/362791944032cb532aabbeed7887a441496d5e6e?narHash=sha256-gKl2Gtro/LNf8P%2B4L3S2RsZ0G390ccd5MyXYrTdMCFE%3D' (2025-10-11)
  → follows 'nixpkgs'
2025-10-15 02:49:58 -05:00
8922491578 migrate from lazy in anticipation of vim.pack 2025-10-06 22:52:13 -05:00
31f7ee21e8 remove mini.sessions/jj 2025-10-05 14:01:20 -05:00
27ce531531 random cleanups 2025-10-05 13:08:16 -05:00
095e78128b nvim-ts-main 2025-10-04 17:05:13 -05:00
ac26b74e43 ensure plugins are exported in overlay 2025-08-19 23:01:58 -05:00
cjurgell
7165161856 fix ts 2025-08-14 00:54:10 -05:00
58c0637b78 use qflist for lsp 2025-08-13 01:12:34 -05:00
24b44e172f flake.lock: Update
Flake lock file updates:

• Updated input 'gen-luarc':
    'github:mrcjkb/nix-gen-luarc-json/b36b69c4ded9f31b079523bc452e23458734cf00' (2024-08-19)
  → 'github:mrcjkb/nix-gen-luarc-json/4b8d4da04808062e2b1ef0e7bcd0a03bcb93e043' (2025-08-07)
• Updated input 'neovim-nightly-overlay':
    'github:nix-community/neovim-nightly-overlay/e63079523e06e0b7d8d766d40573409d2c5ecc9d' (2025-07-21)
  → 'github:nix-community/neovim-nightly-overlay/83aaf3085f808dec9ea1b5d16b216875a8081b37' (2025-08-08)
• Updated input 'neovim-nightly-overlay/flake-parts':
    'github:hercules-ci/flake-parts/77826244401ea9de6e3bac47c2db46005e1f30b5?narHash=sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ%3D' (2025-07-01)
  → 'github:hercules-ci/flake-parts/af66ad14b28a127c5c0f3bbb298218fc63528a18?narHash=sha256-pHYj8gUBapuUzKV/kN/tR3Zvqc7o6gdFB9XKXIp1SQ8%3D' (2025-08-06)
• Updated input 'neovim-nightly-overlay/git-hooks':
    'github:cachix/git-hooks.nix/16ec914f6fb6f599ce988427d9d94efddf25fe6d?narHash=sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg%3D' (2025-06-24)
  → 'github:cachix/git-hooks.nix/9c52372878df6911f9afc1e2a1391f55e4dfc864?narHash=sha256-c6yg0EQ9xVESx6HGDOCMcyRSjaTpNJP10ef%2B6fRcofA%3D' (2025-08-05)
• Updated input 'neovim-nightly-overlay/git-hooks/flake-compat':
    'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33?narHash=sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U%3D' (2023-10-04)
  → 'github:edolstra/flake-compat/9100a0f413b0c601e0533d1d94ffd501ce2e7885?narHash=sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX%2BfjA8Xf8PUmqCY%3D' (2025-05-12)
• Updated input 'neovim-nightly-overlay/neovim-src':
    'github:neovim/neovim/8ee82da3cfd228d50816aeb5f5db22175f5a4ede?narHash=sha256-VHCJ/E%2B3iI5pH20rW%2Baqq830erPrAzTfOT8Wndax2pI%3D' (2025-07-20)
  → 'github:neovim/neovim/038eb01b41b66379f75164507571497929f8847c?narHash=sha256-ORfF40X4BGiFxnLNQbdsQbUTW4TkUHfPqyZWHaYL5NE%3D' (2025-08-07)
• Updated input 'neovim-nightly-overlay/nixpkgs':
    'github:NixOS/nixpkgs/6b4955211758ba47fac850c040a27f23b9b4008f?narHash=sha256-dPALCtmik9Wr14MGqVXm%2BOQcv7vhPBXcWNIOThGnB/Q%3D' (2025-07-19)
  → 'github:NixOS/nixpkgs/a683adc19ff5228af548c6539dbc3440509bfed3?narHash=sha256-fbnmAwTQkuXHKBlcL5Nq1sMAzd3GFqCOQgEQw6Hy0Ak%3D' (2025-08-05)
• Updated input 'neovim-nightly-overlay/treefmt-nix':
    'github:numtide/treefmt-nix/421b56313c65a0815a52b424777f55acf0b56ddf?narHash=sha256-tzbhc4XttkyEhswByk5R38l%2BztN9UDbnj0cTcP6Hp9A%3D' (2025-07-20)
  → 'github:numtide/treefmt-nix/1298185c05a56bff66383a20be0b41a307f52228?narHash=sha256-B%2B3g9%2B76KlGe34Yk9za8AF3RL%2BlnbHXkLiVHLjYVOAc%3D' (2025-08-06)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/78fcdb5d8e08a2d449739aa4796417f2e6cf5724' (2025-07-22)
  → 'github:NixOS/nixpkgs/defc725219d1fb9b56662370e014012929e557af' (2025-08-11)
• Updated input 'nvim-treesitter':
    'github:nvim-treesitter/nvim-treesitter/4eb35c03443742a4c3b2db13d36da9cddb6268c3' (2025-08-06)
  → 'github:nvim-treesitter/nvim-treesitter/9866036ec3c5db40700a9178494e0cfdcfe6ecfd' (2025-08-08)
2025-08-11 01:34:47 -05:00
d01db43a23 autopairs + cleanup 2025-08-10 21:39:11 -05:00
4b7636090f dart persist + picker 2025-08-07 02:14:14 -05:00
9457c7436e custom dart tabline 2025-07-29 02:41:15 -05:00
d7ae87e671
nixfmt, callHierarchy 2025-07-23 02:30:26 -05:00
ec4206b55a
flake.lock: Update
Flake lock file updates:

• Updated input 'neovim-nightly-overlay':
    'github:nix-community/neovim-nightly-overlay/a4252dd30a64aef3fa59ad1f9ded862381df117a' (2025-07-06)
  → 'github:nix-community/neovim-nightly-overlay/e63079523e06e0b7d8d766d40573409d2c5ecc9d' (2025-07-21)
• Updated input 'neovim-nightly-overlay/hercules-ci-effects':
    'github:hercules-ci/hercules-ci-effects/231726642197817d20310b9d39dd4afb9e899489?narHash=sha256-EaAJhwfJGBncgIV/0NlJviid2DP93cTMc9h0q6P6xXk%3D' (2025-05-23)
  → 'github:hercules-ci/hercules-ci-effects/5f2e09654b2e70ba643e41609d9f9b6640f22113?narHash=sha256-CNBgr4OZSuklGtNOa9CnTNo9%2BXceqn/EDAC1Tc43fH8%3D' (2025-07-15)
• Updated input 'neovim-nightly-overlay/hercules-ci-effects/flake-parts':
    'github:hercules-ci/flake-parts/c621e8422220273271f52058f618c94e405bb0f5?narHash=sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY%3D' (2025-04-01)
  → 'github:hercules-ci/flake-parts/77826244401ea9de6e3bac47c2db46005e1f30b5?narHash=sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ%3D' (2025-07-01)
• Updated input 'neovim-nightly-overlay/neovim-src':
    'github:neovim/neovim/8fe4e120a2de558fddbb91ba5438d78f3dbd926a?narHash=sha256-z2PkkcUBuO5IWQrra034YBl8ioerkHXHai9GCeoaRuM%3D' (2025-07-05)
  → 'github:neovim/neovim/8ee82da3cfd228d50816aeb5f5db22175f5a4ede?narHash=sha256-VHCJ/E%2B3iI5pH20rW%2Baqq830erPrAzTfOT8Wndax2pI%3D' (2025-07-20)
• Updated input 'neovim-nightly-overlay/nixpkgs':
    'github:NixOS/nixpkgs/c860cf0b3a0829f0f6cf344ca8de83a2bbfab428?narHash=sha256-4E7wWftF1ExK5ZEDzj41%2B9mVgxtuRV3wWCId7QAYMAU%3D' (2025-07-04)
  → 'github:NixOS/nixpkgs/6b4955211758ba47fac850c040a27f23b9b4008f?narHash=sha256-dPALCtmik9Wr14MGqVXm%2BOQcv7vhPBXcWNIOThGnB/Q%3D' (2025-07-19)
• Updated input 'neovim-nightly-overlay/treefmt-nix':
    'github:numtide/treefmt-nix/ac8e6f32e11e9c7f153823abc3ab007f2a65d3e1?narHash=sha256-0IEdQB1nS%2BuViQw4k3VGUXntjkDp7aAlqcxdewb/hAc%3D' (2025-06-26)
  → 'github:numtide/treefmt-nix/421b56313c65a0815a52b424777f55acf0b56ddf?narHash=sha256-tzbhc4XttkyEhswByk5R38l%2BztN9UDbnj0cTcP6Hp9A%3D' (2025-07-20)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/27d6791b2e2a167105e8545fc92ee0edabe4a9e5' (2025-07-06)
  → 'github:NixOS/nixpkgs/78fcdb5d8e08a2d449739aa4796417f2e6cf5724' (2025-07-22)
2025-07-23 02:30:25 -05:00
ac39b0585d
snacks + tabline changes 2025-07-23 02:30:19 -05:00
cjurgell
97d6553252 mini.files open in buffer cwd 2025-07-17 16:21:22 -05:00
0c18f504e8
completion and snacks tweaks 2025-07-16 07:48:00 -05:00
d998429cb8
snacks rice + new colorscheme 2025-07-07 12:38:17 -05:00
66d50e274e
flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/11707dc2f618dd54ca8739b309ec4fc024de578b?narHash=sha256-l0KFg5HjrsfsO/JpG%2Br7fRrqm12kzFHyUHqHCVpMMbI%3D' (2024-11-13)
  → 'github:numtide/flake-utils/11707dc2f618dd54ca8739b309ec4fc024de578b' (2024-11-13)
• Updated input 'gen-luarc':
    'github:mrcjkb/nix-gen-luarc-json/b36b69c4ded9f31b079523bc452e23458734cf00?narHash=sha256-Q4tgm8ZHAQUdvsNft86MqIbHQAm7OF7RT/wwYWXqSdY%3D' (2024-08-19)
  → 'github:mrcjkb/nix-gen-luarc-json/b36b69c4ded9f31b079523bc452e23458734cf00' (2024-08-19)
• Updated input 'neovim-nightly-overlay':
    'github:nix-community/neovim-nightly-overlay/d9f4e3e5952e267e8399b15759bbec90019f4515?narHash=sha256-IxbIMd6Z2%2BFPb9QCo95lJ4qcqaAYitSxB5Z%2Bh3rM2Qo%3D' (2025-06-24)
  → 'github:nix-community/neovim-nightly-overlay/a4252dd30a64aef3fa59ad1f9ded862381df117a' (2025-07-06)
• Updated input 'neovim-nightly-overlay/flake-parts':
    'github:hercules-ci/flake-parts/9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569?narHash=sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98%3D' (2025-06-08)
  → 'github:hercules-ci/flake-parts/77826244401ea9de6e3bac47c2db46005e1f30b5?narHash=sha256-Tyw1RjYEsp5scoigs1384gIg6e0GoBVjms4aXFfRssQ%3D' (2025-07-01)
• Updated input 'neovim-nightly-overlay/git-hooks':
    'github:cachix/git-hooks.nix/fae816c55a75675f30d18c9cbdecc13b970d95d4?narHash=sha256-uLtw0iF9mQ94L831NOlQLPX9wm0qzd5yim3rcwACEoM%3D' (2025-06-23)
  → 'github:cachix/git-hooks.nix/16ec914f6fb6f599ce988427d9d94efddf25fe6d?narHash=sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg%3D' (2025-06-24)
• Updated input 'neovim-nightly-overlay/neovim-src':
    'github:neovim/neovim/7f3249fa0de06cdcf4be1ed5f260d83cd9021dee?narHash=sha256-li7cZUSJUhvjXC09GYS6u5PxBoVk2PGvqcdmINUGnhU%3D' (2025-06-23)
  → 'github:neovim/neovim/8fe4e120a2de558fddbb91ba5438d78f3dbd926a?narHash=sha256-z2PkkcUBuO5IWQrra034YBl8ioerkHXHai9GCeoaRuM%3D' (2025-07-05)
• Updated input 'neovim-nightly-overlay/nixpkgs':
    'github:NixOS/nixpkgs/3078b9a9e75f1790e6d6ef9955fdc6a2d1740cc6?narHash=sha256-xT8cPLTxlktxI9vSdoBlAVK7dXgd8IK59j7ZwzkkhnI%3D' (2025-06-22)
  → 'github:NixOS/nixpkgs/c860cf0b3a0829f0f6cf344ca8de83a2bbfab428?narHash=sha256-4E7wWftF1ExK5ZEDzj41%2B9mVgxtuRV3wWCId7QAYMAU%3D' (2025-07-04)
• Updated input 'neovim-nightly-overlay/treefmt-nix':
    'github:numtide/treefmt-nix/a05be418a1af1198ca0f63facb13c985db4cb3c5?narHash=sha256-eEy8cuS0mZ2j/r/FE0/LYBSBcIs/MKOIVakwHVuqTfk%3D' (2025-06-06)
  → 'github:numtide/treefmt-nix/ac8e6f32e11e9c7f153823abc3ab007f2a65d3e1?narHash=sha256-0IEdQB1nS%2BuViQw4k3VGUXntjkDp7aAlqcxdewb/hAc%3D' (2025-06-26)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/8ad467f6d5f3533c961e456a43948373f41a98da?narHash=sha256-b5ISt1FZCnYf%2BqhWFu3wc39zl0jlZNEXudzWHD0dsV0%3D' (2025-06-24)
  → 'github:NixOS/nixpkgs/27d6791b2e2a167105e8545fc92ee0edabe4a9e5' (2025-07-06)
2025-07-06 12:47:24 -05:00
5f5ac17935
no more copilot 2025-07-06 12:47:24 -05:00
d360f0e701
no more oil 2025-07-06 12:47:18 -05:00
cjurgell
285df2df53 fix snacks duplicate path bug 2025-06-30 13:20:51 -05:00
c46a229713
cleanup, mini rice 2025-06-29 23:40:36 -05:00
cjurgell
3231eec14e cleanup bundle size 2025-06-24 11:42:58 -05:00
cjurgell
1a0651a896 allow dd in qf 2025-06-24 10:53:17 -05:00
4dbe1e026e
flake.lock: Update
Flake lock file updates:

• Updated input 'mini-nvim':
    'github:echasnovski/mini.nvim/3f5d06a6f710966cb93baaadc4897eeb6d6210e5?narHash=sha256-vR8sOlGEST8SlknAtvfsP3j40rZaS5Jed8FwDdCBP94%3D' (2025-06-14)
  → 'github:echasnovski/mini.nvim/1b32a3f61f1f649cadc748bd4b7a32b4b4785d29?narHash=sha256-cfgANg0vRJg31x%2BBiSfYhwBSyQnYt/aRDx6%2BBaS0YYY%3D' (2025-06-22)
• Updated input 'neovim-nightly-overlay':
    'github:nix-community/neovim-nightly-overlay/5b231a9c0efd15547569bd753dbec420b90c8c98?narHash=sha256-wGa5HXzU9lK4Q7ODv8/n5oY/QbIl8R2wUyDxcLsV3B4%3D' (2025-06-17)
  → 'github:nix-community/neovim-nightly-overlay/d9f4e3e5952e267e8399b15759bbec90019f4515?narHash=sha256-IxbIMd6Z2%2BFPb9QCo95lJ4qcqaAYitSxB5Z%2Bh3rM2Qo%3D' (2025-06-24)
• Updated input 'neovim-nightly-overlay/git-hooks':
    'github:cachix/git-hooks.nix/623c56286de5a3193aa38891a6991b28f9bab056?narHash=sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4%3D' (2025-06-11)
  → 'github:cachix/git-hooks.nix/fae816c55a75675f30d18c9cbdecc13b970d95d4?narHash=sha256-uLtw0iF9mQ94L831NOlQLPX9wm0qzd5yim3rcwACEoM%3D' (2025-06-23)
• Updated input 'neovim-nightly-overlay/neovim-src':
    'github:neovim/neovim/3e984cf02bdcebe2d4f31792505b6a3784fd1b1b?narHash=sha256-JTG1BFIIKmFfuT%2BsIhwrphAIjREgV4FfRcyuztr89P0%3D' (2025-06-16)
  → 'github:neovim/neovim/7f3249fa0de06cdcf4be1ed5f260d83cd9021dee?narHash=sha256-li7cZUSJUhvjXC09GYS6u5PxBoVk2PGvqcdmINUGnhU%3D' (2025-06-23)
• Updated input 'neovim-nightly-overlay/nixpkgs':
    'github:NixOS/nixpkgs/41da1e3ea8e23e094e5e3eeb1e6b830468a7399e?narHash=sha256-jp0D4vzBcRKwNZwfY4BcWHemLGUs4JrS3X9w5k/JYDA%3D' (2025-06-14)
  → 'github:NixOS/nixpkgs/3078b9a9e75f1790e6d6ef9955fdc6a2d1740cc6?narHash=sha256-xT8cPLTxlktxI9vSdoBlAVK7dXgd8IK59j7ZwzkkhnI%3D' (2025-06-22)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/9e83b64f727c88a7711a2c463a7b16eedb69a84c?narHash=sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI%3D' (2025-06-17)
  → 'github:NixOS/nixpkgs/8ad467f6d5f3533c961e456a43948373f41a98da?narHash=sha256-b5ISt1FZCnYf%2BqhWFu3wc39zl0jlZNEXudzWHD0dsV0%3D' (2025-06-24)
• Updated input 'nixpkgs-uns':
    'github:NixOS/nixpkgs/ee930f9755f58096ac6e8ca94a1887e0534e2d81?narHash=sha256-Kh9K4taXbVuaLC0IL%2B9HcfvxsSUx8dPB5s5weJcc9pc%3D' (2025-06-13)
  → 'github:NixOS/nixpkgs/4206c4cb56751df534751b058295ea61357bbbaa?narHash=sha256-VLFNc4egNjovYVxDGyBYTrvVCgDYgENp5bVi9fPTDYc%3D' (2025-06-21)
2025-06-24 02:29:44 -05:00
75c09a73ff
even more jj mini/snacks rice 2025-06-24 02:29:38 -05:00
83f9f90f1f
jj mini/snacks rice 2025-06-21 04:01:45 -05:00
3132ae3d98
bqf 2025-06-19 04:12:55 -05:00
5a884a48c2
flake.lock: Update
Flake lock file updates:

• Updated input 'mini-nvim':
    'github:echasnovski/mini.nvim/35e1767f4cd7dde51256eabae7349a5283a43cba?narHash=sha256-U6QkqrvmxEERLgrc3roBxMuNc8Djuxk/wOuH/Hwmu1M%3D' (2025-06-07)
  → 'github:echasnovski/mini.nvim/3f5d06a6f710966cb93baaadc4897eeb6d6210e5?narHash=sha256-vR8sOlGEST8SlknAtvfsP3j40rZaS5Jed8FwDdCBP94%3D' (2025-06-14)
• Updated input 'neovim-nightly-overlay':
    'github:nix-community/neovim-nightly-overlay/34f4b17993e9ec8e8a5c8a1cec5847b4520b3d26?narHash=sha256-o65mGvIz4%2B5gqyFG0gLK6BqIVRGqxl0AiY6Xy5De%2BQk%3D' (2025-06-11)
  → 'github:nix-community/neovim-nightly-overlay/5b231a9c0efd15547569bd753dbec420b90c8c98?narHash=sha256-wGa5HXzU9lK4Q7ODv8/n5oY/QbIl8R2wUyDxcLsV3B4%3D' (2025-06-17)
• Updated input 'neovim-nightly-overlay/git-hooks':
    'github:cachix/git-hooks.nix/80479b6ec16fefd9c1db3ea13aeb038c60530f46?narHash=sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo%2BbnXU9D9k%3D' (2025-05-16)
  → 'github:cachix/git-hooks.nix/623c56286de5a3193aa38891a6991b28f9bab056?narHash=sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4%3D' (2025-06-11)
• Updated input 'neovim-nightly-overlay/neovim-src':
    'github:neovim/neovim/79ce71430fe5480e37a150522e2c6c925f5d0e66?narHash=sha256-7A4cafY420gsxdCA0yZhlOMjBSLzu3156QFEeAmcwrk%3D' (2025-06-10)
  → 'github:neovim/neovim/3e984cf02bdcebe2d4f31792505b6a3784fd1b1b?narHash=sha256-JTG1BFIIKmFfuT%2BsIhwrphAIjREgV4FfRcyuztr89P0%3D' (2025-06-16)
• Updated input 'neovim-nightly-overlay/nixpkgs':
    'github:NixOS/nixpkgs/cdc68935eba9f86d155585fdf6f17af6824f38ac?narHash=sha256-How2kQw0psKmCdXgojc95Sf3K5maHB3qfINxTZFCAPM%3D' (2025-06-10)
  → 'github:NixOS/nixpkgs/41da1e3ea8e23e094e5e3eeb1e6b830468a7399e?narHash=sha256-jp0D4vzBcRKwNZwfY4BcWHemLGUs4JrS3X9w5k/JYDA%3D' (2025-06-14)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/ab301cc663dc2db37c53933b33d1070cb72934ec?narHash=sha256-DjWYlOFrddI5t5w4mimZJo1RGp2qxhcvTYWSZjx9%2B3I%3D' (2025-06-11)
  → 'github:NixOS/nixpkgs/9e83b64f727c88a7711a2c463a7b16eedb69a84c?narHash=sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI%3D' (2025-06-17)
• Updated input 'nixpkgs-uns':
    'github:NixOS/nixpkgs/3e3afe5174c561dee0df6f2c2b2236990146329f?narHash=sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU%3D' (2025-06-07)
  → 'github:NixOS/nixpkgs/ee930f9755f58096ac6e8ca94a1887e0534e2d81?narHash=sha256-Kh9K4taXbVuaLC0IL%2B9HcfvxsSUx8dPB5s5weJcc9pc%3D' (2025-06-13)
2025-06-16 23:57:20 -05:00
aa1f5847d2
add alejandra formatter 2025-06-16 23:57:08 -05:00
3de4c4e289
mini jump rice 2025-06-12 03:02:57 -05:00
8da416de1c
cleanup codecompanion, neogit, bump inputs 2025-06-11 02:38:50 -05:00
ee647f4338 add image 2025-06-02 01:46:17 -05:00
47a2d487da random rice 2025-05-22 02:27:17 -05:00
f47fc0f76f org mode 2025-05-17 16:46:13 -05:00
2bab00d2e3 use vim.lsp.config API 2025-05-08 02:02:22 -05:00
8feb221d41 mini tweaks 2025-05-07 01:35:45 -05:00
fb7e0a930a completion tweaks 2025-05-03 20:50:53 -05:00
96a162e9e8 minidiff/git 2025-04-22 02:32:17 -05:00
cjurgell
38e0a620f3 fix conflicting grn mapping 2025-04-21 14:19:13 -05:00
9b0cab9709 oil.nvim 2025-04-20 23:14:50 -05:00
23bd257c9e lint everything 2025-04-06 03:05:10 -05:00
3dcc3a10e8 trouble + conform changes 2025-04-04 19:06:33 -05:00
1013b23483 refactoring-nvim 2025-04-01 03:58:05 -05:00
445762ee3a treewalker hydra 2025-04-01 03:58:05 -05:00
4dfe6c4c33 refactor(flake): tidy up inputs attrset 2025-03-31 03:08:22 -05:00
7e87ede672 build(flake): enable for all systems 2025-03-15 01:28:05 -05:00
9028ed4893 enable render-markdown 2025-03-14 19:14:00 -05:00
cd60d7959b more trouble.nvim tweaks 2025-03-14 18:38:47 -05:00
851e345bca use new default LSP mappings as inspiration 2025-03-14 18:09:01 -05:00
5043280c65 linters/formatters 2025-03-14 12:47:25 -05:00
dab37cf7a5 update deprecated cache action step 2025-03-13 03:24:27 -05:00
df59c1b380 use nightly neovim, plugin cleanup 2025-03-13 03:12:49 -05:00
91b6830d9e revert model override 2025-02-06 14:33:02 -06:00
b4404d2c1f feat: codecompanion.nvim 2025-02-06 02:49:02 -06:00
55bade6fb7 fix: copilot suggestions warning 2025-02-04 02:29:56 -06:00
e7eb63b09b snacks tweaks 2025-02-04 02:18:25 -06:00
bb2a34d620 fix bad debug file comment 2025-02-03 11:51:35 -06:00
78a7d107e5 rm debugger, add jj 2025-02-03 02:16:10 -06:00
01366c625a use trouble qf from snacks 2025-02-03 01:36:08 -06:00
012306d04f flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs-master':
    'github:NixOS/nixpkgs/7e26be4395f18f0aaaab3d704a55791f19764edd?narHash=sha256-lYo2OmtQ8Mz8BpmUQT93P8guOLnfGEwXbY55Eb55Thg%3D' (2025-02-02)
  → 'github:NixOS/nixpkgs/3d89be6655a3ca15643456199b491b524929f61c?narHash=sha256-KbuxOVz6SCBCkjJufqmdhItzhf8OCBKnRP%2BJWE9EFlo%3D' (2025-02-03)
2025-02-02 22:39:23 -06:00
d88c03f005 add copilot, snacks 2025-02-02 22:38:46 -06:00
0f709befab flake.lock: Update
Flake lock file updates:

• Updated input 'blink/nixpkgs':
    'github:nixos/nixpkgs/9189ac18287c599860e878e905da550aa6dec1cd?narHash=sha256-AYvaFBzt8dU0fcSK2jKD0Vg23K2eIRxfsVXIPCW9a0E%3D' (2025-01-31)
  → 'github:nixos/nixpkgs/b30f97d8c32d804d2d832ee837d0f1ca0695faa5?narHash=sha256-U47xeACNBpkSO6IcCm0XvahsVXpJXzjPIQG7TZlOToU%3D' (2025-01-06)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/dc460ec76cbff0e66e269457d7b728432263166c?narHash=sha256-PbABj4tnbWFMfBp6OcUK5iGy1QY%2B/Z96ZcLpooIbuEI%3D' (2024-11-11)
  → 'github:NixOS/nixpkgs/3a228057f5b619feb3186e986dbe76278d707b6e?narHash=sha256-xvTo0Aw0%2Bveek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc%3D' (2025-02-01)
2025-02-02 02:10:50 -06:00
372c943270 fix bad plugin names 2024-12-20 14:25:22 -06:00
d82c5aa50a
Merge pull request #17 from iofq/update_flake_lock_action
chore: update flake.lock
2024-11-14 09:24:07 -06:00
github-actions[bot]
eafb86aa5d chore: update flake.lock
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a?narHash=sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ%3D' (2024-09-17)
  → 'github:numtide/flake-utils/11707dc2f618dd54ca8739b309ec4fc024de578b?narHash=sha256-l0KFg5HjrsfsO/JpG%2Br7fRrqm12kzFHyUHqHCVpMMbI%3D' (2024-11-13)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/2768c7d042a37de65bb1b5b3268fc987e534c49d?narHash=sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4%3D' (2024-10-23)
  → 'github:NixOS/nixpkgs/dc460ec76cbff0e66e269457d7b728432263166c?narHash=sha256-PbABj4tnbWFMfBp6OcUK5iGy1QY%2B/Z96ZcLpooIbuEI%3D' (2024-11-11)
2024-11-14 10:17:08 +00:00
96e970b31d add phpactor lsp 2024-10-26 15:47:12 -05:00
85b85bec8a fix deprecated packpathDirs in upstream mkNeovimConfig 2024-10-26 15:47:12 -05:00
1caac6ea4b flake.lock: Update
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a?narHash=sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ%3D' (2024-03-11)
  → 'github:numtide/flake-utils/c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a?narHash=sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ%3D' (2024-09-17)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/8a3354191c0d7144db9756a74755672387b702ba?narHash=sha256-Grh5PF0%2BgootJfOJFenTTxDTYPidA3V28dqJ/WV7iis%3D' (2024-08-18)
  → 'github:NixOS/nixpkgs/2768c7d042a37de65bb1b5b3268fc987e534c49d?narHash=sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4%3D' (2024-10-23)
2024-10-26 15:47:10 -05:00
bd5ef0df29
Merge pull request #16 from iofq/update_flake_lock_action
chore: update flake.lock
2024-10-14 19:17:46 +00:00
github-actions[bot]
327092ab64 chore: update flake.lock
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a?narHash=sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ%3D' (2024-03-11)
  → 'github:numtide/flake-utils/c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a?narHash=sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ%3D' (2024-09-17)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/8a3354191c0d7144db9756a74755672387b702ba?narHash=sha256-Grh5PF0%2BgootJfOJFenTTxDTYPidA3V28dqJ/WV7iis%3D' (2024-08-18)
  → 'github:NixOS/nixpkgs/5633bcff0c6162b9e4b5f1264264611e950c8ec7?narHash=sha256-9UTxR8eukdg%2BXZeHgxW5hQA9fIKHsKCdOIUycTryeVw%3D' (2024-10-09)
2024-10-14 10:17:32 +00:00
cee522f27d oops broke toggleterm 2024-09-07 12:49:54 -05:00
6831ace589 tweaks including aerial, cd in mini.files 2024-09-06 02:53:00 -05:00
6d8480b8b5 tweaks and ftplugins 2024-08-22 03:30:25 -05:00
80efd65a10 fix min build 2024-08-21 02:37:08 -05:00
14fec02d63 few bugfixes, mini.files 2024-08-21 02:35:12 -05:00
4ceceff9bf bugfixes 2024-08-21 00:52:37 -05:00
b0cd1f6bb8 update inputs 2024-08-20 22:50:19 -05:00
f8e0e41d63 bugfixes 2024-08-19 17:23:20 -05:00
bdaed4fa4d race condition breaks statusline 2024-08-19 02:00:41 -05:00
b937ff2f1f don't lazy load mini to stop flickering on load 2024-08-19 01:43:29 -05:00
ece2c1c694 new lazy rice 2024-08-19 01:38:09 -05:00
1eb2b1bc3c fix workflow 2024-08-16 02:47:16 -05:00
85f2c16817 add nvim min 2024-08-16 02:39:48 -05:00
26575fa66e tonight's rice 2024-08-16 02:09:15 -05:00
bff0f4c78b flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/a58bc8ad779655e790115244571758e8de055e3d' (2024-08-11)
  → 'github:NixOS/nixpkgs/c3aa7b8938b17aebd2deecf7be0636000d62a2b9' (2024-08-14)
2024-08-15 22:40:41 -05:00
0f3ee6ed18 use leader^2 for buffers 2024-08-13 20:12:48 -05:00
305d17c608 rm old flake 2024-08-13 03:07:45 -05:00
ca7d7b657d flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5e0ca22929f3342b19569b21b2f3462f053e497b' (2024-08-09)
  → 'github:NixOS/nixpkgs/a58bc8ad779655e790115244571758e8de055e3d' (2024-08-11)
2024-08-13 02:57:29 -05:00
4e88567cac lint 2024-08-13 02:56:48 -05:00
bdaba979ac add a few plugins like neoclip, markvieww 2024-08-13 02:50:48 -05:00
3f57948360 add eyeliner, trouble 2024-08-10 14:27:25 -05:00
b25deb86c1 add vim alias 2024-08-10 02:14:53 -05:00
adef2193d6 fix gh workflow 2024-08-10 01:51:23 -05:00
9082d546f6 lint 2024-08-10 01:45:39 -05:00
b33413dd18 use kickstart-nix 2024-08-10 01:44:12 -05:00
53bfda8bcd flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/9014875e6f995a84dd72072e5ef73313e5665faa' (2024-07-26)
  → 'github:nixos/nixpkgs/f5129fb42b9c262318130a97b47516946da3e7d7' (2024-08-07)
2024-08-08 02:03:25 -05:00
8c0ff1e499 add aerial 2024-08-08 02:01:26 -05:00
2a6ff7e85a icmp and snip rice 2024-08-08 01:19:53 -05:00
62b7e838d9 fix neogit 2024-07-27 00:57:13 -05:00
062f6cd5a1 Shrink image size 2024-07-26 23:40:26 -05:00
f66e3dde6a Clean up rice 2024-07-26 23:11:06 -05:00
50ac04fdb9
Merge pull request #10 from iofq/update_flake_lock_action
chore: update flake.lock
2024-04-14 19:10:23 +00:00
github-actions[bot]
b5a0c79922 chore: update flake.lock
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/807c549feabce7eddbf259dbdcec9e0600a0660d?narHash=sha256-9slQ609YqT9bT/MNX9%2B5k5jltL9zgpn36DpFB7TkttM%3D' (2024-03-29)
  → 'github:nixos/nixpkgs/a0c9e3aee1000ac2bfb0e5b98c94c946a5d180a9?narHash=sha256-icE1IJE9fHcbDfJ0%2BqWoDdcBXUoZCcIJxME4lMHwvSM%3D' (2024-04-12)
2024-04-14 12:02:15 +00:00
c3854e2b93
Merge pull request #9 from iofq/update_flake_lock_action
chore: update flake.lock
2024-04-01 19:07:51 +00:00
github-actions[bot]
024daaa09a chore: update flake.lock
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/bd5ddf2c6bfafff031edf80221e1ee94e86ca10a?narHash=sha256-YpSGYZR96I8g5OK/Fdm0O4%2BmHLen6YPA1cPanqqNqT0%3D' (2024-03-14)
  → 'github:nixos/nixpkgs/807c549feabce7eddbf259dbdcec9e0600a0660d?narHash=sha256-9slQ609YqT9bT/MNX9%2B5k5jltL9zgpn36DpFB7TkttM%3D' (2024-03-29)
2024-04-01 10:14:12 +00:00
00f981d962
Merge pull request #8 from iofq/update_flake_lock_action
chore: update flake.lock
2024-03-15 03:08:02 +00:00
github-actions[bot]
78c53dc879 chore: update flake.lock
Flake lock file updates:

• Updated input 'flake-utils':
    'github:numtide/flake-utils/1ef2e671c3b0c19053962c07dbda38332dcebf26?narHash=sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA%3D' (2024-01-15)
  → 'github:numtide/flake-utils/b1d9ab70662946ef0850d488da1c9019f3a9752a?narHash=sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ%3D' (2024-03-11)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/2d627a2a704708673e56346fcb13d25344b8eaf3?narHash=sha256-AehgH64b28yKobC/DAWYZWkJBxL/vP83vkY%2Bag2Hhy4%3D' (2024-02-12)
  → 'github:nixos/nixpkgs/bd5ddf2c6bfafff031edf80221e1ee94e86ca10a?narHash=sha256-YpSGYZR96I8g5OK/Fdm0O4%2BmHLen6YPA1cPanqqNqT0%3D' (2024-03-14)
2024-03-15 03:06:37 +00:00
e6cde16c4a
Merge pull request #7 from iofq/update_flake_lock_action
chore: update flake.lock
2024-02-18 06:17:34 +00:00
Cal Jurgella
013643b21f rice from work 2024-02-16 19:08:46 -06:00
github-actions[bot]
27ffd7b0af chore: update flake.lock
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/5ad9903c16126a7d949101687af0aa589b1d7d3d' (2024-01-31)
  → 'github:nixos/nixpkgs/2d627a2a704708673e56346fcb13d25344b8eaf3' (2024-02-12)
2024-02-14 10:13:00 +00:00
b6d3c5a7e2
Update rose-pine options 2024-02-03 17:53:24 -06:00
3c9e1fb4db
Merge pull request #6 from iofq/update_flake_lock_action
chore: update flake.lock
2024-02-02 05:06:16 +00:00
github-actions[bot]
8ac02ba12e chore: update flake.lock
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/160b762eda6d139ac10ae081f8f78d640dd523eb' (2024-01-27)
  → 'github:nixos/nixpkgs/5ad9903c16126a7d949101687af0aa589b1d7d3d' (2024-01-31)
2024-02-01 10:13:49 +00:00
22c8209f11 fix rose-pine italics 2024-01-29 01:21:56 -06:00
1e01ba682e
Merge pull request #5 from iofq/revert-2-update_flake_lock_action
Revert "chore: update flake.lock"
2024-01-29 07:01:25 +00:00
140ffead01
Revert "chore: update flake.lock" 2024-01-29 07:01:14 +00:00
99bcdec396
Merge pull request #4 from iofq/update_flake_lock_action
Remove Dockerfile, add README
2024-01-29 02:50:21 +00:00
eccc73bdfa Remove Dockerfile, add README 2024-01-28 20:36:53 -06:00
1806a699c2
Merge pull request #2 from iofq/update_flake_lock_action
chore: update flake.lock
2024-01-29 02:25:03 +00:00
github-actions[bot]
a25de2a52f chore: update flake.lock
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/a455c5fb3ee513e2f443838a0e84d52b035adb67' (2024-01-19)
  → 'github:nixos/nixpkgs/160b762eda6d139ac10ae081f8f78d640dd523eb' (2024-01-27)
2024-01-29 02:14:40 +00:00
36af04e4ee test workflow 2024-01-28 20:01:43 -06:00
f81b86ba90 test workflow 2024-01-28 19:59:58 -06:00
f7d5480687 test workflow 2024-01-28 19:56:55 -06:00
b9c7dd0647 test workflow 2024-01-28 19:54:40 -06:00
d876f0871a test workflow 2024-01-28 19:51:54 -06:00
4aa9b5271f test workflow 2024-01-28 19:42:06 -06:00
82f941926b test workflow 2024-01-28 19:31:13 -06:00
72f3adeca1 test workflow 2024-01-28 19:26:59 -06:00
d28f5708de test workflow 2024-01-28 19:18:16 -06:00
7a85a7aff4 test workflow 2024-01-28 19:10:17 -06:00
f3c760e01f test new workflow 2024-01-28 19:04:00 -06:00
379ff5fd9a test new workflow 2024-01-28 18:51:44 -06:00
2ae53ff3bd test new workflow 2024-01-28 18:50:58 -06:00
f5731f1a52 test new workflow 2024-01-28 18:47:06 -06:00
fecb8220bd test new workflow 2024-01-28 18:45:55 -06:00
1d10de72aa add vim-nix 2024-01-27 15:40:50 -06:00
8bd50ae3b2 Fix paste delay 2024-01-27 13:56:44 -06:00
34c4d4d7eb fix append delay 2024-01-27 13:38:47 -06:00
a81697463d Jan 24 updates 2024-01-20 03:06:59 -06:00
a503ddc9c4 add py, nix lsps 2023-12-28 22:02:33 -06:00
0c397bd3c7 add py, nix lsps 2023-12-22 01:44:20 -06:00
b0024a47ee update to nvim 0.9.4 2023-12-21 22:27:20 -06:00
dc80e6953d fix gofmt 2023-09-20 21:07:28 -05:00
8b0a7ef1a6 lsp changes, mini.ai 2023-08-06 09:46:19 -05:00
e260bac77b update CI 2023-05-27 05:47:26 -05:00
387b1ef3be update CI 2023-05-27 05:39:30 -05:00
2388fb9bda update CI 2023-05-27 05:14:15 -05:00
f2eb47953b update CI 2023-05-27 04:12:23 -05:00
aad58f1d6b update CI 2023-05-27 03:59:31 -05:00
f9ae40f53c update CI 2023-05-27 03:34:05 -05:00
b65b7296e5 update CI for dual config 2023-05-26 15:06:21 -05:00
b2489ca8f0 idek 2023-05-26 06:05:44 -05:00
482ec8e00a update lsp keybinds 2023-05-26 04:06:55 -05:00
bfc22a1979 init lsp config 2023-05-26 03:52:58 -05:00
4b7dd9144c add nix config 2023-05-26 02:55:52 -05:00
c4ddbfc40c polish git, mini config 2023-05-25 05:23:10 -05:00
0c5b3d23ae fix full-deps 2023-05-24 15:10:06 -05:00
6e5ab46a79 add oil, colors 2023-05-24 05:54:25 -05:00
916bb1bf5d push today's rice 2023-05-17 06:36:50 -05:00
32 changed files with 2252 additions and 355 deletions

2
.envrc Normal file
View file

@ -0,0 +1,2 @@
watch_file nix/*
use flake . -Lv

26
.github/workflows/inputs.yml vendored Normal file
View file

@ -0,0 +1,26 @@
name: "Update Nix Flake Inputs"
on:
workflow_dispatch:
schedule:
- cron: "0 10 1,14 * *"
jobs:
update:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Nix
uses: cachix/install-nix-action@v20
- name: Update flake inputs
id: update
uses: DeterminateSystems/update-flake-lock@v19
with:
pr-title: "chore: update flake.lock"
commit-msg: "chore: update flake.lock"
pr-reviewers: iofq
pr-labels: |
dependencies
automated
auto-merge
- name: Print PR number
run: echo Pull request number is ${{ steps.update.outputs.pull-request-number }}.

View file

@ -1,42 +1,37 @@
name: build
on:
pull_request:
branches: [master]
types: [opened]
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to ghcr.io
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Build container and push to ghcr.io
uses: docker/build-push-action@v2
strategy:
matrix:
package_name: ["nvim-min"]
steps:
- uses: actions/checkout@v3
- uses: DeterminateSystems/nix-installer-action@main
- uses: DeterminateSystems/flakehub-cache-action@main
- name: Run `nix bundle`
id: build
run: |
nix bundle \
-o ${{ matrix.package_name }}.AppImage \
--bundler github:ralismark/nix-appimage \
--extra-experimental-features nix-command \
--extra-experimental-features flakes .#${{ matrix.package_name }}
echo "Done building AppImage for ${{ matrix.package_name }}"
- name: Upload bundle to release
if: github.ref == 'refs/heads/master'
uses: svenstaro/upload-release-action@v2
with:
push: true
tags: ghcr.io/iofq/nvim:latest
-
name: Extract .tar.gz from container
uses: shrink/actions-docker-extract@v1
id: extract
with:
image: ghcr.io/iofq/nvim:latest
path: /app/neovim-x86_64-linux.AppImage
-
name: Upload archive to release
uses: xresloader/upload-to-github-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
file: ${{ steps.extract.outputs.destination }}
update_latest_release: true
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: "${{ matrix.package_name }}.AppImage"
asset_name: "${{ matrix.package_name }}-x86_64-linux.AppImage"
tag: latest
overwrite: true

5
.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
result
*.AppImage
.direnv
.luarc.json
nvim/lazy*json

6
.stylua.toml Normal file
View file

@ -0,0 +1,6 @@
line_endings = "Unix"
indent_type = "Spaces"
indent_width = 2
quote_style = "AutoPreferSingle"
call_parentheses = "NoSingleTable"
# collapse_simple_statement = "Never"

View file

@ -1,11 +0,0 @@
FROM nixos/nix
WORKDIR /app
COPY . .
RUN nix bundle \
--bundler github:ralismark/nix-appimage \
--extra-experimental-features nix-command \
--extra-experimental-features flakes . && \
cp -L nvim-x86_64.AppImage neovim-x86_64-linux.AppImage && \
nix-collect-garbage

339
LICENSE Normal file
View file

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

41
README.md Normal file
View file

@ -0,0 +1,41 @@
## nvim.nix - personal Neovim config. First-class nix support, but doesn't sacrifice portability
![neovim](./img.png?raw=true)
## Usage
Try it out!
```bash
nix run "github:iofq/nvim.nix" #nvim-min
```
Or use in a flake:
```nix
nvim = {
url = "github:iofq/nvim.nix";
};
...
pkgs = import nixpkgs {
overlays = [inputs.nvim.overlays.default]
}
... in configuration.nix
environment.systemPackages = with pkgs; [nvim];
```
Or, grab an AppImage from the Releases page.
## What the hell?
This is a flake to build a Neovim package that includes my custom Lua config and dependencies. It then is bundled via Github Actions CI into an AppImage.
## Why the hell though?
I use these AppImages because I develop in a number of airgapped environments that make traditional dotfile management a nightmare. Downloading a single AppImage and copying it around is a more suckless way of managing this, especially because the non `-min` AppImage on the releases page includes runtime tooling like linters, LSPs, debuggers, etc, that can't be installed using `meson.nvim` without internet. A single ~200mb AppImage contains my entire IDE!
The config uses `lazy.nvim` for loading lua modules, meaning we still get its awesome dependency ordering and lazy loading, and the entire config in the `nvim/` dir can actually be slapped into `~/.config/nvim` and work out of the box in a non-nix setting, using Lazy to download plugins.
For best performance, extract the AppImage using `./nvim.AppImage --appimage-extract`, then run the resulting AppRun binary inside the folder. This prevents you from having to extract the whole AppImage on startup each time which HEAVILY speeds up launch times, at the cost of more disk space usage.
## kickstart-nix-nvim
This repo is based off https://github.com/nix-community/kickstart-nix.nvim, with some changes to enable `lazy.nvim` instead of neovim's native plugin loading.
The trick for enabling both nix and non-nix usage: in `mkNeovim.nix`, we prepend a `lazy_opts` variable to `init.lua` with some nix-specific Lazy configuration (we make Lazy treat each neovim plugin installed via nix as a local "dev" plugin, and show it where to find the lua files in the nix path via `packpath`). Later in the init file, we check for the existence of this variable. If it already is set, we know we're running from a nix config and can setup Lazy accordingly. If not, we can bootstrap Lazy for non-nix usage.

View file

@ -1,7 +0,0 @@
require("blankline-conf")
require("leap-conf")
require("nvim-conf")
require("nvim-treesitter-conf")
require("plugins-conf")
require("telescope-conf")
require("toggleterm-conf")

View file

@ -1,6 +0,0 @@
vim.cmd([[ hi IndentBlanklineChar ctermfg=240 ]])
vim.cmd([[ hi IndentBlanklineContextChar ctermfg=7 ]])
require("indent_blankline").setup {
show_current_context = true,
show_current_context_start = true,
}

View file

@ -1,5 +0,0 @@
local leap = require('leap')
leap.set_default_keymaps()
leap.init_highlight(true)
vim.cmd([[ hi LeapLabelPrimary ctermbg=251 ctermfg=0 ]])

View file

@ -1,90 +0,0 @@
-- vim settings
----------------------------------------
vim.opt.autoindent = true
vim.opt.background = "light"
vim.opt.backspace = "indent,eol,start"
vim.opt.backup = false -- and auto backps, to instead use
vim.opt.breakindent = true
vim.opt.clipboard = "unnamedplus" -- use system clipboard
vim.opt.completeopt = "menuone"
vim.opt.cursorline = true
vim.opt.expandtab = true -- insert tabs as spaces
vim.opt.guicursor = "" -- fixes alacritty changing cursor
vim.opt.hidden = true -- dont save when switching buffers
vim.opt.hlsearch = true
vim.opt.ignorecase = true -- ignore case in searches
vim.opt.inccommand = "split" -- incremental live completion
vim.opt.incsearch = true
vim.opt.laststatus = 1
vim.opt.list = true
vim.opt.listchars:append("trail:·")
vim.opt.mouse = "a"
vim.opt.nrformats:append("alpha") -- let Ctrl-a do letters as well
vim.opt.number = true
vim.opt.pastetoggle = "<F2>"
vim.opt.path:append("**") -- enable fuzzy :find ing
vim.opt.relativenumber = true
vim.opt.shadafile = "NONE" -- disable shada
vim.opt.shiftwidth = 0 -- >> shifts by tabstop
vim.opt.showmatch = true -- highlight matching brackets
vim.opt.signcolumn= "number"
vim.opt.smartcase = true -- unless capital query
vim.opt.smartindent = true -- indent according to lang
vim.opt.softtabstop = -1 -- backspace removes tabstop
vim.opt.splitbelow = true
vim.opt.splitright = true
vim.opt.swapfile = false -- disable swapfiles
vim.opt.tabstop = 4 -- 4 space tabs
vim.opt.undofile = true -- enable auto save of undos
vim.opt.updatetime = 250 -- decrease update time
vim.opt.virtualedit = "onemore"
vim.opt.wildmenu = true
vim.g.netrw_banner = 0 -- disable annoying banner
vim.g.netrw_altv = 1 -- open splits to the right
vim.g.netrw_liststyle = 3 -- tree view
vim.g.fzf_layout = { window = { width = 0.9, height = 0.6 } }
vim.g.indent_blankline_use_treesitter = true
-- mappings
----------------------------------------
-- local func to set keybinds
local remap = function(type, key, value)
vim.api.nvim_set_keymap(type,key,value,{noremap = true, silent = true});
end
remap("i", "wq", "<esc>l")
remap("v", "wq", "<esc>l")
remap("n","gr", "gT")
remap("i", "{<CR>", "{<CR>}<Esc>O")
remap("i", "(<CR>", "(<CR>)<Esc>O")
remap("n", "<C-L>", "<Cmd>nohlsearch<Bar>diffupdate<CR><C-L>")
remap("n","n", "nzz")
remap("n", "N", "Nzz")
remap("n", "Y", "y$")
remap("n","[<space>", ":<c-u>put!=repeat([''],v:count)<bar>']+1<cr>")
remap("n","]<space>", ":<c-u>put =repeat([''],v:count)<bar>'[-1<cr><Esc>")
-- autocmd
----------------------------------------
local undopath = "~/.local/share/nvim/undo"
vim.api.nvim_create_autocmd("VimEnter", {
command = "silent !mkdir -p " .. undopath,
group = vim.api.nvim_create_augroup("Init", {}),
})
local toggle_rel_num = vim.api.nvim_create_augroup("ToggleRelNum", {})
vim.api.nvim_create_autocmd("InsertEnter", {
command = "set norelativenumber",
group = toggle_rel_num,
})
vim.api.nvim_create_autocmd("InsertLeave", {
command = "set relativenumber",
group = toggle_rel_num,
})
vim.api.nvim_create_autocmd("TextYankPost", {
callback = function()
vim.highlight.on_yank({ higroup = "Visual" })
end,
group = vim.api.nvim_create_augroup("YankHighlight", {}),
})

View file

@ -1,51 +0,0 @@
require("nvim-treesitter.configs").setup {
ensure_installed = {},
highlight = {
enable = true,
},
indent = {
enable = true,
},
textobjects = {
select = {
enable = true,
lookahead = true,
keymaps = {
['ac'] = '@comment.outer',
['ic'] = '@comment.inner',
["af"] = "@function.outer",
["if"] = "@function.inner",
["aa"] = "@call.inner",
},
},
move = {
enable = true,
set_jumps = true, -- whether to set jumps in the jumplist
goto_next_start = {
[']]'] = '@function.outer',
[']m'] = '@class.outer',
},
goto_next_end = {
[']['] = '@function.outer',
[']M'] = '@class.outer',
},
goto_previous_start = {
['[['] = '@function.outer',
['[m'] = '@class.outer',
},
goto_previous_end = {
['[]'] = '@function.outer',
['[M'] = '@class.outer',
},
},
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = '<CR>',
scope_incremental = '<CR>',
node_incremental = '<TAB>',
node_decremental = '<S-TAB>',
},
},
}

View file

@ -1,2 +0,0 @@
-- telescope
----------------------------------------

View file

@ -1,44 +0,0 @@
local telescope = require("telescope.builtin")
vim.keymap.set("n", "<leader>fb", telescope.buffers, {noremap = true, silent = true})
vim.keymap.set("n", "<leader>ff", telescope.find_files, {noremap = true, silent = true})
vim.keymap.set("n", "<leader>fg", telescope.git_files, {noremap = true, silent = true})
vim.keymap.set("n", "<leader>fv", telescope.command_history, {noremap = true, silent = true})
vim.keymap.set("n", "<leader><leader>", telescope.live_grep, {noremap = true, silent = true})
vim.keymap.set("n", "<leader>8", telescope.grep_string, {noremap = true, silent = true})
vim.keymap.set("n", "<leader>fd", telescope.lsp_definitions, {noremap = true, silent = true})
-- fix highlighting
vim.cmd([[ hi telescopeselection ctermfg=242 ctermbg=252 ]])
require("telescope").setup({
defaults = {
layout_strategy = "vertical",
layout_config = { width = .90, },
vimgrep_arguments = {
"rg",
"--color=never",
"--no-heading",
"--hidden",
"--with-filename",
"--line-number",
"--column",
"--smart-case"
},
mappings = {
i = {
["<esc>"] = require("telescope.actions").close,
["<C-k>"] = require("telescope.actions").move_selection_previous,
["<C-j>"] = require("telescope.actions").move_selection_next,
},
},
},
pickers = {
find_files = {
hidden = true,
find_command = { 'rg', '--files', '--iglob', '!.git', '--hidden' }
},
git_files = {
hidden = true,
find_command = { 'rg', '--files', '--iglob', '!.git', '--hidden' }
},
}
})

View file

@ -1,5 +0,0 @@
require("toggleterm").setup{
open_mapping = [[<leader>t]],
shade_terminals = true,
size = vim.o.lines * 0.4
}

318
flake.lock generated
View file

@ -1,15 +1,88 @@
{
"nodes": {
"dart": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1765140120,
"narHash": "sha256-lLY34wnbyzi21zE8i+VM0AoEt67r4aPn/EoaZ8o4NgU=",
"owner": "iofq",
"repo": "dart.nvim",
"rev": "205f809fbb27d56aff22756a97b5ba6f0c7243c3",
"type": "github"
},
"original": {
"owner": "iofq",
"repo": "dart.nvim",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1717285511,
"narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"neovim-nightly-overlay",
"nixpkgs"
]
},
"locked": {
"lastModified": 1767609335,
"narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "250481aafeb741edfe23d29195671c19b36b6dca",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1681202837,
"narHash": "sha256-H+Rh19JDwRtpVPAWp64F+rlEtxUWBAQW28eAi3SRSzg=",
"lastModified": 1731533236,
"owner": "numtide",
"repo": "flake-utils",
"rev": "cfacdce06f30d2b68473a46042957675eebb3401",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@ -18,26 +91,230 @@
"type": "github"
}
},
"nixpkgs": {
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1683717387,
"narHash": "sha256-b4GSeKtDH+7wzw9VptHqIWOyIq28j7++rvRqhCEWFQ8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1e8ab5db89c84b1bb29d8d10ea60766bb5cee1f2",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gen-luarc": {
"inputs": {
"flake-parts": "flake-parts",
"git-hooks": "git-hooks",
"luvit-meta": "luvit-meta",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1755304025,
"narHash": "sha256-xVKfjFwc0zMbLMjLTiHz+0llggkjs93SmHkhaa9S3M4=",
"owner": "mrcjkb",
"repo": "nix-gen-luarc-json",
"rev": "1865b0ebb753ae5324d7381b1fa8c98c04ec7509",
"type": "github"
},
"original": {
"owner": "mrcjkb",
"repo": "nix-gen-luarc-json",
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": "flake-compat",
"gitignore": "gitignore",
"nixpkgs": [
"gen-luarc",
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1723803910,
"narHash": "sha256-yezvUuFiEnCFbGuwj/bQcqg7RykIEqudOy/RBrId0pc=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "bfef0ada09e2c8ac55bbcd0831bd0c9d42e651ba",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"gen-luarc",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"jj-nvim": {
"flake": false,
"locked": {
"lastModified": 1768169857,
"narHash": "sha256-8POSGuNYdAR2peyzN92vWR87GqWf+Y6I1arOwNxwd6U=",
"owner": "NicolasGB",
"repo": "jj.nvim",
"rev": "d13a5c9aec08318323f19fcdc1a1d2c469e00739",
"type": "github"
},
"original": {
"owner": "NicolasGB",
"repo": "jj.nvim",
"type": "github"
}
},
"luvit-meta": {
"flake": false,
"locked": {
"lastModified": 1705776742,
"narHash": "sha256-zAAptV/oLuLAAsa2zSB/6fxlElk4+jNZd/cPr9oxFig=",
"owner": "Bilal2453",
"repo": "luvit-meta",
"rev": "ce76f6f6cdc9201523a5875a4471dcfe0186eb60",
"type": "github"
},
"original": {
"owner": "Bilal2453",
"repo": "luvit-meta",
"type": "github"
}
},
"neovim-nightly-overlay": {
"inputs": {
"flake-parts": "flake-parts_2",
"neovim-src": "neovim-src",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1768003501,
"narHash": "sha256-pxxUR3VRDcDpMgF1qb9FnlHAEOGi24bk6pdB1QzL1II=",
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"rev": "d31b28318affe5d58ef12e7f72a7adfa66930a7a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"type": "github"
}
},
"neovim-src": {
"flake": false,
"locked": {
"lastModified": 1768000044,
"narHash": "sha256-hcdQHR8l8oZDIl0vXKNtbrN+32dTs9EYvlqppoHgG2k=",
"owner": "neovim",
"repo": "neovim",
"rev": "930817f1009d9d392103b5440e2503cb47fdacc0",
"type": "github"
},
"original": {
"owner": "neovim",
"repo": "neovim",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1755660401,
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5788de501b965d7413f2beaac10aeeb56f9a19a8",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1717284937,
"narHash": "sha256-lIbdfCsf8LMFloheeE6N31+BMIeixqyQWbSr2vk79EQ=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/eb9ceca17df2ea50a250b6b27f7bf6ab0186f198.tar.gz"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1720386169,
"narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "194846768975b7ad2c4988bdb82572c00222c0d7",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1768020509,
"narHash": "sha256-V7El1ktdJ0/WWEr6wGBKFYu433vitrWvxmvPk79FsSc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "299d331f770cdf7c466a4faa08b3070a767d681d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
"dart": "dart",
"flake-utils": "flake-utils_2",
"gen-luarc": "gen-luarc",
"jj-nvim": "jj-nvim",
"neovim-nightly-overlay": "neovim-nightly-overlay",
"nixpkgs": "nixpkgs_2"
}
},
"systems": {
@ -54,6 +331,21 @@
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",

160
flake.nix
View file

@ -1,96 +1,76 @@
{
description = "...";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = inputs @ {
self,
nixpkgs,
flake-utils,
...
}:
flake-utils.lib.eachDefaultSystem (system: let
pkgs = import nixpkgs {
inherit system;
};
description = "Neovim derivation";
recursiveMerge = attrList: let
f = attrPath:
builtins.zipAttrsWith (n: values:
if pkgs.lib.tail values == []
then pkgs.lib.head values
else if pkgs.lib.all pkgs.lib.isList values
then pkgs.lib.unique (pkgs.lib.concatLists values)
else if pkgs.lib.all pkgs.lib.isAttrs values
then f (attrPath ++ [n]) values
else pkgs.lib.last values);
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/master";
flake-utils.url = "github:numtide/flake-utils";
neovim-nightly-overlay = {
url = "github:nix-community/neovim-nightly-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
gen-luarc = {
url = "github:mrcjkb/nix-gen-luarc-json";
inputs.nixpkgs.follows = "nixpkgs";
};
dart = {
url = "github:iofq/dart.nvim";
};
jj-nvim = {
url = "github:NicolasGB/jj.nvim";
flake = false;
};
};
outputs =
inputs@{
nixpkgs,
flake-utils,
...
}:
let
systems = builtins.attrNames nixpkgs.legacyPackages;
# This is where the Neovim derivation is built.
neovim-overlay = import ./nix/neovim-overlay.nix { inherit inputs; };
finalOverlays = [
inputs.neovim-nightly-overlay.overlays.default
neovim-overlay
];
in
f [] attrList;
in rec {
deps = with pkgs; [
bash
fzf
ripgrep
gopls
];
neovim-with-deps = recursiveMerge [
pkgs.neovim-unwrapped
{buildInputs = deps;}
];
packages.iofqvim = pkgs.wrapNeovim neovim-with-deps {
viAlias = true;
vimAlias = true;
extraMakeWrapperArgs = ''--prefix PATH : "${pkgs.lib.makeBinPath deps}"'';
configure = {
customRC =
''
lua << EOF
package.path = "${self}/config/lua/?.lua;" .. package.path
''
+ pkgs.lib.readFile ./config/init.lua
+ ''
EOF
flake-utils.lib.eachSystem systems (
system:
let
pkgs = import nixpkgs {
inherit system;
overlays = finalOverlays ++ [
inputs.gen-luarc.overlays.default
];
};
shell = pkgs.mkShell {
name = "nvim-devShell";
buildInputs = with pkgs; [
lua-language-server
nixd
stylua
luajitPackages.luacheck
];
shellHook = ''
# symlink the .luarc.json generated in the overlay
ln -fs ${pkgs.nvim-luarc-json} .luarc.json
'';
packages.plugins = with pkgs.vimPlugins; {
start = with pkgs.vimPlugins; [
telescope-nvim
vim-commentary
vim-surround
toggleterm-nvim
targets-vim
indent-blankline-nvim
vim-go
vim-nix
nvim-treesitter-textobjects
leap-nvim
(nvim-treesitter.withPlugins
(
plugins: with plugins; [
tree-sitter-bash
tree-sitter-c
tree-sitter-dockerfile
tree-sitter-go
tree-sitter-javascript
tree-sitter-json
tree-sitter-lua
tree-sitter-nix
tree-sitter-php
tree-sitter-python
tree-sitter-yaml
]
)
)
];
};
};
};
apps.iofqvim = flake-utils.lib.mkApp {
drv = packages.iofqvim;
name = "iofqvim";
exePath = "/bin/nvim";
in
{
packages = rec {
default = nvim;
nvim = pkgs.nvim-pkg;
nvim-min = pkgs.nvim-min-pkg;
};
apps.default = apps.iofqvim;
packages.default = packages.iofqvim;
});
}
devShells = {
default = shell;
};
}
)
// {
overlays.default = nixpkgs.lib.composeManyExtensions finalOverlays;
};
}

BIN
img.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB

23
nix/mkNeovim.nix Normal file
View file

@ -0,0 +1,23 @@
{ pkgs, lib }:
{
plugins ? [ ],
packages ? [ ],
}:
let
finalPlugins = plugins ++ [
(pkgs.vimUtils.buildVimPlugin {
pname = "iofq-nvim";
src = lib.cleanSource ../nvim;
version = "0.1";
doCheck = false;
})
];
wrapperArgs = ''--prefix PATH : "${lib.makeBinPath packages}"'';
in
pkgs.wrapNeovimUnstable pkgs.neovim-unwrapped {
inherit wrapperArgs;
plugins = finalPlugins;
withPython3 = false;
withRuby = false;
vimAlias = true;
}

67
nix/neovim-overlay.nix Normal file
View file

@ -0,0 +1,67 @@
# This overlay, when applied to nixpkgs, adds the final neovim derivation to nixpkgs.
{ inputs }:
final: prev:
let
mkNeovim = prev.callPackage ./mkNeovim.nix { pkgs = final; };
dart-nvim = inputs.dart.packages.x86_64-linux.default;
mkPlugin =
src: pname:
prev.vimUtils.buildVimPlugin {
inherit pname src;
version = src.lastModifiedDate;
};
jj-nvim = mkPlugin inputs.jj-nvim "jj-nvim";
plugins = with prev.vimPlugins; [
blink-cmp
blink-ripgrep-nvim
conform-nvim
dart-nvim
jj-nvim
mini-nvim
nvim-autopairs
nvim-lint
nvim-lspconfig
nvim-treesitter.withAllGrammars
nvim-treesitter-textobjects
quicker-nvim
render-markdown-nvim
snacks-nvim
];
basePackages = with prev; [
ripgrep
fd
];
# Extra packages that should be included on nixos but don't need to be bundled
extraPackages = with prev; [
# linters
yamllint
jq
hadolint
nixfmt
shellcheck
golangci-lint
# LSPs
gopls
lua-language-server
nixd
basedpyright
];
in
{
nvim-pkg = mkNeovim {
inherit plugins;
packages = basePackages ++ extraPackages;
};
nvim-min-pkg = mkNeovim {
inherit plugins;
packages = basePackages;
};
nvim-luarc-json = final.mk-luarc-json {
inherit plugins;
};
}

705
nvim/after/colors/iofq.lua Normal file
View file

@ -0,0 +1,705 @@
-- Made with 'mini.colors' module of https://github.com/echasnovski/mini.nvim
if vim.g.colors_name ~= nil then
vim.cmd('highlight clear')
end
vim.g.colors_name = 'iofq'
-- Highlight groups
local hi = vim.api.nvim_set_hl
hi(0, '@attribute', { link = 'Constant' })
hi(0, '@character.special', { link = 'SpecialChar' })
hi(0, '@comment.error', { bg = '#e85c51', fg = '#152528' })
hi(0, '@comment.note', { bg = '#5a93aa', fg = '#152528' })
hi(0, '@comment.todo', { bg = '#7aa4a1', fg = '#152528' })
hi(0, '@comment.warning', { bg = '#fda47f', fg = '#152528' })
hi(0, '@conditional', { link = 'Conditional' })
hi(0, '@constant.builtin', { fg = '#ff9664' })
hi(0, '@constant.macro', { link = 'Macro' })
hi(0, '@constructor', { fg = '#a1cdd8' })
hi(0, '@constructor.lua', { fg = '#cbd9d8' })
hi(0, '@diff.delta', { link = 'diffChanged' })
hi(0, '@diff.minus', { link = 'diffRemoved' })
hi(0, '@diff.plus', { link = 'diffAdded' })
hi(0, '@exception', { link = 'Exception' })
hi(0, '@field', { fg = '#5a93aa' })
hi(0, '@field.rust', { fg = '#cbd9d8' })
hi(0, '@float', { link = 'Float' })
hi(0, '@function.builtin', { fg = '#e85c51' })
hi(0, '@function.macro', { fg = '#e85c51' })
hi(0, '@include', { link = 'Include' })
hi(0, '@keyword.conditional', { link = 'Conditional' })
hi(0, '@keyword.conditional.ternary', { link = 'Conditional' })
hi(0, '@keyword.exception', { link = 'Exception' })
hi(0, '@keyword.function', { fg = '#ad5c7c' })
hi(0, '@keyword.import', { link = 'Include' })
hi(0, '@keyword.operator', { fg = '#cbd9d8' })
hi(0, '@keyword.repeat', { link = 'Repeat' })
hi(0, '@keyword.return', { fg = '#e85c51' })
hi(0, '@keyword.storage', { link = 'StorageClass' })
hi(0, '@label.json', { fg = '#73a3b7' })
hi(0, '@lsp.type.boolean', { link = '@boolean' })
hi(0, '@lsp.type.builtinType', { link = '@type.builtin' })
hi(0, '@lsp.type.comment', { link = '@comment' })
hi(0, '@lsp.type.enum', { link = '@type' })
hi(0, '@lsp.type.enumMember', { link = '@constant' })
hi(0, '@lsp.type.escapeSequence', { link = '@string.escape' })
hi(0, '@lsp.type.formatSpecifier', { link = '@punctuation.special' })
hi(0, '@lsp.type.interface', { fg = '#eb746b' })
hi(0, '@lsp.type.keyword', { link = '@keyword' })
hi(0, '@lsp.type.namespace', { link = '@module' })
hi(0, '@lsp.type.number', { link = '@number' })
hi(0, '@lsp.type.operator', { link = '@operator' })
hi(0, '@lsp.type.parameter', { link = '@parameter' })
hi(0, '@lsp.type.property', { link = '@property' })
hi(0, '@lsp.type.selfKeyword', { link = '@variable.builtin' })
hi(0, '@lsp.type.typeAlias', { link = '@type.definition' })
hi(0, '@lsp.type.unresolvedReference', { link = '@error' })
hi(0, '@lsp.type.variable', {})
hi(0, '@lsp.typemod.class.defaultLibrary', { link = '@type.builtin' })
hi(0, '@lsp.typemod.enum.defaultLibrary', { link = '@type.builtin' })
hi(0, '@lsp.typemod.enumMember.defaultLibrary', { link = '@constant.builtin' })
hi(0, '@lsp.typemod.function.defaultLibrary', { link = '@function.builtin' })
hi(0, '@lsp.typemod.keyword.async', { link = '@keyword.coroutine' })
hi(0, '@lsp.typemod.macro.defaultLibrary', { link = '@function.builtin' })
hi(0, '@lsp.typemod.method.defaultLibrary', { link = '@function.builtin' })
hi(0, '@lsp.typemod.operator.injected', { link = '@operator' })
hi(0, '@lsp.typemod.string.injected', { link = '@string' })
hi(0, '@lsp.typemod.type.defaultLibrary', { link = '@type.builtin' })
hi(0, '@lsp.typemod.variable.defaultLibrary', { link = '@variable.builtin' })
hi(0, '@lsp.typemod.variable.injected', { link = '@variable' })
hi(0, '@markup', { fg = '#e6eaea' })
hi(0, '@markup.heading', { link = 'Title' })
hi(0, '@markup.heading.1.delimiter.vimdoc', { nocombine = true, sp = '#e6eaea', underdouble = true })
hi(0, '@markup.heading.2.delimiter.vimdoc', { nocombine = true, sp = '#e6eaea', underline = true })
hi(0, '@markup.italic', { link = 'Italic' })
hi(0, '@markup.link', { bold = true, fg = '#ad5c7c' })
hi(0, '@markup.link.label', { link = 'Special' })
hi(0, '@markup.link.url', { fg = '#ff9664', italic = true, underline = true })
hi(0, '@markup.list', { fg = '#afd4de' })
hi(0, '@markup.list.checked', { fg = '#7aa4a1' })
hi(0, '@markup.list.unchecked', { fg = '#fda47f' })
hi(0, '@markup.math', { fg = '#73a3b7' })
hi(0, '@markup.quote', { fg = '#cbd9d8' })
hi(0, '@markup.raw', { fg = '#a1cdd8', italic = true })
hi(0, '@markup.raw.block', { fg = '#cb7985' })
hi(0, '@markup.strikethrough', { fg = '#e6eaea', strikethrough = true })
hi(0, '@markup.strong', { bold = true, fg = '#c54e45' })
hi(0, '@markup.underline', { link = 'Underline' })
hi(0, '@module', { fg = '#afd4de' })
hi(0, '@namespace', { fg = '#afd4de' })
hi(0, '@number.float', { link = 'Float' })
hi(0, '@parameter', { fg = '#afd4de' })
hi(0, '@property', { fg = '#5a93aa' })
hi(0, '@punctuation.bracket', { fg = '#cbd9d8' })
hi(0, '@punctuation.delimiter', { fg = '#cbd9d8' })
hi(0, '@punctuation.special', { fg = '#afd4de' })
hi(0, '@repeat', { link = 'Repeat' })
hi(0, '@storageclass', { link = 'StorageClass' })
hi(0, '@string.escape', { bold = true, fg = '#fdb292' })
hi(0, '@string.regex', { fg = '#fdb292' })
hi(0, '@string.regexp', { fg = '#fdb292' })
hi(0, '@string.special', { link = 'Special' })
hi(0, '@string.special.url', { fg = '#ff9664', italic = true, underline = true })
hi(0, '@tag', { fg = '#ad5c7c' })
hi(0, '@tag.attribute', { fg = '#73a3b7', italic = true })
hi(0, '@tag.delimiter', { fg = '#afd4de' })
hi(0, '@text', { fg = '#e6eaea' })
hi(0, '@text.danger', { bg = '#e85c51', fg = '#152528' })
hi(0, '@text.diff.add', { link = 'diffAdded' })
hi(0, '@text.diff.delete', { link = 'diffRemoved' })
hi(0, '@text.emphasis', { link = 'Italic' })
hi(0, '@text.literal', { fg = '#a1cdd8', italic = true })
hi(0, '@text.math', { fg = '#73a3b7' })
hi(0, '@text.note', { bg = '#5a93aa', fg = '#152528' })
hi(0, '@text.reference', { bold = true, fg = '#ad5c7c' })
hi(0, '@text.strike', { fg = '#e6eaea', strikethrough = true })
hi(0, '@text.strong', { bold = true, fg = '#c54e45' })
hi(0, '@text.title', { link = 'Title' })
hi(0, '@text.todo', { bg = '#7aa4a1', fg = '#152528' })
hi(0, '@text.todo.checked', { fg = '#7aa4a1' })
hi(0, '@text.todo.unchecked', { fg = '#fda47f' })
hi(0, '@text.underline', { link = 'Underline' })
hi(0, '@text.warning', { bg = '#fda47f', fg = '#152528' })
hi(0, '@type.builtin', { fg = '#afd4de' })
hi(0, '@variable', { fg = '#ebebeb' })
hi(0, '@variable.builtin', { fg = '#e85c51' })
hi(0, '@variable.member', { fg = '#5a93aa' })
hi(0, '@variable.parameter', { fg = '#afd4de' })
hi(0, 'AerialGuide', { fg = '#2d4f56' })
hi(0, 'AerialLine', { link = 'Search' })
hi(0, 'AlphaButtons', { fg = '#a1cdd8' })
hi(0, 'AlphaFooter', { fg = '#5a93aa' })
hi(0, 'AlphaHeader', { fg = '#73a3b7' })
hi(0, 'AlphaHeaderLabel', { fg = '#ff8349' })
hi(0, 'AlphaShortcut', { fg = '#ff8349' })
hi(0, 'BlinkCmpCursorLineDocumentationHack', { bg = '#254147' })
hi(0, 'BlinkCmpCursorLineMenuHack', { bg = '#425e5e' })
hi(0, 'BlinkCmpDoc', { bg = '#0f1c1e', fg = '#e6eaea' })
hi(0, 'BlinkCmpDocBorder', { bg = '#0f1c1e', fg = '#293e40' })
hi(0, 'BlinkCmpGhostText', { link = 'String' })
hi(0, 'BlinkCmpKindClass', { link = 'Type' })
hi(0, 'BlinkCmpKindConstant', { link = '@constant' })
hi(0, 'BlinkCmpKindConstructor', { link = 'Function' })
hi(0, 'BlinkCmpKindDefault', { fg = '#cbd9d8' })
hi(0, 'BlinkCmpKindEnum', { link = 'Constant' })
hi(0, 'BlinkCmpKindEnumMember', { link = '@field' })
hi(0, 'BlinkCmpKindEvent', { link = 'Constant' })
hi(0, 'BlinkCmpKindField', { link = '@field' })
hi(0, 'BlinkCmpKindFunction', { link = 'Function' })
hi(0, 'BlinkCmpKindInterface', { link = 'Constant' })
hi(0, 'BlinkCmpKindKeyword', { link = 'Identifier' })
hi(0, 'BlinkCmpKindMethod', { link = 'Function' })
hi(0, 'BlinkCmpKindModule', { link = '@namespace' })
hi(0, 'BlinkCmpKindOperator', { link = 'Operator' })
hi(0, 'BlinkCmpKindProperty', { link = '@property' })
hi(0, 'BlinkCmpKindReference', { link = 'Keyword' })
hi(0, 'BlinkCmpKindSnippet', { fg = '#cbd9d8' })
hi(0, 'BlinkCmpKindStruct', { link = 'Type' })
hi(0, 'BlinkCmpKindTypeParameter', { link = '@field' })
hi(0, 'BlinkCmpKindUnit', { link = 'Constant' })
hi(0, 'BlinkCmpKindValue', { link = 'Keyword' })
hi(0, 'BlinkCmpKindVariable', { link = '@variable' })
hi(0, 'BlinkCmpLabel', { fg = '#e6eaea' })
hi(0, 'BlinkCmpLabelDeprecated', { fg = '#587b7b', strikethrough = true })
hi(0, 'BlinkCmpLabelDetail', { link = 'Comment' })
hi(0, 'BlinkCmpLabelMatch', { fg = '#73a3b7' })
hi(0, 'Bold', { bold = true })
hi(0, 'Boolean', { link = 'Number' })
hi(0, 'BufferCurrent', { bg = '#587b7b', fg = '#e6eaea' })
hi(0, 'BufferCurrentIndex', { bg = '#587b7b', fg = '#5a93aa' })
hi(0, 'BufferCurrentMod', { bg = '#587b7b', fg = '#fda47f' })
hi(0, 'BufferCurrentSign', { bg = '#587b7b', fg = '#5a93aa' })
hi(0, 'BufferCurrentTarget', { bg = '#587b7b', fg = '#e85c51' })
hi(0, 'BufferInactive', { bg = '#0f1c1e', fg = '#6d7f8b' })
hi(0, 'BufferInactiveIndex', { bg = '#0f1c1e', fg = '#6d7f8b' })
hi(0, 'BufferInactiveMod', { bg = '#0f1c1e', fg = '#383835' })
hi(0, 'BufferInactiveSign', { bg = '#0f1c1e', fg = '#254147' })
hi(0, 'BufferInactiveTarget', { bg = '#0f1c1e', fg = '#e85c51' })
hi(0, 'BufferTabpage', { bg = '#0f1c1e', fg = '#254147' })
hi(0, 'BufferTabpages', { bg = '#0f1c1e' })
hi(0, 'BufferVisible', { bg = '#0f1c1e', fg = '#e6eaea' })
hi(0, 'BufferVisibleIndex', { bg = '#0f1c1e', fg = '#5a93aa' })
hi(0, 'BufferVisibleMod', { bg = '#0f1c1e', fg = '#fda47f' })
hi(0, 'BufferVisibleSign', { bg = '#0f1c1e', fg = '#5a93aa' })
hi(0, 'BufferVisibleTarget', { bg = '#0f1c1e', fg = '#e85c51' })
hi(0, 'Character', { link = 'String' })
hi(0, 'CmpDocumentation', { bg = '#0f1c1e', fg = '#e6eaea' })
hi(0, 'CmpDocumentationBorder', { bg = '#0f1c1e', fg = '#293e40' })
hi(0, 'CmpItemAbbr', { fg = '#e6eaea' })
hi(0, 'CmpItemAbbrDeprecated', { fg = '#587b7b', strikethrough = true })
hi(0, 'CmpItemAbbrMatch', { fg = '#73a3b7' })
hi(0, 'CmpItemAbbrMatchFuzzy', { fg = '#73a3b7' })
hi(0, 'CmpItemKindClass', { link = 'Type' })
hi(0, 'CmpItemKindConstant', { link = '@constant' })
hi(0, 'CmpItemKindConstructor', { link = 'Function' })
hi(0, 'CmpItemKindDefault', { fg = '#cbd9d8' })
hi(0, 'CmpItemKindEnum', { link = 'Constant' })
hi(0, 'CmpItemKindEnumMember', { link = '@field' })
hi(0, 'CmpItemKindEvent', { link = 'Constant' })
hi(0, 'CmpItemKindField', { link = '@field' })
hi(0, 'CmpItemKindFunction', { link = 'Function' })
hi(0, 'CmpItemKindInterface', { link = 'Constant' })
hi(0, 'CmpItemKindKeyword', { link = 'Identifier' })
hi(0, 'CmpItemKindMethod', { link = 'Function' })
hi(0, 'CmpItemKindModule', { link = '@namespace' })
hi(0, 'CmpItemKindOperator', { link = 'Operator' })
hi(0, 'CmpItemKindProperty', { link = '@property' })
hi(0, 'CmpItemKindReference', { link = 'Keyword' })
hi(0, 'CmpItemKindSnippet', { fg = '#cbd9d8' })
hi(0, 'CmpItemKindStruct', { link = 'Type' })
hi(0, 'CmpItemKindTypeParameter', { link = '@field' })
hi(0, 'CmpItemKindUnit', { link = 'Constant' })
hi(0, 'CmpItemKindValue', { link = 'Keyword' })
hi(0, 'CmpItemKindVariable', { link = '@variable' })
hi(0, 'CmpItemMenu', { link = 'Comment' })
hi(0, 'CocInlayHint', { bg = '#1d3337', fg = '#6d7f8b' })
hi(0, 'ColorColumn', { bg = '#1d3337' })
hi(0, 'Comment', { fg = '#6d7f8b' })
hi(0, 'Conceal', { fg = '#2d4f56' })
hi(0, 'Conditional', { fg = '#b97490' })
hi(0, 'Constant', { fg = '#ff9664' })
hi(0, 'CurSearch', { link = 'IncSearch' })
hi(0, 'Cursor', { bg = '#e6eaea', fg = '#152528' })
hi(0, 'CursorColumn', { link = 'CursorLine' })
hi(0, 'CursorLine', { bg = '#254147' })
hi(0, 'CursorLineNr', { bold = true, fg = '#fda47f' })
hi(0, 'DapUIBreakpointsCurrentLine', { bold = true, fg = '#7aa4a1' })
hi(0, 'DapUIBreakpointsDisabledLine', { fg = '#6d7f8b' })
hi(0, 'DapUIBreakpointsInfo', { fg = '#5a93aa' })
hi(0, 'DapUIBreakpointsLine', { link = 'DapUILineNumber' })
hi(0, 'DapUIBreakpointsPath', { fg = '#afd4de' })
hi(0, 'DapUIDecoration', { fg = '#587b7b' })
hi(0, 'DapUIFloatBorder', { link = 'FloatBorder' })
hi(0, 'DapUIFrameName', { link = 'Normal' })
hi(0, 'DapUILineNumber', { link = 'Number' })
hi(0, 'DapUIModifiedValue', { bold = true, fg = '#ebebeb' })
hi(0, 'DapUIScope', { fg = '#afd4de' })
hi(0, 'DapUISource', { link = 'Keyword' })
hi(0, 'DapUIStoppedThread', { fg = '#afd4de' })
hi(0, 'DapUIThread', { link = 'String' })
hi(0, 'DapUIType', { link = 'Type' })
hi(0, 'DapUIValue', { fg = '#ebebeb' })
hi(0, 'DapUIVariable', { fg = '#ebebeb' })
hi(0, 'DapUIWatchesEmpty', { fg = '#e85c51' })
hi(0, 'DapUIWatchesError', { fg = '#e85c51' })
hi(0, 'DapUIWatchesValue', { fg = '#fda47f' })
hi(0, 'DashboardCenter', { link = 'String' })
hi(0, 'DashboardFooter', { fg = '#ff9664', italic = true })
hi(0, 'DashboardHeader', { link = 'Title' })
hi(0, 'DashboardShortCut', { link = 'Identifier' })
hi(0, 'Delimiter', { link = 'Special' })
hi(0, 'DiagnosticError', { fg = '#e85c51' })
hi(0, 'DiagnosticHint', { fg = '#7aa4a1' })
hi(0, 'DiagnosticInfo', { fg = '#5a93aa' })
hi(0, 'DiagnosticOk', { fg = '#7aa4a1' })
hi(0, 'DiagnosticUnderlineError', { sp = '#e85c51', undercurl = true })
hi(0, 'DiagnosticUnderlineHint', { sp = '#7aa4a1', undercurl = true })
hi(0, 'DiagnosticUnderlineInfo', { sp = '#5a93aa', undercurl = true })
hi(0, 'DiagnosticUnderlineOk', { sp = '#7aa4a1', undercurl = true })
hi(0, 'DiagnosticUnderlineWarn', { sp = '#fda47f', undercurl = true })
hi(0, 'DiagnosticVirtualTextError', { bg = '#352d2e', fg = '#e85c51' })
hi(0, 'DiagnosticVirtualTextHint', { bg = '#24383a', fg = '#7aa4a1' })
hi(0, 'DiagnosticVirtualTextInfo', { bg = '#1f353c', fg = '#5a93aa' })
hi(0, 'DiagnosticVirtualTextOk', { bg = '#24383a', fg = '#7aa4a1' })
hi(0, 'DiagnosticVirtualTextWarn', { bg = '#383835', fg = '#fda47f' })
hi(0, 'DiagnosticWarn', { fg = '#fda47f' })
hi(0, 'DiffAdd', { bg = '#293e40' })
hi(0, 'DiffChange', { bg = '#31474b' })
hi(0, 'DiffDelete', { bg = '#4a3332' })
hi(0, 'DiffText', { bg = '#466066' })
hi(0, 'DiffviewDiffAddAsDelete', { bg = '#4a3332' })
hi(0, 'DiffviewDim1', { fg = '#6d7f8b' })
hi(0, 'DiffviewFilePanelCounter', { bold = true, fg = '#a1cdd8' })
hi(0, 'DiffviewFilePanelFileName', { fg = '#e6eaea' })
hi(0, 'DiffviewFilePanelTitle', { bold = true, fg = '#b97490' })
hi(0, 'DiffviewPrimary', { fg = '#73a3b7' })
hi(0, 'DiffviewSecondary', { fg = '#7aa4a1' })
hi(0, 'Directory', { fg = '#73a3b7' })
hi(0, 'EndOfBuffer', { fg = '#152528' })
hi(0, 'Error', { fg = '#e85c51' })
hi(0, 'ErrorMsg', { fg = '#e85c51' })
hi(0, 'Exception', { link = 'Keyword' })
hi(0, 'EyelinerDimmed', { fg = '#6d7f8b' })
hi(0, 'EyelinerPrimary', { underline = true })
hi(0, 'EyelinerSecondary', { bold = true, underline = true })
hi(0, 'FernBranchText', { fg = '#5a93aa' })
hi(0, 'FidgetTask', { link = 'LineNr' })
hi(0, 'FidgetTitle', { link = 'Title' })
hi(0, 'FloatBorder', { fg = '#587b7b' })
hi(0, 'FocusedSymbol', { link = 'Search' })
hi(0, 'FoldColumn', { fg = '#587b7b' })
hi(0, 'Folded', { bg = '#1d3337', fg = '#587b7b' })
hi(0, 'Function', { fg = '#73a3b7' })
hi(0, 'GitGutterAdd', { fg = '#7aa4a1' })
hi(0, 'GitGutterChange', { fg = '#fda47f' })
hi(0, 'GitGutterDelete', { fg = '#e85c51' })
hi(0, 'GitSignsAdd', { fg = '#7aa4a1' })
hi(0, 'GitSignsChange', { fg = '#fda47f' })
hi(0, 'GitSignsDelete', { fg = '#e85c51' })
hi(0, 'GlyphPalette0', { fg = '#2f3239' })
hi(0, 'GlyphPalette1', { fg = '#e85c51' })
hi(0, 'GlyphPalette10', { fg = '#8eb2af' })
hi(0, 'GlyphPalette11', { fg = '#fdb292' })
hi(0, 'GlyphPalette12', { fg = '#73a3b7' })
hi(0, 'GlyphPalette13', { fg = '#b97490' })
hi(0, 'GlyphPalette14', { fg = '#afd4de' })
hi(0, 'GlyphPalette15', { fg = '#eeeeee' })
hi(0, 'GlyphPalette2', { fg = '#7aa4a1' })
hi(0, 'GlyphPalette3', { fg = '#fda47f' })
hi(0, 'GlyphPalette4', { fg = '#5a93aa' })
hi(0, 'GlyphPalette5', { fg = '#ad5c7c' })
hi(0, 'GlyphPalette6', { fg = '#a1cdd8' })
hi(0, 'GlyphPalette7', { fg = '#eeeeee' })
hi(0, 'GlyphPalette8', { fg = '#4e5157' })
hi(0, 'GlyphPalette9', { fg = '#eb746b' })
hi(0, 'HopNextKey', { bold = true, fg = '#a1cdd8' })
hi(0, 'HopNextKey1', { bold = true, fg = '#5a93aa' })
hi(0, 'HopNextKey2', { fg = '#4d7d90' })
hi(0, 'HopUnmatched', { fg = '#6d7f8b' })
hi(0, 'Identifier', { fg = '#a1cdd8' })
hi(0, 'IncSearch', { bg = '#7aa4a1', fg = '#152528' })
hi(0, 'IndentBlanklineChar', { fg = '#254147' })
hi(0, 'IndentBlanklineContextChar', { fg = '#ebebeb' })
hi(0, 'IndentBlanklineContextStart', { sp = '#ebebeb', underline = true })
hi(0, 'IndentBlanklineIndent1', { fg = '#cb7985' })
hi(0, 'IndentBlanklineIndent2', { fg = '#5a93aa' })
hi(0, 'IndentBlanklineIndent3', { fg = '#ff8349' })
hi(0, 'IndentBlanklineIndent4', { fg = '#a1cdd8' })
hi(0, 'IndentBlanklineIndent5', { fg = '#e85c51' })
hi(0, 'IndentBlanklineIndent6', { fg = '#fda47f' })
hi(0, 'Italic', { italic = true })
hi(0, 'Keyword', { fg = '#ad5c7c' })
hi(0, 'Label', { link = 'Conditional' })
hi(0, 'LazyButtonActive', { link = 'TabLineSel' })
hi(0, 'LazyDimmed', { link = 'LineNr' })
hi(0, 'LazyProp', { link = 'LineNr' })
hi(0, 'LeapBackdrop', { fg = '#6d7f8b' })
hi(0, 'LeapLabelPrimary', { bg = '#d38d97', fg = '#152528' })
hi(0, 'LeapLabelSecondary', { bg = '#afd4de', fg = '#152528' })
hi(0, 'LeapMatch', { bg = '#d38d97', fg = '#152528' })
hi(0, 'LightspeedGreyWash', { fg = '#6d7f8b' })
hi(0, 'LineNr', { fg = '#587b7b' })
hi(0, 'LspCodeLens', { fg = '#6d7f8b' })
hi(0, 'LspCodeLensSeparator', { fg = '#587b7b' })
hi(0, 'LspFloatWinBorder', { fg = '#587b7b' })
hi(0, 'LspFloatWinNormal', { bg = '#0f1c1e' })
hi(0, 'LspInlayHint', { bg = '#1d3337', fg = '#6d7f8b' })
hi(0, 'LspReferenceRead', { bg = '#293e40' })
hi(0, 'LspReferenceText', { bg = '#293e40' })
hi(0, 'LspReferenceWrite', { bg = '#293e40' })
hi(0, 'LspSagaBorderTitle', { link = 'Title' })
hi(0, 'LspSagaCodeActionBorder', { fg = '#587b7b' })
hi(0, 'LspSagaCodeActionContent', { link = 'String' })
hi(0, 'LspSagaCodeActionTitle', { link = 'Title' })
hi(0, 'LspSagaDefPreviewBorder', { fg = '#587b7b' })
hi(0, 'LspSagaFinderSelection', { fg = '#293e40' })
hi(0, 'LspSagaHoverBorder', { fg = '#587b7b' })
hi(0, 'LspSagaRenameBorder', { fg = '#587b7b' })
hi(0, 'LspSagaSignatureHelpBorder', { fg = '#e85c51' })
hi(0, 'LspSignatureActiveParameter', { fg = '#425e5e' })
hi(0, 'LspTroubleCount', { bg = '#587b7b', fg = '#ad5c7c' })
hi(0, 'LspTroubleNormal', { bg = '#0f1c1e', fg = '#587b7b' })
hi(0, 'LspTroubleText', { fg = '#cbd9d8' })
hi(0, 'MatchParen', { bold = true, fg = '#fda47f' })
hi(0, 'MiniAnimateCursor', { nocombine = true, reverse = true })
hi(0, 'MiniAnimateNormalFloat', { link = 'NormalFloat' })
hi(0, 'MiniClueBorder', { link = 'FloatBorder' })
hi(0, 'MiniClueDescGroup', { link = 'DiagnosticFloatingWarn' })
hi(0, 'MiniClueDescSingle', { link = 'NormalFloat' })
hi(0, 'MiniClueNextKey', { link = 'DiagnosticFloatingHint' })
hi(0, 'MiniClueNextKeyWithPostkeys', { link = 'DiagnosticFloatingError' })
hi(0, 'MiniClueSeparator', { link = 'DiagnosticFloatingInfo' })
hi(0, 'MiniClueTitle', { link = 'FloatTitle' })
hi(0, 'MiniCompletionActiveParameter', { underline = true })
hi(0, 'MiniCursorword', { link = 'LspReferenceText' })
hi(0, 'MiniCursorwordCurrent', { link = 'LspReferenceText' })
hi(0, 'MiniDepsChangeAdded', { link = 'diffAdded' })
hi(0, 'MiniDepsChangeRemoved', { link = 'diffRemoved' })
hi(0, 'MiniDepsHint', { link = 'DiagnosticHint' })
hi(0, 'MiniDepsInfo', { link = 'DiagnosticInfo' })
hi(0, 'MiniDepsMsgBreaking', { link = 'DiagnosticWarn' })
hi(0, 'MiniDepsPlaceholder', { link = 'Comment' })
hi(0, 'MiniDepsTitle', { link = 'Title' })
hi(0, 'MiniDepsTitleError', { bg = '#e85c51', fg = '#0f1c1e' })
hi(0, 'MiniDepsTitleSame', { link = 'DiffText' })
hi(0, 'MiniDepsTitleUpdate', { bg = '#7aa4a1', fg = '#0f1c1e' })
hi(0, 'MiniDiffOverAdd', { bg = '#31474b' })
hi(0, 'MiniDiffOverChange', { bg = '#466066' })
hi(0, 'MiniDiffOverChangeBuf', { bg = '#466066' })
hi(0, 'MiniDiffOverContext', { bg = '#31474b' })
hi(0, 'MiniDiffOverDelete', { fg = 'red' })
hi(0, 'MiniDiffSignAdd', { fg = 'green', bold = true })
hi(0, 'MiniDiffSignChange', { fg = 'green', bold = true })
hi(0, 'MiniDiffSignDelete', { fg = 'red', bold = true })
hi(0, 'MiniFilesBorder', { link = 'FloatBorder' })
hi(0, 'MiniFilesBorderModified', { link = 'DiagnosticFloatingWarn' })
hi(0, 'MiniFilesCursorLine', { link = 'CursorLine' })
hi(0, 'MiniFilesDirectory', { link = 'Directory' })
hi(0, 'MiniFilesFile', { fg = '#e6eaea' })
hi(0, 'MiniFilesNormal', { link = 'NormalFloat' })
hi(0, 'MiniFilesTitle', { link = 'FloatTitle' })
hi(0, 'MiniFilesTitleFocused', { bold = true, fg = '#e6eaea' })
hi(0, 'MiniHipatternsFixme', { bg = '#e85c51', bold = true, fg = '#0f1c1e' })
hi(0, 'MiniHipatternsHack', { bg = '#fda47f', bold = true, fg = '#0f1c1e' })
hi(0, 'MiniHipatternsNote', { bg = '#5a93aa', bold = true, fg = '#0f1c1e' })
hi(0, 'MiniHipatternsTodo', { bg = '#7aa4a1', bold = true, fg = '#0f1c1e' })
hi(0, 'MiniIconsAzure', { fg = '#73a3b7' })
hi(0, 'MiniIconsBlue', { fg = '#5a93aa' })
hi(0, 'MiniIconsCyan', { fg = '#a1cdd8' })
hi(0, 'MiniIconsGreen', { fg = '#7aa4a1' })
hi(0, 'MiniIconsGrey', { fg = '#eaeeee' })
hi(0, 'MiniIconsOrange', { fg = '#ff8349' })
hi(0, 'MiniIconsPurple', { fg = '#ad5c7c' })
hi(0, 'MiniIconsRed', { fg = '#e85c51' })
hi(0, 'MiniIconsYellow', { fg = '#fda47f' })
hi(0, 'MiniIndentscopePrefix', { nocombine = true })
hi(0, 'MiniIndentscopeSymbol', { link = 'Delimiter' })
hi(0, 'MiniJump', { bg = '#ad5c7c', fg = '#0f1c1e' })
hi(0, 'MiniJump2dDim', { link = 'Comment' })
hi(0, 'MiniJump2dSpot', { bold = true, fg = '#a1cdd8' })
hi(0, 'MiniJump2dSpotAhead', { bold = true, fg = '#a1cdd8' })
hi(0, 'MiniJump2dSpotUnique', { bold = true, fg = '#fda47f' })
hi(0, 'MiniMapNormal', { link = 'NormalFloat' })
hi(0, 'MiniMapSymbolCount', { link = 'Special' })
hi(0, 'MiniMapSymbolLine', { link = 'Title' })
hi(0, 'MiniMapSymbolView', { link = 'Delimiter' })
hi(0, 'MiniNotifyBorder', { link = 'FloatBorder' })
hi(0, 'MiniNotifyNormal', { link = 'Normal' })
hi(0, 'MiniNotifyTitle', { link = 'Title' })
hi(0, 'MiniOperatorsExchangeFrom', { link = 'IncSearch' })
hi(0, 'MiniPickBorder', { link = 'FloatBorder' })
hi(0, 'MiniPickBorderBusy', { link = 'DiagnosticFloatingWarn' })
hi(0, 'MiniPickBorderText', { link = 'FloatTitle' })
hi(0, 'MiniPickHeader', { link = 'DiagnosticFloatingHint' })
hi(0, 'MiniPickIconDirectory', { link = 'Directory' })
hi(0, 'MiniPickIconFile', { link = 'MiniPickNormal' })
hi(0, 'MiniPickMatchCurrent', { link = 'CursorLine' })
hi(0, 'MiniPickMatchMarked', { link = 'Visual' })
hi(0, 'MiniPickMatchRanges', { link = 'DiagnosticFloatingHint' })
hi(0, 'MiniPickNormal', { link = 'NormalFloat' })
hi(0, 'MiniPickPreviewLine', { link = 'CursorLine' })
hi(0, 'MiniPickPreviewRegion', { link = 'IncSearch' })
hi(0, 'MiniPickPrompt', { link = 'DiagnosticFloatingInfo' })
hi(0, 'MiniStarterCurrent', { nocombine = true })
hi(0, 'MiniStarterFooter', { fg = '#ff9664', italic = true })
hi(0, 'MiniStarterHeader', { link = 'Title' })
hi(0, 'MiniStarterInactive', { link = 'Comment' })
hi(0, 'MiniStarterItem', { link = 'Normal' })
hi(0, 'MiniStarterItemBullet', { fg = '#587b7b' })
hi(0, 'MiniStarterItemPrefix', { fg = '#cb7985' })
hi(0, 'MiniStarterQuery', { fg = '#7aa4a1' })
hi(0, 'MiniStarterSection', { fg = '#e85c51' })
hi(0, 'MiniStatuslineDevinfo', { bg = '#1d3337', fg = '#cbd9d8' })
hi(0, 'MiniStatuslineFileinfo', { bg = '#1d3337', fg = '#cbd9d8' })
hi(0, 'MiniStatuslineFilename', { link = 'StatusLine' })
hi(0, 'MiniStatuslineInactive', { link = 'StatusLineNC' })
hi(0, 'MiniStatuslineModeCommand', { bg = '#fda47f', bold = true, fg = '#0f1c1e' })
hi(0, 'MiniStatuslineModeInsert', { bg = '#7aa4a1', bold = true, fg = '#0f1c1e' })
hi(0, 'MiniStatuslineModeNormal', { bg = '#a1cdd8', bold = true, fg = '#0f1c1e' })
hi(0, 'MiniStatuslineModeOther', { bg = '#5a93aa', bold = true, fg = '#0f1c1e' })
hi(0, 'MiniStatuslineModeReplace', { bg = '#e85c51', bold = true, fg = '#0f1c1e' })
hi(0, 'MiniStatuslineModeVisual', { bg = '#ad5c7c', bold = true, fg = '#0f1c1e' })
hi(0, 'MiniSurround', { link = 'IncSearch' })
hi(0, 'MiniTablineCurrent', { bg = '#2d4f56', bold = true, fg = '#cbd9d8' })
hi(0, 'MiniTablineModifiedCurrent', { bg = '#688888', bold = true, fg = '#1d3337' })
hi(0, 'MiniTablineVisible', { bg = '#1d3337', fg = '#cbd9d8' })
hi(0, 'MiniTablineModifiedVisible', { bg = '#587b7b', fg = '#1d3337' })
hi(0, 'MiniTablineTabpagesection', { bg = '#152528', bold = true, fg = '#e6eaea' })
hi(0, 'MiniTablineFill', { link = 'TabLineFill' })
hi(0, 'MiniTablineHidden', { bg = '#1d3337', fg = '#587b7b' })
hi(0, 'MiniTablineModifiedHidden', { bg = '#587b7b', fg = '#1d3337' })
hi(0, 'MiniTestEmphasis', { bold = true })
hi(0, 'MiniTestFail', { bold = true, fg = '#e85c51' })
hi(0, 'MiniTestPass', { bold = true, fg = '#7aa4a1' })
hi(0, 'MiniTrailspace', { bg = '#e85c51' })
hi(0, 'ModeMsg', { bold = true, fg = '#fda47f' })
hi(0, 'ModesCopy', { bg = '#fda47f' })
hi(0, 'ModesDelete', { bg = '#e85c51' })
hi(0, 'ModesInsert', { bg = '#a1cdd8' })
hi(0, 'ModesVisual', { bg = '#ad5c7c' })
hi(0, 'MoreMsg', { bold = true, fg = '#5a93aa' })
hi(0, 'NagicIconsOperator', { link = 'Operator' })
hi(0, 'NavicIconsBoolean', { link = 'Boolean' })
hi(0, 'NavicIconsClass', { link = 'Type' })
hi(0, 'NavicIconsConstant', { link = 'Constant' })
hi(0, 'NavicIconsConstructor', { link = 'Function' })
hi(0, 'NavicIconsEnum', { link = 'Constant' })
hi(0, 'NavicIconsEnumMember', { link = '@field' })
hi(0, 'NavicIconsEvent', { link = 'Constant' })
hi(0, 'NavicIconsField', { link = '@field' })
hi(0, 'NavicIconsFile', { link = 'Directory' })
hi(0, 'NavicIconsFunction', { link = 'Function' })
hi(0, 'NavicIconsInterface', { link = 'Constant' })
hi(0, 'NavicIconsKey', { link = 'Identifier' })
hi(0, 'NavicIconsMethod', { link = 'Function' })
hi(0, 'NavicIconsModule', { link = '@namespace' })
hi(0, 'NavicIconsNamespace', { link = '@namespace' })
hi(0, 'NavicIconsNull', { link = 'Type' })
hi(0, 'NavicIconsNumber', { link = 'Number' })
hi(0, 'NavicIconsObject', { link = '@namespace' })
hi(0, 'NavicIconsPackage', { link = '@namespace' })
hi(0, 'NavicIconsProperty', { link = '@property' })
hi(0, 'NavicIconsString', { link = 'String' })
hi(0, 'NavicIconsStruct', { link = 'Type' })
hi(0, 'NavicIconsTypeParameter', { link = '@field' })
hi(0, 'NavicIconsVariable', { link = '@variable' })
hi(0, 'NavicSeparator', { fg = '#2d4f56' })
hi(0, 'NavicText', { fg = '#e6eaea' })
hi(0, 'NeoTreeDimText', { link = 'Conceal' })
hi(0, 'NeoTreeDirectoryIcon', { fg = '#5a93aa' })
hi(0, 'NeoTreeDirectoryName', { fg = '#5a93aa' })
hi(0, 'NeoTreeDotfile', { fg = '#4d7d90' })
hi(0, 'NeoTreeFileName', { fg = '#cbd9d8' })
hi(0, 'NeoTreeFileNameOpened', { fg = '#e6eaea' })
hi(0, 'NeoTreeGitAdded', { fg = '#7aa4a1' })
hi(0, 'NeoTreeGitConflict', { fg = '#ff8349', italic = true })
hi(0, 'NeoTreeGitDeleted', { fg = '#e85c51' })
hi(0, 'NeoTreeGitIgnored', { fg = '#6d7f8b' })
hi(0, 'NeoTreeGitModified', { fg = '#fda47f' })
hi(0, 'NeoTreeGitUntracked', { fg = '#934e69' })
hi(0, 'NeoTreeIndentMarker', { fg = '#2d4f56' })
hi(0, 'NeoTreeNormal', { fg = '#e6eaea' })
hi(0, 'NeoTreeNormalNC', { link = 'NeoTreeNormal' })
hi(0, 'NeoTreeRootName', { bold = true, fg = '#ff8349' })
hi(0, 'NeoTreeSymbolicLinkTarget', { fg = '#ad6771' })
hi(0, 'NeogitBranch', { fg = '#fda47f' })
hi(0, 'NeogitDiffAdd', { fg = '#7aa4a1' })
hi(0, 'NeogitDiffAddHighlight', { bg = '#293e40' })
hi(0, 'NeogitDiffContextHighlight', { bg = '#1d3337' })
hi(0, 'NeogitDiffDelete', { fg = '#e85c51' })
hi(0, 'NeogitDiffDeleteHighlight', { bg = '#4a3332' })
hi(0, 'NeogitHunkHeader', { bg = '#254147', fg = '#5a93aa' })
hi(0, 'NeogitHunkHeaderHighlight', { bg = '#293e40', fg = '#5a93aa' })
hi(0, 'NeogitNotificationError', { fg = '#e85c51' })
hi(0, 'NeogitNotificationInfo', { fg = '#5a93aa' })
hi(0, 'NeogitNotificationWarning', { fg = '#fda47f' })
hi(0, 'NeogitRemote', { fg = '#7aa4a1' })
hi(0, 'NeotestAdapterName', { bold = true, fg = '#cb7985' })
hi(0, 'NeotestDir', { fg = '#a1cdd8' })
hi(0, 'NeotestExpandMarker', { link = 'Conceal' })
hi(0, 'NeotestFailed', { fg = '#e85c51' })
hi(0, 'NeotestFile', { fg = '#5a93aa' })
hi(0, 'NeotestFocused', { underline = true })
hi(0, 'NeotestIndent', { link = 'Conceal' })
hi(0, 'NeotestMarked', { bold = true, fg = '#e6eaea' })
hi(0, 'NeotestNamespace', { fg = '#89aeb8' })
hi(0, 'NeotestPassed', { fg = '#7aa4a1' })
hi(0, 'NeotestRunning', { fg = '#ff8349' })
hi(0, 'NeotestSkipped', { fg = '#fda47f' })
hi(0, 'NeotestTest', { link = 'Normal' })
hi(0, 'NonText', { fg = '#2d4f56' })
hi(0, 'Normal', { fg = '#e6eaea' })
hi(0, 'NormalFloat', { bg = '#0f1c1e', fg = '#e6eaea' })
hi(0, 'NormalNC', { fg = '#e6eaea' })
hi(0, 'NotifyBackground', { link = 'NormalFloat' })
hi(0, 'NotifyDEBUGBorder', { fg = '#486565' })
hi(0, 'NotifyDEBUGIcon', { link = 'NotifyDEBUGTitle' })
hi(0, 'NotifyDEBUGTitle', { fg = '#7aa4a1' })
hi(0, 'NotifyERRORBorder', { fg = '#7e413d' })
hi(0, 'NotifyERRORIcon', { link = 'NotifyERRORTitle' })
hi(0, 'NotifyERRORTitle', { fg = '#e85c51' })
hi(0, 'NotifyINFOBorder', { fg = '#385c69' })
hi(0, 'NotifyINFOIcon', { link = 'NotifyINFOTitle' })
hi(0, 'NotifyINFOTitle', { fg = '#5a93aa' })
hi(0, 'NotifyTRACEBorder', { fg = '#2d4f56' })
hi(0, 'NotifyTRACEIcon', { link = 'NotifyTRACETitle' })
hi(0, 'NotifyTRACETitle', { fg = '#6d7f8b' })
hi(0, 'NotifyWARNBorder', { fg = '#896554' })
hi(0, 'NotifyWARNIcon', { link = 'NotifyWARNTitle' })
hi(0, 'NotifyWARNTitle', { fg = '#fda47f' })
hi(0, 'Number', { fg = '#ff8349' })
hi(0, 'NvimTreeEmptyFolderName', { fg = '#587b7b' })
hi(0, 'NvimTreeFolderIcon', { fg = '#5a93aa' })
hi(0, 'NvimTreeFolderName', { fg = '#5a93aa' })
hi(0, 'NvimTreeGitDeleted', { fg = '#e85c51' })
hi(0, 'NvimTreeGitDirty', { fg = '#fda47f' })
hi(0, 'NvimTreeGitMerge', { fg = '#ff8349' })
hi(0, 'NvimTreeGitNew', { fg = '#7aa4a1' })
hi(0, 'NvimTreeGitRenamed', { link = 'NvimTreeGitDeleted' })
hi(0, 'NvimTreeGitStaged', { link = 'NvimTreeGitStaged' })
hi(0, 'NvimTreeImageFile', { fg = '#c8c8c8' })
hi(0, 'NvimTreeIndentMarker', { fg = '#2d4f56' })
hi(0, 'NvimTreeNormal', { fg = '#e6eaea' })
hi(0, 'NvimTreeOpenedFile', { fg = '#d38d97' })
hi(0, 'NvimTreeOpenedFolderName', { fg = '#73a3b7' })
hi(0, 'NvimTreeRootFolder', { bold = true, fg = '#ff8349' })
hi(0, 'NvimTreeSpecialFile', { fg = '#a1cdd8' })
hi(0, 'NvimTreeSymlink', { fg = '#ad6771' })
hi(0, 'NvimTreeVertSplit', { link = 'VertSplit' })
hi(0, 'Operator', { fg = '#cbd9d8' })
hi(0, 'Pmenu', { bg = '#293e40', fg = '#e6eaea' })
hi(0, 'PmenuSel', { bg = '#425e5e' })
hi(0, 'PmenuThumb', { bg = '#425e5e' })
hi(0, 'PounceAccept', { bg = '#ff9664', fg = '#152528' })
hi(0, 'PounceAcceptBest', { bg = '#afd4de', fg = '#152528' })
hi(0, 'PounceGap', { bg = '#293e40', fg = '#e6eaea' })
hi(0, 'PounceMatch', { bg = '#425e5e', fg = '#e6eaea' })
hi(0, 'PreProc', { fg = '#d38d97' })
hi(0, 'Question', { link = 'MoreMsg' })
hi(0, 'QuickFixLine', { link = 'CursorLine' })
hi(0, 'RainbowDelimiterBlue', { fg = '#5a93aa' })
hi(0, 'RainbowDelimiterCyan', { fg = '#a1cdd8' })
hi(0, 'RainbowDelimiterGreen', { fg = '#7aa4a1' })
hi(0, 'RainbowDelimiterOrange', { fg = '#ff8349' })
hi(0, 'RainbowDelimiterPurple', { fg = '#ad5c7c' })
hi(0, 'RainbowDelimiterRed', { fg = '#e85c51' })
hi(0, 'RainbowDelimiterYellow', { fg = '#fda47f' })
hi(0, 'Repeat', { link = 'Conditional' })
hi(0, 'Search', { bg = '#425e5e', fg = '#e6eaea' })
hi(0, 'SignColumn', { fg = '#587b7b' })
hi(0, 'SignColumnSB', { link = 'SignColumn' })
hi(0, 'SignifySignAdd', { fg = '#7aa4a1' })
hi(0, 'SignifySignChange', { fg = '#fda47f' })
hi(0, 'SignifySignDelete', { fg = '#e85c51' })
hi(0, 'SnacksBackdrop', { bg = '#000000' })
hi(0, 'SnacksImageMath', { fg = '#73a3b7' })
hi(0, 'SnacksPickerDir', { fg = '#cccccc' })
hi(0, 'Sneak', { bg = '#ad5c7c', fg = '#0f1c1e' })
hi(0, 'SneakScope', { bg = '#293e40' })
hi(0, 'Special', { fg = '#73a3b7' })
hi(0, 'SpecialKey', { link = 'NonText' })
hi(0, 'SpellBad', { sp = '#e85c51', undercurl = true })
hi(0, 'SpellCap', { sp = '#fda47f', undercurl = true })
hi(0, 'SpellLocal', { sp = '#5a93aa', undercurl = true })
hi(0, 'SpellRare', { sp = '#5a93aa', undercurl = true })
hi(0, 'Statement', { fg = '#ad5c7c' })
hi(0, 'StatusLine', { bg = 'none' })
hi(0, 'StatusLineNC', { bg = 'none', fg = "grey" })
hi(0, 'String', { fg = '#7aa4a1' })
hi(0, 'Substitute', { bg = '#e85c51', fg = '#152528' })
hi(0, 'SymbolOutlineConnector', { link = 'Conceal' })
hi(0, 'TSRainbowBlue', { fg = '#5a93aa' })
hi(0, 'TSRainbowCyan', { fg = '#a1cdd8' })
hi(0, 'TSRainbowGreen', { fg = '#7aa4a1' })
hi(0, 'TSRainbowOrange', { fg = '#ff8349' })
hi(0, 'TSRainbowRed', { fg = '#e85c51' })
hi(0, 'TSRainbowViolet', { fg = '#ad5c7c' })
hi(0, 'TSRainbowYellow', { fg = '#fda47f' })
hi(0, 'TabLine', { bg = '#1d3337', fg = '#cbd9d8' })
hi(0, 'TablineFill', { bg = 'none' })
hi(0, 'TabLineSel', { bg = '#587b7b', fg = '#152528' })
hi(0, 'TelescopeBorder', { fg = '#2d4f56' })
hi(0, 'TelescopeMatching', { link = 'Search' })
hi(0, 'TelescopeSelection', { link = 'CursorLine' })
hi(0, 'TelescopeSelectionCaret', { fg = '#7aa4a1' })
hi(0, 'Title', { bold = true, fg = '#73a3b7' })
hi(0, 'Todo', { bg = '#5a93aa', fg = '#152528' })
hi(0, 'Type', { fg = '#fda47f' })
hi(0, 'Visual', { bg = '#293e40' })
hi(0, 'WarningMsg', { fg = '#fda47f' })
hi(0, 'WhichKey', { link = 'Identifier' })
hi(0, 'WhichKeyDesc', { link = 'Keyword' })
hi(0, 'WhichKeyFloat', { link = 'NormalFloat' })
hi(0, 'WhichKeyGroup', { link = 'Function' })
hi(0, 'WhichKeySeparator', { link = 'Comment' })
hi(0, 'WhichKeySeperator', { link = 'Comment' })
hi(0, 'WhichKeyValue', { link = 'Comment' })
hi(0, 'Whitespace', { fg = '#254147' })
hi(0, 'WildMenu', { link = 'Pmenu' })
hi(0, 'WinBar', { bold = true, fg = '#587b7b' })
hi(0, 'WinBarNC', { bold = true, fg = '#587b7b' })
hi(0, 'WinSeparator', { fg = '#0f1c1e' })
hi(0, 'diffAdded', { fg = '#7aa4a1' })
hi(0, 'diffChanged', { fg = '#fda47f' })
hi(0, 'diffFile', { fg = '#5a93aa' })
hi(0, 'diffIndexLine', { fg = '#d38d97' })
hi(0, 'diffLine', { fg = '#ff9664' })
hi(0, 'diffNewFile', { fg = '#7aa4a1' })
hi(0, 'diffOldFile', { fg = '#fda47f' })
hi(0, 'diffRemoved', { fg = '#e85c51' })
hi(0, 'illuminatedWordRead', { link = 'LspReferenceText' })
hi(0, 'illuminatedWordText', { link = 'LspReferenceText' })
hi(0, 'illuminatedWordWrite', { link = 'LspReferenceText' })
hi(0, 'lCursor', { link = 'Cursor' })
hi(0, 'qfFileName', { link = 'Directory' })
hi(0, 'qfLineNr', { link = 'LineNr' })
hi(0, 'rainbowcol1', { fg = '#e85c51' })
hi(0, 'rainbowcol2', { fg = '#fda47f' })
hi(0, 'rainbowcol3', { fg = '#7aa4a1' })
hi(0, 'rainbowcol4', { fg = '#5a93aa' })
hi(0, 'rainbowcol5', { fg = '#a1cdd8' })
hi(0, 'rainbowcol6', { fg = '#ad5c7c' })
hi(0, 'rainbowcol7', { fg = '#cb7985' })
hi(0, 'typescriptParens', { fg = '#cbd9d8' })
-- Terminal colors
local g = vim.g
g.terminal_color_0 = '#2f3239'
g.terminal_color_1 = '#e85c51'
g.terminal_color_2 = '#7aa4a1'
g.terminal_color_3 = '#fda47f'
g.terminal_color_4 = '#5a93aa'
g.terminal_color_5 = '#ad5c7c'
g.terminal_color_6 = '#a1cdd8'
g.terminal_color_7 = '#ebebeb'
g.terminal_color_8 = '#4e5157'
g.terminal_color_9 = '#eb746b'
g.terminal_color_10 = '#8eb2af'
g.terminal_color_11 = '#fdb292'
g.terminal_color_12 = '#73a3b7'
g.terminal_color_13 = '#b97490'
g.terminal_color_14 = '#afd4de'
g.terminal_color_15 = '#eeeeee'

View file

@ -0,0 +1 @@
vim.opt_local.expandtab = false

View file

@ -0,0 +1 @@
vim.opt.tabstop = 4

34
nvim/after/lsp/gopls.lua Normal file
View file

@ -0,0 +1,34 @@
---@type vim.lsp.Config
return {
settings = {
gopls = {
gofumpt = true,
codelenses = {
gc_details = true,
test = true,
},
analyses = {
unusedvariable = true,
unusedparams = true,
useany = true,
unusedwrite = true,
nilness = true,
shadow = true,
},
hints = {
assignVariableTypes = true,
compositeLiteralFields = true,
compositeLiteralTypes = true,
constantValues = true,
functionTypeParameters = true,
ignoredError = true,
rangeVariableTypes = true,
parameterNames = true,
},
usePlaceholders = true,
staticcheck = true,
completeUnimported = true,
semanticTokens = true,
},
},
}

29
nvim/after/lsp/lua_ls.lua Normal file
View file

@ -0,0 +1,29 @@
return {
on_init = function(client)
local path = client.workspace_folders[1].name
if vim.loop.fs_stat(path .. '/.luarc.json') or vim.loop.fs_stat(path .. '/.luarc.jsonc') then
return
end
client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
runtime = {
version = 'LuaJIT',
},
workspace = {
checkThirdParty = false,
library = {
vim.env.VIMRUNTIME,
},
},
})
end,
settings = {
Lua = {
hint = {
enable = true,
arrayIndex = 'Enable',
setType = true,
},
},
},
}

View file

@ -0,0 +1,17 @@
local M = {}
M.is_jj_diffedit_open = function()
local qf = vim.fn.getqflist()
local entry = qf[1]
if not entry or not entry.user_data or not entry.user_data.diff then
return 0
else
return 1
end
end
M.diffedit = function()
vim.fn.jobstart('jj diffedit --tool diffview-new')
end
return M

View file

@ -0,0 +1,103 @@
local diff = require('mini.diff')
local M = {
cache = {},
}
M.get_buf_realpath = function(buf_id)
local path = vim.loop.fs_realpath(vim.api.nvim_buf_get_name(buf_id)) or ''
local cwd, basename = vim.fn.fnamemodify(path, ':h'), vim.fn.fnamemodify(path, ':t')
return path, cwd, basename
end
M.jj_start_watching_tree_state = function(buf_id, path)
local on_not_in_jj = vim.schedule_wrap(function()
if not vim.api.nvim_buf_is_valid(buf_id) then
M.cache[buf_id] = nil
return false
end
diff.fail_attach(buf_id)
M.cache[buf_id] = {}
end)
vim.system(
{ 'jj', 'workspace', 'root', '--ignore-working-copy' },
{cwd = vim.fn.fnamemodify(path, ':h')},
function(obj)
if obj.code ~= 0 then
return on_not_in_jj()
end
-- Set up index watching
local root = obj.stdout:gsub('\n+$', '') .. '/.jj/working_copy/tree_state'
local buf_fs_event = vim.loop.new_fs_event()
buf_fs_event:start(root, { stat = true }, function()
M.jj_set_ref_text(buf_id)
end)
M.cache[buf_id] = { fs_event = buf_fs_event }
-- Set reference text immediately
M.jj_set_ref_text(buf_id)
end
)
end
M.jj_set_ref_text = vim.schedule_wrap(function(buf_id)
if not vim.api.nvim_buf_is_valid(buf_id) then
return
end
local buf_set_ref_text = function(text)
pcall(diff.set_ref_text, buf_id, text)
end
-- react to possible rename
local path, cwd, basename = M.get_buf_realpath(buf_id)
if path == '' then
return buf_set_ref_text {}
end
vim.system(
{ 'jj', 'file', 'show', '--no-pager', '--ignore-working-copy', '-r', '@-', './' .. basename },
{ cwd = cwd },
vim.schedule_wrap(function(obj)
if obj.code ~= 0 then return buf_set_ref_text {} end
buf_set_ref_text(obj.stdout:gsub('\r\n', '\n'))
end)
)
end)
M.jj_invalidate_cache = function(buf_id)
pcall(vim.loop.fs_event_stop, M.cache[buf_id].fs_event)
M.cache[buf_id] = nil
end
M.gen_source = function()
local attach = function(buf_id)
-- Try attaching to a buffer only once
if M.cache[buf_id] ~= nil then
return false
end
-- - Possibly resolve symlinks to get data from the original repo
local path = M.get_buf_realpath(buf_id)
if path == '' then
return false
end
M.cache[buf_id] = {}
M.jj_start_watching_tree_state(buf_id, path)
end
local detach = function(buf_id)
M.jj_invalidate_cache(buf_id)
end
return {
name = 'jj',
attach = attach,
detach = detach,
apply_hunks = function(_, _) end -- staging does not apply for jj
}
end
return M

View file

@ -0,0 +1,165 @@
local cmd = vim.api.nvim_create_autocmd
-- open :h in buffers
cmd('FileType', {
group = vim.api.nvim_create_augroup('help', { clear = true }),
pattern = 'help',
callback = function(_)
vim.cmd.only()
vim.keymap.set('n', 'q', vim.cmd.bdelete, { noremap = true })
vim.bo.buflisted = false
end,
})
-- resize splits if window got resized
cmd({ 'VimResized' }, {
group = vim.api.nvim_create_augroup('resize_splits', { clear = true }),
callback = function()
vim.cmd('tabdo wincmd =')
vim.cmd('tabnext ' .. vim.fn.tabpagenr())
end,
})
-- Check if we need to reload the file when it changed
cmd({ 'FocusGained', 'TermClose', 'TermLeave' }, {
group = vim.api.nvim_create_augroup('check_reload', { clear = true }),
callback = function()
if vim.o.buftype ~= 'nofile' then
vim.cmd('checktime')
end
end,
})
-- Configure difftool buffers
cmd('FileType', {
pattern = 'qf',
group = vim.api.nvim_create_augroup('difftool', { clear = true }),
callback = function(event)
local function exec(fmt, str)
return os.execute(string.format(fmt, str))
end
local function refresh()
local qf = vim.fn.getqflist()
local entry = qf[1]
if not entry or not entry.user_data or not entry.user_data.diff then
return nil
end
local ns = vim.api.nvim_create_namespace('nvim.difftool.hl')
vim.api.nvim_buf_clear_namespace(event.buf, ns, 0, -1)
for i, item in ipairs(qf) do
local path = vim.fn.fnamemodify(item.user_data.right, ':t')
local hl = 'Added'
if
exec('git diff --quiet -- %s', path) ~= 0
or exec('git ls-files --error-unmatch -- %s > /dev/null 2>&1', path) ~= 0
then
hl = 'Removed'
end
vim.hl.range(event.buf, ns, hl, { i - 1, 0 }, { i - 1, -1 })
end
end
vim.keymap.set('n', 'gh', function()
local idx = vim.api.nvim_win_get_cursor(0)[1]
local qf = vim.fn.getqflist()
local filename = qf[idx].user_data.rel
if exec('git diff --quiet --cached -- %s', filename) ~= 0 then
exec('git restore --quiet --staged -- %s', filename)
else
exec('git add -- %s', filename)
end
refresh()
end)
vim.schedule(refresh)
end,
})
-- open conflicts in qflist
cmd('BufWinEnter', {
callback = function(event)
if not vim.wo.diff then
return
end
local items = {}
while true do
local found = vim.fn.search('^<<<<<<<', 'W')
if found == 0 then
break
end
local line = vim.api.nvim_buf_get_lines(event.buf, found - 1, found, false)[1]
table.insert(items, { bufnr = event.buf, lnum = found, text = line })
end
if #items > 1 then
vim.fn.setqflist(items, 'r')
vim.schedule(function()
vim.cmd(string.format('%dcopen', math.min(10, #items)))
end)
end
end,
})
-- Init treesitter
cmd('FileType', {
group = vim.api.nvim_create_augroup('treesitter', { clear = true }),
callback = function(event)
local bufnr = event.buf
vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
pcall(vim.treesitter.start, bufnr)
vim.keymap.set({ 'v', 'n' }, ']]', function()
require('nvim-treesitter-textobjects.move').goto_next_start('@function.outer', 'textobjects')
end, { buffer = bufnr })
vim.keymap.set({ 'v', 'n' }, '[[', function()
require('nvim-treesitter-textobjects.move').goto_previous_start('@function.outer', 'textobjects')
end, { buffer = bufnr })
vim.keymap.set({ 'v', 'n' }, ']a', function()
require('nvim-treesitter-textobjects.move').goto_next_start('@parameter.inner', 'textobjects')
end, { buffer = bufnr })
vim.keymap.set({ 'v', 'n' }, '[a', function()
require('nvim-treesitter-textobjects.move').goto_previous_start('@parameter.inner', 'textobjects')
end, { buffer = bufnr })
vim.keymap.set({ 'v', 'n' }, ']A', function()
require('nvim-treesitter-textobjects.swap').swap_next('@parameter.inner')
end, { buffer = bufnr })
vim.keymap.set({ 'v', 'n' }, '[A', function()
require('nvim-treesitter-textobjects.swap').swap_previous('@parameter.inner')
end, { buffer = bufnr })
end,
})
-- Init LSP
cmd('LspAttach', {
group = vim.api.nvim_create_augroup('UserLspConfig', {}),
callback = function(ev)
local client = vim.lsp.get_client_by_id(ev.data.client_id)
if not client then
return
end
vim.keymap.set('n', 'gO', function()
Snacks.picker.lsp_symbols { focus = 'list' }
end, { buffer = ev.buf })
vim.keymap.set('n', 'grh', function()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
end, { buffer = ev.buf })
vim.keymap.set('n', 'grl', vim.lsp.codelens.run, { buffer = ev.buf })
vim.keymap.set('n', 'gre', vim.diagnostic.setloclist, { buffer = ev.buf })
vim.keymap.set('n', 'grE', vim.diagnostic.setqflist, { buffer = ev.buf })
-- Auto-refresh code lenses
if client:supports_method('textDocument/codeLens') or client.server_capabilities.codeLensProvider then
vim.lsp.codelens.refresh { bufnr = ev.buf }
cmd({ 'InsertLeave', 'TextChanged' }, {
callback = function()
vim.lsp.codelens.refresh { bufnr = ev.buf }
end,
buffer = ev.buf,
})
end
end,
})

View file

@ -0,0 +1,64 @@
vim.cmd('colorscheme iofq')
vim.g.mapleader = ' '
vim.opt.autowrite = true
vim.opt.backspace = 'indent,eol,start'
vim.opt.confirm = true
vim.opt.completeopt = 'menuone,popup,noselect,fuzzy'
vim.opt.diffopt = 'internal,filler,closeoff,inline:char'
vim.opt.expandtab = true -- insert tabs as spaces
vim.opt.inccommand = 'split' -- incremental live completion
vim.opt.laststatus = 1 -- statusline only if split
vim.opt.nrformats:append('alpha') -- let Ctrl-a do letters as well
vim.opt.path:append('**') -- enable fuzzy :find ing
vim.opt.relativenumber = true
vim.opt.shadafile = 'NONE' -- disable shada (unless session)
vim.opt.shiftwidth = 0 -- >> shifts by tabstop
vim.opt.showmatch = true -- highlight matching brackets
vim.opt.showmode = true
vim.opt.signcolumn = 'no'
vim.opt.softtabstop = -1 -- backspace removes tabstop
vim.opt.swapfile = false
vim.opt.tabstop = 2 -- 2 space tabs are based
vim.opt.updatetime = 250 -- decrease update time
vim.opt.virtualedit = 'onemore'
vim.opt.winborder = 'rounded'
-- Configure Neovim diagnostic messages
vim.diagnostic.config {
virtual_text = true,
underline = true,
severity_sort = true,
float = {
focusable = false,
style = 'minimal',
source = 'if_many',
},
}
vim.lsp.enable {
'nixd',
'phpactor',
'gopls',
'lua_ls',
'basedpyright',
}
local map = vim.keymap.set
map('n', '\\t', function() -- Switch tab length on the fly
vim.o.tabstop = vim.o.tabstop == 8 and 2 or 2 * vim.o.tabstop
vim.notify('tabstop: ' .. vim.o.tabstop)
end)
map({ 'v', 'i' }, 'wq', '<esc>l')
map('v', '<', '<gv')
map('v', '>', '>gv')
map('n', 'n', 'nzz', { noremap = true })
map('n', 'N', 'Nzz', { noremap = true })
map('n', '<C-u>', '<C-u>zz', { noremap = true })
map('n', '<C-d>', '<C-d>zz', { noremap = true })
map('n', 'gq', vim.cmd.bdelete, { noremap = true })
map('n', 'gQ', function()
vim.cmd('bufdo bdelete')
end, { noremap = true })
vim.cmd.packadd('nvim.difftool')

View file

@ -0,0 +1,71 @@
local map = vim.keymap.set
vim.schedule(function()
require('mini.align').setup()
require('mini.surround').setup()
require('mini.splitjoin').setup { detect = { separator = '[,;\n]' } }
local ai = require('mini.ai')
ai.setup {
n_lines = 300,
custom_textobjects = {
i = require('mini.extra').gen_ai_spec.indent(),
a = ai.gen_spec.treesitter { a = '@parameter.outer', i = '@parameter.inner' },
f = ai.gen_spec.treesitter { a = '@function.outer', i = '@function.inner' },
},
}
local jump = require('mini.jump2d')
jump.setup {
mappings = {
start_jumping = '<leader>s',
},
view = { n_steps_ahead = 1, dim = true },
spotter = jump.gen_spotter.vimpattern(),
}
local diff = require('mini.diff')
diff.setup {
source = {
require('iofq.minidiff_jj').gen_source(),
diff.gen_source.git(),
},
}
map('n', '<leader>gp', MiniDiff.toggle_overlay)
require('mini.files').setup {
mappings = { go_in_plus = '<CR>' },
windows = {
preview = true,
width_preview = 50,
},
}
map('n', '<leader>nc', function()
MiniFiles.open(vim.api.nvim_buf_get_name(0), false) -- open current buffer's dir
end)
vim.api.nvim_create_autocmd('User', {
pattern = 'MiniFilesBufferCreate',
callback = function(args)
map('n', '<leader>nc', function()
MiniFiles.synchronize()
MiniFiles.close()
end, { buffer = args.data.buf_id })
map('n', '`', function()
local _, cur_entry_path = pcall(MiniFiles.get_fs_entry().path)
local cur_directory = vim.fs.dirname(cur_entry_path)
if cur_directory ~= '' then
vim.fn.chdir(cur_directory)
end
end, { buffer = args.data.buf_id })
end,
})
-- pass file rename events to LSP
vim.api.nvim_create_autocmd('User', {
group = vim.api.nvim_create_augroup('snacks_rename', { clear = true }),
pattern = 'MiniFilesActionRename',
callback = function(event)
Snacks.rename.on_rename_file(event.data.from, event.data.to)
end,
})
end)

View file

@ -0,0 +1,152 @@
local map = vim.keymap.set
require('mini.basics').setup { mappings = { windows = true } }
require('mini.icons').setup()
require('dart').setup {
tabline = {
icons = false,
label_marked_fg = 'cyan',
},
}
require('snacks').setup {
bigfile = { enabled = true },
terminal = { enabled = true },
indent = { enabled = true },
input = { enabled = true },
notifier = { enabled = true },
styles = { notification = { wo = { wrap = true } } },
picker = {
enabled = true,
matcher = {
frecency = true,
cwd_bonus = true,
},
layout = 'ivy_split',
sources = {
grep = { hidden = true },
lsp_symbols = {
filter = { default = true },
layout = {
preset = 'left',
layout = { width = 90, min_width = 90 },
},
},
smart = {
multi = {
'buffers',
{ source = 'files', hidden = true },
{ source = 'git_files', untracked = true },
},
},
},
},
}
map({ 'n', 't' }, '<C-\\>', Snacks.terminal.toggle)
map('n', '<leader>ff', Snacks.picker.smart)
map('n', '<leader><leader>', Snacks.picker.smart)
map('n', '<leader>fa', Snacks.picker.grep)
map('n', '<leader>f8', Snacks.picker.grep_word)
map('n', '<leader>f?', Snacks.picker.pickers)
map('n', '<leader>fu', Snacks.picker.undo)
map('n', '<leader>fj', Snacks.picker.jumps)
map('n', '<leader>f.', Snacks.picker.resume)
map('n', '<leader>fb', Snacks.picker.buffers)
map('n', '<leader>fq', Snacks.picker.qflist)
vim.schedule(function()
require('nvim-treesitter').setup()
require('nvim-treesitter-textobjects').setup()
require('nvim-autopairs').setup()
require('jj').setup {}
map('n', '<leader>gb', require('jj.annotate').file)
map('n', '<leader>jf', require('jj.picker').status)
map('n', '<leader>jj', require('jj.cmd').log)
map('n', '<leader>jh', require('jj.picker').file_history)
map('n', '<leader>je', require('iofq.jj').diffedit)
map('n', '<leader>jd', function()
require('jj.diff').open_vdiff { rev = 'trunk()' }
end)
require('quicker').setup()
map('n', '<leader>qf', function()
require('quicker').toggle { max_height = 20 }
end)
require('conform').setup {
notify_no_formatters = false,
formatters_by_ft = {
json = { 'jq' },
lua = { 'stylua' },
python = { 'ruff' },
nix = { 'nixfmt' },
fish = { 'fish_indent' },
['*'] = { 'trim_whitespace' },
},
format_on_save = function(bufnr)
-- Disable with a global or buffer-local variable
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
return
end
return { timeout_ms = 1500, lsp_format = 'fallback' }
end,
}
map('n', '\\f', function()
vim.b.disable_autoformat = not vim.b.disable_autoformat
vim.notify(string.format('Buffer formatting disabled: %s', vim.b.disable_autoformat))
end)
map('n', '\\F', function()
vim.g.disable_autoformat = not vim.g.disable_autoformat
vim.notify(string.format('Global formatting disabled: %s', vim.g.disable_autoformat))
end)
require('lint').linters_by_ft = {
docker = { 'hadolint' },
sh = { 'shellcheck' },
go = { 'golangcilint' },
fish = { 'fish' },
bash = { 'bash' },
nix = { 'nix' },
}
vim.api.nvim_create_autocmd({ 'BufWritePost' }, {
callback = function()
require('lint').try_lint(nil, { ignore_errors = true })
end,
})
vim.treesitter.language.register('markdown', 'blink-cmp-documentation')
require('blink.cmp').setup {
enabled = function()
return not vim.tbl_contains({ 'snacks_picker_input' }, vim.bo.filetype)
end,
sources = {
default = { 'lsp', 'path', 'snippets', 'ripgrep', 'buffer' },
providers = {
lsp = { fallbacks = {} }, -- include buffer even when LSP is active
path = { opts = { get_cwd = vim.fn.getcwd } }, -- use nvim pwd instead of current file pwd
ripgrep = {
module = 'blink-ripgrep',
name = 'rg',
score_offset = -10,
async = true,
},
},
},
cmdline = { completion = { menu = { auto_show = true } } },
completion = {
documentation = { auto_show = true },
menu = {
draw = {
columns = {
{ 'label', 'label_description', gap = 1 },
{ 'source_name', 'kind', gap = 1 },
},
},
},
},
signature = { enabled = true, trigger = { show_on_insert = true } },
}
end)