diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,10 @@
+arduino-copilot (1.5.3) unstable; urgency=medium
+
+  * Update to copilot-3.2.
+  * Update the Examples to build using stack.
+
+ -- Joey Hess <id@joeyh.name>  Thu, 14 Jan 2021 13:22:42 -0400
+
 arduino-copilot (1.5.2) unstable; urgency=medium
 
   * Zurihac 2020 edition.
diff --git a/Examples/Blink/Demo.cabal b/Examples/Blink/Demo.cabal
new file mode 100644
--- /dev/null
+++ b/Examples/Blink/Demo.cabal
@@ -0,0 +1,10 @@
+Name: Demo
+Cabal-Version: >= 1.10
+Build-Type: Simple
+Version: 0.0
+
+Library
+  GHC-Options: -Wall -fno-warn-tabs
+  Default-Language: Haskell2010
+  Exposed-Modules: Demo
+  Build-Depends: arduino-copilot, base (>= 4.5 && < 5)
diff --git a/Examples/Blink/README b/Examples/Blink/README
--- a/Examples/Blink/README
+++ b/Examples/Blink/README
@@ -2,7 +2,7 @@
 
 To build the C code:
 
-	runghc Demo.hs
+	stack runghc Demo.hs
 
 The resulting `.ino` sketch can be loaded into the Arduino IDE and flashed
 to an Arduino board using the IDE.
diff --git a/Examples/Blink/pre-build-hook.sh b/Examples/Blink/pre-build-hook.sh
--- a/Examples/Blink/pre-build-hook.sh
+++ b/Examples/Blink/pre-build-hook.sh
@@ -1,2 +1,2 @@
 #!/bin/sh
-exec runghc Demo.hs
+exec stack runghc Demo.hs
diff --git a/Examples/Blink/stack.yaml b/Examples/Blink/stack.yaml
new file mode 100644
--- /dev/null
+++ b/Examples/Blink/stack.yaml
@@ -0,0 +1,16 @@
+packages:
+- '.'
+- '../..'
+resolver: lts-16.29
+extra-deps: 
+- copilot-3.2
+- copilot-c99-3.2
+- copilot-core-3.2
+- copilot-language-3.2
+- copilot-libraries-3.2
+- copilot-theorem-3.2
+- language-c99-0.1.2
+- language-c99-simple-0.1.2
+- language-c99-util-0.1.1
+- ansi-terminal-0.9.1
+- bimap-0.3.3
diff --git a/Examples/Button/Demo.cabal b/Examples/Button/Demo.cabal
new file mode 100644
--- /dev/null
+++ b/Examples/Button/Demo.cabal
@@ -0,0 +1,10 @@
+Name: Demo
+Cabal-Version: >= 1.10
+Build-Type: Simple
+Version: 0.0
+
+Library
+  GHC-Options: -Wall -fno-warn-tabs
+  Default-Language: Haskell2010
+  Exposed-Modules: Demo
+  Build-Depends: arduino-copilot, base (>= 4.5 && < 5)
diff --git a/Examples/Button/README b/Examples/Button/README
--- a/Examples/Button/README
+++ b/Examples/Button/README
@@ -2,7 +2,7 @@
 
 To build the C code:
 
-	runghc Demo.hs
+	stack runghc Demo.hs
 
 The resulting `.ino` sketch can be loaded into the Arduino IDE and flashed
 to an Arduino Uno board using the IDE.
diff --git a/Examples/Button/pre-build-hook.sh b/Examples/Button/pre-build-hook.sh
--- a/Examples/Button/pre-build-hook.sh
+++ b/Examples/Button/pre-build-hook.sh
@@ -1,2 +1,2 @@
 #!/bin/sh
-exec runghc Demo.hs
+exec stack runghc Demo.hs
diff --git a/Examples/Button/stack.yaml b/Examples/Button/stack.yaml
new file mode 100644
--- /dev/null
+++ b/Examples/Button/stack.yaml
@@ -0,0 +1,16 @@
+packages:
+- '.'
+- '../..'
+resolver: lts-16.29
+extra-deps: 
+- copilot-3.2
+- copilot-c99-3.2
+- copilot-core-3.2
+- copilot-language-3.2
+- copilot-libraries-3.2
+- copilot-theorem-3.2
+- language-c99-0.1.2
+- language-c99-simple-0.1.2
+- language-c99-util-0.1.1
+- ansi-terminal-0.9.1
+- bimap-0.3.3
diff --git a/Examples/EEPROM/Demo.cabal b/Examples/EEPROM/Demo.cabal
new file mode 100644
--- /dev/null
+++ b/Examples/EEPROM/Demo.cabal
@@ -0,0 +1,10 @@
+Name: Demo
+Cabal-Version: >= 1.10
+Build-Type: Simple
+Version: 0.0
+
+Library
+  GHC-Options: -Wall -fno-warn-tabs
+  Default-Language: Haskell2010
+  Exposed-Modules: Demo
+  Build-Depends: arduino-copilot, base (>= 4.5 && < 5)
diff --git a/Examples/EEPROM/README b/Examples/EEPROM/README
--- a/Examples/EEPROM/README
+++ b/Examples/EEPROM/README
@@ -15,11 +15,11 @@
 First, run this to build and upload a sketch that zeros out some values of
 the EEPROM.
 
-	ZERO=y runghc Demo.hs
+	ZERO=y stack runghc Demo.hs
 	ZERO=y make upload
 
 Then, you can build and upload the sketch that actually does something
 interesting.
 
-	runghc Demo.hs
+	stack runghc Demo.hs
 	make upload
diff --git a/Examples/EEPROM/pre-build-hook.sh b/Examples/EEPROM/pre-build-hook.sh
--- a/Examples/EEPROM/pre-build-hook.sh
+++ b/Examples/EEPROM/pre-build-hook.sh
@@ -1,2 +1,2 @@
 #!/bin/sh
-exec runghc Demo.hs
+exec stack runghc Demo.hs
diff --git a/Examples/EEPROM/stack.yaml b/Examples/EEPROM/stack.yaml
new file mode 100644
--- /dev/null
+++ b/Examples/EEPROM/stack.yaml
@@ -0,0 +1,16 @@
+packages:
+- '.'
+- '../..'
+resolver: lts-16.29
+extra-deps: 
+- copilot-3.2
+- copilot-c99-3.2
+- copilot-core-3.2
+- copilot-language-3.2
+- copilot-libraries-3.2
+- copilot-theorem-3.2
+- language-c99-0.1.2
+- language-c99-simple-0.1.2
+- language-c99-util-0.1.1
+- ansi-terminal-0.9.1
+- bimap-0.3.3
diff --git a/Examples/EEPROMrange/Demo.cabal b/Examples/EEPROMrange/Demo.cabal
new file mode 100644
--- /dev/null
+++ b/Examples/EEPROMrange/Demo.cabal
@@ -0,0 +1,10 @@
+Name: Demo
+Cabal-Version: >= 1.10
+Build-Type: Simple
+Version: 0.0
+
+Library
+  GHC-Options: -Wall -fno-warn-tabs
+  Default-Language: Haskell2010
+  Exposed-Modules: Demo
+  Build-Depends: arduino-copilot, base (>= 4.5 && < 5)
diff --git a/Examples/EEPROMrange/README b/Examples/EEPROMrange/README
--- a/Examples/EEPROMrange/README
+++ b/Examples/EEPROMrange/README
@@ -16,11 +16,11 @@
 First, run this to build and upload a sketch that zeros out the entire
 EEPROM.
 
-	ZERO=y runghc Demo.hs
+	ZERO=y stack runghc Demo.hs
 	ZERO=y make upload
 
 Then, you can build and upload the sketch that actually does something
 interesting.
 
-	runghc Demo.hs
+	stack runghc Demo.hs
 	make upload
diff --git a/Examples/EEPROMrange/pre-build-hook.sh b/Examples/EEPROMrange/pre-build-hook.sh
--- a/Examples/EEPROMrange/pre-build-hook.sh
+++ b/Examples/EEPROMrange/pre-build-hook.sh
@@ -1,2 +1,2 @@
 #!/bin/sh
-exec runghc Demo.hs
+exec stack runghc Demo.hs
diff --git a/Examples/EEPROMrange/stack.yaml b/Examples/EEPROMrange/stack.yaml
new file mode 100644
--- /dev/null
+++ b/Examples/EEPROMrange/stack.yaml
@@ -0,0 +1,16 @@
+packages:
+- '.'
+- '../..'
+resolver: lts-16.29
+extra-deps: 
+- copilot-3.2
+- copilot-c99-3.2
+- copilot-core-3.2
+- copilot-language-3.2
+- copilot-libraries-3.2
+- copilot-theorem-3.2
+- language-c99-0.1.2
+- language-c99-simple-0.1.2
+- language-c99-util-0.1.1
+- ansi-terminal-0.9.1
+- bimap-0.3.3
diff --git a/Examples/Random/Demo.cabal b/Examples/Random/Demo.cabal
new file mode 100644
--- /dev/null
+++ b/Examples/Random/Demo.cabal
@@ -0,0 +1,10 @@
+Name: Demo
+Cabal-Version: >= 1.10
+Build-Type: Simple
+Version: 0.0
+
+Library
+  GHC-Options: -Wall -fno-warn-tabs
+  Default-Language: Haskell2010
+  Exposed-Modules: Demo
+  Build-Depends: arduino-copilot, base (>= 4.5 && < 5)
diff --git a/Examples/Random/README b/Examples/Random/README
--- a/Examples/Random/README
+++ b/Examples/Random/README
@@ -2,7 +2,7 @@
 
 To build the C code:
 
