diff --git a/hydra/hydra.nix b/hydra/hydra.nix
index 555dd7971911209cec21831af0651c8ead5627be..a7dc79fa7c78c6b327f286e34f584ac8e83364d4 100644
--- a/hydra/hydra.nix
+++ b/hydra/hydra.nix
@@ -1,61 +1,64 @@
 { pkgs ? import <nixpkgs> {} }:
+let
+  jobsets = {
+    c-firmware = {
+      enabled = 1;
+      hidden = false;
+      description = "card10 C firmware";
+      nixexprinput = "rust-card10";
+      nixexprpath = "hydra/firmware.nix";
+      checkinterval = 300;
+      schedulingshares = 100;
+      enableemail = true;
+      emailoverride = "astro@spaceboyz.net";
+      keepnr = 3;
+      inputs = {
+        firmware = { type = "git"; value = "https://git.card10.badge.events.ccc.de/card10/firmware.git"; emailresponsible = false; };
+        rust-card10 = { type = "git"; value = "https://git.card10.badge.events.ccc.de/astro/rust-card10.git"; emailresponsible = false; };
+        nixpkgs = { type = "git"; value = "git://github.com/NixOS/nixpkgs.git release-19.03"; emailresponsible = false; };
+      };
+    };
+    rust-l0dables = {
+      enabled = 1;
+      hidden = false;
+      description = "card10 Rust l0dable examples";
+      nixexprinput = "rust-card10";
+      nixexprpath = "hydra/l0dables.nix";
+      checkinterval = 300;
+      schedulingshares = 100;
+      enableemail = true;
+      emailoverride = "astro@spaceboyz.net";
+      keepnr = 3;
+      inputs = {
+        firmware = { type = "git"; value = "https://git.card10.badge.events.ccc.de/card10/firmware.git"; emailresponsible = false; };
+        rust-card10 = { type = "git"; value = "https://git.card10.badge.events.ccc.de/astro/rust-card10.git"; emailresponsible = false; };
+        nixpkgs = { type = "git"; value = "git://github.com/NixOS/nixpkgs.git release-19.03"; emailresponsible = false; };
+        mozillaOverlay = { type = "git"; value = "git://github.com/mozilla/nixpkgs-mozilla.git"; emailresponsible = false; };
+      };
+    };
+    firmware-combined = {
+      enabled = 1;
+      hidden = false;
+      description = "Prepared firmware with Rust l0dables";
+      nixexprinput = "rust-card10";
+      nixexprpath = "hydra/combined.nix";
+      checkinterval = 300;
+      schedulingshares = 100;
+      enableemail = true;
+      emailoverride = "astro@spaceboyz.net";
+      keepnr = 3;
+      inputs = {
+        rust-card10 = { type = "git"; value = "https://git.card10.badge.events.ccc.de/astro/rust-card10.git"; emailresponsible = false; };
+        c-firmware = { type = "build"; value = "rust-card10:c-firmware:firmware"; emailresponsible = false; };
+        rust-l0dables = { type = "build"; value = "rust-card10:rust-l0dables:l0dables"; emailresponsible = false; };
+      };
+    };
+  };
+
+  jobsetsJson = pkgs.writeText "jobsets.json" (builtins.toJSON jobsets );
+in
 {
-  jobsets = pkgs.runCommand "spec.json" {} ''
-    cat > $out <<EOF
-    {
-        "c-firmware": {
-            "enabled": 1,
-            "hidden": false,
-            "description": "card10 C firmware",
-            "nixexprinput": "rust-card10",
-            "nixexprpath": "hydra/firmware.nix",
-            "checkinterval": 300,
-            "schedulingshares": 100,
-            "enableemail": true,
-            "emailoverride": "astro@spaceboyz.net",
-            "keepnr": 3,
-            "inputs": {
-                "firmware": { "type": "git", "value": "https://git.card10.badge.events.ccc.de/card10/firmware.git", "emailresponsible": false },
-                "rust-card10": { "type": "git", "value": "https://git.card10.badge.events.ccc.de/astro/rust-card10.git", "emailresponsible": false },
-                "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs.git release-19.03", "emailresponsible": false }
-            }
-        },
-        "rust-l0dables": {
-            "enabled": 1,
-            "hidden": false,
-            "description": "card10 Rust l0dable examples",
-            "nixexprinput": "rust-card10",
-            "nixexprpath": "hydra/l0dables.nix",
-            "checkinterval": 300,
-            "schedulingshares": 100,
-            "enableemail": true,
-            "emailoverride": "astro@spaceboyz.net",
-            "keepnr": 3,
-            "inputs": {
-                "firmware": { "type": "git", "value": "https://git.card10.badge.events.ccc.de/card10/firmware.git", "emailresponsible": false },
-                "rust-card10": { "type": "git", "value": "https://git.card10.badge.events.ccc.de/astro/rust-card10.git", "emailresponsible": false },
-                "nixpkgs": { "type": "git", "value": "git://github.com/NixOS/nixpkgs.git release-19.03", "emailresponsible": false },
-                "mozillaOverlay": { "type": "git", "value": "git://github.com/mozilla/nixpkgs-mozilla.git", "emailresponsible": false }
-            }
-        },
-        "firmware-combined": {
-            "enabled": 1,
-            "hidden": false,
-            "description": "Prepared firmware with Rust l0dables",
-            "nixexprinput": "rust-card10",
-            "nixexprpath": "hydra/combined.nix",
-            "checkinterval": 300,
-            "schedulingshares": 100,
-            "enableemail": true,
-            "emailoverride": "astro@spaceboyz.net",
-            "keepnr": 3,
-            "inputs": {
-                "rust-card10": { "type": "git", "value": "https://git.card10.badge.events.ccc.de/astro/rust-card10.git", "emailresponsible": false },
-                "c-firmware": { "type": "build", "value": "rust-card10:c-firmware:firmware", "emailresponsible": false },
-                "rust-l0dables": { "type": "build", "value": "rust-card10:rust-l0dables:l0dables", "emailresponsible": false }
-            }
-        }
-    }
-    EOF
+  jobsets = pkgs.runCommand "rust-card10.json" {} ''
+    ln -s ${jobsetsJson} $out
   '';
 }