diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000..7d64ba48c3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,39 @@
+# SPDX-FileCopyrightText: 2024 Luke Granger-Brown <depot@lukegb.com>
+#
+# SPDX-License-Identifier: Apache-2.0
+
+/ops/secrets/
+
+# For now, ignore the freeswitch config until I have it in a good state.
+/ops/nixos/lib/freeswitch/
+
+/ops/vault/cfg/tf/
+/ops/vault/cfg/secrets.nix
+
+/rust/passgen/input/
+/rust/passgen/target/
+
+/web/quotes/theme/static/
+
+/nix/pkgs/factorio-mods/cache/
+/nix/pkgs/factorio-mods/.pytest_cache/
+
+/py/tumblrcap/dl/
+
+/py/tumblrcap/mylikes.*
+/go/trains/*/start.sh
+/go/trains/*/lukegb-trains.json
+/py/icalfilter/config/*
+/rust/*/target/*
+result-*
+
+*.sw?
+*.pyc
+*.orig
+*~
+db.sqlite3
+node_modules/
+.next/
+out/
+firebase-debug.log
+.ruff_cache/
diff --git a/nix/pkgs/default.nix b/nix/pkgs/default.nix
index 7ca0e7a23c..f976a63015 100644
--- a/nix/pkgs/default.nix
+++ b/nix/pkgs/default.nix
@@ -88,8 +88,6 @@
   srsran5g = pkgs.callPackage ./srsran5g { };
   open5gs = pkgs.callPackage ./open5gs { };
 
-  zigbee2mqtt = pkgs.callPackage ./zigbee2mqtt.nix { };
-
   seaweedfs = pkgs.callPackage ./seaweedfs { };
   bsky-pds = pkgs.callPackage ./bsky-pds { };
 } // (import ./heptapod-runner args)
diff --git a/nix/pkgs/zigbee2mqtt.nix b/nix/pkgs/zigbee2mqtt.nix
deleted file mode 100644
index 86355ba203..0000000000
--- a/nix/pkgs/zigbee2mqtt.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ zigbee2mqtt, fetchNpmDeps, fetchFromGitHub, lib, ... }:
-
-assert zigbee2mqtt.version == "1.40.2";
-
-zigbee2mqtt.overrideAttrs (old: rec {
-  version = "0-unstable-2024-10-13";
-
-  src = fetchFromGitHub {
-    owner = "lukegb";
-    repo = "zigbee2mqtt";
-    rev = "d2c92da66574aff205f758cd2c12dfdd9a614290";
-    hash = "sha256-5TY0nOWIX196zs5hw2Wk1un+QrTASPwpXMF7nD0EjS0=";
-  };
-
-  npmDepsHash = "sha256-2MTr5dF2PGUuHvJMCVzjGI8mcdkhxshf5v6GAwYUJf0=";
-  makeCacheWritable = true;
-  npmDeps = fetchNpmDeps {
-    inherit src;
-    name = "zigbee2mqtt-npm-deps";
-    hash = npmDepsHash;
-  };
-})
diff --git a/ops/nixos/default.nix b/ops/nixos/default.nix
index 10598bc6da..b69da149e3 100644
--- a/ops/nixos/default.nix
+++ b/ops/nixos/default.nix
@@ -69,6 +69,7 @@ let
         unifi-poller = false;
         snmp = false;
         minio = false;
+        tor = false;
       };
       stockExporters = lib.mapAttrsToList (exporterName: exporter: mkExporter exporterName exporter.port) (lib.filterAttrs (exporterName: exporter: (allowStockExporters.${exporterName} or true) && builtins.isAttrs exporter && exporter.enable) sys.config.services.prometheus.exporters);
       customExporters = lib.mapAttrsToList mkExporter sys.config.my.prometheus.additionalExporterPorts;
diff --git a/ops/nixos/totoro/home-assistant.nix b/ops/nixos/totoro/home-assistant.nix
index adba150fd2..d4a9137416 100644
--- a/ops/nixos/totoro/home-assistant.nix
+++ b/ops/nixos/totoro/home-assistant.nix
@@ -5,7 +5,7 @@ let
 in {
   services.zigbee2mqtt = {
     enable = true;
-    package = depot.nix.pkgs.zigbee2mqtt;
+    package = pkgs.zigbee2mqtt;
     settings = {
       homeassistant = true;
       serial.port = "/dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_eca6e9ba6596ed11ac206b4ce259fb3e-if00-port0";
diff --git a/version.nix b/version.nix
index 1f0d103a9e..485f9589d8 100644
--- a/version.nix
+++ b/version.nix
@@ -1,35 +1,7 @@
-# SPDX-FileCopyrightText: 2020 Luke Granger-Brown <depot@lukegb.com>
+# SPDX-FileCopyrightText: 2024 Luke Granger-Brown <depot@lukegb.com>
 #
 # SPDX-License-Identifier: Apache-2.0
 
-{ pkgs, ... }:
+{ lib, ... }:
 
-let
-  inherit (pkgs) lib;
-  inherit (builtins) elemAt match length;
-  hgRelativePath = path: elemAt (match ".*/\\.hg/(.*)$" path) 0;
-  hgDepth = path: length (lib.splitString "/" (hgRelativePath path));
-  hgRepo = builtins.path {
-    path = ./.hg;
-    name = "depot-hg";
-    filter = path: type: (type == "directory" && (
-        hgRelativePath path == "store" ||
-        hgRelativePath path == "merge" ||
-        hgRelativePath path == "cache")) ||
-      (type == "regular" && hgDepth path == 1) ||
-      (type == "regular" && hgDepth path == 2);
-  };
-  changesetDeriv = pkgs.runCommandLocal "depot-version" {
-    HG_REPO = hgRepo;
-    MERCURIAL = pkgs.mercurial;
-  } ''
-    export HGPLAIN=
-    mytmp=$(mktemp -d)
-    pushd $mytmp
-    ln -s $HG_REPO .hg
-    echo -n "depot-$($MERCURIAL/bin/hg id --id -r.)" > $out
-    popd
-    rm -rf $mytmp
-  '';
-in
-  builtins.readFile changesetDeriv
+"depot-" + lib.trim (builtins.readFile .git/HEAD)