use lib.makeScope
and files to organize packages
Some of the improvements here include: * rocksdb can actually use jemalloc now instead of just pulling in a second rocksdb for no reason * "complement-runtime" factored back out into shell file * complement image no longer uses `mkDerivation` for `copyToRoot` because that's what `buildEnv` is for * complement image no longer sets `SERVER_NAME`, complement already does that * all packages were factored out into `callPackage`-able files for use with a custom `lib.makeScope pkgs.newScope` * new version of `mkPackage` has options that are easier to use and override such as `features`
This commit is contained in:
parent
36774322e1
commit
63fe828120
17 changed files with 466 additions and 2681 deletions
71
nix/pkgs/main/default.nix
Normal file
71
nix/pkgs/main/default.nix
Normal file
|
@ -0,0 +1,71 @@
|
|||
{ inputs
|
||||
|
||||
# Dependencies
|
||||
, craneLib
|
||||
, lib
|
||||
, libiconv
|
||||
, pkgsBuildHost
|
||||
, rocksdb
|
||||
, rust
|
||||
, stdenv
|
||||
|
||||
# Options
|
||||
, features ? []
|
||||
, profile ? "release"
|
||||
}:
|
||||
|
||||
craneLib.buildPackage rec {
|
||||
src = inputs.nix-filter {
|
||||
root = inputs.self;
|
||||
include = [
|
||||
"src"
|
||||
"Cargo.toml"
|
||||
"Cargo.lock"
|
||||
];
|
||||
};
|
||||
|
||||
# This is redundant with CI
|
||||
doCheck = false;
|
||||
|
||||
env =
|
||||
let
|
||||
rocksdb' = rocksdb.override {
|
||||
enableJemalloc = builtins.elem "jemalloc" features;
|
||||
};
|
||||
in
|
||||
{
|
||||
CARGO_PROFILE = profile;
|
||||
CONDUIT_VERSION_EXTRA = inputs.self.shortRev or inputs.self.dirtyShortRev;
|
||||
ROCKSDB_INCLUDE_DIR = "${rocksdb'}/include";
|
||||
ROCKSDB_LIB_DIR = "${rocksdb'}/lib";
|
||||
}
|
||||
//
|
||||
(import ./cross-compilation-env.nix {
|
||||
inherit
|
||||
lib
|
||||
pkgsBuildHost
|
||||
rust
|
||||
stdenv;
|
||||
});
|
||||
|
||||
nativeBuildInputs = [
|
||||
# bindgen needs the build platform's libclang. Apparently due to "splicing
|
||||
# weirdness", pkgs.rustPlatform.bindgenHook on its own doesn't quite do the
|
||||
# right thing here.
|
||||
pkgsBuildHost.rustPlatform.bindgenHook
|
||||
]
|
||||
++ lib.optionals stdenv.isDarwin [ libiconv ];
|
||||
|
||||
cargoExtraArgs = ""
|
||||
+ lib.optionalString
|
||||
(features != [])
|
||||
"--features " + (builtins.concatStringsSep "," features);
|
||||
|
||||
meta.mainProgram = (craneLib.crateNameFromCargoToml {
|
||||
cargoToml = "${inputs.self}/Cargo.toml";
|
||||
}).pname;
|
||||
|
||||
passthru = {
|
||||
inherit env;
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue