the Pipa Index ·
elixir
r/o

pipa / flake.nix

1
{
2
description = "Pipa Index";
3
4
inputs = {
5
nixpkgs.url = "github:NixOS/nixpkgs/cb82756ecc37fa623f8cf3e88854f9bf7f64af93";
6
fenix = {
7
url = "github:nix-community/fenix";
8
inputs.nixpkgs.follows = "nixpkgs";
9
};
10
};
11
12
outputs =
13
{
14
nixpkgs,
15
fenix,
16
...
17
}:
18
let
19
systems = [
20
"aarch64-darwin"
21
"aarch64-linux"
22
"x86_64-darwin"
23
"x86_64-linux"
24
];
25
eachSystem = nixpkgs.lib.genAttrs systems;
26
overlays = [ fenix.overlays.default ];
27
partsForSystem = system: rec {
28
pkgs = import nixpkgs { inherit system overlays; };
29
erlang = pkgs.beam_minimal.interpreters.erlang_27;
30
beamPackages = pkgs.beam_minimal.packagesWith erlang;
31
elixir = beamPackages.elixir_1_18;
32
};
33
partsForSystemDev = system: rec {
34
pkgs = import nixpkgs { inherit system overlays; };
35
erlang = pkgs.beam.interpreters.erlang_27;
36
beamPackages = pkgs.beam.packagesWith erlang;
37
elixir = beamPackages.elixir_1_18;
38
};
39
in
40
rec {
41
formatter = eachSystem (system: nixpkgs.legacyPackages.${system}.nixfmt-rfc-style);
42
43
packages = eachSystem (
44
system:
45
let
46
inherit (partsForSystem system)
47
pkgs
48
erlang
49
beamPackages
50
elixir
51
;
52
package = pkgs.callPackage ./nix/package.nix {
53
inherit
54
beamPackages
55
erlang
56
elixir
57
fenix
58
;
59
};
60
in
61
rec {
62
default = pipa;
63
64
pipa = package;
65
}
66
);
67
68
devShells = eachSystem (
69
system:
70
let
71
mkShell = args: import ./nix/shell.nix (partsForSystemDev system // args);
72
in
73
rec {
74
default = dev;
75
76
dev = mkShell { mixEnv = "dev"; };
77
test = mkShell { mixEnv = "test"; };
78
prod = mkShell { mixEnv = "prod"; };
79
}
80
);
81
82
darwinModules = nixpkgs.lib.genAttrs [ "aarch64-darwin" "x86_64-darwin" ] (
83
system:
84
let
85
pkgs = nixpkgs.legacyPackages.${system};
86
in
87
rec {
88
default = pipa;
89
90
pipa = pkgs.callPackage ./nix/module.nix {
91
inherit (packages.${system}) pipa;
92
};
93
}
94
);
95
};
96
}
97