jurraca
I think a bunch of people here use asdf as a version manager, and others have moved to Nix. We built flox on Nix to make developer environments intuitive and super-powered, and we wrote a guide about migrating from asdf to flox here.
We’re working hard on making the Elixir experience first class, so feel free to sign up and give us feedback while we’re in beta.
Thanks!
Trending in Discussions
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
New
The obligatory hello world thread!
Who are you and where are you from? :stuck_out_tongue:
New
I want to open this thread for you all to discuss and help those who really like Ash but are still hesitant to use it in a real project. ...
New
I was working on an Ecto migration and I needed a timestamp. So, for the nth time, I looked up the different data types for timestamps, a...
New
Fly’s CEO posted this recently - Turn And Face The Strange · The Fly Blog
It says that Fly is going all-in on sprites, which is a worry ...
New
We’re evaluating API mocking tools for OpenAPI-based projects and would love to hear what other teams are using.
We’re particularly inte...
New
Is there a word for the ~> symbol used in Version strings?
Do you also just call it a Squiggle Arrow™ ?!
New
Other Trending Topics
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
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
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
There are three potential reasons for members of this forum to have a look at https://vutuv.de
You are tired or annoyed of LinkedIn.
Yo...
New
ICal is a library for interacting with iCalendar data. It parses iCalendars into typed Elixir structs via ICal.from_ics, and can prepare ...
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
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #blog-post
- #ai
- #phoenix_html
- #elixirconf-us
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
D4no0
The question is why, I mean asdf is a little bit of a hassle to set the first time, since all the versions of OTP you install are compiled on your device, however once you install all the dependencies it works like a charm.
The environment setup is a thing that I love about asdf, simple and declarative: use global versions for all projects and local for the projects with
.tools-versionsdefined. You will never use a different version locally to develop on a released product, even if you have to you can just modify/delete.tools-versionslocally.The last thing that I don’t see is the possibility to define the OTP version, this is one of the most important features of the version tool, moreover the elixir should be compiled with that specific OTP version to ensure that all the features work correctly.
al2o3cr
Quick thoughts:
the whole website is timing out for me
so I had to use the Wayback Machine
with regards to copyright, the phrase “public domain” has a specific meaning that doesn’t agree with its usage in lines like
We now have a portable, deterministic environment, based on the largest repository of software in the public domain- for instance, even the MIT and Apache licenses are not “public domain”jurraca
thanks for this! A few answers:
I’ve used asdf and I like it, it totally works. But I think if we start using reproducible environments based on nixpkgs, that’s a significant improvement, so that’s why we built flox.
D4no0
OK, I missed the part about using NixOS and their containerized environments…
samrose
A flox engineer here: I want to add that the blog post does a great job at highlighting some of the best features of flox. But it doesn’t cover as much about the reality that flox is composible and declarative for a project with not just elixir, but also erlang (and you can choose your own OTP version, or even set up a compile from source yourself) and also manage a specific graph of dependencies for all of the other dependencies and services you will use along with your elixir project. An example is the
hello-phoenixworking example we put together here https://github.com/flox-examples/hello-phoenixYou can see in that example that we have the ability to build and release a pure and deterministic build of the phoenix app https://github.com/flox-examples/hello-phoenix/blob/main/pkgs/hello-phoenix/default.nix and we have the ability to also create a companion dev env based on the same dependencies for building and releasing https://github.com/flox-examples/hello-phoenix/blob/main/pkgs/phx-shell/default.nix
A team can add these to their project repos, and use these through the whole development lifecycle (dev, CI and replease to production). For linux machines, these configs can be loaded into docker images and deployed that way directly from the package. These packages (the release and the dev env) can also be
flox publishedand then subscribed to. Then, they can be used immediately in the way that is described in the blog post above. This approach also prevents the rebuilding of deps unless a dependency has changed. Overall, this has created a comprehensive way to build, publish, install and share across the whole lifecycle.ananthakumaran
At my first job in a ruby shop, I had to install ruby gems by hand. God knows which version would get installed. Luckily, Bundler became the standard and Gemfile.lock made it possible to create reproducible environment. Soon nearly all the languages started to have lock file variants. But for some reason, that stopped at language library level. Any dependency on OS package level like imagemagick, mysql-client etc are still managed by hand in most cases. Nix is trying to tackle the problem, I have been trying to convert people to use nix shell, I add shell.nix in most projects nowadays. Nix Flakes seem to be the ideal as it locks the version as well, but it has been in beta for a long time and I am yet to find good documentation. Meanwhile, everybody else seems to see the potential and starting to build on top of nix. I am hoping somebody will solve this problem, we would waste less time debugging build failures and claiming it works on my machine.
1: https://devenv.sh/
2: An invitation to Rust maintainers
3: GitHub - jetify-com/devbox: Instant, easy, and predictable development environments · GitHub
Ankhers
I have no experience with Flox, but I do intend to take a look at it.
I am personally looking into (and contributing) to devenv, which @ananthakumaran linked in the previous comment. I am really excited to see more movement and tools in this space, with or without Nix. Though, I believe that Nix makes it really easy to get started building something because of all of the packages (and different versions!) are already in the nixpkgs repo.
I really look forward to seeing all the tooling that comes out of this.
jurraca
Agreed, the amount of experiments in the “Nix UX space” at the moment is incredible to see!
loreto
I’m a contributor to
devbox(one of the most established nix tools with over 4k+ github stars) which @ananthakumaran also mentioned. Using nix, whether through devbox, devenv or flox solves a lot of problems around reproducibility and version pinning.Devbox’s approach is to abstract the nix language away, for those who don’t want to learn it – if you prefer to learn the nix language, then devenv and flox can be great solutions as well.
woylie
I’m already using Nix flakes in my projects. I watched part of the NixCon talk about flox, so I kind of understand the vision, but I think the website is missing a page comparing flox with Nix flakes and why you would want to use one over the other.