mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 11:36:05 +01:00
ghostty: Add systemd integration
The systemd unit already exists on the system, this gives the option to enable it.
This commit is contained in:
parent
1c75dd7022
commit
34fe48801d
5 changed files with 56 additions and 2 deletions
14
modules/misc/news/2025/11/2025-11-03_22-56-50.nix
Normal file
14
modules/misc/news/2025/11/2025-11-03_22-56-50.nix
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
{ config, pkgs, ... }:
|
||||
{
|
||||
time = "2025-11-03T21:56:50+00:00";
|
||||
condition = config.programs.ghostty.enable && pkgs.stdenv.hostPlatform.isLinux;
|
||||
message = ''
|
||||
Ghostty: now enables the user systemd service by default.
|
||||
|
||||
Running Ghostty via these systemd units is the recommended way to run
|
||||
Ghostty. The two most important benefits provided by Ghostty's systemd
|
||||
integrations are: instantaneous launching and centralized logging.
|
||||
|
||||
See https://ghostty.org/docs/linux/systemd for all details
|
||||
'';
|
||||
}
|
||||
|
|
@ -114,6 +114,24 @@ in
|
|||
defaultText = lib.literalMD "`true` if programs.ghostty.package is not null";
|
||||
};
|
||||
|
||||
systemd = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
options = {
|
||||
enable = lib.mkEnableOption "the Ghostty systemd user service" // {
|
||||
default = pkgs.stdenv.hostPlatform.isLinux;
|
||||
defaultText = lib.literalMD "`true` on Linux, `false` otherwise";
|
||||
};
|
||||
};
|
||||
};
|
||||
default = { };
|
||||
description = ''
|
||||
Configuration for Ghostty's systemd integration.
|
||||
This enables additional speed and features.
|
||||
|
||||
See <https://ghostty.org/docs/linux/systemd> for more information.
|
||||
'';
|
||||
};
|
||||
|
||||
enableBashIntegration = mkShellIntegrationOption (
|
||||
lib.hm.shell.mkBashIntegrationOption { inherit config; }
|
||||
);
|
||||
|
|
@ -195,6 +213,22 @@ in
|
|||
};
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.systemd.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = cfg.systemd.enable -> cfg.package != null;
|
||||
message = "programs.ghostty.systemd.enable cannot be true when programs.ghostty.package is null";
|
||||
}
|
||||
{
|
||||
assertion = cfg.systemd.enable -> pkgs.stdenv.hostPlatform.isLinux;
|
||||
message = "Ghostty systemd integration cannot be enabled for non-linux platforms";
|
||||
}
|
||||
];
|
||||
xdg.configFile."systemd/user/app-com.mitchellh.ghostty.service".source =
|
||||
"${cfg.package}/share/systemd/user/app-com.mitchellh.ghostty.service";
|
||||
dbus.packages = [ cfg.package ];
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.enableBashIntegration {
|
||||
# Make order 101 to be placed exactly after bash completions, as Ghostty
|
||||
# documentation suggests sourcing the script as soon as possible
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
programs.ghostty.enable = true;
|
||||
programs.ghostty = {
|
||||
enable = true;
|
||||
package = config.lib.test.mkStubPackage { outPath = null; };
|
||||
};
|
||||
|
||||
nmt.script = ''
|
||||
assertPathNotExists home-files/.config/ghostty/config
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
{
|
||||
programs.ghostty = {
|
||||
enable = true;
|
||||
package = config.lib.test.mkStubPackage { };
|
||||
package = config.lib.test.mkStubPackage { outPath = null; };
|
||||
|
||||
settings = {
|
||||
theme = "catppuccin-mocha";
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
programs.ghostty = {
|
||||
enable = true;
|
||||
package = config.lib.test.mkStubPackage { outPath = null; };
|
||||
|
||||
themes = {
|
||||
catppuccin-mocha = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue