diff --git a/firmware.nix b/firmware.nix
index 3219d614763a68dd8e668c02421d7f99f9f5d6e3..36e0fffbf783e2ee8d7edaad4e94e91036419882 100644
--- a/firmware.nix
+++ b/firmware.nix
@@ -32,5 +32,8 @@ let
       done
     '';
   };
-  firmware = lib.makeOverridable (a: import a.src) { src = cSrc; };
+  firmware = lib.makeOverridable (attrs: {
+    inherit (attrs) src;
+    firmware = import attrs.src;
+  }) { src = cSrc; };
 in firmware
diff --git a/hydra/firmware.nix b/hydra/firmware.nix
index 5e509555d479dcfa8094dd8a8c1f320ab5961621..d85fb905dfee5fc03e2faf08fbd4741239603eb1 100644
--- a/hydra/firmware.nix
+++ b/hydra/firmware.nix
@@ -3,11 +3,12 @@
 with pkgs;
 
 let
-  firmware = ((import ../firmware.nix {
+  firmwareSrc = import ../firmware.nix {
     inherit pkgs;
     src = <firmware>;
     srcPath = ".";
-  }).override (oldArgs: {
+  };
+  firmwareGit = firmwareSrc.override (oldArgs: {
     src = oldArgs.src.overrideAttrs (oldAttrs: {
       name = "${oldAttrs.name}-git";
       # no more git, .git is dropped by Hydra
@@ -22,7 +23,8 @@ let
           --replace "git -C" echo
       '';
     });
-  })).overrideAttrs (oldAttrs: {
+  });
+  firmware = firmwareGit.firmware.overrideAttrs (oldAttrs: {
     buildCommand = ''
       ${oldAttrs.buildCommand}