artemchernyak
2021-1-26 14:25:40

I am using Nix. Overall the racket package works well. You can install external packages and get everything up and running quickly with basically no configuration.

I did run into issues when trying to link docs of a local package (e.g. raco setup throws some non critical error). Nix is overall very restrictive with it’s permission and that seems to mess with the linking. I haven’t dug too much into this as linking docs for a package I’m actively working on hasn’t been super important.


soegaard2
2021-1-26 21:48:21

That backfired:


yilin.wei10
2021-1-26 22:05:07

Note - racket’s dependencies aren’t part of nixpkgs.


yilin.wei10
2021-1-26 22:05:18

Uh. I mean raco’s packages.


yilin.wei10
2021-1-26 22:08:10

It’s not a problem unique to Racket though; most language tooling doesn’t work well with Nix.


yilin.wei10
2021-1-26 22:09:08

Is it a more general assessment you want to hear about?


artemchernyak
2021-1-26 22:11:29

Yeah, most languages that do work well with nix create specific nix packages for every language dependency. I honestly think it’s the part I like least about nix (especially for a language like racket that has good language tooling)


artemchernyak
2021-1-26 22:13:20

Now run it on CS Racket :slightly_smiling_face:


laurent.orseau
2021-1-26 22:16:49

‘simpler’


laurent.orseau
2021-1-26 22:29:15

That was in June, so with BC probably. @soegaard2 could you run the same program with CS then?


laurent.orseau
2021-1-26 22:29:52

If it also fails, maybe there’s a possible optimisation to make?


soegaard2
2021-1-26 22:51:58

yuhsien77
2021-1-27 00:34:54

Thank you both! Yes, a more general assessment is welcome! :slightly_smiling_face:


yuhsien77
2021-1-27 00:35:52

Interesting that language tooling doesn’t work great with Nix, isn’t it supposed to do just that - replace the package managers of individual languages? (or was it only Guix?)


artemchernyak
2021-1-27 00:41:02

It does try to replace all package management. But making it able to do that requires an extra step.

Every language’s library authors will first off care about making the library work with that language and it’s tooling. Few, if any, will care about making work with nix. Therefore, a lot of the work to package and get things working falls on other people in the nix community.


yuhsien77
2021-1-27 01:31:08

Do people actively use this tooling in Nix?


artemchernyak
2021-1-27 04:05:35

I’ve seen it pop up here and there. Out of the corporate world, I only know of Target labs using it extensively, but they also employ 2 of the maintainers.

I use it at work a little bit to create reproducible environments without the overhead of a vm. But I also use escape hatches that don’t require me to use the nix language packages. For example python has a way to still using pip inside of nix in a fairly reproducible way, but it’s considered impure.

Racket just doesn’t have an option for anything like that.


yuhsien77
2021-1-27 06:13:14

Thank you! :slightly_smiling_face:


343519265
2021-1-27 07:18:59

That optimization is ok in scheme (see https://github.com/cisco/ChezScheme/issues/293) , but I think generally it is not allowed in racket (unless we can prove it is single-valued and don’t inspect continuation marks, probably).