diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,7 @@
+## Version 0.51.1 (June, 2026)
+
+- Missing upper bounds for dependencies 
+
 ## Version 0.51 (June, 2026)
 
 - Improvements for `PacmanUpdates` (thanks, Enrico Maria and Alexander)
diff --git a/xmobar.cabal b/xmobar.cabal
--- a/xmobar.cabal
+++ b/xmobar.cabal
@@ -1,435 +1,471 @@
+cabal-version:      >=1.10
 name:               xmobar
-version:            0.51
-homepage:           https://codeberg.org/xmobar/xmobar
-synopsis:           A Minimalistic Text Based Status Bar
-description: 	    Xmobar is a minimalistic text based status bar.
-                    .
-                    Inspired by the Ion3 status bar, it supports similar
-                    features, like dynamic color management, output templates,
-                    and extensibility through plugins.
-category:           System
+version:            0.51.1
 license:            BSD3
 license-file:       license
-author:             Andrea Rossato and Jose A. Ortega Ruiz
 maintainer:         Jose A. Ortega Ruiz <jao@gnu.org>
+author:             Andrea Rossato and Jose A. Ortega Ruiz
+homepage:           https://codeberg.org/xmobar/xmobar
 bug-reports:        https://codeberg.org/xmobar/xmobar/issues
-cabal-version:      >= 1.10
-build-type:         Simple
+synopsis:           A Minimalistic Text Based Status Bar
+description:
+    Xmobar is a minimalistic text based status bar.
+    .
+    Inspired by the Ion3 status bar, it supports similar
+    features, like dynamic color management, output templates,
+    and extensibility through plugins.
 
-extra-source-files: readme.org, changelog.md,
-                    doc/quick-start.org,
-                    doc/plugins.org,
-                    doc/compiling.org,
-                    doc/using-haskell.org,
-                    etc/padding-icon.sh,
-                    etc/xmobar.config,
-                    etc/xmobar.hs,
-                    etc/xmonadpropwrite.hs,
-                    etc/xmobar.el
-                    etc/notify-once.sh
+category:           System
+build-type:         Simple
+extra-source-files:
+    readme.org
+    changelog.md
+    doc/quick-start.org
+    doc/plugins.org
+    doc/compiling.org
+    doc/using-haskell.org
+    etc/padding-icon.sh
+    etc/xmobar.config
+    etc/xmobar.hs
+    etc/xmonadpropwrite.hs
+    etc/xmobar.el
+    etc/notify-once.sh
 
 source-repository head
-  type:      git
-  location:  https://codeberg.org/xmobar/xmobar.git
-  branch:    master
+    type:     git
+    location: https://codeberg.org/xmobar/xmobar.git
+    branch:   master
 
 flag with_xrender
-  description: Use XRender for alpha background pseudo-transparency.
-  default: True
+    description: Use XRender for alpha background pseudo-transparency.
 
 flag with_inotify
-  description: inotify support (modern Linux only). Required for the Mail and MBox plugins.
-  default: False
+    description:
+        inotify support (modern Linux only). Required for the Mail and MBox plugins.
 
+    default:     False
+
 flag with_iwlib
-  description: Wireless info support via Wext ioctls (deprecated). Required for the Wireless plugin, needs iwlib installed.
-  default: False
+    description:
+        Wireless info support via Wext ioctls (deprecated). Required for the Wireless plugin, needs iwlib installed.
 
+    default:     False
+
 flag with_nl80211
-  description: Wireless info support via nl80211. Required for the Wireless plugin on systems running Linux, the kernel.
-  default: False
+    description:
+        Wireless info support via nl80211. Required for the Wireless plugin on systems running Linux, the kernel.
 
+    default:     False
+
 flag with_mpd
-  description: MPD support. Needs libmpd installed.
-  default: False
+    description: MPD support. Needs libmpd installed.
+    default:     False
 
 flag all_extensions
-  description: Includes all optional extensions.
-  default: False
+    description: Includes all optional extensions.
+    default:     False
 
 flag with_alsa
-  description: Use alsa-mixer to get the volume from soundcards.
-  default: False
+    description: Use alsa-mixer to get the volume from soundcards.
+    default:     False
 
 flag with_datezone
-  description: Enables localized date support.
-  default: False
+    description: Enables localized date support.
+    default:     False
 
 flag with_mpris
-  description: MPRIS v1, v2 support.
-  default: False
+    description: MPRIS v1, v2 support.
+    default:     False
 
 flag with_dbus
-  description: Publish a service on the session bus for controlling xmobar.
-  default: False
+    description:
+        Publish a service on the session bus for controlling xmobar.
 
+    default:     False
+
 flag with_xpm
-  description: Enable usage of xpm for icons.
-  default: False
+    description: Enable usage of xpm for icons.
+    default:     False
 
 flag with_threaded
-  description: Use threaded runtime. Required for timer coalescing (less power usage).
-  default: False
+    description:
+        Use threaded runtime. Required for timer coalescing (less power usage).
 
+    default:     False
+
 flag with_rtsopts
-  description: Use -with-rtsopts=-V0 to reduce wakeups.
-  default: True
+    description: Use -with-rtsopts=-V0 to reduce wakeups.
 
 flag with_shared
-  description: Use shared libraries. Required when dependencies are built as shared libraries.
-  default: False
+    description:
+        Use shared libraries. Required when dependencies are built as shared libraries.
 
+    default:     False
+
 flag with_weather
-  description: Enable weather plugin.
-  default: True
+    description: Enable weather plugin.
 
 flag with_uvmeter
-  description: UVMeter only useful to australians.
-  default: False
+    description: UVMeter only useful to australians.
+    default:     False
 
 flag with_kraken
-  description: Enable Kraken plugin.
-  default: False
+    description: Enable Kraken plugin.
+    default:     False
 
 library
-    default-language: Haskell2010
-    hs-source-dirs:  src
-
-    exposed-modules: Xmobar,
-                     Xmobar.Plugins.Accordion,
-                     Xmobar.Plugins.Monitors.Common.Types,
-                     Xmobar.Plugins.Monitors.Common.Run,
-                     Xmobar.Plugins.Monitors.Common,
-                     Xmobar.Plugins.Monitors.Cpu
-
-    other-modules: Paths_xmobar,
-                   Xmobar.Config.Types,
-                   Xmobar.Config.Parse,
-                   Xmobar.Config.Template,
-                   Xmobar.Run.Types,
-                   Xmobar.Run.Timer,
-                   Xmobar.Run.Template,
-                   Xmobar.Run.Exec,
-                   Xmobar.Run.Runnable
-                   Xmobar.Run.Actions,
-                   Xmobar.Run.Loop,
-                   Xmobar.Draw.Boxes,
-                   Xmobar.Draw.Cairo,
-                   Xmobar.Draw.Types,
-                   Xmobar.App.Config,
-                   Xmobar.App.Main,
-                   Xmobar.App.Opts,
-                   Xmobar.App.Compile,
-                   Xmobar.System.Utils,
-                   Xmobar.System.StatFS,
-                   Xmobar.System.Environment,
-                   Xmobar.System.Localize,
-                   Xmobar.System.Signal,
-                   Xmobar.System.Kbd,
-                   Xmobar.Text.Ansi,
-                   Xmobar.Text.Loop,
-                   Xmobar.Text.Pango,
-                   Xmobar.Text.Swaybar,
-                   Xmobar.Text.SwaybarClicks,
-                   Xmobar.Text.Output,
-                   Xmobar.X11.Bitmap,
-                   Xmobar.X11.CairoSurface,
-                   Xmobar.X11.ColorCache,
-                   Xmobar.X11.Draw,
-                   Xmobar.X11.Events,
-                   Xmobar.X11.Loop,
-                   Xmobar.X11.Text,
-                   Xmobar.X11.Types,
-                   Xmobar.X11.Window,
-                   Xmobar.Plugins.Command,
-                   Xmobar.Plugins.BufferedPipeReader,
-                   Xmobar.Plugins.CommandReader,
-                   Xmobar.Plugins.Date,
-                   Xmobar.Plugins.EWMH,
-                   Xmobar.Plugins.HandleReader,
-                   Xmobar.Plugins.QueueReader,
-                   Xmobar.Plugins.PacmanUpdates,
-                   Xmobar.Plugins.PipeReader,
-                   Xmobar.Plugins.MarqueePipeReader,
-                   Xmobar.Plugins.StdinReader,
-                   Xmobar.Plugins.XMonadLog,
-                   Xmobar.Plugins.Kbd,
-                   Xmobar.Plugins.Locks,
-                   Xmobar.Plugins.NotmuchMail,
-                   Xmobar.Plugins.Monitors,
-                   Xmobar.Plugins.Monitors.Batt,
-                   Xmobar.Plugins.Monitors.Batt.Common,
-                   Xmobar.Plugins.Monitors.Common.Output,
-                   Xmobar.Plugins.Monitors.Common.Parsers,
-                   Xmobar.Plugins.Monitors.Common.Files,
-                   Xmobar.Plugins.Monitors.CoreTemp,
-                   Xmobar.Plugins.Monitors.K10Temp,
-                   Xmobar.Plugins.Monitors.Cpu.Common,
-                   Xmobar.Plugins.Monitors.CpuFreq,
-                   Xmobar.Plugins.Monitors.Disk,
-                   Xmobar.Plugins.Monitors.Disk.Common,
-                   Xmobar.Plugins.Monitors.Load,
-                   Xmobar.Plugins.Monitors.Load.Common,
-                   Xmobar.Plugins.Monitors.Mem,
-                   Xmobar.Plugins.Monitors.MultiCoreTemp,
-                   Xmobar.Plugins.Monitors.MultiCpu,
-                   Xmobar.Plugins.Monitors.Net,
-                   Xmobar.Plugins.Monitors.Net.Common,
-                   Xmobar.Plugins.Monitors.Swap,
-                   Xmobar.Plugins.Monitors.Thermal,
-                   Xmobar.Plugins.Monitors.ThermalZone,
-                   Xmobar.Plugins.Monitors.Top,
-                   Xmobar.Plugins.Monitors.Top.Common,
-                   Xmobar.Plugins.Monitors.Uptime,
-                   Xmobar.Plugins.Monitors.Bright,
-                   Xmobar.Plugins.Monitors.CatInt
+    exposed-modules:
+        Xmobar
+        Xmobar.Plugins.Accordion
+        Xmobar.Plugins.Monitors.Common.Types
+        Xmobar.Plugins.Monitors.Common.Run
+        Xmobar.Plugins.Monitors.Common
+        Xmobar.Plugins.Monitors.Cpu
 
-    extra-libraries: Xrandr Xrender
+    hs-source-dirs:   src
+    other-modules:
+        Paths_xmobar
+        Xmobar.Config.Types
+        Xmobar.Config.Parse
+        Xmobar.Config.Template
+        Xmobar.Run.Types
+        Xmobar.Run.Timer
+        Xmobar.Run.Template
+        Xmobar.Run.Exec
+        Xmobar.Run.Runnable
+        Xmobar.Run.Actions
+        Xmobar.Run.Loop
+        Xmobar.Draw.Boxes
+        Xmobar.Draw.Cairo
+        Xmobar.Draw.Types
+        Xmobar.App.Config
+        Xmobar.App.Main
+        Xmobar.App.Opts
+        Xmobar.App.Compile
+        Xmobar.System.Utils
+        Xmobar.System.StatFS
+        Xmobar.System.Environment
+        Xmobar.System.Localize
+        Xmobar.System.Signal
+        Xmobar.System.Kbd
+        Xmobar.Text.Ansi
+        Xmobar.Text.Loop
+        Xmobar.Text.Pango
+        Xmobar.Text.Swaybar
+        Xmobar.Text.SwaybarClicks
+        Xmobar.Text.Output
+        Xmobar.X11.Bitmap
+        Xmobar.X11.CairoSurface
+        Xmobar.X11.ColorCache
+        Xmobar.X11.Draw
+        Xmobar.X11.Events
+        Xmobar.X11.Loop
+        Xmobar.X11.Text
+        Xmobar.X11.Types
+        Xmobar.X11.Window
+        Xmobar.Plugins.Command
+        Xmobar.Plugins.BufferedPipeReader
+        Xmobar.Plugins.CommandReader
+        Xmobar.Plugins.Date
+        Xmobar.Plugins.EWMH
+        Xmobar.Plugins.HandleReader
+        Xmobar.Plugins.QueueReader
+        Xmobar.Plugins.PacmanUpdates
+        Xmobar.Plugins.PipeReader
+        Xmobar.Plugins.MarqueePipeReader
+        Xmobar.Plugins.StdinReader
+        Xmobar.Plugins.XMonadLog
+        Xmobar.Plugins.Kbd
+        Xmobar.Plugins.Locks
+        Xmobar.Plugins.NotmuchMail
+        Xmobar.Plugins.Monitors
+        Xmobar.Plugins.Monitors.Batt
+        Xmobar.Plugins.Monitors.Batt.Common
+        Xmobar.Plugins.Monitors.Common.Output
+        Xmobar.Plugins.Monitors.Common.Parsers
+        Xmobar.Plugins.Monitors.Common.Files
+        Xmobar.Plugins.Monitors.CoreTemp
+        Xmobar.Plugins.Monitors.K10Temp
+        Xmobar.Plugins.Monitors.Cpu.Common
+        Xmobar.Plugins.Monitors.CpuFreq
+        Xmobar.Plugins.Monitors.Disk
+        Xmobar.Plugins.Monitors.Disk.Common
+        Xmobar.Plugins.Monitors.Load
+        Xmobar.Plugins.Monitors.Load.Common
+        Xmobar.Plugins.Monitors.Mem
+        Xmobar.Plugins.Monitors.MultiCoreTemp
+        Xmobar.Plugins.Monitors.MultiCpu
+        Xmobar.Plugins.Monitors.Net
+        Xmobar.Plugins.Monitors.Net.Common
+        Xmobar.Plugins.Monitors.Swap
+        Xmobar.Plugins.Monitors.Thermal
+        Xmobar.Plugins.Monitors.ThermalZone
+        Xmobar.Plugins.Monitors.Top
+        Xmobar.Plugins.Monitors.Top.Common
+        Xmobar.Plugins.Monitors.Uptime
+        Xmobar.Plugins.Monitors.Bright
+        Xmobar.Plugins.Monitors.CatInt
 
