AstonJ
How members have set up their Elixir dev environment
With a few questions relating to this recently, I wonder if it might help having a thread where we share how we’ve set up Elixir/Erlang/Phoenix, etc. (Perhaps we can move it to #learning-resources:tutorials-guides-tips later?)
If you’ve set up your dev environment the same as someone else, please don’t forget to like their post!
If possible, please include:
- Brief description. Please include your OS and tools used (such terminal app, whether you use ZSH, etc)
- Steps to achieve the same set-up (the more complete this is the more helpful it could be to others)
- What you like about the way you have set up your Elixir dev environment
- Anything you might not like about it
- Any other info you’d like to share
![]()
PS, for reference, here is the official install guide on the Elixir site, and the Phoenix install guide here.
Trending in Guides/Tuts
Other Trending Topics
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
I just stumbled on a newly redesigned elixir-lang.org. :tada: It looks like @Software_Mansion did the work, and I think it is generally a...
New
@hugobarauna and I (Alex Koutmos) have been hard at work on writing a book on Nerves that takes you from simply blinking LEDs to building...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #elixirconf-us
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #performance
- #security










First 10 of 15 Posts
prio101
ConnorRigby
OS
Arch linux w/ I3 + FISH shell
Setup
Editor
Vim and sometimes Atom w/ no plugins
kokolegorille
For Mac OSX (High Sierra)
Homebrew & Postgresql
Elixir/Erlang
For Erlang/Elixir, the same asdf procedure as @ConnorRigby, but with
and for Mac, You need to
Phoenix
For 1.4, not yet released
From anywhere in your disk, where You have your Elixir source code
Nothing fancy, just using README for each used tools. I also install node, yarn for the full Elixir environment.
PS. I also install XCode as a pre-requisite for the Mac.
theangryangel
Typically Vagrant VMs (debian) provisioned by Ansible (conditionally ansible and ansible_local provisioners). Didn’t go for Docker as we have a mix of Windows, Linux and Mac, and Docker wasn’t a good option at the time. Usually use the erlang-solutions apt repo because I’m lazy and dont think we currently have a need for multiple Elixir versions yet. Ansible playbooks are split into roles and the same roles are used for dev and prod (or will be).
Code is mounted into the VM, typically at
/vagrant, all code editing on the host (usually Neovim). Only thing I’ve not really got around to sorting is language server integration into the VM. Perpetually on the todo listquazar
Macbook air(8GB RAM, 128GB Storage) with MacOS High Sierra
ddf
dch
basics:
BEAM
set PATH /usr/local/lib/erlang20/bin $PATHwhere needed. I cannot tell you how nice this is.editor
comms
workflow
I typically have a couple of windows open - a running elixir app on the left pane in a while loop, so I just need to ctrl-C to have it restart if needed.
and in that one I use ConCache to “copy” interesting data from the running program into the iex repl to play with. I often have network ports and pids in the values, so having real ones to play with is critical. this looks like this:
You can then do all the nice stuff right there in the repl! When I have the rough form of the desired function or module working, I switch over to vim in the right side window, write tests around my desired behaviour, throw in the code from IEx into a module, and profit.
The conn above is captured using a little Plug I shift around inside the app while I’m fiddling:
In my final pane, I run a syslog tail on top, and a small window on bottom with
mix test --trace --no-deps-check --staleuntil it’s all good.then switch over to git-cola, order some smaller commits, do the distillery dance to produce a release, and I have a small script that turns that tarball into a deployable FreeBSD package.
If anybody’s interested in more details, message me, and I’ll spin this into an actual blog post.
leifericf
At work, I’ve got two Lenovo laptops: one with Ubuntu and one with Windows 10. At home, I’ve got a MacBook Pro, and a Raspberry Pi which I intend to use for playing with Nerves at some point.
My setup is nothing special; I install Erlang and Elixir via package managers, except on Windows, where I use the standard web installer. To edit code, I use Visual Studio Code and terminals (iTerm2 with Oh My Zsh on Mac) on all platforms (except on the Raspberry Pi, of course). I was using Vim for everything for the longest time, but have (surprisingly) been swayed to Visual Studio Code.
For syncing code across machines, I have Git repos on my own private server.
alecsandruchirosca
My development environment is on Ubuntu 18 (I still use the Unity Desktop and run Ubuntu for desktops). The elixir package is installed using the OS installer and the postgresql from my os. For GUI I prefer the VS Code as is much lighter on resources than atom or eclipse I used before. I also like the docker integration.
All development is uploaded to a gitlab or bitbucket account for tracking purposes .
Releases are ensured using distillery with own Docker images based upon the builder pattern and the Arch Linux and the final release in deployed using docker compose.
At this time no CI is integrated but when I will needed it I will use the gitlab ci platform as the software is distributed using docker and docker compose and the Docker registry.
I find this to be the easiest solution to move from one machine to another (VS Code and Docker) but I do not use Docker for development in order to keep the hot auto-deploy part that I love about Elixir.
niamtokik
I use a really simple environment based only on BSD systems (I used a lot of FreeBSD in the past).