1# Languages and frameworks {#chap-language-support}
2
3The [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.
4
5Each supported language or software ecosystem has its own package set named `<language or ecosystem>Packages`, which can be explored in various ways:
6
7- Search on [search.nixos.org](https://search.nixos.org/packages)
8
9 For example, search for [`haskellPackages`](https://search.nixos.org/packages?query=haskellPackages) or [`rubyPackages`](https://search.nixos.org/packages?query=rubyPackages).
10
11- Navigate attribute sets with [`nix repl`](https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-repl).
12
13 This technique is generally useful to inspect Nix language data structures.
14
15 :::{.example #example-navigte-nix-repl}
16
17 # Navigate Java compiler variants in `javaPackages` with `nix repl`
18
19 ```shell-session
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
26 ```
27 :::
28
29- List all derivations on the command line with [`nix-env --query`](https://nixos.org/manual/nix/stable/command-ref/nix-env/query).
30
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.
32
33 :::{.example #example-list-haskellPackages}
34
35 # List all Python packages in Nixpkgs
36
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`).
38
39 ```shell-session
40 $ nix-env -qaP -f '<nixpkgs>' -A pythonPackages -I nixpkgs=channel:nixpkgs-unstable
41 ```
42
43 ```console
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
49 …
50 ```
51 :::
52
53```{=include=} sections
54agda.section.md
55android.section.md
56astal.section.md
57beam.section.md
58chicken.section.md
59coq.section.md
60cosmic.section.md
61crystal.section.md
62cuda.section.md
63cuelang.section.md
64dart.section.md
65dhall.section.md
66dlang.section.md
67dotnet.section.md
68emscripten.section.md
69factor.section.md
70gnome.section.md
71go.section.md
72gradle.section.md
73hare.section.md
74haskell.section.md
75hy.section.md
76idris.section.md
77idris2.section.md
78ios.section.md
79java.section.md
80javascript.section.md
81julia.section.md
82lisp.section.md
83lua.section.md
84maven.section.md
85nim.section.md
86ocaml.section.md
87octave.section.md
88perl.section.md
89php.section.md
90pkg-config.section.md
91python.section.md
92qt.section.md
93r.section.md
94ruby.section.md
95rust.section.md
96scheme.section.md
97swift.section.md
98tcl.section.md
99texlive.section.md
100typst.section.md
101vim.section.md
102neovim.section.md
103```