!FBuJyWXTGcGtHTPphC:nixos.org

Nix Rust

699 Members
Rust156 Servers

You have reached the beginning of time (for this room).


SenderMessageTime
27 Apr 2025
@adam_neverwas:matrix.orgAdam Neverwas thnak :V 17:53:45
@adam_neverwas:matrix.orgAdam Neverwas So the problem of the rust-analyzer running in vscodium solvable in flake? 18:08:30
@k900:0upti.meK900Yes18:08:43
@k900:0upti.meK900Please try it with the example bevy shell18:08:51
@k900:0upti.meK900And make sure you're running vscode from the shell18:08:57
@k900:0upti.meK900Or using the direnv/nix-shell plugins to load the environment into your vscode18:09:10
@adam_neverwas:matrix.orgAdam Neverwas This is the answer for every of my questions, thanks 18:11:06
@kranzes:matrix.orgIlan Joselevich (Kranzes)
In reply to @adam_neverwas:matrix.org

{
description = "Rust development environment with latest Bevy";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs = {
nixpkgs.follows = "nixpkgs";
flake-utils.follows = "flake-utils";
};
};
};
outputs = { self, nixpkgs, flake-utils, rust-overlay }:
flake-utils.lib.eachDefaultSystem (system:
let
overlays = [ (import rust-overlay) ];
pkgs = import nixpkgs {
inherit system overlays;
};

    rustToolchain = pkgs.rust-bin.stable.latest.default.override {
      extensions = [ "rust-src" "rust-analyzer" "clippy" "rustfmt" ];
      targets = [ "wasm32-unknown-unknown" ];
    };

    graphicsLibs = with pkgs; [
      vulkan-loader
      xorg.libX11
      xorg.libXcursor
      xorg.libXrandr
      xorg.libXi
      libxkbcommon
      wayland
      libGL
      libGLU
      xorg.libXext
    ];
    audioLibs = with pkgs; [
      alsa-lib
      libjack2
      libpulseaudio
    ];
    systemLibs = with pkgs; [
      udev
      systemd
      openssl
      pkg-config
    ];
    buildLibs = with pkgs; [
      cmake
      clang
      gcc
      binutils
      lld
    ];
    devTools = with pkgs; [
      rustToolchain
      rustup
      cargo-watch
      cargo-expand
      cargo-audit
      cargo-outdated
      cargo-geiger
      wasm-pack
    ];

    allLibs = graphicsLibs ++ audioLibs ++ systemLibs;

    wrapperScript = pkgs.writeScriptBin "create-wrappers" (builtins.readFile ./wrapper/generate_wrappers.sh);

    devEnv = pkgs.mkShell {
      buildInputs = devTools ++ buildLibs ++ allLibs ++ [ wrapperScript ];
      shellHook = ''
        echo "🦀 Rust + Bevy dev environment loading..."

         # Find libudev.pc file in the Nix store
          LIBUDEV_PC=$(find /nix/store -path "*/lib/pkgconfig/libudev.pc" | head -n 1)
          
          if [ ! -z "$LIBUDEV_PC" ]; then
            echo "✅ Found libudev.pc at: $LIBUDEV_PC"
            export PKG_CONFIG_PATH=$(dirname "$LIBUDEV_PC"):$PKG_CONFIG_PATH
          else
            echo "❌ Could not find libudev.pc in Nix store"
          fi

        export LD_LIBRARY_PATH=${pkgs.lib.makeLibraryPath allLibs}:$LD_LIBRARY_PATH
        export PKG_CONFIG_PATH=$(IFS=:; echo ${pkgs.lib.concatStringsSep ":" (builtins.map (pkg: "${pkg}/lib/pkgconfig") allLibs)}):$PKG_CONFIG_PATH
        
        # Ensure Rust can find the standard library
        export RUST_SRC_PATH=${rustToolchain}/lib/rustlib/src/rust/library
        
        export RUSTFLAGS="-C link-arg=-fuse-ld=lld"
        export BEVY_ASSET_ROOT="$(pwd)/assets"
        export CC=gcc
        export CXX=g++
        create-wrappers

        PATH="$(echo "$PATH" | sed -e "s#:$HOME/.local/bin##g" -e "s#$HOME/.local/bin:##g" -e "s#$HOME/.local/bin##g")"

        # LAST ROW
        export PATH="$HOME/.local/bin:$PATH"
        
        echo "✅ Rust + Bevy development environment ready!"
      '';
    };
  in
  {
    devShells.default = devEnv;
  }
);

}

I wanna frame this
18:43:12
@kranzes:matrix.orgIlan Joselevich (Kranzes)Piece of abstract art18:43:25
@kranzes:matrix.orgIlan Joselevich (Kranzes)Hahaha18:43:48
@adam_neverwas:matrix.orgAdam Neverwas theres nothing wrong with this 18:43:53
@kranzes:matrix.orgIlan Joselevich (Kranzes) The more i look into it the crazier it is 18:44:07
@adam_neverwas:matrix.orgAdam Neverwas u sure? 18:44:16
@kranzes:matrix.orgIlan Joselevich (Kranzes)Yes18:44:45
@kranzes:matrix.orgIlan Joselevich (Kranzes)Nothing about it makes sense18:45:22
@adam_neverwas:matrix.orgAdam Neverwas It's a flake 18:45:40
@kranzes:matrix.orgIlan Joselevich (Kranzes) Pure vibe coded hallucination 18:45:46
@adam_neverwas:matrix.orgAdam Neverwas if you say so 18:50:50
@vaw:nlih.devaw That find statement is wild. 18:51:21
@adam_neverwas:matrix.orgAdam Neverwas It can do wild stuff, i tried to find the libudev.pc and place it into the path, this whole nix and flake stuff is new to me, i have to change a bit my thinking 18:54:27
@adam_neverwas:matrix.orgAdam Neverwas like whats happpening 18:54:49
@adam_neverwas:matrix.orgAdam Neverwas but i have a lot to do 18:56:10
@k900:0upti.meK900Literally none of that is necessary18:57:02
@k900:0upti.meK900Most of it doesn't make any sense18:57:27

Show newer messages


Back to Room ListRoom Version: 6