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";
|
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 (
|
enableBashIntegration = mkShellIntegrationOption (
|
||||||
lib.hm.shell.mkBashIntegrationOption { inherit config; }
|
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 {
|
(lib.mkIf cfg.enableBashIntegration {
|
||||||
# Make order 101 to be placed exactly after bash completions, as Ghostty
|
# Make order 101 to be placed exactly after bash completions, as Ghostty
|
||||||
# documentation suggests sourcing the script as soon as possible
|
# 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 = ''
|
nmt.script = ''
|
||||||
assertPathNotExists home-files/.config/ghostty/config
|
assertPathNotExists home-files/.config/ghostty/config
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
{
|
{
|
||||||
programs.ghostty = {
|
programs.ghostty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = config.lib.test.mkStubPackage { };
|
package = config.lib.test.mkStubPackage { outPath = null; };
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
theme = "catppuccin-mocha";
|
theme = "catppuccin-mocha";
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
|
{ config, ... }:
|
||||||
{
|
{
|
||||||
programs.ghostty = {
|
programs.ghostty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = config.lib.test.mkStubPackage { outPath = null; };
|
||||||
|
|
||||||
themes = {
|
themes = {
|
||||||
catppuccin-mocha = {
|
catppuccin-mocha = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue