diff --git a/flake.nix b/flake.nix
index 9b9e1c4..5e0dc12 100644
--- a/flake.nix
+++ b/flake.nix
@@ -114,6 +114,7 @@
         clerie-sops-config
         clerie-sops-edit
         chromium-incognito
+        git-checkout-github-pr
         iot-data
         nix-remove-result-links
         nixfiles-auto-install
diff --git a/pkgs/git-checkout-github-pr/default.nix b/pkgs/git-checkout-github-pr/default.nix
new file mode 100644
index 0000000..9be9a40
--- /dev/null
+++ b/pkgs/git-checkout-github-pr/default.nix
@@ -0,0 +1,9 @@
+{ pkgs, ... }:
+
+pkgs.writeShellApplication {
+  name = "git-checkout-github-pr";
+  text = builtins.readFile ./git-checkout-github-pr.sh;
+  runtimeInputs = with pkgs; [
+    git
+  ];
+}
diff --git a/pkgs/git-checkout-github-pr/git-checkout-github-pr.sh b/pkgs/git-checkout-github-pr/git-checkout-github-pr.sh
new file mode 100755
index 0000000..b182ab7
--- /dev/null
+++ b/pkgs/git-checkout-github-pr/git-checkout-github-pr.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+set -euo pipefail
+
+ID=""
+REMOTE="origin"
+LOCAL_BRANCH=""
+
+while [[ $# -gt 0 ]]; do
+	case $1 in
+		--remote)
+			REMOTE="$2"
+			shift
+			shift
+		;;
+		--local-branch)
+			LOCAL_BRANCH="$2"
+			shift
+			shift
+		;;
+		*)
+			if [[ -z "${ID}" ]]; then
+				ID="$1"
+				shift
+			else
+				echo "Unknown option $1"
+				exit 1
+			fi
+		;;
+	esac
+done
+
+if [[ -z "${ID}" ]]; then
+	echo "Specify GitHub PR number"
+	exit 1
+fi
+
+if [[ -z "${LOCAL_BRANCH}" ]]; then
+	LOCAL_BRANCH="pr/${ID}"
+fi
+
+git fetch "${REMOTE}" "pull/${ID}/head:${LOCAL_BRANCH}"
+
+git switch "${LOCAL_BRANCH}"
diff --git a/pkgs/overlay.nix b/pkgs/overlay.nix
index 97c7fdf..1ccd9c7 100644
--- a/pkgs/overlay.nix
+++ b/pkgs/overlay.nix
@@ -7,6 +7,7 @@ final: prev: {
   clerie-sops-edit = final.callPackage ./clerie-sops/clerie-sops-edit.nix {};
   clerie-update-nixfiles = final.callPackage ./clerie-update-nixfiles/clerie-update-nixfiles.nix {};
   chromium-incognito = final.callPackage ./chromium-incognito {};
+  git-checkout-github-pr = final.callPackage ./git-checkout-github-pr {};
   iot-data = final.python3.pkgs.callPackage ./iot-data {};
   nix-remove-result-links = final.callPackage ./nix-remove-result-links {};
   nixfiles-auto-install = final.callPackage ./nixfiles/nixfiles-auto-install.nix {};