diff --git a/.hlint.yaml b/.hlint.yaml
new file mode 100644
--- /dev/null
+++ b/.hlint.yaml
@@ -0,0 +1,1 @@
+- ignore: {name: Use import/export shortcut}
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
--- a/.travis.yml
+++ /dev/null
@@ -1,166 +0,0 @@
-# Copy these contents into the root directory of your Github project in a file
-# named .travis.yml
-
-# Use new container infrastructure to enable caching
-sudo: false
-
-# Do not choose a language; we provide our own build tools.
-language: generic
-
-# Caching so the next build will be fast too.
-cache:
-  directories:
-  - $HOME/.ghc
-  - $HOME/.cabal
-  - $HOME/.stack
-
-# The different configurations we want to test. We have BUILD=cabal which uses
-# cabal-install, and BUILD=stack which uses Stack. More documentation on each
-# of those below.
-#
-# We set the compiler values here to tell Travis to use a different
-# cache file per set of arguments.
-#
-# If you need to have different apt packages for each combination in the
-# matrix, you can use a line such as:
-#     addons: {apt: {packages: [libfcgi-dev,libgmp-dev]}}
-matrix:
-  include:
-  # We grab the appropriate GHC and cabal-install versions from hvr's PPA. See:
-  # https://github.com/hvr/multi-ghc-travis
-  - env: BUILD=cabal GHCVER=7.8.4 CABALVER=1.18 HAPPYVER=1.19.5 ALEXVER=3.1.7
-    compiler: ": #GHC 7.8.4"
-    addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
-  - env: BUILD=cabal GHCVER=7.10.3 CABALVER=1.22 HAPPYVER=1.19.5 ALEXVER=3.1.7
-    compiler: ": #GHC 7.10.3"
-    addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
-  - env: BUILD=cabal GHCVER=8.0.2 CABALVER=1.24 HAPPYVER=1.19.5 ALEXVER=3.1.7
-    compiler: ": #GHC 8.0.2"
-    addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
-  - env: BUILD=cabal GHCVER=8.2.1 CABALVER=2.0 HAPPYVER=1.19.5 ALEXVER=3.1.7
-    compiler: ": #GHC 8.2.1"
-    addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.1,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
-  - env: BUILD=cabal GHCVER=8.2.2 CABALVER=2.0 HAPPYVER=1.19.5 ALEXVER=3.1.7
-    compiler: ": #GHC 8.2.2"
-    addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
-
-  # Build with the newest GHC and cabal-install. This is an accepted failure,
-  # see below.
-  - env: BUILD=cabal GHCVER=head  CABALVER=head HAPPYVER=1.19.5 ALEXVER=3.1.7
-    compiler: ": #GHC HEAD"
-    addons: {apt: {packages: [cabal-install-head,ghc-head,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
-
-  # The Stack builds. We can pass in arbitrary Stack arguments via the ARGS
-  # variable, such as using --stack-yaml to point to a different file.
-  - env: BUILD=stack ARGS=""
-    compiler: ": #stack default"
-    addons: {apt: {packages: [libgmp-dev]}}
-
-  - env: BUILD=stack ARGS="--resolver lts-2" STACK_YAML=stack-lts-2.yaml
-    compiler: ": #stack 7.8.4"
-    addons: {apt: {packages: [libgmp-dev]}}
-
-  - env: BUILD=stack ARGS="--resolver lts-3" STACK_YAML=stack-lts-3.yaml
-    compiler: ": #stack 7.10.2"
-    addons: {apt: {packages: [libgmp-dev]}}
-
-  - env: BUILD=stack ARGS="--resolver lts-6" STACK_YAML=stack-lts-6.yaml
-    compiler: ": #stack 7.10.3"
-    addons: {apt: {packages: [libgmp-dev]}}
-
-  - env: BUILD=stack ARGS="--resolver lts-7" STACK_YAML=stack-lts-7.yaml
-    compiler: ": #stack 8.0.1"
-    addons: {apt: {packages: [libgmp-dev]}}
-
-  - env: BUILD=stack ARGS="--resolver lts-9" STACK_YAML=stack-lts-9.yaml
-    compiler: ": #stack 8.0.2"
-    addons: {apt: {packages: [libgmp-dev]}}
-
-  # Nightly builds are allowed to fail
-  - env: BUILD=stack ARGS="--resolver nightly"
-    compiler: ": #stack nightly"
-    addons: {apt: {packages: [libgmp-dev]}}
-
-  allow_failures:
-  - env: BUILD=cabal GHCVER=head  CABALVER=head HAPPYVER=1.19.5 ALEXVER=3.1.7
-  - env: BUILD=stack ARGS="--resolver nightly"
-
-before_install:
-# Using compiler above sets CC to an invalid value, so unset it
-- unset CC
-
-# We want to always allow newer versions of packages when building on GHC HEAD
-- CABALARGS="--flags=-test-hlint"
-- if [ "x$GHCVER" = "xhead" ]; then CABALARGS=--allow-newer; fi
-
-# Download and unpack the stack executable
-- export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$HOME/.local/bin:/opt/alex/$ALEXVER/bin:/opt/happy/$HAPPYVER/bin:$HOME/.cabal/bin:$PATH
-- mkdir -p ~/.local/bin
-- |
-  if [ `uname` = "Darwin" ]
-  then
-    travis_retry curl --insecure -L https://www.stackage.org/stack/osx-x86_64 | tar xz --strip-components=1 --include '*/stack' -C ~/.local/bin
-  else
-    travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
-  fi
-
-  # Use the more reliable S3 mirror of Hackage
-  mkdir -p $HOME/.cabal
-  echo 'remote-repo: hackage.haskell.org:http://hackage.fpcomplete.com/' > $HOME/.cabal/config
-  echo 'remote-repo-cache: $HOME/.cabal/packages' >> $HOME/.cabal/config
-
-  if [ "$CABALVER" != "1.16" ]
-  then
-    echo 'jobs: $ncpus' >> $HOME/.cabal/config
-  fi
-
-install:
-- echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
-- if [ -f configure.ac ]; then autoreconf -i; fi
-- |
-  set -ex
-  case "$BUILD" in
-    stack)
-      stack --no-terminal --install-ghc $ARGS test --bench --only-dependencies
-      ;;
-    cabal)
-      cabal --version
-      travis_retry cabal update
-
-      # Get the list of packages from the stack.yaml file
-      PACKAGES=$(stack --install-ghc query locals | grep '^ *path' | sed 's@^ *path:@@')
-
-      cabal install --only-dependencies --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES
-      ;;
-  esac
-  set +ex
-
-script:
-- |
-  set -ex
-  case "$BUILD" in
-    stack)
-      stack --no-terminal $ARGS test --bench --no-run-benchmarks --haddock --no-haddock-deps
-      ;;
-    cabal)
-      cabal install --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES
-
-      ORIGDIR=$(pwd)
-      for dir in $PACKAGES
-      do
-        cd $dir
-        cabal check || [ "$CABALVER" == "1.16" ]
-        cabal sdist
-        PKGVER=$(cabal info . | awk '{print $2;exit}')
-        SRC_TGZ=$PKGVER.tar.gz
-        cd dist
-        tar zxfv "$SRC_TGZ"
-        cd "$PKGVER"
-        cabal configure --enable-tests $CABALARGS
-        cabal build
-        cabal test
-        cd $ORIGDIR
-      done
-      ;;
-  esac
-  set +ex
diff --git a/Hlint.hs b/Hlint.hs
deleted file mode 100644
--- a/Hlint.hs
+++ /dev/null
@@ -1,4 +0,0 @@
-import "hint" HLint.HLint
-
-ignore "Use import/export shortcut"
-
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2017, Quixoftic, LLC
+Copyright (c) 2018, Quixoftic, LLC
 
 All rights reserved.
 
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,24 @@
+## 0.9.0.4 (2018-01-29)
+
+Note that this will be the last release in the `0.9` series, excepting
+critical bug fixes or security issues. The next release is expected to
+(slightly) break module export compatibility, but in a way that should
+not affect too many users.
+
+Changes:
+  - The `test-hlint` cabal flag is now disabled by default.
+  - Tested with GHC 8.2.2.
+  - Clean up the sdist to include just what's required for Cabal/Stack
+    builds.
+  - Updated copyright year.
+  - Requires `hlint` 2.0.*.
+  - More Nix and Hydra improvements, including Nix/Hydra builds
+    against LTS package sets, rather than just the pinned Nixpkgs
+    package set.
+
+Fixes:
+  - All dependencies should now have PVP bounds.
+
 ## 0.9.0.3 (2018-01-25)
 
 Changes:
diff --git a/default.nix b/default.nix
deleted file mode 100644
--- a/default.nix
+++ /dev/null
@@ -1,11 +0,0 @@
-# From GitHub: mozilla/nixpkgs-mozilla/default.nix.
-
-self: super:
-
-with super.lib;
-
-(foldl' (flip extends) (_: super) [
-
-  (import ./nix/overlays/haskell-overrides.nix)
-
-]) self
diff --git a/hpio.cabal b/hpio.cabal
--- a/hpio.cabal
+++ b/hpio.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 998649f85926e44c675d5e7d0f9074add5f856d11f0f01dc411e7db73e59f8c9
+-- hash: 314c418ac4acf7409780c6803850e71c284df0bb0c42077cb1ad16aa8447a309
 
 name:                   hpio
-version:                0.9.0.3
+version:                0.9.0.4
 synopsis:               Monads for GPIO in Haskell
 description:            This package provides an embedded DSL for writing cross-platform
                         GPIO programs in Haskell. Currently only Linux is supported (via the
@@ -25,29 +25,19 @@
 bug-reports:            https://github.com/quixoftic/hpio/issues
 author:                 Drew Hess <dhess-src@quixoftic.com>
 maintainer:             Drew Hess <dhess-src@quixoftic.com>
-copyright:              Copyright (c) 2017, Quixoftic, LLC
+copyright:              Copyright (c) 2018, Quixoftic, LLC
 license:                BSD3
 license-file:           LICENSE
-tested-with:            GHC==7.8.4 GHC==7.10.2 GHC==7.10.3 GHC==8.0.1 GHC==8.0.2 GHC==8.2.1
+tested-with:            GHC==7.8.4 GHC==7.10.2 GHC==7.10.3 GHC==8.0.1 GHC==8.0.2 GHC==8.2.1 GHC==8.2.2
 build-type:             Simple
 cabal-version:          >= 1.10
 
 extra-source-files:
-    .travis.yml
+    .hlint.yaml
     changelog.md
-    default.nix
-    Hlint.hs
-    nix/fetch-nixpkgs.nix
-    nix/jobsets/default.nix
-    nix/jobsets/release.nix
-    nix/jobsets/spec.json
-    nix/lib.nix
-    nix/nixpkgs-src.json
-    nix/overlays/haskell-overrides.nix
-    nix/pkgs/hpio.nix
     package.yaml
     README.md
-    shell.nix
+    stack-lts-10.yaml
     stack-lts-2.yaml
     stack-lts-3.yaml
     stack-lts-6.yaml
@@ -78,7 +68,7 @@
 flag test-hlint
   description: Build hlint test
   manual: True
-  default: True
+  default: False
 
 library
   hs-source-dirs:
@@ -157,7 +147,7 @@
       , text
       , transformers
   if impl(ghc >= 8.0)
-    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -fno-warn-redundant-constraints -fno-warn-redundant-constraints
+    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -fno-warn-redundant-constraints
   default-language: Haskell2010
 
 executable hpio-reader-example
@@ -185,7 +175,7 @@
       , text
       , transformers
   if impl(ghc >= 8.0)
-    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -fno-warn-redundant-constraints -fno-warn-redundant-constraints
+    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -fno-warn-redundant-constraints
   default-language: Haskell2010
 
 executable hpio-sysfs-example
@@ -213,7 +203,7 @@
       , text
       , transformers
   if impl(ghc >= 8.0)
-    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -fno-warn-redundant-constraints -fno-warn-redundant-constraints
+    ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances -fno-warn-redundant-constraints
   default-language: Haskell2010
 
 test-suite doctest
@@ -232,7 +222,7 @@
   else
     build-depends:
         base
-      , doctest
+      , doctest >=0.9.13
       , filepath
       , protolude
   default-language: Haskell2010
@@ -253,7 +243,7 @@
   else
     build-depends:
         base
-      , hlint >=1.9 && <2.1
+      , hlint ==2.0.*
       , protolude
   default-language: Haskell2010
 
diff --git a/nix/fetch-nixpkgs.nix b/nix/fetch-nixpkgs.nix
deleted file mode 100644
--- a/nix/fetch-nixpkgs.nix
+++ /dev/null
@@ -1,25 +0,0 @@
-# From https://github.com/input-output-hk/iohk-ops/blob/a25d2d9320f8b8f3515f1195d5fceba96fd24493/fetch-nixpkgs.nix
-
-let
-  spec = builtins.fromJSON (builtins.readFile ./nixpkgs-src.json);
-  src = import <nix/fetchurl.nix> {
-    url = "https://github.com/${spec.owner}/${spec.repo}/archive/${spec.rev}.tar.gz";
-    inherit (spec) sha256;
-  };
-  nixcfg = import <nix/config.nix>;
-in builtins.derivation {
-  system = builtins.currentSystem;
-  name = "${src.name}-unpacked";
-  builder = builtins.storePath nixcfg.shell;
-  inherit src;
-  args = [
-    (builtins.toFile "builder" ''
-      $coreutils/mkdir $out
-      cd $out
-      $gzip -d < $src | $tar -x --strip-components=1
-    '')
-  ];
-  coreutils = builtins.storePath nixcfg.coreutils;
-  tar = builtins.storePath nixcfg.tar;
-  gzip = builtins.storePath nixcfg.gzip;
-}
diff --git a/nix/jobsets/default.nix b/nix/jobsets/default.nix
deleted file mode 100644
--- a/nix/jobsets/default.nix
+++ /dev/null
@@ -1,63 +0,0 @@
-# Based on
-# https://github.com/input-output-hk/iohk-ops/blob/df01a228e559e9a504e2d8c0d18766794d34edea/jobsets/default.nix
-
-{ nixpkgs ? <nixpkgs>
-, declInput ? {}
-}:
-
-let
-
-  hpioUri = "https://github.com/quixoftic/hpio.git";
-
-  mkFetchGithub = value: {
-    inherit value;
-    type = "git";
-    emailresponsible = false;
-  };
-
-  nixpkgs-src = builtins.fromJSON (builtins.readFile ../nixpkgs-src.json);
-
-  pkgs = import nixpkgs {};
-
-  defaultSettings = {
-    enabled = 1;
-    hidden = false;
-    keepnr = 10;
-    schedulingshares = 100;
-    checkinterval = 60;
-    enableemail = false;
-    emailoverride = "";
-    nixexprpath = "nix/jobsets/release.nix";
-    nixexprinput = "hpio";
-    description = "hpio";
-    inputs = {
-      hpio = mkFetchGithub "${hpioUri} master";
-    };
-  };
-
-  mkChannelAlt = hpioBranch: nixpkgsRev: {
-    checkinterval = 60;
-    schedulingshares = 100;
-    inputs = {
-      nixpkgs_override = mkFetchGithub "https://github.com/NixOS/nixpkgs-channels.git ${nixpkgsRev}";
-      hpio = mkFetchGithub "${hpioUri} ${hpioBranch}";
-    };
-  };
-
-  mainJobsets = with pkgs.lib; mapAttrs (name: settings: defaultSettings // settings) (rec {
-    master = {};
-    nixpkgs-unstable = mkChannelAlt "master" "nixpkgs-unstable";
-  });
-
-  jobsetsAttrs = mainJobsets;
-
-  jobsetJson = pkgs.writeText "spec.json" (builtins.toJSON jobsetsAttrs);
-
-in {
-  jobsets = with pkgs.lib; pkgs.runCommand "spec.json" {} ''
-    cat <<EOF
-    ${builtins.toJSON declInput}
-    EOF
-    cp ${jobsetJson} $out
-  '';
-}
diff --git a/nix/jobsets/release.nix b/nix/jobsets/release.nix
deleted file mode 100644
--- a/nix/jobsets/release.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-let
-
-  fixedNixPkgs = (import ../lib.nix).fetchNixPkgs;
-
-in
-
-{ supportedSystems ? [ "x86_64-darwin" "x86_64-linux" ]
-, scrubJobs ? true
-, nixpkgsArgs ? {
-    config = { allowUnfree = true; allowBroken = true; inHydra = true; };
-    overlays = [ (import ../../.) ];
-  }
-}:
-
-with import (fixedNixPkgs + "/pkgs/top-level/release-lib.nix") {
-  inherit supportedSystems scrubJobs nixpkgsArgs;
-};
-
-let
-
-  jobs = (mapTestOn ({
-    haskellPackages = packagePlatforms pkgs.haskellPackages;
-  }));
-
-in
-{
-  inherit (jobs.haskellPackages) hpio;
-}
diff --git a/nix/jobsets/spec.json b/nix/jobsets/spec.json
deleted file mode 100644
--- a/nix/jobsets/spec.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "enabled": 1,
-    "hidden": false,
-    "description": "hpio jobsets",
-    "nixexprinput": "src",
-    "nixexprpath": "nix/jobsets/default.nix",
-    "checkinterval": 60,
-    "schedulingshares": 100,
-    "enableemail": false,
-    "emailoverride": "",
-    "keepnr": 5,
-    "inputs": {
-         "src": { "type": "git", "value": "https://github.com/quixoftic/hpio.git master", "emailresponsible": false }
-         ,"nixpkgs": { "type": "git", "value": "https://github.com/NixOS/nixpkgs-channels.git nixpkgs-unstable", "emailresponsible": false }
-     }
-}
diff --git a/nix/lib.nix b/nix/lib.nix
deleted file mode 100644
--- a/nix/lib.nix
+++ /dev/null
@@ -1,23 +0,0 @@
-let
-
-  # From https://github.com/input-output-hk/iohk-ops/blob/e6f1ae95cdbfdd5c213aa0b9a1ef67150febc503/lib.nix
-  
-  fetchNixPkgs =
-  let
-    try = builtins.tryEval <nixpkgs_override>;
-  in
-    if try.success
-      then builtins.trace "Using <nixpkgs_override>" try.value
-      else import ./fetch-nixpkgs.nix;
-
-  nixpkgs = import fetchNixPkgs;
-
-  pkgs = nixpkgs {};
-
-  lib = pkgs.lib;
-
-in lib // (rec {
-
-  inherit fetchNixPkgs;
-
-})
diff --git a/nix/nixpkgs-src.json b/nix/nixpkgs-src.json
deleted file mode 100644
--- a/nix/nixpkgs-src.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "owner":  "NixOS"
-,   "repo":   "nixpkgs-channels"
-,   "rev":    "a8d0b805b19a9f5713d0733ddd3d6610654140a0"
-,   "sha256": "0a28qxilbax2zi2px19mp7nrgh1nsba1dnlw2a4l80xk7n0iywd2"
-}
diff --git a/nix/overlays/haskell-overrides.nix b/nix/overlays/haskell-overrides.nix
deleted file mode 100644
--- a/nix/overlays/haskell-overrides.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-self: super:
-
-let
-
-  inherit (self) haskell;
-
-in
-{
-  haskellPackages = super.haskellPackages.extend (self: super:
-    with haskell.lib;
-    rec {
-      hpio = self.callPackage ../pkgs/hpio.nix {};
-    }
-  );
-}
diff --git a/nix/pkgs/hpio.nix b/nix/pkgs/hpio.nix
deleted file mode 100644
--- a/nix/pkgs/hpio.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ mkDerivation, async, base, bytestring, containers, directory
-, doctest, exceptions, filepath, hlint, hspec, monad-control
-, monad-logger, mtl, optparse-applicative, protolude, QuickCheck
-, stdenv, text, transformers, transformers-base, unix
-, unix-bytestring
-}:
-mkDerivation {
-  pname = "hpio";
-  version = "0.9.0.3";
-  src = ../../.;
-  isLibrary = true;
-  isExecutable = true;
-  libraryHaskellDepends = [
-    base bytestring containers directory exceptions filepath
-    monad-control monad-logger mtl protolude QuickCheck text
-    transformers transformers-base unix unix-bytestring
-  ];
-  executableHaskellDepends = [
-    async base exceptions mtl optparse-applicative protolude text
-    transformers
-  ];
-  testHaskellDepends = [
-    base containers directory doctest exceptions filepath hlint hspec
-    protolude QuickCheck
-  ];
-  homepage = "https://github.com/quixoftic/hpio#readme";
-  description = "Monads for GPIO in Haskell";
-  license = stdenv.lib.licenses.bsd3;
-}
diff --git a/package.yaml b/package.yaml
--- a/package.yaml
+++ b/package.yaml
@@ -1,11 +1,11 @@
 name:        hpio
