Skip to content

Commit

Permalink
Docs/more nixos instructions (bevyengine#2775)
Browse files Browse the repository at this point in the history
# Objective

Expand the documentation for NixOS setups (as discussed in Discord)

## Solution

Added more info to `linux_dependencies.md` about NixOS. This is based off my own experience (as documented in [this blog post](https://blog.thomasheartman.com/posts/bevy-getting-started-on-nixos)), so I can't confirm that it'll work for everyone. However, if there are further tweaks necessary, then I think that this should nevertheless work as a good starting point and should give future users an idea of what they may need to change or update.

Feedback and tweaks are very welcome 😄
  • Loading branch information
thomasheartman committed Sep 6, 2021
1 parent 18c08dd commit e317058
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions docs/linux_dependencies.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,49 @@ And enter it by just running `nix-shell`.

You should be able compile bevy programms using `cargo` within this nix-shell.

### Fast compilation

According to the Bevy getting started guide (for v0.5), you can enable fast compilation by add a Cargo config file and by adding `lld` and `clang`. As long as you add `clang` and `lld` to your environment, it should mostly work, but you'll still need to modify the Cargo config file so that it doesn't point to `/usr/bin/clang` anymore.

Working off the above files, let's make the necessary changes.

For `.cargo/config.toml`, change the path to the linker from `/usr/bin/clang` to `clang`:

``` diff
[target.x86_64-unknown-linux-gnu]
- linker = "/usr/bin/clang"
+ linker = "clang"
rustflags = ["-Clink-arg=-fuse-ld=lld", "-Zshare-generics=y"]
```

In `shell.nix`, add `lld` and `clang`:

``` diff
buildInputs = [
cargo
pkgconfig udev alsaLib lutris
x11 xorg.libXcursor xorg.libXrandr xorg.libXi
vulkan-tools vulkan-headers vulkan-loader vulkan-validation-layers
+ clang lld
];
```

### Building apps and using the GPU

If you run into issues with building basic apps or activating the GPU ('thread 'main' panicked at 'Unable to find a GPU!'), then you may need to update your environment's `LD_LIBRARY_PATH`. To solve issues relating to missing `libudev.so.1` files, `alsa` drivers, and being unable to find a GPU, try updating the environment variable in your `shell.nix` by creating a `shellHook`:

``` diff
{ pkgs ? import <nixpkgs> { } }:
with pkgs;
mkShell {
+ shellHook = ''export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.lib.makeLibraryPath [
+ pkgs.alsaLib
+ pkgs.udev
+ pkgs.vulkan-loader
+ ]}"'';
buildInputs = [
```

## Opensuse Tumbleweed

```bash
Expand Down

0 comments on commit e317058

Please sign in to comment.