Local Hoogle Daemon
Previous: Opening `.url` Files Like a Pro
Has it really been two months?! It’s like the quarter starts and I get sucked into a black hole, never to be heard from again. I’m starting to pick up Real World Haskell again, and I needed reliable documentation without relying on an internet connection, so I spun up a local Hoogle server as a systemd service.
Running Hoogle locally is nothing revolutionary. I followed some great sources. However, I did need more than a few sources, especially to get the systemd stuff worked out, so I’m writing everything down here so it’ll be in one place.
Edit: I was poking around in Twitter and I found my main source. It’s John Wiegley on Lost in Technopolis
-
Install
hoogle
andluakit
.Pretty obvious, except we have a choice. We can install with
cabal-install
, but I prefer to useapt-get
.luakit
is not exactly required. You can just use your default browser (mine is Chromium), but I like using luakit in this context because I like having an icon and window for Hoogle separate from my main browser. -
Create
~/.local/share/applications/hoogle.desktop
.The
hoogle.desktop
file is a launcher for Linux GUIs that adhere to the Freedesktop.org standard, so you’ll have an icon in your applications menu and on your dock (where applicable).
-
Create
~/.icon
tree.This part is just tedious. To make your life easier, I’ll provide a zip archive. Just unpack it and move the
.icon
directory to your home directory.This archive provides something of a minimal example for creating your own custom icons for Freedesktop.org-compliant environments, so you might peek inside to get an idea for how things work.
-
Create
/etc/systemd/system/hoogle.service
hoogle.service
defines a system daemon that will run Hoogle in the background. We can enable it to run at boot, or we can manually start and stop the service as needed.
-
Create a system user called
hoogle
.We don’t want our Hoogle server running as root, so we’ll create a special non-login user.
- Create
/var/log/hoogle
and set ownership and mod rules.
-
Start and/or enable
hoogle.service
If you want the Hoogle daemon to run at system boot, replace
<command>
withenable
. Usingdisable
will undo this. If you want to manually start (res. stop) the Hoogle daemon, replace<command>
withstart
(res.stop
).
And, that’s it. Once Hoogle is running as a daemon, you can use then find “Hoogle” in your GUI application launcher and launch it like any other app.
Previous: Opening `.url` Files Like a Pro