FAQ: Difference between revisions
→What does it mean to say that NixOS is "immutable": remove blank line |
m changed link from redirect to article |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 152: | Line 152: | ||
If you are in a hurry and just want to get shit running, continue reading:<br /> | If you are in a hurry and just want to get shit running, continue reading:<br /> | ||
You can use [https://github.com/Mic92/nix-ld nix-ld] to run compiled binaries. For example, if your binary needs zlib and openssl: | |||
<syntaxhighlight lang="nix"> | |||
programs.nix-ld = { | |||
enable = true; | |||
libraries = [ pkgs.zlib pkgs.openssl ]; | |||
};</syntaxhighlight> | |||
Log out and back in to apply the environment variables it sets, and you can then directly run the binary. | |||
If you don't want to configure the list of libraries manually, a quick and dirty way to run nearly any precompiled binary is the following: | |||
<syntaxhighlight lang="nix"> | |||
programs.nix-ld = { | |||
enable = true; | |||
libraries = pkgs.steam-run.fhsenv.args.multiPkgs pkgs; | |||
};</syntaxhighlight> | |||
This uses the libraries that are used by [[Steam]] to simulate a traditional Linux FHS environment to run games in. It's a [https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/games/steam/fhsenv.nix big list] that usually contains all the libraries your binary needs to run. | |||
Another possibility is to use [https://nixos.org/patchelf.html patchelf] to set the library path and dynamic linker appropriately, since compiled binaries have hard-coded interpreter and require certain dynamic libraries. | |||
<syntaxhighlight lang="nix"> | <syntaxhighlight lang="nix"> | ||
Line 210: | Line 231: | ||
== What are channels and how do they get updated? == | == What are channels and how do they get updated? == | ||
{{main| | {{main|Channel branches}} | ||
[https://github.com/NixOS/nixpkgs Nixpkgs] is the git repository containing all packages and NixOS modules/expressions. Installing packages directly from Nixpkgs master branch is possible but a bit risky as git commits are merged into master before being heavily tested. That's where channels are useful. | [https://github.com/NixOS/nixpkgs Nixpkgs] is the git repository containing all packages and NixOS modules/expressions. Installing packages directly from Nixpkgs master branch is possible but a bit risky as git commits are merged into master before being heavily tested. That's where channels are useful. | ||
Line 254: | Line 275: | ||
== Nixpkgs branches == | == Nixpkgs branches == | ||
Branches on the nixpkgs repo have a relationship with | Branches on the nixpkgs repo have a relationship with channels, but that relationship is not 1:1. | ||
Some branches are reified as channels (e.g. the <code>nixos-XX.YY</code> branches, or <code>nix(os|pkgs)-unstable</code>), whereas others are the starting point for those branches (e.g. the <code>master</code> or <code>release-XX.YY</code> branches). For example: | Some branches are reified as channels (e.g. the <code>nixos-XX.YY</code> branches, or <code>nix(os|pkgs)-unstable</code>), whereas others are the starting point for those branches (e.g. the <code>master</code> or <code>release-XX.YY</code> branches). For example: | ||
* When a change in master needs to be backported to the current NixOS release, it is cherry-picked into the current <code>release-XX.YY</code> branch | * When a change in master needs to be backported to the current NixOS release, it is cherry-picked into the current <code>release-XX.YY</code> branch | ||
* [[ | * [[Channel branches#Channel_update_process|Hydra]] picks up this change, runs tests, and if those tests pass, updates the corresponding <code>nixos-XX.YY</code> branch, which is then reified as a channel. | ||
So in short, the <code>relase-XX.YY</code> branches have not been run through Hydra yet, whereas the <code>nixos-XX.YY</code> ones have. | So in short, the <code>relase-XX.YY</code> branches have not been run through Hydra yet, whereas the <code>nixos-XX.YY</code> ones have. | ||
Line 344: | Line 365: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
See [[Nix | See [[Nix package manager#Sandbox_builds]] for more details. | ||
== How can I install a package from unstable while remaining on the stable channel? == | == How can I install a package from unstable while remaining on the stable channel? == |