Files
nixos-config/modules/sys/environment/stylix.nix

65 lines
1.6 KiB
Nix

{
pkgs,
self,
lib,
...
}:
let
wallpaper = "${self}/media/wallpapers/sine.png";
# Generate base16 color scheme from wallpaper
scheme_string_step1 = pkgs.runCommand "scheme_string" { }''
${pkgs.flavours}/bin/flavours generate dark ${wallpaper} --stdout | sed 's/"//g' | sed 's/://' | tail -n 16 > $out
'';
scheme_string = builtins.readFile scheme_string_step1;
scheme_list = lib.filter (x: x != "") (lib.splitString "\n" scheme_string);
scheme_set = lib.lists.foldl' (acc: line:
let
splitLine = lib.splitString " " line;
key = builtins.elemAt splitLine 0;
value = builtins.elemAt splitLine 1;
in
acc // { "${key}" = value; }
) {} scheme_list;
in
{
stylix = {
enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/chalk.yaml";
image = wallpaper;
polarity = "dark";
autoEnable = true;
opacity.terminal = 0.95;
targets = {
console.enable = true;
feh.enable = true;
grub.enable = true;
};
cursor = {
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Ice";
};
fonts = {
monospace = {
package = pkgs.nerdfonts.override {fonts = ["Iosevka"];};
name = "Iosevka Nerd Font";
};
sansSerif = {
package = pkgs.nerdfonts.override {fonts = ["Iosevka"];};
name = "Iosevka Nerd Font";
};
serif = {
package = pkgs.nerdfonts.override {fonts = ["Iosevka"];};
name = "Iosevka Nerd Font";
};
sizes = {
desktop = 10;
applications = 14;
terminal = 16;
popups = 12;
};
};
};
}