-    ghc-options: -funbox-strict-fields -Wall -fno-warn-unused-do-bind
+    default-language: Haskell2010
+    extra-libraries:
+        Xrandr
+        Xrender
 
+    ghc-options:      -funbox-strict-fields -Wall -fno-warn-unused-do-bind
     build-depends:
-                  aeson >= 1.4.7.1,
-                  async,
-                  base >= 4.18.0 && < 4.22,
-                  bytestring >= 0.10.8.2,
-                  cairo >= 0.13,
-                  colour >= 2.3.6,
-                  containers,
-                  directory,
-                  extra,
-                  filepath,
-                  mtl >= 2.1 && < 2.4,
-                  old-locale,
-                  pango >= 0.13,
-                  parsec == 3.1.*,
-                  parsec-numbers >= 0.1.0,
-                  process,
-                  regex-compat,
-                  stm >= 2.3 && < 2.6,
-                  time,
-                  transformers,
-                  unix,
-                  utf8-string >= 0.3 && < 1.1,
-                  vector,
-                  X11 >= 1.6.1
+        aeson >=1.4.7.1 && <2.4,
+        async <2.3,
+        base >=4.18.0 && <4.22,
+        bytestring >=0.10.8.2 && <0.13,
+        cairo >=0.13 && <0.14,
+        colour >=2.3.6 && <2.4,
+        containers <0.9,
+        directory <1.4,
+        extra <1.9,
+        filepath <1.6,
+        mtl >=2.1 && <2.4,
+        old-locale <1.1,
+        pango >=0.13 && <0.14,
+        parsec >=3.1 && <3.2,
+        parsec-numbers >=0.1.0 && <0.2,
+        process <1.7,
+        regex-compat <0.96,
+        stm >=2.3 && <2.6,
+        time <1.17,
+        transformers <0.7,
+        unix <2.9,
+        utf8-string >=0.3 && <1.1,
+        vector <0.14,
+        X11 >=1.6.1 && <1.11
 
