2024-07-07 11:41:21 +02:00
|
|
|
{
|
|
|
|
description = "Amethyst - Experimental Minecraft server in Elixir";
|
|
|
|
|
|
|
|
inputs = {
|
|
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
|
|
|
|
|
|
|
nix-github-actions.url = "github:nix-community/nix-github-actions";
|
|
|
|
nix-github-actions.inputs.nixpkgs.follows = "nixpkgs";
|
|
|
|
|
|
|
|
systems.url = "github:nix-systems/default";
|
|
|
|
};
|
|
|
|
|
|
|
|
outputs = {
|
|
|
|
self,
|
|
|
|
nixpkgs,
|
|
|
|
systems,
|
|
|
|
nix-github-actions,
|
|
|
|
...
|
|
|
|
} @ inputs: let
|
|
|
|
inherit (nixpkgs) lib;
|
|
|
|
|
|
|
|
# Set the Erlang version
|
|
|
|
erlangVersion = "erlang_25";
|
|
|
|
# Set the Elixir version
|
|
|
|
elixirVersion = "elixir_1_17";
|
|
|
|
|
|
|
|
eachSystem = f:
|
|
|
|
nixpkgs.lib.genAttrs (import systems) (
|
|
|
|
system:
|
|
|
|
f (import nixpkgs {
|
|
|
|
inherit system;
|
|
|
|
overlays = [
|
|
|
|
(final: _: let
|
|
|
|
erlang = final.beam.interpreters.${erlangVersion};
|
|
|
|
beamPackages = final.beam.packages.${erlangVersion};
|
|
|
|
elixir = beamPackages.${elixirVersion};
|
|
|
|
in {
|
|
|
|
inherit erlang elixir;
|
|
|
|
inherit (beamPackages) elixir-ls hex;
|
|
|
|
inherit (beamPackages) mixRelease;
|
|
|
|
})
|
|
|
|
];
|
|
|
|
})
|
|
|
|
);
|
|
|
|
|
|
|
|
#secrets = import ./secrets.nix;
|
|
|
|
|
|
|
|
package = env: pkgs: (pkgs.beamPackages.mixRelease {
|
|
|
|
pname = "amethyst";
|
|
|
|
version = "0.1.0";
|
|
|
|
src = ./.;
|
|
|
|
elixir = pkgs.elixir;
|
|
|
|
mixEnv = env;
|
|
|
|
erlangDeterministicBuilds = false; # Technically less pure but allows doctests
|
|
|
|
removeCookie = false; # Insecure; Access to the file system can allow the cookie to be read and provides remote control of the Erlang VM
|
|
|
|
mixNixDeps = import ./mix.nix {inherit lib; beamPackages = pkgs.beamPackages;};
|
|
|
|
}).overrideAttrs (old: {
|
|
|
|
preInstall = ''
|
|
|
|
# Run automated tests
|
2024-09-04 11:57:36 +02:00
|
|
|
mix test --no-deps-check --color
|
2024-07-07 11:41:21 +02:00
|
|
|
'';
|
|
|
|
});
|
|
|
|
|
|
|
|
in {
|
|
|
|
packages = eachSystem (pkgs:
|
|
|
|
{
|
|
|
|
default = package "prod" pkgs;
|
|
|
|
dev = package "dev" pkgs;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
checks = self.packages;
|
|
|
|
|
|
|
|
githubActions = nix-github-actions.lib.mkGithubMatrix {
|
|
|
|
checks = nixpkgs.lib.getAttrs [ "x86_64-linux" ] self.packages;
|
|
|
|
};
|
|
|
|
|
|
|
|
devShells = eachSystem (
|
|
|
|
pkgs: {
|
|
|
|
default = pkgs.mkShell {
|
|
|
|
buildInputs = with pkgs; [
|
|
|
|
erlang
|
|
|
|
elixir
|
|
|
|
elixir-ls
|
|
|
|
mix2nix
|
2024-09-04 11:55:37 +02:00
|
|
|
|
|
|
|
pre-commit
|
2024-07-07 11:41:21 +02:00
|
|
|
];
|
|
|
|
};
|
|
|
|
}
|
|
|
|
);
|
|
|
|
};
|
|
|
|
}
|