diff --git a/krebs/5pkgs/haskell/blessings.nix b/krebs/5pkgs/haskell/blessings.nix
index f852b4a44..8c52c5636 100644
--- a/krebs/5pkgs/haskell/blessings.nix
+++ b/krebs/5pkgs/haskell/blessings.nix
@@ -1,11 +1,11 @@
 { mkDerivation, base, fetchgit, stdenv }:
 mkDerivation rec {
   pname = "blessings";
-  version = "1.1.0";
+  version = "1.2.0";
   src = fetchgit {
     url = http://cgit.ni.krebsco.de/blessings;
     rev = "refs/tags/v${version}";
-    sha256 = "1k908zap3694fcxdk4bb29s54b0lhdh557y10ybjskfwnym7szn1";
+    sha256 = "03hz43ixww0h4fwxqrlrlvmj3pxswhb50ijaapwjz8457il2r300";
   };
   libraryHaskellDepends = [ base ];
   doHaddock = false;
diff --git a/tv/1systems/mu/config.nix b/tv/1systems/mu/config.nix
index f51366546..c26d4ab30 100644
--- a/tv/1systems/mu/config.nix
+++ b/tv/1systems/mu/config.nix
@@ -3,6 +3,7 @@ with import <stockholm/lib>;
 
   imports = [
     <stockholm/tv>
+    <stockholm/tv/2configs/br.nix>
     <stockholm/tv/2configs/exim-retiolum.nix>
     <stockholm/tv/2configs/retiolum.nix>
   ];
@@ -90,20 +91,6 @@ with import <stockholm/lib>;
     pkgs.xlibs.fontschumachermisc
   ];
 
-  # Enable CUPS to print documents.
-  services.printing = {
-    enable = true;
-    #drivers = [
-    #  #pkgs.foomatic_filters
-    #  #pkgs.gutenprint
-    #  #pkgs.cups_pdf_filter
-    #  #pkgs.ghostscript
-    #];
-    #cupsdConf = ''
-    #  LogLevel debug2
-    #'';
-  };
-
   services.xserver.enable = true;
   services.xserver.layout = "de";
   services.xserver.xkbOptions = "eurosign:e";
diff --git a/tv/1systems/querel/config.nix b/tv/1systems/querel/config.nix
index 5f981c64c..01d67b5f5 100644
--- a/tv/1systems/querel/config.nix
+++ b/tv/1systems/querel/config.nix
@@ -2,10 +2,9 @@ with import <stockholm/lib>;
 { config, pkgs, ... }: {
 
   imports = [
-    <stockholm/krebs>
-    <stockholm/tv/2configs>
-    <stockholm/tv/3modules>
+    <stockholm/tv>
     <stockholm/tv/2configs/retiolum.nix>
+    <stockholm/tv/2configs/xp-332.nix>
   ];
 
   krebs.build.host = config.krebs.hosts.querel;
@@ -37,6 +36,7 @@ with import <stockholm/lib>;
     sxiv
     texlive.combined.scheme-full
     vim
+    xsane
     zathura
   ];
 
@@ -67,10 +67,6 @@ with import <stockholm/lib>;
 
   programs.ssh.startAgent = false;
 
-  services.printing = {
-    enable = true;
-  };
-
   services.xserver.enable = true;
   services.xserver.layout = "de";
   services.xserver.xkbOptions = "eurosign:e";
diff --git a/tv/2configs/bash/default.nix b/tv/2configs/bash/default.nix
index 546b2e7b7..b75ad8bfc 100644
--- a/tv/2configs/bash/default.nix
+++ b/tv/2configs/bash/default.nix
@@ -33,11 +33,13 @@ with import <stockholm/lib>;
         PS1="ssh-agent[$SSH_AGENT_PID] $PS1"
       fi
 
-      case ''${XMONAD_SPAWN_WORKSPACE-} in
-        stockholm)
-          cd ~/stockholm
-        ;;
-      esac
+      if test ''${SHLVL-1} = 1; then
+        case ''${XMONAD_SPAWN_WORKSPACE-} in
+          stockholm)
+            cd ~/stockholm
+          ;;
+        esac
+      fi
     '';
   };
 }
