From 9533f9c169d27f2aa1ea20bc0bd9e0717213256a Mon Sep 17 00:00:00 2001 From: Michael Mandl Date: Thu, 20 Feb 2025 10:09:26 +0100 Subject: [PATCH 01/16] 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 02/16] 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 03/16] 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 04/16] 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 05/16] 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 06/16] 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 07/16] 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 08/16] 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 09/16] 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 10/16] 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 11/16] 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 12/16] 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 13/16] 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 14/16] 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 15/16] 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 16/16] 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"; };