summary refs log blame commit diff
path: root/pkgs/development/lisp-modules/lisp-packages.nix
blob: 7a7cc165fe517f78f77a33f36ee7f205847813de (plain) (tree)
1
2
3
4
5
6
7
8
9
10
                                                           
                        
                                    




                                                       

                                    
                           
 
                      
 




                                                             
                                                                             





                                                                               

                                                                                 
        
                            






                                                                                     
 
                                                      
                                           


















                                                                                                                                                                 
                                          
                               


                                                            
                                                                                   





                                               
                                                                                                                                                                                    






                                  


                                       
                                   



                                              
                                                                                                                                             




                                                                                         

                                                                                                                  





                                                






















                                                                                                                                                                          

                                                 
                      

                            



                                   







                                                                                                 






                                                                                           


                                                                     

      
                                    










                            

                       







                           
                     




                             
                     





                             
                           








                                           
                                    



                                
                         
                                                                      



                         





                             



























                                                                                                                                           
                                                       













                                                                             

               
{lib, stdenv, clwrapper, pkgs, sbcl, coreutils, nix, asdf}:
let lispPackages = rec {
  inherit lib pkgs clwrapper stdenv;
  nixLib = pkgs.lib;
  callPackage = nixLib.callPackageWith lispPackages;

  buildLispPackage =  callPackage ./define-package.nix;

  quicklisp = buildLispPackage rec {
    baseName = "quicklisp";
    version = "2021-02-13";

    buildSystems = [];

    description = "The Common Lisp package manager";
    deps = [];
    src = pkgs.fetchgit {
      url = "https://github.com/quicklisp/quicklisp-client/";
      rev = "refs/tags/version-${version}";
      sha256 = "sha256:102f1chpx12h5dcf659a9kzifgfjc482ylf73fg1cs3w34zdawnl";
    };
    overrides = x: rec {
      inherit clwrapper;
      quicklispdist = pkgs.fetchurl {
        # Will usually be replaced with a fresh version anyway, but needs to be
        # a valid distinfo.txt
        url = "http://beta.quicklisp.org/dist/quicklisp/2021-12-09/distinfo.txt";
        sha256 = "sha256:0gc4cv73nl7xkfwvmkmfhfx6yqf876nfm2v24v6fky9n24sh4y6w";
      };
      buildPhase = "true; ";
      postInstall = ''
        substituteAll ${./quicklisp.sh} "$out"/bin/quicklisp
        chmod a+x "$out"/bin/quicklisp
        cp "${quicklispdist}" "$out/lib/common-lisp/quicklisp/quicklisp-distinfo.txt"
      '';
    };
  };

  quicklisp-to-nix-system-info = stdenv.mkDerivation {
    pname = "quicklisp-to-nix-system-info";
    version = "1.0.0";
    src = ./quicklisp-to-nix;
    nativeBuildInputs = [sbcl];
    buildInputs = [
      lispPackages.quicklisp coreutils
    ];
    touch = coreutils;
    nix-prefetch-url = nix;
    inherit quicklisp;
    buildPhase = ''
      ${sbcl}/bin/sbcl --eval '(load #P"${asdf}/lib/common-lisp/asdf/build/asdf.lisp")' --load $src/system-info.lisp --eval '(ql-to-nix-system-info::dump-image)'
    '';
    installPhase = ''
      mkdir -p $out/bin
      cp quicklisp-to-nix-system-info $out/bin
    '';
    dontStrip = true;
  };

  quicklisp-to-nix = stdenv.mkDerivation {
    pname = "quicklisp-to-nix";
    version = "1.0.0";
    src = ./quicklisp-to-nix;
    buildDependencies = [sbcl quicklisp-to-nix-system-info];
    buildInputs = with pkgs.lispPackages; [md5 cl-emb alexandria external-program];
    touch = coreutils;
    nix-prefetch-url = nix;
    inherit quicklisp;
    deps = [];
    system-info = quicklisp-to-nix-system-info;
    buildPhase = ''
      ${clwrapper}/bin/cl-wrapper.sh "${sbcl}/bin/sbcl" --eval '(load #P"${asdf}/lib/common-lisp/asdf/build/asdf.lisp")' --load $src/ql-to-nix.lisp --eval '(ql-to-nix::dump-image)'
    '';
    installPhase = ''
      mkdir -p $out/bin
      cp quicklisp-to-nix $out/bin
    '';
    dontStrip = true;
  };

  clx-truetype = buildLispPackage rec {
          baseName = "clx-truetype";
          version = "20160825-git";

          buildSystems = [ "clx-truetype" ];
          parasites = [ "clx-truetype-test" ];

          description = "clx-truetype is pure common lisp solution for antialiased TrueType font rendering using CLX and XRender extension.";
          deps = with pkgs.lispPackages; [
                  alexandria bordeaux-threads cl-aa cl-fad cl-paths cl-paths-ttf cl-store
                          cl-vectors clx trivial-features zpb-ttf
          ];
          src = pkgs.fetchurl {
                  url = "http://beta.quicklisp.org/archive/clx-truetype/2016-08-25/clx-truetype-20160825-git.tgz";
                  sha256 = "0ndy067rg9w6636gxwlpnw7f3ck9nrnjb03444pprik9r3c9in67";
          };

          packageName = "clx-truetype";

          asdFilesToKeep = ["clx-truetype.asd"];
  };
  cluffer = buildLispPackage rec {
    baseName = "cluffer";
    version = "2018-09-24";

    buildSystems = [ "cluffer-base" "cluffer-simple-buffer" "cluffer-simple-line" "cluffer-standard-buffer" "cluffer-standard-line" "cluffer" ];
    parasites = [ "cluffer-test" ];

    description = "General purpose text-editor buffer";
    deps = with pkgs.lispPackages; [
      acclimation clump
    ];
    src = pkgs.fetchFromGitHub {
      owner = "robert-strandh";
      repo = "cluffer";
      rev = "4aad29c276a58a593064e79972ee4d77cae0af4a";
      sha256 = "1bcg13g7qb3dr8z50aihdjqa6miz5ivlc9wsj2csgv1km1mak2kj";
      # date = 2018-09-24T04:45:36+02:00;
    };

    packageName = "cluffer";

    asdFilesToKeep = [ "cluffer.asd" "cluffer-base.asd" "cluffer-simple-buffer.asd" "cluffer-simple-line.asd" "cluffer-standard-buffer.asd" "cluffer-standard-line.asd" ];
  };
  nyxt = pkgs.lispPackages.buildLispPackage rec {
    baseName = "nyxt";
    version = "2.2.3";

    description = "Browser";

    overrides = x: {
      postInstall = ''
        echo "Building nyxt binary"
        (
          source "$out/lib/common-lisp-settings"/*-shell-config.sh
          cd "$out/lib/common-lisp"/*/
          makeFlags="''${makeFlags:-}"
          make LISP=common-lisp.sh NYXT_INTERNAL_QUICKLISP=false PREFIX="$out" $makeFlags all
          make LISP=common-lisp.sh NYXT_INTERNAL_QUICKLISP=false PREFIX="$out" $makeFlags install
          cp nyxt "$out/bin/nyxt"
        )
        NIX_LISP_PRELAUNCH_HOOK='
          nix_lisp_build_system nyxt/gtk-application \
           "(asdf/system:component-entry-point (asdf:find-system :nyxt/gtk-application))" \
           "" "(format *error-output* \"Alien objects:~%~s~%\" sb-alien::*shared-objects*)"
        ' "$out/bin/nyxt-lisp-launcher.sh"
        cp "$out/lib/common-lisp/nyxt/nyxt" "$out/bin/"
      '';

      # Prevent nyxt from trying to obtain dependencies as submodules
      makeFlags = [ "NYXT_SUBMODULES=false" ] ++ x.buildFlags or [];
    };

    deps = with pkgs.lispPackages; [
            alexandria
            bordeaux-threads
            calispel
            cl-css
            cl-json
            cl-markup
            cl-ppcre
            cl-ppcre-unicode
            cl-prevalence
            closer-mop
            cl-containers
            cl-qrencode
            clss
            cluffer
            moptilities
            dexador
            enchant
            file-attributes
            iolib
            local-time
            log4cl
            lparallel
            mk-string-metrics
            osicat
            parenscript
            quri
            serapeum
            spinneret
            str
            plump
            swank
            trivia
            trivial-clipboard
            trivial-features
            trivial-garbage
            trivial-package-local-nicknames
            trivial-types
            unix-opts
            cl-html-diff
            hu_dot_dwim_dot_defclass-star
            cl-custom-hash-table
            fset
            cl-cffi-gtk
            cl-webkit2
            cl-gobject-introspection
    ];
    src = pkgs.fetchFromGitHub {
      owner = "atlas-engineer";
      repo = "nyxt";
      rev = "${version}";
      sha256 = "1v1szbj44pwxh3k70fvg78xjfkab29dqnlafa722sppdyqd06cqp";
    };

    packageName = "nyxt";

    propagatedBuildInputs = [
      pkgs.libressl.out
      pkgs.webkitgtk
      pkgs.sbcl
    ];
  };

  mgl = buildLispPackage rec {
    baseName = "mgl";
    version = "2021-10-07";
    description = "MGL is a machine learning library for backpropagation neural networks, boltzmann machines, gaussian processes and more";
    deps = with pkgs.lispPackages; [
      alexandria closer-mop array-operations lla cl-reexport mgl-mat mgl-pax
      named-readtables pythonic-string-reader
    ];
    src = pkgs.fetchFromGitHub {
      owner = "melisgl";
      repo = "mgl";
      rev = "e697791a9bcad3b6e7b3845246a2aa55238cfef7";
      sha256 = "sha256:09sf7nq7nmf9q7bh3a5ygl2i2n0nhrx5fk2kv5ili0ckv7g9x72s";
      # date = 2021-10-18T14:15+02:00
    };
    buildSystems = [ "mgl" "mgl/test" ];
    packageName = "mgl";
    parasites = [ "mgl/test" ];
    asdFilesToKeep = [ "mgl.asd" "mgl-example.asd" "gnuplot/mgl-gnuplot.asd" "visuals/mgl-visuals.asd" ];
  };

  mgl-mat = buildLispPackage rec {
    baseName = "mgl-mat";
    version = "2021-10-11";
    description = "Multi-dimensional arrays with FFI/CUDA support";
    deps = with pkgs.lispPackages; [
      alexandria bordeaux-threads cffi cffi-grovel cl-cuda flexi-streams ieee-floats
      lla mgl-pax static-vectors trivial-garbage cl-fad
    ];
    src = pkgs.fetchFromGitHub {
      owner = "melisgl";
      repo = "mgl-mat";
      rev = "3710858bc876b1b86e50f1db2abe719e92d810e7";
      sha256 = "sha256:1aa2382mi55rp8pd31dz4d94yhfzh30vkggcvmvdfrr4ngffj0dx";
      # date = 2021-10-18T14:15+02:00
    };
    packageName = "mgl-mat";
    buildSystems = [ "mgl-mat" "mgl-mat/test" ];
    parasites = [ "mgl-mat/test" ];
    asdFilesToKeep = [ "mgl-mat.asd" ];
  };

};
in lispPackages