I was trying to declaratively set my shell to fish using nix-darwin and I discovered that I had to set the following to get it to work. Unsure if this has an impact on anything else as this is my first day trying nix package manager. But it took me a while to figure out and I thought others might benefit from this.
nixos-config/modules/darwin/home-manager.nix
# It me
+ users.knownUsers = [ "${user}" ];
users.users.${user} = {
name = "${user}";
+ uid = 501;
home = "/Users/${user}";
isHidden = false;
#shell = pkgs.zsh;
shell = pkgs.fish;
};