cation21 has quit [Remote host closed the connection]
cation21 has joined #spectrum
cleeyv has quit [Ping timeout: 246 seconds]
cleeyv has joined #spectrum
cole-h has quit [Ping timeout: 240 seconds]
Irenes has quit [Ping timeout: 260 seconds]
Irenes has joined #spectrum
<sterni>
Profpatsch: as far as OCaml goes: build times are short, dependency hell exists, but is manageable, maintenance effort is very manageable, maintainers are extremely helpful and friendly
<sterni>
Profpatsch: OCaml should have similar problems to Haskell but in reality it is much better
<JJJollyjim>
dependency hell exists, but we have nix! :)
<Scrblue[m]>
I just got NixOS running yesterday; I hope to figure it out before trying this project
<Scrblue[m]>
Did someone propose a Haskell version of that virtio thing?
<sterni>
JJJollyjim: actually the opposite is true
<Lestat[m]>
whats up
<sterni>
nixpkgs deals with dependency hell worse than the language tooling because we kind of need to have a blessed package set
<sterni>
wheras opam can just throw a sat solver at the installed stuff and figure out which versions to pick
<JJJollyjim>
ah right
<sterni>
my vision for ocamlPackages is to at some point just pick the versions to include with the opam SAT solver
<JJJollyjim>
sat solver written in nix, anyone? :D
<sterni>
but we can't really do the trick of having a custom switch for different projects
<sterni>
JJJollyjim: don't tempt me…
<sterni>
I have to look at opam2nix more in depth at some point but afaik it just does the sat solving using opam per package which is good for development and maybe deployment
<sterni>
but in nixpkgs we can't really have a custom closure for every single package
<sterni>
(well we can but then you have the rust & go mess)
<MichaelRaskin>
You can do better than rust and go if you package closure entries properly
<MichaelRaskin>
Please no SAT solvers in Nix before you have sub-quadratic order-preserving uniq for lists of string
<MichaelRaskin>
A plugin to wrap Glucose might be fine, though…
<JJJollyjim>
lmao
<pie_>
MichaelRaskin: could you implement the latter in the sat solver
<MichaelRaskin>
I do not understand the question
<Profpatsch>
sterni: I really like the “all hackage hashes” approach
<Profpatsch>
where you just have a list of all hashes of all packages in all versions and use cabal2nix to download & convert to a nix file on the fly
<Profpatsch>
Needs ifd, but you are relieved of the problem of “this version is not in my package set”
<Profpatsch>
So you could use the SAT-solver that comes with your package manager to get a list of transitive dependencies, and then use the lookup for the actual versions
<sterni>
yeah of course
<sterni>
but a) doesn't work for nixpkgs at least not currently b) set size
<sterni>
_although_ I can imagine generating a json file with all opam hashes and the using builtins.fromJSON in nixpkgs could work
<sterni>
ocamlPackages is really small in comparison to haskellPakcaegs
<pie_>
MichaelRaskin: make the fast nix sat solver first, then implement "sub-quadratic order-preserving uniq for lists of string" in it :P
<MichaelRaskin>
Nope
<MichaelRaskin>
Because SAT solver needs better data structures than can be done without mutation
<pie_>
ok :(
<Profpatsch>
sterni: the hackage stuff is in nixpkgs
<Profpatsch>
you just need to use haskellPackages.callHackage "lens" "1.2.3" {}
<Profpatsch>
then you have ifd downstream, but it’s pretty managable
<Profpatsch>
I don’t think we should implement a SAT solver in nix, but with IfD we could even sat-solve directly from within to generate the nix code.
<Profpatsch>
So e.g. if you tell cabal about all the packages, it could in theory run its solver inside of a nix build
<Profpatsch>
Same with cargo
<Profpatsch>
though I think cargo’s solver is a lot simpler than cabal’s
<Profpatsch>
But tbh I feel like lock files solve this problem 80/20 just fine
<Profpatsch>
as long as they contain tarball hashes
nicoo has quit [Remote host closed the connection]