-version:     0.9.0.3
+version:     0.9.0.4
 synopsis:    Monads for GPIO in Haskell
 category:    System
 stability:   experimental
 author:      Drew Hess <dhess-src@quixoftic.com>
 maintainer:  Drew Hess <dhess-src@quixoftic.com>
-copyright:   Copyright (c) 2017, Quixoftic, LLC
+copyright:   Copyright (c) 2018, Quixoftic, LLC
 license:     BSD3
 github:      quixoftic/hpio
 
@@ -31,13 +31,13 @@
 
   module, which explains how to use the cross-platform DSL.'
 
-tested-with: GHC==7.8.4 GHC==7.10.2 GHC==7.10.3 GHC==8.0.1 GHC==8.0.2 GHC==8.2.1
+tested-with: GHC==7.8.4 GHC==7.10.2 GHC==7.10.3 GHC==8.0.1 GHC==8.0.2 GHC==8.2.1 GHC==8.2.2
 
 flags:
   test-hlint:
     description: Build hlint test
     manual: true
-    default: true
+    default: false
   test-doctests:
     description: Build doctests
     manual: true
@@ -81,8 +81,8 @@
       else:
         # provide/emulate `Control.Monad.Fail` and `Data.Semigroups` API for pre-GHC8
         dependencies:
