Nix Software - a website for convenient package search

Hello everyone, I’ve created a Nix Software. The main feature is that packages now have logos, screenshots, categories, and descriptions with markdown support, which can be translated into different languages. All of this is configurable through the admin panel. There’s also filtering functionality. I plan to provide a nice REST API for everyone, and if needed, an .xml file with package information. My goal is to make package management user-friendly for everyone. I’m happy to answer any questions you have.

There is a problem with full-text search: at the moment, the server is too weak.


The website has the opportunity to offer data and translations for the package.
Frontend - NixSoftware/nix-software-frontend: Frontend for a website dedicated to convenient search of packages for Nix - Codeberg.org
Backend - NixSoftware/nix-software-backend: Backend for a website dedicated to convenient search of packages for Nix - Codeberg.org
API Documentation: Nix Software Swagger
Nix Software - https://nixsoftware.org/

14 Likes

Hi everyone, straight to the point!
The site has moved to a new domain: https://nixsoftware.org
More than a thousand entries with package metadata have been imported into the website.

Integration with the Weblate translation service has been added. The site now supports more than 50 languages, but help with translations is needed. At the moment, the website is fully translated into English, Spanish, Russian, and Arabic.

Smart search powered by Meilisearch has been added. Now it’s possible to search in different languages and even with typos. You can also search for more abstract terms like “music” or “browser”.

Improved layout and responsiveness.
I’m happy to answer any questions you may have!

You should add a <noscript> banner as I tried to click around & nothing worked when I landed. There’s a massive list of languages in the picker, but most of them aren’t supported—so is there a way to reduce the list if there is no translations?

Why using Docker instead of Nix? :sweat_smile:

Also, thanks for using a non-proprietary, non-US-based forge for your hosting <3

Thanks for the remark — you’re right, it would make sense to leave a warning that the site doesn’t work without JavaScript.

Regarding translations: even if the site interface itself isn’t fully translated into a particular language yet, some packages may already have metadata translated into that language.

As for Docker: I already have a template that I reuse from project to project, and in this case I decided not to break with tradition. Feel free to open a PR if you’d like :slightly_smiling_face:

I don’t speak English, so I’m using AI to help with translation. Sorry for any mistakes.

1 Like

looks a bit like a web version of that gnome-based nix-software-center.

i guess the categories may not do too much since RFC 140 (packages by name), tho hopefully the categorization team will help alleviate that at some point…

If you’re referring to the UI, I was inspired by Flathub.

Maybe nix-software-center and I share similar goals.

1 Like

Is there flake search in the roadmap?

Recently I was looking for a vpn package. I used search.nixos.org to quickly check the menu and I overlooked flake tabs.
I decided to create my own nixos service. Later I asked my self how to share the flake I created and I found vpn package on the flake tab :frowning: !!!

even this nixos-search one just makes for a web front-end to nixos-search/flakes/manual.toml at 7b3ccd86f8bb0dd7fb4cce1e33dcbcda60df0c4d · NixOS/nixos-search · GitHub - you might as well put nix plus the name of your package into your search engine, with where we’re at now

1 Like

How to navigate in that toml file? It is not flat - many dependencies kinda repositories by itself. Links are not clickable right away. So if a flake link doesn’t fit top list then how to choose between sub-repositories?

Nice UI. One small feedback: Exact matches can be moved to the top (a.k.a. search for “yazi”). Also -unwrapped packages might be embedded into the same result.

1 Like

This is really cool. I think this will really help getting Nix known in the bigger public. :rocket:

1 Like

And good to have all parts in codeberg so everyone can submit PR’s.

It does fetch and index the metadata for all the flakes listed there. The quality of general-purpose search engines has been steadily degrading, I think we need a mix of search engines and these kinds of lightly-curated lists/registries…

You might want to create easy to find buttons to contribute and to submit issues. For issues I would create a central place and not devided in the frontend and the backend projects.

Nix Software - Software Managers Integration, Badges & More

1. Software manager support

You can now open a package directly in a graphical software manager if it supports the nixpkg://{pkgname} protocol.

The launch button is available in the package installation dialog.

2. Supported software managers page

I’ve added a dedicated page listing software managers that support the protocol.

These applications are not affiliated with Nix Software - the website simply keeps a list of compatible software managers.

If you’re developing your own software center and would like it to be listed, feel free to reach out.

3. Badge

