diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,15 @@
+# Changelog for grid
+
+7.8.15 Simplified nix config again.
+
+7.8.14 Simplified nix config.
+
+7.8.13 Updated copyright year.
+
+7.8.12 Revamped to work with Nix + cabal-install.
+
+7.8.11 Revamped to work with Nix + Stack.
+
+7.8.10 Revamped to work with Stack v1.7.1.
+
+## Unreleased changes
diff --git a/ChangeLog.md b/ChangeLog.md
deleted file mode 100644
--- a/ChangeLog.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Changelog for grid
-
-7.8.14 Simplified nix config.
-
-7.8.13 Updated copyright year.
-
-7.8.12 Revamped to work with Nix + cabal-install.
-
-7.8.11 Revamped to work with Nix + Stack.
-
-7.8.10 Revamped to work with Stack v1.7.1.
-
-## Unreleased changes
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2019, Amy de Buitléir
+Copyright (c) 2019-2021, Amy de Buitléir
 
 All rights reserved.
 
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/grid.cabal b/grid.cabal
--- a/grid.cabal
+++ b/grid.cabal
@@ -1,59 +1,81 @@
-cabal-version:       >=1.10
-name:                grid
-version:             7.8.14
-synopsis:            Tools for working with regular grids (graphs, lattices).
--- description:
-homepage:            https://github.com/mhwombat/grid
-bug-reports:         https://github.com/mhwombat/grid/issues
-license:             BSD3
-license-file:        LICENSE
-author:              Amy de Buitléir
-maintainer:          amy@nualeargais.ie
-copyright:           2010-2019 Amy de Buitléir
-category:            Math
-build-type:          Simple
-extra-source-files:  ChangeLog.md, README.md
+cabal-version:      2.4
+name:               grid
+version:            7.8.15
+synopsis:           Tools for working with regular grids (graphs, lattices).
+description:
+  Please see the README on GitHub at <https://github.com/mhwombat/grid#readme>
+homepage:           https://github.com/mhwombat/grid
+bug-reports:        https://github.com/mhwombat/grid/issues
+license:            BSD-3-Clause
+license-file:       LICENSE
+author:             Amy de Buitléir
+maintainer:         amy@nualeargais.ie
+copyright:          2010-2021 Amy de Buitléir
+category:           Math
+extra-source-files:
+  CHANGELOG.md
+  README.md
 
+source-repository head
+  type:     git
+  location: https://github.com/mhwombat/grid
+
+common common-stuff
+  default-language: Haskell2010
+
 library
-  exposed-modules:     
-      Math.Geometry.Grid
-      Math.Geometry.Grid.Hexagonal
-      Math.Geometry.Grid.Hexagonal2
-      Math.Geometry.Grid.HexagonalInternal
-      Math.Geometry.Grid.HexagonalInternal2
-      Math.Geometry.Grid.Octagonal
-      Math.Geometry.Grid.OctagonalInternal
-      Math.Geometry.Grid.Square
-      Math.Geometry.Grid.SquareInternal
-      Math.Geometry.Grid.Triangular
-      Math.Geometry.Grid.TriangularInternal
-      Math.Geometry.GridInternal
-      Math.Geometry.GridMap
-      Math.Geometry.GridMap.Lazy
-  other-modules:       Paths_grid
-  other-extensions:    TypeFamilies, FlexibleContexts, ConstrainedClassMethods, MultiParamTypeClasses, CPP, TypeSynonymInstances, FlexibleInstances, UndecidableInstances, DeriveGeneric
-  build-depends:       base >=4.7 && <5, containers >=0.5 && <0.7
-  hs-source-dirs:      src
-  default-language:    Haskell2010
+  import:           common-stuff
+  hs-source-dirs:   src
+  exposed-modules:
+    Math.Geometry.Grid
+    Math.Geometry.Grid.Hexagonal
+    Math.Geometry.Grid.Hexagonal2
+    Math.Geometry.Grid.HexagonalInternal
+    Math.Geometry.Grid.HexagonalInternal2
+    Math.Geometry.Grid.Octagonal
+    Math.Geometry.Grid.OctagonalInternal
+    Math.Geometry.Grid.Square
+    Math.Geometry.Grid.SquareInternal
+    Math.Geometry.Grid.Triangular
+    Math.Geometry.Grid.TriangularInternal
+    Math.Geometry.GridInternal
+    Math.Geometry.GridMap
+    Math.Geometry.GridMap.Lazy
+  other-modules:    Paths_grid
+  autogen-modules:  Paths_grid
+  ghc-options:      -Wall -Wunused-packages
+  build-depends:
+    , base        >=4.7 && <5
+    , containers  >=0.5 && <0.7
+  other-extensions:
+    CPP
+    ConstrainedClassMethods
+    DeriveGeneric
+    FlexibleContexts
+    FlexibleInstances
+    MultiParamTypeClasses
+    TypeFamilies
+    TypeSynonymInstances
+    UndecidableInstances
 
-test-suite grid-test
-  type: exitcode-stdio-1.0
-  main-is: Spec.hs
+test-suite grid-tests
+  import:         common-stuff
+  type:           exitcode-stdio-1.0
+  hs-source-dirs: test
+  main-is:        Spec.hs
   other-modules:
-      Math.Geometry.Grid.Hexagonal2QC
-      Math.Geometry.Grid.HexagonalQC
-      Math.Geometry.Grid.OctagonalQC
-      Math.Geometry.Grid.SquareQC
-      Math.Geometry.Grid.TriangularQC
-      Math.Geometry.GridMap.LazyQC
-      Math.Geometry.GridQC
-      Paths_grid
-  hs-source-dirs:      test
-  ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
+    Math.Geometry.Grid.Hexagonal2QC
+    Math.Geometry.Grid.HexagonalQC
+    Math.Geometry.Grid.OctagonalQC
+    Math.Geometry.Grid.SquareQC
+    Math.Geometry.Grid.TriangularQC
+    Math.Geometry.GridMap.LazyQC
+    Math.Geometry.GridQC
+  ghc-options:
+    -threaded -rtsopts -with-rtsopts=-N -Wall -Wunused-packages
   build-depends:
-      QuickCheck
-    , base >=4.7 && <5
+    , base
     , grid
+    , QuickCheck
     , test-framework
     , test-framework-quickcheck2
-  default-language: Haskell2010
