My Nix Configuration
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

[lib] make strings.nix and move string functions there

dish 9f53b546 c1ae9f2b

+36 -8
+3 -8
lib/default.nix
··· 1 1 { lib, ... }: 2 2 let 3 3 data = import ./data; 4 + strings = import ./strings.nix { inherit lib; }; 4 5 in 5 6 { 6 7 flake = { 7 8 lib = { 8 9 caddy = import ./caddy.nix { inherit data lib; }; 9 10 inherit data; 10 - 11 - toPascalCase = 12 - string: 13 - let 14 - head = lib.toUpper (builtins.substring 0 1 string); 15 - tail = builtins.substring 1 (-1) string; 16 - in 17 - head + tail; 11 + inherit strings; 12 + inherit (strings) toPascalCase toUpperSnakeCase; 18 13 }; 19 14 }; 20 15 }
+33
lib/strings.nix
··· 1 + { lib, ... }: 2 + { 3 + toPascalCase = 4 + string: 5 + let 6 + head = lib.toUpper (builtins.substring 0 1 string); 7 + tail = builtins.substring 1 (-1) string; 8 + in 9 + head + tail; 10 + 11 + # Taken from nixpkgs Vaultwarden module, licensed MIT 12 + # https://github.com/NixOS/nixpkgs/blob/6c9a78c09ff4d6c21d0319114873508a6ec01655/nixos/modules/services/security/vaultwarden/default.nix#L20 13 + toUpperSnakeCase = 14 + name: 15 + let 16 + parts = builtins.split "([A-Z0-9]+)" name; 17 + in 18 + lib.foldl' ( 19 + key: x: 20 + let 21 + last = lib.stringLength key - 1; 22 + in 23 + if lib.isList x then 24 + key + lib.optionalString (key != "" && lib.substring last 1 key != "_") "_" + lib.head x 25 + else if key != "" && lib.elem (lib.substring 0 1 x) lib.lowerChars then # to handle e.g. [ "disable" [ "2FAR" ] "emember" ] 26 + lib.substring 0 last key 27 + + lib.optionalString (lib.substring (last - 1) 1 key != "_") "_" 28 + + lib.substring last 1 key 29 + + lib.toUpper x 30 + else 31 + key + lib.toUpper x 32 + ) "" parts; 33 + }