diff --git a/nixos/doc/manual/man-nixos-rebuild.xml b/nixos/doc/manual/man-nixos-rebuild.xml
index ab2a5d83a089..b2ca9f457a2b 100644
--- a/nixos/doc/manual/man-nixos-rebuild.xml
+++ b/nixos/doc/manual/man-nixos-rebuild.xml
@@ -91,6 +91,10 @@
flake-uri
+
+
+
+
input-nameflake-uri
@@ -594,6 +598,20 @@
+
+
+
+
+
+
+ Do not imply if
+ /etc/nixos/flake.nix exists. With this
+ option, it is possible to build non-flake NixOS configurations
+ even if the current NixOS systems uses flakes.
+
+
+
+
diff --git a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh
index 2ec30c24f2d3..0c3d64ace9c4 100755
--- a/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh
+++ b/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh
@@ -32,6 +32,7 @@ buildHost=localhost
targetHost=
remoteSudo=
verboseScript=
+noFlake=
# comma separated list of vars to preserve when using sudo
preservedSudoVars=NIXOS_INSTALL_BOOTLOADER
@@ -115,6 +116,9 @@ while [ "$#" -gt 0 ]; do
flakeFlags=(--extra-experimental-features 'nix-command flakes')
shift 1
;;
+ --no-flake)
+ noFlake=1
+ ;;
--recreate-lock-file|--no-update-lock-file|--no-write-lock-file|--no-registries|--commit-lock-file)
lockFlags+=("$i")
;;
@@ -339,7 +343,7 @@ fi
# Use /etc/nixos/flake.nix if it exists. It can be a symlink to the
# actual flake.
-if [[ -z $flake && -e /etc/nixos/flake.nix ]]; then
+if [[ -z $flake && -e /etc/nixos/flake.nix && -z $noFlake ]]; then
flake="$(dirname "$(readlink -f /etc/nixos/flake.nix)")"
fi