35 lines
1.2 KiB
Nix
35 lines
1.2 KiB
Nix
{
|
|
inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; };
|
|
|
|
outputs = { self, nixpkgs }: {
|
|
devShell.x86_64-linux = let
|
|
system = "x86_64-linux";
|
|
pkgs = import nixpkgs { inherit system; };
|
|
beam = pkgs.beam.packages.erlang_27;
|
|
elixir = beam.elixir_1_17;
|
|
elixir-ls = (beam.elixir-ls.override { inherit elixir; });
|
|
in pkgs.mkShell {
|
|
buildInputs = [
|
|
elixir
|
|
elixir-ls
|
|
pkgs.rustc
|
|
pkgs.cargo
|
|
pkgs.rust-analyzer
|
|
pkgs.rustfmt
|
|
];
|
|
shellHook = ''
|
|
# this allows mix to work on the local directory
|
|
mkdir -p .state/mix .state/hex
|
|
export MIX_HOME=$PWD/.state/mix
|
|
export HEX_HOME=$PWD/.state/hex
|
|
export PATH=$MIX_HOME/bin:$MIX_HOME/escripts:$HEX_HOME/bin:$PATH
|
|
# TODO: not sure how to make hex available without installing it afterwards.
|
|
mix local.hex --if-missing --force
|
|
export LANG=en_US.UTF-8
|
|
export ERL_AFLAGS="-kernel shell_history enabled -kernel shell_history_path '\"$PWD/.state\"' -kernel shell_history_file_bytes 1024000"
|
|
export RUST_SRC_PATH="${pkgs.rustPlatform.rustLibSrc}"
|
|
'';
|
|
};
|
|
};
|
|
}
|