From e121442b6583fdbfd968cca6fb7def58af0b6288 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Tue, 6 May 2025 21:13:52 -0500 Subject: [PATCH] lib/strings: add toSnakeCase Utility function for converting camelCase strings to snake_case --- modules/lib/strings.nix | 15 +++++++++++++++ modules/services/mako.nix | 8 +++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/modules/lib/strings.nix b/modules/lib/strings.nix index 05d0e7a5..5ed6f784 100644 --- a/modules/lib/strings.nix +++ b/modules/lib/strings.nix @@ -37,4 +37,19 @@ in safeName = replaceStrings unsafeInName (empties unsafeInName) path; in "hm_" + safeName; + + /* + Convert a string from camelCase to snake_case + Type: string -> string + */ + toSnakeCase = + let + splitByWords = builtins.split "([A-Z])"; + processWord = s: if lib.isString s then s else "_" + lib.toLower (lib.elemAt s 0); + in + string: + let + words = splitByWords string; + in + lib.concatStrings (map processWord words); } diff --git a/modules/services/mako.nix b/modules/services/mako.nix index f31b289a..6a1f5e93 100644 --- a/modules/services/mako.nix +++ b/modules/services/mako.nix @@ -56,10 +56,6 @@ in "ignoreTimeout" "groupBy" ]; - - mkSettingsRenamedOptionModules = - oldPrefix: newPrefix: - map (option: lib.mkRenamedOptionModule (oldPrefix ++ [ option ]) (newPrefix ++ [ option ])); in [ (lib.mkRemovedOptionModule [ @@ -69,7 +65,9 @@ in ] "Use services.mako.settings instead.") (lib.mkRenamedOptionModule [ "services" "mako" "criterias" ] [ "services" "mako" "criteria" ]) ] - ++ mkSettingsRenamedOptionModules basePath (basePath ++ [ "settings" ]) renamedOptions; + ++ lib.deprecations.mkSettingsRenamedOptionModules basePath ( + basePath ++ [ "settings" ] + ) renamedOptions; options.services.mako = { enable = mkEnableOption "mako";