tvl-depot/shell.nix
Griffin Smith e76567b9e7 Add dungeon level generation
Add a dungeon level generator, which:

1. generates an infinite sequence of rectangular rooms within the
   dimensions of the level
2. removes any duplicates from that sequence
3. Generates a graph from the delaunay triangulation of the centerpoints
   of those rooms
4. Generates the minimum-spanning-tree of that delaunay triangulation,
   with weights given by line length in points
5. Adds back a subset (default 10-15%) of edges from the delaunay
   triangulation to the graph
6. Uses the resulting graph to draw corridors between the rooms, using a
   random point on the near edge of each room to pick the points of the
   corridors
2019-12-30 11:31:56 -05:00

30 lines
854 B
Nix

{ nixpkgs ? import ./nixpkgs.nix {}, compiler ? "ghc865", withHoogle ? true }:
let
inherit (nixpkgs) pkgs;
pkg = import ./pkg.nix { inherit nixpkgs; };
packageSet = (
if compiler == "default"
then pkgs.haskellPackages
else pkgs.haskell.packages.${compiler}
).override {
overrides = import ./haskell-overlay.nix { inherit nixpkgs; };
};
haskellPackages = (
if withHoogle
then packageSet.override {
overrides = (self: super: {
ghc = super.ghc // { withPackages = super.ghc.withHoogle; };
ghcWithPackages = self.ghc.withPackages;
} // (import ./haskell-overlay.nix { inherit nixpkgs; }) self super);
}
else packageSet
);
drv = haskellPackages.callPackage pkg {};
inherit (pkgs.haskell.lib) addBuildTools;
in
(addBuildTools drv (with haskellPackages; [ cabal-install ])).env