Some of the docs are still outdated (like architecture and drv path inconsistencies). Change-Id: I7a6afceb008ef4cd19a764dd6c637b39fa842a2e Reviewed-on: https://cl.tvl.fyi/c/depot/+/11072 Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI Reviewed-by: edef <edef@edef.eu>
		
			
				
	
	
		
			81 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { depot, pkgs, lib, ... }:
 | |
| 
 | |
| let
 | |
| 
 | |
|   scripts = [
 | |
|     ./hello.nix
 | |
|     (substituteAll {
 | |
|       src = ./blog.nix;
 | |
|       # by making this a plain string this
 | |
|       # can be something outside the nix store!
 | |
|       blogdir = ./posts;
 | |
|     })
 | |
|   ];
 | |
| 
 | |
|   inherit (depot.nix)
 | |
|     writeExecline
 | |
|     runExecline
 | |
|     getBins
 | |
|     ;
 | |
| 
 | |
|   inherit (depot.web.bubblegum)
 | |
|     writeCGI
 | |
|     ;
 | |
| 
 | |
|   inherit (pkgs)
 | |
|     runCommandLocal
 | |
|     substituteAll
 | |
|     ;
 | |
| 
 | |
|   bins = (getBins pkgs.thttpd [ "thttpd" ])
 | |
|     // (getBins pkgs.coreutils [ "printf" "cp" "mkdir" ]);
 | |
| 
 | |
|   webRoot =
 | |
|     let
 | |
|       copyScripts = lib.concatMap
 | |
|         (path:
 | |
|           let
 | |
|             cgi = writeCGI
 | |
|               {
 | |
|                 # assume we are on NixOS since thttpd doesn't set PATH.
 | |
|                 # using third_party.nix is tricky because not everyone
 | |
|                 # has a tvix daemon running.
 | |
|                 binPath = "/run/current-system/sw/bin";
 | |
|               }
 | |
|               path;
 | |
|           in
 | |
|           [
 | |
|             "if"
 | |
|             [ bins.cp cgi "\${out}/${cgi.name}" ]
 | |
|           ])
 | |
|         scripts;
 | |
|     in
 | |
|     runExecline.local "webroot" { } ([
 | |
|       "importas"
 | |
|       "out"
 | |
|       "out"
 | |
|       "if"
 | |
|       [ bins.mkdir "-p" "$out" ]
 | |
|     ] ++ copyScripts);
 | |
| 
 | |
|   port = 9000;
 | |
| 
 | |
| in
 | |
| writeExecline "serve-examples" { } [
 | |
|   "foreground"
 | |
|   [
 | |
|     bins.printf
 | |
|     "%s\n"
 | |
|     "Running on http://localhost:${toString port}"
 | |
|   ]
 | |
|   "${bins.thttpd}"
 | |
|   "-D"
 | |
|   "-p"
 | |
|   (toString port)
 | |
|   "-l"
 | |
|   "/dev/stderr"
 | |
|   "-c"
 | |
|   "*.nix"
 | |
|   "-d"
 | |
|   webRoot
 | |
| ]
 |