174 lines
5.1 KiB
Nix
174 lines
5.1 KiB
Nix
|
{ config, pkgs, lib, ... }:
|
||
|
let
|
||
|
supportTerminal = (term: builtins.elem term config.terminals);
|
||
|
getTerminalBin = (term: ({
|
||
|
alacritty = "${pkgs.alacritty}/bin/alacritty";
|
||
|
foot = "${pkgs.foot}/bin/footclient";
|
||
|
kitty = "${pkgs.kitty}/bin/kitty";
|
||
|
urxvt = "${pkgs.rxvt-unicode-emoji}/bin/urxvt";
|
||
|
}).${term});
|
||
|
color = builtins.elemAt config.colors.base;
|
||
|
hex = (x: if builtins.isFunction x then (y: "#" + (x y)) else ("#" + x));
|
||
|
shell = lib.mkIf config.termShell.enable config.termShell.path;
|
||
|
in {
|
||
|
imports = [ ./options.nix ];
|
||
|
terminalBin = getTerminalBin (builtins.head config.terminals);
|
||
|
terminalBinX = getTerminalBin (lib.lists.findFirst (term: term != "foot") null config.terminals);
|
||
|
colors = {
|
||
|
base = [
|
||
|
"523b3f"
|
||
|
"e66e6e"
|
||
|
"8cbf73"
|
||
|
"ebbe5f"
|
||
|
"5968b3"
|
||
|
"a64999"
|
||
|
"77c7c2"
|
||
|
"f0e4e6"
|
||
|
"6b4d52"
|
||
|
"e66e6e"
|
||
|
"8cbf73"
|
||
|
"ebbe5f"
|
||
|
"5968b3"
|
||
|
"a64999"
|
||
|
"77c7c2"
|
||
|
"f7f0f1"
|
||
|
];
|
||
|
foreground = "ebdadd";
|
||
|
background = "24101a";
|
||
|
alpha = 0.75;
|
||
|
};
|
||
|
programs.alacritty = {
|
||
|
enable = supportTerminal "alacritty";
|
||
|
# https://github.com/alacritty/alacritty/blob/master/alacritty.yml
|
||
|
settings = {
|
||
|
window.opacity = config.colors.alpha;
|
||
|
font.normal.family = "Noto Sans Mono";
|
||
|
font.size = 16;
|
||
|
shell.program = shell;
|
||
|
colors.primary.background = hex config.colors.background;
|
||
|
colors.primary.foreground = hex config.colors.foreground;
|
||
|
colors.normal = {
|
||
|
black = hex color 0;
|
||
|
red = hex color 1;
|
||
|
green = hex color 2;
|
||
|
yellow = hex color 3;
|
||
|
blue = hex color 4;
|
||
|
magenta = hex color 5;
|
||
|
cyan = hex color 6;
|
||
|
white = hex color 7;
|
||
|
};
|
||
|
colors.bright = {
|
||
|
black = hex color 8;
|
||
|
red = hex color 9;
|
||
|
green = hex color 10;
|
||
|
yellow = hex color 11;
|
||
|
blue = hex color 12;
|
||
|
magenta = hex color 13;
|
||
|
cyan = hex color 14;
|
||
|
white = hex color 15;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
programs.urxvt = {
|
||
|
# default shell can't be changed... I can create a wrapper, but fuck that
|
||
|
enable = supportTerminal "urxvt";
|
||
|
package = pkgs.rxvt-unicode-emoji;
|
||
|
keybindings = {
|
||
|
"Control-Alt-C" = "builtin-string:";
|
||
|
"Control-Alt-V" = "builtin-string:";
|
||
|
};
|
||
|
extraConfig = {
|
||
|
depth = 32;
|
||
|
inheritPixmap = true;
|
||
|
};
|
||
|
scroll.bar.enable = false;
|
||
|
fonts = [ "xft:Noto Sans Mono:size=16" "xft:Symbols Nerd Font Mono:size=16" ];
|
||
|
};
|
||
|
programs.foot = {
|
||
|
enable = supportTerminal "foot";
|
||
|
server.enable = true;
|
||
|
# https://codeberg.org/dnkl/foot/src/branch/master/foot.ini
|
||
|
settings = {
|
||
|
main = {
|
||
|
font = "Noto Sans Mono:size=16,Noto Sans Mono CJK JP:size=16,Symbols Nerd Font Mono:size=16";
|
||
|
dpi-aware = false;
|
||
|
notify = "${pkgs.libnotify}/bin/notify-send -a \${app-id} -i \${app-id} \${title} \${body}";
|
||
|
inherit shell;
|
||
|
};
|
||
|
url = {
|
||
|
launch = "${pkgs.xdg-utils}/bin/xdg-open \${url}";
|
||
|
};
|
||
|
colors = {
|
||
|
alpha = config.colors.alpha;
|
||
|
background = config.colors.background;
|
||
|
foreground = config.colors.foreground;
|
||
|
regular0 = color 0;
|
||
|
regular1 = color 1;
|
||
|
regular2 = color 2;
|
||
|
regular3 = color 3;
|
||
|
regular4 = color 4;
|
||
|
regular5 = color 5;
|
||
|
regular6 = color 6;
|
||
|
regular7 = color 7;
|
||
|
bright0 = color 8;
|
||
|
bright1 = color 9;
|
||
|
bright2 = color 10;
|
||
|
bright3 = color 11;
|
||
|
bright4 = color 12;
|
||
|
bright5 = color 13;
|
||
|
bright6 = color 14;
|
||
|
bright7 = color 15;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
programs.kitty = {
|
||
|
enable = supportTerminal "kitty";
|
||
|
font.name = "Noto Sans Mono";
|
||
|
font.size = 16;
|
||
|
settings = {
|
||
|
inherit shell;
|
||
|
symbol_map = "U+23FB-U+23FE,U+2665,U+26A1,U+2B58,U+E000-U+F8FF,U+F0000-U+FFFFF Symbols Nerd Font Mono";
|
||
|
cursor = "none";
|
||
|
open_url_with = "${pkgs.xdg-utils}/bin/xdg-open";
|
||
|
focus_follows_mouse = true;
|
||
|
repaint_delay = 4;
|
||
|
foreground = hex config.colors.foreground;
|
||
|
background = hex config.colors.background;
|
||
|
background_opacity = builtins.toString config.colors.alpha;
|
||
|
color0 = hex color 0;
|
||
|
color1 = hex color 1;
|
||
|
color2 = hex color 2;
|
||
|
color3 = hex color 3;
|
||
|
color4 = hex color 4;
|
||
|
color5 = hex color 5;
|
||
|
color6 = hex color 6;
|
||
|
color7 = hex color 7;
|
||
|
color8 = hex color 8;
|
||
|
color9 = hex color 9;
|
||
|
color10 = hex color 10;
|
||
|
color11 = hex color 11;
|
||
|
color12 = hex color 12;
|
||
|
color13 = hex color 13;
|
||
|
color14 = hex color 14;
|
||
|
color15 = hex color 15;
|
||
|
allow_remote_control = "socket";
|
||
|
listen_on = "unix:/tmp/kitty";
|
||
|
enabled_layouts = "all";
|
||
|
};
|
||
|
};
|
||
|
xdg.configFile."fontconfig/conf.d/10-kitty-fonts.conf".text = lib.mkIf ((supportTerminal "kitty") && (config.programs.kitty.font.name == "Noto Sans Mono")) ''
|
||
|
<?xml version="1.0"?>
|
||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||
|
<fontconfig>
|
||
|
<match target="scan">
|
||
|
<test name="family">
|
||
|
<string>Noto Sans Mono</string>
|
||
|
</test>
|
||
|
<edit name="spacing">
|
||
|
<int>90</int>
|
||
|
</edit>
|
||
|
</match>
|
||
|
</fontconfig>
|
||
|
'';
|
||
|
}
|