diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,8 @@
+## 0.2.1
+
+* `local-ghc-options` are always applied (independent of `copy-fields` value)
+* Add GHC-8.6.4 to known compilers
+
+## 0.2
+
+* Large configuration rework
diff --git a/fixtures/cabal.haskell-ci b/fixtures/cabal.haskell-ci
--- a/fixtures/cabal.haskell-ci
+++ b/fixtures/cabal.haskell-ci
@@ -61,6 +61,21 @@
   ghc: (>= 7.8 && <7.10) || == 8.2.2
   constraints: deepseq ==1.4.*
 
+-- Copy over additional properties specified in a cabal.project file.
+-- Possible values are:
+--   none: Do not copy any properties from the cabal.project file.
+--   some: Copy a subset of the properties from the cabal.project file. (Default)
+--         The fields and sections that are copied over are:
+--
+--         * constraints
+--         * allow-newer
+--         * reorder-goals
+--         * max-backjumps
+--         * optimization
+--         * source-repository-package
+--   all: Copy every property from the cabal.project file.
+copy-fields: some
+
 -- Include these fields "as is" in generated cabal.project
 raw-project
   keep-going: False
diff --git a/fixtures/cabal.project.copy-fields.all.stderr b/fixtures/cabal.project.copy-fields.all.stderr
--- a/fixtures/cabal.project.copy-fields.all.stderr
+++ b/fixtures/cabal.project.copy-fields.all.stderr
@@ -1,1 +1,1 @@
-*INFO* Generating Travis-CI config for testing for GHC versions: 7.8.1 7.8.2 7.8.3 7.8.4 7.10.1 7.10.2 7.10.3 8.0.1 8.0.2 8.2.1 8.2.2 8.4.1 8.4.2 8.4.3 8.4.4 8.6.1 8.6.2 8.6.3
+*INFO* Generating Travis-CI config for testing for GHC versions: 7.8.1 7.8.2 7.8.3 7.8.4 7.10.1 7.10.2 7.10.3 8.0.1 8.0.2 8.2.1 8.2.2 8.4.1 8.4.2 8.4.3 8.4.4 8.6.1 8.6.2 8.6.3 8.6.4
diff --git a/fixtures/cabal.project.copy-fields.all.travis.yml b/fixtures/cabal.project.copy-fields.all.travis.yml
--- a/fixtures/cabal.project.copy-fields.all.travis.yml
+++ b/fixtures/cabal.project.copy-fields.all.travis.yml
@@ -4,7 +4,7 @@
 #
 # For more information, see https://github.com/haskell-CI/haskell-ci
 #
-# version: 0.2
+# version: 0.2.1
 #
 language: c
 dist: xenial
@@ -30,6 +30,8 @@
 
 matrix:
   include:
+    - compiler: "ghc-8.6.4"
+      addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.4], sources: [hvr-ghc]}}
     - compiler: "ghc-8.6.3"
       addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.3], sources: [hvr-ghc]}}
     - compiler: "ghc-8.6.2"
diff --git a/fixtures/cabal.project.copy-fields.none.stderr b/fixtures/cabal.project.copy-fields.none.stderr
--- a/fixtures/cabal.project.copy-fields.none.stderr
+++ b/fixtures/cabal.project.copy-fields.none.stderr
@@ -1,1 +1,1 @@
-*INFO* Generating Travis-CI config for testing for GHC versions: 7.8.1 7.8.2 7.8.3 7.8.4 7.10.1 7.10.2 7.10.3 8.0.1 8.0.2 8.2.1 8.2.2 8.4.1 8.4.2 8.4.3 8.4.4 8.6.1 8.6.2 8.6.3
+*INFO* Generating Travis-CI config for testing for GHC versions: 7.8.1 7.8.2 7.8.3 7.8.4 7.10.1 7.10.2 7.10.3 8.0.1 8.0.2 8.2.1 8.2.2 8.4.1 8.4.2 8.4.3 8.4.4 8.6.1 8.6.2 8.6.3 8.6.4
diff --git a/fixtures/cabal.project.copy-fields.none.travis.yml b/fixtures/cabal.project.copy-fields.none.travis.yml
--- a/fixtures/cabal.project.copy-fields.none.travis.yml
+++ b/fixtures/cabal.project.copy-fields.none.travis.yml
@@ -4,7 +4,7 @@
 #
 # For more information, see https://github.com/haskell-CI/haskell-ci
 #
-# version: 0.2
+# version: 0.2.1
 #
 language: c
 dist: xenial
@@ -30,6 +30,8 @@
 
 matrix:
   include:
+    - compiler: "ghc-8.6.4"
+      addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.4], sources: [hvr-ghc]}}
     - compiler: "ghc-8.6.3"
       addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.3], sources: [hvr-ghc]}}
     - compiler: "ghc-8.6.2"
diff --git a/fixtures/cabal.project.copy-fields.some.stderr b/fixtures/cabal.project.copy-fields.some.stderr
--- a/fixtures/cabal.project.copy-fields.some.stderr
+++ b/fixtures/cabal.project.copy-fields.some.stderr
@@ -1,1 +1,1 @@
-*INFO* Generating Travis-CI config for testing for GHC versions: 7.8.1 7.8.2 7.8.3 7.8.4 7.10.1 7.10.2 7.10.3 8.0.1 8.0.2 8.2.1 8.2.2 8.4.1 8.4.2 8.4.3 8.4.4 8.6.1 8.6.2 8.6.3
+*INFO* Generating Travis-CI config for testing for GHC versions: 7.8.1 7.8.2 7.8.3 7.8.4 7.10.1 7.10.2 7.10.3 8.0.1 8.0.2 8.2.1 8.2.2 8.4.1 8.4.2 8.4.3 8.4.4 8.6.1 8.6.2 8.6.3 8.6.4
diff --git a/fixtures/cabal.project.copy-fields.some.travis.yml b/fixtures/cabal.project.copy-fields.some.travis.yml
--- a/fixtures/cabal.project.copy-fields.some.travis.yml
+++ b/fixtures/cabal.project.copy-fields.some.travis.yml
@@ -4,7 +4,7 @@
 #
 # For more information, see https://github.com/haskell-CI/haskell-ci
 #
-# version: 0.2
+# version: 0.2.1
 #
 language: c
 dist: xenial
@@ -30,6 +30,8 @@
 
 matrix:
   include:
+    - compiler: "ghc-8.6.4"
+      addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.4], sources: [hvr-ghc]}}
     - compiler: "ghc-8.6.3"
       addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.3], sources: [hvr-ghc]}}
     - compiler: "ghc-8.6.2"
diff --git a/fixtures/cabal.project.empty-line.stderr b/fixtures/cabal.project.empty-line.stderr
--- a/fixtures/cabal.project.empty-line.stderr
+++ b/fixtures/cabal.project.empty-line.stderr
@@ -1,1 +1,1 @@
-*INFO* Generating Travis-CI config for testing for GHC versions: head 7.8.1 7.8.2 7.8.3 7.8.4 7.10.1 7.10.2 7.10.3 8.0.1 8.0.2 8.2.1 8.2.2 8.4.1 8.4.2 8.4.3 8.4.4 8.6.1 8.6.2 8.6.3
+*INFO* Generating Travis-CI config for testing for GHC versions: head 7.8.1 7.8.2 7.8.3 7.8.4 7.10.1 7.10.2 7.10.3 8.0.1 8.0.2 8.2.1 8.2.2 8.4.1 8.4.2 8.4.3 8.4.4 8.6.1 8.6.2 8.6.3 8.6.4
diff --git a/fixtures/cabal.project.empty-line.travis.yml b/fixtures/cabal.project.empty-line.travis.yml
--- a/fixtures/cabal.project.empty-line.travis.yml
+++ b/fixtures/cabal.project.empty-line.travis.yml
@@ -4,7 +4,7 @@
 #
 # For more information, see https://github.com/haskell-CI/haskell-ci
 #