-	runghc Demo.hs
+	stack runghc Demo.hs
 
 The resulting `.ino` sketch can be loaded into the Arduino IDE and flashed
 to an Arduino board using the IDE.
diff --git a/Examples/Random/pre-build-hook.sh b/Examples/Random/pre-build-hook.sh
--- a/Examples/Random/pre-build-hook.sh
+++ b/Examples/Random/pre-build-hook.sh
@@ -1,2 +1,2 @@
 #!/bin/sh
-exec runghc Demo.hs
+exec stack runghc Demo.hs
diff --git a/Examples/Random/stack.yaml b/Examples/Random/stack.yaml
new file mode 100644
--- /dev/null
+++ b/Examples/Random/stack.yaml
@@ -0,0 +1,16 @@
+packages:
+- '.'
+- '../..'
+resolver: lts-16.29
+extra-deps: 
+- copilot-3.2
+- copilot-c99-3.2
+- copilot-core-3.2
+- copilot-language-3.2
+- copilot-libraries-3.2
+- copilot-theorem-3.2
+- language-c99-0.1.2
+- language-c99-simple-0.1.2
+- language-c99-util-0.1.1
+- ansi-terminal-0.9.1
+- bimap-0.3.3
diff --git a/Examples/SerialPort/Demo.cabal b/Examples/SerialPort/Demo.cabal
new file mode 100644
--- /dev/null
+++ b/Examples/SerialPort/Demo.cabal
@@ -0,0 +1,10 @@
+Name: Demo
+Cabal-Version: >= 1.10
+Build-Type: Simple
+Version: 0.0
+
+Library
+  GHC-Options: -Wall -fno-warn-tabs
+  Default-Language: Haskell2010
+  Exposed-Modules: Demo
+  Build-Depends: arduino-copilot, base (>= 4.5 && < 5)
diff --git a/Examples/SerialPort/README b/Examples/SerialPort/README
--- a/Examples/SerialPort/README
+++ b/Examples/SerialPort/README
@@ -2,7 +2,7 @@
 
 To build the C code:
 
-	runghc Demo.hs
+	stack runghc Demo.hs
 
 The resulting `.ino` sketch can be loaded into the Arduino IDE and flashed
 to an Arduino Uno board using the IDE.
diff --git a/Examples/SerialPort/pre-build-hook.sh b/Examples/SerialPort/pre-build-hook.sh
--- a/Examples/SerialPort/pre-build-hook.sh
+++ b/Examples/SerialPort/pre-build-hook.sh
@@ -1,2 +1,2 @@
 #!/bin/sh
-exec runghc Demo.hs
+exec stack runghc Demo.hs
diff --git a/Examples/SerialPort/stack.yaml b/Examples/SerialPort/stack.yaml
new file mode 100644
--- /dev/null
+++ b/Examples/SerialPort/stack.yaml
@@ -0,0 +1,16 @@
+packages:
+- '.'
+- '../..'
+resolver: lts-16.29
+extra-deps: 
+- copilot-3.2
+- copilot-c99-3.2
+- copilot-core-3.2
+- copilot-language-3.2
+- copilot-libraries-3.2
+- copilot-theorem-3.2
+- language-c99-0.1.2
+- language-c99-simple-0.1.2
+- language-c99-util-0.1.1
+- ansi-terminal-0.9.1
+- bimap-0.3.3
diff --git a/Examples/WaterHeater/Demo.cabal b/Examples/WaterHeater/Demo.cabal
new file mode 100644
--- /dev/null
+++ b/Examples/WaterHeater/Demo.cabal
@@ -0,0 +1,10 @@
+Name: Demo
+Cabal-Version: >= 1.10
+Build-Type: Simple
+Version: 0.0
+
+Library
+  GHC-Options: -Wall -fno-warn-tabs
+  Default-Language: Haskell2010
+  Exposed-Modules: Demo
+  Build-Depends: arduino-copilot, base (>= 4.5 && < 5)
diff --git a/Examples/WaterHeater/README b/Examples/WaterHeater/README
--- a/Examples/WaterHeater/README
+++ b/Examples/WaterHeater/README
@@ -2,7 +2,7 @@
 
 To build the C code:
 
-	runghc Demo.hs
+	stack runghc Demo.hs
 
 The resulting `.ino` sketch can be loaded into the Arduino IDE and flashed
 to an Arduino Uno board using the IDE.
diff --git a/Examples/WaterHeater/pre-build-hook.sh b/Examples/WaterHeater/pre-build-hook.sh
--- a/Examples/WaterHeater/pre-build-hook.sh
+++ b/Examples/WaterHeater/pre-build-hook.sh
@@ -1,2 +1,2 @@
 #!/bin/sh
-exec runghc Demo.hs
+exec stack runghc Demo.hs
diff --git a/Examples/WaterHeater/stack.yaml b/Examples/WaterHeater/stack.yaml
new file mode 100644
--- /dev/null
+++ b/Examples/WaterHeater/stack.yaml
@@ -0,0 +1,16 @@
+packages:
+- '.'
+- '../..'
+resolver: lts-16.29
+extra-deps: 
+- copilot-3.2
+- copilot-c99-3.2
+- copilot-core-3.2
+- copilot-language-3.2
+- copilot-libraries-3.2
+- copilot-theorem-3.2
+- language-c99-0.1.2
+- language-c99-simple-0.1.2
+- language-c99-util-0.1.1
+- ansi-terminal-0.9.1
+- bimap-0.3.3
diff --git a/arduino-copilot.cabal b/arduino-copilot.cabal
--- a/arduino-copilot.cabal
+++ b/arduino-copilot.cabal
@@ -1,5 +1,5 @@
 Name: arduino-copilot
-Version: 1.5.2
+Version: 1.5.3
 Cabal-Version: >= 1.10
 License: BSD3
 Maintainer: Joey Hess <id@joeyh.name>
@@ -36,24 +36,38 @@
   Examples/Blink/Makefile
   Examples/Blink/README
   Examples/Blink/pre-build-hook.sh
+  Examples/Blink/Demo.cabal
+  Examples/Blink/stack.yaml
   Examples/Button/Makefile
   Examples/Button/README
   Examples/Button/pre-build-hook.sh
+  Examples/Button/Demo.cabal
+  Examples/Button/stack.yaml
   Examples/EEPROM/Makefile
   Examples/EEPROM/README
   Examples/EEPROM/pre-build-hook.sh
+  Examples/EEPROM/Demo.cabal
+  Examples/EEPROM/stack.yaml
   Examples/EEPROMrange/Makefile
   Examples/EEPROMrange/README
   Examples/EEPROMrange/pre-build-hook.sh
+  Examples/EEPROMrange/Demo.cabal
+  Examples/EEPROMrange/stack.yaml
   Examples/Random/Makefile
   Examples/Random/README
   Examples/Random/pre-build-hook.sh
+  Examples/Random/Demo.cabal
+  Examples/Random/stack.yaml
   Examples/SerialPort/Makefile
   Examples/SerialPort/README
   Examples/SerialPort/pre-build-hook.sh
+  Examples/SerialPort/Demo.cabal
+  Examples/SerialPort/stack.yaml
   Examples/WaterHeater/Makefile
   Examples/WaterHeater/README
   Examples/WaterHeater/pre-build-hook.sh
+  Examples/WaterHeater/Demo.cabal
+  Examples/WaterHeater/stack.yaml
 
 test-suite test
   Main-Is: test.hs
@@ -94,9 +108,9 @@
     Copilot.Arduino.Main
   Build-Depends:
     base (>= 4.5 && < 5),
-    copilot (== 3.1.*),
-    copilot-c99 (== 3.1.*),
-    copilot-language (== 3.1.*),
+    copilot (== 3.2.*),
+    copilot-c99 (== 3.2.*),
+    copilot-language (== 3.2.*),
     filepath,
     directory,
     mtl,
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,14 +1,16 @@
 packages:
 - '.'
-resolver: lts-13.29
+resolver: lts-16.29
 extra-deps:
-- copilot-3.1
-- copilot-c99-3.1
-- copilot-core-3.1
-- copilot-language-3.1
-- copilot-libraries-3.1
-- copilot-theorem-3.1
+- copilot-3.2
+- copilot-c99-3.2
+- copilot-core-3.2
+- copilot-language-3.2
+- copilot-libraries-3.2
+- copilot-theorem-3.2
 - language-c99-0.1.2
 - language-c99-simple-0.1.2
 - language-c99-util-0.1.1
+- ansi-terminal-0.9.1
+- bimap-0.3.3
 explicit-setup-deps:
