Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

domains

utils.domains.getParts

Type: utils.domains.getParts :: String -> [ String ]

Convert a string like “example.org” to a list like [ "example" "org" ]

domains

String of a domain

utils.domains.comparePart

Type: utils.domains.compareParts :: String, Null -> String, Null -> Int

Compare domain parts and give them a value If sub and base match they are valued 1 If sub and base don’t match but base is null return 0 And in every other case return -1

sub

the sub domain part you want to compare

base

the base domain part you want to compare

utils.domains.comparableParts

Type: utils.domains.comparableParts :: String -> String -> { sub :: [ Null, String ], base [ Null, String ] }

uses fillList to generate two lists of domain parts, that are easily comparable. Will return attrSet like:

{
  sub = [ "my" "fancy" "example" "com" ]
  base = [ null null "example" "com" ]
}
subDomain

subDomain you want to compare

baseDomain

baseDomain you want to compare

utils.domains.rate

Type: utils.domains.rate :: [ String ] -> [ String ] -> [ Int ]

This returns a list like [ 0 (-1) 1 1 ] Which contains the order comparison of a sub domain and a base domain

subDomain

expects a deconstructed domain like [ "example" "com" ]

baseDomain

expects a deconstructed domain like [ "my" "example" "com" ]

utils.domains.construct

Type: utils.domains.construct :: [ String ] -> String

Expects a list of domain parts like [ "ns" "example" "com" ] and builds a domain from it, in this case: ns.example.com

parts

list of domain parts to construct

utils.domains.validateSubDomain

Type: utils.domains.validateSubDomain :: [ String ] -> [ String ] -> { valid :: Bool, value :: Int }

This returns a attrSet like

{
  valid = true;
  value = 2;
}

with valid telling you if the sub domain corresponds to the base domain and value telling you how close it is (higher is better) let’s take for example: [ "my" "example" "com" ] as sub domain and [ "example" "com" ] as base domain, this would return the attrSet shown above. Because [ "example" "com" ] will expand to [ null "example" "com" ] and then get rated like:

"my" == null = 0
"example" == "example" = 1
"com" == "com" = 1

the domain is valid since there is no negative value and the total value is 2

subDomain

takes the same input as ratedDomain

baseDomain

takes the same input as ratedDomain

utils.domains.getMostSpecific

Type: utils.domains.getMostSpecific :: String -> [ String ] -> String, Null

This function takes a sub domain and a list of domains, and will find the most similar domain from the list. It does this by comparing the domain parts and not singe letters so if we have sub domain.example.com and [ sub.example.com example.com ] then we would get example.com as a result. If the sub domain doesn’t have a matching one in the list the function will return null

subDomain

a string of a domain like "example.com"

baseDomains

Function argument

utils.domains.mapBaseToSub

Type: utils.domains.mapBaseToSub :: String -> Attr -> String -> Any

This Functions uses getMostSpecific to get the value of a corresponding key for a sub domain

subDomain

takes a attrSet like the one provided by networking.domains.subDomains

baseDomains

takes a attrSet like the one provided by `networking.domains.baseDomains

value

the key from which to get the value

utils.domains.getDomainsFromNixosConfigurations

Type: utils.domains.getDomainsFromNixosConfigurations :: Attr -> Attr

Be care full when using this, since you might end up overwriting previous results because if a key is defined multiple times only the last value will remain except if the value is a list then all of the content will be merged

nixosConfigurations

Function argument

utils.domains.getDnsConfig

Type: utils.domains.getDnsConfig :: Attr -> Attr

Expects a attribute-set like:

{
inherit (self) nixosConfigurations darwinConfigurations;
extraConfig = import ./dns.nix;
}

it will do special casing for the keys nixosConfigurations (and potentially darwinConfiguratiosn) and every other key is expected to have a attrs that looks like the output of utils.debug it will then go ahead and merge all the dns configs into one.

config

Function argument