diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..87e738a5 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,22 @@ +{ + "name": "nixpod-dev", + "build": { + "dockerfile": "../containers/Containerfile.debnix", + "context": ".." + }, + "customizations": { + "vscode": { + "extensions": [ + "jnoortheen.nix-ide", + "arrterian.nix-env-selector", + "sclu1034.justfile", + "ms-vscode.makefile-tools", + "ms-vsliveshare.vsli", + "eamodio.gitlens", + "github.vscode-github-actions", + "vscode-icons-team.vscode-icons", + "poimandres.theme-poimandres" + ] + } + } +} diff --git a/.github/mergify.yml b/.github/mergify.yml index 51d8106d..19541703 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -14,7 +14,6 @@ pull_request_rules: - check-success=gitguardian - check-success=nixci - check-success=debnix - - check-success=nixpod - base=main - label!=work-in-progress actions: diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..997a8dd2 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,13 @@ +{ + "recommendations": [ + "jnoortheen.nix-ide", + "arrterian.nix-env-selector", + "sclu1034.justfile", + "ms-vscode.makefile-tools", + "ms-vsliveshare.vsli", + "eamodio.gitlens", + "github.vscode-github-actions", + "vscode-icons-team.vscode-icons", + "poimandres.theme-poimandres" + ] +} diff --git a/justfile b/justfile index 70b862e6..db26674b 100644 --- a/justfile +++ b/justfile @@ -5,7 +5,7 @@ default: help # Display help help: @printf "\nRun 'just -n ' to print what would be executed...\n\n" - @just --list + @just --list --unsorted @echo "\n...by running 'just '.\n" @echo "This message is printed by 'just help' and just 'just'.\n" @@ -71,6 +71,60 @@ container_image := if container_type == "testing" { } container_tag := "latest" +architecture := if arch() == "x86_64" { + "amd64" + } else if arch() == "aarch64" { + "arm64" + } else { + error("unsupported architecture must be amd64 or arm64") + } + +opsys := if os() == "macos" { + "darwin" + } else if os() == "linux" { + "linux" + } else { + error("unsupported operating system must be darwin or linux") + } + +# Install devpod +[unix] +install-devpod: + curl -L -o devpod \ + "https://github.com/loft-sh/devpod/releases/latest/download/devpod-{{opsys}}-{{architecture}}" && \ + sudo install -c -m 0755 devpod /usr/local/bin && rm -f devpod + +# Print devpod info +devpod: + devpod version && echo + devpod context list + devpod provider list + devpod list + +# Install and use devpod kubernetes provider +provider: + devpod provider add kubernetes --silent || true \ + && devpod provider use kubernetes + +# Run latest container_image in current kube context +pod: + devpod up \ + --devcontainer-image {{container_registry}}{{container_image}}:{{container_tag}} \ + --provider kubernetes \ + --ide vscode \ + --open-ide \ + --source git:https://github.com/cameronraysmith/nixpod-home \ + --provider-option DISK_SIZE=100Gi \ + {{container_image}} + +# Interactively select devpod to stop +stop: + devpod stop + +# Interactively select devpod to delete +delete: + devpod delete + container_command_type := "sysbash" # If you want to # **test the flake manually**