blob: 14cc8de2d5082a1fffb0dd43b16227936b271593 (
plain) (
blame)
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
|
{
description = "Sakura's flakes";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
flake-parts = {
url = "github:hercules-ci/flake-parts";
};
treefmt-nix.url = "github:numtide/treefmt-nix";
};
outputs = { self, nixpkgs, flake-parts, treefmt-nix, ... }@inputs:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
perSystem = { pkgs, system, ... }:
let
erlangLatest = pkgs.erlang_28;
rebar_config = builtins.readFile ./rebar.config;
match = builtins.match ".*release,.+sakura, \"([0-9.]+)\".*" rebar_config;
pversion = builtins.head match;
in {
# This sets `pkgs` to a nixpkgs with allowUnfree option set.
_module.args.pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
# nix build
packages = {
default =
let
deps = import ./rebar-deps.nix {
inherit (pkgs) fetchHex fetchFromGitHub fetchgit;
builder = pkgs.beamPackages.buildRebar3;
};
in
pkgs.beamPackages.rebar3Relx {
pname = "sakura";
version = pversion;
src = pkgs.lib.cleanSource ./.;
releaseType = "release";
profile = "prod";
buildInputs = (
with pkgs;
[
coreutils
gawk
gnugrep
openssl
]
++ lib.optional stdenv.isLinux [
liburing
]
);
beamDeps = builtins.attrValues deps;
};
};
# Define devShell for Erlang + Rebar3
devShells = {
default = pkgs.mkShell {
packages = with pkgs; [
erlang-language-platform
rebar3
] ++ [erlangLatest];
};
};
# Formatter setup for Nix files
formatter = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
# nix flake check --all-systems
checks = {
formatting = treefmt-nix.lib.evalModule pkgs ./treefmt.nix;
};
};
};
}
|