diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 65dd9bed..9512e28f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -78,6 +78,8 @@ /modules/programs/keychain.nix @marsam +/modules/programs/lazygit.nix @kalhauge + /modules/programs/lesspipe.nix @rycee /modules/programs/lf.nix @owm111 diff --git a/modules/misc/news.nix b/modules/misc/news.nix index f2bf0640..4b39a22c 100644 --- a/modules/misc/news.nix +++ b/modules/misc/news.nix @@ -116,6 +116,9 @@ in # # date --iso-8601=second --universal # + # On darwin (or BSD like systems) use + # + # date -u +'%Y-%m-%dT%H:%M:%S+00:00' news.entries = [ { time = "2017-09-01T10:56:28+00:00"; @@ -1936,6 +1939,13 @@ in A new service is available: 'services.barrier'. ''; } + + { + time = "2021-05-01T15:16:08+00:00"; + message = '' + A new module is available: 'programs.lazygit'. + ''; + } ]; }; } diff --git a/modules/modules.nix b/modules/modules.nix index 0b983ecb..0fac1f65 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -85,6 +85,7 @@ let (loadModule ./programs/kakoune.nix { }) (loadModule ./programs/keychain.nix { }) (loadModule ./programs/kitty.nix { }) + (loadModule ./programs/lazygit.nix { }) (loadModule ./programs/lesspipe.nix { }) (loadModule ./programs/lf.nix { }) (loadModule ./programs/lsd.nix { }) diff --git a/modules/programs/lazygit.nix b/modules/programs/lazygit.nix new file mode 100644 index 00000000..6d4a2bd4 --- /dev/null +++ b/modules/programs/lazygit.nix @@ -0,0 +1,56 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + cfg = config.programs.lazygit; + + yamlFormat = pkgs.formats.yaml { }; + + inherit (pkgs.stdenv.hostPlatform) isDarwin; + +in { + meta.maintainers = [ maintainers.kalhauge ]; + + options.programs.lazygit = { + enable = mkEnableOption "lazygit, a simple terminal UI for git commands"; + + settings = mkOption { + type = yamlFormat.type; + default = { }; + defaultText = literalExample "{ }"; + example = literalExample '' + { + gui.theme = { + lightTheme = true; + activeBorderColor = [ "blue" "bold" ]; + inactiveBorderColor = [ "black" ]; + selectedLineBgColor = [ "default" ]; + }; + } + ''; + description = '' + Configuration written to + ~/.config/lazygit/config.yml on Linux + or ~/Library/Application Support/lazygit/config.yml on Darwin. See + + for supported values. + ''; + }; + }; + + config = mkIf cfg.enable { + home.packages = [ pkgs.lazygit ]; + + home.file."Library/Application Support/lazygit/config.yml" = + mkIf (cfg.settings != { } && isDarwin) { + source = yamlFormat.generate "lazygit-config" cfg.settings; + }; + + xdg.configFile."lazygit/config.yml" = + mkIf (cfg.settings != { } && !isDarwin) { + source = yamlFormat.generate "lazygit-config" cfg.settings; + }; + }; +}