build(web): convert to bundlerEnv

This commit is contained in:
514fpv 2024-02-24 17:19:50 +08:00
parent 1203e87ea2
commit 51e540c3b3
Signed by: koishi
SSH key fingerprint: SHA256:axz0uIzzY+5W19i7QOUuiw5LSqhKfCBKPf3L4xFRxLw
5 changed files with 520 additions and 102 deletions

View file

@ -1,9 +1,7 @@
{ lib
, stdenvNoCC
, ruby
, bundler
, libffi
, gcc
, bundlerEnv
, writeShellScriptBin
, fetchFromGitHub }: let
name = "website";
@ -17,58 +15,21 @@
hash = "sha256-Uxe7PMNwzKUN2b77QbjWLxEtOOLodPOyeMuUM1eKdlc=";
};
vendor = stdenvNoCC.mkDerivation {
pname = "${name}-vendor";
inherit version;
src = ./.;
nativeBuildInputs = [ bundler ];
buildPhase = ''
export HOME="$(mktemp -d)"
bundle config set --local path "$out"
bundler package --no-install
'';
installPhase = ''
cp Gemfile* $out
'';
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = "sha256-TEpo7m4a257kAFxCCx51PRZBRF4Fk6ItX+6t4GEp6Zs=";
};
deps = stdenvNoCC.mkDerivation {
pname = "${name}-deps";
inherit version;
src = vendor;
buildInputs = [ ruby libffi gcc ];
nativeBuildInputs = [ bundler ];
buildPhase = ''
export HOME="$(mktemp -d)"
bundle config set --local path "$out"
mkdir -p "vendor"
mv ruby/*/cache "vendor/"
bundle install --local
'';
gems = bundlerEnv {
name = "${name}-gems";
inherit ruby;
gemfile = ./Gemfile;
lockfile = ./Gemfile.lock;
gemset = ./gemset.nix;
};
in stdenvNoCC.mkDerivation {
pname = name;
inherit version;
src = ./.;
buildInputs = [ ruby libffi gcc ];
nativeBuildInputs = [ (writeShellScriptBin "git" "true") bundler ];
buildInputs = [ gems ruby ];
nativeBuildInputs = [ (writeShellScriptBin "git" "true") ];
configurePhase = ''
export HOME="$(mktemp -d)"
bundle config set --local path "${deps}"
cp -r ${assets}/. assets/lib/
'';