kitty: add environment and darwinLaunchOptions options (#2280)

* kitty: add environment option

* kitty: add darwinLaunchOptions option

See https://sw.kovidgoyal.net/kitty/faq/#how-do-i-specify-command-line-options-for-kitty-on-macos

* kitty: only allow darwinLaunchOptions on darwin

* kitty: make expression shorter

* kitty: fix assertion message
This commit is contained in:
Jason Felice 2021-08-26 22:08:34 -04:00 committed by GitHub
parent f637e145d7
commit 33db7cc6a6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 59 additions and 0 deletions

View file

@ -25,10 +25,26 @@ let
mkKeyValue = key: command: "map ${key} ${command}";
};
toKittyEnv =
generators.toKeyValue { mkKeyValue = name: value: "env ${name}=${value}"; };
in {
options.programs.kitty = {
enable = mkEnableOption "Kitty terminal emulator";
darwinLaunchOptions = mkOption {
type = types.nullOr (types.listOf types.str);
default = null;
description = "Command-line options to use when launched by Mac OS GUI";
example = literalExample ''
[
"--single-instance"
"--directory=/tmp/my-dir"
"--listen-on=unix:/tmp/my-socket"
]
'';
};
settings = mkOption {
type = types.attrsOf eitherStrBoolInt;
default = { };
@ -65,6 +81,17 @@ in {
'';
};
environment = mkOption {
type = types.attrsOf types.str;
default = { };
description = "Environment variables to set or override.";
example = literalExample ''
{
"LS_COLORS" = "1";
}
'';
};
extraConfig = mkOption {
default = "";
type = types.lines;
@ -73,6 +100,14 @@ in {
};
config = mkIf cfg.enable {
assertions = [{
assertion = (cfg.darwinLaunchOptions != null)
-> pkgs.stdenv.hostPlatform.isDarwin;
message = ''
The 'programs.kitty.darwinLaunchOptions' option is only available on darwin.
'';
}];
home.packages = [ pkgs.kitty ] ++ optionalPackage cfg.font;
xdg.configFile."kitty/kitty.conf".text = ''
@ -89,7 +124,14 @@ in {
${toKittyKeybindings cfg.keybindings}
${toKittyEnv cfg.environment}
${cfg.extraConfig}
'';
xdg.configFile."kitty/macos-launch-services-cmdline" =
mkIf (cfg.darwinLaunchOptions != null) {
text = concatStringsSep " " cfg.darwinLaunchOptions;
};
};
}