diff --git a/pelican.cabal b/pelican.cabal
index 9b98b3e75ddb4d4cc514a89826fa524cf613df09..f8ce98d77ea9d1053ef461768c5b9f9d9fdc7872 100644
--- a/pelican.cabal
+++ b/pelican.cabal
@@ -1,98 +1,29 @@
-cabal-version: 3.0
-
-name: pelican
-version: 0.1.0.0
-homepage: https://gitlab.pirati.cz/to/pelican
-bug-reports: https://gitlab.pirati.cz/to/pelican/issues
-
-license: AGPL-3.0-or-later
-license-file: LICENSE.md
-copyright: Piráti
-maintainer: jan.hamal.dvorak@pirati.cz
-author: Jan Hamal Dvořák
-
-synopsis: Wards against evils of mis-billed short messages
---description:
-
-category: Application
-build-type: Simple
-
-extra-source-files: README.md
-
+cabal-version:      3.0
+name:               pelican
+version:            0.1.0.0
+license:            AGPL-3.0-or-later
+license-file:       LICENSE.md
+copyright:          Piráti
+maintainer:         jan.hamal.dvorak@pirati.cz
+author:             Jan Hamal Dvořák
+homepage:           https://gitlab.pirati.cz/to/pelican
+bug-reports:        https://gitlab.pirati.cz/to/pelican/issues
+synopsis:           Wards against evils of mis-billed short messages
+category:           Application
+build-type:         Simple
 data-files:
     static/favicon.ico
     sql/*.sql
 
+extra-source-files: README.md
+
 source-repository head
-    type: git
+    type:     git
     location: https://gitlab.pirati.cz/to/pelican
 
-common common
-    default-language: Haskell2010
-
-    default-extensions:
-      BlockArguments
-      DataKinds
-      DeriveGeneric
-      DuplicateRecordFields
-      FlexibleContexts
-      FlexibleInstances
-      GeneralizedNewtypeDeriving
-      LambdaCase
-      MultiParamTypeClasses
-      NamedFieldPuns
-      NoImplicitPrelude
-      NumericUnderscores
-      OverloadedStrings
-      ParallelListComp
-      QuasiQuotes
-      Rank2Types
-      RecordWildCards
-      ScopedTypeVariables
-      StandaloneDeriving
-      TemplateHaskell
-      TupleSections
-      TypeFamilies
-      UndecidableInstances
-
-    ghc-options:
-        -Wall
-        -Wcompat
-        -Wincomplete-uni-patterns
-        -Wincomplete-record-updates
-        -Widentities
-        -Wredundant-constraints
-
-    build-depends:
-      , aeson                       >=1.4  && <1.6
-      , aweg                        >=0.1  && <0.2
-      , base                        >=4.13 && <4.16
-      , bytestring                  >=0.10 && <0.12
-      , fast-logger                 >=3.0  && <3.1
-      , hikaru                      >=0.2  && <0.3
-      , http-types                  >=0.12 && <0.13
-      , lucid                       >=2.9  && <2.10
-      , mtl                         >=2.2  && <2.3
-      , postgresql-simple           >=0.6  && <0.7
-      , praha                       >=0.1  && <0.2
-      , praha-config                >=0.1  && <0.2
-      , praha-logger                >=0.1  && <0.2
-      , praha-migrate               >=0.1  && <0.2
-      , text                        >=1.2  && <1.3
-      , time                        >=1.9  && <1.12
-      , unliftio                    >=0.2  && <0.3
-      , unliftio-pool               >=0.2  && <0.3
-      , uuid                        >=1.3  && <1.4
-      , vector                      >=0.12 && <0.13
-      , wai                         >=3.2  && <3.3
-      , wai-extra                   >=3.0  && <3.2
-      , wai-middleware-static       >=0.9  && <0.10
-      , warp                        >=3.3  && <3.4
-
-
 executable pelican
-    import: common
-
+    main-is:            Main.hs
+    hs-source-dirs:     src
     other-modules:
         Paths_pelican
         Pelican.Action
@@ -111,16 +42,41 @@ executable pelican
         Pelican.Site
         Pelican.Types
 
-    hs-source-dirs: src
-    main-is: Main.hs
+    default-language:   GHC2021
+    default-extensions:
+        BlockArguments DataKinds DuplicateRecordFields
+        GeneralizedNewtypeDeriving LambdaCase NoImplicitPrelude
+        OverloadedStrings ParallelListComp QuasiQuotes Rank2Types
+        RecordWildCards TemplateHaskell TypeFamilies UndecidableInstances
 
     ghc-options:
-        -Wunused-packages
-        -threaded
-        -rtsopts
-        "-with-rtsopts=-N -c"
+        -Wall -Wcompat -Wincomplete-uni-patterns
+        -Wincomplete-record-updates -Widentities -Wredundant-constraints
+        -Wunused-packages -threaded -rtsopts "-with-rtsopts=-N -c"
 
     build-depends:
-      , optparse-applicative        >=0.16 && <0.17
-
--- EOF
+        aeson >=1.4 && <1.6,
+        aweg >=0.1 && <0.2,
+        base >=4.13 && <4.16,
+        bytestring >=0.10 && <0.12,
+        fast-logger >=3.0 && <3.1,
+        hikaru >=0.2 && <0.3,
+        http-types >=0.12 && <0.13,
+        lucid >=2.9 && <2.10,
+        mtl >=2.2 && <2.3,
+        postgresql-simple >=0.6 && <0.7,
+        praha >=0.1 && <0.2,
+        praha-config >=0.1 && <0.2,
+        praha-logger >=0.1 && <0.2,
+        praha-migrate >=0.1 && <0.2,
+        text >=1.2 && <1.3,
+        time >=1.9 && <1.12,
+        unliftio >=0.2 && <0.3,
+        unliftio-pool >=0.2 && <0.3,
+        uuid >=1.3 && <1.4,
+        vector >=0.12 && <0.13,
+        wai >=3.2 && <3.3,
+        wai-extra >=3.0 && <3.2,
+        wai-middleware-static >=0.9 && <0.10,
+        warp >=3.3 && <3.4,
+        optparse-applicative >=0.16 && <0.17