NixOS + home-manager configs, mirrored from GitLab SaaS.
gitlab.com/andreijiroh-dev/nixops-config
nix-flake
nixos
home-manager
nixpkgs
nix-flakes
1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8# Reference: https://mynixos.com/home-manager/options/programs.git and
9# https://nix-community.github.io/home-manager/options.xhtml#opt-programs.git.enable
10# (look for programs.git prefix)
11{
12 programs.git = {
13 enable = true;
14 package = pkgs.gitFull;
15 lfs = {
16 enable = true;
17 };
18 maintenance = {
19 enable = true;
20 };
21 ignores = [
22 "*~"
23 "*.swp"
24 "*.tmp"
25 "*.save"
26 ".DS_Store"
27 ".cache"
28 "public/"
29 "node_modules/"
30 "data/"
31 ".data/"
32 "tmp/"
33 "*.decrypted"
34 ];
35 signing = {
36 key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEXuD3hJwInlcHs3wkXWAWNo8es3bPAd2e8ipjyqgGp2 @ajhalili2006's SSH key, circa 2022";
37 signByDefault = true;
38 format = "ssh";
39 };
40 settings = {
41 user = {
42 name = "Andrei Jiroh Halili";
43 email = "ajhalili2006@andreijiroh.dev";
44 };
45 alias = {
46 signoff = "commit --signoff";
47 amend = "commit -a --amend";
48 remotes = "remote -v";
49 root = "rev-parse --show-toplevel";
50 unstage = "restore --staged";
51 stats = "status";
52 co = "checkout";
53 switch-remote = "branch -u";
54 set-push-url = "remote set-url --push";
55 set-push-remote = "remote set-url --push";
56 set-remote-url = "remote set-url";
57 set-remote = "remote set-url";
58 hard = "reset --hard";
59 soft = "reset --soft";
60 };
61
62 format = {
63 signOff = true;
64 };
65 init = {
66 defaultBranch = "main";
67 };
68
69 # credential helpers
70 credential = {
71 "https://github.com".helper = "!gh auth git-credential";
72 "https://gist.github.com".helper = "!gh auth git-credential";
73 "https://gitlab.com".helper = "!glab auth git-credential";
74 "https://mau.dev".helper = "!glab auth git-credential";
75 "https://gitlab.alpinelinux.org".helper = "!glab auth git-credential";
76 };
77
78 # see https://groups.google.com/g/binary-transparency/c/f-BI4o8HZW0/m/MDmnWideAgAJ for
79 # context behind these, may cause bugs per https://bugs.debian.org/743227 and
80 # https://bugs.debian.org/813157 on cloning linux-hardware sources.
81 transfer = {
82 fsckobjects = true; # technically we only need this, but we also enable them on fetch and receive too
83 };
84 fetch = {
85 fsckobjects = true;
86 };
87 receive = {
88 fsckobjects = true;
89 };
90
91 # setup remotes automatically as we push instead of doing that first manually
92 push = {
93 autoSetupRemote = true;
94 };
95 };
96 };
97}