{ user, pkgs, stateVersion, lib, config, ... }: { nixpkgs.config.allowUnfree = true; nix = { package = lib.mkDefault pkgs.nix; settings.experimental-features = ["nix-command" "flakes"]; }; programs = { home-manager.enable = true; git = { enable = true; settings = { commit.gpgsign = true; gpg.format = "ssh"; url = { "ssh://git@gitlab.uni-ulm.de".insteadOf = "https://gitlab.uni-ulm.de"; "ssh://git@github.com".insteadOf = "https://github.com"; "ssh://git@gitea.demenik.dev".insteadOf = "https://gitea.demenik.dev"; }; user = { email = "dominik.bernroider@icloud.com"; name = "demenik"; signingkey = "${config.home.homeDirectory}/.ssh/id_rsa"; }; init.defaultBranch = "main"; }; includes = let mkRemoteSsh = { user ? "git", url, config, }: { condition = "hasconfig:remote.*.url:${user}@${url}:*/**"; path = "${pkgs.writeText "gitconfig-${url}" (pkgs.lib.generators.toGitINI config)}"; }; in [ (mkRemoteSsh { url = "gitlab.uni-ulm.de"; config.user = { email = "dominik.bernroider@uni-ulm.de"; name = "Dominik Bernroider"; }; }) (mkRemoteSsh { url = "gitea.demenik.dev"; config.user = { email = "mail@demenik.dev"; name = "demenik"; }; }) ]; }; gpg.enable = true; }; services.gpg-agent = { enable = true; pinentry.package = pkgs.pinentry-curses; }; home = { inherit stateVersion; username = lib.mkDefault user; homeDirectory = lib.mkDefault "/home/${user}"; sessionPath = ["$HOME/.local/bin"]; }; }