| 7 Jan 2026 |
Epic Eric | Redacted or Malformed Event | 10:33:54 |
Epic Eric | Maybe via pkgs.rustup? cargo-miri seems to be part of it | 10:50:58 |
accelbread | didn't want to use rustup, though I got it working with some messy buildRustPackage | 10:51:35 |
Epic Eric | It might be worth making a Nix package for it | 10:52:33 |
accelbread | That would be useful, yeah
Though idk if what I ended up with would be usable in nixpkgs: https://codeberg.org/accelbread/basis-rs/commit/7a9c1b4fb9a269a2c0f819d892c932e93dd97250
install phase was broken with sourceRoot set since it expected to be in same dir as target though target got created at root of unpacked source, not sourceRoot. And cargoRoot didnt work; got some weird errors about incorrect hashes when using it | 10:55:53 |
accelbread | hmm actually might be simpler to use rustc.src's vendor dir if that has everything miri/cargo-miri needs... | 11:06:52 |
emily | doesn't Miri require nightly? | 14:46:48 |
emily | have you considered rust-overlay? | 14:47:26 |
emily | you can get the Nightly binaries packaged in Nix that way | 14:47:40 |
accelbread | yeah, those are binary builds though. And I don't want another flake dependency. I built it with nix rustc with RUSTC_BOOTSTRAP=1, to enable unstable features | 22:09:12 |
| 8 Jan 2026 |
Epic Eric | Does anybody by some chance have a dev environment for working with godot-rust? | 00:23:31 |
Epic Eric | Far from the best but at least I managed to do what I wanted to do with this dirty shell
let
sources = import ./npins;
pkgs = import sources.nixpkgs {
overlays = [ (import sources.rust-overlay) ];
};
pkgs-cross-mingw = import pkgs.path {
crossSystem = {
config = "x86_64-w64-mingw32";
};
};
mingw_w64_cc = pkgs-cross-mingw.stdenv.cc;
mingw_w64 = pkgs-cross-mingw.windows.mingw_w64;
mingw_w64_pthreads_w_static = pkgs-cross-mingw.windows.pthreads.overrideAttrs (oldAttrs: {
configureFlags = (oldAttrs.configureFlags or [ ]) ++ [
"--enable-static"
];
});
in
pkgs.mkShell {
packages = [
pkgs.bacon
pkgs.godot_4_5
pkgs.godot_4_5-export-templates-bin
mingw_w64_cc
(pkgs.rust-bin.stable.latest.default.override {
targets = [ "x86_64-pc-windows-gnu" ];
})
pkgs.wineWowPackages.stable
];
WINDOWS_RUSTFLAGS = (
map (a: ''-L ${a}/lib'') [
mingw_w64
mingw_w64_pthreads_w_static
]
);
}
| 02:00:01 |
| Diego Reis joined the room. | 02:58:44 |
Epic Eric | For the record, this is my (somewhat) cleaner build derivation (still need to add Linux building and separate the build phase into two)
let
sources = import ./npins;
pkgs = import sources.nixpkgs {
overlays = [ (import sources.rust-overlay) ];
};
inherit (pkgs) lib stdenv;
pkgs-cross-mingw = import pkgs.path {
crossSystem = {
config = "x86_64-w64-mingw32";
};
};
mingw_w64_cc = pkgs-cross-mingw.stdenv.cc;
mingw_w64 = pkgs-cross-mingw.windows.mingw_w64;
mingw_w64_pthreads_w_static = pkgs-cross-mingw.windows.pthreads.overrideAttrs (oldAttrs: {
configureFlags = (oldAttrs.configureFlags or [ ]) ++ [
"--enable-static"
];
});
rust = pkgs.rust-bin.stable.latest.default;
rustCc = pkgs.rust-bin.stable.latest.default.override {
targets = [ "x86_64-pc-windows-gnu" ];
};
src = lib.fileset.toSource {
root = ./.;
fileset = lib.fileset.unions [
./godot
./rust
];
};
commonArgs = {
version = "0";
inherit src;
cargoDeps = pkgs.rustPlatform.fetchCargoVendor {
inherit src;
sourceRoot = "${src.name}/rust";
hash = "sha256-kRZdndknulrZFeb7EDwNrpctjaT/UreFwZREOxv7e08=";
};
cargoRoot = "rust";
postPatch = ''
export HOME=$(mktemp -d)
mkdir -p ~/.local/share/godot
ln -s ${pkgs.godot_4_5-export-templates-bin}/share/godot/export_templates ~/.local/share/godot/export_templates
'';
};
commonArgsWin = commonArgs // {
RUSTFLAGS = (
map (a: ''-L ${a}/lib'') [
mingw_w64
mingw_w64_pthreads_w_static
]
);
buildInputs = [
pkgs.rustPlatform.cargoSetupHook
mingw_w64_cc
rustCc
];
};
in
{
windows-release = stdenv.mkDerivation (
commonArgsWin
// {
pname = "crane-game-windows-release";
buildPhase = ''
${rustCc}/bin/cargo build --target x86_64-pc-windows-gnu --release --manifest-path ./rust/Cargo.toml
mkdir ./export_windows
${pkgs.godot_4_5}/bin/godot --headless --path ./godot --export-release "Windows Desktop" ../export_windows/CraneGame_win.exe
'';
installPhase = ''
mkdir $out
cp ./export_windows/* $out
'';
}
);
}
| 12:43:23 |
Pol | I always forgot about the Nix Rust room! | 13:08:59 |
Pol | I posted this (https://gist.github.com/drupol/41bef4037d1d4c116f5ffa6df6493e28) in the main Nix room, but I guess I should have posted it here. | 13:09:20 |
Pol | I'm trying to understand why overriding oldAttr.cargoDeps does not work. Can you help ? | 13:09:45 |
| wilhelmines joined the room. | 16:55:35 |
| pltrz set a profile picture. | 23:50:14 |
| 9 Jan 2026 |
| pltrz changed their profile picture. | 00:00:45 |
Theo Paris | I am trying to test the compilation of the Redox OS libc package (https://gist.github.com/theoparis/bbee869f1647e5c14a614d73ba9e6fd0) and I ran into an infinite recursion error that seems to be coming from inside of buildRustPackage. I guess no one has tried packaging a libc with it before... Is this something that I'm doing wrong or would it need to be fixed inside of the nixpkgs rust handling code? | 07:07:48 |
Theo Paris | * I am trying to test the cross compilation of the Redox OS libc package (https://gist.github.com/theoparis/bbee869f1647e5c14a614d73ba9e6fd0) and I ran into an infinite recursion error that seems to be coming from inside of buildRustPackage. I guess no one has tried packaging a libc with it before... Is this something that I'm doing wrong or would it need to be fixed inside of the nixpkgs rust handling code? | 07:07:56 |
Theo Paris | * I am trying to test the cross compilation of the Redox OS libc package (https://gist.github.com/theoparis/bbee869f1647e5c14a614d73ba9e6fd0) and I ran into an infinite recursion error that seems to be coming from inside of buildRustPackage. I guess no one has tried packaging a libc with it before... Is this something that I'm doing wrong or would it need to be fixed inside of the nixpkgs rust handling code somehow? | 07:08:21 |
| eveeifyeve joined the room. | 08:16:38 |
magnetophon | I'm trying to package https://github.com/zbanks/radiance
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
# autoPatchelfHook,
libxkbcommon,
mpv-unwrapped,
vulkan-loader,
stdenv,
darwin,
alsa-lib,
wayland,
xorg,
yt-dlp,
}:
rustPlatform.buildRustPackage rec {
pname = "radiance";
version = "0.7.0";
src = fetchFromGitHub {
owner = "zbanks";
repo = "radiance";
rev = version;
hash = "sha256-itBBUKwJAWfLPXZaJ65UbabDoZUUZtZm8bGAU0joVsQ=";
};
cargoLock.lockFile = ./Cargo.lock;
postPatch = ''
ln -s ${./Cargo.lock} Cargo.lock
'';
nativeBuildInputs = [
pkg-config
# autoPatchelfHook
];
buildInputs =
[
mpv-unwrapped
vulkan-loader
libxkbcommon
]
++ lib.optionals stdenv.isLinux [
alsa-lib
wayland
# X11 / XCB stack (required by winit + xkbcommon-dl)
xorg.libX11
xorg.libXcursor
xorg.libXi
xorg.libXrandr
xorg.libXinerama
xorg.libXpresent
xorg.libXfixes
xorg.libXext
# xorg.libXss
xorg.libxcb
# xorg.libX11-xcb
]
++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.AppKit
darwin.apple_sdk.frameworks.CoreGraphics
darwin.apple_sdk.frameworks.CoreServices
darwin.apple_sdk.frameworks.Foundation
darwin.apple_sdk.frameworks.Metal
darwin.apple_sdk.frameworks.QuartzCore
];
propagatedUserEnvPkgs = [
yt-dlp
];
# Floating-point exact-equality bugs upstream
doCheck = false;
meta = {
description = "Video art software for VJs";
homepage = "https://github.com/zbanks/radiance";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ magnetophon ];
mainProgram = "radiance";
};
}
When I run it, I get:
❯ radiance
thread 'main' (1930947) panicked at /build/cargo-vendor-dir/xkbcommon-dl-0.4.2/src/x11.rs:59:28:
Library libxkbcommon-x11.so could not be loaded.
stack backtrace:
0: __rustc::rust_begin_unwind
1: core::panicking::panic_fmt
2: core::option::expect_failed
3: xkbcommon_dl::x11::xkbcommon_x11_handle
4: std::sync::poison::once::Once::call_once_force::{{closure}}
5: std::sys::sync::once::futex::Once::call
6: std::sync::once_lock::OnceLock<T>::initialize
7: winit::platform_impl::linux::common::xkb::Context::from_x11_xkb
8: winit::platform_impl::linux::EventLoop<T>::new
9: radiance::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Any ideas on how to fix that?
| 15:36:38 |
Epic Eric | I think you need to put libxkbcommon as a nativeBuildInput so it's available as a runtime dep | 15:38:49 |
K900 | That's not what nativeBuildInputs do | 15:39:14 |
K900 | And you probably need to add it to rpath | 15:39:18 |
Epic Eric | Oops | 15:39:22 |
magnetophon | Thanks. Like this?
preFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
patchelf \
--set-rpath "${lib.makeLibraryPath buildInputs}:$out/lib" \
$out/bin/radiance
'';
| 15:43:40 |