diff --git a/nix/home/opdavies/default.nix b/nix/home/opdavies/default.nix
index a2210018..0be36e2b 100644
--- a/nix/home/opdavies/default.nix
+++ b/nix/home/opdavies/default.nix
@@ -48,6 +48,7 @@ in
   imports =
     [
       ../common
+      ./modules/node.nix
       shared-config
     ]
     ++ pkgs.lib.optionals (!headless) [
diff --git a/nix/home/opdavies/modules/node.nix b/nix/home/opdavies/modules/node.nix
new file mode 100644
index 00000000..b0aae355
--- /dev/null
+++ b/nix/home/opdavies/modules/node.nix
@@ -0,0 +1,17 @@
+{ config, ... }:
+
+let
+  inherit (config.xdg) configHome dataHome stateHome;
+in
+{
+  xdg.configFile."${config.home.sessionVariables.NPM_CONFIG_USERCONFIG}".text = ''
+    cache=${configHome}/npm
+    init-module=${configHome}/npm/config/npm-init.js
+    logs-dir=${stateHome}/npm/logs
+    prefix=${dataHome}/npm
+  '';
+
+  home.sessionVariables = {
+    NPM_CONFIG_USERCONFIG = "${configHome}/npm/npmrc";
+  };
+}