# Nix The *Nix package manager* is a package manager which allows for user independent packages and a whole lot more (although it's not necessarily minimal). ## Setup To set `nix` up install its package and activate its service: ``` # apk add nix # rc-update add nix-daemon default # rc-service nix-daemon start ``` > (The `nix` package is only available in the `edge` and `apk-ample` repositories) Don't forget to add your user to the nix group: ``` # adduser nix ``` ### Channels For `nix` to be able to install packages it is necessary to add a few channels: ``` $ nix-channel --add https://nixos.org/channels/nixos-23.11 nixpkgs $ nix-channel --add https://nixos.org/channels/nixpkgs-unstable nixpkgs-unstable $ nix-channel --add https://github.com/nix-community/nixGL/archive/main.tar.gz nixgl && nix-channel --update $ nix-channel --update ``` ## Usage Nix can be used to manage your `$HOME` with `home-manager`. First install `home-manager` through: ``` $ nix-env -iA nixpkgs.home-manager ``` Now that Nix is up and running utilize the `home.nix` that comes with the [config files](https://docs.bijl.us/alpine-desktop-setup/post-install/config-files/) to set up our home for us. But before initialising `nix` make sure that you set the correct `` in `home.nix` which is located in `~/.config/home-manager`. Then after changing that simply run this command: ``` $ home-manager switch ``` And thanks to `home-manager` we can easily set up and manage an entire graphical enviroment with all the necessary packages in one go. You are now also able to install packages as a user without root from `nixpkgs`: ``` $ nix-env -iA nixpkgs. ``` But for reproducability it's better to use `home-manager` by declaring them in a `.nix` file and importing that within `home.nix`. You can also test a package before installing it with `nix-shell -p ` ### NixGL `nixGL` is necessary to be able to run graphical programs and sessions which are installed through `nix`. It should have been installed with `home-manager`. Some applications might need vulkan in which case the program has to be prefixed with: ``` $ nixVulkanIntel ```