jekyll: Improve the "jekyll new" experience
See https://github.com/NixOS/nixpkgs/issues/58126 for more details. This will instruct the user how to manually finish the setup instead of failing with error messages (unfortunately it is quite a bit hacky though...). Extra note: We cannot use "bundle config --local" due to BUNDLE_GEMFILE (would attempt to create .bundle/config in the Nix store) and manually creating .bundle/config doesn't work either as these configuration variables are still overwritten by the environment variables, even though this shouldn't be the case [0]. [0]: https://bundler.io/v2.0/man/bundle-config.1.html
This commit is contained in:
parent
67ea4fcd3b
commit
d24aefd52f
@ -1,8 +1,27 @@
|
|||||||
{ lib, bundlerApp, ruby
|
{ lib, bundlerApp, ruby
|
||||||
|
, writeShellScriptBin, makeWrapper
|
||||||
, withOptionalDependencies ? false
|
, withOptionalDependencies ? false
|
||||||
}:
|
}:
|
||||||
|
|
||||||
bundlerApp rec {
|
let
|
||||||
|
rubyWrapper = writeShellScriptBin "ruby" ''
|
||||||
|
if [[ "$#" -eq 2 ]]; then
|
||||||
|
if [[ "''${1##*/}" == "bundle" && "$2" == "install" ]]; then
|
||||||
|
# See https://github.com/NixOS/nixpkgs/issues/58126 for more details.
|
||||||
|
echo 'Skipping "bundle install" as it fails due to the Nix wrapper.'
|
||||||
|
echo 'Please enter the new directory and run the following commands to serve the page:'
|
||||||
|
echo 'nix-shell -p bundler --run "bundle install --gemfile=Gemfile --path vendor/cache"'
|
||||||
|
echo 'nix-shell -p bundler --run "bundle exec jekyll serve"'
|
||||||
|
exit 0
|
||||||
|
# The following nearly works:
|
||||||
|
unset BUNDLE_FROZEN
|
||||||
|
exec ${ruby}/bin/ruby "$@" --gemfile=Gemfile --path=vendor/cache
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# Else: Don't modify the arguments:
|
||||||
|
exec ${ruby}/bin/ruby "$@"
|
||||||
|
'';
|
||||||
|
in bundlerApp rec {
|
||||||
pname = "jekyll";
|
pname = "jekyll";
|
||||||
exes = [ "jekyll" ];
|
exes = [ "jekyll" ];
|
||||||
|
|
||||||
@ -11,6 +30,12 @@ bundlerApp rec {
|
|||||||
then ./full
|
then ./full
|
||||||
else ./basic;
|
else ./basic;
|
||||||
|
|
||||||
|
buildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
wrapProgram $out/bin/jekyll --prefix PATH : ${rubyWrapper}/bin
|
||||||
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "A blog-aware, static site generator, written in Ruby";
|
description = "A blog-aware, static site generator, written in Ruby";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
|
Loading…
x
Reference in New Issue
Block a user