{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs?ref=refs/tags/22.11"; }; outputs = { self, nixpkgs }: let system = "x86_64-linux"; rubyVer = "ruby_3_1"; bundlerEnv = pkgs: ruby: pkgs.bundlerEnv { pname = "danbooru"; inherit ruby; gemdir = ./.; }; overlay = final: prev: rec { ruby = final.${rubyVer}; bundler = prev.bundler.override { ruby = final.ruby; }; # Rev with Ruby 3 compat bundix = (prev.bundix.override { bundler = final.bundler; }).overrideAttrs (prev: { src = final.fetchFromGitHub { owner = "nix-community"; repo = "bundix"; rev = "3d7820efdd77281234182a9b813c2895ef49ae1f"; sha256 = "sha256-0CMDJR3xfewNuDthm3fEh6UPeRH9PURYxJ0PI1WPv4U="; }; }); danbooru = bundlerEnv final final.ruby; }; pkgs = (import nixpkgs { inherit system; overlays = [ overlay ]; }); in { devShells.${system} = { bundix = pkgs.mkShell { NIX_PATH = "nixpkgs=${nixpkgs}"; buildInputs = let bundix = pkgs.writeShellScriptBin "bundix" '' exec ${pkgs.bundix}/bin/bundix --ruby=${rubyVer} --gemset=gemset.nix "$@" ''; in [ pkgs.ruby pkgs.bundler bundix pkgs.postgresql pkgs.pkg-config pkgs.glib ]; shellHook = '' PS1="(bundix) $PS1" ''; }; }; packages.${system}.default = let gems = pkgs.bundlerEnv { name = "danbooru"; ruby = pkgs.ruby; gemdir = ./.; }; in pkgs.stdenv.mkDerivation { name = "danbooru"; src = ./.; buildInputs = [ gems pkgs.ruby ]; installPhase = '' mkdir -p $out cp -r $src $out ''; }; }; }