Make nixos use ghostty module as well
This commit is contained in:
parent
7e967f4915
commit
2db8749c25
4 changed files with 122 additions and 55 deletions
|
|
@ -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";
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -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"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue