{ module = { buildMizeForSystem, mizeBuildConfig, mkMizeRustModule, hostSystem, pkgsCross, mkMizeRustShell, pkgs, pkgsNative, buildNpmPackage, mkSelString, mizeBuildConfigStr, fenix, ... }: let selector_string = mkSelString { modName = "mme"; }; hash = builtins.substring 0 32 (builtins.hashString "sha256" selector_string); url = "file:///home/me/work/mme/dist/mize.js"; html = '' hello world............... ''; in mkMizeRustModule ({ modName = "mme"; src = ./.; cargoExtraArgs = "--no-default-features --lib"; ## add the index.html postInstall = '' echo -n '${html}' > $out/index.html ''; } // (if hostSystem.name == "wasm32-none-unknown" then { mizeBuildPhase = '' cd $build_dir RUSTFLAGS="-C link-args=--import-memory" RUST_LOG=off wasm-pack build --target no-modules --dev --out-dir $out -- --features wasm-target --no-default-features echo -n 'export function get_wasm_bindgen() { return wasm_bindgen }' >> $out/mize_module_mme.js echo -n '${html}' > $out/index.html ''; mizeInstallPhase = ""; } else {}) // (if hostSystem.kernel.name == "linux" then builtins.trace "adding linux stuff" { nativeBuildInputs = with pkgsCross.buildPackages; [ pkg-config ]; buildInputs = with pkgsNative; [ webkitgtk_4_1 ]; } else {}) # add the devShell // { devShell = pkgs.mkShell { nativeBuildInputs = with pkgs; [ #emscripten wasm-pack pkg-config webkitgtk_4_1 libsForQt5.full cmake nasm pkg-config nodejs (fenix.packages.${system}.combine [ fenix.packages.${system}.targets.wasm32-unknown-unknown.latest.toolchain fenix.packages.${system}.latest.toolchain fenix.packages.${system}.latest.rust-src ]) ]; MIZE_BUILD_CONFIG = mizeBuildConfigStr; buildInputs = with pkgs; [ openssl #pango #libsoup_3 webkitgtk_4_1 # gobject-introspection gtk4 atkmm ]; shellHook = '' echo hiiiiiiiiiiiiii export LD_LIBRARY_PATH=${pkgs.webkitgtk_4_1}/lib:${pkgs.libsoup_3}/lib:${pkgs.glib.out}/lib:${pkgs.gtk3}/lib:${pkgs.cairo}/lib:${pkgs.gdk-pixbuf}/lib:${pkgs.libxkbcommon}/lib:${pkgs.fontconfig.lib}/lib:${pkgs.libsForQt5.full}/lib:${pkgs.stdenv.cc.cc.lib}/lib:${pkgs.libsForQt5.qt5.qtwebengine}/lib export CPLUS_INCLUDE_PATH=${pkgs.libsForQt5.full}/include:${pkgs.libsForQt5.qt5.qtwebengine}/include export MME_QT_LIB=${pkgs.libsForQt5.full}/lib # i found that this is the env war to set where QT looks for platform plugins # at: https://forums.fedoraforum.org/showthread.php?326508-How-to-set-QT_QPA_PLATFORM_PLUGIN_PATH export QT_QPA_PLATFORM_PLUGIN_PATH=${pkgs.libsForQt5.full}/lib/qt-5.15.14/plugins/platforms/ alias run="${./.}/run.sh" ''; }; } ); lib = { mkMizeModule, buildNpmPackage, pkgsCross, pkgsNative, ... }: rec { mkMmePresenter = attrs: mkMizeModule (attrs // { src = attrs.src; modName = attrs.name; select = { mme_presenter = true; }; }); mkMmeNpmPresenter = attrs: mkMizeModule (attrs // { drvFunc = buildNpmPackage; mizeBuildPhase = '' cd $build_dir npm i npm run build mv dist tmp mkdir -p $out mv tmp/* $out rm -rf tmp ''; mizeInstallPhase = ""; select = { mme_presenter = true; }; devShell = pkgsNative.mkShell { buildInputs = with pkgsNative; [ nodejs_20 ]; }; }); mkMmeHtmlPresenter = attrs: mkMmePresenter ({ dontUnpack = true; dontPath = true; buildPhase = ""; installPhase = '' mkdir -p $out cp -r ${attrs.src}/* $out ''; } // attrs); }; externals = { fetchFromGitHub, ... }: [ (fetchFromGitHub { owner = "c2vi"; repo = "mme-presenters"; rev = "master"; hash = "sha256-FeMBDCJBkw9XOLXC1rfedNk71uyg4OTCHaaO1jAAGto="; }) ]; }