diff --git a/packages/grist/default.nix b/packages/grist/default.nix
new file mode 100644
index 0000000000000000000000000000000000000000..283a5374f4b1766aec821c7fa6a8352d00fe311a
--- /dev/null
+++ b/packages/grist/default.nix
@@ -0,0 +1,36 @@
+/*
+This is trying to replace Grist in Docker.
+
+TODO: figure out package, figure out sandboxing, figure out module
+
+heavily based on: https://github.com/NixOS/nixpkgs/blob/nixos-unstable/pkgs/servers/web-apps/hedgedoc/default.nix
+see: https://ryantm.github.io/nixpkgs/languages-frameworks/javascript/
+*/
+
+{ mkYarnPackage
+, fetchYarnDeps
+, fetchFromGitHub
+}:
+
+let
+  version = "1.1.5";
+
+  src = fetchFromGitHub {
+    owner = "gristlabs";
+    repo = "grist-core";
+    rev = "v${version}";
+    hash = "sha256-/bokCqezVtXuxt77cZF9y/Y26hq/CC2eRoO4++aj+SE=";
+  };
+
+  offlineCache = fetchYarnDeps {
+    yarnLock = src + "/yarn.lock";
+    hash = "sha256-pZCIbC8bMsxwrypUmUy1XPmFSzBZJF2gZ5yO3bhunok=";
+  };
+
+in mkYarnPackage {
+  pname = "grist";
+  inherit version src;
+
+  inherit offlineCache;
+  packageJSON = src + "/package.json";
+}