mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-11-12 22:46:11 +03:00
73 lines
2.2 KiB
Nix
73 lines
2.2 KiB
Nix
|
# A repository wide shell.nix containing all tools, formatters, and inputs
|
||
|
# required to build any of the C or Haskell packages.
|
||
|
#
|
||
|
# Entering a nix-shell using this derivation will allow you to cd anywhere
|
||
|
# in the ./pkg directory and run the appropriate build tooling.
|
||
|
#
|
||
|
# See the individual ./pkg/* directories for shell.nix derivations that only
|
||
|
# propagate minimal sets of buildInputs for the related package.
|
||
|
# (import ./default.nix { }).shell
|
||
|
|
||
|
let
|
||
|
|
||
|
pkgs = import ./nix/default.nix { };
|
||
|
localPackages = import ./default.nix { };
|
||
|
|
||
|
# The non-Haskell packages which build inputs (dependencies) will be
|
||
|
# propagated into the shell. This combines nixpkgs' mkShell behaviour
|
||
|
# with Haskell.nix's shellFor.
|
||
|
#
|
||
|
# For example, adding urbit here results in gmp, h2o, zlib, etc. being
|
||
|
# made available, so you can just run make.
|
||
|
#
|
||
|
# Typically the inputs listed here also have a shell.nix in their respective
|
||
|
# source directory you can use, to avoid the Haskell/GHC dependencies.
|
||
|
inputsFrom = with localPackages; [ ent ge-additions herb libaes_siv urbit ];
|
||
|
|
||
|
merge = name: pkgs.lib.concatLists (pkgs.lib.catAttrs name inputsFrom);
|
||
|
|
||
|
in localPackages.hs.shellFor {
|
||
|
# Haskell packages from the stackProject which will have their
|
||
|
# dependencies available in the shell.
|
||
|
packages = ps:
|
||
|
with ps; [
|
||
|
lmdb-static
|
||
|
racquire
|
||
|
terminal-progress-bar
|
||
|
urbit-atom
|
||
|
urbit-azimuth
|
||
|
urbit-eventlog-lmdb
|
||
|
urbit-king
|
||
|
urbit-noun
|
||
|
urbit-noun-core
|
||
|
urbit-termsize
|
||
|
];
|
||
|
|
||
|
# Build tools to make available in the shell's PATH.
|
||
|
buildInputs = [
|
||
|
pkgs.cacert
|
||
|
pkgs.stack
|
||
|
pkgs.nixfmt
|
||
|
pkgs.shfmt
|
||
|
|
||
|
(import pkgs.sources.niv { }).niv
|
||
|
|
||
|
(localPackages.hs.hackageTool {
|
||
|
name = "ormolu";
|
||
|
version = "0.1.3.0";
|
||
|
})
|
||
|
|
||
|
(localPackages.hs.hackageTool {
|
||
|
name = "ShellCheck";
|
||
|
version = "0.7.1";
|
||
|
})
|
||
|
] ++ merge "buildInputs";
|
||
|
|
||
|
nativeBuildInputs = merge "nativeBuildInputs";
|
||
|
propagatedBuildInputs = merge "propagatedBuildInputs";
|
||
|
propagatedNativeBuildInputs = merge "propagatedNativeBuildInputs";
|
||
|
|
||
|
shellHook = pkgs.lib.concatStringsSep "\n"
|
||
|
(pkgs.lib.catAttrs "shellHook" (pkgs.lib.reverseList inputsFrom));
|
||
|
}
|