diff --git a/tv/2configs/xp-332.nix b/tv/2configs/xp-332.nix
new file mode 100644
index 000000000..627401dc6
--- /dev/null
+++ b/tv/2configs/xp-332.nix
@@ -0,0 +1,45 @@
+with import <stockholm/lib>;
+{ config, pkgs, ... }: {
+
+  environment.etc."utsushi.conf".text = ''
+    [devices]
+    dev1.udi = esci:networkscan://EPSON79678C.fritz.box:1865
+    dev1.model = XP-332
+    dev1.vendor = EPSON
+  '';
+
+  hardware.sane = {
+    enable = true;
+    extraBackends = [
+      pkgs.utsushi
+    ];
+  };
+
+  krebs.nixpkgs.allowUnfreePredicate = pkg:
+    elem (parseDrvName pkg.name).name [ "imagescan-plugin-networkscan" ];
+
+  nixpkgs.overlays = singleton (self: super: {
+    utsushi = super.utsushi.override {
+      guiSupport = false;
+      jpegSupport = false;
+      networkSupport = true;
+      ocrSupport = false;
+      saneSupport = true;
+      tiffSupport = true;
+
+      logCategory = "ALL";
+      logLevel = "BRIEF";
+    };
+  });
+
+  services = {
+    printing = {
+      drivers = [
+        pkgs.epson-escpr
+      ];
+      enable = true;
+    };
+    saned.enable = true;
+  };
+
+}
diff --git a/tv/5pkgs/simple/utsushi.nix b/tv/5pkgs/simple/utsushi.nix
new file mode 100644
index 000000000..518c34ca0
--- /dev/null
+++ b/tv/5pkgs/simple/utsushi.nix
@@ -0,0 +1,206 @@
+{ boost, fetchurl, file, imagemagick, libudev, libusb, pkgconfig, stdenv
+, coreutils, dash, patchelf, writeScriptBin # for add-rpath
+
+, guiSupport ? false, gtkmm2 ? null
+, jpegSupport ? true
+, networkSupport ? false, dpkg ? null
+, ocrSupport ? false, tesseract ? null
+, saneSupport ? true, saneBackends ? null
+, tiffSupport ? true, libtiff ? null
+
+# Logging defaults copied from Utsushi source (lib/log.cpp)
+, logCategory ? "NOTHING"
+, logLevel ? "FATAL"
+}:
+
+# Logging possibilities copied from Utsushi source (utsushi/log.hpp)
+assert builtins.elem logCategory [
+  "NOTHING"
+  "SANE_BACKEND"
+  "ALL"
+];
+assert builtins.elem logLevel [
+  "FATAL" # famous last words
+  "ALERT" # outside intervention required
+  "ERROR" # something went wrong
+  "BRIEF" # short informational notes
+  "TRACE" # more chattery feedback
+  "DEBUG" # the gory details
+  "QUARK" # stack tracing feedback
+];
+
+let
+
+  # usage: add-rpath LIBPATH [SOFILE...]
+  # Adds LIBPATH to each SOFILE's RPATH
+  add-rpath = writeScriptBin "add-rpath" ''
+    #! ${dash}/bin/dash
+    set -efu
+    path=$1; shift
+    for file; do
+      file=$(${coreutils}/bin/readlink -f "$file")
+      old_rpath=$(${patchelf}/bin/patchelf --print-rpath "$file")
+      new_rpath=''${old_rpath+$old_rpath:}$path
+      ${patchelf}/bin/patchelf --set-rpath "$new_rpath" "$file"
+    done
+  '';
+
+  imagescan-plugin-networkscan = stdenv.mkDerivation rec {
+    name = "imagescan-plugin-networkscan-${meta.version}";
+
+    src =
+      if stdenv.system == "i686-linux" then
+        fetchurl {
+          url = "https://download2.ebz.epson.net/imagescanv3/debian/latest1/deb/x64/imagescan-bundle-debian-9-1.3.21.x86.deb.tar.gz";
+          sha256 = "16xv1pdfm2ryis815fawb7zqg6c4swww726g272ssx044r5dp80r";
+        }
+      else if stdenv.system == "x86_64-linux" then
+        fetchurl {
+          url = "https://download2.ebz.epson.net/imagescanv3/debian/latest1/deb/x64/imagescan-bundle-debian-9-1.3.21.x64.deb.tar.gz";
+          sha256 = "0zik35h2jwrvkwcmq55wc72imidwdnmn1bayhypzhjcz61rasjg2";
+        }
+      else throw "${name} is not supported on ${stdenv.system} (only i686-linux and x86_64 linux are supported)";
+
+    dontBuild = true;
+
+    installPhase = ''
+      # Wildcard * stand for either i386 or amd64
+      ${dpkg}/bin/dpkg -x \
+          plugins/imagescan-plugin-networkscan_${meta.version}-1epson4debian9_*.deb \
+          tmp
+
+      mv tmp/usr $out
+    '';
+
+    preFixup = ''
+      patchelf --set-interpreter \
+          ${stdenv.glibc}/lib/ld-linux${stdenv.lib.optionalString stdenv.is64bit "-x86-64"}.so.2 \
+          $out/lib/utsushi/networkscan
+
+      # libstdc++.so.6
+      patchelf --set-rpath ${stdenv.cc.cc.lib}/lib \
+          $out/lib/utsushi/networkscan
+    '';
+
+    meta = {
+      description = "Epson Image Scan v3 networkscan plugin";
+      longDescription = ''
+        This package provides the unfree networkscan plugin from the Epson
+        Image Scan v3 scanner driver bundle, which can be used by Utsushi.
+      '';
+      homepage = "http://support.epson.net/linux/en/imagescanv3.php?version=${meta.version}";
+      license = stdenv.lib.licenses.eapl;
+      maintainers = [ stdenv.lib.maintainers.tv ];
+      platforms = stdenv.lib.platforms.linux;
+      version = "1.1.0";
+    };
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  name = "utsushi-${meta.version}";
+
+  src = fetchurl {
+    url = "http://support.epson.net/linux/src/scanner/imagescanv3/debian/imagescan_${meta.version}.orig.tar.gz";
+    sha256 = "12mzq3wc8gzdma84pjs5gb0gp8mga13wax5g7vjfrzq8pjyqrnmw";
+  };
+
+  preConfigure = ''
+    substituteInPlace configure \
+        --replace /usr/bin/file ${file}/bin/file
+
+    substituteInPlace lib/log.cpp \
+        --replace FATAL ${logLevel} \
+        --replace NOTHING ${logCategory}
+  '';
+
+  postInstall = ''
+    # Allow configuration to be done via /etc/utsushi.conf
+    ln -s /etc/utsushi.conf $out/etc/utsushi/utsushi.conf
+
+    ${stdenv.lib.optionalString saneSupport ''
+      # Make this package compatible with hardware.sane.extraBackends
+      mkdir $out/etc/sane.d
+      echo utsushi > $out/etc/sane.d/dll.conf
+      mkdir $out/lib/sane
+      ln -s $out/lib/utsushi/sane/libsane-utsushi.* $out/lib/sane
+    ''}
+
+    ${stdenv.lib.optionalString networkSupport ''
+      ln -s ${imagescan-plugin-networkscan}/lib/utsushi/networkscan \
+        $out/libexec/utsushi/
+    ''}
+  '';
+
+  # Fixup libraries which otherwise would end up broken like this:
+  #
+  #  $ ldd .../blah.so | grep libboost_system
+  #  libboost_system.so.X.Y.Z => not found
+  #  libboost_system.so.X.Y.Z => /nix/store/.../libboost_system.so.X.Y.Z (...)
+  #
+  preFixup = ''
+    add-rpath ${boost}/lib $out/lib/utsushi/libdrv-esci.so
+    ${stdenv.lib.optionalString saneSupport ''
+      add-rpath ${boost}/lib $out/lib/utsushi/sane/libsane-utsushi.so
+    ''}
+  '';
+
+  nativeBuildInputs = [
+    add-rpath
+    pkgconfig
+  ];
+
+  buildInputs = [
+    boost
+    imagemagick
+    libudev
+    libusb
+  ]
+  ++ stdenv.lib.optional guiSupport gtkmm2
+  ++ stdenv.lib.optional ocrSupport tesseract
+  ++ stdenv.lib.optional saneSupport saneBackends
+  ++ stdenv.lib.optional tiffSupport libtiff
+  ;
+
+  NIX_CFLAGS_COMPILE = [
+    "-Wno-error=unused-variable"
+  ];
+
+  configureFlags = [
+    "--with-boost=${boost}"
+    "--with-magick"
+    "--with-magick-pp"
+  ]
+  ++ stdenv.lib.optionals guiSupport [
+    "--with-gtkmm"
+  ]
+  ++ stdenv.lib.optionals jpegSupport [
+    "--with-jpeg"
+  ]
+  ++ stdenv.lib.optionals saneSupport [
+    "--with-sane"
+  ]
+  ++ stdenv.lib.optionals tiffSupport [
+    "--with-tiff"
+  ]
+  ;
+
+  meta = {
+    description = "Utsushi - Next Generation Image Acquisition";
+    longDescription = ''
+      This software provides applications to easily turn hard-copy
+      documents and imagery into formats that are more amenable to
+      computer processing.
+
+      Included are a native driver for a number of EPSON scanners
+      and a compatibility driver to interface with software built
+      around the SANE standard.
+    '';
+    homepage = http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX;
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.tv ];
+    platforms = stdenv.lib.platforms.linux;
+    version = "3.48.0";
+  };
+}