Skip to content

Instantly share code, notes, and snippets.

@weiland
Created October 8, 2023 12:50
Show Gist options
  • Save weiland/0e7c13744eff6c38e7d789d7bb11cd41 to your computer and use it in GitHub Desktop.
Save weiland/0e7c13744eff6c38e7d789d7bb11cd41 to your computer and use it in GitHub Desktop.
Elixir nix flake (Elixir version 1.15; without postgres)
{
description = "Elixir development environment (atm mainly for macOS).";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs = inputs@{ flake-parts, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
imports = [
];
systems = [ "aarch64-darwin" ];
perSystem = { config, self', inputs', pkgs, system, ... }:
let
inherit (pkgs.lib) optional optionals;
inherit (pkgs.stdenv) isDarwin;
# elixir = pkgs.beam.packages.erlang.elixir;
# Set the Erlang version
erlangVersion = "erlangR25"; # TODO: use OTP 26?
# Set the Elixir version
elixirVersion = "elixir_1_15";
# erlang = pkgs.beam.interpreters.${erlangVersion};
beamPackages = pkgs.beam.packages.${erlangVersion};
# beamPackages = with pkgs.beam_minimal; packagesWith interpreters.${elixirVersion};
elixir = beamPackages.${elixirVersion};
elixir-ls = beamPackages.elixir-ls;
locales = pkgs.glibcLocales;
in
{
devShells.default = pkgs.mkShell {
name = "elixir dev";
buildInputs = [ elixir elixir-ls locales ]
++ (with pkgs; [
# nodejs
])
++ optional pkgs.stdenv.isLinux pkgs.inotify-tools
++ optional isDarwin pkgs.terminal-notifier
++ optionals isDarwin (with pkgs.darwin.apple_sdk.frameworks; [
CoreFoundation
CoreServices
]);
shellHook = ''
mkdir -p .nix-mix
mkdir -p .nix-hex
export MIX_HOME=$PWD/.nix-mix
export HEX_HOME=$PWD/.nix-hex
export PATH=$MIX_HOME/bin:$PATH
export PATH=$HEX_HOME/bin:$PATH
export PATH=$MIX_HOME/escripts:$PATH
#${elixir}/bin/mix --version
#${elixir}/bin/iex --version
'';
LANG = "en_GB.UTF-8";
ERL_AFLAGS = "-kernel shell_history enabled";
};
};
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment