Compare commits
No commits in common. "3caac1a07e664ef66778413f34cda7e2a9f9b564" and "d5279a25d265e23081ddbbb881f16ea3e225b434" have entirely different histories.
3caac1a07e
...
d5279a25d2
22 changed files with 116 additions and 424 deletions
|
|
@ -135,7 +135,6 @@ bind = , I, exec, hyprctl dispatch submap reset; ctl idle
|
||||||
bind = , K, exec, hyprctl dispatch submap reset; ctl keyboard next
|
bind = , K, exec, hyprctl dispatch submap reset; ctl keyboard next
|
||||||
bind = , M, exec, hyprctl dispatch submap reset; ctl media
|
bind = , M, exec, hyprctl dispatch submap reset; ctl media
|
||||||
bind = , P, exec, hyprctl dispatch submap reset; ctl power
|
bind = , P, exec, hyprctl dispatch submap reset; ctl power
|
||||||
bind = , D, exec, hyprctl dispatch submap reset; ctl dictate
|
|
||||||
bind = , T, exec, hyprctl dispatch submap reset; theme
|
bind = , T, exec, hyprctl dispatch submap reset; theme
|
||||||
|
|
||||||
bind = , catchall, submap, reset
|
bind = , catchall, submap, reset
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,18 @@
|
||||||
|
-- Rerun tests only if their modification time changed.
|
||||||
cache = true
|
cache = true
|
||||||
|
|
||||||
ignore = {
|
ignore = {
|
||||||
"122",
|
"122", -- Setting a read-only field of a global variable.
|
||||||
"212",
|
"212", -- Unused argument, In the case of callback function, _arg_name is easier to understand than _, so this option is set to off.
|
||||||
"631",
|
"631", -- max_line_length, vscode pkg URL is too long
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- Global objects defined by the C code
|
||||||
read_globals = {
|
read_globals = {
|
||||||
"vim",
|
"vim",
|
||||||
}
|
}
|
||||||
|
|
||||||
include_files = { "lua", "tests" }
|
include_files = { "lua", "tests" }
|
||||||
exclude_files = { ".luacheckrc", "tests/**/*_spec.lua" }
|
exclude_files = { ".luacheckrc", "tests/**/*_spec.lua" }
|
||||||
|
|
||||||
|
-- vim: ft=lua tw=80
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,10 @@
|
||||||
{
|
{
|
||||||
"guard-collection": { "branch": "main", "commit": "edf6c86c06badc972964dadb7fd469022690cbf0" },
|
"lazy.nvim": {
|
||||||
"guard.nvim": { "branch": "main", "commit": "addb8d2f40662b8b62d60dd7d18f503beb2332e7" }
|
"branch": "main",
|
||||||
|
"commit": "85c7ff3711b730b4030d03144f6db6375044ae82"
|
||||||
|
},
|
||||||
|
"midnight.nvim": {
|
||||||
|
"branch": "main",
|
||||||
|
"commit": "fe062a6f2e5bd77cd8a260f61e6e12789eaf4f13"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,67 +2,65 @@ local M = {}
|
||||||
|
|
||||||
local Methods = vim.lsp.protocol.Methods
|
local Methods = vim.lsp.protocol.Methods
|
||||||
|
|
||||||
local function fzf_or(fzf_cmd, fallback)
|
|
||||||
return function()
|
|
||||||
pcall(require('lz.n').trigger_load, 'ibhagwan/fzf-lua')
|
|
||||||
if pcall(require, 'fzf-lua') then
|
|
||||||
vim.cmd('FzfLua ' .. fzf_cmd)
|
|
||||||
else
|
|
||||||
fallback()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.on_attach(client, bufnr)
|
function M.on_attach(client, bufnr)
|
||||||
if client:supports_method(Methods.textDocument_hover) then
|
if client:supports_method(Methods.textDocument_hover) then
|
||||||
vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = bufnr })
|
vim.keymap.set('n', 'K', vim.lsp.buf.hover, { buffer = bufnr })
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local ok, _ = pcall(require, 'fzf-lua')
|
||||||
|
|
||||||
local mappings = {
|
local mappings = {
|
||||||
{
|
{
|
||||||
Methods.textDocument_codeAction,
|
Methods.textDocument_codeAction,
|
||||||
'gra',
|
'gra',
|
||||||
fzf_or('lsp_code_actions', vim.lsp.buf.code_action),
|
ok and '<cmd>FzfLua lsp_code_actions<CR>'
|
||||||
|
or vim.lsp.buf.code_action,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Methods.textDocument_declaration,
|
Methods.textDocument_declaration,
|
||||||
'gD',
|
'gD',
|
||||||
fzf_or('lsp_declarations', vim.lsp.buf.declaration),
|
ok and '<cmd>FzfLua lsp_declarations<CR>'
|
||||||
|
or vim.lsp.buf.declaration,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Methods.textDocument_definition,
|
Methods.textDocument_definition,
|
||||||
'gd',
|
'gd',
|
||||||
fzf_or('lsp_definitions', vim.lsp.buf.definition),
|
ok and '<cmd>FzfLua lsp_definitions<CR>' or vim.lsp.buf.definition,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Methods.textDocument_implementation,
|
Methods.textDocument_implementation,
|
||||||
'gri',
|
'gri',
|
||||||
fzf_or('lsp_implementations', vim.lsp.buf.implementation),
|
ok and '<cmd>FzfLua lsp_implementations<CR>'
|
||||||
|
or vim.lsp.buf.implementation,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Methods.textDocument_references,
|
Methods.textDocument_references,
|
||||||
'grr',
|
'grr',
|
||||||
fzf_or('lsp_references', vim.lsp.buf.references),
|
ok and '<cmd>FzfLua lsp_references<CR>' or vim.lsp.buf.references,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Methods.textDocument_typeDefinition,
|
Methods.textDocument_typeDefinition,
|
||||||
'grt',
|
'grt',
|
||||||
fzf_or('lsp_typedefs', vim.lsp.buf.type_definition),
|
ok and '<cmd>FzfLua lsp_typedefs<CR>'
|
||||||
|
or vim.lsp.buf.type_definition,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Methods.textDocument_documentSymbol,
|
Methods.textDocument_documentSymbol,
|
||||||
'gs',
|
'gs',
|
||||||
fzf_or('lsp_document_symbols', vim.lsp.buf.document_symbol),
|
ok and '<cmd>FzfLua lsp_document_symbols<CR>'
|
||||||
|
or vim.lsp.buf.document_symbol,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Methods.workspace_diagnostic,
|
Methods.workspace_diagnostic,
|
||||||
'gw',
|
'gw',
|
||||||
fzf_or('lsp_workspace_diagnostics', vim.diagnostic.setqflist),
|
ok and '<cmd>FzfLua lsp_workspace_diagnostics<CR>'
|
||||||
|
or vim.diagnostic.setqflist,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Methods.workspace_symbol,
|
Methods.workspace_symbol,
|
||||||
'gS',
|
'gS',
|
||||||
fzf_or('lsp_workspace_symbols', vim.lsp.buf.workspace_symbol),
|
ok and '<cmd>FzfLua lsp_workspace_symbols<CR>'
|
||||||
|
or vim.lsp.buf.workspace_symbol,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ return {
|
||||||
filetypes = { 'typst' },
|
filetypes = { 'typst' },
|
||||||
settings = {
|
settings = {
|
||||||
formatterMode = 'typstyle',
|
formatterMode = 'typstyle',
|
||||||
-- exportPdf = 'onSave',
|
exportPdf = 'onSave',
|
||||||
semanticTokens = 'disable',
|
semanticTokens = 'disable',
|
||||||
lint = {
|
lint = {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
|
|
|
||||||
|
|
@ -60,30 +60,6 @@ local git_status = new_git_status()
|
||||||
local synctex_pdf = {}
|
local synctex_pdf = {}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
{
|
|
||||||
'barrettruth/diffs.nvim',
|
|
||||||
enabled = true,
|
|
||||||
before = function()
|
|
||||||
vim.g.diffs = {
|
|
||||||
debug = false,
|
|
||||||
integrations = { fugitive = true },
|
|
||||||
extra_filetypes = { 'diff' },
|
|
||||||
hide_prefix = true,
|
|
||||||
highlights = {
|
|
||||||
gutter = true,
|
|
||||||
vim = {
|
|
||||||
enabled = true,
|
|
||||||
-- max_lines = 500,
|
|
||||||
},
|
|
||||||
-- treesitter = { max_lines = 10 },
|
|
||||||
intra = {
|
|
||||||
enabled = true,
|
|
||||||
max_lines = 500,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
'barrettruth/midnight.nvim',
|
'barrettruth/midnight.nvim',
|
||||||
enabled = true,
|
enabled = true,
|
||||||
|
|
@ -105,14 +81,14 @@ return {
|
||||||
'barrettruth/canola.nvim',
|
'barrettruth/canola.nvim',
|
||||||
enabled = true,
|
enabled = true,
|
||||||
after = function()
|
after = function()
|
||||||
require('oil').setup({
|
require('canola').setup({
|
||||||
skip_confirm_for_simple_edits = true,
|
skip_confirm_for_simple_edits = true,
|
||||||
cleanup_buffers_on_delete = true,
|
cleanup_buffers_on_delete = true,
|
||||||
prompt_save_on_select_new_entry = false,
|
prompt_save_on_select_new_entry = false,
|
||||||
float = { border = 'single' },
|
float = { border = 'single' },
|
||||||
view_options = {
|
view_options = {
|
||||||
is_hidden_file = function(name, bufnr)
|
is_hidden_file = function(name, bufnr)
|
||||||
local dir = require('oil').get_current_dir(bufnr)
|
local dir = require('canola').get_current_dir(bufnr)
|
||||||
local is_dotfile = vim.startswith(name, '.')
|
local is_dotfile = vim.startswith(name, '.')
|
||||||
and name ~= '..'
|
and name ~= '..'
|
||||||
if not dir then
|
if not dir then
|
||||||
|
|
@ -145,7 +121,7 @@ return {
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
local refresh = require('oil.actions').refresh
|
local refresh = require('canola.actions').refresh
|
||||||
local orig_refresh = refresh.callback
|
local orig_refresh = refresh.callback
|
||||||
refresh.callback = function(...)
|
refresh.callback = function(...)
|
||||||
git_status = new_git_status()
|
git_status = new_git_status()
|
||||||
|
|
@ -161,37 +137,23 @@ return {
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
group = vim.api.nvim_create_augroup('AOil', { clear = true }),
|
group = vim.api.nvim_create_augroup(
|
||||||
|
'ACanola',
|
||||||
|
{ clear = true }
|
||||||
|
),
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
event = 'DeferredUIEnter',
|
event = 'DeferredUIEnter',
|
||||||
keys = {
|
keys = {
|
||||||
{ '-', '<cmd>e .<cr>' },
|
{ '-', '<cmd>e .<cr>' },
|
||||||
{ '_', '<cmd>Oil<cr>' },
|
{ '_', '<cmd>Canola<cr>' },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'barrettruth/pending.nvim',
|
'barrettruth/pending.nvim',
|
||||||
before = function()
|
before = function()
|
||||||
vim.g.pending = {
|
vim.g.pending = {
|
||||||
view = {
|
|
||||||
queue = {
|
|
||||||
sort = {
|
|
||||||
'lol',
|
|
||||||
'dne',
|
|
||||||
'status',
|
|
||||||
'due',
|
|
||||||
'priority',
|
|
||||||
'order',
|
|
||||||
'id',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
category = { hide_done_categories = true },
|
|
||||||
},
|
|
||||||
debug = false,
|
debug = false,
|
||||||
sync = {
|
|
||||||
s3 = { bucket = 'pending.nvim', region = 'us-east-1' },
|
|
||||||
},
|
|
||||||
data_path = (
|
data_path = (
|
||||||
os.getenv('XDG_STATE_HOME')
|
os.getenv('XDG_STATE_HOME')
|
||||||
or (os.getenv('HOME') .. '/.local/state')
|
or (os.getenv('HOME') .. '/.local/state')
|
||||||
|
|
@ -346,7 +308,7 @@ return {
|
||||||
vim.filetype.add({
|
vim.filetype.add({
|
||||||
extension = { puml = 'plantuml', pu = 'plantuml' },
|
extension = { puml = 'plantuml', pu = 'plantuml' },
|
||||||
})
|
})
|
||||||
|
vim.fn.serverstart('/tmp/nvim-preview.sock')
|
||||||
vim.api.nvim_create_autocmd('User', {
|
vim.api.nvim_create_autocmd('User', {
|
||||||
pattern = 'PreviewCompileSuccess',
|
pattern = 'PreviewCompileSuccess',
|
||||||
callback = function(args)
|
callback = function(args)
|
||||||
|
|
@ -378,31 +340,12 @@ return {
|
||||||
})
|
})
|
||||||
vim.g.preview = {
|
vim.g.preview = {
|
||||||
debug = false,
|
debug = false,
|
||||||
github = {
|
github = true,
|
||||||
output = function(ctx)
|
|
||||||
return '/tmp/'
|
|
||||||
.. vim.fn.fnamemodify(ctx.file, ':t:r')
|
|
||||||
.. '.html'
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
typst = { open = { 'sioyek', '--new-instance' } },
|
typst = { open = { 'sioyek', '--new-instance' } },
|
||||||
plantuml = true,
|
plantuml = true,
|
||||||
mermaid = true,
|
mermaid = true,
|
||||||
latex = {
|
latex = {
|
||||||
open = { 'sioyek', '--instance-name', 'preview' },
|
open = { 'sioyek', '--instance-name', 'preview' },
|
||||||
args = function(ctx)
|
|
||||||
local dir = vim.fn.fnamemodify(ctx.file, ':h')
|
|
||||||
.. '/build'
|
|
||||||
vim.fn.mkdir(dir, 'p')
|
|
||||||
return {
|
|
||||||
'-pdf',
|
|
||||||
'-interaction=nonstopmode',
|
|
||||||
'-synctex=1',
|
|
||||||
'-output-directory=' .. dir,
|
|
||||||
'-pdflatex=pdflatex -file-line-error %O %S',
|
|
||||||
ctx.file,
|
|
||||||
}
|
|
||||||
end,
|
|
||||||
output = function(ctx)
|
output = function(ctx)
|
||||||
return vim.fn.fnamemodify(ctx.file, ':h')
|
return vim.fn.fnamemodify(ctx.file, ':h')
|
||||||
.. '/build/'
|
.. '/build/'
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
return {
|
return {
|
||||||
'ibhagwan/fzf-lua',
|
'barrettruth/fzf-lua',
|
||||||
after = function()
|
after = function()
|
||||||
local fzf = require('fzf-lua')
|
local fzf = require('fzf-lua')
|
||||||
local has_nonicons = pcall(require, 'nonicons')
|
local has_nonicons = pcall(require, 'nonicons')
|
||||||
|
|
@ -94,7 +94,6 @@ return {
|
||||||
fzf_reload.reload()
|
fzf_reload.reload()
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
cmd = 'FzfLua',
|
|
||||||
keys = {
|
keys = {
|
||||||
{
|
{
|
||||||
'<c-t>',
|
'<c-t>',
|
||||||
|
|
|
||||||
|
|
@ -218,3 +218,30 @@ end)
|
||||||
vim.keymap.set('n', '<leader>gp', function()
|
vim.keymap.set('n', '<leader>gp', function()
|
||||||
forge_picker('pr', 'all')
|
forge_picker('pr', 'all')
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'barrettruth/diffs.nvim',
|
||||||
|
enabled = true,
|
||||||
|
before = function()
|
||||||
|
vim.g.diffs = {
|
||||||
|
debug = false,
|
||||||
|
integrations = { fugitive = true },
|
||||||
|
extra_filetypes = { 'diff' },
|
||||||
|
hide_prefix = false,
|
||||||
|
highlights = {
|
||||||
|
-- blend_alpha = 0.9,
|
||||||
|
gutter = true,
|
||||||
|
vim = {
|
||||||
|
enabled = true,
|
||||||
|
max_lnes = 500,
|
||||||
|
},
|
||||||
|
intra = {
|
||||||
|
enabled = true,
|
||||||
|
max_lines = 500,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -25,7 +25,7 @@ return {
|
||||||
args = { '--profile', 'black', '-' },
|
args = { '--profile', 'black', '-' },
|
||||||
stdin = true,
|
stdin = true,
|
||||||
})
|
})
|
||||||
:fmt('black')
|
:append('black')
|
||||||
:lint('mypy')
|
:lint('mypy')
|
||||||
|
|
||||||
ft('lua'):fmt('stylua'):lint('selene')
|
ft('lua'):fmt('stylua'):lint('selene')
|
||||||
|
|
@ -43,8 +43,6 @@ return {
|
||||||
ft('sh,bash'):lint('shellcheck')
|
ft('sh,bash'):lint('shellcheck')
|
||||||
ft('zsh'):lint('zsh')
|
ft('zsh'):lint('zsh')
|
||||||
|
|
||||||
ft('html'):fmt('prettierd')
|
|
||||||
|
|
||||||
ft('proto'):fmt('buf'):lint('buf')
|
ft('proto'):fmt('buf'):lint('buf')
|
||||||
ft('dockerfile'):lint('hadolint')
|
ft('dockerfile'):lint('hadolint')
|
||||||
ft('tex'):fmt('latexindent')
|
ft('tex'):fmt('latexindent')
|
||||||
|
|
@ -52,7 +50,7 @@ return {
|
||||||
ft('cmake'):fmt('cmake-format')
|
ft('cmake'):fmt('cmake-format')
|
||||||
ft('make'):lint('checkmake')
|
ft('make'):lint('checkmake')
|
||||||
ft('cpp'):lint('cpplint')
|
ft('cpp'):lint('cpplint')
|
||||||
ft('markdown'):fmt('cbfmt'):fmt('prettierd')
|
ft('markdown'):fmt('cbfmt'):append('prettierd')
|
||||||
local lint = require('guard.lint')
|
local lint = require('guard.lint')
|
||||||
|
|
||||||
ft('nix')
|
ft('nix')
|
||||||
|
|
|
||||||
|
|
@ -46,9 +46,8 @@ vim.o.number = true
|
||||||
vim.o.relativenumber = true
|
vim.o.relativenumber = true
|
||||||
vim.o.signcolumn = 'no'
|
vim.o.signcolumn = 'no'
|
||||||
|
|
||||||
vim.o.statuscolumn = "%{%v:virtnum?'':'%s%C %=%{v:relnum?v:relnum:v:lnum} '%}"
|
vim.o.statuscolumn = '%s%C %=%{v:relnum?v:relnum:v:lnum} '
|
||||||
vim.o.statusline =
|
vim.o.statusline = " %{len(expand('%'))?expand('%:~').' ':''}%h%m%r%=%c:%l/%L %{&ft!=''?&ft:&bt} "
|
||||||
" %{len(expand('%'))?expand('%:~').' ':''}%h%m%r%=%c:%l/%L %{&ft!=''?&ft:&bt} "
|
|
||||||
|
|
||||||
vim.opt.path:append('**')
|
vim.opt.path:append('**')
|
||||||
|
|
||||||
|
|
|
||||||
69
flake.lock
generated
69
flake.lock
generated
|
|
@ -5,11 +5,11 @@
|
||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773106201,
|
"lastModified": 1772841847,
|
||||||
"narHash": "sha256-p5JuCe5wywjp2oanroCOzH+kzKCFt7rpJDg+lVykSjw=",
|
"narHash": "sha256-Qre73BGBcw1YlhBTTT+T/rVoqVtlCgHYYExUreIJoYs=",
|
||||||
"owner": "ryoppippi",
|
"owner": "ryoppippi",
|
||||||
"repo": "claude-code-overlay",
|
"repo": "claude-code-overlay",
|
||||||
"rev": "a6293ea4b12f65545c21357c1df4dcb885f0de6e",
|
"rev": "871c9fa0d37c0d6b3bdbf30341a8d08a75b1793b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -18,26 +18,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"disko": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1773025010,
|
|
||||||
"narHash": "sha256-khlHllTsovXgT2GZ0WxT4+RvuMjNeR5OW0UYeEHPYQo=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "disko",
|
|
||||||
"rev": "7b9f7f88ab3b339f8142dc246445abb3c370d3d3",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "disko",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-parts": {
|
"flake-parts": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
|
|
@ -66,11 +46,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773179137,
|
"lastModified": 1772845525,
|
||||||
"narHash": "sha256-EdW2bwzlfme0vbMOcStnNmKlOAA05Bp6su2O8VLGT0k=",
|
"narHash": "sha256-Dp5Ir2u4jJDGCgeMRviHvEQDe+U37hMxp6RSNOoMMPc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "3f98e2bbc661ec0aaf558d8a283d6955f05f1d09",
|
"rev": "27b93804fbef1544cb07718d3f0a451f4c4cd6c0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -107,11 +87,11 @@
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773187529,
|
"lastModified": 1772928300,
|
||||||
"narHash": "sha256-g+SvIUF9he6xFI5d3752wNAsOcbKBg6a0HpX16ggKY4=",
|
"narHash": "sha256-7WXA2vUlHNvCjjTDLsM0CGzTE52d8M8tXj+c4QOQnsk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "neovim-nightly-overlay",
|
"repo": "neovim-nightly-overlay",
|
||||||
"rev": "2c00dfe845f47f9cdab706372e82613d233e5c85",
|
"rev": "8df2141922896b7923ab78d624951f29531b5e8a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -123,11 +103,11 @@
|
||||||
"neovim-src": {
|
"neovim-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773186516,
|
"lastModified": 1772909350,
|
||||||
"narHash": "sha256-IPthgh8IUiFme222fCPbFzxZHDmvDY9ibNZ4MS3v+PA=",
|
"narHash": "sha256-SOywFX51TumgEMzjRN8JBo2E59Dr9+13sye7qv20nR8=",
|
||||||
"owner": "neovim",
|
"owner": "neovim",
|
||||||
"repo": "neovim",
|
"repo": "neovim",
|
||||||
"rev": "3a7ade847f10e22af6cecf92046eee238d6b21f6",
|
"rev": "e8e694d837427bd158d51dd62a25f165d49725c6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -138,11 +118,11 @@
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772972630,
|
"lastModified": 1771969195,
|
||||||
"narHash": "sha256-mUJxsNOrBMNOUJzN0pfdVJ1r2pxeqm9gI/yIKXzVVbk=",
|
"narHash": "sha256-qwcDBtrRvJbrrnv1lf/pREQi8t2hWZxVAyeMo7/E9sw=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "3966ce987e1a9a164205ac8259a5fe8a64528f72",
|
"rev": "41c6b421bdc301b2624486e11905c9af7b8ec68e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -169,11 +149,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772956932,
|
"lastModified": 1772736753,
|
||||||
"narHash": "sha256-M0yS4AafhKxPPmOHGqIV0iKxgNO8bHDWdl1kOwGBwRY=",
|
"narHash": "sha256-au/m3+EuBLoSzWUCb64a/MZq6QUtOV8oC0D9tY2scPQ=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "608d0cadfed240589a7eea422407a547ad626a14",
|
"rev": "917fec990948658ef1ccd07cef2a1ef060786846",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -185,11 +165,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773110118,
|
"lastModified": 1772736753,
|
||||||
"narHash": "sha256-mPAG8phMbCReKSiKAijjjd3v7uVcJOQ75gSjGJjt/Rk=",
|
"narHash": "sha256-au/m3+EuBLoSzWUCb64a/MZq6QUtOV8oC0D9tY2scPQ=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "e607cb5360ff1234862ac9f8839522becb853bb9",
|
"rev": "917fec990948658ef1ccd07cef2a1ef060786846",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -218,7 +198,6 @@
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"claude-code": "claude-code",
|
"claude-code": "claude-code",
|
||||||
"disko": "disko",
|
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"neovim-nightly": "neovim-nightly",
|
"neovim-nightly": "neovim-nightly",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
|
|
@ -232,11 +211,11 @@
|
||||||
"nixpkgs": "nixpkgs_4"
|
"nixpkgs": "nixpkgs_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1773225617,
|
"lastModified": 1772945022,
|
||||||
"narHash": "sha256-IT0n3jJgf4M7U0EuZJ2XJwXBmSJVVK3auqWDGeHGMzY=",
|
"narHash": "sha256-Fv14NttjL/7xfi6eVwrSEBAyBvDjI00RLiRNqA5apcw=",
|
||||||
"owner": "0xc000022070",
|
"owner": "0xc000022070",
|
||||||
"repo": "zen-browser-flake",
|
"repo": "zen-browser-flake",
|
||||||
"rev": "413a22ab7acf848ed4e20c3f47ea96ccd4788518",
|
"rev": "3a6a5ca7fb48cc8fd8183386506a06579d1d79dc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
19
flake.nix
19
flake.nix
|
|
@ -11,10 +11,6 @@
|
||||||
zen-browser.url = "github:0xc000022070/zen-browser-flake";
|
zen-browser.url = "github:0xc000022070/zen-browser-flake";
|
||||||
claude-code.url = "github:ryoppippi/claude-code-overlay";
|
claude-code.url = "github:ryoppippi/claude-code-overlay";
|
||||||
neovim-nightly.url = "github:nix-community/neovim-nightly-overlay";
|
neovim-nightly.url = "github:nix-community/neovim-nightly-overlay";
|
||||||
disko = {
|
|
||||||
url = "github:nix-community/disko";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
|
|
@ -25,7 +21,6 @@
|
||||||
zen-browser,
|
zen-browser,
|
||||||
claude-code,
|
claude-code,
|
||||||
neovim-nightly,
|
neovim-nightly,
|
||||||
disko,
|
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
|
|
@ -134,10 +129,6 @@
|
||||||
"tailscale"
|
"tailscale"
|
||||||
"libfprint-2-tod1-goodix"
|
"libfprint-2-tod1-goodix"
|
||||||
"brgenml1lpr"
|
"brgenml1lpr"
|
||||||
"cuda_cccl"
|
|
||||||
"cuda_cudart"
|
|
||||||
"libcublas"
|
|
||||||
"cuda_nvcc"
|
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -158,12 +149,10 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
nixosConfigurations.netcup = nixpkgs.lib.nixosSystem {
|
homeConfigurations = {
|
||||||
modules = [
|
"barrett@mac" = mkHome macConfig;
|
||||||
disko.nixosModules.disko
|
"barrett@mac-work" = mkHome macWorkConfig;
|
||||||
./hosts/netcup/configuration.nix
|
"barrett@linux-work" = mkHome linuxWorkConfig;
|
||||||
{ nixpkgs.hostPlatform = "x86_64-linux"; }
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@
|
||||||
++ lib.optionals hostConfig.isLinux [
|
++ lib.optionals hostConfig.isLinux [
|
||||||
./modules/hyprland.nix
|
./modules/hyprland.nix
|
||||||
./modules/ui.nix
|
./modules/ui.nix
|
||||||
./modules/dictation.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
|
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
hostConfig,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
whisper = pkgs.whisper-cpp.override { cudaSupport = hostConfig.gpu == "nvidia"; };
|
|
||||||
modelDir = "${config.home.homeDirectory}/.local/share/whisper-models";
|
|
||||||
model = "ggml-large-v3-turbo.bin";
|
|
||||||
modelUrl = "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/${model}";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.packages = [ whisper ];
|
|
||||||
|
|
||||||
home.activation.downloadWhisperModel = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
|
||||||
if [ ! -f "${modelDir}/${model}" ]; then
|
|
||||||
run mkdir -p "${modelDir}"
|
|
||||||
run ${pkgs.curl}/bin/curl -L -o "${modelDir}/${model}" "${modelUrl}"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
|
|
@ -161,7 +161,7 @@ in
|
||||||
font_size 18
|
font_size 18
|
||||||
status_bar_font_size 18
|
status_bar_font_size 18
|
||||||
|
|
||||||
inverse_search_command ${repoDir}/scripts/nvim-inverse-search %1 %2
|
inverse_search_command nvim --server /tmp/nvim-preview.sock --remote-expr "execute('b +%2 %1 | normal! zz')"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -134,11 +134,11 @@ in
|
||||||
mkdir -p "$dir"
|
mkdir -p "$dir"
|
||||||
if [ ! -f "$dir/config" ]; then
|
if [ ! -f "$dir/config" ]; then
|
||||||
cat > "$dir/config" << 'AWSEOF'
|
cat > "$dir/config" << 'AWSEOF'
|
||||||
[default]
|
[default]
|
||||||
[profile barrett]
|
[profile barrett]
|
||||||
region = us-east-2
|
region = us-east-2
|
||||||
output = json
|
output = json
|
||||||
AWSEOF
|
AWSEOF
|
||||||
fi
|
fi
|
||||||
''
|
''
|
||||||
);
|
);
|
||||||
|
|
@ -336,7 +336,6 @@ in
|
||||||
xdg.configFile."claude/settings.json" = lib.mkIf claude {
|
xdg.configFile."claude/settings.json" = lib.mkIf claude {
|
||||||
text = builtins.toJSON {
|
text = builtins.toJSON {
|
||||||
permissions.defaultMode = "acceptEdits";
|
permissions.defaultMode = "acceptEdits";
|
||||||
notifications.hints = "disabled";
|
|
||||||
network_access = true;
|
network_access = true;
|
||||||
allowed_domains = [
|
allowed_domains = [
|
||||||
"github.com"
|
"github.com"
|
||||||
|
|
|
||||||
|
|
@ -159,12 +159,6 @@ in
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = [ pkgs.tea ];
|
|
||||||
|
|
||||||
programs.ssh.matchBlocks."codeberg.org" = {
|
|
||||||
identityFile = "~/.ssh/id_ed25519";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.gh = {
|
programs.gh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|
|
||||||
|
|
@ -1,126 +0,0 @@
|
||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ ./disk-config.nix ];
|
|
||||||
|
|
||||||
boot.loader.grub = {
|
|
||||||
enable = true;
|
|
||||||
efiSupport = true;
|
|
||||||
efiInstallAsRemovable = true;
|
|
||||||
device = "nodev";
|
|
||||||
};
|
|
||||||
|
|
||||||
networking = {
|
|
||||||
hostName = "netcup";
|
|
||||||
useDHCP = false;
|
|
||||||
interfaces.eth0 = {
|
|
||||||
ipv4.addresses = [
|
|
||||||
{
|
|
||||||
address = "152.53.168.144";
|
|
||||||
prefixLength = 22;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
ipv6.addresses = [
|
|
||||||
{
|
|
||||||
address = "2a0a:4cc0:2000:af7d:c8e4:dff:fe7f:c233";
|
|
||||||
prefixLength = 64;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
defaultGateway = {
|
|
||||||
address = "152.53.168.1";
|
|
||||||
interface = "eth0";
|
|
||||||
};
|
|
||||||
defaultGateway6 = {
|
|
||||||
address = "fe80::1";
|
|
||||||
interface = "eth0";
|
|
||||||
};
|
|
||||||
nameservers = [
|
|
||||||
"1.1.1.1"
|
|
||||||
"8.8.8.8"
|
|
||||||
];
|
|
||||||
firewall.allowedTCPPorts = [
|
|
||||||
22
|
|
||||||
80
|
|
||||||
443
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
PermitRootLogin = "prohibit-password";
|
|
||||||
PasswordAuthentication = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
users.users.root.openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILA1pOJawzHtJqIn56AZT4IhPUh9vUEhLPLwndk5s3iM br.barrettruth@gmail.com"
|
|
||||||
];
|
|
||||||
|
|
||||||
security.acme = {
|
|
||||||
acceptTerms = true;
|
|
||||||
defaults.email = "br.barrettruth@gmail.com";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.nginx = {
|
|
||||||
enable = true;
|
|
||||||
recommendedProxySettings = true;
|
|
||||||
recommendedTlsSettings = true;
|
|
||||||
virtualHosts."vault.barrettruth.com" = {
|
|
||||||
enableACME = true;
|
|
||||||
forceSSL = true;
|
|
||||||
locations."/".proxyPass = "http://127.0.0.1:8222";
|
|
||||||
};
|
|
||||||
virtualHosts."git.barrettruth.com" = {
|
|
||||||
enableACME = true;
|
|
||||||
forceSSL = true;
|
|
||||||
locations."/".proxyPass = "http://127.0.0.1:3000";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.vaultwarden = {
|
|
||||||
enable = true;
|
|
||||||
backupDir = "/var/backup/vaultwarden";
|
|
||||||
environmentFile = "/var/lib/vaultwarden/vaultwarden.env";
|
|
||||||
config = {
|
|
||||||
DOMAIN = "https://vault.barrettruth.com";
|
|
||||||
SIGNUPS_ALLOWED = false;
|
|
||||||
ROCKET_ADDRESS = "127.0.0.1";
|
|
||||||
ROCKET_PORT = 8222;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.forgejo = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
server = {
|
|
||||||
DOMAIN = "git.barrettruth.com";
|
|
||||||
ROOT_URL = "https://git.barrettruth.com/";
|
|
||||||
HTTP_PORT = 3000;
|
|
||||||
};
|
|
||||||
service.DISABLE_REGISTRATION = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
vim
|
|
||||||
git
|
|
||||||
];
|
|
||||||
|
|
||||||
nix.settings = {
|
|
||||||
auto-optimise-store = true;
|
|
||||||
experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "weekly";
|
|
||||||
options = "--delete-older-than 7d";
|
|
||||||
};
|
|
||||||
|
|
||||||
system.stateVersion = "24.11";
|
|
||||||
}
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
{
|
|
||||||
disko.devices.disk.main = {
|
|
||||||
type = "disk";
|
|
||||||
device = "/dev/vda";
|
|
||||||
content = {
|
|
||||||
type = "gpt";
|
|
||||||
partitions = {
|
|
||||||
boot = {
|
|
||||||
size = "1M";
|
|
||||||
type = "EF02";
|
|
||||||
};
|
|
||||||
esp = {
|
|
||||||
size = "512M";
|
|
||||||
type = "EF00";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "vfat";
|
|
||||||
mountpoint = "/boot";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
root = {
|
|
||||||
size = "100%";
|
|
||||||
content = {
|
|
||||||
type = "filesystem";
|
|
||||||
format = "ext4";
|
|
||||||
mountpoint = "/";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
1
new
1
new
|
|
@ -1 +0,0 @@
|
||||||
|
|
||||||
47
scripts/ctl
47
scripts/ctl
|
|
@ -126,7 +126,6 @@ audio)
|
||||||
--mesg="$header" --mesg-mode=expand \
|
--mesg="$header" --mesg-mode=expand \
|
||||||
--font="monospace:size=12" --width="$fw")
|
--font="monospace:size=12" --width="$fw")
|
||||||
rc=$?
|
rc=$?
|
||||||
[ "$rc" = 10 ] && continue
|
|
||||||
[ "$rc" = 11 ] && {
|
[ "$rc" = 11 ] && {
|
||||||
wpctl set-volume "$node" 5%+ --limit 1.0
|
wpctl set-volume "$node" 5%+ --limit 1.0
|
||||||
continue
|
continue
|
||||||
|
|
@ -533,50 +532,6 @@ power)
|
||||||
"$shutdown") systemctl poweroff ;;
|
"$shutdown") systemctl poweroff ;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
dictate)
|
|
||||||
require pw-record whisper-cli wl-copy notify-send
|
|
||||||
dtmp="${XDG_RUNTIME_DIR:-/tmp}/dictation"
|
|
||||||
mkdir -p "$dtmp"
|
|
||||||
dpid="$dtmp/rec_pid"
|
|
||||||
daudio="$dtmp/recording.wav"
|
|
||||||
dmodel="${DICTATE_MODEL:-large-v3-turbo}"
|
|
||||||
dmodel_dir="${XDG_DATA_HOME:-$HOME/.local/share}/whisper-models"
|
|
||||||
dmodel_file="$dmodel_dir/ggml-$dmodel.bin"
|
|
||||||
|
|
||||||
if [ -f "$dpid" ] && kill -0 "$(cat "$dpid")" 2>/dev/null; then
|
|
||||||
kill "$(cat "$dpid")" 2>/dev/null
|
|
||||||
rm -f "$dpid"
|
|
||||||
sleep 0.2
|
|
||||||
if [ ! -s "$daudio" ]; then
|
|
||||||
notify-send -a ctl -t 1250 "no audio"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
notify-send -a ctl -t 1250 "transcribing..."
|
|
||||||
text=$(whisper-cli \
|
|
||||||
--model "$dmodel_file" \
|
|
||||||
--language "${DICTATE_LANG:-en}" \
|
|
||||||
--no-prints --no-timestamps \
|
|
||||||
"$daudio" 2>/dev/null | tr '\n' ' ' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | tr -s ' ')
|
|
||||||
rm -f "$daudio"
|
|
||||||
if [ -z "$text" ]; then
|
|
||||||
notify-send -a ctl -t 1250 "no speech detected"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
printf '%s' "$text" | wl-copy
|
|
||||||
notify-send -a ctl -t 1250 "$text"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f "$dmodel_file" ]; then
|
|
||||||
notify-send -a ctl -t 1250 "downloading whisper $dmodel model..."
|
|
||||||
mkdir -p "$dmodel_dir"
|
|
||||||
curl -L -o "$dmodel_file" \
|
|
||||||
"https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-$dmodel.bin"
|
|
||||||
fi
|
|
||||||
notify-send -a ctl -t 1250 "recording..."
|
|
||||||
pw-record "$daudio" &
|
|
||||||
printf '%s' "$!" > "$dpid"
|
|
||||||
;;
|
|
||||||
idle)
|
idle)
|
||||||
require notify-send
|
require notify-send
|
||||||
if systemctl --user is-active --quiet hypridle.service; then
|
if systemctl --user is-active --quiet hypridle.service; then
|
||||||
|
|
@ -590,7 +545,7 @@ idle)
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Usage: ctl {screenshot|keyboard|audio|wifi|brightness|volume|media|wallpaper|power|idle|clip|dictate}" >&2
|
echo "Usage: ctl {screenshot|keyboard|audio|wifi|brightness|volume|media|wallpaper|power|idle|clip}" >&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
file="$1"
|
|
||||||
line="$2"
|
|
||||||
|
|
||||||
for sock in /run/user/"$(id -u)"/nvim.*.0; do
|
|
||||||
[ -S "$sock" ] || continue
|
|
||||||
result=$(nvim --headless --server "$sock" --remote-expr "bufnr('$file')" 2>/dev/null)
|
|
||||||
if [ "$result" != "-1" ] && [ -n "$result" ]; then
|
|
||||||
nvim --headless --server "$sock" --remote-expr "execute('b +$line $file | normal! zz')" >/dev/null 2>&1
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue