Cheatsheet: Difference between revisions

DoggoBit (talk | contribs)
m propose merge
Pigeon (talk | contribs)
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">
<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-build-output -A xorg.libXtst
$ nix-build '<nixpkgs>' --no-out-link -A xorg.libXtst
/nix/store/nlpnx21yjdjx2ii7ln4kcmbm0x1vy7w9-libXtst-1.2.3
/nix/store/nlpnx21yjdjx2ii7ln4kcmbm0x1vy7w9-libXtst-1.2.3
</syntaxHighlight>
</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="shell">
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="shell">
</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">
<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>
</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">
<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>
</syntaxHighlight>


=== Evaluate packages for a different platform ===
=== Evaluate packages for a different platform ===
Line 354: Line 352:


using channels
using channels
<syntaxhighlight lang="nix">
<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="nix">
<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>