-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathflake.nix
154 lines (134 loc) · 4.17 KB
/
flake.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
{
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
];
};
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
];
};
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;
};
});
}