❄️ Dotfiles and NixOS configurations
1{
2 flake.modules.homeManager.development = {pkgs, ...}: {
3 home.packages = with pkgs; [
4 git-extras
5 glab
6 ];
7
8 catppuccin.delta.enable = true;
9
10 programs.mergiraf.enable = true;
11
12 programs.fish.shellAbbrs = {
13 g = "git";
14 ga = "git add";
15 gap = "git add -p";
16 gca = "git commit -s --amend";
17 gcf = "git commit -s --fixup";
18 gcm = "git commit -sm";
19 gco = "git checkout";
20 gd = "git diff";
21 gdc = "git diff --cached";
22 gl = "git log";
23 gp = "git push";
24 gpl = "git pull";
25 gr = "git rebase";
26 gra = "git rebase --autosquash";
27 gri = "git rebase --interactive";
28 grc = "git rebase --continue";
29 gs = "git status";
30 };
31
32 programs.gh = {
33 enable = true;
34 settings = {
35 # Workaround for https://github.com/nix-community/home-manager/issues/4744
36 version = "1";
37 git_protocol = "ssh";
38 };
39 };
40
41 programs.git = {
42 enable = true;
43 package = pkgs.gitFull;
44
45 lfs.enable = true;
46
47 signing.key = null;
48
49 settings = {
50 alias.unpushed = "log --branches --not --remotes --no-walk --decorate --oneline";
51 user = {
52 name = "Sefa Eyeoglu";
53 email = "contact@scrumplex.net";
54 };
55 core.autocrlf = "input";
56 color.ui = "auto";
57 diff.colorMoved = "default";
58 push.followTags = true;
59 pull.rebase = true;
60 init.defaultBranch = "main";
61
62 # Thanks Scott! https://www.youtube.com/watch?v=aolI_Rz0ZqY
63 rerere.enabled = true;
64 core.fsmonitor = true;
65
66 url = {
67 "https://github.com/".insteadOf = "github:";
68 "ssh://git@github.com/".pushInsteadOf = "github:";
69 "https://gitlab.com/".insteadOf = "gitlab:";
70 "ssh://git@gitlab.com/".pushInsteadOf = "gitlab:";
71 "https://aur.archlinux.org/".insteadOf = "aur:";
72 "ssh://aur@aur.archlinux.org/".pushInsteadOf = "aur:";
73 "https://git.sr.ht/".insteadOf = "srht:";
74 "ssh://git@git.sr.ht/".pushInsteadOf = "srht:";
75 "https://codeberg.org/".insteadOf = "codeberg:";
76 "ssh://git@codeberg.org/".pushInsteadOf = "codeberg:";
77 };
78
79 # Replace the default set by programs.git.signing.signByDefault
80 tag.gpgSign = false;
81 };
82 };
83
84 programs.delta = {
85 enable = true;
86 options.navigate = true;
87 };
88
89 programs.eza.git = true;
90 };
91}