Skip to content
Snippets Groups Projects
terminal.nix 1.37 KiB
Newer Older
Jens Nolte's avatar
Jens Nolte committed
{ lib, pkgs, config, ... }:

with lib;
let
Jens Nolte's avatar
Jens Nolte committed
  terminal = pkgs.writeScriptBin "terminal" ''
    PROMPT_NO_INITIAL_NEWLINE=1 ${config.queezle.terminal.executable} "$@"
Jens Nolte's avatar
Jens Nolte committed
  '';
  terminal2 = pkgs.writeScriptBin "terminal2" ''
    PROMPT_NO_INITIAL_NEWLINE=1 ${config.queezle.terminal.alt.executable} "$@"
  '';
  terminal-floating = pkgs.writeScriptBin "terminal-floating" ''
    PROMPT_NO_INITIAL_NEWLINE=1 ${config.queezle.terminal.executable} --app-id terminal-floating "$@"
  '';
Jens Nolte's avatar
Jens Nolte committed
in
{
  options = {
Jens Nolte's avatar
Jens Nolte committed
    queezle.terminal.enable = mkOption {
      type = types.bool;
      default = false;
      description = "Install a 'terminal' and 'terminal2' wrapper script that launches the configured terminal emulator.";
Jens Nolte's avatar
Jens Nolte committed
    };

Jens Nolte's avatar
Jens Nolte committed
    queezle.terminal.executable = mkOption {
      type = types.path;
      default = "${pkgs.foot}/bin/footclient";
    };

    queezle.terminal.alt.executable = mkOption {
Jens Nolte's avatar
Jens Nolte committed
      type = types.path;
Jens Nolte's avatar
Jens Nolte committed
      default = if config.queezle.terminal.forceSoftwareRenderer then "${pkgs.foot}/bin/foot" else "${pkgs.kitty}/bin/kitty";
Jens Nolte's avatar
Jens Nolte committed
    };

    queezle.terminal.forceSoftwareRenderer = mkOption {
      type = types.bool;
      default = false;
    };
  };
Jens Nolte's avatar
Jens Nolte committed
  config = mkIf config.queezle.terminal.enable {
    environment.systemPackages = [
      terminal
      terminal2
      terminal-floating
      pkgs.foot
    ] ++ optional (!config.queezle.terminal.forceSoftwareRenderer) pkgs.kitty;
Jens Nolte's avatar
Jens Nolte committed
  };
Jens Nolte's avatar
Jens Nolte committed
}