{ lib, pkgs, config, ... }: let inherit (lib) types; cfg = config.programs.git; settingsFormat = pkgs.formats.ini { }; in { options.programs.git = { enable = lib.mkEnableOption "git"; ignores = lib.mkOption { default = { }; type = with types; listOf str; }; settings = lib.mkOption { default = { }; type = settingsFormat.type; }; }; config = lib.mkIf cfg.enable { packages = [ pkgs.git ]; file.xdg_config = { "git/config".source = settingsFormat.generate "gitconfig.ini" cfg.settings; "git/ignore".text = lib.concatStringsSep "\n" cfg.ignores; }; }; }