mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 10:58:02 +00:00
63 lines
2.1 KiB
Nix
63 lines
2.1 KiB
Nix
{ config, lib, pkgs, ... }@attrs:
|
|
|
|
let
|
|
userCfg = config.users.foo-dogsquared;
|
|
cfg = userCfg.programs.terminal-emulator;
|
|
|
|
shellIntegrationFragment = ''
|
|
source ${pkgs.bash-preexec}/share/bash/bash-preexec.sh
|
|
source ${config.programs.wezterm.package}/etc/profile.d/wezterm.sh
|
|
'';
|
|
|
|
hasNixosModuleEnable = attrs.nixosConfig.programs.wezterm.enable or false;
|
|
in
|
|
{
|
|
options.users.foo-dogsquared.programs.terminal-emulator.enable =
|
|
lib.mkEnableOption "foo-dogsquared's terminal emulator setup";
|
|
|
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
|
{
|
|
# We're just making a version of Wezterm with the default arguments if
|
|
# the user has them.
|
|
home.packages =
|
|
let
|
|
inherit (pkgs) wezterm hiPrio;
|
|
weztermUserDefaultDesktop = pkgs.makeDesktopItem {
|
|
name = "org.wezfurlong.wezterm";
|
|
desktopName = "WezTerm (user)";
|
|
comment = "Wez's Terminal Emulator";
|
|
keywords = [ "shell" "prompt" "command" "commandline" "cmd" ];
|
|
icon = "org.wezfurlong.wezterm";
|
|
startupWMClass = "org.wezfurlong.wezterm";
|
|
tryExec = "wezterm";
|
|
exec = "wezterm";
|
|
type = "Application";
|
|
categories = [ "System" "TerminalEmulator" "Utility" ];
|
|
};
|
|
weztermTypicalDesktop = pkgs.makeDesktopItem {
|
|
name = "wezterm-start";
|
|
desktopName = "WezTerm";
|
|
comment = "Wez's Terminal Emulator";
|
|
keywords = [ "shell" "prompt" "command" "commandline" "cmd" ];
|
|
icon = "org.wezfurlong.wezterm";
|
|
startupWMClass = "org.wezfurlong.wezterm";
|
|
tryExec = "wezterm";
|
|
exec = "wezterm start --cwd .";
|
|
type = "Application";
|
|
categories = [ "System" "TerminalEmulator" "Utility" ];
|
|
};
|
|
in
|
|
[
|
|
wezterm
|
|
(hiPrio weztermUserDefaultDesktop)
|
|
weztermTypicalDesktop
|
|
];
|
|
}
|
|
|
|
(lib.mkIf (!hasNixosModuleEnable) {
|
|
programs.bash.initExtra = shellIntegrationFragment;
|
|
programs.zsh.initExtra = shellIntegrationFragment;
|
|
})
|
|
]);
|
|
}
|