diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
 # Changelog for B9
 
+## 3.2.3
+
+* Provide nix flake
+
+## 3.2.2
+
+* Relax version dependencies
+
+## 3.2.1
+
+* Use with-utf8 package to get around `invalid argument (invalid character)` kind of
+  problems.
+
 ## 3.2.0
 
 * Workarounds for libvirtd path length restrictions; 
diff --git a/b9.cabal b/b9.cabal
--- a/b9.cabal
+++ b/b9.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                b9
-version:             3.2.0
+version:             3.2.3
 
 synopsis:            A tool and library for building virtual machine images.
 
@@ -72,7 +72,7 @@
                    , neat-interpolation >= 0.3 && < 1
                    , optparse-applicative >= 0.13 && < 1
                    , process >= 1.4 && < 2
-                   , shake >= 0.17.6 && < 0.19
+                   , shake >= 0.17.6 && < 0.20
                    , text == 1.2.*
                    , unordered-containers >= 0.2 && < 1
                    , vector >= 0.11 && < 1
@@ -192,7 +192,7 @@
   main-is:           Main.hs
   other-modules:     Paths_b9
   autogen-modules:   Paths_b9
-  build-depends:     b9
+  build-depends:     b9, with-utf8
   hs-source-dirs:    src/cli
   ghc-options:       -Wall
                      -fwarn-unused-binds -fno-warn-unused-do-bind -threaded
diff --git a/src/cli/Main.hs b/src/cli/Main.hs
--- a/src/cli/Main.hs
+++ b/src/cli/Main.hs
@@ -5,11 +5,13 @@
 
 import B9
 import Control.Lens ((&), (.~), _Just, set)
+import qualified GHC.IO.Encoding as GHC
 import Options.Applicative hiding (action)
 import Options.Applicative.Help.Pretty hiding ((</>))
+import Main.Utf8 (withUtf8)
 
 main :: IO ()
-main = do
+main = withUtf8 $ do
   b9Opts <- parseCommandLine
   applyB9RunParameters b9Opts
 
