diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2025-01-02  Vladimir Shabanov  <dev@vshabanov.com>
+
+	* HsOpenSSL.cabal (Version): Bump version to 0.11.7.9
+
+	* Remove Setup.hs (#101)
+	by Andreas Abel @andreasabel
+
 2024-08-19  Vladimir Shabanov  <dev@vshabanov.com>
 
 	* HsOpenSSL.cabal (Version): Bump version to 0.11.7.8
diff --git a/HsOpenSSL.cabal b/HsOpenSSL.cabal
--- a/HsOpenSSL.cabal
+++ b/HsOpenSSL.cabal
@@ -10,7 +10,7 @@
     systems and stable. You may also be interested in the @tls@ package,
     <http://hackage.haskell.org/package/tls>, which is a pure Haskell
     implementation of SSL.
-Version:       0.11.7.8
+Version:       0.11.7.9
 License:       PublicDomain
 License-File:  COPYING
 Author:        Adam Langley, Mikhail Vorozhtsov, PHO, Taru Karttunen
@@ -19,14 +19,26 @@
 Homepage:      https://github.com/haskell-cryptography/HsOpenSSL
 Bug-Reports:   https://github.com/haskell-cryptography/HsOpenSSL/issues
 Category:      Cryptography
-Cabal-Version: 1.12
+Cabal-Version: 1.18
 Tested-With:
-    GHC==8.8.1, GHC==8.6.5, GHC==8.4.4, GHC==8.2.2, GHC==8.0.2, GHC==7.10.3
-Build-Type:    Custom
-Extra-Source-Files:
+    GHC ==8.0.2
+     || ==8.2.2
+     || ==8.4.4
+     || ==8.6.5
+     || ==8.8.4
+     || ==8.10.7
+     || ==9.0.2
+     || ==9.2.8
+     || ==9.4.8
+     || ==9.6.6
+     || ==9.8.1
+     || ==9.10.1
+Build-Type:    Simple
+Extra-Doc-Files:
     AUTHORS
     ChangeLog
     README.md
+Extra-Source-Files:
     cbits/HsOpenSSL.h
     cbits/mutex.h
     examples/Makefile
@@ -39,7 +51,7 @@
 
 Source-Repository head
     Type: git
-    Location: git://github.com/haskell-cryptography/HsOpenSSL.git
+    Location: https://github.com/haskell-cryptography/HsOpenSSL.git
 
 Flag fast-bignum
     Description:
@@ -67,10 +79,6 @@
     Manual:
         True
 
-Custom-setup
-    setup-depends: Cabal >= 1.12 && < 4,
-                   base  >= 4.8 && < 5
-
 Library
     Build-Depends:
         base       >= 4.8 && < 5,
@@ -88,11 +96,15 @@
         Build-Depends: integer-gmp >= 1.0.0 && < 1.1.0
 
     if os(darwin) && flag(homebrew-openssl)
-        Include-Dirs: /usr/local/opt/openssl/include
-        Extra-Lib-Dirs: /usr/local/opt/openssl/lib
+        if arch(aarch64)
+            Include-Dirs:   /opt/homebrew/opt/openssl/include
+            Extra-Lib-Dirs: /opt/homebrew/opt/openssl/lib
+        else
+            Include-Dirs:   /usr/local/opt/openssl/include
+            Extra-Lib-Dirs: /usr/local/opt/openssl/lib
 
     if os(darwin) && flag(macports-openssl)
-        Include-Dirs: /opt/local/include
+        Include-Dirs:   /opt/local/include
         Extra-Lib-Dirs: /opt/local/lib
 
     if flag(use-pkg-config)
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,136 +0,0 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE TupleSections #-}
-
-#ifndef MIN_VERSION_Cabal
--- MIN_VERSION_Cabal is defined and available to custom Setup.hs scripts
--- if either GHC >= 8.0 or cabal-install >= 1.24 is used.
--- So if it isn't defined, it's very likely we don't have Cabal >= 2.0.
-#define MIN_VERSION_Cabal(x,y,z) 0
-#endif
-
-import Distribution.Simple
-import Distribution.Simple.Setup (ConfigFlags(..), toFlag)
-import Distribution.Simple.LocalBuildInfo (localPkgDescr)
-
-#if MIN_VERSION_Cabal(2,0,0)
-import Distribution.PackageDescription (FlagName(..), mkFlagName)
-#else
-import Distribution.PackageDescription (FlagName(..))
-#endif
-
-#if MIN_VERSION_Cabal(2,1,0)
-import Distribution.PackageDescription (mkFlagAssignment, unFlagAssignment)
-#else
-import Distribution.PackageDescription (FlagAssignment)
-#endif
-
-import Distribution.Verbosity (silent)
-import System.Info (os)
-import qualified Control.Exception as E (tryJust, throw)
-import System.IO.Error (isUserError)
-import Control.Monad (forM)
-import Data.List
-
-#if !(MIN_VERSION_Cabal(2,0,0))
-mkFlagName = FlagName
-#endif
-
-#if !(MIN_VERSION_Cabal(2,1,0))
-mkFlagAssignment :: [(FlagName, Bool)] -> FlagAssignment
-mkFlagAssignment = id
-
-unFlagAssignment :: FlagAssignment -> [(FlagName, Bool)]
-unFlagAssignment = id
-#endif
-
--- On macOS we're checking whether OpenSSL library is avaiable
--- and if not, we're trying to find Homebrew or MacPorts OpenSSL installations.
---
--- Method is dumb -- set homebrew-openssl or macports-openssl flag and try
--- to configure and check C libs.
---
--- If no or multiple libraries are found we display error message
--- with instructions.
-
-main
-    | os == "darwin" =
-        defaultMainWithHooks simpleUserHooks { confHook = conf }
-    | otherwise =
-        defaultMain
-
-flags = ["homebrew-openssl", "macports-openssl"]
-
-conf descr cfg = do
-    c <- tryConfig descr cfg
-    case c of
-        Right lbi -> return lbi -- library was found
-        Left e
-            | unFlagAssignment (configConfigurationsFlags cfg)
-              `intersect` [(mkFlagName f, True) | f <- flags] /= [] ->
-                E.throw e
-                -- flag was set but library still wasn't found
-            | otherwise -> do
-                r <- forM flags $ \ f ->
-                    fmap (f,) $ tryConfig descr $
-                    setFlag (mkFlagName f) cfg { configVerbosity = toFlag silent }
-                    -- TODO: configure is a long operation
-                    -- while checkForeignDeps is fast.
-                    -- Perhaps there is a way to configure once
-                    -- and only apply flags to result and check.
-                    -- However, additional `configure`s happen only on macOS
-                    -- and only when library wasn't found.
-                case [(f,r) | (f, Right r) <- r] of
-                    [(_,lbi)] ->
-                        return lbi -- library was found
-                    [] ->
-                        fail notFound
-                    fs ->
-                        fail $ multipleFound fs
-
-notFound = unlines
-    [ "Can't find OpenSSL library."
-    , "Install it via 'brew install openssl' or 'port install openssl'."
-    , ""
-    , "If you already have OpenSSL installed, specify the location"
-    , "of the installed library in cabal.project:"
-    , ""
-    , "package HsOpenSSL"
-    , "  extra-include-dirs: ..."
-    , "  extra-lib-dirs: ..."
-    , ""
-    , "or use"
-    , ""
-    , "cabal configure --extra-include-dirs=... --extra-lib-dirs=..."
-    ]
-
-multipleFound fs = unlines
-    [ "Multiple OpenSSL libraries were found,"
-    , "use " ++ intercalate " or " ["'-f " ++ f ++ "'" | (f,_) <- fs]
-    , "to specify location of installed OpenSSL library."
-    ]
-
-setFlag f c = c { configConfigurationsFlags = mkFlagAssignment
-                                            $ go
-                                            $ unFlagAssignment
-                                            $ configConfigurationsFlags c }
-    where go [] = []
-          go (x@(n, _):xs)
-              | n == f = (f, True) : xs
-              | otherwise = x : go xs
-
-tryConfig descr flags = do
-    lbi <- confHook simpleUserHooks descr flags
-    -- confHook simpleUserHooks == Distribution.Simple.Configure.configure
-
-    -- Testing whether C lib and header dependencies are working.
-    -- We check exceptions only here, to check C libs errors but not other
-    -- configuration problems like not resolved .cabal dependencies.
-    E.tryJust ue $ do
-        postConf simpleUserHooks [] flags (localPkgDescr lbi) lbi
-        -- postConf simpleUserHooks ~==
-        --   Distribution.Simple.Configure.checkForeignDeps
-
-        return lbi
-
-    where ue e | isUserError e = Just e
-               | otherwise = Nothing
