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
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			854 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			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
 |