Cheatsheet: Difference between revisions
m propose merge |
m →Using override with nix-build: Highlight shell commands containing nix expression as "console" instead of "nix": we do that in a few other places, so now everything's consistent + otherwise there are too many colors on one line. If you think this should be reverted, you will also need to turn on "nix" highlight in a few other places for consistency |
||
| (3 intermediate revisions by the same user not shown) | |||
| Line 7: | Line 7: | ||
=== Get the store path for a package === | === Get the store path for a package === | ||
< | <syntaxhighlight lang="console"> | ||
$ nix repl | $ nix repl | ||
nix-repl> :l <nixpkgs> | nix-repl> :l <nixpkgs> | ||
| Line 16: | Line 16: | ||
nix-repl> :lf ./configuration.nix # as flakes way for a local file | nix-repl> :lf ./configuration.nix # as flakes way for a local file | ||
# load nixos configuration from a nix file | $ # load nixos configuration from a nix file | ||
$ nix repl --file '<nixpkgs/nixos>' -I nixos-config=./configuration.nix | $ nix repl --file '<nixpkgs/nixos>' -I nixos-config=./configuration.nix | ||
$ nix-build '<nixpkgs>' --no- | $ nix-build '<nixpkgs>' --no-out-link -A xorg.libXtst | ||
/nix/store/nlpnx21yjdjx2ii7ln4kcmbm0x1vy7w9-libXtst-1.2.3 | /nix/store/nlpnx21yjdjx2ii7ln4kcmbm0x1vy7w9-libXtst-1.2.3 | ||
</ | </syntaxhighlight> | ||
==== Get store path for a package from the Flake input ==== | ==== Get store path for a package from the Flake input ==== | ||
When packages are managed using [[Flakes]], store paths to them can be retrieved using <code>nix eval --inputs-from</code>, like this:<syntaxhighlight lang=" | When packages are managed using [[Flakes]], store paths to them can be retrieved using <code>nix eval --inputs-from</code>, like this:<syntaxhighlight lang="console"> | ||
$ nix eval --inputs-from "$flake_path" --raw "$input#$package" | $ nix eval --inputs-from "$flake_path" --raw "$input#$package" | ||
</syntaxhighlight>For instance, when packages are managed using [[Home Manager]] using standard configuration, store path to the [[Git]] package can be retrieved using this command:<syntaxhighlight lang=" | </syntaxhighlight>For instance, when packages are managed using [[Home Manager]] using standard configuration, store path to the [[Git]] package can be retrieved using this command:<syntaxhighlight lang="console"> | ||
$ nix eval --inputs-from ~/.config/home-manager --raw nixpkgs#git | $ nix eval --inputs-from ~/.config/home-manager --raw nixpkgs#git | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 104: | Line 104: | ||
[ "/run/current-system/sw/bin/zsh" ... ] | [ "/run/current-system/sw/bin/zsh" ... ] | ||
# Equivalently, if starting from an existing REPL: | $ # Equivalently, if starting from an existing REPL: | ||
nix-repl> :l <nixpkgs/nixos> | nix-repl> :l <nixpkgs/nixos> | ||
Added 6 variables. | Added 6 variables. | ||
| Line 220: | Line 220: | ||
To initiate the build environment run <code>nix-shell</code> in the project root directory | To initiate the build environment run <code>nix-shell</code> in the project root directory | ||
< | <syntaxhighlight lang="console"> | ||
# this will download add development dependencies and set up the environment so build tools will find them. | $ # this will download add development dependencies and set up the environment so build tools will find them. | ||
$ nix-shell | $ nix-shell | ||
</ | </syntaxhighlight> | ||
The following is specific to bcc or cmake in general: | The following is specific to bcc or cmake in general: | ||
(so you need to adapt the workflow depending on the project, you hack on) | (so you need to adapt the workflow depending on the project, you hack on) | ||
< | <syntaxhighlight lang="console">$ mkdir build | ||
$ mkdir build | |||
$ cd build | $ cd build | ||
# cmakeFlags is also defined in the bcc package. autotools based projects might defined $configureFlags | $ # cmakeFlags is also defined in the bcc package. autotools based projects might defined $configureFlags | ||
$ eval cmake $cmakeFlags .. | $ eval cmake $cmakeFlags .. | ||
$ make | $ make</syntaxhighlight> | ||
</ | |||
=== Evaluate packages for a different platform === | === Evaluate packages for a different platform === | ||
| Line 354: | Line 352: | ||
using channels | using channels | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="console"> | ||
nix-build -E 'with (import <nixpkgs>{}); polybar.override { i3Support = true; }' | $ nix-build -E 'with (import <nixpkgs>{}); polybar.override { i3Support = true; }' | ||
</syntaxhighlight> | </syntaxhighlight> | ||
using a local repo | using a local repo | ||
<syntaxhighlight lang=" | <syntaxhighlight lang="console"> | ||
nix-build -E 'with (import ./default.nix{}); polybar.override { i3Support = true; }' | $ nix-build -E 'with (import ./default.nix{}); polybar.override { i3Support = true; }' | ||
</syntaxhighlight> | </syntaxhighlight> | ||