1
{
2
description = "nóssa";
3
4
inputs = {
5
nixpkgs.url = "github:NixOS/nixpkgs/bccaba9e26dd936fab88777155f57aee0d1ee41c";
6
fenix = {
7
url = "github:nix-community/fenix";
8
inputs.nixpkgs.follows = "nixpkgs";
9
};
10
};
11
12
outputs =
13
{
14
self,
15
nixpkgs,
16
fenix,
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
in
34
rec {
35
formatter = eachSystem (system: nixpkgs.legacyPackages.${system}.nixfmt-rfc-style);
36
37
packages = eachSystem (
38
system:
39
let
40
inherit (partsForSystem system)
41
pkgs
42
erlang
43
beamPackages
44
elixir
45
;
46
package = pkgs.callPackage ./nix/package.nix {
47
inherit
48
beamPackages
49
erlang
50
elixir
51
fenix
52
;
53
};
54
in
55
rec {
56
default = nossa;
57
58
nossa = package;
59
60
nossa-docker = pkgs.callPackage ./nix/docker.nix {
61
nossa-rev = self.rev or "dev";
62
inherit nossa;
63
};
64
}
65
);
66
67
devShells = eachSystem (
68
system:
69
let
70
mkShell = args: import ./nix/shell.nix args (partsForSystem system);
71
in
72
rec {
73
default = dev;
74
75
dev = mkShell {
76
dbName = "db_dev";
77
mixEnv = "dev";
78
};
79
test = mkShell {
80
dbName = "db_test";
81
mixEnv = "test";
82
};
83
prod = mkShell {
84
dbName = "db_prod";
85
mixEnv = "prod";
86
};
87
}
88
);
89
90
nixosModules = eachSystem (
91
system:
92
let
93
inherit (partsForSystem system) pkgs;
94
in
95
rec {
96
default = nossa;
97
98
nossa = pkgs.callPackage ./nix/module.nix {
99
inherit (packages.${system}) nossa;
100
};
101
}
102
);
103
};
104
}
105