-    if impl(ghc < 8.0.2)
-       -- Disable building with GHC before 8.0.2.
-       -- Due to a cabal bug, do not use buildable: False,
-       -- but instead give it an impossible constraint.
-       -- See: https://github.com/haskell-infra/hackage-trustees/issues/165
-       build-depends: unsupported-ghc-version > 1 && < 1
+    if impl(ghc <9.6.0)
+        build-depends: unsupported-ghc-version >=1 && <1
 
     if flag(with_threaded)
-       -- -threaded is a workaround for 100% CPU busy loop
-       -- (http://hackage.haskell.org/trac/ghc/ticket/4934).
-       -- See also comments in https://codeberg.org/xmobar/xmobar/pulls/36
-       cpp-options: -DTHREADED_RUNTIME
+        cpp-options: -DTHREADED_RUNTIME
 
     if flag(with_rtsopts)
-       cpp-options: -DRTSOPTS
+        cpp-options: -DRTSOPTS
 
     if flag(with_shared)
-       cpp-options: -DSHARED_LIBRARIES
+        cpp-options: -DSHARED_LIBRARIES
 
     if flag(with_xrender)
-       build-depends: X11-xft >= 0.2
-       other-modules: Xmobar.X11.XRender
-       cpp-options: -DXRENDER
+        cpp-options:   -DXRENDER
+        other-modules: Xmobar.X11.XRender
+        build-depends: X11-xft >=0.2 && <0.4
 
-    if flag(with_inotify) || flag(all_extensions)
-       build-depends: hinotify >= 0.3 && < 0.5
-       other-modules: Xmobar.Plugins.Mail, Xmobar.Plugins.MBox
-       cpp-options: -DINOTIFY
+    if (flag(with_inotify) || flag(all_extensions))
+        cpp-options:   -DINOTIFY
+        other-modules:
+            Xmobar.Plugins.Mail
+            Xmobar.Plugins.MBox
 
-    if flag(with_iwlib) || flag(with_nl80211) || flag(all_extensions)
-       other-modules: Xmobar.Plugins.Monitors.Wireless
+        build-depends: hinotify >=0.3 && <0.5
 
+    if ((flag(with_iwlib) || flag(with_nl80211)) || flag(all_extensions))
+        other-modules: Xmobar.Plugins.Monitors.Wireless
+
     if flag(with_iwlib)
-       extra-libraries: iw
-       build-depends: iwlib >= 0.1.0 && < 0.2
-       cpp-options: -DIWLIB
+        cpp-options:     -DIWLIB
+        extra-libraries: iw
+        build-depends:   iwlib >=0.1.0 && <0.2
 
-    if !flag(with_iwlib) && (flag(with_nl80211) || flag(all_extensions))
-       build-depends: netlink >= 1.1.1.0,
-                      cereal >= 0.5.8.1
-       cpp-options: -DUSE_NL80211
+    if (!flag(with_iwlib) && (flag(with_nl80211) || flag(all_extensions)))
+        cpp-options:   -DUSE_NL80211
+        build-depends:
+            netlink >=1.1.1.0,
+            cereal >=0.5.8.1
 
-    if flag(with_mpd) || flag(all_extensions)
-       build-depends: libmpd >= 0.10.0.1
-       other-modules: Xmobar.Plugins.Monitors.MPD
-       cpp-options: -DLIBMPD
+    if (flag(with_mpd) || flag(all_extensions))
+        cpp-options:   -DLIBMPD
+        other-modules: Xmobar.Plugins.Monitors.MPD
+        build-depends: libmpd >=0.10.0.1 && <0.11
 
-    if flag(with_alsa) || flag(all_extensions)
-       build-depends: alsa-mixer >= 0.3 && < 0.4
-       build-depends: alsa-core == 0.5.*,
-                      process >= 1.4.3.0
-       other-modules: Xmobar.Plugins.Monitors.Volume,
-                      Xmobar.Plugins.Monitors.Alsa
-       cpp-options: -DALSA
+    if (flag(with_alsa) || flag(all_extensions))
+        cpp-options:   -DALSA
+        other-modules:
+            Xmobar.Plugins.Monitors.Volume
+            Xmobar.Plugins.Monitors.Alsa
 
-    if flag(with_datezone) || flag(all_extensions)
-       build-depends: timezone-olson >= 0.2 && < 0.3, timezone-series == 0.1.*
-       other-modules: Xmobar.Plugins.DateZone
-       cpp-options: -DDATEZONE
+        build-depends:
+            alsa-mixer >=0.3 && <0.4,
+            alsa-core >=0.5 && <0.6,
+            process >=1.4.3.0 && <1.7
 
-    if flag(with_mpris) || flag(all_extensions)
-       build-depends: dbus >= 1
-       other-modules: Xmobar.Plugins.Monitors.Mpris
-       cpp-options: -DMPRIS
+    if (flag(with_datezone) || flag(all_extensions))
+        cpp-options:   -DDATEZONE
+        other-modules: Xmobar.Plugins.DateZone
+        build-depends:
+            timezone-olson >=0.2 && <0.3,
+            timezone-series >=0.1 && <0.2
 
-    if flag(with_dbus) || flag(all_extensions)
-       build-depends: dbus >= 1
-       other-modules: Xmobar.System.DBus
-       cpp-options: -DDBUS
+    if (flag(with_mpris) || flag(all_extensions))
+        cpp-options:   -DMPRIS
+        other-modules: Xmobar.Plugins.Monitors.Mpris
+        build-depends: dbus >=1 && <1.5
 
-    if flag(with_xpm) || flag(all_extensions)
-       extra-libraries: Xpm
-       other-modules: Xmobar.X11.XPMFile
-       cpp-options: -DXPM
+    if (flag(with_dbus) || flag(all_extensions))
+        cpp-options:   -DDBUS
+        other-modules: Xmobar.System.DBus
+        build-depends: dbus >=1 && <1.5
 
-    if flag(with_weather) || flag(all_extensions)
-       other-modules: Xmobar.Plugins.Monitors.Weather
-       cpp-options: -DWEATHER
-       build-depends: http-conduit, http-types, http-client-tls
+    if (flag(with_xpm) || flag(all_extensions))
+        cpp-options:     -DXPM
+        other-modules:   Xmobar.X11.XPMFile
+        extra-libraries: Xpm
 
+    if (flag(with_weather) || flag(all_extensions))
+        cpp-options:   -DWEATHER
+        other-modules: Xmobar.Plugins.Monitors.Weather
+        build-depends:
+            http-conduit <2.4,
+            http-types <0.13,
+            http-client-tls <0.5
+
     if flag(with_uvmeter)
-       other-modules: Xmobar.Plugins.Monitors.UVMeter
-       build-depends: http-conduit, http-types
-       cpp-options: -DUVMETER
+        cpp-options:   -DUVMETER
+        other-modules: Xmobar.Plugins.Monitors.UVMeter
+        build-depends:
+            http-conduit,
+            http-types
 
     if flag(with_kraken)
-      other-modules: Xmobar.Plugins.Kraken
-      build-depends: aeson == 1.5.6.*
-                   , text == 1.2.4.*
-                   , unordered-containers == 0.2.14.*
-                   , vector == 0.12.3.*
-                   , wuss == 1.1.*
-                   , websockets == 0.12.*
-      cpp-options: -DKRAKEN
+        cpp-options:   -DKRAKEN
+        other-modules: Xmobar.Plugins.Kraken
+        build-depends:
+            aeson >=1.5.6 && <1.5.7,
+            text >=1.2.4 && <1.2.5,
+            unordered-containers >=0.2.14 && <0.2.15,
+            vector >=0.12.3 && <0.12.4,
+            wuss >=1.1 && <1.2,
+            websockets >=0.12 && <0.13
 
     if os(freebsd)
-       -- enables freebsd specific code
-       extra-libraries: procstat
-                      , kvm
-                      , geom
-       build-depends: bsd-sysctl
-       other-modules: Xmobar.Plugins.Monitors.Batt.FreeBSD,
-                      Xmobar.Plugins.Monitors.Cpu.FreeBSD,
-                      Xmobar.Plugins.Monitors.Disk.FreeBSD,
-                      Xmobar.Plugins.Monitors.Load.FreeBSD,
-                      Xmobar.Plugins.Monitors.Mem.FreeBSD,
-                      Xmobar.Plugins.Monitors.Net.FreeBSD,
-                      Xmobar.Plugins.Monitors.Swap.FreeBSD,
-                      Xmobar.Plugins.Monitors.Top.FreeBSD,
-                      Xmobar.Plugins.Monitors.Uptime.FreeBSD
+        other-modules:
+            Xmobar.Plugins.Monitors.Batt.FreeBSD
+            Xmobar.Plugins.Monitors.Cpu.FreeBSD
+            Xmobar.Plugins.Monitors.Disk.FreeBSD
+            Xmobar.Plugins.Monitors.Load.FreeBSD
+            Xmobar.Plugins.Monitors.Mem.FreeBSD
+            Xmobar.Plugins.Monitors.Net.FreeBSD
+            Xmobar.Plugins.Monitors.Swap.FreeBSD
+            Xmobar.Plugins.Monitors.Top.FreeBSD
+            Xmobar.Plugins.Monitors.Uptime.FreeBSD
+
+        extra-libraries:
+            procstat
+            kvm
+            geom
+
+        build-depends:   bsd-sysctl <1.1
+
     else
-       other-modules: Xmobar.Plugins.Monitors.Batt.Linux,
-                      Xmobar.Plugins.Monitors.Cpu.Linux,
-                      Xmobar.Plugins.Monitors.Disk.Linux,
-                      Xmobar.Plugins.Monitors.Load.Linux,
-                      Xmobar.Plugins.Monitors.Mem.Linux,
-                      Xmobar.Plugins.Monitors.Net.Linux,
-                      Xmobar.Plugins.Monitors.Swap.Linux,
-                      Xmobar.Plugins.Monitors.Top.Linux,
-                      Xmobar.Plugins.Monitors.Uptime.Linux
+        other-modules:
+            Xmobar.Plugins.Monitors.Batt.Linux
+            Xmobar.Plugins.Monitors.Cpu.Linux
+            Xmobar.Plugins.Monitors.Disk.Linux
+            Xmobar.Plugins.Monitors.Load.Linux
+            Xmobar.Plugins.Monitors.Mem.Linux
+            Xmobar.Plugins.Monitors.Net.Linux
+            Xmobar.Plugins.Monitors.Swap.Linux
+            Xmobar.Plugins.Monitors.Top.Linux
+            Xmobar.Plugins.Monitors.Uptime.Linux
 
 executable xmobar
-    default-language:   Haskell2010
-    hs-source-dirs:     app
-    main-is:            Main.hs
-    build-depends:      X11,
-                        async,
-                        base,
-                        containers,
-                        directory,
-                        filepath,
-                        parsec,
-                        unix,
-                        xmobar
-
-    ghc-options: -funbox-strict-fields -Wall -fno-warn-unused-do-bind
+    main-is:          Main.hs
+    hs-source-dirs:   app
+    default-language: Haskell2010
+    ghc-options:      -funbox-strict-fields -Wall -fno-warn-unused-do-bind
+    build-depends:
+        X11 <1.11,
+        async <2.3,
+        base,
+        containers <0.9,
+        directory <1.4,
+        filepath <1.6,
+        parsec,
+        unix <2.9,
+        xmobar
 
     if flag(with_rtsopts)
-       ghc-options: -with-rtsopts=-V0
+        ghc-options: -with-rtsopts=-V0
 
     if flag(with_threaded)
-       ghc-options: -threaded
-       cpp-options: -DTHREADED_RUNTIME
+        cpp-options: -DTHREADED_RUNTIME
+        ghc-options: -threaded
 
 test-suite XmobarTest
-  default-language:   Haskell2010
-  type:           exitcode-stdio-1.0
-  hs-source-dirs: src, test
-  main-is:        Spec.hs
-  build-depends: X11,
-                 async,
-                 base,
-                 bytestring,
-                 containers,
-                 directory,
-                 filepath,
-                 hspec == 2.*,
-                 mtl,
-                 old-locale,
-                 parsec,
-                 parsec-numbers,
-                 process,
-                 regex-compat,
-                 regex-tdfa,
-                 stm,
-                 temporary,
-                 time,
-                 transformers,
-                 unix,
-                 xmobar
+    type:             exitcode-stdio-1.0
+    main-is:          Spec.hs
+    hs-source-dirs:   src test
+    other-modules:
+        Xmobar.Plugins.Monitors.CommonSpec
+        Xmobar.Plugins.Monitors.Common
+        Xmobar.Plugins.Monitors.Common.Parsers
+        Xmobar.Plugins.Monitors.Common.Types
+        Xmobar.Plugins.Monitors.Common.Output
+        Xmobar.Plugins.Monitors.Common.Files
+        Xmobar.Plugins.Monitors.Cpu
+        Xmobar.Plugins.Monitors.Cpu.Common
+        Xmobar.Plugins.Monitors.CpuSpec
+        Xmobar.Plugins.Monitors.Common.Run
+        Xmobar.Run.Exec
+        Xmobar.Run.Timer
+        Xmobar.System.Signal
 
-  other-modules: Xmobar.Plugins.Monitors.CommonSpec
-                 Xmobar.Plugins.Monitors.Common
-                 Xmobar.Plugins.Monitors.Common.Parsers
-                 Xmobar.Plugins.Monitors.Common.Types
-                 Xmobar.Plugins.Monitors.Common.Output
-                 Xmobar.Plugins.Monitors.Common.Files
-                 Xmobar.Plugins.Monitors.Cpu
-                 Xmobar.Plugins.Monitors.Cpu.Common
-                 Xmobar.Plugins.Monitors.CpuSpec
-                 Xmobar.Plugins.Monitors.Common.Run
-                 Xmobar.Run.Exec
-                 Xmobar.Run.Timer
-                 Xmobar.System.Signal
+    default-language: Haskell2010
+    build-depends:
+        X11 <1.11,
+        async <2.3,
+        base,
+        bytestring <0.13,
+        containers <0.9,
+        directory <1.4,
+        filepath <1.6,
+        hspec >=2 && <3,
+        mtl,
+        old-locale <1.1,
+        parsec,
+        parsec-numbers <0.2,
+        process <1.7,
+        regex-compat <0.96,
+        regex-tdfa <1.4,
+        stm,
+        temporary <1.4,
+        time <1.17,
+        transformers <0.7,
+        unix <2.9,
+        xmobar
 
-  if flag(with_alsa) || flag(all_extensions)
-      build-depends: alsa-mixer,
-                     alsa-core,
-                     process >= 1.4.3.0
-      other-modules: Xmobar.Plugins.Monitors.Volume
-                     Xmobar.Plugins.Monitors.Alsa
-                     Xmobar.Plugins.Monitors.AlsaSpec
+    if (flag(with_alsa) || flag(all_extensions))
+        cpp-options:   -DALSA
+        other-modules:
+            Xmobar.Plugins.Monitors.Volume
+            Xmobar.Plugins.Monitors.Alsa
+            Xmobar.Plugins.Monitors.AlsaSpec
 
-      cpp-options: -DALSA
+        build-depends:
+            alsa-mixer,
+            alsa-core,
+            process >=1.4.3.0 && <1.7
 
-  if os(freebsd)
-       -- enables freebsd specific code
-      build-depends: bsd-sysctl
-      other-modules: Xmobar.Plugins.Monitors.Cpu.FreeBSD
-  else
-      other-modules: Xmobar.Plugins.Monitors.Cpu.Linux
+    if os(freebsd)
+        other-modules: Xmobar.Plugins.Monitors.Cpu.FreeBSD
+        build-depends: bsd-sysctl
 
+    else
+        other-modules: Xmobar.Plugins.Monitors.Cpu.Linux
+
 benchmark xmobarbench
-  type: exitcode-stdio-1.0
-  main-is: main.hs
-  hs-source-dirs: bench
-  ghc-options: -funbox-strict-fields -Wall -fno-warn-unused-do-bind -O2
-  build-depends: base, gauge, mtl, time, xmobar
-  default-language: Haskell2010
+    type:             exitcode-stdio-1.0
+    main-is:          main.hs
+    hs-source-dirs:   bench
+    default-language: Haskell2010
+    ghc-options:      -funbox-strict-fields -Wall -fno-warn-unused-do-bind 
+    build-depends:
+        base,
+        gauge,
+        mtl,
+        time <1.17,
+        xmobar
