TODO - [x] Extract the Purs Nix machinery from CTL and place it here - [x] Use flake-lang.nix in CTL if possible