96 lines
2.8 KiB
Nix
96 lines
2.8 KiB
Nix
{ lib, flake, systems, system }:
|
|
|
|
rec {
|
|
inherit systems system;
|
|
|
|
config = import ./config.nix;
|
|
|
|
supportedPlatforms = let
|
|
specDir = builtins.readDir ./spec;
|
|
nixExt = ".nix";
|
|
nixFilesFun = key: val:
|
|
val == "regular" && lib.strings.hasSuffix nixExt key;
|
|
trimNixExtFun = key: val: lib.strings.removeSuffix nixExt key;
|
|
nixFiles = lib.attrsets.filterAttrs nixFilesFun specDir;
|
|
in lib.attrsets.mapAttrsToList trimNixExtFun nixFiles;
|
|
|
|
systemPlatforms = let
|
|
matchingPlatforms = target:
|
|
let targetSystem = targetToSystem target;
|
|
in targetSystem == system;
|
|
in builtins.filter matchingPlatforms supportedPlatforms;
|
|
|
|
platforms = let
|
|
kvFun = platform: {
|
|
name = platform;
|
|
value = platform;
|
|
};
|
|
in builtins.listToAttrs (map kvFun supportedPlatforms);
|
|
|
|
targetToEnv = target:
|
|
let withoutDashes = builtins.replaceStrings [ "-" ] [ "_" ] target;
|
|
in lib.strings.toUpper withoutDashes;
|
|
|
|
targetToUpperEnv = target: lib.strings.toUpper (targetToEnv target);
|
|
|
|
targetToSystem = with builtins;
|
|
target:
|
|
let
|
|
parts = split "-" target;
|
|
arch = elemAt parts 0;
|
|
prefix = lib.strings.optionalString (arch == "armv7") "l";
|
|
os = elemAt parts 4;
|
|
in "${arch}${prefix}-${os}";
|
|
|
|
isNative = target:
|
|
let targetSystem = targetToSystem target;
|
|
in targetSystem == system;
|
|
|
|
cpu = with builtins;
|
|
target:
|
|
let
|
|
parts = split "-" target;
|
|
arch = elemAt parts 0;
|
|
in if arch == "armv7" then replaceStrings [ "v7" ] [ "" ] arch else arch;
|
|
|
|
cargoToml = with builtins;
|
|
let toml = readFile ../../Cargo.toml;
|
|
in fromTOML toml;
|
|
|
|
packageName = cargoToml.package.name;
|
|
|
|
fdbPackage = fdbPackages:
|
|
let
|
|
fdbPkgVersion = builtins.replaceStrings [ "." ] [ "" ] config.fdbVersion;
|
|
in fdbPackages."foundationdb${fdbPkgVersion}";
|
|
|
|
fdbSupported = fdbPackages:
|
|
let
|
|
package = fdbPackage fdbPackages;
|
|
fdbSystems = package.meta.platforms or [ ];
|
|
in builtins.elem system fdbSystems;
|
|
|
|
features = cargoToml.features // {
|
|
storage-fdb = let
|
|
fdbFeatureVersion =
|
|
builtins.replaceStrings [ "." ] [ "_" ] config.fdbVersion;
|
|
in [ "surrealdb/kv-fdb-${fdbFeatureVersion}" ];
|
|
};
|
|
|
|
buildMetadata = with lib.strings;
|
|
let
|
|
lastModifiedDate = flake.lastModifiedDate or flake.lastModified or "";
|
|
date = builtins.substring 0 8 lastModifiedDate;
|
|
shortRev = flake.shortRev or "dirty";
|
|
hasDateRev = lastModifiedDate != "" && shortRev != "";
|
|
dot = optionalString hasDateRev ".";
|
|
in "${date}${dot}${shortRev}";
|
|
|
|
version = with lib.strings;
|
|
let
|
|
hasBuildMetadata = buildMetadata != "";
|
|
plus = optionalString hasBuildMetadata "+";
|
|
in "${cargoToml.package.version}${plus}${buildMetadata}";
|
|
|
|
SURREAL_BUILD_METADATA = buildMetadata;
|
|
}
|