the Pipa Index ·
elixir
r/o

pipa / flake.nix

1
{
2
description = "Pipa Index";
3
4
inputs = {
5
nixpkgs.url = "github:NixOS/nixpkgs/539a8b7cd027b667fd01ec763dff2fbb1d585908";
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 {
77
dbName = "pipa_dev";
78
mixEnv = "dev";
79
};
80
test = mkShell {
81
dbName = "pipa_test";
82
mixEnv = "test";
83
};
84
prod = mkShell {
85
dbName = "pipa_prod";
86
mixEnv = "prod";
87
};
88
}
89
);
90
91
darwinModules = nixpkgs.lib.genAttrs [ "aarch64-darwin" "x86_64-darwin" ] (
92
system:
93
let
94
pkgs = nixpkgs.legacyPackages.${system};
95
in
96
rec {
97
default = pipa;
98
99
pipa = pkgs.callPackage ./nix/module.nix {
100
inherit (packages.${system}) pipa;
101
};
102
}
103
);
104
};
105
}
106