about summary refs log tree commit diff
path: root/haskell-overlay.nix
diff options
context:
space:
mode:
authorGriffin Smith <root@gws.fyi>2019-12-30T16·31-0500
committerGriffin Smith <root@gws.fyi>2019-12-30T16·31-0500
commite76567b9e776070812838828d8de8220c2a461e7 (patch)
tree40a801de9684b39a3258f4f33f121b14dd407a64 /haskell-overlay.nix
parent6f427fe4d6ba9a03f122d15839298040a7cfb925 (diff)
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
Diffstat (limited to 'haskell-overlay.nix')
-rw-r--r--haskell-overlay.nix29
1 files changed, 27 insertions, 2 deletions
diff --git a/haskell-overlay.nix b/haskell-overlay.nix
index 959f63c5a03e..d3775316ad36 100644
--- a/haskell-overlay.nix
+++ b/haskell-overlay.nix
@@ -1,7 +1,32 @@
 { nixpkgs ? import ./nixpkgs.nix {} }:
 let inherit (nixpkgs) pkgs;
-in self: super: rec {
-  generic-arbitrary = pkgs.haskell.lib.appendPatch
+in self: super: with pkgs.haskell.lib; rec {
+  generic-arbitrary = appendPatch
     super.generic-arbitrary
     [ ./build/generic-arbitrary-export-garbitrary.patch ];
+
+  hgeometry =
+    appendPatch
+      (self.callHackageDirect {
+        pkg = "hgeometry";
+        ver = "0.9.0.0";
+        sha256 = "02hyvbqm57lr47w90vdgl71cfbd6lvwpqdid9fcnmxkdjbq4kv6b";
+      } {}) [ ./build/hgeometry-fix-haddock.patch ];
+
+  hgeometry-combinatorial =
+    self.callHackageDirect {
+      pkg = "hgeometry-combinatorial";
+      ver = "0.9.0.0";
+      sha256 = "12k41wd9fd1y3jd5djwcpwg2s1cva87wh14i0m1yn49zax9wl740";
+    } {};
+
+  vinyl = pkgs.haskell.lib.overrideSrc
+    (pkgs.haskell.lib.markUnbroken super.vinyl)
+    rec {
+      src = nixpkgs.fetchzip {
+        url = "mirror://hackage/vinyl-${version}/vinyl-${version}.tar.gz";
+        sha256 = "190ffrmm76fh8fi9afkcda2vldf89y7dxj10434h28mbpq55kgsx";
+      };
+      version = "0.12.0";
+    };
 }