git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15cgit-subtree-split:24f5a642afChange-Id: I6105b3762b79126b3488359c95978cadb3efa789
		
			
				
	
	
		
			31 lines
		
	
	
	
		
			1,015 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
	
		
			1,015 B
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { pkgs, ... }:
 | |
| 
 | |
| {
 | |
|   # Create a nix-shell for Haskell development.
 | |
|   shell = { deps }: let
 | |
|     ghc = pkgs.haskellPackages.ghcWithPackages (hpkgs: deps hpkgs);
 | |
|   in pkgs.mkShell {
 | |
|     buildInputs = [ghc];
 | |
|   };
 | |
| 
 | |
|   # Build a Haskell executable. This assumes a project directory with a
 | |
|   # top-level Main.hs.
 | |
|   # - `name`: You can find the result at ./result/$name
 | |
|   # - `srcs`: Will be passed to `srcs` field of `pkgs.stdenv.mkDerivation`.
 | |
|   # - `deps`: A function that accepts `hpkgs` and returns a list of Haskell
 | |
|   # - `ghcExtensions`: A list of strings representing the language extensions to
 | |
|   #   use.
 | |
|   program = { name, srcs, deps, ghcExtensions }: let
 | |
|     ghc = pkgs.haskellPackages.ghcWithPackages (hpkgs: deps hpkgs);
 | |
|   in pkgs.stdenv.mkDerivation {
 | |
|     name = name;
 | |
|     buildInputs = [];
 | |
|     srcs = srcs;
 | |
|     buildPhase = ''
 | |
|       ${ghc}/bin/ghc -Wall Main.hs ${pkgs.lib.concatMapStrings (x: "-X${x} ") ghcExtensions}
 | |
|     '';
 | |
|     installPhase = ''
 | |
|       mkdir -p $out && mv Main $out/${name}
 | |
|     '';
 | |
|   };
 | |
| }
 |