aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/next/default.nix
blob: e03f918a587c21ff6ba46df5c1b1ea7a2e76ef8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
{ stdenv
, fetchFromGitHub
, lispPackages
, sbcl
, callPackage
}:

let

  # This is the wrapped webkitgtk platform port that we hardcode into the Lisp Core.
  # See https://github.com/atlas-engineer/next/tree/master/ports#next-platform-ports
  next-gtk-webkit = callPackage ./next-gtk-webkit.nix {};

in

stdenv.mkDerivation rec {
  pname = "next";
  version = "1.5.0";

  src = fetchFromGitHub {
    owner = "atlas-engineer";
    repo = "next";
    rev = version;
    sha256 = "1gqkp185wcwaxr8py90hqk44nqjblrrdwvig19gizrbzr2gx2zhy";
  };

  nativeBuildInputs = [
    sbcl
  ] ++ (with lispPackages; [
    prove-asdf
    trivial-features
  ]);

  buildInputs = with lispPackages; [
    alexandria
    bordeaux-threads
    cl-annot
    cl-ansi-text
    cl-css
    cl-json
    cl-markup
    cl-ppcre
    cl-ppcre-unicode
    cl-prevalence
    closer-mop
    dbus
    dexador
    ironclad
    local-time
    log4cl
    lparallel
    mk-string-metrics
    parenscript
    plump
    quri
    serapeum
    sqlite
    str
    swank
    trivia
    trivial-clipboard
    trivial-types
    unix-opts
  ];

  # This reference is unfortunately not detected by Nix
  propagatedBuildInputs = [ next-gtk-webkit ];

  prePatch = ''
    substituteInPlace source/ports/gtk-webkit.lisp \
      --replace "next-gtk-webkit" "${next-gtk-webkit}/bin/next-gtk-webkit"
  '';

  buildPhase = ''
    common-lisp.sh --eval "(require :asdf)" \
                   --eval "(asdf:load-asd (truename \"next.asd\") :name \"next\")" \
                   --eval '(asdf:make :next)' \
                   --quit
  '';

  installPhase = ''
    install -D -m0755 next $out/bin/next
  '';

  # Stripping destroys the generated SBCL image
  dontStrip = true;

  meta = with stdenv.lib; {
    description = "Infinitely extensible web-browser (with Lisp development files using WebKitGTK platform port)";
    homepage = "https://next.atlas.engineer";
    license = licenses.bsd3;
    maintainers = [ maintainers.lewo ];
    platforms = [ "x86_64-linux" ];
  };
}