News for hackers. Stuff that matters.
Re:Haskell IHP framework, from a technical and business pers... by tromp on Thursday November 11, 2021 @08:54AM (#29187824)
Is it possible to use IHP without installing Nix? I already have brew as general package manager and ghcup/cabal as Haskell toolchain/library manager and dread having yet another package manager that might interfere...
Re:Haskell IHP framework, from a technical and business pers... by _query on Thursday November 11, 2021 @09:03AM (#29187904)
It's not possible to use IHP without Nix. Using nix allows us to make fully reproducable dev environments as all versions (even e.g. the version of postgres used in dev mode) are pinned down.

The IHP docs assume no knowledge about nix, so it should still mostly be very simple to get started.

We compiled a couple more reasons why IHP uses nix in this blog post: https://ihp.digitallyinduced.com/blog/2020-07-22-why-ihp-is-...

Btw: To give IHP a try without installing Nix you can also try out the official GitPod image here https://gitpod.io/#https://github.com/gitpod-io/template-ihp :)

Re:Haskell IHP framework, from a technical and business pers... by rgoulter on Thursday November 11, 2021 @10:22AM (#29188779)
Although I see nix is required, it would be possible to run the ihp-new program with just nix installed, but without needing to change your PATH permanently. e.g. with a shell.nix file with contents:

  { pkgs ? import <nixpkgs> {} }:

  let
    ihp-new = pkgs.fetchzip {
      url = "https://downloads.digitallyinduced.com/ihp-new.tar.gz";
      sha256 = "0prpw46iyrjwzglq38n4kfn68dv2piw6dn8464ra99yl1dml465m";
    };
  in
  pkgs.mkShell {
    packages = [pkgs.cachix ihp-new];
  }
Running nix-shell with this would download the ihp-new program, and you'd have access to it (and postgres, etc., when you run with a shell with direnv enabled), but outside of the nix-shell, your PATH and other things would be unaffected.
Re:Haskell IHP framework, from a technical and business pers... by _query on Thursday November 11, 2021 @10:27AM (#29188866)
The ihp-new command is only a shell script that does a few checks and then git clones the project boilerplate:

https://github.com/digitallyinduced/ihp/blob/master/ProjectG...

The actual IHP project has it's own nix-shell environment, so that all project dependencies are managed locally (https://github.com/digitallyinduced/ihp-boilerplate/blob/mas...).