{ 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 { inherit ruby; }; # Rev with Ruby 3 compat bundix = (prev.bundix.override { inherit bundler; }).overrideAttrs (prev: { src = final.fetchFromGitHub { owner = "nix-community"; repo = "bundix"; rev = "3d7820efdd77281234182a9b813c2895ef49ae1f"; sha256 = "sha256-0CMDJR3xfewNuDthm3fEh6UPeRH9PURYxJ0PI1WPv4U="; }; }); danbooru = bundlerEnv final ruby; }; pkgs = (import nixpkgs { inherit system; overlays = [ overlay ]; }); in { devShells.${system} = { default = pkgs.mkShell { buildInputs = with pkgs; [ ruby_3_1 postgresql git redis curl nginx openssl coreutils ffmpeg gcc exiftool glib pkg-config ]; shellHook = '' PS1="(deps) $PS1" ''; }; bundix = pkgs.mkShell { buildInputs = [ pkgs.bundix ]; 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 ''; }; }; }