From 20067da9e130c049ea7621d28b1af9fb20b165ee Mon Sep 17 00:00:00 2001 From: traxys Date: Thu, 27 Jul 2023 23:46:54 +0200 Subject: [PATCH] Build the server & frontend with nix --- flake.nix | 63 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/flake.nix b/flake.nix index 754fada..74ee777 100644 --- a/flake.nix +++ b/flake.nix @@ -34,16 +34,17 @@ cargo = rust; rustc = rust; }; + dioxus-cli = naersk'.buildPackage { + src = "${dioxus}/packages/cli"; + buildInputs = [pkgs.openssl]; + nativeBuildInputs = [pkgs.pkg-config]; + }; in { devShell = pkgs.mkShell { nativeBuildInputs = [ rust + dioxus-cli (naersk'.buildPackage trunk) - (naersk'.buildPackage { - src = "${dioxus}/packages/cli"; - buildInputs = [pkgs.openssl]; - nativeBuildInputs = [pkgs.pkg-config]; - }) pkgs.httpie pkgs.sea-orm-cli ]; @@ -51,6 +52,56 @@ RUST_DOC_PATH = "${rust}/share/doc/rust/html/std/index.html"; }; - defaultPackage = naersk'.buildPackage ./.; + packages = { + server = naersk'.buildPackage ./.; + frontend = let + pkg = { + stdenv, + makeRustPlatform, + wasm-bindgen-cli, + }: let + rustPlatformWasm = makeRustPlatform { + rustc = rust; + cargo = rust; + }; + in + stdenv.mkDerivation { + pname = "regalade-web"; + version = "0.1.0"; + + src = ./.; + + cargoDeps = rustPlatformWasm.importCargoLock {lockFile = ./Cargo.lock;}; + + nativeBuildInputs = [ + dioxus-cli + wasm-bindgen-cli + rustPlatformWasm.cargoSetupHook + rustPlatformWasm.cargoBuildHook + ]; + + buildPhase = '' + runHook preBuild + + export XDG_DATA_HOME=/build/data + mkdir -p $XDG_DATA_HOME + + cd app + dioxus build --release + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + cp -R dist $out + + runHook postInstall + ''; + }; + in + pkgs.callPackage pkg {}; + }; }); }