diff --git a/scripts/nix-channel.in b/scripts/nix-channel.in
index 0b499c3f7927b0c866095dfb5890ab04b8f007e9..05716645a7804f79b3cb3fc99204057121d40757 100755
--- a/scripts/nix-channel.in
+++ b/scripts/nix-channel.in
@@ -116,13 +116,13 @@ sub update {
 
         my $path;
         my $ret = -1;
-        if (-e "$tmpdir/$filename") {
-            # Get our temporary download into the store
+        if (-e "$tmpdir/$filename" && $filename =~ /\.tar\.(gz|bz2|xz)$/) {
+            # Get our temporary download into the store.
             (my $hash, $path) = `PRINT_PATH=1 QUIET=1 $Nix::Config::binDir/nix-prefetch-url 'file://$tmpdir/$filename'`;
             chomp $path;
 
             # Try unpacking the expressions to see if they'll be valid for us to process later.
-            # Like anything in nix, this will cache the result so we don't do it again outside of the loop below
+            # Like anything in nix, this will cache the result so we don't do it again outside of the loop below.
             $ret = system("$Nix::Config::binDir/nix-build --no-out-link -E 'import <nix/unpack-channel.nix> " .
                           "{ name = \"$cname\"; channelName = \"$name\"; src = builtins.storePath \"$path\"; }'");
         }