Haskell parsers and types for manipulating the Nix language