Olhando para a fonte , parece muito provavelmente você tem outro diretório nixpkgs em algum lugar em ~ .
nix-env pesquisa (recursivamente) todos os diretórios para default.nix adicionando o diretório pai como um atributo de nível superior.
Usar nix-env -f ~ parece ser uma má idéia - muito para pesquisar e chances para tais colisões. A menos que haja algo que esteja faltando, o symlinking ~/nixpkgs into ~/.nix-defexpr parece ser uma boa solução.
Não há nada errado em simplesmente usar nix-env -f nixpkgs -iA exercism . Nesse formato, nix vê um default.nix diretamente no argumento -f e usa isso como o atributo de nível superior definido.
Se você não encontrar outro diretório nixpkgs, eu tentarei usar a opção --show-trace .