summaryrefslogtreecommitdiffstats
path: root/krebs/4lib/genid.nix
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2016-10-20 20:21:59 +0200
committertv <tv@krebsco.de>2016-10-20 20:21:59 +0200
commit844d347ce7cf0b7646e9ecba3fbdc0b90e608501 (patch)
tree32827cb69265c117abee1654ae6cf581a9a5c87c /krebs/4lib/genid.nix
parent91d6bd66f4d50d47692f55c16bfb14bdf4837520 (diff)
lib: import bulk of krebs/4lib
Diffstat (limited to 'krebs/4lib/genid.nix')
-rw-r--r--krebs/4lib/genid.nix37
1 files changed, 0 insertions, 37 deletions
diff --git a/krebs/4lib/genid.nix b/krebs/4lib/genid.nix
deleted file mode 100644
index 0aed1d351..000000000
--- a/krebs/4lib/genid.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ lib, ... }:
-with lib;
-with builtins;
-let out = genid;
-
- # id = genid s = (hash s + min) % max
- # min <= genid s < max
- #
- # min = 2^24 = 16777216 = 0x001000000
- # max = 2^32 = 4294967296 = 0x100000000
- #
- # id is bigger than UID of nobody and GID of nogroup
- # see <nixos/modules/misc/ids.nix> and some spare for stuff like lxd.
- #
- # :: str -> uint32
- genid = s: sum16 (addmod16_16777216 (hash s));
-
- # :: str -> list8 uint4
- hash = s:
- map hexint (stringToCharacters (substring 32 8 (hashString "sha1" s)));
-
- # :: list uint -> uint
- sum16 = foldl (a: i: a * 16 + i) 0;
-
- # :: list8 uint4 -> list1 uint8 ++ list6 uint4
- addmod16_16777216 = x: let
- a = 16 * head x + head (tail x);
- d = tail (tail x);
- in [(mod (a + 1) 256)] ++ d;
-
- # :: char -> uint4
- hexint = x: hexvals.${toLower x};
-
- # :: attrset char uint4
- hexvals = listToAttrs (imap (i: c: { name = c; value = i - 1; })
- (stringToCharacters "0123456789abcdef"));
-in out