From 4be4a7979f4f0a7589bcdaa0292d659f8e6f41a7 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Mon, 16 Dec 2024 14:06:34 +0100 Subject: [PATCH 01/85] feat: add "ubuntu" config for containers --- flake.nix | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/flake.nix b/flake.nix index 8737aba..0fe7fb7 100644 --- a/flake.nix +++ b/flake.nix @@ -59,6 +59,27 @@ vimwikiPath = "~/vimwiki"; }; }; + "ubuntu" = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + + modules = [ + ./shell + ./git + ./gpg + ./neovim + ./horsch.nix + ]; + + extraSpecialArgs = { + user = "ubuntu"; + userName = "Michael Mandl"; + userEmail = "michael.mandl@horsch.com"; + gpgSigningKey = "088ED38F036C7AF2"; + gpgSSHKeys = [ "AEB2BF3FF9CF9529E9A3C6F1A202D21686FF9278" ]; + theme = "dark"; + vimwikiPath = "~/vimwiki"; + }; + }; }; }; } From 8e45e1e0a0cde95666dde7074dff539a6e851cc5 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Fri, 20 Dec 2024 14:28:02 +0100 Subject: [PATCH 02/85] feat(nvim): add firenvim --- neovim/default.nix | 14 ++++++++++++-- neovim/firenvim.lua | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 neovim/firenvim.lua diff --git a/neovim/default.nix b/neovim/default.nix index d138ddf..20e9a97 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -91,6 +91,9 @@ # vim-wiki vimwiki + + # firenvim + firenvim ]; withNodeJs = true; @@ -137,8 +140,12 @@ require("local_toggleterm") require("local_notify") require("local_comment") - require("local_lualine") - require("local_tabline") + + if vim.g.started_by_firenvim ~= true then + require("local_lualine") + require("local_tabline") + end + require("local_indent-blankline") require("local_gitsigns") require("local_luasnip") @@ -158,6 +165,8 @@ require("nvim-autopairs").setup({}) require("neogen").setup({ snippet_engine = "luasnip" }) + + require("local_firenvim") ''; }; }; @@ -186,4 +195,5 @@ home.file.".config/nvim/lua/local_dap.lua".source = ./dap.lua; home.file.".config/nvim/lua/local_illuminate.lua".source = ./illuminate.lua; home.file.".config/nvim/lua/local_wilder.lua".source = ./wilder.lua; + home.file.".config/nvim/lua/local_firenvim.lua".source = ./firenvim.lua; } diff --git a/neovim/firenvim.lua b/neovim/firenvim.lua new file mode 100644 index 0000000..260bbd2 --- /dev/null +++ b/neovim/firenvim.lua @@ -0,0 +1,38 @@ +if vim.g.started_by_firenvim ~= true then + return +end + +vim.g.firenvim_config = { + globalSettings = { alt = "all" }, + localSettings = { + [".*"] = { + cmdline = "neovim", + content = "text", + priority = 0, + selector = "textarea", + takeover = "never" + } + } +} + +vim.api.nvim_create_autocmd('UIEnter', { + callback = function() + local client = vim.api.nvim_get_chan_info(vim.v.event.chan).client + if client ~= nil and client.name == "Firenvim" then + vim.o.laststatus = 0 + end + end +}) + +vim.api.nvim_create_autocmd({ 'TextChanged', 'TextChangedI' }, { + callback = function() + if vim.g.timer_started == true then + return + end + vim.g.timer_started = true + vim.fn.timer_start(500, function() + vim.g.timer_started = false + vim.cmd('silent write') + end) + end +}) From f217b7af5ea0ec62b79bc1d05831cdee4c4c522d Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Fri, 20 Dec 2024 14:28:27 +0100 Subject: [PATCH 03/85] feat(nvim): add copilot --- neovim/default.nix | 4 ++++ neovim/nvim-cmp.lua | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/neovim/default.nix b/neovim/default.nix index 20e9a97..1a79877 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -85,6 +85,10 @@ lsp_lines-nvim lsp-inlayhints-nvim + # Copilot + copilot-lua + copilot-cmp + # debugging nvim-dap nvim-dap-ui diff --git a/neovim/nvim-cmp.lua b/neovim/nvim-cmp.lua index 098ce04..eddcdef 100644 --- a/neovim/nvim-cmp.lua +++ b/neovim/nvim-cmp.lua @@ -7,6 +7,11 @@ end local cmp = require("cmp") local luasnip = require("luasnip") +local copilot_lua = require("copilot") +local copilot_cmp = require("copilot_cmp") + +copilot_lua.setup({}) +copilot_cmp.setup({}) cmp.setup({ snippet = { @@ -15,6 +20,7 @@ cmp.setup({ end }, sources = cmp.config.sources({ + { name = "copilot" }, { name = "nvim_lsp" }, { name = "nvim_lsp_signature_help" }, { name = "luasnip" }, From cc92efac9a51483c9b6a9736378b4f6dc6f0db77 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 7 Jan 2025 09:32:40 +0100 Subject: [PATCH 04/85] chore: nix flake update --- .nix/flake.lock | 10 +++++----- flake.lock | 12 ++++++------ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.nix/flake.lock b/.nix/flake.lock index 2ac74d2..937ca6f 100644 --- a/.nix/flake.lock +++ b/.nix/flake.lock @@ -2,12 +2,12 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1729665710, - "narHash": "sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4=", - "rev": "2768c7d042a37de65bb1b5b3268fc987e534c49d", - "revCount": 696158, + "lastModified": 1736012469, + "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", + "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", + "revCount": 733374, "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.696158%2Brev-2768c7d042a37de65bb1b5b3268fc987e534c49d/0192bd28-d6c0-735c-ab86-8ab9d12f7d62/source.tar.gz" + "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.733374%2Brev-8f3e1f807051e32d8c95cd12b9b421623850a34d/01943a5d-98a8-75c0-9963-3a93900583fd/source.tar.gz" }, "original": { "type": "tarball", diff --git a/flake.lock b/flake.lock index b3174e7..74bf3c6 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1734093295, - "narHash": "sha256-hSwgGpcZtdDsk1dnzA0xj5cNaHgN9A99hRF/mxMtwS4=", + "lastModified": 1736204492, + "narHash": "sha256-CoBPRgkUex9Iz6qGSzi/BFVUQjndB0PmME2B6eEyeCs=", "owner": "nix-community", "repo": "home-manager", - "rev": "66c5d8b62818ec4c1edb3e941f55ef78df8141a8", + "rev": "20665c6efa83d71020c8730f26706258ba5c6b2a", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1734119587, - "narHash": "sha256-AKU6qqskl0yf2+JdRdD0cfxX4b9x3KKV5RqA6wijmPM=", + "lastModified": 1736012469, + "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "3566ab7246670a43abd2ffa913cc62dad9cdf7d5", + "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", "type": "github" }, "original": { From 2cca40f5e821551eb20aa7d4f220eef90134b88f Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 11 Feb 2025 14:15:27 +0100 Subject: [PATCH 05/85] feat(nvim): enable CopilotChat --- neovim/default.nix | 4 ++++ neovim/nvim-cmp.lua | 23 ++++++++++++----------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/neovim/default.nix b/neovim/default.nix index 1a79877..f213b6b 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -84,10 +84,12 @@ none-ls-nvim lsp_lines-nvim lsp-inlayhints-nvim + lspkind-nvim # Copilot copilot-lua copilot-cmp + CopilotChat-nvim # debugging nvim-dap @@ -171,6 +173,8 @@ require("neogen").setup({ snippet_engine = "luasnip" }) require("local_firenvim") + + require("CopilotChat").setup() ''; }; }; diff --git a/neovim/nvim-cmp.lua b/neovim/nvim-cmp.lua index eddcdef..1bc45ac 100644 --- a/neovim/nvim-cmp.lua +++ b/neovim/nvim-cmp.lua @@ -9,6 +9,7 @@ local cmp = require("cmp") local luasnip = require("luasnip") local copilot_lua = require("copilot") local copilot_cmp = require("copilot_cmp") +local lspkind = require("lspkind") copilot_lua.setup({}) copilot_cmp.setup({}) @@ -62,18 +63,18 @@ cmp.setup({ documentation = cmp.config.window.bordered(), }, formatting = { - fields = { "menu", "abbr", "kind" }, - format = function(entry, item) - local menu_icon = { - nvim_lsp = "λ", - luasnip = "⋗", - buffer = "Ω", - path = "🖿", + format = lspkind.cmp_format({ + mode = "symbol", + maxwidth = { + menu = 50, + abbr = 50, + }, + ellipsis_char = "...", + show_labelDetails = true, + symbol_map = { + Copilot = "", } - - item.menu = menu_icon[entry.source.name] - return item - end, + }), }, }) From fd14195ccdbe1684f18e2cdae0a886458102184e Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 12 Feb 2025 16:23:34 +0100 Subject: [PATCH 06/85] feat(nvim): use diffview-nvim for diffs and merges --- git/default.nix | 3 ++- neovim/default.nix | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/git/default.nix b/git/default.nix index 183cddd..4ed8da1 100644 --- a/git/default.nix +++ b/git/default.nix @@ -44,7 +44,8 @@ merge.ff = false; merge.tool = "nvim"; - mergetool.nvim.cmd = "nvim -f -c \"Gdiffsplit!\" \"$MERGED\""; + mergetool.nvim.cmd = "nvim -d $BASE $LOCAL $REMOTE $MERGED -c 'DiffviewOpen'"; + mergetool.nvim.trustExitCode = false; mergetool.prompt = false; pager.difftool = true; diff --git a/neovim/default.nix b/neovim/default.nix index f213b6b..1b7f2a5 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -55,6 +55,7 @@ vim-flog git-blame-nvim nvim-web-devicons # used by diffview-nvim + diffview-nvim # snippets friendly-snippets @@ -175,6 +176,14 @@ require("local_firenvim") require("CopilotChat").setup() + require("diffview").setup({ + view = { + merge_tool = { + layout = "diff4_mixed", + disable_diagnostics = true, + } + } + }) ''; }; }; From 9533f9c169d27f2aa1ea20bc0bd9e0717213256a Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 20 Feb 2025 10:09:26 +0100 Subject: [PATCH 07/85] feat(shell): add devenv --- shell/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/default.nix b/shell/default.nix index dcddb25..a6023b0 100644 --- a/shell/default.nix +++ b/shell/default.nix @@ -1,6 +1,7 @@ { pkgs, ... }: { home.packages = with pkgs; [ + devenv difftastic dust htop From 45472e0722a8dd845b24b1570458747a31afcda1 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 20 Feb 2025 10:09:57 +0100 Subject: [PATCH 08/85] chore: nix flake update --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 74bf3c6..1355412 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1736204492, - "narHash": "sha256-CoBPRgkUex9Iz6qGSzi/BFVUQjndB0PmME2B6eEyeCs=", + "lastModified": 1739992710, + "narHash": "sha256-9kEscmGnXHjSgcqyJR4TzzHhska4yz1inSQs6HuO9qU=", "owner": "nix-community", "repo": "home-manager", - "rev": "20665c6efa83d71020c8730f26706258ba5c6b2a", + "rev": "1c189f011447810af939a886ba7bee33532bb1f9", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1736012469, - "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", + "lastModified": 1739866667, + "narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=", "owner": "nixos", "repo": "nixpkgs", - "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", + "rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680", "type": "github" }, "original": { From d2293714217f1746a54d3facb48e3f00fa4fb54b Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:08:40 +0100 Subject: [PATCH 09/85] feat(nvim): add pyright language server --- neovim/default.nix | 2 ++ neovim/lspconfig.lua | 1 + 2 files changed, 3 insertions(+) diff --git a/neovim/default.nix b/neovim/default.nix index 1b7f2a5..c06ccb7 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -122,6 +122,8 @@ nixd nixpkgs-fmt bitbake-language-server + pyright + (python3.withPackages (ps: with ps; [ pep8 autopep8 diff --git a/neovim/lspconfig.lua b/neovim/lspconfig.lua index ea85b43..51d1fe1 100644 --- a/neovim/lspconfig.lua +++ b/neovim/lspconfig.lua @@ -113,6 +113,7 @@ local servers = { } } }, + ["pyright"] = {}, ["texlab"] = {}, ["yamlls"] = { yaml = { From a131d538c8a0f200541f791b4d808dbca1e01442 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:17:31 +0100 Subject: [PATCH 10/85] feat(git): sort branches by commit date --- git/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/git/default.nix b/git/default.nix index 4ed8da1..eb18e57 100644 --- a/git/default.nix +++ b/git/default.nix @@ -28,6 +28,7 @@ extraConfig = { core.editor = "nvim"; core.pager = "less -FX"; + branch.sort = "-committerdate"; diff.ignoreSubmodules = "none"; From c74cd97351950e132180697518f09f6ff886182f Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:18:22 +0100 Subject: [PATCH 11/85] feat(git): speed-up large repo handling --- git/default.nix | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/git/default.nix b/git/default.nix index eb18e57..205cecb 100644 --- a/git/default.nix +++ b/git/default.nix @@ -26,10 +26,15 @@ }; extraConfig = { - core.editor = "nvim"; - core.pager = "less -FX"; branch.sort = "-committerdate"; + core = { + editor = "nvim"; + fsmonitor = true; + pager = "less -FX"; + untrackedCache = true; + }; + diff.ignoreSubmodules = "none"; fetch.parallel = 8; From 3b959ee112cf07d799fc07dc81753cffc5816e20 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:19:13 +0100 Subject: [PATCH 12/85] feat(git): use multi-column output for branches and tags --- git/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/git/default.nix b/git/default.nix index 205cecb..6873e08 100644 --- a/git/default.nix +++ b/git/default.nix @@ -36,6 +36,7 @@ }; diff.ignoreSubmodules = "none"; + column.ui = "auto"; fetch.parallel = 8; fetch.writeCommitGraph = true; From 7a23d0607949c3837d7ddf7d0ab8f3193309e202 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:19:58 +0100 Subject: [PATCH 13/85] feat(git): show diff in commit-message editor --- git/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/git/default.nix b/git/default.nix index 6873e08..deb1f30 100644 --- a/git/default.nix +++ b/git/default.nix @@ -41,6 +41,7 @@ fetch.parallel = 8; fetch.writeCommitGraph = true; fetch.recurseSubmodules = true; + commit.verbose = true; format.pretty = "format:%C(yellow)%h %Cblue%>(12)%ad %C(red)%G? %Cgreen%<(7,trunc)%aN%Cred%d %Creset%s"; From 555d229cf1a4e4679cd3939c96a0093558c6bc4c Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:20:45 +0100 Subject: [PATCH 14/85] feat(git): use improved diff algos --- git/default.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/git/default.nix b/git/default.nix index deb1f30..80fc6a8 100644 --- a/git/default.nix +++ b/git/default.nix @@ -35,7 +35,6 @@ untrackedCache = true; }; - diff.ignoreSubmodules = "none"; column.ui = "auto"; fetch.parallel = 8; @@ -43,6 +42,14 @@ fetch.recurseSubmodules = true; commit.verbose = true; + diff = { + algorithm = "histogram"; + colorMoved = "plain"; + ignoreSubmodules = "none"; + mnemonicPrefix = true; + renames = true; + }; + format.pretty = "format:%C(yellow)%h %Cblue%>(12)%ad %C(red)%G? %Cgreen%<(7,trunc)%aN%Cred%d %Creset%s"; init.defaultBranch = "main"; From f73891c335b1f259af9952a41a6cf147e36cf0b0 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:21:35 +0100 Subject: [PATCH 15/85] feat(git): always fetch all and prune --- git/default.nix | 12 +++++++++--- shell/shell_aliases.nix | 1 - 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/git/default.nix b/git/default.nix index 80fc6a8..1b18073 100644 --- a/git/default.nix +++ b/git/default.nix @@ -37,9 +37,6 @@ column.ui = "auto"; - fetch.parallel = 8; - fetch.writeCommitGraph = true; - fetch.recurseSubmodules = true; commit.verbose = true; diff = { @@ -50,6 +47,15 @@ renames = true; }; + fetch = { + all = true; + parallel = 8; + prune = true; + pruneTags = true; + recurseSubmodules = true; + writeCommitGraph = true; + }; + format.pretty = "format:%C(yellow)%h %Cblue%>(12)%ad %C(red)%G? %Cgreen%<(7,trunc)%aN%Cred%d %Creset%s"; init.defaultBranch = "main"; diff --git a/shell/shell_aliases.nix b/shell/shell_aliases.nix index 2b39161..c3141df 100644 --- a/shell/shell_aliases.nix +++ b/shell/shell_aliases.nix @@ -7,7 +7,6 @@ gs = "git status"; gd = "git diff"; gf = "git fetch"; - gfp = "git fetch --prune"; k = "kubectl"; ww = "nvim -c VimwikiIndex"; }; From bc21047420ef7dfefd9ce255ae078db067e697f3 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:23:04 +0100 Subject: [PATCH 16/85] feat(git): show merge conflicts in 3-way style --- git/default.nix | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/git/default.nix b/git/default.nix index 1b18073..b901b27 100644 --- a/git/default.nix +++ b/git/default.nix @@ -62,8 +62,11 @@ log.date = "relative"; - merge.ff = false; - merge.tool = "nvim"; + merge = { + conflictstyle = "zdiff3"; + ff = false; + tool = "nvim"; + }; mergetool.nvim.cmd = "nvim -d $BASE $LOCAL $REMOTE $MERGED -c 'DiffviewOpen'"; mergetool.nvim.trustExitCode = false; From ca135b493574cea09b427ef95f48f06caab0c585 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:34:30 +0100 Subject: [PATCH 17/85] feat(git): auto-stage rerere results --- git/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/git/default.nix b/git/default.nix index b901b27..ee2398d 100644 --- a/git/default.nix +++ b/git/default.nix @@ -80,7 +80,10 @@ rebase.autostash = true; - rerere.enabled = true; + rerere = { + autoupdate = true; + enabled = true; + }; status.submoduleSummary = true; From 325ddabe3cc6228f3239be0d482434a7a5d0c73a Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:36:36 +0100 Subject: [PATCH 18/85] feat(git): sort tags by version number --- git/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/git/default.nix b/git/default.nix index ee2398d..43027cf 100644 --- a/git/default.nix +++ b/git/default.nix @@ -90,6 +90,8 @@ submodule.fetchJobs = 8; submodule.recurse = true; + tag.sort = "version:refname"; + worktree.guessRemote = true; }; From 5bcecad8b6e2fd6f03f1c7824c22a89a7e2eb5e8 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:37:03 +0100 Subject: [PATCH 19/85] feat(git): update dependent branches on rebase --- git/default.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/git/default.nix b/git/default.nix index 43027cf..84a4f13 100644 --- a/git/default.nix +++ b/git/default.nix @@ -78,7 +78,11 @@ push.recurseSubmodules = "on-demand"; - rebase.autostash = true; + rebase = { + qutoSquash = true; + autoStash = true; + updateRefs = true; + }; rerere = { autoupdate = true; From dc2295289246260e07c106be26787179e6640b76 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:44:09 +0100 Subject: [PATCH 20/85] feat(git): automatically set-upstream on push --- git/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/git/default.nix b/git/default.nix index 84a4f13..82e5ec5 100644 --- a/git/default.nix +++ b/git/default.nix @@ -76,7 +76,10 @@ pull.rebase = true; - push.recurseSubmodules = "on-demand"; + push = { + autoSetupRemote = true; + recurseSubmodules = "on-demand"; + }; rebase = { qutoSquash = true; From 88c22f7b6af0d95aac56c85a1a5f12a862b111da Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:44:51 +0100 Subject: [PATCH 21/85] feat(git): automatically push tags --- git/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/git/default.nix b/git/default.nix index 82e5ec5..ae79ee9 100644 --- a/git/default.nix +++ b/git/default.nix @@ -78,6 +78,7 @@ push = { autoSetupRemote = true; + followTags = true; recurseSubmodules = "on-demand"; }; From 621a555c25da2f668ece12795a33cc9e37e3a369 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 26 Feb 2025 08:45:13 +0100 Subject: [PATCH 22/85] feat(git): push only current branch, and only if upstream matches --- git/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/git/default.nix b/git/default.nix index ae79ee9..9491095 100644 --- a/git/default.nix +++ b/git/default.nix @@ -78,6 +78,7 @@ push = { autoSetupRemote = true; + default = "simple"; followTags = true; recurseSubmodules = "on-demand"; }; From d1637e46fcf831ebaf910523d25cc7e28508e704 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 4 Mar 2025 14:31:08 +0100 Subject: [PATCH 23/85] feat(nvim): open copilot chat on leader-cc in floating window --- neovim/default.nix | 12 +++++++++++- neovim/keymaps.lua | 3 +++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/neovim/default.nix b/neovim/default.nix index c06ccb7..8422c2a 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -177,7 +177,17 @@ require("local_firenvim") - require("CopilotChat").setup() + require("CopilotChat").setup({ + highlight_headers = false, + separator = "---", + error_header = "> [!ERROR] Error", + window = { + layout = "float", + width = 0.8, + height = 0.8, + } + }) + require("diffview").setup({ view = { merge_tool = { diff --git a/neovim/keymaps.lua b/neovim/keymaps.lua index 2179b03..5ece7b2 100644 --- a/neovim/keymaps.lua +++ b/neovim/keymaps.lua @@ -67,3 +67,6 @@ vim.cmd('nnoremap * v:hlsearch ? ":nohlsearch" : "*"') -- insert-map jj/jk to escape require("better_escape").setup() + +-- open Copilot Chat window +nnoremap("cc", ":lua require('CopilotChat').open()") From a7e66550063cf0a5720adccc02238d856f9708ab Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 4 Mar 2025 14:31:59 +0100 Subject: [PATCH 24/85] feat(nvim): add render-markdown plugin --- neovim/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/neovim/default.nix b/neovim/default.nix index 8422c2a..126cdf7 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -38,6 +38,7 @@ nvim-treesitter-textobjects nvim-ts-context-commentstring markdown-preview-nvim # use({ "iamcco/markdown-preview.nvim", run = ":call mkdp#util#install()" }) + render-markdown-nvim toggleterm-nvim nvim-notify comment-nvim @@ -185,7 +186,7 @@ layout = "float", width = 0.8, height = 0.8, - } + }, }) require("diffview").setup({ @@ -196,6 +197,10 @@ } } }) + + require("render-markdown").setup({ + file_types = { "markdown", "vimwiki", "copilot-chat" }, + }) ''; }; }; From 5cb4656a71228b891c82a8ff6a91dd22f09be4f6 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 4 Mar 2025 15:18:37 +0100 Subject: [PATCH 25/85] feat(shell): add sshfs --- shell/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/default.nix b/shell/default.nix index a6023b0..82caa42 100644 --- a/shell/default.nix +++ b/shell/default.nix @@ -7,6 +7,7 @@ htop jq nh + sshfs unzip xclip ]; From c61a8e3b1eeb95970b99f8c2e9641aae08a5c7ac Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 4 Mar 2025 15:26:53 +0100 Subject: [PATCH 26/85] chore: replace manual dev-shell with devenv --- .envrc | 11 ++---- .gitignore | 7 ++++ .nix/flake.lock | 25 ------------ .nix/flake.nix | 32 --------------- devenv.lock | 103 ++++++++++++++++++++++++++++++++++++++++++++++++ devenv.nix | 11 ++++++ devenv.yaml | 15 +++++++ 7 files changed, 140 insertions(+), 64 deletions(-) delete mode 100644 .nix/flake.lock delete mode 100644 .nix/flake.nix create mode 100644 devenv.lock create mode 100644 devenv.nix create mode 100644 devenv.yaml diff --git a/.envrc b/.envrc index a8d08c3..30da14f 100644 --- a/.envrc +++ b/.envrc @@ -1,8 +1,5 @@ -use flake .nix +export DIRENV_WARN_TIMEOUT=20s -if on_git_branch; then - echo - git status --short --branch - echo - git fetch -fi +eval "$(devenv direnvrc)" + +use devenv diff --git a/.gitignore b/.gitignore index 3357b94..785767a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,10 @@ # Ignore build outputs from performing a nix-build or `nix build` command result result-* + +# Devenv +.devenv* +devenv.local.nix + +# direnv +.direnv diff --git a/.nix/flake.lock b/.nix/flake.lock deleted file mode 100644 index 937ca6f..0000000 --- a/.nix/flake.lock +++ /dev/null @@ -1,25 +0,0 @@ -{ - "nodes": { - "nixpkgs": { - "locked": { - "lastModified": 1736012469, - "narHash": "sha256-/qlNWm/IEVVH7GfgAIyP6EsVZI6zjAx1cV5zNyrs+rI=", - "rev": "8f3e1f807051e32d8c95cd12b9b421623850a34d", - "revCount": 733374, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/NixOS/nixpkgs/0.1.733374%2Brev-8f3e1f807051e32d8c95cd12b9b421623850a34d/01943a5d-98a8-75c0-9963-3a93900583fd/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/NixOS/nixpkgs/0.1.%2A.tar.gz" - } - }, - "root": { - "inputs": { - "nixpkgs": "nixpkgs" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/.nix/flake.nix b/.nix/flake.nix deleted file mode 100644 index 0cbe327..0000000 --- a/.nix/flake.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ - description = "A flake editing flake"; - - inputs.nixpkgs.url = "https://flakehub.com/f/NixOS/nixpkgs/0.1.*.tar.gz"; - - outputs = { nixpkgs, ... }: - let - supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ]; - forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f { - pkgs = import nixpkgs { inherit system; }; - }); - in - { - devShells = forEachSupportedSystem ({ pkgs }: { - default = pkgs.mkShell.override - { - # Override stdenv in order to change compiler: - # stdenv = pkgs.clangStdenv; - } - { - packages = with pkgs; [ - pre-commit - commitizen - ]; - - shellHook = '' - pre-commit install --allow-missing-config --hook-type pre-commit --hook-type commit-msg - ''; - }; - }); - }; -} diff --git a/devenv.lock b/devenv.lock new file mode 100644 index 0000000..a9f9ec6 --- /dev/null +++ b/devenv.lock @@ -0,0 +1,103 @@ +{ + "nodes": { + "devenv": { + "locked": { + "dir": "src/modules", + "lastModified": 1741068816, + "owner": "cachix", + "repo": "devenv", + "rev": "9f6da63c162ad86b6fb84edcbd8c447fdc411c3d", + "type": "github" + }, + "original": { + "dir": "src/modules", + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1733328505, + "owner": "edolstra", + "repo": "flake-compat", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "git-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1740915799, + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "42b1ba089d2034d910566bf6b40830af6b8ec732", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "git-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1733477122, + "owner": "cachix", + "repo": "devenv-nixpkgs", + "rev": "7bd9e84d0452f6d2e63b6e6da29fe73fac951857", + "type": "github" + }, + "original": { + "owner": "cachix", + "ref": "rolling", + "repo": "devenv-nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "devenv": "devenv", + "git-hooks": "git-hooks", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": [ + "git-hooks" + ] + } + } + }, + "root": "root", + "version": 7 +} diff --git a/devenv.nix b/devenv.nix new file mode 100644 index 0000000..1a6c6f8 --- /dev/null +++ b/devenv.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: + +{ + packages = with pkgs; [ + git + ]; + + git-hooks.hooks = { + commitizen.enable = true; + }; +} diff --git a/devenv.yaml b/devenv.yaml new file mode 100644 index 0000000..116a2ad --- /dev/null +++ b/devenv.yaml @@ -0,0 +1,15 @@ +# yaml-language-server: $schema=https://devenv.sh/devenv.schema.json +inputs: + nixpkgs: + url: github:cachix/devenv-nixpkgs/rolling + +# If you're using non-OSS software, you can set allowUnfree to true. +# allowUnfree: true + +# If you're willing to use a package that's vulnerable +# permittedInsecurePackages: +# - "openssl-1.1.1w" + +# If you have more than one devenv you can merge them +#imports: +# - ./backend From 95edaae633bf32a24075cf066b48d4e6636211ee Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 4 Mar 2025 15:30:23 +0100 Subject: [PATCH 27/85] chore: nix flake update --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 1355412..4bf6bd3 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1739992710, - "narHash": "sha256-9kEscmGnXHjSgcqyJR4TzzHhska4yz1inSQs6HuO9qU=", + "lastModified": 1741056285, + "narHash": "sha256-/JKDMVqq8PIqcGonBVKbKq1SooV3kzGmv+cp3rKAgPA=", "owner": "nix-community", "repo": "home-manager", - "rev": "1c189f011447810af939a886ba7bee33532bb1f9", + "rev": "70fbbf05a5594b0a72124ab211bff1d502c89e3f", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1739866667, - "narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=", + "lastModified": 1741010256, + "narHash": "sha256-WZNlK/KX7Sni0RyqLSqLPbK8k08Kq7H7RijPJbq9KHM=", "owner": "nixos", "repo": "nixpkgs", - "rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680", + "rev": "ba487dbc9d04e0634c64e3b1f0d25839a0a68246", "type": "github" }, "original": { From 24acf9c23d3f666e716d0121486d9129d4fee3eb Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 6 Mar 2025 19:50:55 +0100 Subject: [PATCH 28/85] feat: add zoom --- private.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/private.nix b/private.nix index 9df6b32..4a9e97c 100644 --- a/private.nix +++ b/private.nix @@ -1,4 +1,4 @@ -{ pkgs, user, ... }: +{ pkgs, user, lib, ... }: { home.username = user; @@ -25,6 +25,11 @@ evince inkscape chromium + zoom-us + ]; + + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "zoom" ]; programs.home-manager.enable = true; From 501be7a1ce8c757f7926d614216937a9872eb1d7 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 6 Mar 2025 19:53:57 +0100 Subject: [PATCH 29/85] fix: use plain element-desktop package --- private.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/private.nix b/private.nix index 4a9e97c..86fffb9 100644 --- a/private.nix +++ b/private.nix @@ -13,7 +13,8 @@ thunderbird keepassxc light - element-desktop-wayland + # element-desktop-wayland + element-desktop darktable kubectl kubectx From c6af7586cee5deb71b84144a375a23267b9960e6 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 6 Mar 2025 19:58:50 +0100 Subject: [PATCH 30/85] chore: nix flake update --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 4bf6bd3..f3372f9 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1741056285, - "narHash": "sha256-/JKDMVqq8PIqcGonBVKbKq1SooV3kzGmv+cp3rKAgPA=", + "lastModified": 1741217763, + "narHash": "sha256-g/TrltIjFHIjtzKY5CJpoPANfHQWDD43G5U1a/v5oVg=", "owner": "nix-community", "repo": "home-manager", - "rev": "70fbbf05a5594b0a72124ab211bff1d502c89e3f", + "rev": "486b066025dccd8af7fbe5dd2cc79e46b88c80da", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1741010256, - "narHash": "sha256-WZNlK/KX7Sni0RyqLSqLPbK8k08Kq7H7RijPJbq9KHM=", + "lastModified": 1741173522, + "narHash": "sha256-k7VSqvv0r1r53nUI/IfPHCppkUAddeXn843YlAC5DR0=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ba487dbc9d04e0634c64e3b1f0d25839a0a68246", + "rev": "d69ab0d71b22fa1ce3dbeff666e6deb4917db049", "type": "github" }, "original": { From 9a5a39d210229b3b2aae1ec0a0bc08970d2f7b93 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Mon, 17 Mar 2025 13:59:54 +0100 Subject: [PATCH 31/85] feat(nvim): strip trailing whitespaces on save --- neovim/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/neovim/default.nix b/neovim/default.nix index 126cdf7..c3324d0 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -15,6 +15,9 @@ # auto-close brackets, etc nvim-autopairs + # trailing whirespaces + vim-better-whitespace + # better wildmenu wilder-nvim @@ -201,6 +204,8 @@ require("render-markdown").setup({ file_types = { "markdown", "vimwiki", "copilot-chat" }, }) + + vim.g.strip_whitespace_on_save = 1 ''; }; }; From 84e376943d8d3b302f7195d882092bc45be7efd1 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 20 Mar 2025 07:05:35 +0100 Subject: [PATCH 32/85] feat: silence direnv --- shell/direnv.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/direnv.nix b/shell/direnv.nix index 005868d..bfff889 100644 --- a/shell/direnv.nix +++ b/shell/direnv.nix @@ -4,6 +4,7 @@ programs = { direnv = { enable = true; + silent = true; enableZshIntegration = true; nix-direnv.enable = true; }; From 69aca65778928e465382ab7d0c66ba94945d6ee1 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 20 Mar 2025 07:06:35 +0100 Subject: [PATCH 33/85] chore: devenv update --- devenv.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/devenv.lock b/devenv.lock index a9f9ec6..5bda4b0 100644 --- a/devenv.lock +++ b/devenv.lock @@ -3,10 +3,10 @@ "devenv": { "locked": { "dir": "src/modules", - "lastModified": 1741068816, + "lastModified": 1742320965, "owner": "cachix", "repo": "devenv", - "rev": "9f6da63c162ad86b6fb84edcbd8c447fdc411c3d", + "rev": "6bde92766ddd3ee1630029a03d36baddd51934e2", "type": "github" }, "original": { @@ -40,10 +40,10 @@ ] }, "locked": { - "lastModified": 1740915799, + "lastModified": 1742300892, "owner": "cachix", "repo": "git-hooks.nix", - "rev": "42b1ba089d2034d910566bf6b40830af6b8ec732", + "rev": "ea26a82dda75bee6783baca6894040c8e6599728", "type": "github" }, "original": { From dc6a6c95ffb5a9b2885ad1a11723cc002d413169 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 20 Mar 2025 07:09:16 +0100 Subject: [PATCH 34/85] chore: update --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index f3372f9..79d56c8 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1741217763, - "narHash": "sha256-g/TrltIjFHIjtzKY5CJpoPANfHQWDD43G5U1a/v5oVg=", + "lastModified": 1742447757, + "narHash": "sha256-Q0KXcHQmum8L6IzGhhkVhjFMKY6BvYa/rhmLP26Ws8o=", "owner": "nix-community", "repo": "home-manager", - "rev": "486b066025dccd8af7fbe5dd2cc79e46b88c80da", + "rev": "94605dcadefeaff6b35c8931c9f38e4f4dc7ad0a", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1741173522, - "narHash": "sha256-k7VSqvv0r1r53nUI/IfPHCppkUAddeXn843YlAC5DR0=", + "lastModified": 1742288794, + "narHash": "sha256-Txwa5uO+qpQXrNG4eumPSD+hHzzYi/CdaM80M9XRLCo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d69ab0d71b22fa1ce3dbeff666e6deb4917db049", + "rev": "b6eaf97c6960d97350c584de1b6dcff03c9daf42", "type": "github" }, "original": { From ada1a9448ada0ccb29152474570c6b97d9e94c66 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 25 Mar 2025 08:39:50 +0100 Subject: [PATCH 35/85] feat(gh): add gh-copilot --- horsch/github.nix | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/horsch/github.nix b/horsch/github.nix index 2015359..8841ca4 100644 --- a/horsch/github.nix +++ b/horsch/github.nix @@ -1,11 +1,21 @@ -{ ... }: +{ pkgs, lib, ... }: { - programs.gh = { - enable = true; + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + "gh-copilot" + ]; - settings = { - git_protocol = "ssh"; + programs = { + gh = { + enable = true; + + settings = { + git_protocol = "ssh"; + }; + + extensions = with pkgs; [ + gh-copilot + ]; }; }; } From 49dda752cb8196f8e2be1e4794ba571eb3bb5629 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 25 Mar 2025 08:40:22 +0100 Subject: [PATCH 36/85] feat(gh): add gh-dash --- horsch/github.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/horsch/github.nix b/horsch/github.nix index 8841ca4..1bb5783 100644 --- a/horsch/github.nix +++ b/horsch/github.nix @@ -15,7 +15,15 @@ extensions = with pkgs; [ gh-copilot + gh-dash ]; }; + + gh-dash = { + enable = true; + + settings = { + }; + }; }; } From 73c1ab8d56e62eac8797b43563a25e54d32797ea Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 25 Mar 2025 08:43:47 +0100 Subject: [PATCH 37/85] feat(shell): add gfg shell alias (git fetch graph) --- shell/shell_aliases.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/shell_aliases.nix b/shell/shell_aliases.nix index c3141df..1ab320f 100644 --- a/shell/shell_aliases.nix +++ b/shell/shell_aliases.nix @@ -7,6 +7,7 @@ gs = "git status"; gd = "git diff"; gf = "git fetch"; + gfg = "git fetch --no-recurse-submodules && git graph --all --max-count 32"; k = "kubectl"; ww = "nvim -c VimwikiIndex"; }; From 9056c04c001f76671be57f7554642a3e9c3f01a9 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Fri, 4 Apr 2025 13:19:13 +0200 Subject: [PATCH 38/85] feat: add git-worktree-switcher --- git/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/git/default.nix b/git/default.nix index 9491095..5248c25 100644 --- a/git/default.nix +++ b/git/default.nix @@ -4,6 +4,10 @@ programs = { less.enable = true; git-credential-oauth.enable = true; + git-worktree-switcher = { + enable = true; + enableZshIntegration = true; + }; git = { enable = true; From 532200060b35f64bd6ee4bbd92eac1406b740669 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Fri, 4 Apr 2025 13:20:20 +0200 Subject: [PATCH 39/85] feat: configure gh-dash layout --- horsch/github.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/horsch/github.nix b/horsch/github.nix index 1bb5783..92c4697 100644 --- a/horsch/github.nix +++ b/horsch/github.nix @@ -23,6 +23,12 @@ enable = true; settings = { + defaults = { + preview = { + open = true; + width = 64; + }; + }; }; }; }; From 642709d33dcefb45c1ce27b2c8f65f8a8aafccdd Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 8 Apr 2025 22:14:47 +0200 Subject: [PATCH 40/85] feat: add private ssh host config --- private.nix | 1 + private/ssh.nix | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 private/ssh.nix diff --git a/private.nix b/private.nix index 86fffb9..4944525 100644 --- a/private.nix +++ b/private.nix @@ -40,5 +40,6 @@ ./kitty.nix ./nextcloud.nix ./sway + ./private/ssh.nix ]; } diff --git a/private/ssh.nix b/private/ssh.nix new file mode 100644 index 0000000..0a603ba --- /dev/null +++ b/private/ssh.nix @@ -0,0 +1,19 @@ +{ ... }: + +{ + programs = { + ssh = { + enable = true; + matchBlocks = { + tc-0x = { + host = "tc-*"; + user = "root"; + }; + ed-0x = { + host = "ed-*"; + user = "root"; + }; + }; + }; + }; +} From bb8ac5db06de09449eb0a6da247f35a337e5284b Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Fri, 11 Apr 2025 07:52:05 +0200 Subject: [PATCH 41/85] feat(nvim): map leader-F to git file log --- neovim/keymaps.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/neovim/keymaps.lua b/neovim/keymaps.lua index 5ece7b2..310744b 100644 --- a/neovim/keymaps.lua +++ b/neovim/keymaps.lua @@ -20,6 +20,7 @@ nnoremap("g", ":0Git") -- vim-flog nnoremap("G", ":Flog -all -date=relative -open-cmd=new") +nnoremap("F", ":Flog -path=% -date=relative -open-cmd=new") -- telescope local telescope = require("telescope.builtin") From 4f336803ab33a014b32a7968124d17aa71144771 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Fri, 11 Apr 2025 10:26:22 +0200 Subject: [PATCH 42/85] feat(git): enable relative worktrees --- git/default.nix | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/git/default.nix b/git/default.nix index 5248c25..3f39a34 100644 --- a/git/default.nix +++ b/git/default.nix @@ -105,7 +105,10 @@ tag.sort = "version:refname"; - worktree.guessRemote = true; + worktree = { + guessRemote = true; + useRelativePaths = true; + }; }; aliases = { @@ -144,26 +147,5 @@ git -C ''${dir}/.base checkout --detach HEAD git -C ''${dir}/.base worktree add ../''${branch} '') - - (writeShellScriptBin "git-make-relative" '' - - gitfile=''${1} - - if [[ -z ''${gitfile} ]]; then - gitfile=".git" - fi - - if [[ ! -f ''${gitfile} ]]; then - echo "file ''${gitfile} does not exist" - exit 1 - fi - - gitdir=$(grep "gitdir:" ''${gitfile} | cut -d: -f2 | xargs) - rel_gitdir=$(realpath -s --relative-to=. ''${gitdir}) - - echo "relative path: ''${rel_gitdir}" - - sed -i -e "s,gitdir:.*,gitdir: ''${rel_gitdir}," ''${gitfile} - '') ]; } From bd1a25fd95a77aabd97658c34b6d1d101185efbc Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 22 Apr 2025 09:20:23 +0200 Subject: [PATCH 43/85] fix: remove deprecated tabline-nvim --- neovim/default.nix | 3 --- neovim/keymaps.lua | 4 ++-- neovim/lualine.lua | 10 +++++++++- neovim/tabline.lua | 1 - 4 files changed, 11 insertions(+), 7 deletions(-) delete mode 100644 neovim/tabline.lua diff --git a/neovim/default.nix b/neovim/default.nix index c3324d0..9e64fee 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -46,7 +46,6 @@ nvim-notify comment-nvim lualine-nvim - tabline-nvim indent-blankline-nvim plenary-nvim vim-illuminate @@ -156,7 +155,6 @@ if vim.g.started_by_firenvim ~= true then require("local_lualine") - require("local_tabline") end require("local_indent-blankline") @@ -220,7 +218,6 @@ home.file.".config/nvim/lua/local_notify.lua".source = ./notify.lua; home.file.".config/nvim/lua/local_comment.lua".source = ./comment.lua; home.file.".config/nvim/lua/local_lualine.lua".source = ./lualine.lua; - home.file.".config/nvim/lua/local_tabline.lua".source = ./tabline.lua; home.file.".config/nvim/lua/local_indent-blankline.lua".source = ./indent-blankline.lua; home.file.".config/nvim/lua/local_gitsigns.lua".source = ./gitsigns.lua; home.file.".config/nvim/lua/local_luasnip.lua".source = ./luasnip.lua; diff --git a/neovim/keymaps.lua b/neovim/keymaps.lua index 310744b..366642c 100644 --- a/neovim/keymaps.lua +++ b/neovim/keymaps.lua @@ -12,8 +12,8 @@ nnoremap("", ":wincmd k") nnoremap("", ":wincmd l") -- Switch buffers -nnoremap("", ":TablineBufferNext") -nnoremap("", ":TablineBufferPrevious") +nnoremap("", ":bnext") +nnoremap("", ":bprevious") -- fugitive nnoremap("g", ":0Git") diff --git a/neovim/lualine.lua b/neovim/lualine.lua index 0c20c9b..cb56d65 100644 --- a/neovim/lualine.lua +++ b/neovim/lualine.lua @@ -3,5 +3,13 @@ require('lualine').setup({ sections = { lualine_c = { { "filename", path = 1 }, "require('lsp-status').status()" } }, - extensions = { "toggleterm" } + tabline = { + lualine_a = { 'buffers' }, + lualine_z = { 'tabs' } + }, + extensions = { + "fugitive", + "fzf", + "toggleterm" + } }) diff --git a/neovim/tabline.lua b/neovim/tabline.lua deleted file mode 100644 index 74da8bb..0000000 --- a/neovim/tabline.lua +++ /dev/null @@ -1 +0,0 @@ -require('tabline').setup({ enable = true, options = { show_bufnr = true, show_filename_only = true } }) From 4cbdafc64270314fb6cd2446cc460f0a2f1f18e9 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 22 Apr 2025 09:21:38 +0200 Subject: [PATCH 44/85] fix: replace deprecated neodev with lazydev --- neovim/default.nix | 2 +- neovim/lspconfig.lua | 10 +--------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/neovim/default.nix b/neovim/default.nix index 9e64fee..35172e7 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -84,7 +84,7 @@ nvim-lspconfig lsp-status-nvim rustaceanvim - neodev-nvim + lazydev-nvim none-ls-nvim lsp_lines-nvim lsp-inlayhints-nvim diff --git a/neovim/lspconfig.lua b/neovim/lspconfig.lua index 51d1fe1..b3a4be0 100644 --- a/neovim/lspconfig.lua +++ b/neovim/lspconfig.lua @@ -52,15 +52,7 @@ lsp_status.config({ }) lsp_status.register_progress() --- setup lua language server for init.nvim and nvim plugin development -require("neodev").setup({ - override = function(root_dir, options) - if require("neodev.util").has_file(root_dir, "/etc/nixos") then - options.enabled = true - options.plugins = true - end - end, -}) +require('lazydev').setup() local capabilities = require("cmp_nvim_lsp").default_capabilities(lsp_status.capabilities) From b862a05887974171904c2ed758caa40b1a1f2fb8 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 22 Apr 2025 09:30:21 +0200 Subject: [PATCH 45/85] feat: remove project-nvim --- neovim/default.nix | 3 --- neovim/keymaps.lua | 2 -- neovim/project-nvim.lua | 1 - neovim/telescope.lua | 1 - 4 files changed, 7 deletions(-) delete mode 100644 neovim/project-nvim.lua diff --git a/neovim/default.nix b/neovim/default.nix index 35172e7..cf7bb12 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -31,7 +31,6 @@ dressing-nvim # session handling - project-nvim auto-session # escape handling @@ -165,7 +164,6 @@ require("local_themes").setup("${theme}") - require("local_project-nvim") require("local_dap") require("local_illuminate") require("local_wilder") @@ -227,7 +225,6 @@ home.file.".config/nvim/lua/local_themes.lua".source = ./themes.lua; home.file.".config/nvim/lua/local_vimwiki.lua".source = ./vimwiki.lua; - home.file.".config/nvim/lua/local_project-nvim.lua".source = ./project-nvim.lua; home.file.".config/nvim/lua/local_dap.lua".source = ./dap.lua; home.file.".config/nvim/lua/local_illuminate.lua".source = ./illuminate.lua; home.file.".config/nvim/lua/local_wilder.lua".source = ./wilder.lua; diff --git a/neovim/keymaps.lua b/neovim/keymaps.lua index 366642c..7874e14 100644 --- a/neovim/keymaps.lua +++ b/neovim/keymaps.lua @@ -25,7 +25,6 @@ nnoremap("F", ":Flog -path=% -date=relative -open-cmd=new") -- telescope local telescope = require("telescope.builtin") local telescope_themes = require("telescope.themes") -local telescope_projects = require("telescope").extensions.projects local function map_telescope(key, telescope_function) vim.api.nvim_set_keymap("n", key, "", { @@ -40,7 +39,6 @@ end map_telescope("ff", telescope.find_files) map_telescope("fb", telescope.buffers) map_telescope("fg", telescope.git_files) -map_telescope("fp", telescope_projects.projects) map_telescope("fs", telescope.lsp_document_symbols) map_telescope("fS", telescope.lsp_dynamic_workspace_symbols) map_telescope("", telescope.grep_string) diff --git a/neovim/project-nvim.lua b/neovim/project-nvim.lua deleted file mode 100644 index 3b5902f..0000000 --- a/neovim/project-nvim.lua +++ /dev/null @@ -1 +0,0 @@ -require('project_nvim').setup({}) diff --git a/neovim/telescope.lua b/neovim/telescope.lua index ef9245d..fe6efcd 100644 --- a/neovim/telescope.lua +++ b/neovim/telescope.lua @@ -26,4 +26,3 @@ telescope.setup({ telescope.load_extension("fzf") telescope.load_extension("ui-select") -telescope.load_extension("projects") From a1ebbba5b934e6587de7b4a87c8b8ddeb63e9d6f Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 22 Apr 2025 09:31:12 +0200 Subject: [PATCH 46/85] fix: remove deprecated lsp-inlayhints --- neovim/default.nix | 1 - neovim/lspconfig.lua | 4 ---- 2 files changed, 5 deletions(-) diff --git a/neovim/default.nix b/neovim/default.nix index cf7bb12..c60d931 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -86,7 +86,6 @@ lazydev-nvim none-ls-nvim lsp_lines-nvim - lsp-inlayhints-nvim lspkind-nvim # Copilot diff --git a/neovim/lspconfig.lua b/neovim/lspconfig.lua index b3a4be0..7877011 100644 --- a/neovim/lspconfig.lua +++ b/neovim/lspconfig.lua @@ -12,8 +12,6 @@ local on_attach = function(client, bufnr) }) end - require("lsp-inlayhints").on_attach(client, bufnr) - local telescope = require("telescope.builtin") nnoremap("gD", vim.lsp.buf.declaration) @@ -41,8 +39,6 @@ local on_attach = function(client, bufnr) end end -require("lsp-inlayhints").setup({}) - local lsp_status = require("lsp-status") lsp_status.config({ current_function = false, From 179a04b3314ceb3cbdc588b47240d47f7b9b1523 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 22 Apr 2025 09:31:47 +0200 Subject: [PATCH 47/85] feat: remove undotree --- neovim/default.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/neovim/default.nix b/neovim/default.nix index c60d931..4bfe843 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -21,9 +21,6 @@ # better wildmenu wilder-nvim - # undo-tree - undotree - # quickfix nvim-bqf From 000823f8792bc7023daa796f2a70c0f01b8b04b4 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 22 Apr 2025 09:32:29 +0200 Subject: [PATCH 48/85] fix: remove deprecated dressing-nvim --- neovim/default.nix | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/neovim/default.nix b/neovim/default.nix index 4bfe843..beec25c 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -21,12 +21,9 @@ # better wildmenu wilder-nvim - # quickfix + # better quickfix nvim-bqf - # ui - dressing-nvim - # session handling auto-session From 1dce1ddcf2c268f8ca1db53f0fd4ffc1a642e7f9 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 22 Apr 2025 09:41:07 +0200 Subject: [PATCH 49/85] feat: add CodeCompanion --- neovim/default.nix | 12 ++++++++++++ neovim/keymaps.lua | 1 + 2 files changed, 13 insertions(+) diff --git a/neovim/default.nix b/neovim/default.nix index beec25c..92f391a 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -86,6 +86,7 @@ copilot-lua copilot-cmp CopilotChat-nvim + codecompanion-nvim # debugging nvim-dap @@ -181,6 +182,17 @@ }, }) + require('codecompanion').setup({ + strategies = { + chat = { + adapter = "copilot", + }, + inline = { + adapter = "copilot", + }, + }, + }) + require("diffview").setup({ view = { merge_tool = { diff --git a/neovim/keymaps.lua b/neovim/keymaps.lua index 7874e14..64f8b70 100644 --- a/neovim/keymaps.lua +++ b/neovim/keymaps.lua @@ -69,3 +69,4 @@ require("better_escape").setup() -- open Copilot Chat window nnoremap("cc", ":lua require('CopilotChat').open()") +nnoremap("C", ":CodeCompanionChat #buffer") From e3e1fe4d8d4a4f35753ed685bc5f7ad4477d5594 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 22 Apr 2025 09:41:48 +0200 Subject: [PATCH 50/85] chore: nix flake update --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 79d56c8..dca5080 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1742447757, - "narHash": "sha256-Q0KXcHQmum8L6IzGhhkVhjFMKY6BvYa/rhmLP26Ws8o=", + "lastModified": 1745272532, + "narHash": "sha256-+sFbKw1vFkulKYxsAbz84N0V/goSg808IgFh8iWe/As=", "owner": "nix-community", "repo": "home-manager", - "rev": "94605dcadefeaff6b35c8931c9f38e4f4dc7ad0a", + "rev": "81541ea36d1fead4be7797e826ee325d4c19308b", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1742288794, - "narHash": "sha256-Txwa5uO+qpQXrNG4eumPSD+hHzzYi/CdaM80M9XRLCo=", + "lastModified": 1744932701, + "narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b6eaf97c6960d97350c584de1b6dcff03c9daf42", + "rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef", "type": "github" }, "original": { From 821a8aee399503d2b43205506dc6f6db728a9b8f Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 23 Apr 2025 11:07:48 +0200 Subject: [PATCH 51/85] feat(shell): add hb-roots function to list hawkBit rootfs ids --- horsch/zsh.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/horsch/zsh.nix b/horsch/zsh.nix index 407e92b..6ad47d6 100644 --- a/horsch/zsh.nix +++ b/horsch/zsh.nix @@ -132,5 +132,16 @@ --get \ | jq | bat } + + function hb-roots { + curl --silent \ + --location "https://hawkbit-smartcan.horsch.com/rest/v1/softwaremodules" \ + --header "Content-Type: application/json" \ + --header "Authorization: Basic ''$hawkbitToken" \ + --data "q=type==rootfs-smartcan" \ + --data "sort=id:DESC" \ + --get \ + | jq | bat + } ''; } From bd20a503792c6630574931217c3c31fd03c320a8 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 23 Apr 2025 11:08:36 +0200 Subject: [PATCH 52/85] chore: devenv update --- devenv.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/devenv.lock b/devenv.lock index 5bda4b0..b36ba3a 100644 --- a/devenv.lock +++ b/devenv.lock @@ -3,10 +3,10 @@ "devenv": { "locked": { "dir": "src/modules", - "lastModified": 1742320965, + "lastModified": 1745335881, "owner": "cachix", "repo": "devenv", - "rev": "6bde92766ddd3ee1630029a03d36baddd51934e2", + "rev": "181af54d108a7df54f84268fd8d2409360920722", "type": "github" }, "original": { @@ -40,10 +40,10 @@ ] }, "locked": { - "lastModified": 1742300892, + "lastModified": 1742649964, "owner": "cachix", "repo": "git-hooks.nix", - "rev": "ea26a82dda75bee6783baca6894040c8e6599728", + "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", "type": "github" }, "original": { From 100f65c95170a015fd80a7295eb898b9d8d2560e Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 24 Apr 2025 08:49:14 +0200 Subject: [PATCH 53/85] feat(nvim): enabled c++ debugging --- neovim/dap.lua | 20 ++++++++++++++++++++ neovim/default.nix | 3 --- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/neovim/dap.lua b/neovim/dap.lua index a36d4ee..c7331e7 100644 --- a/neovim/dap.lua +++ b/neovim/dap.lua @@ -1,6 +1,26 @@ local dap = require("dap") local dapui = require("dapui") +dap.adapters.lldb = { + type = "executable", + command = "lldb-dap", + name = "lldb", +} + +dap.configurations.cpp = { + { + name = "Launch", + type = "lldb", + request = "launch", + program = function() + return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") + end, + cwd = "${workspaceFolder}", + stopOnEntry = false, + args = {}, + }, +} + dapui.setup() vim.fn.sign_define("DapBreakpoint", { text = "🔴", texthl = "", linehl = "", numhl = "" }) diff --git a/neovim/default.nix b/neovim/default.nix index 92f391a..b23411f 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -1,8 +1,5 @@ { pkgs, theme, vimwikiPath, ... }: { - # symlink for a stable path - home.file.".vscode-extensions/vscode-lldb".source = pkgs.vscode-extensions.vadimcn.vscode-lldb; - programs = { neovim = { enable = true; From 994d1b28a1c64d67ecb364851baefbaf1f608548 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Fri, 25 Apr 2025 08:27:40 +0200 Subject: [PATCH 54/85] feat: keep windows layout when closing buffers --- neovim/default.nix | 3 +++ neovim/keymaps.lua | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/neovim/default.nix b/neovim/default.nix index b23411f..e73ac3c 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -9,6 +9,9 @@ # theme nvim-solarized-lua + # keep window layout when deleting buffers + vim-bbye + # auto-close brackets, etc nvim-autopairs diff --git a/neovim/keymaps.lua b/neovim/keymaps.lua index 64f8b70..fecfaca 100644 --- a/neovim/keymaps.lua +++ b/neovim/keymaps.lua @@ -59,7 +59,7 @@ vim.api.nvim_create_autocmd("TermOpen", { }) -- buffer closing -nnoremap("gq", ":bdelete") +nnoremap("gq", ":Bdelete") -- toggle search highlighting vim.cmd('nnoremap * v:hlsearch ? ":nohlsearch" : "*"') From e125a6197b8091b92bd8b9e1ccf6aafa42275dd5 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Fri, 25 Apr 2025 08:28:03 +0200 Subject: [PATCH 55/85] feat: remove unused jj/kk escape mapping --- neovim/default.nix | 3 --- neovim/keymaps.lua | 3 --- 2 files changed, 6 deletions(-) diff --git a/neovim/default.nix b/neovim/default.nix index e73ac3c..4507a44 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -27,9 +27,6 @@ # session handling auto-session - # escape handling - better-escape-nvim - nvim-treesitter.withAllGrammars nvim-treesitter-textobjects nvim-ts-context-commentstring diff --git a/neovim/keymaps.lua b/neovim/keymaps.lua index fecfaca..dd52a7a 100644 --- a/neovim/keymaps.lua +++ b/neovim/keymaps.lua @@ -64,9 +64,6 @@ nnoremap("gq", ":Bdelete") -- toggle search highlighting vim.cmd('nnoremap * v:hlsearch ? ":nohlsearch" : "*"') --- insert-map jj/jk to escape -require("better_escape").setup() - -- open Copilot Chat window nnoremap("cc", ":lua require('CopilotChat').open()") nnoremap("C", ":CodeCompanionChat #buffer") From efd67c580b57e4297406ec1bbc48bbb374d7c55c Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Mon, 28 Apr 2025 08:09:25 +0200 Subject: [PATCH 56/85] refactor: replace deprecated initExtra with initContent --- horsch/zsh.nix | 2 +- shell/zsh.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/horsch/zsh.nix b/horsch/zsh.nix index 6ad47d6..b84f340 100644 --- a/horsch/zsh.nix +++ b/horsch/zsh.nix @@ -1,6 +1,6 @@ { ... }: { - programs.zsh.initExtra = '' + programs.zsh.initContent = '' if [ -f $HOME/.nix-profile/etc/profile.d/nix.sh ]; then source $HOME/.nix-profile/etc/profile.d/nix.sh diff --git a/shell/zsh.nix b/shell/zsh.nix index 1b37e36..76710fd 100644 --- a/shell/zsh.nix +++ b/shell/zsh.nix @@ -13,7 +13,7 @@ in highlight = zsh_autosuggest_highlight_style; }; - initExtra = '' + initContent = '' function set_win_title(){ local TITLE=$(git config --get remote.origin.url || echo "$PWD") echo -ne "\033]0; $(basename "$TITLE") \007" From 36f1b0fe94fbda454923978bfa31706fc9e664a0 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 30 Apr 2025 06:42:18 +0200 Subject: [PATCH 57/85] chore: update --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index dca5080..04b4047 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1745272532, - "narHash": "sha256-+sFbKw1vFkulKYxsAbz84N0V/goSg808IgFh8iWe/As=", + "lastModified": 1745987135, + "narHash": "sha256-8Up4QPuMZEJBU0eefAY+nUe7DYKQQzvaHnMpNdwRgKA=", "owner": "nix-community", "repo": "home-manager", - "rev": "81541ea36d1fead4be7797e826ee325d4c19308b", + "rev": "d2b3e6c83d457aa0e7f9344c61c3fed32bad0f7e", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1744932701, - "narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=", + "lastModified": 1745930157, + "narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=", "owner": "nixos", "repo": "nixpkgs", - "rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef", + "rev": "46e634be05ce9dc6d4db8e664515ba10b78151ae", "type": "github" }, "original": { From de9ae1f3a23f188ecdf2e0a798768035d67ec035 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Fri, 2 May 2025 07:01:03 +0200 Subject: [PATCH 58/85] chore: devenv update --- devenv.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devenv.lock b/devenv.lock index b36ba3a..968c5e0 100644 --- a/devenv.lock +++ b/devenv.lock @@ -3,10 +3,10 @@ "devenv": { "locked": { "dir": "src/modules", - "lastModified": 1745335881, + "lastModified": 1745932154, "owner": "cachix", "repo": "devenv", - "rev": "181af54d108a7df54f84268fd8d2409360920722", + "rev": "b7a4b2037ac15773c44a4674586103db738b9819", "type": "github" }, "original": { From 636b7b79bc3a72571f7d686d563d4b688ea36bce Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Fri, 2 May 2025 07:01:38 +0200 Subject: [PATCH 59/85] chore: update deprecated key --- gpg/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gpg/default.nix b/gpg/default.nix index 4a3069c..00d7857 100644 --- a/gpg/default.nix +++ b/gpg/default.nix @@ -4,7 +4,7 @@ services.gpg-agent = { enable = true; enableZshIntegration = true; - pinentryPackage = pkgs.pinentry-curses; + pinentry.package = pkgs.pinentry-curses; enableSshSupport = true; sshKeys = gpgSSHKeys; defaultCacheTtl = 3600 * 12; From 599be554228eca764ba548319ca38bbc81d4e56c Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Fri, 2 May 2025 07:01:55 +0200 Subject: [PATCH 60/85] feat: add llm --- shell/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/shell/default.nix b/shell/default.nix index 82caa42..28ebeb5 100644 --- a/shell/default.nix +++ b/shell/default.nix @@ -10,6 +10,7 @@ sshfs unzip xclip + llm ]; imports = [ From 52fb50b13c98924cb218b537a3d9c1ddee534b69 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Mon, 12 May 2025 08:56:26 +0200 Subject: [PATCH 61/85] feat: extract and configure code-companion --- neovim/codecompanion.lua | 26 ++++++++++++++++++++++++++ neovim/default.nix | 12 ++---------- neovim/keymaps.lua | 5 ++--- 3 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 neovim/codecompanion.lua diff --git a/neovim/codecompanion.lua b/neovim/codecompanion.lua new file mode 100644 index 0000000..7e5a379 --- /dev/null +++ b/neovim/codecompanion.lua @@ -0,0 +1,26 @@ +local codecompanion = require("codecompanion") + +codecompanion.setup({ + strategies = { + chat = { + adapter = "copilot", + }, + inline = { + adapter = "copilot", + }, + cmd = { + adapter = "copilot", + }, + }, + adapters = { + copilot = function() + return require("codecompanion.adapters").extend("copilot", { + schema = { + model = { + default = "claude-3.7-sonnet", + }, + }, + }) + end, + } +}) diff --git a/neovim/default.nix b/neovim/default.nix index 4507a44..56f2207 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -179,16 +179,7 @@ }, }) - require('codecompanion').setup({ - strategies = { - chat = { - adapter = "copilot", - }, - inline = { - adapter = "copilot", - }, - }, - }) + require("local_codecompanion") require("diffview").setup({ view = { @@ -231,4 +222,5 @@ home.file.".config/nvim/lua/local_illuminate.lua".source = ./illuminate.lua; home.file.".config/nvim/lua/local_wilder.lua".source = ./wilder.lua; home.file.".config/nvim/lua/local_firenvim.lua".source = ./firenvim.lua; + home.file.".config/nvim/lua/local_codecompanion.lua".source = ./codecompanion.lua; } diff --git a/neovim/keymaps.lua b/neovim/keymaps.lua index dd52a7a..b37e1f7 100644 --- a/neovim/keymaps.lua +++ b/neovim/keymaps.lua @@ -64,6 +64,5 @@ nnoremap("gq", ":Bdelete") -- toggle search highlighting vim.cmd('nnoremap * v:hlsearch ? ":nohlsearch" : "*"') --- open Copilot Chat window -nnoremap("cc", ":lua require('CopilotChat').open()") -nnoremap("C", ":CodeCompanionChat #buffer") +-- open CodeCompanion chat window +nnoremap("cc", ":CodeCompanionChat #buffer{watch} #lsp @full_stack_dev") From 4bbca6a646868785acb54808e83c878e57c70cd1 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Mon, 12 May 2025 08:56:58 +0200 Subject: [PATCH 62/85] feat: configure copilot --- neovim/nvim-cmp.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/neovim/nvim-cmp.lua b/neovim/nvim-cmp.lua index 1bc45ac..9b9aa93 100644 --- a/neovim/nvim-cmp.lua +++ b/neovim/nvim-cmp.lua @@ -11,7 +11,9 @@ local copilot_lua = require("copilot") local copilot_cmp = require("copilot_cmp") local lspkind = require("lspkind") -copilot_lua.setup({}) +copilot_lua.setup({ + copilot_model = "claude-3.5-sonnet", +}) copilot_cmp.setup({}) cmp.setup({ From 58489e40e40179decbd217f7a815b1822eb95a0a Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Mon, 12 May 2025 08:59:37 +0200 Subject: [PATCH 63/85] chore: update --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 04b4047..7102218 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1745987135, - "narHash": "sha256-8Up4QPuMZEJBU0eefAY+nUe7DYKQQzvaHnMpNdwRgKA=", + "lastModified": 1747021744, + "narHash": "sha256-IDsM/9/tHQBlhG3tXI2fTM84AUN1uRa7JDPT1LMlGes=", "owner": "nix-community", "repo": "home-manager", - "rev": "d2b3e6c83d457aa0e7f9344c61c3fed32bad0f7e", + "rev": "fb061f555f821fe4fb49f8f6f2a0cc3d5728bd52", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1745930157, - "narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=", + "lastModified": 1746904237, + "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "46e634be05ce9dc6d4db8e664515ba10b78151ae", + "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", "type": "github" }, "original": { From 7e8901c7bf3c61f71aab6fdeb43affd1d291ff9f Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 13 May 2025 08:39:59 +0200 Subject: [PATCH 64/85] chore: devenv update --- devenv.lock | 16 ++++++++-------- devenv.nix | 10 ++++++---- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/devenv.lock b/devenv.lock index 968c5e0..05d4282 100644 --- a/devenv.lock +++ b/devenv.lock @@ -3,10 +3,10 @@ "devenv": { "locked": { "dir": "src/modules", - "lastModified": 1745932154, + "lastModified": 1747116279, "owner": "cachix", "repo": "devenv", - "rev": "b7a4b2037ac15773c44a4674586103db738b9819", + "rev": "79e442e0b24f0f45db0d853d88d3d27dff422b3b", "type": "github" }, "original": { @@ -19,10 +19,10 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1733328505, + "lastModified": 1747046372, "owner": "edolstra", "repo": "flake-compat", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", + "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", "type": "github" }, "original": { @@ -40,10 +40,10 @@ ] }, "locked": { - "lastModified": 1742649964, + "lastModified": 1746537231, "owner": "cachix", "repo": "git-hooks.nix", - "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82", + "rev": "fa466640195d38ec97cf0493d6d6882bc4d14969", "type": "github" }, "original": { @@ -74,10 +74,10 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733477122, + "lastModified": 1746807397, "owner": "cachix", "repo": "devenv-nixpkgs", - "rev": "7bd9e84d0452f6d2e63b6e6da29fe73fac951857", + "rev": "c5208b594838ea8e6cca5997fbf784b7cca1ca90", "type": "github" }, "original": { diff --git a/devenv.nix b/devenv.nix index 1a6c6f8..a7d2560 100644 --- a/devenv.nix +++ b/devenv.nix @@ -1,11 +1,13 @@ { pkgs, ... }: { - packages = with pkgs; [ - git - ]; - git-hooks.hooks = { + check-case-conflicts.enable = true; + check-merge-conflicts.enable = true; commitizen.enable = true; + detect-private-keys.enable = true; + end-of-file-fixer.enable = true; + markdownlint.enable = true; + mdformat.enable = true; }; } From a9a6888958ed228597517bd2e8289326203b651b Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 13 May 2025 08:52:38 +0200 Subject: [PATCH 65/85] chore: rebuild devenv --- .envrc | 2 ++ .gitignore | 3 +++ .pre-commit-config.yaml | 27 --------------------------- devenv.nix | 14 ++++++++++++-- 4 files changed, 17 insertions(+), 29 deletions(-) delete mode 100644 .pre-commit-config.yaml diff --git a/.envrc b/.envrc index 30da14f..e3c2943 100644 --- a/.envrc +++ b/.envrc @@ -2,4 +2,6 @@ export DIRENV_WARN_TIMEOUT=20s eval "$(devenv direnvrc)" +# The use_devenv function supports passing flags to the devenv command +# For example: use devenv --impure --option services.postgres.enable:bool true use devenv diff --git a/.gitignore b/.gitignore index 785767a..47f7f20 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,6 @@ devenv.local.nix # direnv .direnv + +# pre-commit +.pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index 87f991d..0000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# See https://pre-commit.com for more information -# See https://pre-commit.com/hooks.html for more hooks -repos: - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 - hooks: - - id: trailing-whitespace - - id: end-of-file-fixer - - id: check-yaml - - id: check-added-large-files - - id: detect-private-key - - id: mixed-line-ending - - - repo: https://github.com/commitizen-tools/commitizen - rev: v3.27.0 - hooks: - - id: commitizen - stages: [commit-msg] - - - repo: local - hooks: - - id: home-manager-check - name: Home Manager Config Check - entry: home-manager switch --dry-run - language: system - pass_filenames: false - exclude: ^docs/ diff --git a/devenv.nix b/devenv.nix index a7d2560..0b21fb3 100644 --- a/devenv.nix +++ b/devenv.nix @@ -1,7 +1,8 @@ -{ pkgs, ... }: +{ ... }: { - git-hooks.hooks = { + git-hooks = { + hooks = { check-case-conflicts.enable = true; check-merge-conflicts.enable = true; commitizen.enable = true; @@ -10,4 +11,13 @@ markdownlint.enable = true; mdformat.enable = true; }; + + hooks.home-manager-check = { + enable = true; + name = "Home Manager Config Check"; + entry = "home-manager switch --dry-run"; + pass_filenames = false; + excludes = [ "^docs/" ]; + }; + }; } From 759bda1d77f0b196f5dec7f666a66eb3493b11ae Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 13 May 2025 08:56:31 +0200 Subject: [PATCH 66/85] style: enable nix formatter and linter --- devenv.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/devenv.nix b/devenv.nix index 0b21fb3..b51d8bc 100644 --- a/devenv.nix +++ b/devenv.nix @@ -1,11 +1,11 @@ -{ ... }: - -{ +{...}: { git-hooks = { hooks = { + alejandra.enable = true; check-case-conflicts.enable = true; check-merge-conflicts.enable = true; commitizen.enable = true; + deadnix.enable = true; detect-private-keys.enable = true; end-of-file-fixer.enable = true; markdownlint.enable = true; @@ -17,7 +17,7 @@ name = "Home Manager Config Check"; entry = "home-manager switch --dry-run"; pass_filenames = false; - excludes = [ "^docs/" ]; + excludes = ["^docs/"]; }; }; } From dfec21163aeb8a051d87716befb571b3ba2b3439 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 20 May 2025 12:56:52 +0200 Subject: [PATCH 67/85] refactor: configure difftastic --- git/default.nix | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/git/default.nix b/git/default.nix index 3f39a34..ecb8734 100644 --- a/git/default.nix +++ b/git/default.nix @@ -1,6 +1,10 @@ -{ pkgs, userName, userEmail, gpgSigningKey, ... }: - { + pkgs, + userName, + userEmail, + gpgSigningKey, + ... +}: { programs = { less.enable = true; git-credential-oauth.enable = true; @@ -23,6 +27,8 @@ difftastic = { enable = true; background = "light"; + display = "side-by-side-show-both"; + enableAsDifftool = true; }; lfs = { From 9b1e3b6bc9d564ce11fa6c5290354110f85818ae Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 20 May 2025 12:58:15 +0200 Subject: [PATCH 68/85] feat: add preview to swu selector --- horsch/zsh.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/horsch/zsh.nix b/horsch/zsh.nix index b84f340..65bac67 100644 --- a/horsch/zsh.nix +++ b/horsch/zsh.nix @@ -1,5 +1,4 @@ -{ ... }: -{ +{...}: { programs.zsh.initContent = '' if [ -f $HOME/.nix-profile/etc/profile.d/nix.sh ]; then @@ -54,8 +53,11 @@ local ssh_login="fusion" local update_file=''${1} + local fzf_preview='stat --printf "%n\nSize: %s bytes\nModified: %y" {}' + if [ -z ''${update_file} ]; then - update_file=$(find build/tmp/deploy/images -name "*.swu" -type f | fzf --select-1) + update_file=$(find build/tmp/deploy/images -name "*.swu" -type f \ + | fzf --select-1 --exit-0 --header "Select a update file" --preview=''${fzf_preview} --preview-window=top) fi if [ -z ''${update_file} ]; then From 22d09d236e77f3fe7d5301bbdf4245e95cd350a9 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 20 May 2025 12:58:45 +0200 Subject: [PATCH 69/85] fix: use update imx image name --- horsch/zsh.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/horsch/zsh.nix b/horsch/zsh.nix index 65bac67..5d091c6 100644 --- a/horsch/zsh.nix +++ b/horsch/zsh.nix @@ -99,7 +99,7 @@ local wic_file=''${2} if [ -z ''${bootloader_file} ]; then - bootloader_file=$(find build/tmp/deploy/images -name "imx-boot-horsch-fusion-sd*" -type f \ + bootloader_file=$(find build/tmp/deploy/images -name "imx-boot-horsch-*" -type f \ | fzf --select-1 --exit-0 --header "Select a bootloader file" --preview=''${fzf_preview} --preview-window=top) fi From 306e8aa54f40bd295706b1ccc08c221be36f935e Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 20 May 2025 12:59:27 +0200 Subject: [PATCH 70/85] chore: switch to fusion-wifi as default --- horsch/ssh.nix | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/horsch/ssh.nix b/horsch/ssh.nix index 7890487..b3be0ad 100644 --- a/horsch/ssh.nix +++ b/horsch/ssh.nix @@ -1,6 +1,4 @@ -{ ... }: - -{ +{...}: { programs = { ssh = { enable = true; @@ -17,7 +15,7 @@ }; }; Fusion-USB = { - host = "fusion-usb fusion 172.16.0.1"; + host = "fusion-usb 172.16.0.1"; user = "root"; hostname = "172.16.0.1"; checkHostIP = false; @@ -28,7 +26,7 @@ }; }; Fusion-Wifi = { - host = "fusion-wifi 172.16.1.1"; + host = "fusion-wifi fusion 172.16.1.1"; user = "root"; hostname = "172.16.1.1"; checkHostIP = false; From 41fc5bb328d5edb6ab7a6572f445e3395e5c975b Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 20 May 2025 12:59:48 +0200 Subject: [PATCH 71/85] chore: update --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 7102218..5dd08eb 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1747021744, - "narHash": "sha256-IDsM/9/tHQBlhG3tXI2fTM84AUN1uRa7JDPT1LMlGes=", + "lastModified": 1747688838, + "narHash": "sha256-FZq4/3OtGV/cti9Vccsy2tGSUrxTO4hkDF9oeGRTen4=", "owner": "nix-community", "repo": "home-manager", - "rev": "fb061f555f821fe4fb49f8f6f2a0cc3d5728bd52", + "rev": "45c2985644b60ab64de2a2d93a4d132ecb87cf66", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746904237, - "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", + "lastModified": 1747542820, + "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", "owner": "nixos", "repo": "nixpkgs", - "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", + "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", "type": "github" }, "original": { From 022abfffc561d801968f086526596c26c7a0a670 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Fri, 23 May 2025 08:43:24 +0200 Subject: [PATCH 72/85] feat: use delta instead of difftastic --- git/default.nix | 16 ++++++++++++++-- horsch/github.nix | 16 ++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/git/default.nix b/git/default.nix index ecb8734..2a63730 100644 --- a/git/default.nix +++ b/git/default.nix @@ -24,8 +24,21 @@ signByDefault = true; }; - difftastic = { + delta = { enable = true; + options = { + dark = true; + theme = "Solarized (dark)"; + side-by-side = true; + line-numbers = true; + true-color = "always"; + plus-style = "syntax \"#003800\""; + minus-style = "syntax \"#380000\""; + }; + }; + + difftastic = { + enable = false; background = "light"; display = "side-by-side-show-both"; enableAsDifftool = true; @@ -41,7 +54,6 @@ core = { editor = "nvim"; fsmonitor = true; - pager = "less -FX"; untrackedCache = true; }; diff --git a/horsch/github.nix b/horsch/github.nix index 92c4697..0a94235 100644 --- a/horsch/github.nix +++ b/horsch/github.nix @@ -1,8 +1,15 @@ -{ pkgs, lib, ... }: - { - nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ - "gh-copilot" + pkgs, + lib, + ... +}: { + nixpkgs.config.allowUnfreePredicate = pkg: + builtins.elem (lib.getName pkg) [ + "gh-copilot" + ]; + + home.packages = with pkgs; [ + delta ]; programs = { @@ -29,6 +36,7 @@ width = 64; }; }; + pager.diff = "delta"; }; }; }; From eeb8173a902e7c95356aff475165d40ff8fc73de Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 17 Jun 2025 14:32:48 +0200 Subject: [PATCH 73/85] feat: replace nvim-cmp with blink-cmp --- neovim/blink-cmp.lua | 28 +++++++++++++ neovim/default.nix | 45 +++++++-------------- neovim/lspconfig.lua | 2 - neovim/nvim-cmp.lua | 96 -------------------------------------------- 4 files changed, 43 insertions(+), 128 deletions(-) create mode 100644 neovim/blink-cmp.lua delete mode 100644 neovim/nvim-cmp.lua diff --git a/neovim/blink-cmp.lua b/neovim/blink-cmp.lua new file mode 100644 index 0000000..5f28792 --- /dev/null +++ b/neovim/blink-cmp.lua @@ -0,0 +1,28 @@ +require("copilot").setup({ + copilot_model = "claude-4-sonnet" +}) + +require("blink-copilot").setup({}) + +require("blink-cmp").setup({ + completion = { + documentation = { auto_show = true, auto_show_delay_ms = 500 }, + ghost_text = { enabled = true }, + }, + keymap = { + preset = "default" + }, + signature = { enabled = true }, + sources = { + default = { "copilot", "lsp", "buffer", "path", "cmdline", "codecompanion" }, + + providers = { + copilot = { + name = "copilot", + module = "blink-copilot", + score_offset = 100, + async = true, + } + } + }, +}) diff --git a/neovim/default.nix b/neovim/default.nix index 56f2207..d83f02d 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -1,5 +1,9 @@ -{ pkgs, theme, vimwikiPath, ... }: { + pkgs, + theme, + vimwikiPath, + ... +}: { programs = { neovim = { enable = true; @@ -55,15 +59,8 @@ luasnip # auto-completion - nvim-cmp - cmp-nvim-lsp - cmp-buffer - cmp-path - cmp-cmdline - cmp-nvim-lua - cmp_luasnip - cmp-calc - cmp-nvim-lsp-signature-help + blink-cmp + blink-copilot # telescope telescope-nvim @@ -82,7 +79,6 @@ # Copilot copilot-lua copilot-cmp - CopilotChat-nvim codecompanion-nvim # debugging @@ -114,14 +110,14 @@ texlab nixd nixpkgs-fmt - bitbake-language-server pyright - (python3.withPackages (ps: with ps; [ - pep8 - autopep8 - python-lsp-server - ])) + (python3.withPackages (ps: + with ps; [ + pep8 + autopep8 + python-lsp-server + ])) #clipboard xclip @@ -150,7 +146,7 @@ require("local_indent-blankline") require("local_gitsigns") require("local_luasnip") - require("local_nvim-cmp") + require("local_blink-cmp") require("local_telescope") require("local_themes").setup("${theme}") @@ -168,17 +164,6 @@ require("local_firenvim") - require("CopilotChat").setup({ - highlight_headers = false, - separator = "---", - error_header = "> [!ERROR] Error", - window = { - layout = "float", - width = 0.8, - height = 0.8, - }, - }) - require("local_codecompanion") require("diffview").setup({ @@ -212,7 +197,7 @@ home.file.".config/nvim/lua/local_indent-blankline.lua".source = ./indent-blankline.lua; home.file.".config/nvim/lua/local_gitsigns.lua".source = ./gitsigns.lua; home.file.".config/nvim/lua/local_luasnip.lua".source = ./luasnip.lua; - home.file.".config/nvim/lua/local_nvim-cmp.lua".source = ./nvim-cmp.lua; + home.file.".config/nvim/lua/local_blink-cmp.lua".source = ./blink-cmp.lua; home.file.".config/nvim/lua/local_telescope.lua".source = ./telescope.lua; home.file.".config/nvim/lua/local_themes.lua".source = ./themes.lua; diff --git a/neovim/lspconfig.lua b/neovim/lspconfig.lua index 7877011..0d739b9 100644 --- a/neovim/lspconfig.lua +++ b/neovim/lspconfig.lua @@ -50,8 +50,6 @@ lsp_status.register_progress() require('lazydev').setup() -local capabilities = require("cmp_nvim_lsp").default_capabilities(lsp_status.capabilities) - local servers = { ["bashls"] = {}, ["bitbake_language_server"] = {}, diff --git a/neovim/nvim-cmp.lua b/neovim/nvim-cmp.lua deleted file mode 100644 index 9b9aa93..0000000 --- a/neovim/nvim-cmp.lua +++ /dev/null @@ -1,96 +0,0 @@ -local has_words_before = function() - local line, col = unpack(vim.api.nvim_win_get_cursor(0)) - return col ~= 0 and - vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub( - col, col):match("%s") == nil -end - -local cmp = require("cmp") -local luasnip = require("luasnip") -local copilot_lua = require("copilot") -local copilot_cmp = require("copilot_cmp") -local lspkind = require("lspkind") - -copilot_lua.setup({ - copilot_model = "claude-3.5-sonnet", -}) -copilot_cmp.setup({}) - -cmp.setup({ - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end - }, - sources = cmp.config.sources({ - { name = "copilot" }, - { name = "nvim_lsp" }, - { name = "nvim_lsp_signature_help" }, - { name = "luasnip" }, - { name = "path" }, - { name = "buffer" }, - { name = "nvim-lua" }, - { name = "calc" }, - }), - mapping = cmp.mapping.preset.insert({ - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping.complete({}), - [""] = cmp.mapping.abort(), - [""] = cmp.mapping.confirm({ select = false }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - elseif has_words_before() then - cmp.complete() - else - fallback() - end - end, { "i", "s" }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { "i", "s" }), - }), - experimental = { ghost_text = true }, - window = { - completion = cmp.config.window.bordered(), - documentation = cmp.config.window.bordered(), - }, - formatting = { - format = lspkind.cmp_format({ - mode = "symbol", - maxwidth = { - menu = 50, - abbr = 50, - }, - ellipsis_char = "...", - show_labelDetails = true, - symbol_map = { - Copilot = "", - } - }), - }, -}) - --- `/` cmdline setup. -cmp.setup.cmdline("/", { - sources = cmp.config.sources( - { name = "buffer" } - ) -}) - --- `:` cmdline setup. -cmp.setup.cmdline(":", { - sources = cmp.config.sources( - { name = "path" }, - { name = "cmdline" } - ) -}) From 3a14881e9473a2c6bbd3fd3a5d09b90cd12a34aa Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 17 Jun 2025 14:33:38 +0200 Subject: [PATCH 74/85] fix: remove broken bitbake_language_server --- neovim/lspconfig.lua | 1 - 1 file changed, 1 deletion(-) diff --git a/neovim/lspconfig.lua b/neovim/lspconfig.lua index 0d739b9..f687087 100644 --- a/neovim/lspconfig.lua +++ b/neovim/lspconfig.lua @@ -52,7 +52,6 @@ require('lazydev').setup() local servers = { ["bashls"] = {}, - ["bitbake_language_server"] = {}, ["clangd"] = {}, ["cmake"] = {}, ["dockerls"] = {}, From fb5546ca3ec9dac29757ea74aac48977aeaa6890 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 17 Jun 2025 14:34:00 +0200 Subject: [PATCH 75/85] feat: enable codecompanion agent mode with claude-4-sonnet --- neovim/codecompanion.lua | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/neovim/codecompanion.lua b/neovim/codecompanion.lua index 7e5a379..efd6d72 100644 --- a/neovim/codecompanion.lua +++ b/neovim/codecompanion.lua @@ -1,9 +1,18 @@ local codecompanion = require("codecompanion") +vim.g.codecompanion_auto_tool_mode = true + codecompanion.setup({ strategies = { chat = { adapter = "copilot", + tools = { + opts = { + auto_submit_errors = true, + auto_submit_success = true, + requires_approval = false, + } + } }, inline = { adapter = "copilot", @@ -17,7 +26,7 @@ codecompanion.setup({ return require("codecompanion.adapters").extend("copilot", { schema = { model = { - default = "claude-3.7-sonnet", + default = "claude-sonnet-4", }, }, }) From 28d2284c10093ad92fb0b14017a3459398f3941d Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 17 Jun 2025 14:35:34 +0200 Subject: [PATCH 76/85] chore: update --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 5dd08eb..793df4f 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1747688838, - "narHash": "sha256-FZq4/3OtGV/cti9Vccsy2tGSUrxTO4hkDF9oeGRTen4=", + "lastModified": 1750127463, + "narHash": "sha256-K2xFtlD3PcKAZriOE3LaBLYmVfGQu+rIF4Jr1RFYR0Q=", "owner": "nix-community", "repo": "home-manager", - "rev": "45c2985644b60ab64de2a2d93a4d132ecb87cf66", + "rev": "28eef8722d1af18ca13e687dbf485e1c653a0402", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1747542820, - "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", + "lastModified": 1749794982, + "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", + "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", "type": "github" }, "original": { From 8a1e736f096398a8ce7e812e322702d7c67e450d Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Tue, 17 Jun 2025 15:09:44 +0200 Subject: [PATCH 77/85] feat(nvim): set wrap on --- neovim/options.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/neovim/options.lua b/neovim/options.lua index 3ac11ae..f1f934a 100644 --- a/neovim/options.lua +++ b/neovim/options.lua @@ -14,8 +14,8 @@ vim.opt.expandtab = true -- scroll offset vim.opt.scrolloff = 4 --- don't warp lines -vim.opt.wrap = false +-- wrap lines +vim.opt.wrap = true -- split to right/below vim.opt.splitright = true From 972c0aee4513ad46114ad0d780b3268887ae5722 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 18 Jun 2025 08:58:56 +0200 Subject: [PATCH 78/85] feat(devenv): add watchexec to devenv --- devenv.nix | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/devenv.nix b/devenv.nix index b51d8bc..7883385 100644 --- a/devenv.nix +++ b/devenv.nix @@ -1,4 +1,8 @@ -{...}: { +{pkgs, ...}: { + packages = with pkgs; [ + watchexec + ]; + git-hooks = { hooks = { alejandra.enable = true; From bf447bdce11229bda73357dd6fa2b0187b148bb9 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 18 Jun 2025 08:59:26 +0200 Subject: [PATCH 79/85] feat(nvim): don't require configmation before stripping whitespaces --- neovim/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/neovim/default.nix b/neovim/default.nix index d83f02d..43a51e0 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -180,6 +180,7 @@ }) vim.g.strip_whitespace_on_save = 1 + vim.g.strip_whitespace_confirm = 0 ''; }; }; From 32e96d011ad8948fd575d9250d4b67dd0967a0d1 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 18 Jun 2025 09:00:45 +0200 Subject: [PATCH 80/85] feat(nvim): disable general auto-completion sources in codecompanion chat --- neovim/blink-cmp.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/neovim/blink-cmp.lua b/neovim/blink-cmp.lua index 5f28792..3235655 100644 --- a/neovim/blink-cmp.lua +++ b/neovim/blink-cmp.lua @@ -14,7 +14,11 @@ require("blink-cmp").setup({ }, signature = { enabled = true }, sources = { - default = { "copilot", "lsp", "buffer", "path", "cmdline", "codecompanion" }, + default = { "copilot", "lsp", "buffer", "path", "cmdline" }, + + per_filetype = { + codecompanion = { "codecompanion" } + }, providers = { copilot = { From 9d43b837ff0be4020dad742efb77f047fa79539c Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 18 Jun 2025 09:01:51 +0200 Subject: [PATCH 81/85] feat(shell): add tmux --- neovim/default.nix | 3 +++ shell/default.nix | 4 ++-- shell/tmux.nix | 28 ++++++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 shell/tmux.nix diff --git a/neovim/default.nix b/neovim/default.nix index 43a51e0..ec0b648 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -90,6 +90,9 @@ # firenvim firenvim + + # tmux + vim-tmux-navigator ]; withNodeJs = true; diff --git a/shell/default.nix b/shell/default.nix index 28ebeb5..0aeb151 100644 --- a/shell/default.nix +++ b/shell/default.nix @@ -1,5 +1,4 @@ -{ pkgs, ... }: -{ +{pkgs, ...}: { home.packages = with pkgs; [ devenv difftastic @@ -25,6 +24,7 @@ ./rsync.nix ./shell_aliases.nix ./starship.nix + ./tmux.nix ./tree.nix ./zoxide.nix ./zsh.nix diff --git a/shell/tmux.nix b/shell/tmux.nix new file mode 100644 index 0000000..3938742 --- /dev/null +++ b/shell/tmux.nix @@ -0,0 +1,28 @@ +{pkgs, ...}: { + programs = { + tmux = { + enable = true; + clock24 = true; + keyMode = "vi"; + escapeTime = 0; + plugins = with pkgs.tmuxPlugins; [ + tmux-colors-solarized + vim-tmux-navigator + { + plugin = power-theme; + extraConfig = '' + set -g @tmux_power_theme "colour4" + ''; + } + ]; + terminal = "xterm-256color"; + extraConfig = '' + # Terminal overrides + set-option -sa terminal-overrides ",xterm-256color:Tc" + + # Reload tmux config to ensure theme is applied + bind r source-file ~/.config/tmux/tmux.conf \; display-message "Config reloaded!" + ''; + }; + }; +} From 6f46dcbb2ceb167bf3148cdb2946bad2d77aff1b Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 18 Jun 2025 16:07:57 +0200 Subject: [PATCH 82/85] feat(nvim): auto-complete with tab --- neovim/blink-cmp.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/neovim/blink-cmp.lua b/neovim/blink-cmp.lua index 3235655..8d5bcfb 100644 --- a/neovim/blink-cmp.lua +++ b/neovim/blink-cmp.lua @@ -8,9 +8,15 @@ require("blink-cmp").setup({ completion = { documentation = { auto_show = true, auto_show_delay_ms = 500 }, ghost_text = { enabled = true }, + list = { + selection = { preselect = false, auto_insert = true }, + }, }, keymap = { - preset = "default" + preset = "default", + [""] = { "select_next", "fallback" }, + [""] = { "select_prev", "fallback" }, + [""] = { "accept", "fallback" }, }, signature = { enabled = true }, sources = { From b437553ce353df209e0c70dde81d82ba98eefbd8 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 18 Jun 2025 16:08:39 +0200 Subject: [PATCH 83/85] feat(nvim): remove snippet plugins --- neovim/default.nix | 7 ------- neovim/luasnip.lua | 1 - 2 files changed, 8 deletions(-) delete mode 100644 neovim/luasnip.lua diff --git a/neovim/default.nix b/neovim/default.nix index ec0b648..9630896 100644 --- a/neovim/default.nix +++ b/neovim/default.nix @@ -54,10 +54,6 @@ nvim-web-devicons # used by diffview-nvim diffview-nvim - # snippets - friendly-snippets - luasnip - # auto-completion blink-cmp blink-copilot @@ -148,7 +144,6 @@ require("local_indent-blankline") require("local_gitsigns") - require("local_luasnip") require("local_blink-cmp") require("local_telescope") @@ -163,7 +158,6 @@ vim.g.gitblame_date_format = "%r" require("nvim-autopairs").setup({}) - require("neogen").setup({ snippet_engine = "luasnip" }) require("local_firenvim") @@ -200,7 +194,6 @@ home.file.".config/nvim/lua/local_lualine.lua".source = ./lualine.lua; home.file.".config/nvim/lua/local_indent-blankline.lua".source = ./indent-blankline.lua; home.file.".config/nvim/lua/local_gitsigns.lua".source = ./gitsigns.lua; - home.file.".config/nvim/lua/local_luasnip.lua".source = ./luasnip.lua; home.file.".config/nvim/lua/local_blink-cmp.lua".source = ./blink-cmp.lua; home.file.".config/nvim/lua/local_telescope.lua".source = ./telescope.lua; diff --git a/neovim/luasnip.lua b/neovim/luasnip.lua deleted file mode 100644 index 80309d7..0000000 --- a/neovim/luasnip.lua +++ /dev/null @@ -1 +0,0 @@ -require("luasnip.loaders.from_vscode").lazy_load() From a0f53489fa5fa942e1b8a8277cf0fdd2cb98bce7 Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 18 Jun 2025 16:09:46 +0200 Subject: [PATCH 84/85] feat(zsh): attach to or create tmux session in interactive shells --- shell/zsh.nix | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/shell/zsh.nix b/shell/zsh.nix index 76710fd..9f415bd 100644 --- a/shell/zsh.nix +++ b/shell/zsh.nix @@ -1,8 +1,13 @@ -{ pkgs, theme, ... }: -let - zsh_autosuggest_highlight_style = if theme == "light" then "fg=180" else "fg=10"; -in { + pkgs, + theme, + ... +}: let + zsh_autosuggest_highlight_style = + if theme == "light" + then "fg=180" + else "fg=10"; +in { programs.zsh = { enable = true; enableCompletion = true; @@ -14,6 +19,15 @@ in }; initContent = '' + # Auto-start tmux if conditions are met + if [[ -z "$TMUX" && -z "$SSH_TTY" && $- == *i* ]]; then + # Check if tmux is available and terminal supports it + if command -v tmux >/dev/null 2>&1; then + # Try to attach to existing session, or create new one + exec tmux new-session -A -s default + fi + fi + function set_win_title(){ local TITLE=$(git config --get remote.origin.url || echo "$PWD") echo -ne "\033]0; $(basename "$TITLE") \007" From d0f2a1d5b633b7edd502a3182e17758bebe87c5e Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Wed, 25 Jun 2025 14:42:58 +0200 Subject: [PATCH 85/85] chore: update --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 793df4f..e42e83e 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1750127463, - "narHash": "sha256-K2xFtlD3PcKAZriOE3LaBLYmVfGQu+rIF4Jr1RFYR0Q=", + "lastModified": 1750730235, + "narHash": "sha256-rZErlxiV7ssvI8t7sPrKU+fRigNc2KvoKZG3gtUtK50=", "owner": "nix-community", "repo": "home-manager", - "rev": "28eef8722d1af18ca13e687dbf485e1c653a0402", + "rev": "d07e9cceb4994ed64a22b9b36f8b76923e87ac38", "type": "github" }, "original": { @@ -22,11 +22,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1749794982, - "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", + "lastModified": 1750506804, + "narHash": "sha256-VLFNc4egNjovYVxDGyBYTrvVCgDYgENp5bVi9fPTDYc=", "owner": "nixos", "repo": "nixpkgs", - "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", + "rev": "4206c4cb56751df534751b058295ea61357bbbaa", "type": "github" }, "original": {