{ pkgs, config, ... }: { programs.git = { enable = true; userEmail = "cjriddz@protonmail.com"; userName = "iofq"; delta = { enable = true; options = { side-by-side = true; line-numbers = true; }; }; extraConfig = { core.editor = "nvim"; }; signing = { key = "cjriddz@protonmail.com"; signByDefault = false; }; extraConfig.pull.rebase = true; }; home.packages = [ pkgs.watchman ]; programs.jujutsu = { enable = true; settings = { # core = { # fsmonitor = "watchman"; # watchman = { # register-snapshot-trigger = true; # }; # }; user = { email = "cjriddz@protonmail.com"; name = "iofq"; }; operation = { username = "iofq"; }; signing = { behavior = "drop"; backend = "gpg"; key = "cjriddz@protonmail.com"; }; ui = { default-command = [ "log" ]; conflict-marker-style = "git"; merge-editor = "vimdiff"; diff-editor = "diffview"; diff-formatter = ":git"; paginate = "never"; movement = { edit = true; }; }; merge-tools.vimdiff = { program = "nvim"; }; merge-tools.diffview = { program = "sh"; edit-args = [ "-c" '' set -eu rm -f "$right/JJ-INSTRUCTIONS" git -C "$left" init -q git -C "$left" add -A git -C "$left" commit -q -m baseline --allow-empty mv "$left/.git" "$right" git -C "$right" add --intent-to-add -A (cd "$right"; nvim -c "lua vim.g.snacks_indent=false" -c "lua require('lazy').load({plugins = {'diffview.nvim'}})" -c DiffviewOpen) git -C "$right" diff-index --quiet --cached HEAD && { echo "No changes done, aborting split."; exit 1; } git -C "$right" commit -q -m split git -C "$right" restore . # undo changes in modified files git -C "$right" reset . # undo --intent-to-add git -C "$right" clean -q -df # remove untracked files '' ]; diff-args = [ "-c" '' set -eu rm -f "$right/JJ-INSTRUCTIONS" git -C "$left" init -q git -C "$left" add -A git -C "$left" commit -q -m baseline --allow-empty mv "$left/.git" "$right" git -C "$right" add --intent-to-add -A (cd "$right"; nvim -c "lua vim.g.snacks_indent=false" -c "lua require('lazy').load({plugins = {'diffview.nvim'}})" -c DiffviewOpen) git -C "$right" diff-index --quiet --cached HEAD && { echo "No changes done, aborting split."; exit 1; } git -C "$right" commit -q -m split git -C "$right" restore . # undo changes in modified files git -C "$right" reset . # undo --intent-to-add git -C "$right" clean -q -df # remove untracked files '' ]; }; snapshot = { max-new-file-size = "10MiB"; }; revsets = { anc = "ancestors(@,10) | trunk()"; }; aliases = { tug = [ "bookmark" "move" "--from" "heads(::@- & bookmarks())" "--to" "@" ]; }; fix = { tools = { treefmt = { command = [ "treefmt" ]; patterns = [ "glob:**/*.nix" ]; }; }; }; }; }; }