46 lines
1.4 KiB
Nix

{ config, lib, pkgs, ... }:
let
cfg = config.nixfiles.theming;
mkCtpPackages = flavor: accent: let
toCaps = s: with lib.strings; with builtins;
(toUpper (substring 0 1 s)) + toLower (substring 1 ((stringLength s)-1) s);
inherit (lib.strings) toUpper toLower;
in with pkgs; {
cursors = catppuccin-cursors."${toLower flavor}${toCaps accent}";
cursorName = "Catppuccin-${toCaps flavor}-${toCaps accent}-Cursors";
kvantum = catppuccin-kvantum.override { variant = toCaps flavor; accent = toCaps accent; };
icons = catppuccin-papirus-folders.override { flavor = toLower flavor; accent = toLower accent; };
};
ctpPackages = with cfg.catppuccin; mkCtpPackages flavor accent;
in {
options.nixfiles.theming = {
enable = lib.mkEnableOption "nixfiles theming options";
catppuccin = {
flavor = lib.mkOption {
description = "Catppuccin flavor";
type = lib.types.str;
default = "mocha";
};
accent = lib.mkOption {
description = "Catppuccin accent";
type = lib.types.str;
default = "mauve";
};
};
};
config = lib.mkIf cfg.enable {
gtk.enable = true;
home.pointerCursor = {
package = lib.mkDefault ctpPackages.cursors;
name = lib.mkDefault ctpPackages.cursorName;
size = lib.mkDefault 24;
x11.enable = lib.mkDefault true;
gtk.enable = lib.mkDefault true;
};
};
}