Buying into Flakes is very short-sighted the deeper anyone gets into Nix (I ranted on Reddit of all places about why). You want to expose an overlay which is both more compatible (doesn’t require experimental features) & more flexible (you can override both inputs & outputs in overlays), which the Flake pattern doesn’t lead most to. An alice namespace in an overlay with alice.package, alice.recommendTooling, & alice.full would probably be preferable (can’t namespace in flakes)—if not just alice with withRecommendedTooling overridable flag (I can’t quite tell just looking at it). On that tangent, packages (alice in this case) aren’t in individual files so I, as a user, could just grab the one thing I need instead of needing to importing & consuming a flake. Bash (assuming Zsh, Fish, etc. aren’t yet supported) completions should be a part of the postInstall of the package with an override flag instead of aliceMin (a separate file in package normal form would have led you down this as the preferred path). As well as, builtins.fetchGit lacks the hash, which pkgs.fetchgit or pkgs.fetchzip could get.
Again, these are common missteps & largely a result of buying into experimental, unversioned Flakes & the patterns it pushes users into that actually make the Nix output less flexible & less usable to downstream users & contributors.