All Projects → ursi → purs-nix

ursi / purs-nix

Licence: MIT license
Manage your PureScript projects with Nix!

Programming Languages

Nix
1067 projects

Labels

Projects that are alternatives of or similar to purs-nix

supernova
🌌 Apache Pulsar client for Haskell
Stars: ✭ 35 (+29.63%)
Mutual labels:  nix
nix-bisect
Bisect nix builds. Status: alpha/proof of concept. You'll probably have to dig into the implementation if you want to use it. Built for personal use, lightly maintained. PRs welcome. Issues welcome, but I make no promises regarding responses or fix
Stars: ✭ 72 (+166.67%)
Mutual labels:  nix
nixery
Container registry which transparently builds images using the Nix package manager. Canonical repository is https://cs.tvl.fyi/depot/-/tree/tools/nixery
Stars: ✭ 1,365 (+4955.56%)
Mutual labels:  nix
nixos-tutorial
one hour, hands-on
Stars: ✭ 118 (+337.04%)
Mutual labels:  nix
deadnix
Scan Nix files for dead code
Stars: ✭ 121 (+348.15%)
Mutual labels:  nix
nyx
⚙️Nix[OS] Configuration
Stars: ✭ 50 (+85.19%)
Mutual labels:  nix
nix-rice
A library to functionally define your configuration and theme (rice) with Nix
Stars: ✭ 43 (+59.26%)
Mutual labels:  nix
nix-config
NixOS configuration (also on WSL)
Stars: ✭ 51 (+88.89%)
Mutual labels:  nix
triton
Triton Operating System
Stars: ✭ 56 (+107.41%)
Mutual labels:  nix
nixpkgs-python-importer
Violate Nix philosophy, install Python packages mid-session with `from nixpkgs.scipy import scipy`.
Stars: ✭ 27 (+0%)
Mutual labels:  nix
easy-hls-nix
Easy Haskell Language Server tooling with Nix!
Stars: ✭ 56 (+107.41%)
Mutual labels:  nix
nix-npm-buildpackage
Build nix packages that use npm/yarn
Stars: ✭ 48 (+77.78%)
Mutual labels:  nix
haskell-template
Haskell project template using Nix + Flakes + VSCode (HLS)
Stars: ✭ 68 (+151.85%)
Mutual labels:  nix
emacs
Nightly custom Emacs builds for macOS Nix environments
Stars: ✭ 25 (-7.41%)
Mutual labels:  nix
dotfiles
NixOS system config & Home-Manager user config
Stars: ✭ 43 (+59.26%)
Mutual labels:  nix
flake-nimble
Nimble packages Nix flake [maintainer=@ehmry]
Stars: ✭ 26 (-3.7%)
Mutual labels:  nix
homeage
runtime decrypted age secrets for nix home manager
Stars: ✭ 43 (+59.26%)
Mutual labels:  nix
dotfiles
No place like ~. Nix. All. The. Things.
Stars: ✭ 48 (+77.78%)
Mutual labels:  nix
grafanix
Visualize your Nix dependencies!
Stars: ✭ 38 (+40.74%)
Mutual labels:  nix
nix-filter
a small self-container source filtering lib
Stars: ✭ 68 (+151.85%)
Mutual labels:  nix

purs-nix

purs-nix is a project which aims to allow you to use the entire PureScript ecosystem with nothing but Nix. It has been designed to take full advantage of Nix flakes but works with Nix stable as well. For help, you can reach out on the FP/Nix Zulips.

This project is currently unstable, however, it is built to be 100% pure, so your projects should never break out from under you.

Gettings Started (flakes)

  • Setup nix.
  • Run nix flake init -t github:ursi/purs-nix in a new directory to initialize a new project.
  • Run nix develop to enter a Nix shell with the purs-nix command added to your PATH.
  • Run purs-nix run to see the output of the default project.

Getting Started (Nix stable)

  • Install Nix
  • Copy the template from templates/default, and then replace flake.nix with templates/shell.nix.
  • Run nix-shell to enter a Nix shell with the purs-nix command added to your PATH.
  • Run purs-nix run to see the output of the default project.

Documentation

Packages

purs-nix has it's own package set, which is an extension of the the official package set with the following differences:

  • Package namespaces: We have package namespaces.
  • No global module namespace: All packages are not required to compile with each other.
  • Single source of truth for package info: You can define the version and dependencies of your package in its home repository and import it here. Nix is lazy so you will only ever download the information for the packages you need.
  • Easy modification: Using a modified version of the package set is as easy as forking it and changing the input of your flake ("github:ursi/purs-nix" -> "github:<your-username>/purs-nix"). If you put in a PR to add your package, using your fork of the package set is just as easy as using the official one, so you don't have to wait for the PR to be accepted to use your normal workflow.
  • Get package info: Since package info can be imported from a foreign repository, we need a way to view the info of a package easily.
    • To view the info of a non-namespaced package, use nix run github:ursi/purs-nix#package-info.<pacakge-name>.
    • To view the info or a namespaced package, use nix run github:ursi/purs-nix#package-info-ns.<namespace>.<package-name>.

TODO

This is an incomplete list of things that are currently planned.

  • FAQ/How To's: I'd like to have an FAQ, but first I see which Qs are FA'd.
  • Packaging foreign dependencies: Being able to add dependencies that rely on npm packages without needing to use npm yourself would be a huge QoL upgrade.
  • Package replacing: I'd like to have an easy API for replacing one package with another, so instead of having to use a forked version of the package set, you can add your version of a package in your namespace, and then just replace the official version with yours inside your project. Something like: replace-package tuple ursi.tuple dependencies.
  • Module renaming: Since there is no more global module namespace, you may find that two packages have the same module name and cannot compile together. I think arbitrary module renaming should be possible, so I plan to explore this as a solution. Something like: html-module.rename-module "Html" "HtmlModule.Html". I'd also like to add opt-in module name prefixing for indirect dependencies, to guarantee they never collide.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].