Installing Nix on Crostini: Difference between revisions

From NixOS Wiki
imported>Moredhel
(add initial wiki page for using Nix within Crostini)
 
imported>Matthewbauer
No edit summary
Line 1: Line 1:
This Wiki page describes the process required to get up and running on ChromeOs within Crostini. This does not talk about Crouton and assumes you have already installed Nix. [https://nixos.org/nix/manual/#chap-installation Guide to Installation].
This Wiki page describes the process required to get up and running on Chrome OS within Crostini. This does not talk about Crouton and assumes you have already installed Nix. [https://nixos.org/nix/manual/#chap-installation Guide to Installation].


Once you have Nix installed, there are a few things that need to be done.
Once you have Nix installed, there are a few things that need to be done.
Line 8: Line 8:
Using [https://github.com/rycee/home-manager/ Home-manager] is pretty straight-forward, and is an easy way to manage Nix and install packages. The documentation on the Github repo is sufficient.
Using [https://github.com/rycee/home-manager/ Home-manager] is pretty straight-forward, and is an easy way to manage Nix and install packages. The documentation on the Github repo is sufficient.


== Registering Applications with ChromeOs ==
== Registering Applications with Chrome OS ==


This feature of Crostini expects .desktop files to be dropped in the appropriate places. (namely somewhere under <code>$XDG_DATA</code>).
This feature of Crostini expects .desktop files to be dropped in the appropriate places. (namely somewhere under <code>$XDG_DATA</code>).


Applications are registered with ChromeOs using a service running within the container called ''cros-garcon''. As it is a simple systemd service, we can easily extend it to look in nix-specific locations.
Applications are registered with Chrome OS using a service running within the container called ''cros-garcon''. As it is a simple systemd service, we can easily extend it to look in nix-specific locations.


First we extend the service with new environment variables
First we extend the service with new environment variables

Revision as of 15:57, 7 March 2019

This Wiki page describes the process required to get up and running on Chrome OS within Crostini. This does not talk about Crouton and assumes you have already installed Nix. Guide to Installation.

Once you have Nix installed, there are a few things that need to be done.


Home-Manager

Using Home-manager is pretty straight-forward, and is an easy way to manage Nix and install packages. The documentation on the Github repo is sufficient.

Registering Applications with Chrome OS

This feature of Crostini expects .desktop files to be dropped in the appropriate places. (namely somewhere under $XDG_DATA).

Applications are registered with Chrome OS using a service running within the container called cros-garcon. As it is a simple systemd service, we can easily extend it to look in nix-specific locations.

First we extend the service with new environment variables

mkdir -p ~/.config/systemd/user/cros-garcon.service.d/

followed by.

cat > ~/.config/systemd/user/cros-garcon.service.d/override.conf <<EOF [Service] Environment="PATH=%h/.nix-profile/bin:/usr/local/sbin:/usr/local/bin:/usr/local/games:/usr/sbin:/usr/bin:/usr/games:/sbin:/bin" Environment="XDG_DATA_DIRS=%h/.nix-profile/share:%h/.local/share:/usr/local/share:/usr/share" EOF

Then we need to restart our container. I found restarting the whole laptop to be the easiest and most effective method.

After this, we can simply start adding GUI packages to our home-manager configuration. Alternatively, if we are not using home-manager, then we can directly install packages:

nix-env -i slack

Note: These instructions were adapted from the following post on Reddit