properly configure kmscon

This commit is contained in:
Schrottkatze 2024-02-18 01:25:18 +01:00
parent 568e681f1e
commit 6394e8d8a0
Signed by: schrottkatze
SSH key fingerprint: SHA256:hXb3t1vINBFCiDCmhRABHX5ocdbLiKyCdKI4HK2Rbbc
2 changed files with 71 additions and 14 deletions

View file

@ -1,4 +1,4 @@
{pkgs, ...}: {
{...}: {
imports = [
./shell
./desktop
@ -6,18 +6,6 @@
./flatpak.nix
./firewall.nix
./git.nix
./kmscon.nix
];
services.kmscon = {
enable = true;
fonts = [
{
name = "FiraCode Nerd Font";
package = pkgs.nerdfonts.override {fonts = ["FiraCode"];};
}
];
extraConfig = "font-size=14";
extraOptions = "--term xterm-256color";
hwRender = true;
};
}

69
modules/kmscon.nix Normal file
View file

@ -0,0 +1,69 @@
{
pkgs,
config,
lib,
...
}: let
generateOptions = with builtins; (
opts:
toString (
attrValues (
mapAttrs (name: value: "--${name} ${toString value}") opts
)
)
);
hexLookupTable = with lib; (listToAttrs (genList (i: {
name = let
r = toHexString i;
in (
if (stringLength r) == 1
then "0${r}"
else r
);
value = toString i;
})
256));
hexToOpt = with lib; (color:
concatStringsSep "," [
(getAttr (substring 1 2 (toUpper color)) hexLookupTable)
(getAttr (substring 3 2 (toUpper color)) hexLookupTable)
(getAttr (substring 5 2 (toUpper color)) hexLookupTable)
]);
in {
services.kmscon = {
enable = true;
fonts = [
{
name = "FiraCode Nerd Font";
package = pkgs.nerdfonts.override {fonts = ["FiraCode"];};
}
];
extraConfig = "font-size=14";
# extraOptions = "--term xterm-256color";
extraOptions = generateOptions {
xkb-layout = config.services.xserver.xkb.layout;
xkb-variant = config.services.xserver.xkb.variant;
palette = "custom";
palette-foreground = hexToOpt "#ebdbb2";
palette-background = hexToOpt "#282828";
palette-black = hexToOpt "#282828";
palette-red = hexToOpt "#cc241d";
palette-green = hexToOpt "#98971a";
palette-yellow = hexToOpt "#d79921";
palette-blue = hexToOpt "#458588";
palette-magenta = hexToOpt "#b16286";
palette-cyan = hexToOpt "#689d6a";
palette-light-grey = hexToOpt "#a89984";
palette-dark-grey = hexToOpt "#928374";
palette-light-red = hexToOpt "#fb4934";
palette-light-green = hexToOpt "#b8bb26";
palette-light-yellow = hexToOpt "#fabd2f";
palette-light-blue = hexToOpt "#83a598";
palette-light-magenta = hexToOpt "#d3869b";
palette-light-cyan = hexToOpt "#8ec07c";
palette-white = hexToOpt "#ebdbb2";
};
hwRender = true;
};
}