From 1a83d26d4cdb67c401d4223c886e55543b29be67 Mon Sep 17 00:00:00 2001 From: eveeifyeve <88671402+Eveeifyeve@users.noreply.github.com> Date: Thu, 15 May 2025 22:30:56 +1000 Subject: [PATCH] stylix: add config.lib.stylix.{mkHexColor,mkOpacityHexColor} functions Co-authored-by: NAHO <90870942+trueNAHO@users.noreply.github.com> --- doc/src/modules.md | 9 +++++++++ stylix/colors.nix | 16 ++++++++++++++++ stylix/darwin/default.nix | 1 + stylix/droid/default.nix | 1 + stylix/hm/default.nix | 1 + stylix/nixos/default.nix | 1 + 6 files changed, 29 insertions(+) create mode 100644 stylix/colors.nix diff --git a/doc/src/modules.md b/doc/src/modules.md index 6d7a57f9..7cc87372 100644 --- a/doc/src/modules.md +++ b/doc/src/modules.md @@ -182,6 +182,15 @@ individually. Also note that reading generated files with `builtins.readFile` can be very slow and should be avoided. + +### Hexadecimal colors + +- config.lib.stylix.mkHexColor`: Converts a hex `color` (e.g., `RRGGBB` or + `#RRGGBB`) to `0xRRGGBB`. + +- `config.lib.stylix.mkOpacityHexColor`: Converts a hex `color` and `opacity` + (0–1) to `0xRRGGBBAA`. + ## How to apply other things For everything else, like fonts and wallpapers, you can just take option values diff --git a/stylix/colors.nix b/stylix/colors.nix new file mode 100644 index 00000000..da03bbea --- /dev/null +++ b/stylix/colors.nix @@ -0,0 +1,16 @@ +{ lib, ... }: +{ + config.lib.stylix = { + mkHexColor = color: "0x${lib.removePrefix "#" color}"; + + mkOpacityHexColor = + let + opacityHex = + percentage: + lib.throwIfNot (percentage >= 0 && percentage <= 1) + "value must be between 0 and 1 (inclusive): ${toString percentage}" + (lib.toHexString (builtins.floor (percentage * 255 + 0.5))); + in + color: opacity: "0x${opacityHex opacity}${lib.removePrefix "#" color}"; + }; +} diff --git a/stylix/darwin/default.nix b/stylix/darwin/default.nix index 4fc9cd8a..1f0bbb68 100644 --- a/stylix/darwin/default.nix +++ b/stylix/darwin/default.nix @@ -9,6 +9,7 @@ in { imports = [ ./palette.nix + ../colors.nix ../fonts.nix ../home-manager-integration.nix ../opacity.nix diff --git a/stylix/droid/default.nix b/stylix/droid/default.nix index c5c18d9e..91ca5196 100644 --- a/stylix/droid/default.nix +++ b/stylix/droid/default.nix @@ -6,6 +6,7 @@ in imports = [ ./fonts.nix ./palette.nix + ../colors.nix ../fonts.nix ../home-manager-integration.nix ../opacity.nix diff --git a/stylix/hm/default.nix b/stylix/hm/default.nix index 832dd516..5dcd1ce5 100644 --- a/stylix/hm/default.nix +++ b/stylix/hm/default.nix @@ -11,6 +11,7 @@ in ./cursor.nix ./icons.nix ./palette.nix + ../colors.nix ../cursor.nix ../fonts.nix ../icons.nix diff --git a/stylix/nixos/default.nix b/stylix/nixos/default.nix index 71e36ecb..ebf2d807 100644 --- a/stylix/nixos/default.nix +++ b/stylix/nixos/default.nix @@ -10,6 +10,7 @@ in imports = [ ./cursor.nix ./palette.nix + ../colors.nix ../cursor.nix ../fonts.nix ../home-manager-integration.nix