julia: add documentation to manual + release note
This commit is contained in:
parent
36bf6afd42
commit
c8f0d302c1
3 changed files with 57 additions and 0 deletions
|
@ -24,6 +24,7 @@ idris.section.md
|
||||||
ios.section.md
|
ios.section.md
|
||||||
java.section.md
|
java.section.md
|
||||||
javascript.section.md
|
javascript.section.md
|
||||||
|
julia.section.md
|
||||||
lisp.section.md
|
lisp.section.md
|
||||||
lua.section.md
|
lua.section.md
|
||||||
maven.section.md
|
maven.section.md
|
||||||
|
|
54
doc/languages-frameworks/julia.section.md
Normal file
54
doc/languages-frameworks/julia.section.md
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
# Julia {#language-julia}
|
||||||
|
|
||||||
|
## Introduction {#julia-introduction}
|
||||||
|
|
||||||
|
Nixpkgs includes Julia as the `julia` derivation. You can get specific versions by looking at the other `julia*` top-level derivations available. For example, `julia_19` corresponds to Julia 1.9. We also provide the current stable version as `julia-stable`, and an LTS version as `julia-lts`.
|
||||||
|
|
||||||
|
Occasionally, a Julia version has been too difficult to build from source in Nixpkgs and has been fetched prebuilt instead. These Julia versions are differentiated with the `*-bin` suffix; for example, `julia-stable-bin`.
|
||||||
|
|
||||||
|
## julia.withPackages {#julia-withpackage}
|
||||||
|
|
||||||
|
The basic Julia derivations only provide the built-in packages that come with the distribution.
|
||||||
|
|
||||||
|
You can build Julia environments with additional packages using the `julia.withPackages` command. This function accepts a list of strings representing Julia package names. For example, you can build a Julia environment with the `Plots` package as follows.
|
||||||
|
|
||||||
|
```nix
|
||||||
|
julia.withPackages ["Plots"]
|
||||||
|
```
|
||||||
|
|
||||||
|
Arguments can be passed using `.override`. For example:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
(julia.withPackages.override {
|
||||||
|
precompile = false; # Turn off precompilation
|
||||||
|
}) ["Plots"]
|
||||||
|
```
|
||||||
|
|
||||||
|
Here's a nice way to run a Julia environment with a shell one-liner:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
nix-shell -p 'julia.withPackages ["Plots"]' --run julia
|
||||||
|
```
|
||||||
|
|
||||||
|
### Arguments {#julia-withpackage-arguments}
|
||||||
|
|
||||||
|
* `precompile`: Whether to run `Pkg.precompile()` on the generated environment.
|
||||||
|
|
||||||
|
This will make package imports faster, but may fail in some cases. For example, there is an upstream issue with `Gtk.jl` that prevents precompilation from working in the Nix build sandbox, because the precompiled code tries to access a display. Packages like this will work fine if you build with `precompile=false`, and then precompile as needed once your environment starts. Defaults to `true`.
|
||||||
|
|
||||||
|
* `extraLibs`: Extra library dependencies that will be placed on the `LD_LIBRARY_PATH` for Julia.
|
||||||
|
|
||||||
|
Should not be needed as we try to obtain library dependencies automatically using Julia's artifacts system.
|
||||||
|
|
||||||
|
* `makeWrapperArgs`: Extra arguments to pass to the `makeWrapper` call which we use to wrap the Julia binary.
|
||||||
|
* `setDefaultDepot`: Whether to automatically prepend `$HOME/.julia` to the `JULIA_DEPOT_PATH`.
|
||||||
|
|
||||||
|
This is useful because Julia expects a writable depot path as the first entry, which the one we build in Nixpkgs is not. If there's no writable depot, then Julia will show a warning and be unable to save command history logs etc. Defaults to `true`.
|
||||||
|
|
||||||
|
* `packageOverrides`: Allows you to override packages by name by passing an alternative source.
|
||||||
|
|
||||||
|
For example, you can use a custom version of the `LanguageServer` package by passing `packageOverrides = { "LanguageServer" = fetchFromGitHub {...}; }`.
|
||||||
|
|
||||||
|
* `augmentedRegistry`: Allows you to change the registry from which Julia packages are drawn.
|
||||||
|
|
||||||
|
This normally points at a special augmented version of the Julia [General packages registry](https://github.com/JuliaRegistries/General). If you want to use a bleeding-edge version to pick up the latest package updates, you can plug in a later revision than the one in Nixpkgs.
|
|
@ -14,6 +14,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||||
- This can be disabled through the `environment.stub-ld.enable` option.
|
- This can be disabled through the `environment.stub-ld.enable` option.
|
||||||
- If you use `programs.nix-ld.enable`, no changes are needed. The stub will be disabled automatically.
|
- If you use `programs.nix-ld.enable`, no changes are needed. The stub will be disabled automatically.
|
||||||
|
|
||||||
|
- Julia environments can now be built with arbitrary packages from the ecosystem using the `.withPackages` function. For example: `julia.withPackages ["Plots"]`.
|
||||||
|
|
||||||
## New Services {#sec-release-24.05-new-services}
|
## New Services {#sec-release-24.05-new-services}
|
||||||
|
|
||||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||||
|
|
Loading…
Reference in a new issue