1 # Languages and frameworks {#chap-language-support}
3 The [standard build environment](#chap-stdenv) makes it easy to build typical Autotools-based packages with very little code. Any other kind of package can be accommodated by overriding the appropriate phases of `stdenv`. However, there are specialised functions in Nixpkgs to easily build packages for other programming languages, such as Perl or Haskell. These are described in this chapter.
5 Each supported language or software ecosystem has its own package set named `<language or ecosystem>Packages`, which can be explored in various ways:
7 - Search on [search.nixos.org](https://search.nixos.org/packages)
9 For example, search for [`haskellPackages`](https://search.nixos.org/packages?query=haskellPackages) or [`rubyPackages`](https://search.nixos.org/packages?query=rubyPackages).
11 - Navigate attribute sets with [`nix repl`](https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-repl).
13 This technique is generally useful to inspect Nix language data structures.
15 :::{.example #example-navigte-nix-repl}
17 # Navigate Java compiler variants in `javaPackages` with `nix repl`
20 $ nix repl '<nixpkgs>' -I nixpkgs=channel:nixpkgs-unstable
21 nix-repl> javaPackages.<tab>
22 javaPackages.compiler javaPackages.openjfx15 javaPackages.openjfx21 javaPackages.recurseForDerivations
23 javaPackages.jogl_2_4_0 javaPackages.openjfx17 javaPackages.openjfx22
24 javaPackages.mavenfod javaPackages.openjfx19 javaPackages.override
25 javaPackages.openjfx11 javaPackages.openjfx20 javaPackages.overrideDerivation
29 - List all derivations on the command line with [`nix-env --query`](https://nixos.org/manual/nix/stable/command-ref/nix-env/query).
31 `nix-env` is the only convenient way to do that, as it will skip attributes that fail [assertions](https://nixos.org/manual/nix/stable/language/constructs#assertions), such as when a package is [marked as broken](#var-meta-broken), rather than failing the entire evaluation.
33 :::{.example #example-list-haskellPackages}
35 # List all Python packages in Nixpkgs
37 The following command lists all [derivations names](https://nixos.org/manual/nix/stable/language/derivations#attr-name) with their attribute path from the latest Nixpkgs rolling release (`nixpkgs-unstable`).
40 $ nix-env -qaP -f '<nixpkgs>' -A pythonPackages -I nixpkgs=channel:nixpkgs-unstable
44 pythonPackages.avahi avahi-0.8
45 pythonPackages.boost boost-1.81.0
46 pythonPackages.caffe caffe-1.0
47 pythonPackages.caffeWithCuda caffe-1.0
48 pythonPackages.cbeams cbeams-1.0.3
53 ```{=include=} sections