diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,13 @@
+propellor (4.7.4) unstable; urgency=medium
+
+  * Set GPG_TTY when run at a terminal, so that gpg can do password
+    prompting despite being connected by pipes to propellor (or git).
+  * Rsync: Make rsync display less verbose.
+  * Improve PROPELLOR_TRACE output so serialized trace values always
+    come on their own line, not mixed with title setting.
+
+ -- Joey Hess <id@joeyh.name>  Tue, 01 Aug 2017 13:30:54 -0400
+
 propellor (4.7.3) unstable; urgency=medium
 
   * Expand the Trace data type.
diff --git a/debian/changelog b/debian/changelog
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+propellor (4.7.4) unstable; urgency=medium
+
+  * Set GPG_TTY when run at a terminal, so that gpg can do password
+    prompting despite being connected by pipes to propellor (or git).
+  * Rsync: Make rsync display less verbose.
+  * Improve PROPELLOR_TRACE output so serialized trace values always
+    come on their own line, not mixed with title setting.
+
+ -- Joey Hess <id@joeyh.name>  Tue, 01 Aug 2017 13:30:54 -0400
+
 propellor (4.7.3) unstable; urgency=medium
 
   * Expand the Trace data type.
diff --git a/propellor.cabal b/propellor.cabal
--- a/propellor.cabal
+++ b/propellor.cabal
@@ -1,5 +1,5 @@
 Name: propellor
-Version: 4.7.3
+Version: 4.7.4
 Cabal-Version: >= 1.20
 License: BSD2
 Maintainer: Joey Hess <id@joeyh.name>
diff --git a/src/Propellor/CmdLine.hs b/src/Propellor/CmdLine.hs
--- a/src/Propellor/CmdLine.hs
+++ b/src/Propellor/CmdLine.hs
@@ -111,6 +111,7 @@
 defaultMain :: [Host] -> IO ()
 defaultMain hostlist = withConcurrentOutput $ do
 	useFileSystemEncoding
+	setupGpgEnv
 	Shim.cleanEnv
 	checkDebugMode
 	cmdline <- processCmdLine
diff --git a/src/Propellor/Gpg.hs b/src/Propellor/Gpg.hs
--- a/src/Propellor/Gpg.hs
+++ b/src/Propellor/Gpg.hs
@@ -1,6 +1,8 @@
 module Propellor.Gpg where
 
 import System.IO
+import System.Posix.IO
+import System.Posix.Terminal
 import Data.Maybe
 import Control.Monad
 import Control.Applicative
@@ -18,6 +20,25 @@
 import Utility.Env
 import Utility.Directory
 import Utility.Split
+
+-- | When at a tty, set GPG_TTY to point to the tty device. This is needed
+-- so that when gpg is run with stio connected to a pipe, it is still able
+-- to display password prompts at the console.
+--
+-- This should not prevent gpg from using the GUI for prompting when one is
+-- available.
+setupGpgEnv :: IO ()
+setupGpgEnv = checkhandles [stdInput, stdOutput, stdError]
+  where
+	checkhandles [] = return ()
+	checkhandles (h:hs) = do
+		isterm <- queryTerminal h
+		if isterm
+			then do
+				ttyname <- getTerminalName h
+				-- do not overwrite
+				setEnv "GPG_TTY" ttyname False
+			else checkhandles hs
 
 type KeyId = String
 
diff --git a/src/Propellor/Message.hs b/src/Propellor/Message.hs
--- a/src/Propellor/Message.hs
+++ b/src/Propellor/Message.hs
@@ -96,12 +96,11 @@
 
 actionMessage' :: (MonadIO m, ActionResult r, ToResult r) => Maybe HostName -> Desc -> m r -> m r
 actionMessage' mhn desc a = do
+	liftIO $ trace $ ActionStart mhn desc
 	liftIO $ outputConcurrent
 		=<< whenConsole (setTitleCode $ "propellor: " ++ desc)
 
-	liftIO $ trace $ ActionStart mhn desc
 	r <- a
-	liftIO $ trace $ ActionEnd mhn desc (toResult r)
 
 	liftIO $ outputConcurrent . concat =<< sequence
 		[ whenConsole $
@@ -111,6 +110,7 @@
 		, let (msg, intensity, color) = getActionResult r
 		  in colorLine intensity color msg
 		]
+	liftIO $ trace $ ActionEnd mhn desc (toResult r)
 
 	return r
   where
diff --git a/src/Propellor/Property/Rsync.hs b/src/Propellor/Property/Rsync.hs
--- a/src/Propellor/Property/Rsync.hs
+++ b/src/Propellor/Property/Rsync.hs
@@ -46,7 +46,7 @@
 -- is found, the file is processed.
 syncDirFiltered :: [Filter] -> Src -> Dest -> Property (DebianLike + ArchLinux)
 syncDirFiltered filters src dest = rsync $
-	[ "-av"
+	[ "-a"
 	-- Add trailing '/' to get rsync to sync the Dest directory,
 	-- rather than a subdir inside it, which it will do without a
 	-- trailing '/'.
diff --git a/src/Propellor/Property/SiteSpecific/JoeySites.hs b/src/Propellor/Property/SiteSpecific/JoeySites.hs
--- a/src/Propellor/Property/SiteSpecific/JoeySites.hs
+++ b/src/Propellor/Property/SiteSpecific/JoeySites.hs
@@ -963,8 +963,7 @@
 			]
 	& ipmasq "wlan0"
 	& Apt.serviceInstalledRunning "netplug"
-	& Network.static' "eth0" (IPv4 "192.168.1.42")
-		(Just (Network.Gateway (IPv4 "192.168.1.1")))
+	& Network.dhcp' "eth0"
 		-- When satellite is down, fall back to dialup
 		[ ("pre-up", "poff -a || true")
 		, ("post-down", "pon")
