{ config, lib, pkgs, ... }: let cfg = config.gtk._mintTheme; # gtk.theme type is null or submodule under the hood so gtk.theme._mint, etc. can't be used transformColorValue = color: dark: "Mint-Y" + lib.optionalString dark "-Dark" + lib.optionalString (color != "Green") ("-" + color) ; in { options.gtk._mintTheme = { enable = lib.mkEnableOption "enables mint theme"; color = lib.mkOption { type = lib.types.enum [ "Aqua" "Blue" "Green" "Grey" "Orange" "Pink" "Purple" "Red" "Sand" "Teal" ]; default = "Green"; description = "mint-y theme color"; }; dark = lib.mkEnableOption "whether to use dark variant of mint theme"; icons.color = lib.mkOption { type = lib.types.enum [ "Aqua" "Blue" "Green" "Grey" "Orange" "Pink" "Purple" "Red" "Sand" "Teal" ]; default = "Aqua"; description = "mint-y icons color eg. 'Aqua' or 'Red'"; }; }; config = lib.mkIf cfg.enable { gtk = { enable = true; theme = { package = pkgs.mint-themes; name = transformColorValue cfg.color cfg.dark; }; iconTheme = { package = pkgs.mint-y-icons; name = transformColorValue cfg.icons.color false; }; }; }; }