the-nix-way / nix-flake-dev-environments

Nix flake examples for real-world development environments [maintainer=@lucperkins]
76 stars 6 forks source link

Ruby on Rails - can't install nokogiri #1

Open Quintasan opened 2 years ago

Quintasan commented 2 years ago

Hi,

I generated a clean Ruby on Rails application using rails new test --api

Then I did nix run nixpkgs#bundix -- --ruby=ruby_3_1 to get the gemset.nix

When I try using the flake.nix provided here it fails with

direnv: loading ~/sauce/myconventionlist/.envrc
direnv: using flake
error: hash mismatch in fixed-output derivation '/nix/store/khyz0a6v1sac546cr7p5g68ap0w9nm6q-nokogiri-1.13.8.gem.drv':
         specified: sha256-NE8bxm/qx4flsgU8bpCV0fM2BQg+WN3yuNTu8le8zF8=
            got:    sha256-ecJ5KYsvIv1Odg9JmQx5MENrrBsc/v97rP8ZLzDt6jw=
error: 1 dependencies of derivation '/nix/store/riky8hrjwj5v2nr3waycxfmkf12blhmz-ruby3.1.2-nokogiri-1.13.8.drv' failed to build
error: 1 dependencies of derivation '/nix/store/g70h2ldxy9axja5salw97f8in7b7674i-rails-env.drv' failed to build
error: 1 dependencies of derivation '/nix/store/91i3qy9npfjxsnncjdskyav20x0pp6dk-nix-shell-env.drv' failed to build
direnv: nix-direnv: renewed cache
direnv: export ~XDG_DATA_DIRS

I discovered there's a difference between your gemset.nix and the one I got:

I don't see any special options being passed to nokogiri in your flake configuration. How did you make this work?

jacobgreenleaf commented 2 years ago

This is related to a limitation in bundix when you depend on gems with native extensions. Current solutions are either maintaining separate unique gemset.nix files for each build arch (e.g. aarch64-darwin-gemset.nix) or mirroring what nixpkgs does to ensure it builds (passing --use-system-libraries and providing properly configured zlib, libxml2, libxslt, and on Darwin libiconv).

I ran into this issue as well (aarch64-darwin, M1 Mac Air).