diff --git a/home/default.nix b/home/default.nix index 67188913..35cbea5d 100644 --- a/home/default.nix +++ b/home/default.nix @@ -27,7 +27,8 @@ containers.enable = true; javascript.enable = true; }; - git.enableJujutsu = true; + graphite.enable = true; + jujutsu.enable = true; utilities = { file.enable = true; media.enable = true; diff --git a/modules/base/unfree-packages.nix b/modules/base/unfree-packages.nix index 4435407e..7e2b7e9f 100644 --- a/modules/base/unfree-packages.nix +++ b/modules/base/unfree-packages.nix @@ -10,6 +10,7 @@ "claude-code" "daisydisk" "fastscripts" + "graphite-cli" "mochi" "plexmediaserver" "roon-server" diff --git a/modules/home/default.nix b/modules/home/default.nix index 85bc2b68..318cf79b 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -4,7 +4,7 @@ ./programs ./development.nix ./editor.nix - ./git.nix + ./scm.nix ./ssh.nix ./utilities.nix ]; diff --git a/modules/home/git.nix b/modules/home/scm.nix similarity index 63% rename from modules/home/git.nix rename to modules/home/scm.nix index ffe4e5f8..a1f8b451 100644 --- a/modules/home/git.nix +++ b/modules/home/scm.nix @@ -6,7 +6,9 @@ }: let inherit (lib) mkIf mkOption; - cfg = config.rc.git; + gitCfg = config.rc.git; + graphiteCfg = config.rc.graphite; + jjCfg = config.rc.jujutsu; in { options = { rc.git = { @@ -25,18 +27,19 @@ in { description = "Whether to enable interactive rebase."; type = lib.types.bool; }; + }; - enableJujutsu = mkOption { - default = false; - example = true; - description = "Whether to enable jujutsu."; - type = lib.types.bool; - }; + rc.graphite = { + enable = lib.mkEnableOption "Graphite CLI"; + }; + + rc.jujutsu = { + enable = lib.mkEnableOption "Jujutsu version control"; }; }; config = lib.mkMerge [ - (mkIf cfg.enable { + (mkIf gitCfg.enable { home.packages = [ pkgs.onefetch ]; @@ -78,7 +81,7 @@ in { }; }) - (mkIf cfg.enableHubWrapper { + (mkIf gitCfg.enableHubWrapper { home.packages = [pkgs.hub]; programs.zsh.shellAliases = { @@ -86,13 +89,35 @@ in { }; }) - (mkIf cfg.enableInteractiveRebase { + (mkIf gitCfg.enableInteractiveRebase { home.packages = [pkgs.git-interactive-rebase-tool]; programs.git.settings.sequence.editor = "interactive-rebase-tool"; }) - (mkIf cfg.enableJujutsu { + (mkIf graphiteCfg.enable { + home.packages = [pkgs.graphite-cli]; + + home.activation.graphiteConfig = lib.hm.dag.entryAfter ["writeBoundary"] '' + config_dir="$HOME/.config/graphite" + config_file="$config_dir/user_config" + run mkdir -p "$config_dir" + if [ ! -f "$config_file" ]; then + run cp ${ + pkgs.writeText "graphite-user-config" (builtins.toJSON { + branchPrefix = "corey/"; + branchDate = false; + branchReplacement = "-"; + skipApplyingPrefixToNonGeneratedBranchNames = true; + updateAutomatically = false; + }) + } "$config_file" + run chmod u+w "$config_file" + fi + ''; + }) + + (mkIf jjCfg.enable { programs.jujutsu = { enable = true; };