| 6 Jul 2025 |
Andrew | Are you saying Nix can't save me? | 15:18:57 |
K900 | We don't really have good Windows support in nixpkgs | 15:18:59 |
K900 | I am saying that nixpkgs, in its current state, can't save you | 15:19:09 |
Andrew | So you're telling there is a chance... | 15:19:22 |
K900 | Maybe if someone puts in a good half a year of work and gets us a working MSVC toolchain | 15:19:24 |
K900 | But you'd need to find someone with nixpkgs AND Windows expertise | 15:19:42 |
K900 | And such people are extremely rare | 15:19:49 |
K900 | If they even exist | 15:19:52 |
Andrew | Do I understand correctly, that Windows platform support is not good, but Rust makes it even worse? | 15:20:20 |
Andrew | Because more variables etc. | 15:20:25 |
K900 | No, Rust can actually make it OK-ish sometimes maybe | 15:20:37 |
Andrew | Because there are separate targets in Nixpkgs and separate ones in Rust. | 15:20:56 |
K900 | But having native dependencies is what will generally get you | 15:21:01 |
K900 | That's how literally every compiler works | 15:21:08 |
Andrew | Okay, so I'll try installing the runtime first, and hope for the best. Otherwise... don't really wanna install Rust on that machine. | 15:21:57 |
Andrew | * Okay, so I'll try installing the runtime first, and hope for the best. Otherwise... don't really wanna install Rust on that machine. Though maybe I will. | 15:22:25 |
Andrew | Thanks for the pointers. | 15:22:39 |
K900 | You don't have to install Rust on the machines you're deploying to | 15:23:39 |
K900 | You just need to install Rust (and MSVC++) on a single machine for the actual build | 15:23:49 |
K900 | So yeah I can't find any specifics on Dioxus | 15:25:24 |
K900 | But Tauri specifically says they only support MSVC ABI on Windows | 15:25:31 |
K900 | And Dioxus uses Tauri for all the OS specific bits | 15:25:50 |
K900 | So presumably they inherit that limitation | 15:25:58 |
| Derpy (they/any) changed their display name from Any (they/any) to Derpy (they/any). | 17:00:28 |
| Cathal changed their display name from CJ to Cathal. | 17:17:37 |
Andrew | I have a single machine. | 17:57:43 |
Andrew | I left this just in case:
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
rust-overlay.url = "github:oxalica/rust-overlay";
rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = {
nixpkgs,
rust-overlay,
...
} @ inputs: let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
overlays = [inputs.rust-overlay.overlays.default];
};
inherit (pkgs) lib;
pkgsWin = import nixpkgs {
inherit system;
crossSystem.config = "x86_64-w64-mingw32";
overlays = [(import rust-overlay)];
};
rust-toolchain-linux = pkgs.rust-bin.stable.latest.default.override {
extensions = ["rust-src" "rust-analyzer" "clippy"];
};
rust-toolchain-windows = pkgsWin.pkgsBuildHost.rust-bin.stable.latest.default.override {
extensions = ["rust-src" "rust-analyzer" "clippy"];
targets = ["x86_64-pc-windows-gnu"];
};
rustBuildInputs =
[
pkgs.openssl
pkgs.libiconv
pkgs.pkg-config
]
++ lib.optionals pkgs.stdenv.isLinux [
pkgs.glib
pkgs.gtk3
pkgs.libsoup_3
pkgs.webkitgtk_4_1
pkgs.xdotool
]
++ lib.optionals pkgs.stdenv.isDarwin (with pkgs.darwin.apple_sdk.frameworks; [
IOKit
Carbon
WebKit
Security
Cocoa
]);
in {
devShells.${system} = {
default = pkgs.mkShell {
buildInputs = rustBuildInputs;
nativeBuildInputs = [rust-toolchain-linux];
};
windows = pkgsWin.mkShell {
# https://discourse.nixos.org/t/cross-compile-rust-for-windows/9582/10
buildInputs = with pkgsWin; [openssl libiconv];
# At least misses the Edge WebView2 Runtime (that can be bundled).
nativeBuildInputs = [rust-toolchain-windows pkgs.wine64];
};
};
};
}
| 17:57:57 |
Andrew | Apparently you can bundle the WebView2 Runtime with the app. | 17:58:21 |
Andrew | Moreover, I succeeded and the binary actually produces (unarchives?) the WebView2 directory in the same PWD before the app can be run. | 17:59:27 |