From 193c3ce3e09d595513f3896f319e3b288d46d65b Mon Sep 17 00:00:00 2001 From: Sebastian Moser Date: Sun, 10 May 2026 01:47:30 +0200 Subject: [PATCH] cleaned up nix code dramatically --- flake.nix | 193 ++--------------------- lib.nix | 445 ------------------------------------------------------ 2 files changed, 16 insertions(+), 622 deletions(-) delete mode 100644 lib.nix diff --git a/flake.nix b/flake.nix index 08fe4c4..1134f48 100644 --- a/flake.nix +++ b/flake.nix @@ -29,97 +29,25 @@ ############################## LET BINDINGS ############################## let pkgs = nixpkgs.legacyPackages.${system}; - wasmToolchain = fenix.packages.${system}.combine [ - fenix.packages.${system}.targets.wasm32-unknown-unknown.stable.toolchain - fenix.packages.${system}.stable.toolchain - ]; - wasmCrane = (crane.mkLib pkgs).overrideToolchain wasmToolchain; - + + #os osToolchain = fenix.packages.${system}.latest.toolchain; - osCrane = (crane.mkLib pkgs).overrideToolchain osToolchain; - #winToolchain = fenix.packages.${system}.combine [ - #fenix.packages.${system}.targets.x86_64-pc-windows-gnu.latest.toolchain - #fenix.packages.${system}.latest.toolchain - #]; - winToolchain = with fenix.packages.${system}; - combine [ - minimal.rustc - minimal.cargo - targets.x86_64-pc-windows-gnu.latest.rust-std - ]; - winCrane = (crane.mkLib pkgs).overrideToolchain winToolchain; - - wasmArtifacts = wasmCrane.buildDepsOnly ({ - src = self; - doCheck = false; # tests does not work in wasm - CARGO_BUILD_TARGET = "wasm32-unknown-unknown"; - cargoExtraArgs = "--features target-wasm --no-default-features"; - RUSTFLAGS="-C linker=wasm-ld"; - buildInputs = with pkgs; [ cargo-binutils lld ]; - }); - - defaultMizeConfig = { + # mize build time config + mizeBuildConfig = { config = { namespace = "mize.buildtime.ns"; - module_url = "c2vi.dev"; + module_url = "parts.mize.works"; }; }; - #systems = [ "aarch64-linux" "x86_64-linux" "x86_64-pc-windows-gnu" "wasm32-unknown-none-unknown" "x86_64-apple-darwin" "aarch64-apple-darwin" ]; - systems = [ "aarch64-unknown-linux-gnu" "x86_64-unknown-linux-gnu" "x86_64-pc-windows-gnu" "wasm32-unknown-none-unknown" ]; - - mizeLib = import ./lib.nix { - inherit inputs nixpkgs pkgs self osCrane defaultMizeConfig mize_modules; - inherit rust-overlay crane fenix; - buildSystem = system; - stdenv = pkgs.stdenv; - }; in { ############################## PACKAGES ############################## packages = rec { - inherit osCrane; - #test = mizeLib.buildMizeForSystem "wasm32-unknown-none-unknown"; - test = mizeLib.buildMizeForSystem "aarch64-linux"; - #test = mizeLib.buildMizeForSystem "x86_64-pc-windows-gnu"; - - mizeFor = let - mizes = map mizeLib.buildMizeForSystem systems; - in builtins.listToAttrs ( map ( mize: { name = mize.system.name; value = mize; } ) mizes ); - - dist = mizeLib.dist systems; - - random = mizeLib.random systems; - - inherit mizeLib; - - - #pkgsCross = import nixpkgs { buildSystem = system; crossSystem = { config = "x86_64-pc-windows-gnu"; }; overlays = [ rust-overlay.overlays.default ]; }; - - pkgsTest = pkgs; - - #pkgsCross = import nixpkgs { buildSystem = system; crossSystem = { config = "x86_64-w64-windows-mingw"; }; overlays = [ rust-overlay.overlays.default ]; }; - pkgsCross = import nixpkgs { buildSystem = system; crossSystem = { config = "x86_64-unknown-linux-gnu"; }; overlays = [ rust-overlay.overlays.default ]; }; - craneLib = (crane.mkLib pkgsCross).overrideToolchain (p: p.rust-bin.stable.latest.default); - - - one = craneLib.buildPackage { - src = "${self}"; - #cargoExtraArgs = "--bin mize --features target-os"; - cargoExtraArgs = "--bin mize"; - doCheck = false; # tests does not work in wasm - CARGO_BUILD_TARGET = "x86_64-pc-windows-gnu"; - MIZE_BUILD_CONFIG = pkgs.writeTextFile { - name = "mize-build-config"; - text = builtins.toJSON (defaultMizeConfig // { - mize_version = one.version; - }); - }; - }; fileSetForCrate = crate: pkgs.lib.fileset.toSource { @@ -127,15 +55,16 @@ in { fileset = pkgs.lib.fileset.unions [ ./Cargo.toml ./Cargo.lock - (craneLib.fileset.commonCargoSources ./packages/marts) - (craneLib.fileset.commonCargoSources ./packages/mize) - (craneLib.fileset.commonCargoSources ./packages/ppc/spacetimedb) - (craneLib.fileset.commonCargoSources ./packages/mme) - (craneLib.fileset.commonCargoSources ./packages/vic) - (craneLib.fileset.commonCargoSources ./packages/ac_mize_macros) - (craneLib.fileset.commonCargoSources crate) + (osCrane.fileset.commonCargoSources ./packages/marts) + (osCrane.fileset.commonCargoSources ./packages/mize) + (osCrane.fileset.commonCargoSources ./packages/ppc/spacetimedb) + (osCrane.fileset.commonCargoSources ./packages/mme) + (osCrane.fileset.commonCargoSources ./packages/vic) + (osCrane.fileset.commonCargoSources ./packages/ac_mize_macros) + (osCrane.fileset.commonCargoSources crate) ]; }; + ppc = osCrane.buildPackage { src = fileSetForCrate ./packages/ppc; cargoExtraArgs = "-p ppc"; @@ -180,104 +109,18 @@ in { libsoup_3 ]; }; - #SPACETIMEDB_NIX_BUILD_GIT_COMMIT = - - wasm = wasmCrane.buildPackage { - src = "${self}"; - CARGO_BUILD_TARGET = "wasm32-unknown-unknown"; - cargoExtraArgs = "--bin mize --features target-wasm "; - doCheck = false; - }; - inherit wasmArtifacts; - - # Thanks to: - # - https://github.com/dl-solarity/hardhat-diamond-tools/blob/e5b8bc9624fbf89eda83a8ce4f6b6672ea83f550/flake.nix#L103 - # - https://github.com/ipetkov/crane/issues/362#issuecomment-1683220603 - npmPackage = wasmCrane.mkCargoDerivation { - name = "mize-npm-package"; - - # i can't use CARGO_BUILD_TARGET to set the target - # because then the cargo install run by wasm-pack tries to build the wasm-bindgen-cli for a wasm target... - - - src = self; - - cargoArtifacts = wasmArtifacts; - doCheck = false; - - buildPhaseCargoCommand = '' - echo build hiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii - mkdir -p $out/pkg - - export HOME=$(mktemp -d fake-homeXXXX) - wasm-pack build --out-dir $out/pkg --scope=c2vi -- --no-default-features --features target-wasm - ''; - - buildInputs = with pkgs; [ wasm-bindgen-cli binaryen wasm-pack wasmToolchain ]; - }; - }; ############################## DEV SHELLS ############################## devShells = { - modules = mizeLib.moduleShells system; - - modulesCross = pkgs.lib.genAttrs systems (system: mizeLib.moduleShells system); - - one = pkgs.stdenv.mkDerivation { - name = "hiiiiiiii"; - nativeBuildInputs = [ - (fenix.packages.${system}.combine [ - fenix.packages.${system}.targets.wasm32-unknown-unknown.latest.toolchain - fenix.packages.${system}.latest.toolchain - fenix.packages.${system}.latest.rust-src - ]) - ]; - }; - - win = winCrane.buildPackage { - #src = winCrane.cleanCargoSource ./testing; - #pname = "testing"; - src = ./testing; - - strictDeps = true; - doCheck = false; - - CARGO_BUILD_TARGET = "x86_64-pc-windows-gnu"; - - # fixes issues related to libring - TARGET_CC = "${pkgs.pkgsCross.mingwW64.stdenv.cc}/bin/${pkgs.pkgsCross.mingwW64.stdenv.cc.targetPrefix}cc"; - - #fixes issues related to openssl - OPENSSL_DIR = "${pkgs.openssl.dev}"; - OPENSSL_LIB_DIR = "${pkgs.openssl.out}/lib"; - OPENSSL_INCLUDE_DIR = "${pkgs.openssl.dev}/include/"; - - depsBuildBuild = with pkgs; [ - pkgsCross.mingwW64.stdenv.cc - pkgsCross.mingwW64.windows.pthreads - ]; - shellHook = '' - export MIZE_CONFIG_FILE=${self}/test-config.toml - ''; - MIZE_BUILD_CONFIG = pkgs.writeTextFile { - name = "vic-build-config"; - text = builtins.toJSON defaultMizeConfig; - }; - }; - - - #default = (mizeLib.buildMizeForSystem system).modules.mize.devShell; + # shell without spacetime and other dev commands. just all needed to build mize or ppc buildShell = pkgs.mkShell { MIZE_BUILD_CONFIG = let settingsFormat = pkgs.formats.toml { }; in settingsFormat.generate "mize-build-config.toml" { - config = { - namespace = "mize.buildtime.ns"; - module_url = "c2vi.dev"; - }; + config = mizeBuildConfig; }; shellHook = '' mize_project_root=$(${pkgs.lib.getExe pkgs.git} rev-parse --show-toplevel) @@ -349,10 +192,7 @@ in { MIZE_BUILD_CONFIG = let settingsFormat = pkgs.formats.toml { }; in settingsFormat.generate "mize-build-config.toml" { - config = { - namespace = "mize.buildtime.ns"; - module_url = "c2vi.dev"; - }; + config = mizeBuildConfig; }; shellHook = '' mize_project_root=$(${pkgs.lib.getExe pkgs.git} rev-parse --show-toplevel) @@ -429,6 +269,5 @@ in { ############################## SOME GLOBAL OUTPUTS ############################## inherit inputs self; - rustPkgs = import nixpkgs { overlays = [rust-overlay.overlays.default]; system = "x86_64-linux"; }; }; } diff --git a/lib.nix b/lib.nix deleted file mode 100644 index bf2d502..0000000 --- a/lib.nix +++ /dev/null @@ -1,445 +0,0 @@ -{ pkgs -, osCrane -, self -, defaultMizeConfig -, mize_modules -, buildSystem -, nixpkgs -, rust-overlay -, crane -, fenix -, stdenv -, lib ? pkgs.lib -, ... -}: -rec { - - - - - getCrossSystem = system: let - hostSystem = (if builtins.isString system then (pkgs.lib.systems.parse.mkSystemFromString system) else system) - // rec { - name = if hostSystem.vendor != "unknown" - then "${hostSystem.cpu.name}-${hostSystem.kernel.name}-${hostSystem.abi.name}" - else "${hostSystem.cpu.name}-${hostSystem.vendor.name}-${hostSystem.kernel.name}-${hostSystem.abi.name}"; - nameFull = "${hostSystem.cpu.name}-${hostSystem.vendor.name}-${hostSystem.kernel.name}-${hostSystem.abi.name}"; - nameRust = nameFull; - config = nameFull; - isCross = system != buildSystem; - isNative = system == buildSystem; - }; - in hostSystem; - - - # get a list of all modules - # aka folders with a mize.nix in them - module_list_drv = path: pkgs.stdenv.mkDerivation { - name = "mize_module_list"; - dontUnpack = true; - configurePhase = ""; - buildPhase = '' - mkdir -p $out - touch $out/modules_to_build - - find ${path} -not -type d -name mize.nix | while read p; do - (echo "$p" >> $out/modules_to_build; echo "found module $p") - done - - exit 0 - ''; - }; - - findModules = path: let - mize_module_no_externals = builtins.getEnv "MIZE_MODULE_NO_EXTERNALS"; - module_list_string = builtins.readFile "${module_list_drv path}/modules_to_build"; - module_list = pkgs.lib.lists.remove "" (pkgs.lib.strings.splitString "\n" module_list_string); - getExternals = path: map findModules ((pkgs.callPackage ((import path).externals or (args: [])) {})); - in module_list ++ (if mize_module_no_externals != "" then [] else (map getExternals module_list)); - - - modulesFileList = let - from_mize_modules_repo = findModules mize_modules; - mize_module_no_repo = builtins.getEnv "MIZE_MODULE_NO_REPO"; - in pkgs.lib.lists.flatten (from_env_var ++ (if mize_module_no_repo != "" then [] else from_mize_modules_repo) ++ (findModules self)); - - mize_module_path = builtins.getEnv "MIZE_MODULE_PATH"; - dirs_from_path = pkgs.lib.lists.remove "" (pkgs.lib.strings.splitString ":" mize_module_path); - dirs_in_nix_store = map (path: builtins.fetchGit { - url = path; - }) dirs_from_path; - from_env_var = map findModules dirs_in_nix_store; - - - - buildMizeForSystem = system: let - hostSystem = getCrossSystem system; - - pkgsCross = import nixpkgs { inherit buildSystem hostSystem; localSystem = buildSystem; overlays = [ rust-overlay.overlays.default ]; }; - - pkgsNative = import nixpkgs { inherit buildSystem; overlays = [ rust-overlay.overlays.default ]; }; - - - - - craneLib = - if hostSystem.kernel.name == "windows" - then - (crane.mkLib pkgs).overrideToolchain (fenix.packages.${buildSystem}.combine [ - #fenix.packages.${buildSystem}.minimal.rustc - #fenix.packages.${buildSystem}.minimal.cargo - fenix.packages.${buildSystem}.nightly.toolchain - fenix.packages.${buildSystem}.targets."${hostSystem.cpu.name}-pc-windows-gnu".stable.toolchain - ]) - - else if hostSystem.cpu.name == "wasm32" - then - (crane.mkLib pkgs).overrideToolchain (fenix.packages.${buildSystem}.combine [ - fenix.packages.${buildSystem}.targets.wasm32-unknown-unknown.latest.toolchain - fenix.packages.${buildSystem}.latest.toolchain - ]) - else if hostSystem.name == "x86_64-linux-gnu" - then - builtins.trace "x86_64-linux-gnu hackfix...." - (crane.mkLib pkgs).overrideToolchain (fenix.packages.${buildSystem}.combine [ - fenix.packages.${buildSystem}.stable.toolchain - ]) - - else - (crane.mkLib pkgsCross).overrideToolchain (p: fenix.packages.${buildSystem}.stable.toolchain) - ; - - toolchain_version_drv = pkgs.stdenv.mkDerivation { - name = "toolchain_version_drv"; - dontUnpack = true; - configurePhase = ""; - buildPhase = '' - mkdir -p $out - touch $out/rustc-version - - echo hiiiiiiiiiiiiiiiiiiiiiiii - #echo 'rustc 1.80.1 (3f5fd8dd4 2024-08-06)' > $out/rustc-version - ${craneLib.cargo}/bin/rustc --version > $out/rustc-version - - exit 0 - ''; - }; - - - - mkSelString = attrs: builtins.toJSON (attrs // { - inherit toolchain_version; - system = hostSystem.name; - mize_version = "0.0.1"; - }); - - - toolchain_version = pkgs.lib.strings.removeSuffix "\n" (builtins.readFile "${toolchain_version_drv}/rustc-version"); - - - mkMizeModule = attrs: (if builtins.hasAttr "drvFunc" attrs then attrs.drvFunc else pkgsCross.stdenv.mkDerivation) ( rec { - name = attrs.modName; - inherit (attrs) modName; - selector_string = mkSelString (attrs.select or {} // { - inherit (attrs) modName; - }); - hash = builtins.substring 0 32 (builtins.hashString "sha256" selector_string); - } - // (lib.attrsets.removeAttrs attrs ["drvFunc"] ) - ); - - - - ########## build a Rust Module - mkMizeRustModule = attrs: mkMizeModule ( - # general stuff - { - drvFunc = craneLib.buildPackage; - MIZE_BUILD_CONFIG = mizeBuildConfigStr; - mizeInstallPhase = attrs.mizeInstallPhase or '' - mkdir -p $out/lib/ - cp $build_dir/target/${hostSystem.nameRust}/$debugOrRelease/libmize_module_${attrs.modName}.so $out/lib/ - ''; - mizeBuildPhase = attrs.mizeBuildPhase or '' - cargo --color always build --target ${hostSystem.nameRust} ${if builtins.hasAttr "cargoExtraArgs" attrs then attrs.cargoExtraArgs else ""} --manifest-path $build_dir/Cargo.toml --lib - ''; - selector_string = mkSelString (attrs.select or {} // { - inherit (attrs) modName; - }); - devShell = if builtins.hasAttr "devShell" attrs then attrs.devShell else mkMizeRustShell {}; - - } - - - # linux specific stuff - // (lib.attrsets.optionalAttrs (hostSystem.kernel.name == "linux") { - # rename the so library, in case the lib.name in your Cargo.toml is not like mize_module_mylib - postInstall = (attrs.postInstall or "") + '' - if [ ! -f "$out/lib/libmize_module_${attrs.modName}" ]; then - echo RENAMING $out/lib/${attrs.modName}.so to $out/lib/libmize_module_${attrs.modName}.so - mv $out/lib/${attrs.modName}.so to $out/lib/libmize_module_${attrs.modName}.so || true - - echo RENAMING $out/lib/${attrs.modName}.a to $out/lib/libmize_module_${attrs.modName}.a - mv $out/lib/${attrs.modName}.a to $out/lib/libmize_module_${attrs.modName}.a && true # ignore if there is no .a file || true - echo "$FILE" - fi - ''; - }) - - - # linux cross stuff - // (lib.attrsets.optionalAttrs (hostSystem.kernel.name == "linux" && hostSystem.isCross) { - "CARGO_TARGET_${builtins.replaceStrings ["-"] ["_"] (pkgsCross.lib.strings.toUpper hostSystem.nameFull)}_LINKER" = "${pkgsCross.stdenv.cc.targetPrefix}cc"; - HOST_CC = "${pkgsCross.stdenv.cc.nativePrefix}cc"; - TARGET_CC = "${pkgsCross.stdenv.cc.targetPrefix}cc"; - CARGO_BUILD_TARGET = hostSystem.nameFull; - nativeBuildInputs = attrs.nativeBuildInputs or [] ++ [ - pkgsCross.stdenv.cc - ]; - }) - - # wasm stuff - // (lib.attrsets.optionalAttrs (hostSystem.cpu.name == "wasm32") { - CARGO_BUILD_TARGET = "wasm32-unknown-unknown"; - - # checks fail on wasm - doCheck = false; - }) - - - # add windows stuff - // (lib.attrsets.optionalAttrs (hostSystem.kernel.name == "windows") { - strictDeps = true; - doCheck = false; - - CARGO_BUILD_TARGET = "${hostSystem.cpu.name}-pc-windows-gnu"; - - # fixes issues related to libring - TARGET_CC = "${pkgs.pkgsCross.mingwW64.stdenv.cc}/bin/${pkgs.pkgsCross.mingwW64.stdenv.cc.targetPrefix}cc"; - - #fixes issues related to openssl - OPENSSL_DIR = "${pkgs.openssl.dev}"; - OPENSSL_LIB_DIR = "${pkgs.openssl.out}/lib"; - OPENSSL_INCLUDE_DIR = "${pkgs.openssl.dev}/include/"; - - depsBuildBuild = [ - pkgs.pkgsCross.mingwW64.stdenv.cc - pkgs.pkgsCross.mingwW64.windows.pthreads - ]; - }) - - - # add the attrs passed to mkMizeRustModule - // attrs - - ); - - - - buildModule = path: extraArgs: pkgs.callPackage ((import path).module or (attrs: null)) ({ - inherit buildMizeForSystem mizeBuildConfig mizeBuildConfigStr; - inherit mkSelString craneLib toolchain_version; - inherit mkMizeModule mkMizeRustModule buildModule findModules hostSystem pkgsCross pkgsNative mkMizeRustShell; - inherit fenix; - mize_version = "0.0.1"; - } // extraArgs ); - - buildLib = path: extraArgs: pkgs.callPackage ((import path).lib or (args: {})) { - inherit mkSelString craneLib toolchain_version; - inherit mkMizeModule mkMizeRustModule buildModule findModules hostSystem pkgsCross pkgsNative mkMizeRustShell; - mize_version = "0.0.1"; - }; - - - mizeBuildConfig = { - namespace = "mize.buildtime.ns"; - module_url = "c2vi.dev"; - selector = builtins.fromJSON (mkSelString {}); - }; - - mizeBuildConfigStr = let - settingsFormat = pkgs.formats.toml { }; - in settingsFormat.generate "mize-build-config.toml" { - config = mizeBuildConfig; - }; - - - ################# dev Shels ################### - - mkMizeRustShell = attrs: mkMizeModuleShell (attrs // { - shellHook = '' - mize_project_root=$(${lib.getExe pkgs.git} rev-parse --show-toplevel) - export MIZE_CONFIG_FILES=$mize_project_root/mize_config.toml - ''; - #_shell_type = "rust"; - nativeBuildInputs = attrs.nativeBuildInputs or [] ++ [ - pkgs.wasm-pack - pkgs.dioxus-cli - pkgs.spacetimedb - pkgs.deno - pkgs.pkg-config - pkgs.gobject-introspection - pkgs.gobject-introspection.dev - - # thanks to: https://github.com/NixOS/nixpkgs/pull/496279/changes - (pkgs.buildWasmBindgenCli rec { - src = pkgs.fetchCrate { - pname = "wasm-bindgen-cli"; - version = "0.2.114"; - hash = "sha256-xrCym+rFY6EUQFWyWl6OPA+LtftpUAE5pIaElAIVqW0="; - }; - - cargoDeps = pkgs.rustPlatform.fetchCargoVendor { - inherit src; - inherit (src) pname version; - hash = "sha256-Z8+dUXPQq7S+Q7DWNr2Y9d8GMuEdSnq00quUR0wDNPM="; - }; - }) - (fenix.packages."x86_64-linux".combine [ - fenix.packages."x86_64-linux".latest.toolchain - fenix.packages."x86_64-linux".targets.wasm32-unknown-unknown.latest.toolchain - ]) - - # the shell script, to mk the dist folder, for a standard rust module - (pkgs.writeShellApplication { - name = "mkdist"; - # should we use the folder, that cargo locate-project gives us??? or just cp ./target/debug/ - text = '' - mkdir -p ./dist - mkdir -p ./dist/lib - - cp ./target/debug/libmize_module*.so ./dist/lib - cp ./target/debug/libmize_module*.a ./dist/lib || true - - ''; - }) - ]; - - buildInputs = with pkgs; [ - at-spi2-atk - atkmm - cairo - gdk-pixbuf - glib - gtk3 - harfbuzz - librsvg - libsoup_3 - pango - webkitgtk_4_1 - openssl - wasm-bindgen-cli - lld_20 - xdotool - ]; - - LD_LIBRARY_PATH = with pkgs; pkgs.lib.makeLibraryPath [ - xdotool - webkitgtk_4_1 - pango - openssl - at-spi2-atk - atkmm - cairo - gdk-pixbuf - glib - gtk3 - harfbuzz - librsvg - libsoup_3 - ]; - - - }); - - mkMizeModuleShell = attrs: pkgs.mkShell (attrs // { - MIZE_BUILD_CONFIG = mizeBuildConfigStr; - IS_MIZE_DEV_SHELL = "true"; - }); - - - ################# output attrset ################### - - in rec { - - main = modules.mize; - - system = hostSystem; - - - modules = builtins.listToAttrs ( map ( mod: { name = mod.modName; value = mod; } ) modulesList ); - - # for debugging - - modulesLibList = map (mod: buildLib mod {}) modulesFileList; - modulesLib = pkgs.lib.lists.foldr (a: b: b // a) {} modulesLibList; - modulesList = pkgs.lib.lists.remove null (map (mod: (buildModule mod modulesLib)) modulesFileList); - - inherit toolchain_version_drv pkgsCross craneLib; - - inherit mize_module_path dirs_from_path dirs_in_nix_store from_env_var; - - }; - - - mkInstallPhase = mize: '' - # install mize - mkdir -p $out/mize/${mize.system.name} - - cp -r ${mize.main}/* $out/mize/${mize.system.name}/ - - # intall the modules - ${mkModulesInstallPhase mize.modulesList} - ''; - - mkModulesInstallPhase = modules: pkgs.lib.concatStringsSep "\n" (map mkModuleInstallPhase modules); - - mkModuleInstallPhase = module: let - hash = module.hash; - in '' - echo got module: ${module.name} - echo out: $out - echo hash: ${hash} - cp --no-preserve=mode,ownership -r ${module}/* $out/mize/dist/${hash}-${module.modName} - ${pkgs.gnutar}/bin/tar -czf $out/mize/dist/${hash}-${module.modName}.tar.gz -C ${module} . - echo '${module.selector_string}' > $out/mize/dist/${hash}-${module.modName}/selector - ''; - - dist = systems: stdenv.mkDerivation { - name = "mize-dist"; - dontUnpack = true; - - # so that those binaries run on average linux-gnu systems - dontPatchShebangs = true; - - buildPhase = '' - ''; - - installPhase = '' - mkdir -p $out - mkdir -p $out/mize - mkdir -p $out/mize/dist - - '' ;# + pkgs.lib.concatStringsSep "\n" (map mkInstallPhase (map buildMizeForSystem systems)); - - - nativeBuildInputs = [ - ]; - }; - - moduleShells = system: let - mizeFor = buildMizeForSystem system; - in builtins.listToAttrs ( map ( mod: { name = mod.modName; value = (mod.devShell); } ) mizeFor.modulesList ); - - random = systems: rec { - - distInstallPhase = map mkInstallPhase (map buildMizeForSystem systems); - mizeList = map buildMizeForSystem systems; - mize-x86_64-linux = buildMizeForSystem "x86_64-linux"; - mize-x86_64-linux-installPhase = mkInstallPhase mize-x86_64-linux; - modulesListDrv = module_list_drv mize_modules; - inherit modulesFileList; - - }; - -}