diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 70 | 
1 files changed, 70 insertions, 0 deletions
| diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..67364305c --- /dev/null +++ b/Makefile @@ -0,0 +1,70 @@ +ifndef system +$(error unbound variable: system) +else +include 0make/tv/$(system).makefile +.ONESHELL: +.SHELLFLAGS := -eufc +.PHONY: deploy +deploy:;@ +	system_name=$(system) +	deploy_host=$(deploy_host) +	nixpkgs_url=$(nixpkgs_url) +	nixpkgs_rev=$(nixpkgs_rev) +	secrets_dir=$(secrets_dir) + +	prepush(){( +		dst=$$1 +		src=$$2 +		rsync \ +			--exclude .git \ +			--rsync-path="mkdir -p \"$$dst\" && rsync" \ +			--usermap=\*:0 \ +			--groupmap=\*:0 \ +			--delete-excluded \ +			-vrLptgoD \ +			"$$src/" "$$deploy_host:$$dst" +	)} + +	prepush /root/src/shitment "$$PWD" +	prepush /root/src/secrets "$$secrets_dir" + +	ssh -S none "$$deploy_host" -T env \ +			nixpkgs_url="$$nixpkgs_url" \ +			nixpkgs_rev="$$nixpkgs_rev" \ +			system_name="$$system_name" \ +		sh -euf \ +	<<-\EOF +		prefetch(){( +			dst=$$1 +			url=$$2 +			rev=$$3 +			mkdir -p "$$dst" +			cd "$$dst" +			if ! test -e .git; then +				git init +			fi +			if ! cur_url=$$(git config remote.origin.url 2>/dev/null); then +				git remote add origin "$$url" +			elif test "$$cur_url" != "$$url"; then +				git remote set-url origin "$$url" +			fi +			if test "$$(git rev-parse --verify HEAD 2>/dev/null)" != "$$rev"; then +				git fetch origin +				git checkout "$$rev" -- . +				git checkout -q "$$rev" +				git submodule init +				git submodule update +			fi +			git clean -dxf +		)} + +		prefetch /root/src/nixpkgs "$$nixpkgs_url" "$$nixpkgs_rev" + +		echo build system... +		NIXOS_CONFIG=/root/src/shitment/1systems/tv/$$system_name.nix \ +		NIX_PATH=src \ +			nix-build -Q -A system '<nixpkgs/nixos>' + +		result/bin/switch-to-configuration switch +	EOF +endif | 
