d24aefd52f
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
54 lines
1.9 KiB
Nix
54 lines
1.9 KiB
Nix
{ lib, bundlerApp, ruby
|
|
, writeShellScriptBin, makeWrapper
|
|
, withOptionalDependencies ? false
|
|
}:
|
|
|
|
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";
|
|
exes = [ "jekyll" ];
|
|
|
|
inherit ruby;
|
|
gemdir = if withOptionalDependencies
|
|
then ./full
|
|
else ./basic;
|
|
|
|
buildInputs = [ makeWrapper ];
|
|
|
|
postBuild = ''
|
|
wrapProgram $out/bin/jekyll --prefix PATH : ${rubyWrapper}/bin
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "A blog-aware, static site generator, written in Ruby";
|
|
longDescription = ''
|
|
Jekyll is a simple, blog-aware, static site generator, written in Ruby.
|
|
Think of it like a file-based CMS, without all the complexity. Jekyll
|
|
takes your content, renders Markdown and Liquid templates, and spits out a
|
|
complete, static website ready to be served by Apache, Nginx or another
|
|
web server. Jekyll is the engine behind GitHub Pages, which you can use to
|
|
host sites right from your GitHub repositories.
|
|
'';
|
|
homepage = https://jekyllrb.com/;
|
|
license = licenses.mit;
|
|
maintainers = with maintainers; [ primeos pesterhazy ];
|
|
platforms = platforms.unix;
|
|
};
|
|
}
|