diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,12 @@
 For the latest version of this document, please see
 [https://github.com/DougBurke/hvega/blob/master/ihaskell-hvega/CHANGELOG.md](https://github.com/DougBurke/hvega/blob/master/ihaskell-hvega/CHANGELOG.md).
 
+## 0.4.0.0
+
+Bump to support version hvega-0.12.0.0 and version 2.0 of aeson,
+although it will need updates to IHaskell components such as
+ipython-kernel before you can combine all the pieces.
+
 ## 0.3.2.0
 
 Bump to support version hvega-0.11.0.0.
diff --git a/default.nix b/default.nix
--- a/default.nix
+++ b/default.nix
@@ -1,2 +1,50 @@
-{ nixpkgs ? import <nixpkgs> {}, compiler ? "ghc884" }:
-nixpkgs.pkgs.haskell.packages.${compiler}.callPackage ./ihaskell-hvega.nix { }
+{ sources ? import ../nix/sources.nix
+, pkgs ? import sources.nixpkgs {}
+, compiler ? "ghc8104"
+}:
+
+let
+  # since we are in a sub-directory
+  # gitignore = pkgs.nix-gitignore.gitignoreSourcePure [ ./.gitignore ];
+  gitignore = pkgs.nix-gitignore.gitignoreSourcePure [ ../.gitignore ];
+
+  myHaskellPackages = pkgs.haskell.packages.${compiler}.override {
+    overrides = hself: hsuper: {
+      "ihaskell-hvega" =
+        hself.callCabal2nix "ihaskell-hvega" (gitignore ./.) {};
+
+      "hvega" =
+        hself.callCabal2nix "hvega" (gitignore ../hvega/.) {};
+    };
+  };
+
+  # Does it make sense to add hvega/ihaskell to the packages list?
+  shell = myHaskellPackages.shellFor {
+    packages = p: [
+      p."ihaskell-hvega"
+      #p.hvega
+    ];
+    buildInputs = [
+      pkgs.haskellPackages.cabal-install
+      pkgs.haskellPackages.haskell-language-server
+      pkgs.haskellPackages.hlint
+      pkgs.haskellPackages.ihaskell
+      pkgs.niv
+    ];
+    withHoogle = true;
+  };
+
+  # exe = pkgs.haskell.lib.justStaticExecutables (myHaskellPackages."ihaskell-hvega");
+
+  # docker = pkgs.dockerTools.buildImage {
+  #   name = "{{cookiecutter.project_name}}";
+  #   config.Cmd = [ "${exe}/bin/{{cookiecutter.project_name}}" ];
+  # };
+in
+{
+  inherit shell;
+  # inherit exe;
+  # inherit docker;
+  inherit myHaskellPackages;
+  "ihaskell-hvega" = myHaskellPackages."ihaskell-hvega";
+}
diff --git a/ihaskell-hvega.cabal b/ihaskell-hvega.cabal
--- a/ihaskell-hvega.cabal
+++ b/ihaskell-hvega.cabal
@@ -1,5 +1,5 @@
 name:                ihaskell-hvega
-version:             0.3.2.0
+version:             0.4.0.0
 synopsis:            IHaskell display instance for hvega types.
 description:         Support Vega-Lite visualizations in IHaskell notebooks.
 homepage:            https://github.com/DougBurke/hvega
@@ -15,14 +15,15 @@
                      CHANGELOG.md
                      stack.yaml
                      default.nix
+                     shell.nix
 cabal-version:       1.18
 
 library
   hs-source-dirs:      src
   exposed-modules:     IHaskell.Display.Hvega
   build-depends:       base >= 4.7 && < 5
-                     , aeson >= 0.11 && < 1.6
-                     , hvega < 0.12
+                     , aeson >= 0.11 && < 2.1
+                     , hvega < 0.13
                      , ihaskell >= 0.9.1 && < 0.11
                      , text == 1.2.*
 
diff --git a/shell.nix b/shell.nix
new file mode 100644
--- /dev/null
+++ b/shell.nix
@@ -0,0 +1,1 @@
+(import ./default.nix {}).shell
diff --git a/src/IHaskell/Display/Hvega.hs b/src/IHaskell/Display/Hvega.hs
--- a/src/IHaskell/Display/Hvega.hs
+++ b/src/IHaskell/Display/Hvega.hs
@@ -3,7 +3,7 @@
 
 {-|
 Module      : IHaskell.Display.Hvega
-Copyright   : (c) Douglas Burke 2018, 2019, 2020
+Copyright   : (c) Douglas Burke 2018, 2019, 2020, 2021
 License     : BSD3
 
 Maintainer  : dburke.gw@gmail.com
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -5,4 +5,4 @@
 
 extra-deps: []
 
-resolver: lts-14.18
+resolver: lts-18.7
