clan/modules/moritz/profiles/jujutsu.nix

46 lines
1.5 KiB
Nix

{
lib,
config,
inputs,
pkgs,
...
}: let
inherit (lib) mkEnableOption mkIf;
cfg = config.my.profiles.jujutsu;
in {
options.my.profiles.jujutsu.enable = mkEnableOption "jujutsu profile";
config = mkIf cfg.enable {
home-manager.users.moritz.programs.jujutsu = {
enable = true;
package = inputs.jj.packages.${pkgs.system}.default;
settings = {
user = {
email = "mail@moritzboeh.me";
name = "Moritz Böhme";
};
ui.pager.command = ["less" "-FRX"];
ui.pager.env.LESSCHARSET = "utf-8";
ui.default-command = "log";
signing = {
behavior = "drop";
backend = "gpg";
key = "0x970C6E89EB0547A9";
};
git.sign-on-push = true;
aliases = {
tug = ["bookmark" "move" "--from" "closest_bookmark(@)" "--to" "closest_pushable(@)"];
mm-update = ["rebase" "--source" "closest_merge(@)" "--destination" "all:closest_merge(@)-"];
mm-rebase = ["rebase" "--source" "all:roots(trunk()..closest_merge(@))"];
};
revset-aliases = {
"closest_bookmark(to)" = "heads(::to & bookmarks())";
"closest_pushable(to)" = "heads(::to & mutable() & ~description(exact:'') & (~empty() | merges()) & ~private())";
"closest_merge(to)" = "heads(::to & merges())";
"private()" = "description(glob:'wip:*') | description(glob:'private:*')";
};
git.private-commits = "private()";
};
};
};
}