-          - fail       == 4.9.*
-          - semigroups == 0.18.*
+          - fail       ==4.9.*
+          - semigroups ==0.18.*
   source-dirs: src
   c-sources:
     - src/System/GPIO/Linux/Sysfs/pollSysfs.c
@@ -120,13 +120,13 @@
     - directory           >=1.2.1  && <1.4
     - exceptions          >=0.8.0  && <1
     - filepath            >=1.3.0  && <1.5
-    - monad-control       == 1.*
-    - monad-logger        == 0.3.*
+    - monad-control       ==1.*
+    - monad-logger        ==0.3.*
     - mtl                 >=2.1.3  && <2.3
-    - protolude           == 0.2.*
+    - protolude           ==0.2.*
     - text                >=1.2.0  && <1.3
     - transformers        >=0.3.0  && <0.6
-    - transformers-base   == 0.4.*
+    - transformers-base   ==0.4.*
     - unix                >=2.7.0  && <2.8
     - unix-bytestring     >=0.3.7  && <0.4
 
@@ -149,7 +149,7 @@
         else:
           dependencies:
           - base
-          - async >=2.0.2 && <2.2
+          - async                >=2.0.2 && <2.2
           - exceptions
           - hpio
           - mtl
@@ -163,7 +163,6 @@
           - -Wnoncanonical-monad-instances
           - -Wnoncanonical-monadfail-instances
           - -fno-warn-redundant-constraints
-          - -fno-warn-redundant-constraints
   hpio-sysfs-example:
     <<: *executable
     main: Sysfs.hs
@@ -194,7 +193,7 @@
       else:
         dependencies:
           - base
-          - hlint     >= 1.9 && <2.1
+          - hlint     ==2.0.*
           - protolude
   doctest:
     main: doctest.hs
@@ -209,7 +208,7 @@
       else:
         dependencies:
           - base
-          - doctest
+          - doctest   >=0.9.13
           - filepath
           - protolude
   spec:
@@ -234,18 +233,14 @@
           -DRUN_LINUX_BBONE_TESTS=1
 
 extra-source-files:
-  - .travis.yml
-  - Hlint.hs
+  - .hlint.yaml
   - README.md
   - changelog.md
-  - default.nix
-  - nix/*
-  - nix/*/*
   - package.yaml
-  - shell.nix
   - stack.yaml
   - stack-lts-2.yaml
   - stack-lts-3.yaml
   - stack-lts-6.yaml
   - stack-lts-7.yaml
   - stack-lts-9.yaml
+  - stack-lts-10.yaml
diff --git a/shell.nix b/shell.nix
deleted file mode 100644
--- a/shell.nix
+++ /dev/null
@@ -1,15 +0,0 @@
-{ compiler ? "ghc822"
-, overlays ? [ (import ./.) ]
-}:
-
-let
-
-  fixedNixPkgs = (import ./nix/lib.nix).fetchNixPkgs;
-
-  pkgs = (import fixedNixPkgs) { inherit overlays; };
-
-  drv = pkgs.haskellPackages.hpio;
-
-in
-
-  if pkgs.lib.inNixShell then drv.env else drv
diff --git a/src/System/GPIO.hs b/src/System/GPIO.hs
--- a/src/System/GPIO.hs
+++ b/src/System/GPIO.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : System.GPIO
 Description : Top-level re-exports for writing GPIO programs
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
diff --git a/src/System/GPIO/Linux.hs b/src/System/GPIO/Linux.hs
--- a/src/System/GPIO/Linux.hs
+++ b/src/System/GPIO/Linux.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : System.GPIO.Linux
 Description : Linux GPIO
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
diff --git a/src/System/GPIO/Linux/Sysfs.hs b/src/System/GPIO/Linux/Sysfs.hs
--- a/src/System/GPIO/Linux/Sysfs.hs
+++ b/src/System/GPIO/Linux/Sysfs.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : System.GPIO.Linux.Sysfs
 Description : GPIO in Linux via the @sysfs@ filesystem
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
diff --git a/src/System/GPIO/Linux/Sysfs/IO.hs b/src/System/GPIO/Linux/Sysfs/IO.hs
--- a/src/System/GPIO/Linux/Sysfs/IO.hs
+++ b/src/System/GPIO/Linux/Sysfs/IO.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : System.GPIO.Linux.Sysfs.IO
 Description : Linux @sysfs@ GPIO operations in IO
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
diff --git a/src/System/GPIO/Linux/Sysfs/Mock.hs b/src/System/GPIO/Linux/Sysfs/Mock.hs
--- a/src/System/GPIO/Linux/Sysfs/Mock.hs
+++ b/src/System/GPIO/Linux/Sysfs/Mock.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : System.GPIO.Linux.Sysfs.Mock
 Description : A mock MonadSysfs instance.
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
diff --git a/src/System/GPIO/Linux/Sysfs/Mock/Internal.hs b/src/System/GPIO/Linux/Sysfs/Mock/Internal.hs
--- a/src/System/GPIO/Linux/Sysfs/Mock/Internal.hs
+++ b/src/System/GPIO/Linux/Sysfs/Mock/Internal.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : System.GPIO.Linux.Sysfs.Mock.Internal
 Description : Functions used by the mock MonadSysfs instance.
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
diff --git a/src/System/GPIO/Linux/Sysfs/Monad.hs b/src/System/GPIO/Linux/Sysfs/Monad.hs
--- a/src/System/GPIO/Linux/Sysfs/Monad.hs
+++ b/src/System/GPIO/Linux/Sysfs/Monad.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : System.GPIO.Linux.Sysfs.Monad
 Description : Monads for Linux @sysfs@ GPIO operations
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
diff --git a/src/System/GPIO/Linux/Sysfs/Types.hs b/src/System/GPIO/Linux/Sysfs/Types.hs
--- a/src/System/GPIO/Linux/Sysfs/Types.hs
+++ b/src/System/GPIO/Linux/Sysfs/Types.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : System.GPIO.Linux.Sysfs.Types
 Description : Types for Linux @sysfs@ GPIO
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
diff --git a/src/System/GPIO/Linux/Sysfs/Util.hs b/src/System/GPIO/Linux/Sysfs/Util.hs
--- a/src/System/GPIO/Linux/Sysfs/Util.hs
+++ b/src/System/GPIO/Linux/Sysfs/Util.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : System.GPIO.Linux.Sysfs.Util
 Description : Useful low-level Linux @sysfs@ functions
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
diff --git a/src/System/GPIO/Monad.hs b/src/System/GPIO/Monad.hs
--- a/src/System/GPIO/Monad.hs
+++ b/src/System/GPIO/Monad.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : System.GPIO.Monad
 Description : A monad for GPIO computations
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
diff --git a/src/System/GPIO/Tutorial.hs b/src/System/GPIO/Tutorial.hs
--- a/src/System/GPIO/Tutorial.hs
+++ b/src/System/GPIO/Tutorial.hs
@@ -1366,7 +1366,7 @@
 
 {- $copyright
 
-This tutorial is copyright Quixoftic, LLC, 2017, and is licensed under the
+This tutorial is copyright Quixoftic, LLC, 2018, and is licensed under the
 <http://creativecommons.org/licenses/by/4.0/ Creative Commons Attribution 4.0 International License>.
 
 -}
diff --git a/src/System/GPIO/Types.hs b/src/System/GPIO/Types.hs
--- a/src/System/GPIO/Types.hs
+++ b/src/System/GPIO/Types.hs
@@ -1,7 +1,7 @@
 {-|
 Module      : System.GPIO.Types
 Description : Basic GPIO types
-Copyright   : (c) 2017, Quixoftic, LLC
+Copyright   : (c) 2018, Quixoftic, LLC
 License     : BSD3
 Maintainer  : Drew Hess <dhess-src@quixoftic.com>
 Stability   : experimental
diff --git a/stack-lts-10.yaml b/stack-lts-10.yaml
new file mode 100644
--- /dev/null
+++ b/stack-lts-10.yaml
@@ -0,0 +1,5 @@
+require-stack-version: ">= 1.1.0"
+pvp-bounds: both
+resolver: lts-10.3
+packages:
+- .
diff --git a/stack-lts-2.yaml b/stack-lts-2.yaml
--- a/stack-lts-2.yaml
+++ b/stack-lts-2.yaml
@@ -4,20 +4,13 @@
 extra-deps:
 - base-compat-0.9.3
 - fail-4.9.0.0
-- mtl-2.2.1
-- mtl-compat-0.2.1.3
 - monad-logger-0.3.16
-- primitive-0.6.2.0
 - protolude-0.2
 - semigroups-0.18.2
-- transformers-0.4.3.0
-- transformers-compat-0.4.0.4
 - unix-bytestring-0.3.7.3
 - void-0.7.2
 packages:
 - .
 flags:
-  hpio:
-    test-hlint: false
   semigroups:
     bytestring-builder: false
diff --git a/stack-lts-3.yaml b/stack-lts-3.yaml
--- a/stack-lts-3.yaml
+++ b/stack-lts-3.yaml
@@ -9,7 +9,5 @@
 - semigroups-0.18.2
 - unix-bytestring-0.3.7.3
 flags:
-  hpio:
-    test-hlint: false
   semigroups:
     bytestring-builder: false
diff --git a/stack-lts-6.yaml b/stack-lts-6.yaml
--- a/stack-lts-6.yaml
+++ b/stack-lts-6.yaml
@@ -5,6 +5,3 @@
 - protolude-0.2
 packages:
 - .
-flags:
-  hpio:
-    test-hlint: false
diff --git a/stack-lts-7.yaml b/stack-lts-7.yaml
--- a/stack-lts-7.yaml
+++ b/stack-lts-7.yaml
@@ -5,6 +5,3 @@
 - protolude-0.2
 packages:
 - .
-flags:
-  hpio:
-    test-hlint: false
diff --git a/stack-lts-9.yaml b/stack-lts-9.yaml
--- a/stack-lts-9.yaml
+++ b/stack-lts-9.yaml
@@ -5,6 +5,3 @@
 - protolude-0.2
 packages:
 - .
-flags:
-  hpio:
-    test-hlint: false