-# version: 0.2
+# version: 0.2.1
 #
 language: c
 dist: xenial
@@ -30,6 +30,8 @@
 
 matrix:
   include:
+    - compiler: "ghc-8.6.4"
+      addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.4], sources: [hvr-ghc]}}
     - compiler: "ghc-8.6.3"
       addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.3], sources: [hvr-ghc]}}
     - compiler: "ghc-8.6.2"
diff --git a/fixtures/cabal.project.messy.stderr b/fixtures/cabal.project.messy.stderr
--- a/fixtures/cabal.project.messy.stderr
+++ b/fixtures/cabal.project.messy.stderr
@@ -1,1 +1,1 @@
-*INFO* Generating Travis-CI config for testing for GHC versions: head 7.8.1 7.8.2 7.8.3 7.8.4 7.10.1 7.10.2 7.10.3 8.0.1 8.0.2 8.2.1 8.2.2 8.4.1 8.4.2 8.4.3 8.4.4 8.6.1 8.6.2 8.6.3
+*INFO* Generating Travis-CI config for testing for GHC versions: head 7.8.1 7.8.2 7.8.3 7.8.4 7.10.1 7.10.2 7.10.3 8.0.1 8.0.2 8.2.1 8.2.2 8.4.1 8.4.2 8.4.3 8.4.4 8.6.1 8.6.2 8.6.3 8.6.4
diff --git a/fixtures/cabal.project.messy.travis.yml b/fixtures/cabal.project.messy.travis.yml
--- a/fixtures/cabal.project.messy.travis.yml
+++ b/fixtures/cabal.project.messy.travis.yml
@@ -4,7 +4,7 @@
 #
 # For more information, see https://github.com/haskell-CI/haskell-ci
 #
-# version: 0.2
+# version: 0.2.1
 #
 language: c
 dist: xenial
@@ -30,6 +30,8 @@
 
 matrix:
   include:
+    - compiler: "ghc-8.6.4"
+      addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.4,fftw3-dev], sources: [hvr-ghc]}}
     - compiler: "ghc-8.6.3"
       addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.3,fftw3-dev], sources: [hvr-ghc]}}
     - compiler: "ghc-8.6.2"
diff --git a/fixtures/haskell-ci.cabal b/fixtures/haskell-ci.cabal
--- a/fixtures/haskell-ci.cabal
+++ b/fixtures/haskell-ci.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               haskell-ci
-version:            0.2
+version:            0.2.1
 synopsis:           Cabal package script generator for Travis-CI
 description:
   Script generator (@haskell-ci@) for [Travis-CI](https://travis-ci.org/) for continuous-integration testing of Haskell Cabal packages.
@@ -29,8 +29,9 @@
 maintainer:         hvr@gnu.org
 category:           Development
 build-type:         Simple
-tested-with:        GHC ==8.6.3 || ==8.4.4 || ==8.2.2 || ==8.0.2
+tested-with:        GHC ==8.6.4 || ==8.4.4 || ==8.2.2 || ==8.0.2
 extra-source-files:
+  CHANGELOG.md
   fixtures/cabal.haskell-ci
   fixtures/cabal.project.fail-versions
   fixtures/cabal.project.fail-versions.stderr
diff --git a/fixtures/haskell-ci.cabal.stderr b/fixtures/haskell-ci.cabal.stderr
--- a/fixtures/haskell-ci.cabal.stderr
+++ b/fixtures/haskell-ci.cabal.stderr
@@ -1,2 +1,2 @@
-*INFO* Generating Travis-CI config for testing for GHC versions: head 8.0.2 8.2.2 8.4.4 8.6.3
+*INFO* Generating Travis-CI config for testing for GHC versions: head 8.0.2 8.2.2 8.4.4 8.6.4
 *INFO* Also OSX jobs for: 8.4.4
diff --git a/fixtures/haskell-ci.cabal.travis.yml b/fixtures/haskell-ci.cabal.travis.yml
--- a/fixtures/haskell-ci.cabal.travis.yml
+++ b/fixtures/haskell-ci.cabal.travis.yml
@@ -4,7 +4,7 @@
 #
 # For more information, see https://github.com/haskell-CI/haskell-ci
 #
-# version: 0.2
+# version: 0.2.1
 #
 language: c
 dist: xenial
@@ -35,8 +35,8 @@
 
 matrix:
   include:
-    - compiler: "ghc-8.6.3"
-      addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.3], sources: [hvr-ghc]}}
+    - compiler: "ghc-8.6.4"
+      addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.6.4], sources: [hvr-ghc]}}
     - compiler: "ghc-8.4.4"
       addons: {apt: {packages: [ghc-ppa-tools,cabal-install-2.4,ghc-8.4.4], sources: [hvr-ghc]}}
     - compiler: "ghc-8.2.2"
@@ -97,16 +97,16 @@
     fi
   - grep -Ev -- '^\s*--' $CABALHOME/config | grep -Ev '^\s*$'
   - ${CABAL} new-install -w ${HC} -j2 doctest --constraint='doctest ==0.16.*'
-  - if [ $HCNUMVER -eq 80603 ] ; then ${CABAL} new-install -w ${HC} -j2 hlint --constraint='hlint ==2.1.*' ; fi
+  - if [ $HCNUMVER -eq 80604 ] ; then ${CABAL} new-install -w ${HC} -j2 hlint --constraint='hlint ==2.1.*' ; fi
   - rm -f cabal.project
   - touch cabal.project
   - "printf 'packages: \".\"\\n' >> cabal.project"
   - echo 'package haskell-ci' >> cabal.project
   - "echo '  ghc-options: -Werror' >> cabal.project"
-  - "printf 'write-ghc-environment-files: always\\n' >> cabal.project"
   - "echo 'keep-going: False' >> cabal.project"
   - echo 'package bytestring' >> cabal.project
   - "echo '  tests: False' >> cabal.project"
+  - "printf 'write-ghc-environment-files: always\\n' >> cabal.project"
   - touch cabal.project.local
   - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | grep -vE -- '^(Cabal|haskell-ci)$' | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
   - cat cabal.project || true
@@ -134,10 +134,10 @@
   - "printf 'packages: \"haskell-ci-*/*.cabal\"\\n' >> cabal.project"
   - echo 'package haskell-ci' >> cabal.project
   - "echo '  ghc-options: -Werror' >> cabal.project"
-  - "printf 'write-ghc-environment-files: always\\n' >> cabal.project"
   - "echo 'keep-going: False' >> cabal.project"
   - echo 'package bytestring' >> cabal.project
   - "echo '  tests: False' >> cabal.project"
+  - "printf 'write-ghc-environment-files: always\\n' >> cabal.project"
   - touch cabal.project.local
   - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | grep -vE -- '^(Cabal|haskell-ci)$' | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
   - cat cabal.project || true
@@ -153,8 +153,8 @@
   - (cd haskell-ci-* && doctest --fast -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable src)
 
   # hlint
-  - if [ $HCNUMVER -eq 80603 ] ; then (cd haskell-ci-* && hlint -h ${ROOTDIR}/.hlint.yaml -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable src) ; fi
-  - if [ $HCNUMVER -eq 80603 ] ; then (cd haskell-ci-* && hlint -h ${ROOTDIR}/.hlint.yaml cli) ; fi
+  - if [ $HCNUMVER -eq 80604 ] ; then (cd haskell-ci-* && hlint -h ${ROOTDIR}/.hlint.yaml -XDeriveFoldable -XDeriveFunctor -XDeriveGeneric -XDeriveTraversable src) ; fi
+  - if [ $HCNUMVER -eq 80604 ] ; then (cd haskell-ci-* && hlint -h ${ROOTDIR}/.hlint.yaml cli) ; fi
 
   # cabal check
   - (cd haskell-ci-* && ${CABAL} check)
