{ lib, ... }: with lib; rec { # tree k v = set k (either v (tree k v)) # get : [k] -> tree k v -> v get = path: tree: if length path > 0 then get (tail path) tree.${head path} # TODO check if elem exists else tree; }