Installing Nix on Crostini: Difference between revisions
imported>Thiagokokada No edit summary |
imported>Thiagokokada General improvements |
||
Line 15: | Line 15: | ||
First we extend the service with new environment variables | First we extend the service with new environment variables | ||
< | <syntaxhighlight lang="console"> | ||
mkdir -p ~/.config/systemd/user/cros-garcon.service.d/ | $ mkdir -p ~/.config/systemd/user/cros-garcon.service.d/ | ||
</ | </syntaxhighlight> | ||
followed by. | followed by. | ||
< | <syntaxhighlight lang="console"> | ||
cat > ~/.config/systemd/user/cros-garcon.service.d/override.conf <<EOF | $ cat > ~/.config/systemd/user/cros-garcon.service.d/override.conf <<EOF | ||
[Service] | [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="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:%h/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share" | Environment="XDG_DATA_DIRS=%h/.nix-profile/share:%h/.local/share:%h/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share" | ||
</ | </syntaxhighlight> | ||
You can also set this inside your Home-Manager configuration: | |||
<syntaxhighlight lang="nix"> | |||
{ ... }: | |||
{ | |||
xdg.configFile."systemd/user/cros-garcon.service.d/override.conf".text = '' | |||
[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:%h/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share" | |||
''; | |||
} | |||
</syntaxhighlight> | |||
Then we need to restart our container. I found restarting the whole laptop to be the easiest and most effective method. | Then we need to restart our container. I found restarting the whole laptop to be the easiest and most effective method. | ||
Line 32: | Line 45: | ||
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: | 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: | ||
< | <syntaxhighlight lang="console"> | ||
nix-env -i slack | $ nix-env -i slack | ||
</ | </syntaxhighlight> | ||
Note: These instructions were adapted from the following post [https://www.reddit.com/r/Crostini/comments/9lazhn/environment_variables_for_launcher_applications/e769u4y/ on Reddit] | Note: These instructions were adapted from the following post [https://www.reddit.com/r/Crostini/comments/9lazhn/environment_variables_for_launcher_applications/e769u4y/ on Reddit] | ||
Line 42: | Line 55: | ||
Thanks to the usage of VirtGL as the GPU driver, you can easily run applications that depend on OpenGL/Vulkan by using [https://github.com/nix-community/nixGL NixGL]: | Thanks to the usage of VirtGL as the GPU driver, you can easily run applications that depend on OpenGL/Vulkan by using [https://github.com/nix-community/nixGL NixGL]: | ||
< | <syntaxhighlight lang="console"> | ||
nix run --impure github:guibou/nixGL -- program | $ nix run --impure github:guibou/nixGL -- program | ||
</code> | </syntaxhighlight> | ||
If you are setting up it in your Flakes/Home-Manager configuration, you can use: | |||
<syntaxhighlight lang="nix"> | |||
{ | |||
outputs = { nixgl, nixpkgs, home-manager, ... }: | |||
let | |||
pkgs = import nixpkgs { | |||
system = "x86_64-linux"; # or "aarch64-linux" | |||
overlays = [ nixgl.overlay ]; | |||
}; | |||
in | |||
{ | |||
homeConfigurations.penguin = home-manager.lib.homeManagerConfiguration { | |||
inherit pkgs; | |||
modules = [ | |||
({ pkgs, ...}: { | |||
home.packages = with pkgs; [ nixgl.nixGLMesa ]; | |||
}) | |||
]; | |||
}; | |||
} | |||
} | |||
</syntaxhighlight> | |||
Using <code>nixgl.nixGLMesa</code> instead of <code>nixgl.auto.nixGLDefault</code> allow usage of pure evaluation. | |||
Afterwards, you can call programs with: | |||
<syntaxhighlight lang="console"> | |||
$ nixGLMesa program | |||
</syntaxhighlight> |