Where to find a list of scopes?

I’m reading this Overlays part. I don’t know where to look for in nixpkgs repo for a list of scopes like xfce, gnome3 as mentioned in the wiki page

Could you please help?

You would typically want to override a specific package so you would find its attribute path, for example, using nix search or through the package search. It is not clear from the attribute path if the attributes are scoped though so you would have to dig into the source code.

To illustrate this:

  1. Find that “Xfce terminal” is hiding under xfce.xfce4-terminal attribute.
  2. Look into pkgs/top-level/all-packages.nix, where all top-level attributes are listed. You would find

https://github.com/NixOS/nixpkgs/blob/0cc6e0a4106f3fc1cc0b765ab0f17b697c3d910d/pkgs/top-level/all-packages.nix#L26307

  1. Look into the mentioned pkgs/desktops/xfce/default.nix and you will see that it creates a scope:

https://github.com/NixOS/nixpkgs/blob/0cc6e0a4106f3fc1cc0b765ab0f17b697c3d910d/pkgs/desktops/xfce/default.nix#L3

Note that not all nested attributes are scoped, for example, gimpPlugins were not scoped until recently. Those would be overridden like regular attribute sets. And some language environments like haskellPackages use custom overriding mechanism.


If you want to see all top-level attributes containing scopes, you could try to wade through all-packages.nix. Or try running the following expression in nix repl:

> let nixpkgsPath = ./.; pkgs = import nixpkgsPath {}; in builtins.filter (a: let result = builtins.tryEval pkgs.${a}; in if result.success then result.value ? overrideScope' else false) (builtins.attrNames pkgs)  
[ "agdaPackages" "cinnamon" "coqPackages" "coqPackages_8_10" "coqPackages_8_11" "coqPackages_8_12" "coqPackages_8_5" "coqPackages_8_6" "coqPackages_8_7" "coqPackages_8_8" "coqPackages_8_9" "dockapps" "emacs26Packages" "emacs27Packages" "emacsPackages" "gimpPlugins" "gnome2" "gnome3" "kdeApplications" "kdeFrameworks" "libsForQt5" "libsForQt512" "libsForQt514" "libsForQt515" "lumina" "lxqt" "netsurf" "ocamlPackages" "pantheon" "plasma5" "poetry2nix" "qt5" "qt512" "qt514" "qt515" "rustPackages" "rustPackages_1_45" "rustPackages_1_48" "windows" "xfce" "xorg" ]
2 Likes