Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Package Manager #85

Open
5 tasks
lapp0 opened this issue Aug 6, 2021 · 8 comments · May be fixed by #86
Open
5 tasks

Package Manager #85

lapp0 opened this issue Aug 6, 2021 · 8 comments · May be fixed by #86
Milestone

Comments

@lapp0
Copy link
Collaborator

lapp0 commented Aug 6, 2021

Handles package and list of packages (ListOf[Packages] isn't handled by ListOf).

Functionality

  • view current list of packages (or single package)
  • allow users to search for packages
    • for a given piece of software, allow users to add a specific pegged version
  • view details about the package

The first iteration will be based on synaptics layout at bottom)

  • right column
    • search box
    • list of matched packages including their description
    • description box below
    • version selection list (unlike synaptic there will be two boxes below, one for description, and one for)
  • list of installed packages (Left column containing categories and vstacked buttons will be replaced with)

image

@lapp0 lapp0 added this to the V0.3 milestone Aug 6, 2021
@lapp0 lapp0 linked a pull request Aug 8, 2021 that will close this issue
@davidak
Copy link

davidak commented Sep 1, 2021

synaptic (and probably also it's UI) is literally 19 years old. it's overwhelming and unintuitive.

for a user friendly design, look at modern software like elementary AppCenter, GNOME Software, Apple AppStore or even the microsoft store that no one uses...

Screenshot from 2021-09-01 03-13-49
Screenshot from 2021-09-01 03-13-54
Screenshot from 2021-09-01 03-14-01
Screenshot from 2021-09-01 03-14-12

For now you can only install flatpaks with it on nixos, but i hope that Nix supports packagekit and appstream metadata at one point and we can just use it as gui, or gnome software and maybe even discover from kde. installing packages should really be it's own program and there are good ones, we just have to support the standard API

NixOS/nixpkgs#94055
NixOS/nixpkgs#15932

https://blog.elementary.io/introducing-new-appcenter-categories/

https://wiki.gnome.org/Design/Apps/Software

https://www.apple.com/newsroom/2018/06/apple-previews-all-new-mac-app-store/

https://www.pcgamer.com/the-microsoft-store-finally-gets-a-much-needed-overhaul-for-windows-10-and-windows-11/

so i suggest not to waste time on the package management and remove it as soon as nix supports the common linux gui package manager guis

focus on design for an intuitive interface to edit nixos config

@lapp0
Copy link
Collaborator Author

lapp0 commented Sep 1, 2021

Thanks for the feedback. I didn't realize there was an RFC for Appstream on nixos. If/when the RFC is merged, we can use it to create a more intuitive and informative package manager.

I agree with your point regarding Synaptics lack of intuitiveness and the better UX of modern package managers (especially the sleek OSX package manager you linked). However, I disagree with your second point: I'm not sure we can get away with excluding a (small) package manager from nix-gui.

nix-gui's goals is to provide a graphical interface for setting nearly any option, including nearly 400 list of packages options such as environment.systemPackages, hardware.firmware, and programs.zsh.ohMyZsh.customPkgs.

So I'm not entirely convinced that this can be a separate program. list of packages should be considered just another option type with a corresponding nix-gui FieldWidget.

Thanks again for your input, I hope to hear more feedback from you as this project progresses.

@davidak
Copy link

davidak commented Sep 1, 2021

Yeah, the package related options make it hard to create a consistent experience. The package related options would have to be shown in the package manager GUI, maybe ask if the user wants to modify them when installing and show them in the app detail view. But that's probably not intended with the listed programs. Nix makes everything complicated. Why can't a user just install a program? We might have to give up on achieving the best user-friendliness and embrace the control nix offers in the most intuitive way possible.

A program listing could have an option to "modify package" and an easy UI do override the package definition. That could be a killer feature that no other package manager offers.

I think it should still be a separate program since installing an app and changing system settings are different tasks.

Not sure if we should fork one of these GUIs or if they might add our changes. We could research if packagekit and appstream support settings for packages or have an interface for modifying packages or if upstream would accept such additions.

I want the UX macOS or elementary OS provide, but NixOS makes that really hard and it might not be possible, because Nix is too powerful and we still want to provide this power to the end-user.

So the UI should really teach the user in an intuitive way, like environmental storytelling in games... that would be perfect.

@lapp0
Copy link
Collaborator Author

lapp0 commented Sep 1, 2021

A program listing could have an option to "modify package" and an easy UI do override the package definition. That could be a killer feature that no other package manager offers.

Absolutely. Assisted package overrides (and overrides in general) are planned https://github.com/nix-gui/nix-gui/milestone/4

Not sure if we should fork one of these GUIs or if they might add our changes.

For now I think the MVP should include a list of packages, a textbox to search and filter, a checkbox to add the package to the list, and a display of the list.

In the future, PackageKit (or ideally Appstream, but that seems much further from realization) definitely should be used in a reimplemented form of the package manager with enhanced UX.

So the UI should really teach the user in an intuitive way, like environmental storytelling in games... that would be perfect.

Yes, this is a great way to put it. Nix-Gui might be viewed as a tool to smooth the learning curve of nix.

@davidak
Copy link

davidak commented Sep 1, 2021

Nix-Gui might be viewed as a tool to smooth the learning curve of nix.

yes, that's the potential, but it's also a very hard design problem

it sounds good so far, let's see how it will turn out

@davidak
Copy link

davidak commented Sep 15, 2021

Have you checked out other attempts on the problem and considered contributing there instead of starting from scratch?

https://github.com/pmiddend/nixos-manager
https://gitlab.com/juliendehos/nix42b
https://github.com/matejc/nixui

https://www.reddit.com/r/NixOS/comments/cu4dle/should_nix_have_a_gui/ discussion

@lapp0
Copy link
Collaborator Author

lapp0 commented Sep 15, 2021

nixui is abandoned and nix42b isn't a configuration tool.

nixos-manager is the closest thing to this project by far. https://github.com/nix-gui/nix-gui/blob/master/docs/development.org#related

It's author has suggested that it would need to be rewritten because it uses deprecated graphics library pmiddend/nixos-manager#10 (comment)

I think nix-gui is the furthest along graphical configuration editor.

@Zahrun
Copy link

Zahrun commented Mar 7, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants