diff --git a/flake.nix b/flake.nix
index f1f3d63..67828a9 100644
--- a/flake.nix
+++ b/flake.nix
@@ -42,6 +42,7 @@
           ./home-manager/home.nix
           ./home-manager/modules/shell/zsh/default.nix
           ./home-manager/modules/shell/direnv.nix
+          ./home-manager/modules/topgrade.nix
         ];
 
         # Optionally use extraSpecialArgs
diff --git a/home-manager/home.nix b/home-manager/home.nix
index 42c3b72..81413c9 100644
--- a/home-manager/home.nix
+++ b/home-manager/home.nix
@@ -12,6 +12,7 @@
       zsh.enable = true;
       direnv.enable = true;
     };
+    topgrade.enable = true;
   };
 
   home.packages = with pkgs; [
diff --git a/home-manager/modules/topgrade.nix b/home-manager/modules/topgrade.nix
new file mode 100644
index 0000000..aa8f11d
--- /dev/null
+++ b/home-manager/modules/topgrade.nix
@@ -0,0 +1,24 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let cfg = config.modules.topgrade;
+in {
+  options.modules.topgrade = { enable = mkOption { default = false; }; };
+
+  config = mkIf cfg.enable {
+    programs.topgrade = {
+      enable = true;
+      settings = {
+        misc.no_self_update = true;
+
+        git = {
+          # Additional git repositories to pull
+          repos = [ "~/.dotfiles" ];
+
+          pull_only_repos = [ "~/dev/*" ];
+        };
+      };
+    };
+  };
+}