diff options
Diffstat (limited to 'pkgs/development/lisp-modules-new-obsolete/doc/nix-cl.md')
-rw-r--r-- | pkgs/development/lisp-modules-new-obsolete/doc/nix-cl.md | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/pkgs/development/lisp-modules-new-obsolete/doc/nix-cl.md b/pkgs/development/lisp-modules-new-obsolete/doc/nix-cl.md deleted file mode 100644 index eb84ed43777c2..0000000000000 --- a/pkgs/development/lisp-modules-new-obsolete/doc/nix-cl.md +++ /dev/null @@ -1,98 +0,0 @@ -## Use cases - -This page lists some possible use cases for nix-cl. - -## Pinning down the exact commits of libraries - -Sometimes, a bug is fixed upstream but is not yet available in package -repositories such as Quicklisp or Ultralisp. The users have to wait -for the repository maintainer to update it, or download and compile -the patched sources themselves. - -This is a manual and hard to reproduce process. By leveraging Nix, -users of `nix-cl` can essentially "run their own package repository", -written as Nix code, with all the benefits of that (shareability, -cacheability, reproducibility, version-controllable etc.) - - -## Modifying libraries with patches - -Other times, a bug in a library is not fixed upstream, but you fixed -it yourself. Or, you would like a change to the internals that the -maintainers don't like. - -Sure, you could fork the code or maintain patches manually, but that -becomes hard to manage with a lot of patches. It also doesn't have the -benefits mentioned in the previous section. - -`nix-cl` provides a way of applying version-controlled patches to any -package. - - -## Using libraries not available in repositories - -There are useful and working libraries out there, that are nonetheless -unavailable to users of package managers such as Quicklisp or -Ultralisp. Two real-world examples are [jzon] and [cl-tar]. - -`nix-cl` is not tied to any particular package source: instead, -packages are written as a Nix expression, which can be done manually -or generated/imported. - -This frees the user to have any package they want, and not be -constrained by a central repository. - -## Reproducible environments - -The usual way to develop a project involves several steps, such as: - -1. Installing a Lisp implementation -2. Installing a package manager -3. Installing the chosen libraries - -This is not necessarily reproducible. It's unlikely to come back a -year later and develop the project using the exact same versions of -the dependencies. - -Things can break between attempts at different points in time. The -repository could have updated versions in the meantime. The source -tarballs could become unreachable. - -With `nix-cl` you can have your own binary cache for Lisp libraries -and not be affected by downtime of other central repositories. - -## Testing across CL implementations - -One can manually download different Lisp implementations and run tests -of a package. This works well in most cases, but it is limited in how -you can tweak the software. Some practical examples are: - -- Statically compiling [zlib] into [SBCL] -- Building SBCL with the `--fancy` flag -- Compiling [ECL] as a static library - -These are usually hard to do manually, unless you have the necessary -compilers already configured. These combinations are usually not -available from package managers as well. - -With Nix it's easier, because it will set up the build environment -automatically. It could be useful to, for example: - -- Test against all possible compiler flag combinations -- Libc versions (ECL) -- JDK versions ([ABCL]) - -[zlib]: https://zlib.net -[SBCL]: https://sbcl.org -[ECL]: https://ecl.common-lisp.dev/ -[Ultralisp]: https://ultralisp.org/ -[jzon]: https://github.com/Zulu-Inuoe/jzon -[cl-tar]: https://gitlab.common-lisp.net/cl-tar/cl-tar -[bootstrap tools]: https://github.com/NixOS/nixpkgs/tree/master/pkgs/stdenv/linux/bootstrap-files -[nixpkgs]: https://github.com/NixOS/nixpkgs - -## Windows note - -Note that all of this still only applies to Unix systems - primarily because Nix doesn't work on Windows. - -If you have an idea how to port some of the functionality to Windows, get in touch. |