2020-07-22 11:51:11 +00:00
# Quick Start
2024-05-05 22:32:20 +00:00
< div class = "warning" >
FIXME(Lix): This chapter is quite outdated with respect to recommended practices in 2024 and needs updating.
The commands in here will work, however, and the installation section is up to date.
For more updated guidance, see the links on < https: / / lix . systems / resources / >
< / div >
2020-07-22 11:51:11 +00:00
This chapter is for impatient people who don't like reading
documentation. For more in-depth information you are kindly referred
to subsequent chapters.
2024-05-05 22:32:20 +00:00
1. Install Lix:
On Linux and macOS the easiest way to install Lix is to run the following shell command
(as a user other than root):
2020-07-22 11:51:11 +00:00
2020-07-31 13:43:25 +00:00
```console
2024-05-05 22:32:20 +00:00
$ curl -sSf -L https://install.lix.systems/lix | sh -s -- install
2020-07-31 13:43:25 +00:00
```
2020-07-22 11:51:11 +00:00
2024-05-14 00:05:08 +00:00
For systems that **already have a Nix implementation installed** , such as NixOS systems, read our [install page ](https://lix.systems/install )
2024-05-05 22:32:20 +00:00
2023-01-16 19:35:12 +00:00
The install script will use `sudo` , so make sure you have sufficient rights.
For other installation methods, see [here ](installation/installation.md ).
2020-07-22 11:51:11 +00:00
1. See what installable packages are currently available in the
channel:
2020-07-31 13:43:25 +00:00
```console
2021-02-13 14:18:08 +00:00
$ nix-env --query --available --attr-path
2021-11-17 15:30:39 +00:00
nixpkgs.docbook_xml_dtd_43 docbook-xml-4.3
nixpkgs.docbook_xml_dtd_45 docbook-xml-4.5
nixpkgs.firefox firefox-33.0.2
nixpkgs.hello hello-2.9
nixpkgs.libxslt libxslt-1.1.28
2020-07-31 13:43:25 +00:00
…
```
2020-07-22 11:51:11 +00:00
1. Install some packages from the channel:
2020-07-31 13:43:25 +00:00
```console
2021-02-13 14:18:08 +00:00
$ nix-env --install --attr nixpkgs.hello
2020-07-31 13:43:25 +00:00
```
2020-07-22 11:51:11 +00:00
This should download pre-built packages; it should not build them
locally (if it does, something went wrong).
1. Test that they work:
2020-07-31 13:43:25 +00:00
```console
$ which hello
/home/eelco/.nix-profile/bin/hello
$ hello
Hello, world!
```
2020-07-22 11:51:11 +00:00
1. Uninstall a package:
2020-07-31 13:43:25 +00:00
```console
2021-02-13 14:18:08 +00:00
$ nix-env --uninstall hello
2020-07-31 13:43:25 +00:00
```
2020-07-22 11:51:11 +00:00
1. You can also test a package without installing it:
2020-07-31 13:43:25 +00:00
```console
2023-02-20 01:00:02 +00:00
$ nix-shell --packages hello
2020-07-31 13:43:25 +00:00
```
2020-07-22 11:51:11 +00:00
This builds or downloads GNU Hello and its dependencies, then drops
you into a Bash shell where the `hello` command is present, all
without affecting your normal environment:
2020-07-31 13:43:25 +00:00
```console
[nix-shell:~]$ hello
Hello, world!
2020-07-22 11:51:11 +00:00
2020-07-31 13:43:25 +00:00
[nix-shell:~]$ exit
2020-07-22 11:51:11 +00:00
2020-07-31 13:43:25 +00:00
$ hello
hello: command not found
```
2020-07-22 11:51:11 +00:00
1. To keep up-to-date with the channel, do:
2020-07-31 13:43:25 +00:00
```console
$ nix-channel --update nixpkgs
2021-02-13 14:18:08 +00:00
$ nix-env --upgrade '*'
2020-07-31 13:43:25 +00:00
```
2020-07-22 11:51:11 +00:00
The latter command will upgrade each installed package for which
there is a “newer” version (as determined by comparing the version
numbers).
1. If you're unhappy with the result of a `nix-env` action (e.g., an
upgraded package turned out not to work properly), you can go back:
2020-07-31 13:43:25 +00:00
```console
$ nix-env --rollback
```
2020-07-22 11:51:11 +00:00
2024-05-05 22:32:20 +00:00
1. You should periodically run the Lix garbage collector to get rid of
2020-07-22 11:51:11 +00:00
unused packages, since uninstalls or upgrades don't actually delete
them:
2020-07-31 13:43:25 +00:00
```console
2021-02-13 14:18:08 +00:00
$ nix-collect-garbage --delete-old
2020-07-31 13:43:25 +00:00
```
2024-05-05 22:32:20 +00:00
N.B. on NixOS there is an option [`nix.gc.automatic` ](https://nixos.org/manual/nixos/stable/options#opt-nix.gc.automatic ) to enable a systemd timer to automate this task.