1{ lib
2, stdenv
3, fetchurl
4, guile
5, guile-commonmark
6, guile-reader
7, makeWrapper
8, pkg-config
9}:
10
11stdenv.mkDerivation rec {
12 pname = "haunt";
13 version = "0.2.6";
14
15 src = fetchurl {
16 url = "https://files.dthompson.us/${pname}/${pname}-${version}.tar.gz";
17 hash = "sha256-vPKLQ9hDJdimEAXwIBGgRRlefM8/77xFQoI+0J/lkNs=";
18 };
19
20 nativeBuildInputs = [
21 makeWrapper
22 pkg-config
23 ];
24 buildInputs = [
25 guile
26 guile-commonmark
27 guile-reader
28 ];
29
30 # Test suite is non-determinisitic in later versions
31 doCheck = false;
32
33 postInstall =
34 let
35 guileVersion = lib.versions.majorMinor guile.version;
36 in
37 ''
38 wrapProgram $out/bin/haunt \
39 --prefix GUILE_LOAD_PATH : "$out/share/guile/site/${guileVersion}:$GUILE_LOAD_PATH" \
40 --prefix GUILE_LOAD_COMPILED_PATH : "$out/lib/guile/${guileVersion}/site-ccache:$GUILE_LOAD_COMPILED_PATH"
41 '';
42
43 doInstallCheck = true;
44 installCheckPhase = ''
45 runHook preInstallCheck
46 $out/bin/haunt --version
47 runHook postInstallCheck
48 '';
49
50 meta = with lib; {
51 homepage = "https://dthompson.us/projects/haunt.html";
52 description = "Guile-based static site generator";
53 longDescription = ''
54 Haunt is a simple, functional, hackable static site generator that gives
55 authors the ability to treat websites as Scheme programs.
56
57 By giving authors the full expressive power of Scheme, they are able to
58 control every aspect of the site generation process. Haunt provides a
59 simple, functional build system that can be easily extended for this
60 purpose.
61
62 Haunt has no opinion about what markup language authors should use to
63 write posts, though it comes with support for the popular Markdown
64 format. Likewise, Haunt has no opinion about how authors structure their
65 sites. Though it comes with support for building simple blogs or Atom
66 feeds, authors should feel empowered to tweak, replace, or create builders
67 to do things that aren't provided out-of-the-box.
68 '';
69 license = licenses.gpl3Plus;
70 maintainers = with maintainers; [ AndersonTorres AluisioASG ];
71 platforms = guile.meta.platforms;
72 };
73}