aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/default.nix52
-rw-r--r--lib/ipv4.nix7
2 files changed, 28 insertions, 31 deletions
diff --git a/lib/default.nix b/lib/default.nix
index 3f14de0..d6024bc 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -1,30 +1,26 @@
-nixpkgslib: let
- lib = nixpkgslib // nlib;
+final: _: let
+ inherit (final) pow foldl genList id reverseList bitAnd pow2 length add zipListsWith;
+in {
+ # Generic power of number
+ pow = base: e:
+ if e == 0
+ then 1
+ else foldl (x: _: x * base) 1 (genList id (e - 1));
+ # Power of 2
+ pow2 = pow 2;
- nlib = with builtins;
- with lib; {
- # Generic power of number
- pow = base: e:
- if e == 0
- then 1
- else foldl (x: _: x * base) 1 (genList id (e - 1));
- # Power of 2
- pow2 = pow 2;
+ # Convert integer to list of bits
+ int2bits = len: e: reverseList (genList (x: bitAnd e (pow2 (x + 1)) > 0) len);
+ # Reverse operation for int2bits
+ bits2int = l: let
+ len = length l;
+ zf = a: b:
+ if a
+ then pow2 b
+ else 0;
+ in
+ foldl add 0 (zipListsWith zf l (genList (i: len - i) len));
- # Convert integer to list of bits
- int2bits = len: e: reverseList (genList (x: bitAnd e (pow2 (x + 1)) > 0) len);
- # Reverse operation for int2bits
- bits2int = l: let
- len = length l;
- zf = a: b:
- if a
- then pow2 b
- else 0;
- in
- foldl add 0 (zipListsWith zf l (genList (i: len - i) len));
-
- # IPv4 utilities
- ipv4 = import ./ipv4.nix lib;
- };
-in
- nlib
+ # IPv4 utilities
+ ipv4 = import ./ipv4.nix final;
+}
diff --git a/lib/ipv4.nix b/lib/ipv4.nix
index c843cb6..537525f 100644
--- a/lib/ipv4.nix
+++ b/lib/ipv4.nix
@@ -1,6 +1,7 @@
-lib:
-with builtins;
-with lib; rec {
+lib: let
+ inherit (lib) int2bits toInt splitString flatten bits2int sublist genList zipListsWith;
+ inherit (lib.ipv4) ip2bits bits2ip netmaskBits int2ip ip2int prefix2ip;
+in {
# Converts string representation of IPv4 address to 32 bits
ip2bits = ip: let
perBits = map (x: int2bits 8 (toInt x)) (splitString "." ip);