aboutsummaryrefslogtreecommitdiffstats
path: root/flake.nix
blob: dfb06981e25789ccf4a47b71743c0f86fb7d228a (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
{
  description = "Domino'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
          erlang = pkgs.erlang_28; 

          buildRebar3 = pkgs.beamPackages.buildRebar3 {
            pname = "domino";     
            version = "0.1.0";
            src = ./.;           
            beam = erlang;  
            generate-lock = true; 
            name = "domino";     
            buildInputs = [ pkgs.rebar3 ];  

            meta = with pkgs.lib; {
              description = "Domino Erlang Server";
              license = pkgs.lib.licenses.mit;
              platforms = pkgs.lib.platforms.all;
            };
          };

        in {
          # This sets `pkgs` to a nixpkgs with allowUnfree option set.
          _module.args.pkgs = import nixpkgs {
            inherit system;
            config.allowUnfree = true;
          };

          # nix build
          packages = {
            domino = buildRebar3;  
            default = buildRebar3; 
          };

          # Define devShell for Erlang + Rebar3
          devShells = {
            default = pkgs.mkShell {
              packages = with pkgs; [
                erlang_28
                erlang-language-platform
                rebar3
              ];
            };
          };

          # 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;
          };
        };
    };
}