diff --git a/.env b/.env new file mode 100644 index 0000000..53572fc --- /dev/null +++ b/.env @@ -0,0 +1 @@ +API_TOKEN= diff --git a/.gitignore b/.gitignore index b2be92b..64c580c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ result +.env diff --git a/Makefile b/Makefile deleted file mode 100644 index 57f055a..0000000 --- a/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# Special variables -.DEFAULT_GOAL := help # Set default target to run -.SILENT: # Disable printing recipes at runtime -.ONESHELL: # Run target recipes in one shell invocation -.PHONY: build-image \ # Phony targets - clean \ - help - -help: ## Shows this help prompt. - egrep -h '\s##\s' $(MAKEFILE_LIST) \ - | sort \ - | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' - -clean: - rm -f result - -build-image: clean ## Builds Linode campatible NixOS disk image. - nix build ".#nixosConfigurations.linode-image.config.system.build.raw" - diff --git a/justfile b/justfile new file mode 100644 index 0000000..5ed3b4d --- /dev/null +++ b/justfile @@ -0,0 +1,41 @@ +set dotenv-required +set quiet := true + +UPLOAD_URL := ``` + curl -s -X POST \ + --url https://api.linode.com/v4/images/upload \ + --header 'accept: application/json' \ + --header "authorization: Bearer $API_TOKEN" \ + --header 'content-type: application/json' \ + --data ' + { + "description": "nixos", + "label": "nixos", + "region": "us-iad" + } + ' | jq .upload_to + ``` + +[private] +_default: + just --list + +[private] +_clean: + rm -f result + +[private] +_image_exists: + [ -f result/linode-image.img.gz ] \ + || echo "Linode image not found." + +[doc('Builds Linode compatible NixOS disk image.')] +build-image: _clean + nix build ".#nixosConfigurations.linode-image.config.system.build.raw" + +[doc('Uploads NixOS compatible disk image to Linode.')] +upload-image: _image_exists + curl -X PUT \ + --url {{UPLOAD_URL}} \ + -T result/linode-image.img.gz +