144 lines
4.5 KiB
Nix
144 lines
4.5 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
|
|
cfg = config.programs.custom.xterm;
|
|
|
|
in {
|
|
|
|
options.programs.custom.xterm= {
|
|
enable = mkEnableOption "configure and enable urxvt";
|
|
fontSize = mkOption {
|
|
type = types.int;
|
|
default = 17;
|
|
description = ''
|
|
size of the terminal font
|
|
'';
|
|
};
|
|
colorTheme = mkOption {
|
|
type = types.enum[ "dark" "light" ];
|
|
default = "dark";
|
|
description = ''
|
|
solarized color theme
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
|
|
environment.systemPackages = [ pkgs.xterm ];
|
|
|
|
environment.etc = {
|
|
|
|
"X11/Xresource.d/xterm".source = pkgs.writeText "Xresource-xterm" ''
|
|
|
|
XTerm*termName: xterm-256color
|
|
XTerm*selectToClipboard: true
|
|
|
|
XTerm.*.bellIsUrgent: true
|
|
|
|
'';
|
|
|
|
"X11/Xresource.d/xterm-font".source = let
|
|
fontFamily = "terminus";
|
|
normalFont = fontSize: "-*-${fontFamily}-medium-*-*-*-${toString fontSize}-*-*-*-*-*-*-*";
|
|
boldFont = fontSize: "-*-${fontFamily}-bold-*-*-*-${toString fontSize}-*-*-*-*-*-*-*";
|
|
italicFont = normalFont;
|
|
itallicBoldFont = boldFont;
|
|
backupFont = fontSize: "xft:TerminessTTF Nerd Font:pixelsize=${toString fontSize}";
|
|
in pkgs.writeText "Xresource-xterm-font" ''
|
|
|
|
XTerm.allow_bold: true
|
|
XTerm.xftAntialias: true
|
|
|
|
!! use xfontsel or fontmatrix to choose line
|
|
!XTerm.*.font: ${normalFont cfg.fontSize},${backupFont cfg.fontSize}
|
|
!XTerm.*.boldFont: ${boldFont cfg.fontSize},${backupFont cfg.fontSize}
|
|
!XTerm.*.italicFont: ${italicFont cfg.fontSize},${backupFont cfg.fontSize}
|
|
!XTerm.*.bolditalicFont: ${itallicBoldFont cfg.fontSize},${backupFont cfg.fontSize}
|
|
|
|
XTerm.*.font: ${normalFont cfg.fontSize}
|
|
XTerm.*.boldFont: ${boldFont cfg.fontSize}
|
|
XTerm.*.italicFont: ${italicFont cfg.fontSize}
|
|
XTerm.*.bolditalicFont: ${itallicBoldFont cfg.fontSize}
|
|
'';
|
|
|
|
|
|
"X11/Xresource.d/xterm-colors".source =
|
|
let
|
|
colorTheme = if (cfg.colorTheme == "dark") then ''
|
|
#define S_base03 #002b36
|
|
#define S_base02 #073642
|
|
#define S_base01 #586e75
|
|
#define S_base00 #657b83
|
|
#define S_base0 #839496
|
|
#define S_base1 #93a1a1
|
|
#define S_base2 #eee8d5
|
|
#define S_base3 #fdf6e3
|
|
|
|
''
|
|
else ''
|
|
#define S_base03 #fdf6e3
|
|
#define S_base02 #eee8d5
|
|
#define S_base01 #93a1a1
|
|
#define S_base00 #839496
|
|
#define S_base0 #657b83
|
|
#define S_base1 #586e75
|
|
#define S_base2 #073642
|
|
#define S_base3 #002b36
|
|
'';
|
|
|
|
in pkgs.writeText "Xresource-xterm-colors" ''
|
|
|
|
!! Color Configuration
|
|
!! -------------------
|
|
|
|
!! Common
|
|
!! ------
|
|
#define S_yellow #b58900
|
|
#define S_orange #cb4b16
|
|
#define S_red #dc322f
|
|
#define S_magenta #d33682
|
|
#define S_violet #6c71c4
|
|
#define S_blue #268bd2
|
|
#define S_cyan #2aa198
|
|
#define S_green #859900
|
|
|
|
!! ColorTheme
|
|
!! ----------
|
|
${colorTheme}
|
|
|
|
XTerm*background: S_base03
|
|
XTerm*foreground: S_base0
|
|
XTerm*fading: 40
|
|
XTerm*fadeColor: S_base03
|
|
XTerm*cursorColor: S_base1
|
|
XTerm*pointerColorBackground: S_base01
|
|
XTerm*pointerColorForeground: S_base1
|
|
|
|
XTerm*color0: S_base02
|
|
XTerm*color1: S_red
|
|
XTerm*color2: S_green
|
|
XTerm*color3: S_yellow
|
|
XTerm*color4: S_blue
|
|
XTerm*color5: S_magenta
|
|
XTerm*color6: S_cyan
|
|
XTerm*color7: S_base2
|
|
XTerm*color9: S_orange
|
|
XTerm*color8: S_base03
|
|
XTerm*color10: S_base01
|
|
XTerm*color11: S_base00
|
|
XTerm*color12: S_base0
|
|
XTerm*color13: S_violet
|
|
XTerm*color14: S_base1
|
|
XTerm*color15: S_base3
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
|
}
|
|
|
|
|