Compare commits

..

1 commit

Author SHA1 Message Date
github-actions[bot]
a96ea6e88b chore: update flake.lock
Flake lock file updates:

• Updated input 'dart':
    'github:iofq/dart.nvim/5fac43b0f7b5500c69a51a3717aef8ccceacd178?narHash=sha256-qGWNl%2BUQLvdFl8AAgywOHthizfKovk8az1xhRhQeVn8%3D' (2025-10-13)
  → 'github:iofq/dart.nvim/71421e7ef5aee8267e24dc562fdd07a83bda192e?narHash=sha256-ULrZW4b8SKRvPpJPt8/jkqqc/blQiIWUriNWVXA33so%3D' (2025-10-23)
• Updated input 'neovim-nightly-overlay':
    'github:nix-community/neovim-nightly-overlay/7ff73a295b0065bde2f8b43b31558136ca77bd98?narHash=sha256-39JFRb006AOsIcOq%2B03H3y6YcGyaphk1CW5DRi14cOE%3D' (2025-10-13)
  → 'github:nix-community/neovim-nightly-overlay/c58076a0d9b24bf77fef4fa2e7c43950914edf71?narHash=sha256-hQomzSbBiFsDXDMCjHmWXrAMgFlQlCiy7T37Eq7RvT4%3D' (2025-11-01)
• Removed input 'neovim-nightly-overlay/flake-compat'
• Updated input 'neovim-nightly-overlay/flake-parts':
    'github:hercules-ci/flake-parts/758cf7296bee11f1706a574c77d072b8a7baa881?narHash=sha256-wfG0S7pltlYyZTM%2BqqlhJ7GMw2fTF4mLKCIVhLii/4M%3D' (2025-10-01)
  → 'github:hercules-ci/flake-parts/864599284fc7c0ba6357ed89ed5e2cd5040f0c04?narHash=sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4%3D' (2025-10-20)
• 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/72b0bfa1fb7e897e5126aabae718a5480f466b9e?narHash=sha256-RnB%2BoJcP37YT9pjr1osUQtJc%2B1qcVyaaeSbiSyXwm1Y%3D' (2025-10-12)
  → 'github:neovim/neovim/1fddd74da7428e38b79ccb817dbd6952ff1d8ac6?narHash=sha256-YgMQaFD4L9%2BPEYSkUlBkqaKt%2BALPHiVgzgRbjOSW4tE%3D' (2025-10-31)
• Removed input 'neovim-nightly-overlay/treefmt-nix'
• Removed input 'neovim-nightly-overlay/treefmt-nix/nixpkgs'
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/cfe6b045750c3aa5127817bc3f44f2909b1ee175?narHash=sha256-z%2BC6KRPRjwqEsTEAwUavapBWcbR7YOlQP91O%2BW5L1ek%3D' (2025-10-13)
  → 'github:NixOS/nixpkgs/0e65d6bc462e57fe6a76a49d4eea909ba08b1dc1?narHash=sha256-rccG7eGGelDsu4eXPi2vdBR1pddZFZAd/JlB3NLjgy4%3D' (2025-11-01)
• Updated input 'nvim-treesitter-main':
    'github:iofq/nvim-treesitter-main/da2262419eb66cfa426aa62ccf1fc8fdea33b4a0?narHash=sha256-ZlVGaUbxHf4DNR4GWhF1mvlMhP8IBbwF0g8WO1SL%2BYw%3D' (2025-10-13)
  → 'github:iofq/nvim-treesitter-main/834d66648bb7a96a2ad11d53a33f2d9b13766447?narHash=sha256-xTQUiJu0jJNSEHEv4La1HbaFokup0eWr67Kqf/wDENA%3D' (2025-10-26)
• Updated input 'nvim-treesitter-main/nixpkgs':
    'github:nixos/nixpkgs/0b4defa2584313f3b781240b29d61f6f9f7e0df3?narHash=sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw%3D' (2025-10-09)
  → 'github:nixos/nixpkgs/01f116e4df6a15f4ccdffb1bcd41096869fb385c?narHash=sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d%2BdAiC3H%2BCDle4%3D' (2025-10-22)
