git-subtree-dir: third_party/nix
git-subtree-mainline: cf8cd640c1
git-subtree-split: be66c7a6b24e3c3c6157fd37b86c7203d14acf10
		
	
			
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #! /bin/sh
 | |
| 
 | |
| export HOME=/tmp
 | |
| export NIX_REMOTE=daemon
 | |
| 
 | |
| TMP_DIR="${TMP_DIR:-/tmp/nix-export}"
 | |
| 
 | |
| @coreutils@/mkdir -p "$TMP_DIR" || true
 | |
| @coreutils@/chmod a+r "$TMP_DIR"
 | |
| 
 | |
| needed_path="?$QUERY_STRING"
 | |
| needed_path="${needed_path#*[?&]needed_path=}"
 | |
| needed_path="${needed_path%%&*}"
 | |
| #needed_path="$(echo $needed_path  | ./unhttp)"
 | |
| needed_path="${needed_path//%2B/+}"
 | |
| needed_path="${needed_path//%3D/=}"
 | |
| 
 | |
| echo needed_path: "$needed_path" >&2
 | |
| 
 | |
| NIX_STORE="${NIX_STORE_DIR:-/nix/store}"
 | |
| 
 | |
| echo NIX_STORE: "${NIX_STORE}" >&2
 | |
| 
 | |
| full_path="${NIX_STORE}"/"$needed_path"
 | |
| 
 | |
| if [ "$needed_path" != "${needed_path%.drv}" ]; then
 | |
| 	echo "Status: 403 You should create the derivation file yourself"
 | |
| 	echo "Content-Type: text/plain"
 | |
| 	echo
 | |
| 	echo "Refusing to disclose derivation contents"
 | |
| 	exit
 | |
| fi
 | |
| 
 | |
| if @bindir@/nix-store --check-validity "$full_path"; then
 | |
| 	if ! [ -e nix-export/"$needed_path".nar.gz ]; then
 | |
| 		@bindir@/nix-store --export "$full_path" | @gzip@ > "$TMP_DIR"/"$needed_path".nar.gz
 | |
| 		@coreutils@/ln -fs  "$TMP_DIR"/"$needed_path".nar.gz nix-export/"$needed_path".nar.gz 
 | |
| 	fi;
 | |
| 	echo "Status: 301 Moved"
 | |
| 	echo "Location: nix-export/"$needed_path".nar.gz"
 | |
| 	echo
 | |
| else 
 | |
| 	echo "Status: 404 No such path found"
 | |
| 	echo "Content-Type: text/plain"
 | |
| 	echo
 | |
| 	echo "Path not found:"
 | |
| 	echo "$needed_path"
 | |
| 	echo "checked:"
 | |
| 	echo "$full_path"
 | |
| fi
 | |
| 
 |