I am trying to get my Ruby on Rails development environment up and running. I followed the ‘Development shell’ instructions in this repo but I cannot get passed collisions in the nix store.
In my gemset.nix generated by bundix there’s multiple gems which all reference the same source, I believe this is why I am getting the collisions. Example below, but there’s lots of these with the same source!
actioncable = {
dependencies = ["actionpack" "activesupport" "nio4r" "websocket-driver" "zeitwerk"];
groups = ["default" "development"];
platforms = [];
source = {
fetchSubmodules = false;
rev = "1f6cef4ca546b3a9f7aa12c0f10c7d1d1cfbab5a";
sha256 = "0fk0a0kq1wcgdnccpxix7r7x2y21awh2ipi808gy7wma5rgayxm9";
type = "git";
url = "https://github.com/rails/rails.git";
};
version = "7.2.0.alpha";
};
actionmailbox = {
dependencies = ["actionpack" "activejob" "activerecord" "activestorage" "activesupport" "mail"];
groups = ["default"];
platforms = [];
source = {
fetchSubmodules = false;
rev = "1f6cef4ca546b3a9f7aa12c0f10c7d1d1cfbab5a";
sha256 = "0fk0a0kq1wcgdnccpxix7r7x2y21awh2ipi808gy7wma5rgayxm9";
type = "git";
url = "https://github.com/rails/rails.git";
};
version = "7.2.0.alpha";
};
My flake.nix looks like this:
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
nixpkgs-ruby.url = "github:bobvanderlinden/nixpkgs-ruby";
nixpkgs-ruby.inputs.nixpkgs.follows = "nixpkgs";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, nixpkgs-ruby, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
ruby = nixpkgs-ruby.lib.packageFromRubyVersionFile {
file = ./.ruby-version;
inherit system;
};
gems = pkgs.bundlerEnv {
name = "gemset";
inherit ruby;
gemfile = ./Gemfile;
lockfile = ./Gemfile.lock;
gemset = ./gemset.nix;
groups = [ "default" "production" "development" "test" ];
};
in
{
devShell = with pkgs;
mkShell {
buildInputs = [
gems
ruby
bundix
];
};
});
}
How would I avoid this?