Make nixos use ghostty module as well

This commit is contained in:
Yan Lin 2025-09-13 13:56:27 +02:00
parent 7e967f4915
commit 2db8749c25
4 changed files with 122 additions and 55 deletions

View file

@ -28,6 +28,12 @@
package = null; # Use system Firefox on Darwin package = null; # Use system Firefox on Darwin
}; };
# Ghostty configuration
programs.ghostty-custom = {
enable = true;
package = null; # Use Homebrew-installed Ghostty on Darwin
};
home.username = "yanlin"; home.username = "yanlin";
home.homeDirectory = "/Users/yanlin"; home.homeDirectory = "/Users/yanlin";
home.stateVersion = "24.05"; home.stateVersion = "24.05";

View file

@ -10,6 +10,7 @@
../../../modules/firefox.nix ../../../modules/firefox.nix
../../../modules/plasma.nix ../../../modules/plasma.nix
../../../modules/syncthing.nix ../../../modules/syncthing.nix
../../../modules/ghostty.nix
plasma-manager.homeModules.plasma-manager plasma-manager.homeModules.plasma-manager
]; ];
@ -19,6 +20,14 @@
package = pkgs.firefox; package = pkgs.firefox;
}; };
# Enable Ghostty terminal with NixOS package
programs.ghostty-custom = {
enable = true;
package = pkgs.ghostty; # Install via nix on NixOS
fontSize = 13;
windowMode = "fullscreen";
};
# Any ThinkPad-specific home configurations can be added here # Any ThinkPad-specific home configurations can be added here
# For example, laptop-specific aliases or scripts # For example, laptop-specific aliases or scripts

View file

@ -1,6 +1,48 @@
{ pkgs, ... }: { config, pkgs, lib, ... }:
with lib;
let
cfg = config.programs.ghostty-custom;
in
{ {
options.programs.ghostty-custom = {
enable = mkEnableOption "Ghostty terminal emulator";
package = mkOption {
type = types.nullOr types.package;
default = null;
example = "pkgs.ghostty";
description = "Ghostty package to use. Set to null on Darwin to use Homebrew-installed Ghostty, or pkgs.ghostty on NixOS.";
};
fontSize = mkOption {
type = types.int;
default = 14;
description = "Font size for the terminal";
};
windowMode = mkOption {
type = types.enum [ "windowed" "fullscreen" ];
default = "windowed";
description = "Window mode: 'windowed' for fixed size window or 'fullscreen' for full screen";
};
windowWidth = mkOption {
type = types.int;
default = 160;
description = "Window width in columns (only used in windowed mode)";
};
windowHeight = mkOption {
type = types.int;
default = 40;
description = "Window height in rows (only used in windowed mode)";
};
};
config = mkIf cfg.enable {
# Note: Ghostty is currently marked as broken in nixpkgs # Note: Ghostty is currently marked as broken in nixpkgs
# To use it, you'll need to either: # To use it, you'll need to either:
# 1. Set NIXPKGS_ALLOW_BROKEN=1 when running hms # 1. Set NIXPKGS_ALLOW_BROKEN=1 when running hms
@ -9,9 +51,10 @@
programs.ghostty = { programs.ghostty = {
enable = true; enable = true;
package = null; # Use system-installed Ghostty package = cfg.package;
settings = { settings = mkMerge [
{
# Font settings with CJK fallback # Font settings with CJK fallback
font-family = [ font-family = [
"JetBrainsMono Nerd Font Mono" # Primary font for Latin + symbols "JetBrainsMono Nerd Font Mono" # Primary font for Latin + symbols
@ -19,7 +62,7 @@
"Noto Sans CJK TC" # Traditional Chinese fallback "Noto Sans CJK TC" # Traditional Chinese fallback
"Source Han Sans" # Alternative CJK fallback "Source Han Sans" # Alternative CJK fallback
]; ];
font-size = 14; font-size = cfg.fontSize;
# Gruvbox Dark Theme (matching tmux theme) # Gruvbox Dark Theme (matching tmux theme)
background = "#14191f"; background = "#14191f";
@ -27,8 +70,6 @@
# Window config # Window config
window-theme = "dark"; window-theme = "dark";
window-width = 160;
window-height = 40;
window-padding-balance = true; window-padding-balance = true;
# Shell integration # Shell integration
@ -54,7 +95,18 @@
# Quit behavior # Quit behavior
confirm-close-surface = false; confirm-close-surface = false;
}; }
# Conditional window settings based on mode
(mkIf (cfg.windowMode == "windowed") {
window-width = cfg.windowWidth;
window-height = cfg.windowHeight;
})
(mkIf (cfg.windowMode == "fullscreen") {
fullscreen = true;
})
];
};
}; };
} }

View file

@ -62,7 +62,7 @@
"applications:org.kde.dolphin.desktop" "applications:org.kde.dolphin.desktop"
"applications:firefox.desktop" "applications:firefox.desktop"
"applications:obsidian.desktop" "applications:obsidian.desktop"
"applications:org.kde.konsole.desktop" "applications:com.mitchellh.ghostty.desktop"
"applications:org.keepassxc.KeePassXC.desktop" "applications:org.keepassxc.KeePassXC.desktop"
]; ];
}; };