The GHC musl repository provides general purpose Dev Containers:
For further information, see GHC musl: Dev Containers.
Not to derail the discussion, but are dev containers trying to accomplish the same thing as Nix shells ? I’ve never used them, it’d be great to hear from someone familiar with both.
They are highly similar. But devcontainers are rally just docker images. And as such linux. Whereas nix shells can be darwin as well. And conceptually bsd too.
It’s really just packaging. Whether or not the underlying shell is nix provisioned or though some other mechanism (e.g. installing software through the chosen Linux’s package manager—that’s essentially what nix is on nixOS (a Linux distribution)) is fairly invisible from the users perspective.
@angerman Yes: Nix will be (is?) THE tool for DevOps. I will also use it in the future. Better sooner than later… steep learning curve, though.
I do not plan on going much further with containers (than e.g. GHC musl and these Dev Containers).
How did it come to these Dev Containers?
- I have no affiliation with the Haskell Foundation Working Group or the Commercial Haskell SIG.
- I am not using Haskell myself and have never written an single line of Haskell code on my own.
Long story short:
- I am a Data Scientist
- using containers for reproducible research.
- Running stuff on Apple hardware
- both Intel (
x86_64) and Apple Silicon (
- both Intel (
- There was no Pancoc for Linux/AArch64
- which is used for scientific and technical publishing with R.
- Saw issue Can Binary Releases be Done for aarch64 and armv7h · Issue #5450 · jgm/pandoc · GitHub.
- Went down the rabbit hole, got lost, and vanished for some time.
- Started GHC musl.
- Resolved Pandoc Issue #5450.
- Worked on Data Science Dev Containers.
One thing led to another… and… here we are.
Out of curiosity – and thanks to the help of the Haskell community.
Alpine Linux – or more accurately musl libc – is made for static linking; i.e. building executables that can run on any Linux machine of the same architecture.
Wow this is really nice. Thank you @benz0li for your work! Alpine + static linking = tiny docker images for fast CI/CD !