Dioxus: Difference between revisions

m Fix page hierarchy.
Neutral (talk | contribs)
Added example flake.nix
 
(One intermediate revision by the same user not shown)
Line 56: Line 56:


==== Choosing ''wasm-bindgen-cli'' version ====
==== Choosing ''wasm-bindgen-cli'' version ====
You will also want to ensure the version of ''wasm-bindgen-cli'' matches whatever is in your lock file.<syntaxhighlight lang="nix">
You will also want to ensure the version of ''wasm-bindgen-cli'' matches whatever is in your lock file.<syntaxhighlight lang="nix">cargoLock = builtins.fromTOML (builtins.readFile ./Cargo.lock);
cargoLock = builtins.fromTOML (builtins.readFile ./Cargo.lock);


wasmBindgen = pkgs.lib.findFirst
wasmBindgen = pkgs.lib.findFirst
Line 64: Line 63:
   cargoLock.package;
   cargoLock.package;


wasm-bindgen-cli = pkgs.wasm-bindgen-cli.override {
wasm-bindgen-cli = pkgs.buildWasmBindgenCli rec {
  version = wasmBindgen.version;
  src = pkgs.fetchCrate {
   hash = pkgs.lib.fakeHash;
    pname = "wasm-bindgen-cli";
   cargoHash = pkgs.lib.fakeHash;
    version = wasmBindgen.version;
};
    hash = pkgs.lib.fakeHash;
  };
 
   cargoDeps = pkgs.rustPlatform.fetchCargoVendor {
    inherit src;
    inherit (src) pname version;
    hash = pkgs.lib.fakeHash;
   };
};</syntaxhighlight>'''Example flake.nix'''<syntaxhighlight lang="nix">
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
 
    # For installing non-standard rustc versions
    rust-overlay.url = "github:oxalica/rust-overlay";
    rust-overlay.inputs.nixpkgs.follows = "nixpkgs";
  };
 
  outputs = {
    self,
    rust-overlay,
    nixpkgs,
  }:
  {
    devShells.x86_64-linux.default = let
      pkgs = import nixpkgs {
        system = "x86_64-linux";
        overlays = [
          rust-overlay.overlays.default
        ];
      };
 
      rustShellToolchain = (pkgs.rust-bin.selectLatestNightlyWith (t: t.default)).override {
        extensions = ["rust-src" "rust-analyzer"];
        targets = [ "wasm32-unknown-unknown" ];
      };
 
      dioxus-cli = pkgs.dioxus-cli.overrideAttrs (_: {
        postPatch = ''
          rm Cargo.lock
          cp ${./Dioxus.lock} Cargo.lock
        '';
 
        cargoDeps = pkgs.rustPlatform.importCargoLock {
          lockFile = ./Dioxus.lock;
        };
      });
 
      cargoLock = builtins.fromTOML (builtins.readFile ./Cargo.lock);
 
      wasmBindgen = pkgs.lib.findFirst
        (pkg: pkg.name == "wasm-bindgen")
        (throw "Could not find wasm-bindgen package")
        cargoLock.package;
 
      wasm-bindgen-cli = pkgs.buildWasmBindgenCli rec {
        src = pkgs.fetchCrate {
          pname = "wasm-bindgen-cli";
          version = wasmBindgen.version;
          hash = "sha256-txpbTzlrPSEktyT9kSpw4RXQoiSZHm9t3VxeRn//9JI=";
        };
 
        cargoDeps = pkgs.rustPlatform.fetchCargoVendor {
          inherit src;
          inherit (src) pname version;
          hash = "sha256-J+F9SqTpH3T0MbvlNKVyKnMachgn8UXeoTF0Pk3Xtnc=";
        };
      };
    in
      pkgs.mkShell {
        name = "dioxus";
        packages = [ rustShellToolchain dioxus-cli wasm-bindgen-cli ];
    };
  };
}
</syntaxhighlight>
</syntaxhighlight>
[[Category:Rust]]
[[Category:Rust]]