• Updated input 'nvim-treesitter-main/nvim-treesitter':
    'github:nvim-treesitter/nvim-treesitter/0606c7a9dcaa5c5beee0b0f09043e9fdd1ba0a68?narHash=sha256-To/syCZPs7vKA0WkuBz7ZxCGT/wzj705QfxZng6Nsjo%3D' (2025-10-12)
  → 'github:nvim-treesitter/nvim-treesitter/98fe644cb3b5ba390d1bc3f89299f93c70020803?narHash=sha256-/SGikTPEMxI7rcfGvuJlNZs73/wZiQx14QX9xlfsTv0%3D' (2025-10-25)
2025-11-01 10:17:18 +00:00
10 changed files with 76 additions and 160 deletions

View file

@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
package_name: ["nvim"]
package_name: ["nvim-min"]
steps:
- uses: actions/checkout@v3
- uses: DeterminateSystems/nix-installer-action@main

View file

@ -5,7 +5,7 @@
## Usage
Try it out!
```bash
nix run "github:iofq/nvim.nix" #nvim
nix run "github:iofq/nvim.nix" #nvim-min
```
Or use in a flake:

54
flake.lock generated
View file

@ -6,11 +6,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1762016984,
"narHash": "sha256-ADZ2b2Oz+MOSjdKKCcQX9KmlhtmvVlZFEJr0HigWsOY=",
"lastModified": 1761202123,
"narHash": "sha256-ULrZW4b8SKRvPpJPt8/jkqqc/blQiIWUriNWVXA33so=",
"owner": "iofq",
"repo": "dart.nvim",
"rev": "8822aabbfef95eda2b22a8f7ee08912c762ef941",
"rev": "71421e7ef5aee8267e24dc562fdd07a83bda192e",
"type": "github"
},
"original": {
@ -61,11 +61,11 @@
]
},
"locked": {
"lastModified": 1762980239,
"narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=",
"lastModified": 1760948891,
"narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "52a2caecc898d0b46b2b905f058ccc5081f842da",
"rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04",
"type": "github"
},
"original": {
@ -203,11 +203,11 @@
]
},
"locked": {
"lastModified": 1763078664,
"narHash": "sha256-HDuT9S50/3+2blDIL4Y5qX8g5bA5FtpzP9lyagmyNq4=",
"lastModified": 1761955453,
"narHash": "sha256-hQomzSbBiFsDXDMCjHmWXrAMgFlQlCiy7T37Eq7RvT4=",
"owner": "nix-community",
"repo": "neovim-nightly-overlay",
"rev": "994eb1828abe40f256e27ff38663b4f3f819d4cb",
"rev": "c58076a0d9b24bf77fef4fa2e7c43950914edf71",
"type": "github"
},
"original": {
@ -219,11 +219,11 @@
"neovim-src": {
"flake": false,
"locked": {
"lastModified": 1763078375,
"narHash": "sha256-oGwmSPl+FA0y2uPEGkkavr5sxLkpHR6+Cio8eZ8OtPo=",
"lastModified": 1761949631,
"narHash": "sha256-YgMQaFD4L9+PEYSkUlBkqaKt+ALPHiVgzgRbjOSW4tE=",
"owner": "neovim",
"repo": "neovim",
"rev": "d017f3c9a0b745e0c57feb8c92dcc852948f7301",
"rev": "1fddd74da7428e38b79ccb817dbd6952ff1d8ac6",
"type": "github"
},
"original": {
@ -277,11 +277,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1763114379,
"narHash": "sha256-48vHwFWqC7oUMJqcq3xCB84FBHHjvO3rNL18si1IRvo=",
"lastModified": 1761991861,
"narHash": "sha256-rccG7eGGelDsu4eXPi2vdBR1pddZFZAd/JlB3NLjgy4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fa972b1d29bb165bebc538c227a6e57f33631789",
"rev": "0e65d6bc462e57fe6a76a49d4eea909ba08b1dc1",
"type": "github"
},
"original": {
@ -293,11 +293,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1762363567,
"narHash": "sha256-YRqMDEtSMbitIMj+JLpheSz0pwEr0Rmy5mC7myl17xs=",
"lastModified": 1761114652,
"narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "ae814fd3904b621d8ab97418f1d0f2eb0d3716f4",
"rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c",
"type": "github"
},
"original": {
@ -310,11 +310,11 @@
"nvim-treesitter": {
"flake": false,
"locked": {
"lastModified": 1762599340,
"narHash": "sha256-hXs9TdytYtBeXW6nx9QZiQcqsuj1uLuZMf8kclaScQ8=",
"lastModified": 1761385693,
"narHash": "sha256-/SGikTPEMxI7rcfGvuJlNZs73/wZiQx14QX9xlfsTv0=",
"owner": "nvim-treesitter",
"repo": "nvim-treesitter",
"rev": "d97d226cfd4c00af000b3b8529261352677fc6a8",
"rev": "98fe644cb3b5ba390d1bc3f89299f93c70020803",
"type": "github"
},
"original": {
@ -331,11 +331,11 @@
"nvim-treesitter-textobjects": "nvim-treesitter-textobjects"
},
"locked": {
"lastModified": 1762704339,
"narHash": "sha256-hRGD+CE04Z1qAJAaiJs6o+blS0WUEqfVS/5cqA0NcDI=",
"lastModified": 1761496664,
"narHash": "sha256-xTQUiJu0jJNSEHEv4La1HbaFokup0eWr67Kqf/wDENA=",
"owner": "iofq",
"repo": "nvim-treesitter-main",
"rev": "69e9583fe72fa2dbffcb740563a9cc48396e3f75",
"rev": "834d66648bb7a96a2ad11d53a33f2d9b13766447",
"type": "github"
},
"original": {
@ -347,11 +347,11 @@
"nvim-treesitter-textobjects": {
"flake": false,
"locked": {
"lastModified": 1762622273,
"narHash": "sha256-gzeT2gtmFaXhRSC13mijH6tlk/eWRZaUrGiEpKoAorA=",
"lastModified": 1756368113,
"narHash": "sha256-+KmOpRi4JAqm6UqYdtk80jwFrJhLCs0lZM/Liofq0R4=",
"owner": "nvim-treesitter",
"repo": "nvim-treesitter-textobjects",
"rev": "7024f8687b060dd9a425bde1fa8621c896a38138",
"rev": "1b2d85d3de6114c4bcea89ffb2cd1ce9e3a19931",
"type": "github"
},
"original": {

View file

@ -73,6 +73,7 @@
packages = rec {
default = nvim;
nvim = pkgs.nvim-pkg;
nvim-min = pkgs.nvim-min-pkg;
};
devShells = {
default = shell;

1
new
View file

@ -1 +0,0 @@
print('kjsnadf')

View file

@ -17,18 +17,41 @@ let
nvim-treesitter
nvim-treesitter-textobjects
quicker-nvim
refactoring-nvim
render-markdown-nvim
snacks-nvim
];
packages = with prev; [
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;
inherit plugins;
packages = basePackages ++ extraPackages;
};
nvim-min-pkg = mkNeovim {
inherit plugins;
packages = basePackages;
};
nvim-luarc-json = final.mk-luarc-json {

View file

@ -49,58 +49,4 @@ function M.status()
}
end
function M.file_history(filename)
local function preview(ctx)
if ctx.item.rev then
Snacks.picker.preview.cmd(
{ 'jj', 'log', '--ignore-working-copy', '--git', '-r', ctx.item.rev, '-p', filename },
ctx
)
else
ctx.preview:reset()
return 'No preview available.'
end
end
local function confirm(picker, item)
picker:close()
local cmd = string.format('jj show --git -r %s', item.rev)
local out = vim.fn.systemlist(cmd)
local bufnr = vim.api.nvim_create_buf(false, true)
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, out)
vim.bo[bufnr].bufhidden = 'wipe'
vim.bo[bufnr].buftype = 'nofile'
vim.bo[bufnr].filetype = 'diff'
vim.keymap.set('n', 'q', vim.cmd.bdelete, { buffer = bufnr, noremap = true })
vim.api.nvim_set_current_buf(bufnr)
end
local function get_history(f)
local status_raw = vim.fn.system(
'jj log --ignore-working-copy --no-graph'
.. ' --template \'if(root, format_root_commit(self), label(if(current_working_copy, "working_copy"), concat(separate(" ", self.change_id().shortest(8), self.bookmarks()), " | ", if(empty, label("empty", "(empty)")), if(description, description.first_line(), label(if(empty, "empty"), description_placeholder),),) ++ "\n",),)\''
.. ' -- '
.. f
)
local lines = {}
for line in status_raw:gmatch('[^\r\n]+') do
local rev = string.match(line, '(%w+)%s.*')
table.insert(lines, {
text = line,
rev = rev,
})
end
return lines
end
Snacks.picker.pick {
format = 'text',
title = 'jj file history for ' .. filename,
items = get_history(filename),
preview = preview,
confirm = confirm,
}
end
return M

View file

@ -30,7 +30,7 @@ cmd({ 'FocusGained', 'TermClose', 'TermLeave' }, {
})
-- Configure difftool buffers
cmd('FileType', {
vim.api.nvim_create_autocmd('FileType', {
pattern = 'qf',
group = vim.api.nvim_create_augroup('difftool', { clear = true }),
callback = function(event)
@ -41,14 +41,14 @@ cmd('FileType', {
local qf = vim.fn.getqflist()
local entry = qf[1]
if not entry or not entry.user_data or not entry.user_data.diff then
if not entry 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, ':.')
local path = vim.fn.fnamemodify(item.user_data.right, ':t')
local hl = 'Added'
if
exec('git diff --quiet -- %s', path) ~= 0
@ -75,71 +75,6 @@ cmd('FileType', {
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
local function get_hunks(bufnr)
local conf_start = vim.fn.search('^<<<<<<<', 'bc')
local base_start = vim.fn.search('^|||||||', 'W')
local base_end = vim.fn.search('^=======', 'W')
local conf_end = vim.fn.search('^>>>>>>>', 'W')
local left = vim.api.nvim_buf_get_lines(bufnr, conf_start, base_start - 1, false)
local right = vim.api.nvim_buf_get_lines(bufnr, base_end, conf_end - 1, false)
return {
start = conf_start,
stop = conf_end,
left = left,
right = right,
}
end
local function apply_hunk(hunks, first)
local result = {}
if first == -1 then -- left first
vim.list_extend(result, hunks.left)
vim.list_extend(result, hunks.right)
else
vim.list_extend(result, hunks.right)
vim.list_extend(result, hunks.left)
end
-- apply hunk in place
vim.api.nvim_buf_set_lines(0, hunks.start - 1, hunks.stop, false, result)
end
-- "combine" mappings ala vscode's merge editor
vim.keymap.set('n', '<leader>dl', function()
apply_hunk(get_hunks(event.buf), -1)
end, { buffer = event.buf })
vim.keymap.set('n', '<leader>dr', function()
apply_hunk(get_hunks(event.buf), 1)
end, { buffer = event.buf })
end,
})
-- Init treesitter
cmd('FileType', {
group = vim.api.nvim_create_augroup('treesitter', { clear = true }),

View file

@ -18,7 +18,9 @@ vim.schedule(function()
require('mini.git').setup()
map('n', '<leader>gb', '<Cmd>Git blame -- %<CR>')
map('n', '<leader>go', MiniGit.show_at_cursor)
map('n', '<leader>go', function()
return MiniGit.show_at_cursor()
end)
local jump = require('mini.jump2d')
jump.setup {

View file

@ -3,7 +3,12 @@ local map = vim.keymap.set
require('mini.basics').setup { mappings = { windows = true } }
require('mini.icons').setup()
require('dart').setup {}
require('dart').setup {
tabline = {
icons = false,
label_marked_fg = 'cyan',
},
}
require('snacks').setup {
bigfile = { enabled = true },
@ -51,15 +56,19 @@ map('n', '<leader>f.', Snacks.picker.resume)
map('n', '<leader>fb', Snacks.picker.buffers)
map('n', '<leader>fq', Snacks.picker.qflist)
map('n', '<leader>jf', require('iofq.snacks_jj').status)
map('n', '<leader>jh', function()
require('iofq.snacks_jj').file_history(vim.api.nvim_buf_get_name(0))
end)
vim.schedule(function()
require('nvim-treesitter').setup()
require('nvim-treesitter-textobjects').setup()
require('render-markdown').setup()
require('nvim-autopairs').setup()
require('refactoring').setup()
map('n', '<leader>rr', require('refactoring').select_refactor)
map('n', '<leader>rv', function()
require('refactoring').refactor('Inline Variable')
end)
require('quicker').setup()
map('n', '<leader>qf', function()
require('quicker').toggle { max_height = 20 }
@ -71,6 +80,7 @@ vim.schedule(function()
json = { 'jq' },
lua = { 'stylua' },
python = { 'ruff' },
nix = { 'nixfmt' },
fish = { 'fish_indent' },
['*'] = { 'trim_whitespace' },
},
@ -116,7 +126,7 @@ vim.schedule(function()
sources = {
default = { 'lsp', 'path', 'snippets', 'ripgrep', 'buffer' },
providers = {
lsp = { fallbacks = {}, async = true }, -- include buffer even when LSP is active
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',