packages feed

termonad-4.2.0.1: .nix-helpers/nixpkgs.nix

# This file pins the version of nixpkgs to a known good version. The nixpkgs is
# imported with an overlay adding Termonad. It is imported from various other
# files.

{ # String representing a GHC version to use.  Normally something like
  # "ghc865".  If null, then use a known-working GHC version.
  compiler ? null
, # A path to nixpkgs.  This will be imported.  If null, use a known-working
  # nixpkgs version.
  nixpkgs ? null
, # Additional overlays to apply when importing nixpkgs.
  additionalOverlays ? []
, # Build all the examples bundled with termonad.  Normally this is only used
  # in CI for testing that the examples all still compile.
  buildExamples ? false
, # This is only used for `termonadShell`.
  #
  # If this is `true`, Hoogle will also index the Termonad libraries,
  # however this will mean the environment will need to be rebuilt every
  # time the termonad source changes.
  indexTermonad ? false
  # Extra Haskell packages that will be visible by Termonad when it compiles
  # itself.  See ./termonad-with-packages.nix for an example of how to use
  # this.
, extraHaskellPackages ? null
}:

let
  flake-lock = builtins.fromJSON (builtins.readFile ../flake.lock);

  nixpkgsSrc =
    if isNull nixpkgs
      then
        builtins.fetchTarball {
          url = "https://github.com/NixOS/nixpkgs/archive/${flake-lock.nodes.nixpkgs.locked.rev}.tar.gz";
          sha256 = flake-lock.nodes.nixpkgs.locked.narHash;
        }
      else nixpkgs;

  haskellPackagesOverlays = import ./overlays.nix;

  # This overlays sets some of the options use we at development time.
  termonadOptionsOverlay = self: super: {
    termonadCompilerVersion =
      if isNull compiler then super.termonadCompilerVersion else compiler;

    termonadBuildExamples = buildExamples;

    termonadIndexTermonad = indexTermonad;

    termonadExtraHaskellPackages =
      if isNull extraHaskellPackages then super.termonadExtraHaskellPackages else extraHaskellPackages;
  };

in

import nixpkgsSrc {
  overlays =
    haskellPackagesOverlays ++ [ termonadOptionsOverlay ] ++ additionalOverlays;
}