{ pkgs, ... }:
{
  home.packages = [ pkgs.git-crypt ];

  programs.git = {
    enable = true;
    lfs.enable = true;
    userEmail = "dmitriy@pleshevski.ru";
    userName = "Dmitriy Pleshevskiy";
    signing = {
      key = "43669288EC334989";
      signByDefault = true;
    };
    includes =
      import ./myrepo.secret.nix
      # My main account was suspended due to sanctions
      ++ import ./github.secret.nix
      # Work account
      ++ import ./gitlab.secret.nix;
    ignores = [ ".nlsp-settings" ];
    extraConfig = {
      init.defaultBranch = "main";
      pull.rebase = true;
    };
    aliases = {
      co = "switch";
      cob = "switch -c";
      cobf = "switch -C";

      st = "status -sb";

      d = "diff";
      dc = "diff --cached";

      aa = "add .";
      ai = "add -i";

      c = "commit";
      cm = "commit -m";
      ca = "commit --amend";
      cam = "commit --amend -m";
      can = "commit --amend --no-edit";

      p = "push";
      po = "push origin";
      pf = "push --force-with-lease";
      pfo = "push --force-with-lease origin";
      pl = "pull";
      plo = "pull origin";

      f = "fetch";
      fo = "fetch origin";
      fa = "fetch --all";
      fap = "fetch --all --prune";

      rb = "rebase";
      rbi = "rebase -i";
      rbc = "rebase --continue";
      rba = "rebase --abort";

      ch = "cherry-pick";
      chi = "cherry-pick -i";
      chc = "cherry-pick --continue";
      cha = "cherry-pick --abort";

      lo = "log --pretty=oneline";

      sma = "submodule add";
      smui = "submodule update --init";

      s = "stash";
      sm = "stash push -m";
      sl = "stash list";
      sa = "stash apply";
      sai = "stash apply --index";
      sp = "stash pop";
      spi = "stash pop --index";
    };
  };
}
