Files
lux/modules/capabilities/terminal.nix
T

64 lines
1.8 KiB
Nix

{ lib, config, ... }:
let
homeModules = config.flake.modules.homeManager;
in
{
flake.modules.homeManager.terminal-kitty =
{ pkgs, ... }:
let
kitty = pkgs.symlinkJoin {
name = "kitty-single";
paths = [ pkgs.kitty ];
meta = pkgs.kitty.meta;
buildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/kitty --add-flags "-1"
rm $out/share/applications/kitty.desktop
sed 's/^Exec=kitty/Exec=kitty -1/' ${pkgs.kitty}/share/applications/kitty.desktop > $out/share/applications/kitty.desktop
'';
};
in
{
programs.kitty = {
enable = true;
package = kitty;
settings = {
disable_ligatures = "always";
scrollback_lines = 10000;
enable_audio_bell = false;
confirm_os_window_close = 0;
window_padding_width = 3;
update_check_interval = 0;
};
keybindings."shift+enter" = "send_text all \\x0a";
};
systemd.user.services.kitty-daemon = {
Unit = {
Description = "Kitty Terminal Daemon";
PartOf = [ "graphical-session.target" ];
After = [ "graphical-session.target" ];
};
Install = {
WantedBy = [ "graphical-session.target" ];
};
Service = {
ExecStart = "${lib.getExe kitty} --start-as=hidden ${pkgs.coreutils}/bin/tail -f /dev/null";
Restart = "on-failure";
};
};
};
flake.modules.homeManager.primary-terminal-kitty =
{ config, lib, ... }:
{
imports = [ homeModules.terminal-kitty ];
desktop.commands.terminal = [ (lib.getExe config.programs.kitty.package) ];
xdg.terminal-exec = {
enable = true;
settings.default = [ "kitty.desktop" ];
};
};
}