+131
-1
flake.lock
+131
-1
flake.lock
···
15
15
"type": "github"
16
16
}
17
17
},
18
+
"flake-utils": {
19
+
"inputs": {
20
+
"systems": "systems"
21
+
},
22
+
"locked": {
23
+
"lastModified": 1731533236,
24
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
25
+
"owner": "numtide",
26
+
"repo": "flake-utils",
27
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
28
+
"type": "github"
29
+
},
30
+
"original": {
31
+
"owner": "numtide",
32
+
"repo": "flake-utils",
33
+
"type": "github"
34
+
}
35
+
},
36
+
"flake-utils_2": {
37
+
"inputs": {
38
+
"systems": "systems_2"
39
+
},
40
+
"locked": {
41
+
"lastModified": 1731533236,
42
+
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
43
+
"owner": "numtide",
44
+
"repo": "flake-utils",
45
+
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
46
+
"type": "github"
47
+
},
48
+
"original": {
49
+
"owner": "numtide",
50
+
"repo": "flake-utils",
51
+
"type": "github"
52
+
}
53
+
},
54
+
"ixx": {
55
+
"inputs": {
56
+
"flake-utils": [
57
+
"search",
58
+
"flake-utils"
59
+
],
60
+
"nixpkgs": [
61
+
"search",
62
+
"nixpkgs"
63
+
]
64
+
},
65
+
"locked": {
66
+
"lastModified": 1754860581,
67
+
"narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=",
68
+
"owner": "NuschtOS",
69
+
"repo": "ixx",
70
+
"rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281",
71
+
"type": "github"
72
+
},
73
+
"original": {
74
+
"owner": "NuschtOS",
75
+
"ref": "v0.1.1",
76
+
"repo": "ixx",
77
+
"type": "github"
78
+
}
79
+
},
18
80
"nixpkgs": {
19
81
"locked": {
20
82
"lastModified": 1758262103,
···
47
109
"type": "github"
48
110
}
49
111
},
112
+
"nixpkgs_3": {
113
+
"locked": {
114
+
"lastModified": 1758035966,
115
+
"narHash": "sha256-qqIJ3yxPiB0ZQTT9//nFGQYn8X/PBoJbofA7hRKZnmE=",
116
+
"owner": "NixOS",
117
+
"repo": "nixpkgs",
118
+
"rev": "8d4ddb19d03c65a36ad8d189d001dc32ffb0306b",
119
+
"type": "github"
120
+
},
121
+
"original": {
122
+
"owner": "NixOS",
123
+
"ref": "nixos-unstable",
124
+
"repo": "nixpkgs",
125
+
"type": "github"
126
+
}
127
+
},
50
128
"root": {
51
129
"inputs": {
52
130
"crane": "crane",
131
+
"flake-utils": "flake-utils",
53
132
"nixpkgs": "nixpkgs",
54
-
"rust-overlay": "rust-overlay"
133
+
"rust-overlay": "rust-overlay",
134
+
"search": "search"
55
135
}
56
136
},
57
137
"rust-overlay": {
···
69
149
"original": {
70
150
"owner": "oxalica",
71
151
"repo": "rust-overlay",
152
+
"type": "github"
153
+
}
154
+
},
155
+
"search": {
156
+
"inputs": {
157
+
"flake-utils": "flake-utils_2",
158
+
"ixx": "ixx",
159
+
"nixpkgs": "nixpkgs_3"
160
+
},
161
+
"locked": {
162
+
"lastModified": 1758272005,
163
+
"narHash": "sha256-1u3xTH+3kaHhztPmWtLAD8LF5pTYLR2CpsPFWTFnVtQ=",
164
+
"owner": "NuschtOS",
165
+
"repo": "search",
166
+
"rev": "aa975a3757f28ce862812466c5848787b868e116",
167
+
"type": "github"
168
+
},
169
+
"original": {
170
+
"owner": "NuschtOS",
171
+
"repo": "search",
172
+
"type": "github"
173
+
}
174
+
},
175
+
"systems": {
176
+
"locked": {
177
+
"lastModified": 1681028828,
178
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
179
+
"owner": "nix-systems",
180
+
"repo": "default",
181
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
182
+
"type": "github"
183
+
},
184
+
"original": {
185
+
"owner": "nix-systems",
186
+
"repo": "default",
187
+
"type": "github"
188
+
}
189
+
},
190
+
"systems_2": {
191
+
"locked": {
192
+
"lastModified": 1681028828,
193
+
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
194
+
"owner": "nix-systems",
195
+
"repo": "default",
196
+
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
197
+
"type": "github"
198
+
},
199
+
"original": {
200
+
"owner": "nix-systems",
201
+
"repo": "default",
72
202
"type": "github"
73
203
}
74
204
}
+36
-22
flake.nix
+36
-22
flake.nix
···
1
1
{
2
-
description = "My personal NUR repository";
3
-
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
4
-
inputs.rust-overlay.url = "github:oxalica/rust-overlay";
5
-
inputs.crane.url = "github:ipetkov/crane";
2
+
description = "ATproto NUR repository";
3
+
inputs = {
4
+
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
5
+
flake-utils.url = "github:numtide/flake-utils";
6
+
crane.url = "github:ipetkov/crane";
7
+
rust-overlay.url = "github:oxalica/rust-overlay";
8
+
search.url = "github:NuschtOS/search";
9
+
};
6
10
7
-
outputs = { self, nixpkgs, rust-overlay, crane }@inputs:
8
-
let
9
-
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
10
-
in
11
-
{
12
-
legacyPackages = forAllSystems (system:
13
-
let
14
-
overlays = [ (import rust-overlay) ];
15
-
pkgs = import nixpkgs { inherit system overlays; };
16
-
rustToolchain = pkgs.rust-bin.stable.latest.default.override {
17
-
extensions = [ "rust-src" ];
18
-
};
19
-
craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain;
20
-
in
21
-
import ./default.nix {
11
+
outputs = { self, nixpkgs, flake-utils, crane, rust-overlay, search }:
12
+
flake-utils.lib.eachDefaultSystem (system:
13
+
let
14
+
overlays = [ (import rust-overlay) ];
15
+
pkgs = import nixpkgs {
16
+
inherit system overlays;
17
+
};
18
+
rustVersion = pkgs.rust-bin.stable.latest.default;
19
+
craneLib = (crane.mkLib pkgs).overrideToolchain rustVersion;
20
+
21
+
nurPackages = import ./default.nix {
22
22
inherit pkgs craneLib;
23
-
});
24
-
packages = forAllSystems (system: nixpkgs.lib.filterAttrs (_: v: nixpkgs.lib.isDerivation v) self.legacyPackages.${system});
25
-
};
23
+
};
24
+
in
25
+
{
26
+
packages = nurPackages // {
27
+
default = nurPackages.microcosm.default;
28
+
search = search.packages.${system}.default;
29
+
};
30
+
legacyPackages = nurPackages;
31
+
nixosModules = {
32
+
microcosm = import ./modules/microcosm;
33
+
search = search.nixosModules.default;
34
+
};
35
+
devShells.default = pkgs.mkShell {
36
+
# todo?
37
+
};
38
+
}
39
+
);
26
40
}
+1
-5
modules/default.nix
+1
-5
modules/default.nix
+47
modules/microcosm/constellation.nix
+47
modules/microcosm/constellation.nix
···
1
+
{ config, lib, pkgs, ... }:
2
+
3
+
with lib;
4
+
5
+
let
6
+
cfg = config.services.microcosm-constellation;
7
+
microcosmPkgs = pkgs.microcosm; # Access the packages we built
8
+
in
9
+
{
10
+
options.services.microcosm-constellation = {
11
+
enable = mkEnableOption "Microcosm Constellation service";
12
+
package = mkOption {
13
+
type = types.package;
14
+
default = microcosmPkgs.constellation;
15
+
description = "The Microcosm Constellation package to use.";
16
+
};
17
+
port = mkOption {
18
+
type = types.port;
19
+
default = 8080; # Example default port
20
+
description = "The port on which the Constellation service listens.";
21
+
};
22
+
# Add other service-specific options here (e.g., databaseUrl, logLevel)
23
+
};
24
+
25
+
config = mkIf cfg.enable {
26
+
systemd.services.microcosm-constellation = {
27
+
description = "Microcosm Constellation Service";
28
+
after = [ "network.target" ];
29
+
wantedBy = [ "multi-user.target" ];
30
+
serviceConfig = {
31
+
ExecStart = "${cfg.package}/bin/constellation --port ${toString cfg.port}"; # Example command
32
+
Restart = "always";
33
+
User = "microcosm-constellation"; # Create a dedicated user
34
+
Group = "microcosm-constellation";
35
+
# Add other systemd options as needed (e.g., working directory, environment variables)
36
+
};
37
+
# Create user and group
38
+
users.users.microcosm-constellation = {
39
+
isSystem = true;
40
+
group = "microcosm-constellation";
41
+
};
42
+
users.groups.microcosm-constellation = {
43
+
isSystem = true;
44
+
};
45
+
};
46
+
};
47
+
}
+15
modules/microcosm/default.nix
+15
modules/microcosm/default.nix
+40
modules/microcosm/jetstream.nix
+40
modules/microcosm/jetstream.nix
···
1
+
{ config, lib, pkgs, ... }:
2
+
3
+
with lib;
4
+
5
+
let
6
+
cfg = config.services.microcosm-jetstream;
7
+
microcosmPkgs = pkgs.microcosm;
8
+
in
9
+
{
10
+
options.services.microcosm-jetstream = {
11
+
enable = mkEnableOption "Microcosm Jetstream service";
12
+
package = mkOption {
13
+
type = types.package;
14
+
default = microcosmPkgs.jetstream;
15
+
description = "The Microcosm Jetstream package to use.";
16
+
};
17
+
# Add other service-specific options here
18
+
};
19
+
20
+
config = mkIf cfg.enable {
21
+
systemd.services.microcosm-jetstream = {
22
+
description = "Microcosm Jetstream Service";
23
+
after = [ "network.target" ];
24
+
wantedBy = [ "multi-user.target" ];
25
+
serviceConfig = {
26
+
ExecStart = "${cfg.package}/bin/jetstream"; # This command likely needs adjustment
27
+
Restart = "always";
28
+
User = "microcosm-jetstream";
29
+
Group = "microcosm-jetstream";
30
+
};
31
+
users.users.microcosm-jetstream = {
32
+
isSystem = true;
33
+
group = "microcosm-jetstream";
34
+
};
35
+
users.groups.microcosm-jetstream = {
36
+
isSystem = true;
37
+
};
38
+
};
39
+
};
40
+
}
+40
modules/microcosm/pocket.nix
+40
modules/microcosm/pocket.nix
···
1
+
{ config, lib, pkgs, ... }:
2
+
3
+
with lib;
4
+
5
+
let
6
+
cfg = config.services.microcosm-pocket;
7
+
microcosmPkgs = pkgs.microcosm;
8
+
in
9
+
{
10
+
options.services.microcosm-pocket = {
11
+
enable = mkEnableOption "Microcosm Pocket service";
12
+
package = mkOption {
13
+
type = types.package;
14
+
default = microcosmPkgs.pocket;
15
+
description = "The Microcosm Pocket package to use.";
16
+
};
17
+
# Add other service-specific options here
18
+
};
19
+
20
+
config = mkIf cfg.enable {
21
+
systemd.services.microcosm-pocket = {
22
+
description = "Microcosm Pocket Service";
23
+
after = [ "network.target" ];
24
+
wantedBy = [ "multi-user.target" ];
25
+
serviceConfig = {
26
+
ExecStart = "${cfg.package}/bin/pocket"; # This command likely needs adjustment
27
+
Restart = "always";
28
+
User = "microcosm-pocket";
29
+
Group = "microcosm-pocket";
30
+
};
31
+
users.users.microcosm-pocket = {
32
+
isSystem = true;
33
+
group = "microcosm-pocket";
34
+
};
35
+
users.groups.microcosm-pocket = {
36
+
isSystem = true;
37
+
};
38
+
};
39
+
};
40
+
}
+40
modules/microcosm/quasar.nix
+40
modules/microcosm/quasar.nix
···
1
+
{ config, lib, pkgs, ... }:
2
+
3
+
with lib;
4
+
5
+
let
6
+
cfg = config.services.microcosm-quasar;
7
+
microcosmPkgs = pkgs.microcosm;
8
+
in
9
+
{
10
+
options.services.microcosm-quasar = {
11
+
enable = mkEnableOption "Microcosm Quasar service";
12
+
package = mkOption {
13
+
type = types.package;
14
+
default = microcosmPkgs.quasar;
15
+
description = "The Microcosm Quasar package to use.";
16
+
};
17
+
# Add other service-specific options here
18
+
};
19
+
20
+
config = mkIf cfg.enable {
21
+
systemd.services.microcosm-quasar = {
22
+
description = "Microcosm Quasar Service";
23
+
after = [ "network.target" ];
24
+
wantedBy = [ "multi-user.target" ];
25
+
serviceConfig = {
26
+
ExecStart = "${cfg.package}/bin/quasar"; # This command likely needs adjustment
27
+
Restart = "always";
28
+
User = "microcosm-quasar";
29
+
Group = "microcosm-quasar";
30
+
};
31
+
users.users.microcosm-quasar = {
32
+
isSystem = true;
33
+
group = "microcosm-quasar";
34
+
};
35
+
users.groups.microcosm-quasar = {
36
+
isSystem = true;
37
+
};
38
+
};
39
+
};
40
+
}
+40
modules/microcosm/reflector.nix
+40
modules/microcosm/reflector.nix
···
1
+
{ config, lib, pkgs, ... }:
2
+
3
+
with lib;
4
+
5
+
let
6
+
cfg = config.services.microcosm-reflector;
7
+
microcosmPkgs = pkgs.microcosm;
8
+
in
9
+
{
10
+
options.services.microcosm-reflector = {
11
+
enable = mkEnableOption "Microcosm Reflector service";
12
+
package = mkOption {
13
+
type = types.package;
14
+
default = microcosmPkgs.reflector;
15
+
description = "The Microcosm Reflector package to use.";
16
+
};
17
+
# Add other service-specific options here
18
+
};
19
+
20
+
config = mkIf cfg.enable {
21
+
systemd.services.microcosm-reflector = {
22
+
description = "Microcosm Reflector Service";
23
+
after = [ "network.target" ];
24
+
wantedBy = [ "multi-user.target" ];
25
+
serviceConfig = {
26
+
ExecStart = "${cfg.package}/bin/reflector"; # This command likely needs adjustment
27
+
Restart = "always";
28
+
User = "microcosm-reflector";
29
+
Group = "microcosm-reflector";
30
+
};
31
+
users.users.microcosm-reflector = {
32
+
isSystem = true;
33
+
group = "microcosm-reflector";
34
+
};
35
+
users.groups.microcosm-reflector = {
36
+
isSystem = true;
37
+
};
38
+
};
39
+
};
40
+
}
+40
modules/microcosm/slingshot.nix
+40
modules/microcosm/slingshot.nix
···
1
+
{ config, lib, pkgs, ... }:
2
+
3
+
with lib;
4
+
5
+
let
6
+
cfg = config.services.microcosm-slingshot;
7
+
microcosmPkgs = pkgs.microcosm;
8
+
in
9
+
{
10
+
options.services.microcosm-slingshot = {
11
+
enable = mkEnableOption "Microcosm Slingshot service";
12
+
package = mkOption {
13
+
type = types.package;
14
+
default = microcosmPkgs.slingshot;
15
+
description = "The Microcosm Slingshot package to use.";
16
+
};
17
+
# Add other service-specific options here
18
+
};
19
+
20
+
config = mkIf cfg.enable {
21
+
systemd.services.microcosm-slingshot = {
22
+
description = "Microcosm Slingshot Service";
23
+
after = [ "network.target" ];
24
+
wantedBy = [ "multi-user.target" ];
25
+
serviceConfig = {
26
+
ExecStart = "${cfg.package}/bin/slingshot"; # This command likely needs adjustment
27
+
Restart = "always";
28
+
User = "microcosm-slingshot";
29
+
Group = "microcosm-slingshot";
30
+
};
31
+
users.users.microcosm-slingshot = {
32
+
isSystem = true;
33
+
group = "microcosm-slingshot";
34
+
};
35
+
users.groups.microcosm-slingshot = {
36
+
isSystem = true;
37
+
};
38
+
};
39
+
};
40
+
}
+40
modules/microcosm/spacedust.nix
+40
modules/microcosm/spacedust.nix
···
1
+
{ config, lib, pkgs, ... }:
2
+
3
+
with lib;
4
+
5
+
let
6
+
cfg = config.services.microcosm-spacedust;
7
+
microcosmPkgs = pkgs.microcosm;
8
+
in
9
+
{
10
+
options.services.microcosm-spacedust = {
11
+
enable = mkEnableOption "Microcosm Spacedust service";
12
+
package = mkOption {
13
+
type = types.package;
14
+
default = microcosmPkgs.spacedust;
15
+
description = "The Microcosm Spacedust package to use.";
16
+
};
17
+
# Add other service-specific options here
18
+
};
19
+
20
+
config = mkIf cfg.enable {
21
+
systemd.services.microcosm-spacedust = {
22
+
description = "Microcosm Spacedust Service";
23
+
after = [ "network.target" ];
24
+
wantedBy = [ "multi-user.target" ];
25
+
serviceConfig = {
26
+
ExecStart = "${cfg.package}/bin/spacedust"; # This command likely needs adjustment
27
+
Restart = "always";
28
+
User = "microcosm-spacedust";
29
+
Group = "microcosm-spacedust";
30
+
};
31
+
users.users.microcosm-spacedust = {
32
+
isSystem = true;
33
+
group = "microcosm-spacedust";
34
+
};
35
+
users.groups.microcosm-spacedust = {
36
+
isSystem = true;
37
+
};
38
+
};
39
+
};
40
+
}
+40
modules/microcosm/ufos.nix
+40
modules/microcosm/ufos.nix
···
1
+
{ config, lib, pkgs, ... }:
2
+
3
+
with lib;
4
+
5
+
let
6
+
cfg = config.services.microcosm-ufos;
7
+
microcosmPkgs = pkgs.microcosm;
8
+
in
9
+
{
10
+
options.services.microcosm-ufos = {
11
+
enable = mkEnableOption "Microcosm UFOs service";
12
+
package = mkOption {
13
+
type = types.package;
14
+
default = microcosmPkgs.ufos;
15
+
description = "The Microcosm UFOs package to use.";
16
+
};
17
+
# Add other service-specific options here
18
+
};
19
+
20
+
config = mkIf cfg.enable {
21
+
systemd.services.microcosm-ufos = {
22
+
description = "Microcosm UFOs Service";
23
+
after = [ "network.target" ];
24
+
wantedBy = [ "multi-user.target" ];
25
+
serviceConfig = {
26
+
ExecStart = "${cfg.package}/bin/ufos"; # This command likely needs adjustment
27
+
Restart = "always";
28
+
User = "microcosm-ufos";
29
+
Group = "microcosm-ufos";
30
+
};
31
+
users.users.microcosm-ufos = {
32
+
isSystem = true;
33
+
group = "microcosm-ufos";
34
+
};
35
+
users.groups.microcosm-ufos = {
36
+
isSystem = true;
37
+
};
38
+
};
39
+
};
40
+
}
+40
modules/microcosm/who-am-i.nix
+40
modules/microcosm/who-am-i.nix
···
1
+
{ config, lib, pkgs, ... }:
2
+
3
+
with lib;
4
+
5
+
let
6
+
cfg = config.services.microcosm-who-am-i;
7
+
microcosmPkgs = pkgs.microcosm;
8
+
in
9
+
{
10
+
options.services.microcosm-who-am-i = {
11
+
enable = mkEnableOption "Microcosm Who-Am-I service";
12
+
package = mkOption {
13
+
type = types.package;
14
+
default = microcosmPkgs."who-am-i";
15
+
description = "The Microcosm Who-Am-I package to use.";
16
+
};
17
+
# Add other service-specific options here
18
+
};
19
+
20
+
config = mkIf cfg.enable {
21
+
systemd.services.microcosm-who-am-i = {
22
+
description = "Microcosm Who-Am-I Service";
23
+
after = [ "network.target" ];
24
+
wantedBy = [ "multi-user.target" ];
25
+
serviceConfig = {
26
+
ExecStart = "${cfg.package}/bin/who-am-i"; # This command likely needs adjustment
27
+
Restart = "always";
28
+
User = "microcosm-who-am-i";
29
+
Group = "microcosm-who-am-i";
30
+
};
31
+
users.users.microcosm-who-am-i = {
32
+
isSystem = true;
33
+
group = "microcosm-who-am-i";
34
+
};
35
+
users.groups.microcosm-who-am-i = {
36
+
isSystem = true;
37
+
};
38
+
};
39
+
};
40
+
}
+67
-26
pkgs/microcosm/default.nix
+67
-26
pkgs/microcosm/default.nix
···
8
8
sha256 = "sha256-swdAcsjRWnj9abmnrce5LzeKRK+LHm8RubCEIuk+53c=";
9
9
};
10
10
11
-
commonArgs = {
11
+
commonEnv = {
12
+
LIBCLANG_PATH = pkgs.lib.makeLibraryPath [ pkgs.llvmPackages.libclang.lib ];
13
+
OPENSSL_NO_VENDOR = "1";
14
+
OPENSSL_LIB_DIR = "${pkgs.lib.getLib pkgs.openssl}/lib";
15
+
OPENSSL_INCLUDE_DIR = "${pkgs.lib.getDev pkgs.openssl}/include";
16
+
BINDGEN_EXTRA_CLANG_ARGS = pkgs.lib.concatStringsSep " " [
17
+
"-I${pkgs.llvmPackages.libclang.lib}/lib/clang/${pkgs.lib.versions.major pkgs.llvmPackages.libclang.version}/include"
18
+
"-I${pkgs.glibc.dev}"
19
+
];
20
+
ZSTD_SYS_USE_PKG_CONFIG = "1";
21
+
CC = "${pkgs.llvmPackages.clang}/bin/clang";
22
+
CXX = "${pkgs.llvmPackages.clang}/bin/clang++";
23
+
PKG_CONFIG_PATH = "${pkgs.zstd.dev}/lib/pkgconfig:${pkgs.lz4.dev}/lib/pkgconfig";
24
+
};
25
+
26
+
nativeInputs = with pkgs; [
27
+
pkg-config
28
+
perl
29
+
];
30
+
31
+
buildInputs = with pkgs; [
32
+
zstd
33
+
lz4
34
+
rocksdb
35
+
openssl
36
+
];
37
+
38
+
cargoArtifacts = craneLib.buildDepsOnly {
12
39
inherit src;
13
40
pname = "microcosm-rs-deps";
14
-
version = "0.1";
15
-
buildInputs = with pkgs; [
16
-
openssl
17
-
zlib
18
-
];
19
-
nativeBuildInputs = with pkgs; [
20
-
pkg-config
21
-
];
41
+
nativeBuildInputs = nativeInputs;
42
+
buildInputs = buildInputs;
43
+
env = commonEnv;
22
44
};
23
45
24
-
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
46
+
members = [
47
+
"links"
48
+
"constellation"
49
+
"jetstream"
50
+
"ufos"
51
+
"ufos/fuzz"
52
+
"spacedust"
53
+
"who-am-i"
54
+
"slingshot"
55
+
"quasar"
56
+
"pocket"
57
+
"reflector"
58
+
];
25
59
26
-
buildPackage = pname: craneLib.buildPackage (commonArgs // {
27
-
inherit pname;
28
-
cargoArtifacts = cargoArtifacts;
29
-
});
60
+
buildPackage = member:
61
+
let
62
+
packageName = if member == "ufos/fuzz" then "ufos-fuzz" else member;
63
+
in
64
+
craneLib.buildPackage {
65
+
inherit src cargoArtifacts;
66
+
pname = packageName;
67
+
version = "0.1.0";
68
+
cargoExtraArgs = "--package ${packageName}";
69
+
nativeBuildInputs = nativeInputs;
70
+
buildInputs = buildInputs ++ (pkgs.lib.optional (member == "pocket") pkgs.sqlite);
71
+
env = commonEnv;
72
+
};
73
+
74
+
packages = pkgs.lib.genAttrs members (member: buildPackage member);
30
75
31
76
in
32
-
{
33
-
constellation = buildPackage "constellation";
34
-
jetstream = buildPackage "jetstream";
35
-
links = buildPackage "links";
36
-
pocket = buildPackage "pocket";
37
-
quasar = buildPackage "quasar";
38
-
reflector = buildPackage "reflector";
39
-
slingshot = buildPackage "slingshot";
40
-
spacedust = buildPackage "spacedust";
41
-
ufos = buildPackage "ufos";
42
-
"who-am-i" = buildPackage "who-am-i";
43
-
}
77
+
packages // {
78
+
default = pkgs.linkFarm "microcosm-rs" (pkgs.lib.mapAttrsToList (name: value:
79
+
let
80
+
linkName = if name == "ufos/fuzz" then "ufos-fuzz" else name;
81
+
in
82
+
{ name = linkName; path = value; }
83
+
) packages);
84
+
}