git-subtree-dir: components/mycelium git-subtree-split: afb32e0cdb2d4cdd17f22a5693278068d061f08c
157 lines
4.2 KiB
Nix
157 lines
4.2 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
|
|
crane.url = "github:ipetkov/crane";
|
|
|
|
flake-compat.url = "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz";
|
|
|
|
nix-filter.url = "github:numtide/nix-filter";
|
|
};
|
|
|
|
outputs =
|
|
{ self
|
|
, crane
|
|
, flake-utils
|
|
, nix-filter
|
|
, ...
|
|
}@inputs:
|
|
{
|
|
overlays.default = final: prev:
|
|
let
|
|
inherit (final) lib stdenv darwin;
|
|
craneLib = crane.mkLib final;
|
|
in
|
|
{
|
|
myceliumd =
|
|
let
|
|
cargoToml = ./myceliumd/Cargo.toml;
|
|
cargoLock = ./myceliumd/Cargo.lock;
|
|
manifest = craneLib.crateNameFromCargoToml { inherit cargoToml; };
|
|
in
|
|
lib.makeOverridable craneLib.buildPackage {
|
|
src = nix-filter {
|
|
root = ./.;
|
|
|
|
# If no include is passed, it will include all the paths.
|
|
include = [
|
|
./Cargo.toml
|
|
./Cargo.lock
|
|
./mycelium
|
|
./mycelium-api
|
|
./mycelium-cli
|
|
./mycelium-metrics
|
|
./myceliumd
|
|
./myceliumd-private
|
|
./mobile
|
|
./docs
|
|
];
|
|
};
|
|
|
|
inherit (manifest) pname version;
|
|
inherit cargoToml cargoLock;
|
|
sourceRoot = "source/myceliumd";
|
|
|
|
doCheck = false;
|
|
|
|
nativeBuildInputs = [
|
|
final.pkg-config
|
|
# openssl base library
|
|
final.openssl
|
|
# required by openssl-sys
|
|
final.perl
|
|
];
|
|
|
|
buildInputs = lib.optionals stdenv.isDarwin [
|
|
darwin.apple_sdk.frameworks.Security
|
|
darwin.apple_sdk.frameworks.SystemConfiguration
|
|
final.libiconv
|
|
];
|
|
|
|
meta = {
|
|
mainProgram = "mycelium";
|
|
};
|
|
};
|
|
myceliumd-private =
|
|
let
|
|
cargoToml = ./myceliumd-private/Cargo.toml;
|
|
cargoLock = ./myceliumd-private/Cargo.lock;
|
|
manifest = craneLib.crateNameFromCargoToml { inherit cargoToml; };
|
|
in
|
|
lib.makeOverridable craneLib.buildPackage {
|
|
src = nix-filter {
|
|
root = ./.;
|
|
|
|
include = [
|
|
./Cargo.toml
|
|
./Cargo.lock
|
|
./mycelium
|
|
./mycelium-api
|
|
./mycelium-cli
|
|
./mycelium-metrics
|
|
./myceliumd
|
|
./myceliumd-private
|
|
./mobile
|
|
./docs
|
|
];
|
|
};
|
|
|
|
inherit (manifest) pname version;
|
|
inherit cargoToml cargoLock;
|
|
sourceRoot = "source/myceliumd-private";
|
|
|
|
doCheck = false;
|
|
|
|
nativeBuildInputs = [
|
|
final.pkg-config
|
|
# openssl base library
|
|
final.openssl
|
|
# required by openssl-sys
|
|
final.perl
|
|
];
|
|
|
|
buildInputs = lib.optionals stdenv.isDarwin [
|
|
darwin.apple_sdk.frameworks.Security
|
|
darwin.apple_sdk.frameworks.SystemConfiguration
|
|
final.libiconv
|
|
];
|
|
|
|
meta = {
|
|
mainProgram = "mycelium-private";
|
|
};
|
|
};
|
|
};
|
|
} //
|
|
flake-utils.lib.eachSystem
|
|
[
|
|
flake-utils.lib.system.x86_64-linux
|
|
flake-utils.lib.system.aarch64-linux
|
|
flake-utils.lib.system.x86_64-darwin
|
|
flake-utils.lib.system.aarch64-darwin
|
|
]
|
|
(system:
|
|
let
|
|
craneLib = crane.mkLib pkgs;
|
|
|
|
pkgs = import inputs.nixpkgs {
|
|
inherit system;
|
|
overlays = [ self.overlays.default ];
|
|
};
|
|
in
|
|
{
|
|
devShells.default = craneLib.devShell {
|
|
packages = [
|
|
pkgs.rust-analyzer
|
|
];
|
|
|
|
RUST_SRC_PATH = "${pkgs.rustPlatform.rustLibSrc}";
|
|
};
|
|
|
|
packages = {
|
|
default = self.packages.${system}.myceliumd;
|
|
|
|
inherit (pkgs) myceliumd myceliumd-private;
|
|
};
|
|
});
|
|
}
|