From 6394e8d8a0e570f897e5e6791f36cd55906362e2 Mon Sep 17 00:00:00 2001 From: Schrottkatze Date: Sun, 18 Feb 2024 01:25:18 +0100 Subject: [PATCH] properly configure kmscon --- modules/default.nix | 16 ++--------- modules/kmscon.nix | 69 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 14 deletions(-) create mode 100644 modules/kmscon.nix diff --git a/modules/default.nix b/modules/default.nix index ebb1252..c3be46f 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -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; - }; } diff --git a/modules/kmscon.nix b/modules/kmscon.nix new file mode 100644 index 0000000..98dac55 --- /dev/null +++ b/modules/kmscon.nix @@ -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; + }; +}