{ config, pkgs, lib, ... }: let cfg = config.nmasur.presets.programs.git-work; in { options.nmasur.presets.programs.git-work = { enable = lib.mkEnableOption "Git settings for work"; work = { name = lib.mkOption { type = lib.types.str; description = "Name to use for work git commits"; }; email = lib.mkOption { type = lib.types.str; description = "Email to use for work git commits"; }; }; personal = { name = lib.mkOption { type = lib.types.str; description = "Name to use for personal git commits"; }; email = lib.mkOption { type = lib.types.str; description = "Email to use for personal git commits"; }; }; }; config = lib.mkIf cfg.enable { programs.git = { userName = lib.mkForce cfg.work.name; userEmail = lib.mkForce cfg.work.email; includes = [ { path = "${config.xdg.configHome}/${config.xdg.configFile."git/personal".target}"; condition = "gitdir:~/dev/personal/"; } ]; }; # Personal git config xdg.configFile."git/personal".text = pkgs.formats.gitIni { user = { name = cfg.personal.name; email = cfg.personal.email; signingkey = "~/.ssh/id_ed25519"; }; commit = { gpgsign = true; }; tag = { gpgsign = true; }; }; }; }