diff --git a/configuration/common.nix b/configuration/common.nix index 30a3fd1bcfa5a40c3ac9eaa6601ecc0d79064043..c5c6d7d76eabf8e373043f939254c91fb5702db4 100644 --- a/configuration/common.nix +++ b/configuration/common.nix @@ -15,10 +15,68 @@ final: prev: { ]; }); + hasql-th = overrideCabal + prev.hasql-th + (_: + { + patches = [ + ./patches/hasql-th-01.patch + ]; + }); + + hasql-transaction = overrideCabal + prev.hasql-transaction + (_: + { + patches = [ + ./patches/hasql-transaction-01.patch + ./patches/hasql-transaction-02.patch + ]; + }); + + headed-megaparsec = overrideCabal + prev.headed-megaparsec + (_: + { + patches = [ + ./patches/headed-megaparsec-01.patch + ]; + }); + + html-entities = overrideCabal + prev.html-entities + (_: + { + patches = [ + ./patches/html-entities-01.patch + ]; + }); + libsodium = prev.callPackage ../pkgs/libsodium.nix { inherit (pkgs) libsodium; }; + linear-generics = overrideCabal + prev.linear-generics + (_: + { + patches = [ + ./patches/linear-generics-01.patch + ./patches/linear-generics-02.patch + ]; + }); + + postgresql-syntax = overrideCabal + prev.postgresql-syntax + (_: + { + patches = [ + ./patches/postgresql-syntax-01.patch + ]; + }); + saltine = addPkgconfigDepend prev.saltine pkgs.libsodium; + sandwich = null; + text-icu = prev.callPackage ../pkgs/text-icu.nix { icu-i18n = pkgs.icu; }; xml-conduit-writer = overrideCabal diff --git a/configuration/patches/hasql-th-01.patch b/configuration/patches/hasql-th-01.patch new file mode 100644 index 0000000000000000000000000000000000000000..deb6803c8a67287605a3695988a0bf6da85f3119 --- /dev/null +++ b/configuration/patches/hasql-th-01.patch @@ -0,0 +1,19 @@ +commit e724581275f1dd3a673ccbff1b32f458b5b4589f +Author: Daniel Firth <dan.firth@homotopic.tech> +Date: Sun Dec 3 09:31:56 2023 +0000 + + hide unzip + +diff --git a/library/Hasql/TH/Prelude.hs b/library/Hasql/TH/Prelude.hs +index 60d73db..d01d39e 100644 +--- a/library/Hasql/TH/Prelude.hs ++++ b/library/Hasql/TH/Prelude.hs +@@ -29,7 +29,7 @@ import Data.Either as Exports + import Data.Fixed as Exports + import Data.Foldable as Exports + import Data.Function as Exports hiding (id, (.)) +-import Data.Functor as Exports ++import Data.Functor as Exports hiding (unzip) + import Data.Functor.Contravariant as Exports + import Data.Functor.Contravariant.Divisible as Exports + import Data.Functor.Identity as Exports diff --git a/configuration/patches/hasql-transaction-01.patch b/configuration/patches/hasql-transaction-01.patch new file mode 100644 index 0000000000000000000000000000000000000000..9a75605d3fb645f59211bb944a313ab9c9d33f79 --- /dev/null +++ b/configuration/patches/hasql-transaction-01.patch @@ -0,0 +1,507 @@ +commit d4bcbb5bdb361b828717962bab085f95b5feb60d +Author: Nikita Volkov <nikita.y.volkov@mail.ru> +Date: Wed Nov 23 20:22:52 2022 +0300 + + Format and isolate config + +diff --git a/conflicts-test/Main.hs b/conflicts-test/Main.hs +index 4ac6101..b12fbb6 100644 +--- a/conflicts-test/Main.hs ++++ b/conflicts-test/Main.hs +@@ -1,14 +1,13 @@ + module Main where + +-import Prelude ++import qualified Control.Concurrent.Async as F + import qualified Hasql.Connection as A + import qualified Hasql.Session as B + import qualified Hasql.Transaction as C + import qualified Hasql.Transaction.Sessions as G + import qualified Main.Statements as D + import qualified Main.Transactions as E +-import qualified Control.Concurrent.Async as F +- ++import Prelude + + main = + bracket acquire release use +@@ -18,8 +17,8 @@ main = + where + acquire = + join $ +- fmap (either (fail . show) return) $ +- A.acquire connectionSettings ++ fmap (either (fail . show) return) $ ++ A.acquire connectionSettings + where + connectionSettings = + A.settings "localhost" 5432 "postgres" "" "postgres" +@@ -42,15 +41,13 @@ main = + tests = + [readAndWriteTransactionsTest, transactionsTest, transactionAndQueryTest] + +- + session connection session = +- B.run session connection >>= +- either (fail . show) return ++ B.run session connection ++ >>= either (fail . show) return + + transaction connection transaction = + session connection (G.transaction G.RepeatableRead G.Write transaction) + +- + type Test = + A.Connection -> A.Connection -> IO Bool + +diff --git a/conflicts-test/Main/Statements.hs b/conflicts-test/Main/Statements.hs +index 406675c..d7c0b6f 100644 +--- a/conflicts-test/Main/Statements.hs ++++ b/conflicts-test/Main/Statements.hs +@@ -1,11 +1,10 @@ + module Main.Statements where + +-import Prelude + import Contravariant.Extras +-import Hasql.Statement +-import qualified Hasql.Encoders as E + import qualified Hasql.Decoders as D +- ++import qualified Hasql.Encoders as E ++import Hasql.Statement ++import Prelude + + createAccountTable :: Statement () () + createAccountTable = +@@ -45,4 +44,3 @@ getBalance = + ((E.param . E.nonNullable) E.int8) + (D.rowMaybe ((D.column . D.nonNullable) D.numeric)) + True +- +diff --git a/conflicts-test/Main/Transactions.hs b/conflicts-test/Main/Transactions.hs +index b58ada3..8e0001c 100644 +--- a/conflicts-test/Main/Transactions.hs ++++ b/conflicts-test/Main/Transactions.hs +@@ -1,9 +1,8 @@ + module Main.Transactions where + +-import Prelude + import Hasql.Transaction + import qualified Main.Statements as A +- ++import Prelude + + createSchema :: Transaction () + createSchema = +@@ -20,10 +19,8 @@ transfer id1 id2 amount = + do + success <- statement (id1, amount) A.modifyBalance + if success +- then +- statement (id2, negate amount) A.modifyBalance +- else +- return False ++ then statement (id2, negate amount) A.modifyBalance ++ else return False + + transferTimes :: Int -> Int64 -> Int64 -> Scientific -> Transaction () + transferTimes times id1 id2 amount = +diff --git a/hasql-transaction.cabal b/hasql-transaction.cabal +index 92bd97b..8d4fc1c 100644 +--- a/hasql-transaction.cabal ++++ b/hasql-transaction.cabal +@@ -24,8 +24,8 @@ library + Hasql.Transaction + Hasql.Transaction.Sessions + other-modules: ++ Hasql.Transaction.Config + Hasql.Transaction.Private.Prelude +- Hasql.Transaction.Private.Model + Hasql.Transaction.Private.SQL + Hasql.Transaction.Private.Statements + Hasql.Transaction.Private.Sessions +diff --git a/library/Hasql/Transaction.hs b/library/Hasql/Transaction.hs +index ad5d4e4..b6bc424 100644 +--- a/library/Hasql/Transaction.hs ++++ b/library/Hasql/Transaction.hs +@@ -1,14 +1,13 @@ + -- | + -- An API for declaration of transactions. + module Hasql.Transaction +-( +- -- * Transaction monad +- Transaction, +- condemn, +- sql, +- statement, +-) ++ ( -- * Transaction monad ++ Transaction, ++ condemn, ++ sql, ++ statement, ++ ) + where + ++import Hasql.Transaction.Config + import Hasql.Transaction.Private.Transaction +-import Hasql.Transaction.Private.Model +diff --git a/library/Hasql/Transaction/Private/Model.hs b/library/Hasql/Transaction/Config.hs +similarity index 52% +rename from library/Hasql/Transaction/Private/Model.hs +rename to library/Hasql/Transaction/Config.hs +index 484ea20..fac010e 100644 +--- a/library/Hasql/Transaction/Private/Model.hs ++++ b/library/Hasql/Transaction/Config.hs +@@ -1,25 +1,21 @@ +-module Hasql.Transaction.Private.Model +-where ++module Hasql.Transaction.Config where + + import Hasql.Transaction.Private.Prelude + +--- | +--- +-data Mode = +- -- | +- -- Read-only. No writes possible. +- Read | +- -- | +- -- Write and commit. +- Write ++data Mode ++ = -- | ++ -- Read-only. No writes possible. ++ Read ++ | -- | ++ -- Write and commit. ++ Write + deriving (Show, Eq, Ord, Enum, Bounded) + + -- | + -- For reference see + -- <http://www.postgresql.org/docs/current/static/transaction-iso.html the Postgres' documentation>. +--- +-data IsolationLevel = +- ReadCommitted | +- RepeatableRead | +- Serializable ++data IsolationLevel ++ = ReadCommitted ++ | RepeatableRead ++ | Serializable + deriving (Show, Eq, Ord, Enum, Bounded) +diff --git a/library/Hasql/Transaction/Private/Prelude.hs b/library/Hasql/Transaction/Private/Prelude.hs +index 9c54666..79bf394 100644 +--- a/library/Hasql/Transaction/Private/Prelude.hs ++++ b/library/Hasql/Transaction/Private/Prelude.hs +@@ -1,25 +1,28 @@ + module Hasql.Transaction.Private.Prelude +-( +- module Exports, +- tryError, +-) ++ ( module Exports, ++ tryError, ++ ) + where + +- +--- base +-------------------------- ++import Contravariant.Extras as Exports + import Control.Applicative as Exports + import Control.Arrow as Exports + import Control.Category as Exports + import Control.Concurrent as Exports + import Control.Exception as Exports +-import Control.Monad as Exports hiding (join, fail, mapM_, sequence_, forM_, msum, mapM, sequence, forM) +-import Control.Monad.IO.Class as Exports ++import Control.Monad as Exports hiding (fail, forM, forM_, join, mapM, mapM_, msum, sequence, sequence_) ++import Control.Monad.Error.Class as Exports (MonadError (..)) + import Control.Monad.Fail as Exports + import Control.Monad.Fix as Exports hiding (fix) ++import Control.Monad.IO.Class as Exports + import Control.Monad.ST as Exports ++import Control.Monad.Trans.Class as Exports ++import Control.Monad.Trans.Maybe as Exports hiding (liftListen, liftPass) ++import Control.Monad.Trans.Reader as Exports hiding (liftCallCC, liftCatch) ++import Control.Monad.Trans.State.Strict as Exports hiding (liftCallCC, liftCatch, liftListen, liftPass) + import Data.Bits as Exports + import Data.Bool as Exports ++import Data.ByteString as Exports (ByteString) + import Data.Char as Exports + import Data.Coerce as Exports + import Data.Complex as Exports +@@ -30,18 +33,20 @@ import Data.Fixed as Exports + import Data.Foldable as Exports hiding (toList) + import Data.Function as Exports hiding (id, (.)) + import Data.Functor as Exports ++import Data.Functor.Contravariant as Exports ++import Data.Functor.Contravariant.Divisible as Exports + import Data.Functor.Identity as Exports +-import Data.Int as Exports + import Data.IORef as Exports ++import Data.Int as Exports + import Data.Ix as Exports +-import Data.List as Exports hiding (sortOn, isSubsequenceOf, uncons, concat, foldr, foldl1, maximum, minimum, product, sum, all, and, any, concatMap, elem, foldl, foldr1, notElem, or, find, maximumBy, minimumBy, mapAccumL, mapAccumR, foldl') ++import Data.List as Exports hiding (all, and, any, concat, concatMap, elem, find, foldl, foldl', foldl1, foldr, foldr1, isSubsequenceOf, mapAccumL, mapAccumR, maximum, maximumBy, minimum, minimumBy, notElem, or, product, sortOn, sum, uncons) + import Data.Maybe as Exports +-import Data.Monoid as Exports hiding (Last(..), First(..), (<>), Alt) ++import Data.Monoid as Exports hiding (Alt, First (..), Last (..), (<>)) + import Data.Ord as Exports + import Data.Proxy as Exports + import Data.Ratio as Exports +-import Data.Semigroup as Exports + import Data.STRef as Exports ++import Data.Semigroup as Exports + import Data.String as Exports + import Data.Traversable as Exports + import Data.Tuple as Exports +@@ -52,13 +57,12 @@ import Debug.Trace as Exports + import Foreign.ForeignPtr as Exports + import Foreign.Ptr as Exports + import Foreign.StablePtr as Exports +-import Foreign.Storable as Exports hiding (sizeOf, alignment) +-import GHC.Conc as Exports hiding (withMVar, threadWaitWriteSTM, threadWaitWrite, threadWaitReadSTM, threadWaitRead) +-import GHC.Exts as Exports (lazy, inline, sortWith, groupWith, IsList(..)) ++import Foreign.Storable as Exports hiding (alignment, sizeOf) ++import GHC.Conc as Exports hiding (threadWaitRead, threadWaitReadSTM, threadWaitWrite, threadWaitWriteSTM, withMVar) ++import GHC.Exts as Exports (IsList (..), groupWith, inline, lazy, sortWith) + import GHC.Generics as Exports (Generic, Generic1) + import GHC.IO.Exception as Exports + import Numeric as Exports +-import Prelude as Exports hiding (fail, concat, foldr, mapM_, sequence_, foldl1, maximum, minimum, product, sum, all, and, any, concatMap, elem, foldl, foldr1, notElem, or, mapM, sequence, id, (.)) + import System.Environment as Exports + import System.Exit as Exports + import System.IO as Exports +@@ -68,35 +72,11 @@ import System.Mem as Exports + import System.Mem.StableName as Exports + import System.Timeout as Exports + import Text.ParserCombinators.ReadP as Exports (ReadP, ReadS, readP_to_S, readS_to_P) +-import Text.ParserCombinators.ReadPrec as Exports (ReadPrec, readPrec_to_P, readP_to_Prec, readPrec_to_S, readS_to_Prec) +-import Text.Printf as Exports (printf, hPrintf) +-import Text.Read as Exports (Read(..), readMaybe, readEither) ++import Text.ParserCombinators.ReadPrec as Exports (ReadPrec, readP_to_Prec, readPrec_to_P, readPrec_to_S, readS_to_Prec) ++import Text.Printf as Exports (hPrintf, printf) ++import Text.Read as Exports (Read (..), readEither, readMaybe) + import Unsafe.Coerce as Exports +- +--- transformers +-------------------------- +-import Control.Monad.IO.Class as Exports +-import Control.Monad.Trans.Class as Exports +-import Control.Monad.Trans.Maybe as Exports hiding (liftListen, liftPass) +-import Control.Monad.Trans.Reader as Exports hiding (liftCallCC, liftCatch) +-import Control.Monad.Trans.State.Strict as Exports hiding (liftCallCC, liftCatch, liftListen, liftPass) +- +--- mtl +-------------------------- +-import Control.Monad.Error.Class as Exports (MonadError (..)) +- +--- contravariant +-------------------------- +-import Data.Functor.Contravariant as Exports +-import Data.Functor.Contravariant.Divisible as Exports +- +--- contravariant-extras +-------------------------- +-import Contravariant.Extras as Exports +- +--- bytestring +-------------------------- +-import Data.ByteString as Exports (ByteString) ++import Prelude as Exports hiding (all, and, any, concat, concatMap, elem, fail, foldl, foldl1, foldr, foldr1, id, mapM, mapM_, maximum, minimum, notElem, or, product, sequence, sequence_, sum, (.)) + + tryError :: MonadError e m => m a -> m (Either e a) + tryError m = +diff --git a/library/Hasql/Transaction/Private/SQL.hs b/library/Hasql/Transaction/Private/SQL.hs +index 5ac4902..5776d39 100644 +--- a/library/Hasql/Transaction/Private/SQL.hs ++++ b/library/Hasql/Transaction/Private/SQL.hs +@@ -1,10 +1,8 @@ +-module Hasql.Transaction.Private.SQL +-where ++module Hasql.Transaction.Private.SQL where + +-import Hasql.Transaction.Private.Prelude +-import Hasql.Transaction.Private.Model + import qualified ByteString.TreeBuilder as D +- ++import Hasql.Transaction.Config ++import Hasql.Transaction.Private.Prelude + + beginTransaction :: IsolationLevel -> Mode -> ByteString + beginTransaction isolation mode = +@@ -26,4 +24,4 @@ beginTransaction isolation mode = + declareCursor :: ByteString -> ByteString -> ByteString + declareCursor name sql = + D.toByteString $ +- "DECLARE " <> D.byteString name <> " NO SCROLL CURSOR FOR " <> D.byteString sql ++ "DECLARE " <> D.byteString name <> " NO SCROLL CURSOR FOR " <> D.byteString sql +diff --git a/library/Hasql/Transaction/Private/Sessions.hs b/library/Hasql/Transaction/Private/Sessions.hs +index 0161486..5f4fcc7 100644 +--- a/library/Hasql/Transaction/Private/Sessions.hs ++++ b/library/Hasql/Transaction/Private/Sessions.hs +@@ -1,12 +1,10 @@ +-module Hasql.Transaction.Private.Sessions +-where ++module Hasql.Transaction.Private.Sessions where + +-import Hasql.Transaction.Private.Prelude +-import Hasql.Transaction.Private.Model + import Hasql.Session ++import Hasql.Transaction.Config ++import Hasql.Transaction.Private.Prelude + import qualified Hasql.Transaction.Private.Statements as Statements + +- + {- + We may want to + do one transaction retry in case of the 23505 error, and fail if an identical +@@ -14,7 +12,7 @@ error is seen. + -} + inRetryingTransaction :: IsolationLevel -> Mode -> Session (a, Bool) -> Bool -> Session a + inRetryingTransaction level mode session preparable = +- fix $ \ retry -> do ++ fix $ \retry -> do + attemptRes <- tryTransaction level mode session preparable + case attemptRes of + Just a -> return a +@@ -22,21 +20,21 @@ inRetryingTransaction level mode session preparable = + + tryTransaction :: IsolationLevel -> Mode -> Session (a, Bool) -> Bool -> Session (Maybe a) + tryTransaction level mode body preparable = do +- + statement () (Statements.beginTransaction level mode preparable) + +- bodyRes <- catchError (fmap Just body) $ \ error -> do ++ bodyRes <- catchError (fmap Just body) $ \error -> do + statement () (Statements.abortTransaction preparable) + handleTransactionError error $ return Nothing + + case bodyRes of +- Just (res, commit) -> catchError (commitOrAbort commit preparable $> Just res) $ \ error -> do ++ Just (res, commit) -> catchError (commitOrAbort commit preparable $> Just res) $ \error -> do + handleTransactionError error $ return Nothing + Nothing -> return Nothing + +-commitOrAbort commit preparable = if commit +- then statement () (Statements.commitTransaction preparable) +- else statement () (Statements.abortTransaction preparable) ++commitOrAbort commit preparable = ++ if commit ++ then statement () (Statements.commitTransaction preparable) ++ else statement () (Statements.abortTransaction preparable) + + handleTransactionError error onTransactionError = case error of + QueryError _ _ (ResultError (ServerError "40001" _ _ _ _)) -> onTransactionError +diff --git a/library/Hasql/Transaction/Private/Statements.hs b/library/Hasql/Transaction/Private/Statements.hs +index 2345629..7eb43c6 100644 +--- a/library/Hasql/Transaction/Private/Statements.hs ++++ b/library/Hasql/Transaction/Private/Statements.hs +@@ -1,16 +1,13 @@ +-module Hasql.Transaction.Private.Statements +-where ++module Hasql.Transaction.Private.Statements where + +-import Hasql.Transaction.Private.Prelude +-import Hasql.Transaction.Private.Model +-import qualified Hasql.Statement as A +-import qualified Hasql.Encoders as B + import qualified Hasql.Decoders as C ++import qualified Hasql.Encoders as B ++import qualified Hasql.Statement as A ++import Hasql.Transaction.Config ++import Hasql.Transaction.Private.Prelude + import qualified Hasql.Transaction.Private.SQL as D + +- + -- * Transactions +-------------------------- + + beginTransaction :: IsolationLevel -> Mode -> Bool -> A.Statement () () + beginTransaction isolation mode preparable = +@@ -24,9 +21,7 @@ abortTransaction :: Bool -> A.Statement () () + abortTransaction preparable = + A.Statement "ABORT" B.noParams C.noResult preparable + +- + -- * Streaming +-------------------------- + + declareCursor :: ByteString -> ByteString -> B.Params a -> A.Statement a () + declareCursor name sql encoder = +diff --git a/library/Hasql/Transaction/Private/Transaction.hs b/library/Hasql/Transaction/Private/Transaction.hs +index 672a7e6..d36a9da 100644 +--- a/library/Hasql/Transaction/Private/Transaction.hs ++++ b/library/Hasql/Transaction/Private/Transaction.hs +@@ -1,13 +1,11 @@ +-module Hasql.Transaction.Private.Transaction +-where ++module Hasql.Transaction.Private.Transaction where + +-import Hasql.Transaction.Private.Prelude +-import Hasql.Transaction.Private.Model +-import qualified Hasql.Statement as A + import qualified Hasql.Session as B +-import qualified Hasql.Transaction.Private.Statements as C ++import qualified Hasql.Statement as A ++import Hasql.Transaction.Config ++import Hasql.Transaction.Private.Prelude + import qualified Hasql.Transaction.Private.Sessions as D +- ++import qualified Hasql.Transaction.Private.Statements as C + + -- | + -- A composable abstraction over the retryable transactions. +@@ -15,8 +13,8 @@ import qualified Hasql.Transaction.Private.Sessions as D + -- Executes multiple queries under the specified mode and isolation level, + -- while automatically retrying the transaction in case of conflicts. + -- Thus this abstraction closely reproduces the behaviour of 'STM'. +-newtype Transaction a = +- Transaction (StateT Bool B.Session a) ++newtype Transaction a ++ = Transaction (StateT Bool B.Session a) + deriving (Functor, Applicative, Monad) + + instance Semigroup a => Semigroup (Transaction a) where +diff --git a/library/Hasql/Transaction/Sessions.hs b/library/Hasql/Transaction/Sessions.hs +index 0cde4f2..018ec31 100644 +--- a/library/Hasql/Transaction/Sessions.hs ++++ b/library/Hasql/Transaction/Sessions.hs +@@ -1,18 +1,17 @@ + module Hasql.Transaction.Sessions +-( +- transaction, +- unpreparedTransaction, +- -- * Transaction settings +- C.Mode(..), +- C.IsolationLevel(..), +-) ++ ( transaction, ++ unpreparedTransaction, ++ ++ -- * Transaction settings ++ C.Mode (..), ++ C.IsolationLevel (..), ++ ) + where + + import Data.Bool +-import qualified Hasql.Transaction.Private.Transaction as A + import qualified Hasql.Session as B +-import qualified Hasql.Transaction.Private.Model as C +- ++import qualified Hasql.Transaction.Config as C ++import qualified Hasql.Transaction.Private.Transaction as A + + -- | + -- Execute the transaction using the provided isolation level and mode. +@@ -29,4 +28,4 @@ transaction isolation mode transaction = + {-# INLINE unpreparedTransaction #-} + unpreparedTransaction :: C.IsolationLevel -> C.Mode -> A.Transaction a -> B.Session a + unpreparedTransaction isolation mode transaction = +- A.run transaction isolation mode False +\ No newline at end of file ++ A.run transaction isolation mode False diff --git a/configuration/patches/hasql-transaction-02.patch b/configuration/patches/hasql-transaction-02.patch new file mode 100644 index 0000000000000000000000000000000000000000..2f5c18cf38836b59f8c3c672659bbd0d1ac03d50 --- /dev/null +++ b/configuration/patches/hasql-transaction-02.patch @@ -0,0 +1,19 @@ +commit 640008b635d649a1df324a8b4a0ca7a5983d1382 +Author: Daniel Firth <dan.firth@homotopic.tech> +Date: Sun Dec 3 09:07:50 2023 +0000 + + hide unzip + +diff --git a/library/Hasql/Transaction/Private/Prelude.hs b/library/Hasql/Transaction/Private/Prelude.hs +index 79bf394..62900a3 100644 +--- a/library/Hasql/Transaction/Private/Prelude.hs ++++ b/library/Hasql/Transaction/Private/Prelude.hs +@@ -32,7 +32,7 @@ import Data.Either as Exports + import Data.Fixed as Exports + import Data.Foldable as Exports hiding (toList) + import Data.Function as Exports hiding (id, (.)) +-import Data.Functor as Exports ++import Data.Functor as Exports hiding (unzip) + import Data.Functor.Contravariant as Exports + import Data.Functor.Contravariant.Divisible as Exports + import Data.Functor.Identity as Exports diff --git a/configuration/patches/headed-megaparsec-01.patch b/configuration/patches/headed-megaparsec-01.patch new file mode 100644 index 0000000000000000000000000000000000000000..52667a2291c52f12b330e698a3840bc244c544c3 --- /dev/null +++ b/configuration/patches/headed-megaparsec-01.patch @@ -0,0 +1,19 @@ +commit 078971615dca7717537f8937df26e1f6879bfad1 +Author: Daniel Firth <dan.firth@homotopic.tech> +Date: Sun Dec 3 09:12:30 2023 +0000 + + hide unzip + +diff --git a/library/HeadedMegaparsec/Prelude.hs b/library/HeadedMegaparsec/Prelude.hs +index bb225f3..388e755 100644 +--- a/library/HeadedMegaparsec/Prelude.hs ++++ b/library/HeadedMegaparsec/Prelude.hs +@@ -27,7 +27,7 @@ import Data.Either as Exports + import Data.Fixed as Exports + import Data.Foldable as Exports + import Data.Function as Exports hiding (id, (.)) +-import Data.Functor as Exports ++import Data.Functor as Exports hiding (unzip) + import Data.Functor.Identity as Exports + import Data.IORef as Exports + import Data.Int as Exports diff --git a/configuration/patches/html-entities-01.patch b/configuration/patches/html-entities-01.patch new file mode 100644 index 0000000000000000000000000000000000000000..54071fce9e0ea978ebd3e3124c8743a19d60f867 --- /dev/null +++ b/configuration/patches/html-entities-01.patch @@ -0,0 +1,19 @@ +commit dc12027209380215e94118463f1ae3ecdf409a6b +Author: Daniel Firth <dan.firth@homotopic.tech> +Date: Sun Dec 3 09:15:18 2023 +0000 + + hide unzip + +diff --git a/library/HTMLEntities/Prelude.hs b/library/HTMLEntities/Prelude.hs +index a8b82de..9b3d9c9 100644 +--- a/library/HTMLEntities/Prelude.hs ++++ b/library/HTMLEntities/Prelude.hs +@@ -25,7 +25,7 @@ import Data.Either as Exports + import Data.Fixed as Exports + import Data.Foldable as Exports hiding (toList) + import Data.Function as Exports hiding (id, (.)) +-import Data.Functor as Exports ++import Data.Functor as Exports hiding (unzip) + import Data.Functor.Compose as Exports + import Data.IORef as Exports + import Data.Int as Exports diff --git a/configuration/patches/linear-generics-01.patch b/configuration/patches/linear-generics-01.patch new file mode 100644 index 0000000000000000000000000000000000000000..451ff1d35348829756bfd08b5a569ba23632f310 --- /dev/null +++ b/configuration/patches/linear-generics-01.patch @@ -0,0 +1,19 @@ +commit 666780654cbe860863fc25765aaad5bfba08d432 +Author: Arnaud Spiwack <arnaud@spiwack.net> +Date: Mon Jul 31 16:35:48 2023 +0200 + + Compatibility with th-abstraction 0.6 (#24) + +diff --git a/linear-generics.cabal b/linear-generics.cabal +index 7da6dfb..8d46111 100644 +--- a/linear-generics.cabal ++++ b/linear-generics.cabal +@@ -99,7 +99,7 @@ library + , containers >= 0.5.9 && < 0.7 + , ghc-prim < 1 + , template-haskell >= 2.16 && < 2.21 +- , th-abstraction >= 0.5 && < 0.6 ++ , th-abstraction >= 0.5 && < 0.7 + + default-language: Haskell2010 + default-extensions: KindSignatures diff --git a/configuration/patches/linear-generics-02.patch b/configuration/patches/linear-generics-02.patch new file mode 100644 index 0000000000000000000000000000000000000000..f32b1581d5ccefb5be849c1fd11a82bff2577e9b --- /dev/null +++ b/configuration/patches/linear-generics-02.patch @@ -0,0 +1,123 @@ +commit 05229d751abaad0bc802fa62b5e88ff0da89f2c7 +Author: Arnaud Spiwack <arnaud.spiwack@tweag.io> +Date: Fri Nov 10 16:03:38 2023 +0100 + + Compatibility with GHC 9.8/TH 2.21 + + Adapted from https://github.com/dreixel/generic-deriving/pull/94 + +diff --git a/CHANGELOG.md b/CHANGELOG.md +index 6e0cd83..15887d7 100644 +--- a/CHANGELOG.md ++++ b/CHANGELOG.md +@@ -1,3 +1,6 @@ ++# next [????.??.??] ++* Support building with `template-haskell-2.21.*` (GHC 9.8). ++ + # 0.2.2 + * Produce an orderly error message if someone gives us `type data`. + * Produce an error message much more eagerly when someone tries to +diff --git a/linear-generics.cabal b/linear-generics.cabal +index 363fb5b..d067ca2 100644 +--- a/linear-generics.cabal ++++ b/linear-generics.cabal +@@ -99,7 +99,7 @@ library + build-depends: base >= 4.15 && < 5 + , containers >= 0.5.9 && < 0.7 + , ghc-prim < 1 +- , template-haskell >= 2.16 && < 2.21 ++ , template-haskell >= 2.16 && < 2.22 + , th-abstraction >= 0.5 && < 0.7 + + default-language: Haskell2010 +diff --git a/src/Generics/Linear/TH/Internal.hs b/src/Generics/Linear/TH/Internal.hs +index cbd049e..8a5a6e4 100644 +--- a/src/Generics/Linear/TH/Internal.hs ++++ b/src/Generics/Linear/TH/Internal.hs +@@ -1,4 +1,5 @@ + {-# LANGUAGE BangPatterns #-} ++{-# LANGUAGE CPP #-} + {-# LANGUAGE LambdaCase #-} + + {- | +@@ -100,7 +101,7 @@ isUnsaturatedType = go 0 . dustOff + + -- | Given a name, check if that name is a type family. If + -- so, return a list of its binders. +-getTypeFamilyBinders :: Name -> Q (Maybe [TyVarBndr_ ()]) ++getTypeFamilyBinders :: Name -> Q (Maybe [TyVarBndrVis]) + getTypeFamilyBinders tcName = do + info <- reify tcName + return $ case info of +@@ -325,21 +326,28 @@ reifyDataInfo name = do + fail (ns ++ " Could not reify " ++ nameBase name) + `recover` + reifyDatatype name +- variant_ <- case variant of +- Datatype -> pure Datatype_ +- Newtype -> pure Newtype_ +- -- This isn't total, but the API requires that the data +- -- family instance have at least one constructor anyways, +- -- so this will always succeed. +- DataInstance -> pure $ DataInstance_ (head cons) +- NewtypeInstance -> pure $ NewtypeInstance_ (head cons) +- TypeData -> fail $ "Cannot derive Generic instances for TypeData " ++ nameBase name ++ variant_ <- ++ case variant of ++ Datatype -> return Datatype_ ++ Newtype -> return Newtype_ ++ DataInstance -> return $ DataInstance_ $ headDataFamInstCon parentName cons ++ NewtypeInstance -> return $ NewtypeInstance_ $ headDataFamInstCon parentName cons ++ TypeData -> fail $ "Cannot derive Generic instances for TypeData " ++ nameBase name + checkDataContext parentName ctxt + pure (parentName, tys, cons, variant_) + where + ns :: String + ns = "Generics.Linear.TH.reifyDataInfo: " + ++ -- This isn't total, but the API requires that the data family instance have ++ -- at least one constructor anyways, so this will always succeed. ++ headDataFamInstCon :: Name -> [ConstructorInfo] -> ConstructorInfo ++ headDataFamInstCon dataFamName cons = ++ case cons of ++ con:_ -> con ++ [] -> error $ "reified data family instance without a data constructor: " ++ ++ nameBase dataFamName ++ + -- | One cannot derive Generic(1) instance for anything that uses DatatypeContexts, + -- so check to make sure the Cxt field of a datatype is null. + checkDataContext :: Name -> Cxt -> Q () +@@ -352,3 +360,10 @@ checkExistentialContext :: Name -> [TyVarBndrUnit] -> Cxt -> Q () + checkExistentialContext conName vars ctxt = + unless (null vars && null ctxt) $ fail $ + nameBase conName ++ " must be a vanilla data constructor" ++ ++#if !(MIN_VERSION_template_haskell(2,21,0)) && !(MIN_VERSION_th_abstraction(0,6,0)) ++type TyVarBndrVis = TyVarBndrUnit ++ ++bndrReq :: () ++bndrReq = () ++#endif +diff --git a/tests/Generics/Deriving/Enum.hs b/tests/Generics/Deriving/Enum.hs +index 7e80ead..1ddbdee 100644 +--- a/tests/Generics/Deriving/Enum.hs ++++ b/tests/Generics/Deriving/Enum.hs +@@ -38,6 +38,7 @@ module Generics.Deriving.Enum ( + import Control.Applicative (Const, ZipList) + + import Data.Int ++import Data.Maybe (listToMaybe) + import Data.Monoid (All, Any, Dual, Product, Sum) + import qualified Data.Monoid as Monoid (First, Last) + import Data.Word +@@ -106,9 +107,7 @@ combine f (x:xs) (y:ys) = f x y : combine f xs ys + + findIndex :: (a -> Bool) -> [a] -> Maybe Int + findIndex p xs = let l = [ i | (y,i) <- zip xs [(0::Int)..], p y] +- in if (null l) +- then Nothing +- else Just (head l) ++ in listToMaybe l + + -------------------------------------------------------------------------------- + -- Generic enum diff --git a/configuration/patches/postgresql-syntax-01.patch b/configuration/patches/postgresql-syntax-01.patch new file mode 100644 index 0000000000000000000000000000000000000000..4f81a4f638bbc047468699f354736b3e801df329 --- /dev/null +++ b/configuration/patches/postgresql-syntax-01.patch @@ -0,0 +1,32 @@ +commit ece56da3079d80e69fece7e05a5540fd4858a98c +Author: Daniel Firth <dan.firth@homotopic.tech> +Date: Sun Dec 3 09:22:44 2023 +0000 + + hide unzip and unsnoc + +diff --git a/library/PostgresqlSyntax/Extras/NonEmpty.hs b/library/PostgresqlSyntax/Extras/NonEmpty.hs +index 7d9ecd1..d0cd890 100644 +--- a/library/PostgresqlSyntax/Extras/NonEmpty.hs ++++ b/library/PostgresqlSyntax/Extras/NonEmpty.hs +@@ -1,7 +1,7 @@ + module PostgresqlSyntax.Extras.NonEmpty where + + import Data.List.NonEmpty +-import PostgresqlSyntax.Prelude hiding (cons, fromList, head, init, last, reverse, tail, uncons) ++import PostgresqlSyntax.Prelude hiding (cons, fromList, head, init, last, reverse, tail, uncons, unsnoc) + + -- | + -- >>> intersperseFoldMap ", " id (fromList ["a"]) +diff --git a/library/PostgresqlSyntax/Prelude.hs b/library/PostgresqlSyntax/Prelude.hs +index c16ee7a..9fe2596 100644 +--- a/library/PostgresqlSyntax/Prelude.hs ++++ b/library/PostgresqlSyntax/Prelude.hs +@@ -29,7 +29,7 @@ import Data.Either as Exports + import Data.Fixed as Exports + import Data.Foldable as Exports + import Data.Function as Exports hiding (id, (.)) +-import Data.Functor as Exports ++import Data.Functor as Exports hiding (unzip) + import Data.Functor.Identity as Exports + import Data.HashMap.Strict as Exports (HashMap) + import Data.HashSet as Exports (HashSet) diff --git a/flake.lock b/flake.lock index a9727c242deecee9254d7f3e5f13d92bd66b9aef..3a741e89f19ab1706df040d6dfd031298fe07586 100644 --- a/flake.lock +++ b/flake.lock @@ -36,16 +36,67 @@ "type": "github" } }, - "flake-utils": { + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_3" + }, + "locked": { + "lastModified": 1701473968, + "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_4" + }, + "locked": { + "lastModified": 1701473968, + "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { "inputs": { - "systems": "systems" + "nixpkgs-lib": "nixpkgs-lib_5" + }, + "locked": { + "lastModified": 1701473968, + "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", + "type": "github" }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { "locked": { - "lastModified": 1694529238, - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -99,49 +150,106 @@ "type": "github" } }, + "flake-utils_5": { + "locked": { + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "horizon-advance": { "inputs": { - "flake-utils": "flake-utils", + "flake-parts": "flake-parts_2", "horizon-core": "horizon-core", - "lint-utils": "lint-utils_2", - "nixpkgs": "nixpkgs_4" + "horizon-hoogle": "horizon-hoogle_2", + "lint-utils": "lint-utils_4", + "nixpkgs": "nixpkgs_8" }, "locked": { - "lastModified": 1701559370, - "narHash": "sha256-cx2NEHatySFfvXI7mBtFbnWVht82nDt8rGu/Q0JMPWw=", - "ref": "lts/ghc-9.6.x", - "rev": "2fb306e266c34df0778aa797b8eb401fe9f847b6", - "revCount": 101, + "lastModified": 1701590988, + "narHash": "sha256-2/AYk1nKj5QIHdh3juuqPc5YIQB1A83WLq3RzjC0408=", + "ref": "refs/heads/master", + "rev": "a449a4988eea3d9dd75a945d6eb0668c06a12972", + "revCount": 107, "type": "git", "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-advance" }, "original": { - "ref": "lts/ghc-9.6.x", "type": "git", "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-advance" } }, + "horizon-build-packages": { + "inputs": { + "flake-parts": "flake-parts_4", + "horizon-ghc": "horizon-ghc", + "lint-utils": "lint-utils_2", + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1701564295, + "narHash": "sha256-ibYE2ZnXBLDlZax5YkDeCsK4uw+8G/34ryotBut0IHY=", + "ref": "refs/heads/master", + "rev": "f9c03cb2e31af63709cde8b4b6421b0e3c6d42fc", + "revCount": 6, + "type": "git", + "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-build-packages" + }, + "original": { + "type": "git", + "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-build-packages" + } + }, "horizon-core": { "inputs": { - "flake-parts": "flake-parts_2", - "lint-utils": "lint-utils", - "nixpkgs": "nixpkgs_2" + "flake-parts": "flake-parts_3", + "horizon-build-packages": "horizon-build-packages", + "horizon-hoogle": "horizon-hoogle", + "lint-utils": "lint-utils_3", + "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1701552836, - "narHash": "sha256-nUYNnU4xx0Wbm6Qg3mREX2zTmPuKvUpLJVULqaKo9vg=", - "ref": "lts/ghc-9.6.x", - "rev": "93c8fd653cda7ec59673588bbfff45fc9730b209", - "revCount": 1189, + "lastModified": 1701564656, + "narHash": "sha256-pfpZwQG/jsytUxhh2i1QlruaHfLouUYUqK2muLLvRZE=", + "ref": "refs/heads/master", + "rev": "94bae51d90c2a5e5fd89fe45285a10c36e98b0cd", + "revCount": 1222, "type": "git", "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-core" }, "original": { - "ref": "lts/ghc-9.6.x", "type": "git", "url": "https://gitlab.horizon-haskell.net/package-sets/horizon-core" } }, + "horizon-ghc": { + "inputs": { + "flake-parts": "flake-parts_5", + "lint-utils": "lint-utils", + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1701518837, + "narHash": "sha256-92faPC+q5EMNf37EGhdt9pvWWFi0mTq0Szk6wOyxyrQ=", + "ref": "refs/heads/master", + "rev": "0b35eb150bfc8ee338688adda23587521cd97da6", + "revCount": 6, + "type": "git", + "url": "https://gitlab.horizon-haskell.net/ghc/horizon-ghc" + }, + "original": { + "type": "git", + "url": "https://gitlab.horizon-haskell.net/ghc/horizon-ghc" + } + }, "horizon-hoogle": { "locked": { "lastModified": 1701521742, @@ -157,9 +265,39 @@ "url": "https://gitlab.horizon-haskell.net/nix/horizon-hoogle" } }, + "horizon-hoogle_2": { + "locked": { + "lastModified": 1701521742, + "narHash": "sha256-huf/95jYL7mY0AHSziJYXx4m/sP+G+YAbJb+Q5Ph/Jg=", + "ref": "refs/heads/master", + "rev": "ddf3b08c6458c1a9e0d881f968c050bc828b9b8e", + "revCount": 2, + "type": "git", + "url": "https://gitlab.horizon-haskell.net/nix/horizon-hoogle" + }, + "original": { + "type": "git", + "url": "https://gitlab.horizon-haskell.net/nix/horizon-hoogle" + } + }, + "horizon-hoogle_3": { + "locked": { + "lastModified": 1701521742, + "narHash": "sha256-huf/95jYL7mY0AHSziJYXx4m/sP+G+YAbJb+Q5Ph/Jg=", + "ref": "refs/heads/master", + "rev": "ddf3b08c6458c1a9e0d881f968c050bc828b9b8e", + "revCount": 2, + "type": "git", + "url": "https://gitlab.horizon-haskell.net/nix/horizon-hoogle" + }, + "original": { + "type": "git", + "url": "https://gitlab.horizon-haskell.net/nix/horizon-hoogle" + } + }, "lint-utils": { "inputs": { - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils", "nixpkgs": "nixpkgs" }, "locked": { @@ -178,7 +316,7 @@ }, "lint-utils_2": { "inputs": { - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_2", "nixpkgs": "nixpkgs_3" }, "locked": { @@ -197,7 +335,7 @@ }, "lint-utils_3": { "inputs": { - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_3", "nixpkgs": "nixpkgs_5" }, "locked": { @@ -214,6 +352,44 @@ "url": "https://gitlab.nixica.dev/nix/lint-utils" } }, + "lint-utils_4": { + "inputs": { + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_7" + }, + "locked": { + "lastModified": 1699441004, + "narHash": "sha256-7v7CH8ZiB2RClPtpgDLfQxeR+14KXoFl2qTdXd27sL0=", + "ref": "refs/heads/master", + "rev": "226003d10c2d192b088f7c3c9ee7ca549c421a9c", + "revCount": 52, + "type": "git", + "url": "https://gitlab.nixica.dev/nix/lint-utils" + }, + "original": { + "type": "git", + "url": "https://gitlab.nixica.dev/nix/lint-utils" + } + }, + "lint-utils_5": { + "inputs": { + "flake-utils": "flake-utils_5", + "nixpkgs": "nixpkgs_9" + }, + "locked": { + "lastModified": 1699441004, + "narHash": "sha256-7v7CH8ZiB2RClPtpgDLfQxeR+14KXoFl2qTdXd27sL0=", + "ref": "refs/heads/master", + "rev": "226003d10c2d192b088f7c3c9ee7ca549c421a9c", + "revCount": 52, + "type": "git", + "url": "https://gitlab.nixica.dev/nix/lint-utils" + }, + "original": { + "type": "git", + "url": "https://gitlab.nixica.dev/nix/lint-utils" + } + }, "nixpkgs": { "locked": { "lastModified": 1644525281, @@ -266,6 +442,76 @@ "type": "github" } }, + "nixpkgs-lib_3": { + "locked": { + "dir": "lib", + "lastModified": 1701253981, + "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_4": { + "locked": { + "dir": "lib", + "lastModified": 1701253981, + "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_5": { + "locked": { + "dir": "lib", + "lastModified": 1701253981, + "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_10": { + "locked": { + "lastModified": 1701401302, + "narHash": "sha256-kfCOHzgtmHcgJwH7uagk8B+K1Qz58rN79eTLe55eGqA=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "69a165d0fd2b08a78dbd2c98f6f860ceb2bbcd40", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1701253981, @@ -332,43 +578,76 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1701336116, - "narHash": "sha256-kEmpezCR/FpITc6yMbAh4WrOCiT2zg5pSjnKrq51h5Y=", + "lastModified": 1701253981, + "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "f5c27c6136db4d76c30e533c20517df6864c46ee", + "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "root": { - "inputs": { - "flake-parts": "flake-parts", - "horizon-advance": "horizon-advance", - "horizon-hoogle": "horizon-hoogle", - "lint-utils": "lint-utils_3", - "nixpkgs": "nixpkgs_6" + "nixpkgs_7": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" } }, - "systems": { + "nixpkgs_8": { "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "lastModified": 1701253981, + "narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58", "type": "github" }, "original": { - "owner": "nix-systems", - "repo": "default", + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", "type": "github" } + }, + "nixpkgs_9": { + "locked": { + "lastModified": 1644525281, + "narHash": "sha256-D3VuWLdnLmAXIkooWAtbTGSQI9Fc1lkvAr94wTxhnTU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "48d63e924a2666baf37f4f14a18f19347fbd54a2", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-parts": "flake-parts", + "horizon-advance": "horizon-advance", + "horizon-hoogle": "horizon-hoogle_3", + "lint-utils": "lint-utils_5", + "nixpkgs": "nixpkgs_10" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 8515d67b9d792da525b1ac9e389c7533a2106727..e9ceb6b230f7313f8f14d10a5b25c2d4ff1eedc8 100644 --- a/flake.nix +++ b/flake.nix @@ -9,7 +9,7 @@ inputs = { flake-parts.url = "github:hercules-ci/flake-parts"; - horizon-advance.url = "git+https://gitlab.horizon-haskell.net/package-sets/horizon-advance?ref=lts/ghc-9.6.x"; + horizon-advance.url = "git+https://gitlab.horizon-haskell.net/package-sets/horizon-advance"; horizon-hoogle.url = "git+https://gitlab.horizon-haskell.net/nix/horizon-hoogle"; lint-utils.url = "git+https://gitlab.nixica.dev/nix/lint-utils"; nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; diff --git a/horizon.dhall b/horizon.dhall index 2eb3036f9832a690e33d041c2c1c452a35ca1e1b..639e7586d1da7a7f0995be55433a8d26fa9f4ae5 100644 --- a/horizon.dhall +++ b/horizon.dhall @@ -151,7 +151,11 @@ let packages = , doctemplates = H.callHackage "doctemplates" "0.11" , doctest-discover = H.callHackage "doctest-discover" "0.2.0.0" , dom-lt = H.callHackage "dom-lt" "0.2.3" - , double-conversion = H.callHackage "double-conversion" "2.0.4.2" + , double-conversion = + H.callGit + "https://github.com/haskell/double-conversion/" + "1320d0a4df745c9ecb5fada9a681b3842cf1f47c" + (None H.Subdir) , dual-tree = H.callHackage "dual-tree" "0.2.3.1" , echo = H.callHackage "echo" "0.1.4" , edit-distance = H.callHackage "edit-distance" "0.2.2.1" @@ -276,11 +280,6 @@ let packages = , hedgehog-quickcheck = H.callHackage "hedgehog-quickcheck" "0.1.1" , heredoc = H.callHackage "heredoc" "0.2.0.0" , hex-text = H.callHackage "hex-text" "0.1.0.9" - , hint = - H.callGit - "https://github.com/haskell-hint/hint" - "7803c34c8ae1d83c0f7c13fe6b30fcb3abd0ac51" - (None H.Subdir) , hoauth2 = H.callHackage "hoauth2" "2.10.0" , hosc = H.callHackage "hosc" "0.20" , hslogger = H.callHackage "hslogger" "1.3.1.0" @@ -358,8 +357,6 @@ let packages = , language-c = H.callHackage "language-c" "0.9.2" , lazy-search = H.callHackage "lazy-search" "0.1.3.0" , lazysmallcheck = H.callHackage "lazysmallcheck" "0.6" - , lens-family = H.callHackage "lens-family" "2.1.2" - , lens-family-th = H.callHackage "lens-family-th" "0.5.2.1" , libsodium = H.callHackage "libsodium" "1.0.18.3" , libsystemd-journal = H.callHackage "libsystemd-journal" "1.4.5.1" , linear-base = H.callHackage "linear-base" "0.4.0" diff --git a/horizon.lock b/horizon.lock index 0875f1514ed8895500e1bb6831e63d0f0a77241e..296d0000a75976f03a6efc86655edbdfbcc80f8f 100644 --- a/horizon.lock +++ b/horizon.lock @@ -500,7 +500,7 @@ } , { mapKey = "double-conversion" , mapValue = - "a99e6e4aaef6a17cdb32288269c8b4afe060b5f99911b75fa9375f8851835232" + "82ceb4a0b5f0fd1dd24578b72818b2cd3f04d4867f6e78dd85e415ee87388300" } , { mapKey = "dual-tree" , mapValue = @@ -882,10 +882,6 @@ , mapValue = "b77a6d96279f2ea4a69ea2c23a7a1750fcbe3fdd26f8c31820e0e058693b91e3" } -, { mapKey = "hint" - , mapValue = - "a1ed160179e897277725404d6a25a963e434bbb9b10ef97575fe9f6f664644fa" - } , { mapKey = "hoauth2" , mapValue = "68baf2c558a19d87ffd41201ccf3cc9e92ac2aa3c1371c448f5e14a563da95b9" @@ -1126,14 +1122,6 @@ , mapValue = "f67f9447d30fc6d4e3405fc2d2e928b67d161aa4ef1b8a4141dae95abfeaefa4" } -, { mapKey = "lens-family" - , mapValue = - "2b0d8491bc8ee5ffc35dbc9aae7db636e154ffecc0a13b360216a1a07ca9ca7b" - } -, { mapKey = "lens-family-th" - , mapValue = - "92ec67b778c3da7813d3e3a766c085ad5ce75e29dd8ec3c6f4d3856752018b37" - } , { mapKey = "libsodium" , mapValue = "d34914ea82af08c3bb7e1f677d6f8f99b7e2143c03738788903ed1f0074bb687" diff --git a/overlay.nix b/overlay.nix index cf88e6f7da7b41e4066ff41b85e9b6073d145ffd..1da1c2f9506b57f70ffe1576a27fb4c38aa71c10 100644 --- a/overlay.nix +++ b/overlay.nix @@ -443,8 +443,6 @@ final: prev: with pkgs.haskell.lib; { hex-text = final.callPackage (./pkgs/hex-text.nix) { }; - hint = final.callPackage (./pkgs/hint.nix) { }; - hoauth2 = final.callPackage (./pkgs/hoauth2.nix) { }; hosc = final.callPackage (./pkgs/hosc.nix) { }; @@ -565,10 +563,6 @@ final: prev: with pkgs.haskell.lib; { lazysmallcheck = final.callPackage (./pkgs/lazysmallcheck.nix) { }; - lens-family = final.callPackage (./pkgs/lens-family.nix) { }; - - lens-family-th = final.callPackage (./pkgs/lens-family-th.nix) { }; - libsodium = final.callPackage (./pkgs/libsodium.nix) { }; libsystemd-journal = final.callPackage (./pkgs/libsystemd-journal.nix) { }; diff --git a/pkgs/double-conversion.nix b/pkgs/double-conversion.nix index b7eddb5b9ad0110ee7656f9787ff9437b6549946..6b9efc535c2eabea558d478d0ee039dd29309838 100644 --- a/pkgs/double-conversion.nix +++ b/pkgs/double-conversion.nix @@ -1,13 +1,16 @@ -{ mkDerivation, HUnit, base, bytestring, ghc-prim, lib +{ mkDerivation, HUnit, base, bytestring, fetchgit, ghc-prim, lib , system-cxx-std-lib, test-framework, test-framework-hunit , test-framework-quickcheck2, text }: mkDerivation { pname = "double-conversion"; version = "2.0.4.2"; - sha256 = "9ab8bc1f0fa7de356c07b23d7d684b6c3ddfa542fd56ea422fb5fd17000aec64"; - revision = "2"; - editedCabalFile = "1mpnx4m2pg5crfz9k8wamh5mgsha0np3ynnllrmglmwh54gvfjj3"; + src = fetchgit { + url = "https://github.com/haskell/double-conversion/"; + sha256 = "15060q09kjlk62lq4labmc84f2m3df1ylf21p7r975x13wj1xy3f"; + rev = "1320d0a4df745c9ecb5fada9a681b3842cf1f47c"; + fetchSubmodules = true; + }; isLibrary = true; isExecutable = false; enableSeparateDataOutput = false; @@ -27,6 +30,6 @@ mkDerivation { hyperlinkSource = false; homepage = "https://github.com/haskell/double-conversion"; description = "Fast conversion between single and double precision floating point and text"; - license = lib.licenses.bsd3; + license = lib.licenses.bsd2; broken = false; } \ No newline at end of file