diff --git a/haskell-ci.cabal b/haskell-ci.cabal
--- a/haskell-ci.cabal
+++ b/haskell-ci.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               haskell-ci
-version:            0.2
+version:            0.2.1
 synopsis:           Cabal package script generator for Travis-CI
 description:
   Script generator (@haskell-ci@) for [Travis-CI](https://travis-ci.org/) for continuous-integration testing of Haskell Cabal packages.
@@ -29,8 +29,9 @@
 maintainer:         hvr@gnu.org
 category:           Development
 build-type:         Simple
-tested-with:        GHC ==8.6.3 || ==8.4.4 || ==8.2.2 || ==8.0.2
+tested-with:        GHC ==8.6.4 || ==8.4.4 || ==8.2.2 || ==8.0.2
 extra-source-files:
+  CHANGELOG.md
   fixtures/cabal.haskell-ci
   fixtures/cabal.project.fail-versions
   fixtures/cabal.project.fail-versions.stderr
diff --git a/src/HaskellCI.hs b/src/HaskellCI.hs
--- a/src/HaskellCI.hs
+++ b/src/HaskellCI.hs
@@ -822,12 +822,6 @@
                     tellStrLns
                         [ sh $ "echo 'allow-newer: " ++ s ++ "' >> cabal.project"
                         ]
-                unless (null (cfgLocalGhcOptions config)) $ forM_ pkgs $ \Pkg{pkgName} -> do
-                    let s = unwords $ map (show . PU.showToken) $ cfgLocalGhcOptions config
-                    tellStrLns
-                        [ sh $ "echo 'package " ++ pkgName ++ "' >> cabal.project"
-                        , sh $ "echo '  ghc-options: " ++ s ++ "' >> cabal.project"
-                        ]
 
                 when (prjReorderGoals prj) $
                     tellStrLns
@@ -849,15 +843,25 @@
                     tellStrLns [ sh $ "echo 'source-repository-package' >> cabal.project" ]
                     tellStrLns [ sh $ "echo '  " ++ l ++ "' >> cabal.project" | l <- lines repo' ]
 
-        -- mandatory cabal.project setup
-        tellStrLns
-            [ sh $ "printf 'write-ghc-environment-files: always\\n' >> cabal.project"
-            ]
 
+        unless (null (cfgLocalGhcOptions config)) $ forM_ pkgs $ \Pkg{pkgName} -> do
+            let s = unwords $ map (show . PU.showToken) $ cfgLocalGhcOptions config
+            tellStrLns
+                [ sh $ "echo 'package " ++ pkgName ++ "' >> cabal.project"
+                , sh $ "echo '  ghc-options: " ++ s ++ "' >> cabal.project"
+                ]
+
+        -- raw-project is after local-ghc-options so we can override per package.
         unless (null (cfgRawProject config)) $ tellStrLns
             [ sh $ "echo '" ++ l ++ "' >> cabal.project"
             | l <- lines $ C.showFields' 2 $ cfgRawProject config
             , not (null l)
+            ]
+
+        -- mandatory cabal.project setup
+        -- this have to be last, so configuration doesn't override it.
+        tellStrLns
+            [ sh $ "printf 'write-ghc-environment-files: always\\n' >> cabal.project"
             ]
 
         -- also write cabal.project.local file with
diff --git a/src/HaskellCI/GHC.hs b/src/HaskellCI/GHC.hs
--- a/src/HaskellCI/GHC.hs
+++ b/src/HaskellCI/GHC.hs
@@ -16,7 +16,7 @@
     , [8,0,1],  [8,0,2]
     , [8,2,1],  [8,2,2]
     , [8,4,1],  [8,4,2], [8,4,3], [8,4,4]
-    , [8,6,1],  [8,6,2], [8,6,3]
+    , [8,6,1],  [8,6,2], [8,6,3], [8,6,4]
     ]
 
 ghcAlpha :: Maybe Version
