nix-community / nix-init

Generate Nix packages from URLs with hash prefetching, dependency inference, license detection, and more [maintainer=@figsoda]
https://discourse.nixos.org/t/25035
Mozilla Public License 2.0
920 stars 21 forks source link

UI Redesign #72

Open figsoda opened 1 year ago

figsoda commented 1 year ago

The current tui is far from perfect, file path completions have some unconventional behavior, and we are simulating selection with completions

RaitoBezarius commented 1 year ago

I don't know if should go here, but sourceRoot support would be awesome.

Kranzes commented 1 year ago

The order of the interactive questions isn't very intuitive in my opinion. Right now the output path is asked first then URL and so on. For me at least, it makes much more sense to have URL as the first question then the other packaging related ones and finally the output path. I think in many interactive tools for generating some spec the output path is the last thing being asked.

Almost all the times I use nix-init I accidentally put the URL as the first answer automatically and since the file creating isn't truly atomic (gets created even if nix-init doesn't exit with code 0) I end up with a directory like this:

Enter output path (defaults to current directory)
❯ https://github.com/nix-community/nix-init
Enter url
❯

Error: Interrupted
[kranzes@pongo ~/test]$ ls
https:
[kranzes@pongo ~/test]$ tree
.
└── https:
    └── github.com
        └── nix-community
            └── nix-init

3 directories, 1 file
Kranzes commented 1 year ago

nix-template supports writing the output file automatically to a directory in a nixpkgs checkout. I think we could add an option to do the same in nix-init, this should be pretty for python packages as their location in nixpkgs isn't category based but rather pname based, in addition, it could also add it to to pkgs/top-level/python-packages.nix.

figsoda commented 1 year ago

writing the output file automatically to a directory in a nixpkgs checkout

This sounds useful for buildPythonPackage, though I'm not sure about other types of packages. I am mostly waiting for https://github.com/NixOS/rfcs/pull/140

This would also be a good argument for prompting for URL (and probably pname) before the output path.