Developers can now add a Nix Software badge to their project’s README.md.

The badge links directly to the project’s page on Nix Software.

Get it on Nix Software

4. UI improvements

5. Performance

The website is now faster overall, and several animations and minor UI issues have been fixed.


Ideas that are still on hold:

1. Verified developer accounts

One feature I’d really like to build is developer verification.

Verified developers would be able to:

  • display a verification badge next to their packages;
  • showcase all of their published projects;
  • add donation links;
  • edit screenshots, descriptions and other package metadata without restrictions.

The downside is that this would take a significant amount of work. At the moment the site only gets around one visitor per day, so I’m not sure the development time would be justified.

If you’re a package maintainer or developer and this is something you’d actually use, I’d love to hear your thoughts.

2. Download statistics

I’d also like to show download statistics for GUI applications.

Unfortunately, as far as I can tell, the Nix ecosystem doesn’t expose this information (or I simply haven’t found a way to access it yet).


As always, feedback, suggestions and questions are very welcome!

Nix Software - https://nixsoftware.org/

2 Likes

Another nice thing would be fresh packages: totally new and updated. Brings back memories of the famous freshmeat website.

1 Like

Nix Software - Package Version History and Website Optimization

Nix Software - https://nixsoftware.org

3 Likes

I’m glad there is no nix-env commands, glad we left that in the past, cool website tho!

1 Like

This looks very good, much better for the average user than the text based search.nixos.org one. I have a few suggestion with varying levels of feasibility.

  1. Add an (advanced/minimzed) option for overrides of a package. I think overrides are one of the most powerful features of nix, having an option to see them without searching the source code seems like a good idea.

    Alternatively (and maybe a better idea) only show overrides for options which provide default arguments and are more likely to be of interest to the casual user changing the package. Something like the catppucin theme provides:
    accent ? “blue”,variant ? “macchiato”,themeList ? validThemes. Although as I write this I struggle more and more to think of a viable way to show only useful overrides, as the third option of that particular package is of little use for overwriting.

  2. Ranking and categories for more popular/trending packages. This unfortunately goes hand in with download statistics, so again not really feasible.
    But to have the site be useful to the average consumer, who doesn’t already know what package they want to fill a certain need, there is the requirement to rank more popular packages higher than less popular ones, to display more mature and reputable (and more likely safer) packages.

    One idea would be to scrap together popularity by relying on external sources. Something like github stars, data from other package managers (iff they allow use of such data), or simply a list of reputable sources for example ranking gimp and krita higher when searching for graphics tools because of the trusted status of both gnome and kde devs.

    A useful internal metric would be whether or not the application already has a module or if it is in by-name or applications, both either imply a certain popularity or trustworthiness, which important in my opinion since nixpkgs also provides questionable packages, that we don’t want a fresh user to stumble across easily for example nsfw packages like this.

  3. Show whether or not a maintainer of the package in nix is also the author of the package. This just seems useful since it gives confidence that the package is nix native and is working correctly.

  4. Allow changing the channel in the information section of the package. Most other options there are configurable by clicking on the widget, I see no reason the user would need to reach up to switch to another channel. Maybe even remove the option to switch channels below the install button entirely.

  5. Add some explanation to some options. Specifically to the license option. A user might or might not now what the labels mean. And a unfree package like steam, does need additional steps to be installed, mainly allowing use of unfree packages, which could also be presented in a red box.

Anyway, those are just some ideas to throw at the wall. I really like the amount of thought you already put in. Would be really nice to have this as official search in my opinion, since it provides more information and does so in a more visually digestible way.

1 Like

It’s an interesting idea, but my current data source doesn’t contain package overrides, so this would require a separate way of extracting that information from nixpkgs. At the moment, this feature isn’t a priority.

Yes, I’d also like to rank packages by popularity, and you described very well why this could be useful.

I opened an issue about a possible way to get package download counts: it could be a great help with this.

I’ve also thought about marking such packages with a badge, as well as providing a way to quickly navigate to other packages maintained by the same author or development team. The problem is that, ideally, this should happen without requiring my involvement. This would mean creating a separate verification process where the author would submit a request themselves. It’s definitely doable, but would require a fair amount of effort. Given that the site currently isn’t very popular (~10 visitors per day), I don’t think it would be worth investing that effort at this stage.

Okay, in future updates I’ll also add the channel select to the information panel below the description.