git.iko.soy/typeable/cabal2nix
on master help sign in
Re-factor hackage2nix into library code.
32956d6Peter Simons
src/Distribution/Nixpkgs/Haskell.hs+4−162
@@ -1,166 +1,8 @@
1−{-# LANGUAGE DeriveGeneric #-}
2−{-# LANGUAGE RecordWildCards #-}
3−{-# LANGUAGE TemplateHaskell #-}
4−{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
5−
6module Distribution.Nixpkgs.Haskell
1module Distribution.Nixpkgs.Haskell
7− ( Derivation, pkgid, revision, src, isLibrary, isExecutable
2+ ( module Distribution.Nixpkgs.Haskell.BuildInfo
8− , extraFunctionArgs, libraryDepends, executableDepends, testDepends, configureFlags
3+ , module Distribution.Nixpkgs.Haskell.Derivation
9− , cabalFlags, runHaddock, jailbreak, doCheck, testTarget, hyperlinkSource, enableSplitObjs
10− , phaseOverrides, editedCabalFile, metaSection
11− , BuildInfo, haskell, pkgconfig, system, tool
12− , dependencies
13 )
4 )
14 where
5 where
15
6
16−import Control.DeepSeq.Generics
17−import Data.List
18−import Data.Set ( Set )
19−import qualified Data.Set as Set
20−import Data.Set.Lens
21−import Distribution.Nixpkgs.Fetch
22−import Distribution.Nixpkgs.Haskell.OrphanInstances ( )
7+import Distribution.Nixpkgs.Haskell.BuildInfo
23−import Distribution.Nixpkgs.Meta
8+import Distribution.Nixpkgs.Haskell.Derivation
24−import Distribution.Package
25−import Distribution.PackageDescription ( FlagAssignment, FlagName(..) )
26−import GHC.Generics ( Generic )
27−import Internal.Lens
28−import Internal.PrettyPrinting
29−import Language.Nix.Identifier
30−
31−data BuildInfo = BuildInfo
32− { _haskell :: Set Identifier
33− , _pkgconfig :: Set Identifier
34− , _system :: Set Identifier
35− , _tool :: Set Identifier
36− }
37− deriving (Show, Eq, Generic)
38−
39−makeLenses ''BuildInfo
40−
41−instance Each BuildInfo BuildInfo (Set Identifier) (Set Identifier) where
42− each f (BuildInfo a b c d) = BuildInfo <$> f a <*> f b <*> f c <*> f d
43−
44−instance Monoid BuildInfo where
45− mempty = BuildInfo mempty mempty mempty mempty
46− BuildInfo w1 x1 y1 z1 `mappend` BuildInfo w2 x2 y2 z2 = BuildInfo (w1 `mappend` w2) (x1 `mappend` x2) (y1 `mappend` y2) (z1 `mappend` z2)
47−
48−-- | A represtation of Nix expressions for building Haskell packages.
49−-- The data type correspond closely to the definition of
50−-- 'PackageDescription' from Cabal.
51−
52−data Derivation = MkDerivation
53− { _pkgid :: PackageIdentifier
54− , _revision :: Int
55− , _src :: DerivationSource
56− , _isLibrary :: Bool
57− , _isExecutable :: Bool
58− , _extraFunctionArgs :: Set Identifier
59− , _libraryDepends :: BuildInfo
60− , _executableDepends :: BuildInfo
61− , _testDepends :: BuildInfo
62− , _configureFlags :: Set String
63− , _cabalFlags :: FlagAssignment
64− , _runHaddock :: Bool
65− , _jailbreak :: Bool
66− , _doCheck :: Bool
67− , _testTarget :: String
68− , _hyperlinkSource :: Bool
69− , _enableSplitObjs :: Bool
70− , _phaseOverrides :: String
71− , _editedCabalFile :: String
72− , _metaSection :: Meta
73− }
74− deriving (Show, Eq, Generic)
75−
76−instance Default Derivation where
77− def = MkDerivation
78− { _pkgid = error "undefined Derivation.pkgid"
79− , _revision = error "undefined Derivation.revision"
80− , _src = error "undefined Derivation.src"
81− , _isLibrary = error "undefined Derivation.isLibrary"
82− , _isExecutable = error "undefined Derivation.isExecutable"
83− , _extraFunctionArgs = error "undefined Derivation.extraFunctionArgs"
84− , _libraryDepends = error "undefined Derivation.libraryDepends"
85− , _executableDepends = error "undefined Derivation.executableDepends"
86− , _testDepends = error "undefined Derivation.testDepends"
87− , _configureFlags = error "undefined Derivation.configureFlags"
88− , _cabalFlags = error "undefined Derivation.cabalFlags"
89− , _runHaddock = error "undefined Derivation.runHaddock"
90− , _jailbreak = error "undefined Derivation.jailbreak"
91− , _doCheck = error "undefined Derivation.doCheck"
92− , _testTarget = error "undefined Derivation.testTarget"
93− , _hyperlinkSource = error "undefined Derivation.hyperlinkSource"
94− , _enableSplitObjs = error "undefined Derivation.enableSplitObjs"
95− , _phaseOverrides = error "undefined Derivation.phaseOverrides"
96− , _editedCabalFile = error "undefined Derivation.editedCabalFile"
97− , _metaSection = error "undefined Derivation.metaSection"
98− }
99−
100−makeLenses ''Derivation
101−
102−makeLensesFor [("_libraryDepends", "dependencies"), ("_executableDepends", "dependencies"), ("_testDepends", "dependencies")] ''Derivation
103−
104−instance Package Derivation where
105− packageId = view pkgid
106−
107−instance NFData BuildInfo where rnf = genericRnf
108−
109−instance NFData Derivation where rnf = genericRnf
110−
111−instance Pretty Derivation where
112− pPrint drv@(MkDerivation {..}) = funargs (map text ("mkDerivation" : toAscList inputs)) $$ vcat
113− [ text "mkDerivation" <+> lbrace
114− , nest 2 $ vcat
115− [ attr "pname" $ doubleQuotes $ disp (packageName _pkgid)
116− , attr "version" $ doubleQuotes $ disp (packageVersion _pkgid)
117− , sourceAttr _src
118− , onlyIf (_revision > 0) $ attr "revision" $ doubleQuotes $ int _revision
119− , onlyIf (not (null _editedCabalFile)) $ attr "editedCabalFile" $ string _editedCabalFile
120− , listattr "configureFlags" empty (map (show . show) renderedFlags)
121− , boolattr "isLibrary" (not _isLibrary || _isExecutable) _isLibrary
122− , boolattr "isExecutable" (not _isLibrary || _isExecutable) _isExecutable
123− , onlyIf (_libraryDepends /= mempty) $ pPrintBuildInfo "library" _libraryDepends
124− , onlyIf (_executableDepends /= mempty) $ pPrintBuildInfo "executable" _executableDepends
125− , onlyIf (_testDepends /= mempty) $ pPrintBuildInfo "test" _testDepends
126− , boolattr "enableSplitObjs" (not _enableSplitObjs) _enableSplitObjs
127− , boolattr "doHaddock" (not _runHaddock) _runHaddock
128− , boolattr "jailbreak" _jailbreak _jailbreak
129− , boolattr "doCheck" (not _doCheck) _doCheck
130− , onlyIf (not (null _testTarget)) $ attr "testTarget" $ string _testTarget
131− , boolattr "hyperlinkSource" (not _hyperlinkSource) _hyperlinkSource
132− , onlyIf (not (null _phaseOverrides)) $ vcat ((map text . lines) _phaseOverrides)
133− , pPrint _metaSection
134− ]
135− , rbrace
136− ]
137− where
138− inputs :: Set String
139− inputs = Set.unions [ Set.map (view ident) _extraFunctionArgs
140− , setOf (dependencies . each . folded . ident) drv
141− , Set.fromList ["fetch" ++ derivKind _src | derivKind _src /= "" && not isHackagePackage]
142− ]
143−
144− renderedFlags = [ text "-f" <> (if enable then empty else char '-') <> text f | (FlagName f, enable) <- _cabalFlags ]
145− ++ map text (toAscList _configureFlags)
146− isHackagePackage = "mirror://hackage/" `isPrefixOf` derivUrl _src
147− sourceAttr (DerivationSource{..})
148− | isHackagePackage = attr "sha256" $ string derivHash
149− | derivKind /= "" = vcat
150− [ text "src" <+> equals <+> text ("fetch" ++ derivKind) <+> lbrace
151− , nest 2 $ vcat
152− [ attr "url" $ string derivUrl
153− , attr "sha256" $ string derivHash
154− , if derivRevision /= "" then attr "rev" (string derivRevision) else empty
155− ]
156− , rbrace <> semi
157− ]
158− | otherwise = attr "src" $ text derivUrl
159−
160−pPrintBuildInfo :: String -> BuildInfo -> Doc
161−pPrintBuildInfo prefix bi = vcat
162− [ setattr (prefix++"HaskellDepends") (setOf (haskell.folded.ident) bi)
163− , setattr (prefix++"SystemDepends") (setOf (system.folded.ident) bi)
164− , setattr (prefix++"PkgconfigDepends") (setOf (pkgconfig.folded.ident) bi)
165− , setattr (prefix++"ToolDepends") (setOf (tool.folded.ident) bi)
166− ]
src/Distribution/Nixpkgs/Haskell/BuildInfo.hsnew file+45
@@ -0,0 +1,45 @@
1+{-# LANGUAGE DeriveGeneric #-}
2+{-# LANGUAGE FlexibleInstances #-}
3+{-# LANGUAGE MultiParamTypeClasses #-}
4+{-# LANGUAGE TemplateHaskell #-}
5+
6+module Distribution.Nixpkgs.Haskell.BuildInfo
7+ ( BuildInfo
8+ , haskell, pkgconfig, system, tool, pPrintBuildInfo
9+ )
10+ where
11+
12+import Control.DeepSeq.Generics
13+import Data.Set ( Set )
14+import Data.Set.Lens
15+import GHC.Generics ( Generic )
16+import Internal.Lens
17+import Internal.PrettyPrinting
18+import Language.Nix
19+
20+data BuildInfo = BuildInfo
21+ { _haskell :: Set Binding
22+ , _pkgconfig :: Set Binding
23+ , _system :: Set Binding
24+ , _tool :: Set Binding
25+ }
26+ deriving (Show, Eq, Generic)
27+
28+makeLenses ''BuildInfo
29+
30+instance Each BuildInfo BuildInfo (Set Binding) (Set Binding) where
31+ each f (BuildInfo a b c d) = BuildInfo <$> f a <*> f b <*> f c <*> f d
32+
33+instance Monoid BuildInfo where
34+ mempty = BuildInfo mempty mempty mempty mempty
35+ BuildInfo w1 x1 y1 z1 `mappend` BuildInfo w2 x2 y2 z2 = BuildInfo (w1 `mappend` w2) (x1 `mappend` x2) (y1 `mappend` y2) (z1 `mappend` z2)
36+
37+instance NFData BuildInfo where rnf = genericRnf
38+
39+pPrintBuildInfo :: String -> BuildInfo -> Doc
40+pPrintBuildInfo prefix bi = vcat
41+ [ setattr (prefix++"HaskellDepends") (setOf (haskell.folded.localName.ident) bi)
42+ , setattr (prefix++"SystemDepends") (setOf (system.folded.localName.ident) bi)
43+ , setattr (prefix++"PkgconfigDepends") (setOf (pkgconfig.folded.localName.ident) bi)
44+ , setattr (prefix++"ToolDepends") (setOf (tool.folded.localName.ident) bi)
45+ ]
src/Distribution/Nixpkgs/Haskell/Constraint.hsnew file+14
@@ -0,0 +1,14 @@
1+module Distribution.Nixpkgs.Haskell.Constraint
2+ ( Constraint, satisfiesConstraint, satisfiesConstraints
3+ ) where
4+
5+import Distribution.Package
6+import Distribution.Version
7+
8+type Constraint = Dependency
9+
10+satisfiesConstraint :: PackageIdentifier -> Constraint -> Bool
11+satisfiesConstraint (PackageIdentifier pn v) (Dependency cn vr) = (pn /= cn) || (v `withinRange` vr)
12+
13+satisfiesConstraints :: PackageIdentifier -> [Constraint] -> Bool
14+satisfiesConstraints p = all (satisfiesConstraint p)
src/Distribution/Nixpkgs/Haskell/Derivation.hsnew file+139
@@ -0,0 +1,139 @@
1+{-# LANGUAGE DeriveGeneric #-}
2+{-# LANGUAGE RecordWildCards #-}
3+{-# LANGUAGE TemplateHaskell #-}
4+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses #-}
5+
6+module Distribution.Nixpkgs.Haskell.Derivation
7+ ( Derivation, pkgid, revision, src, isLibrary, isExecutable
8+ , extraFunctionArgs, libraryDepends, executableDepends, testDepends, configureFlags
9+ , cabalFlags, runHaddock, jailbreak, doCheck, testTarget, hyperlinkSource, enableSplitObjs
10+ , phaseOverrides, editedCabalFile, metaSection
11+ , dependencies
12+ )
13+ where
14+
15+import Control.DeepSeq.Generics
16+import Data.List
17+import Data.Set ( Set )
18+import qualified Data.Set as Set
19+import Data.Set.Lens
20+import Distribution.Nixpkgs.Fetch
21+import Distribution.Nixpkgs.Haskell.OrphanInstances ( )
22+import Distribution.Nixpkgs.Meta
23+import Distribution.Nixpkgs.Haskell.BuildInfo
24+import Distribution.Package
25+import Distribution.PackageDescription ( FlagAssignment, FlagName(..) )
26+import GHC.Generics ( Generic )
27+import Internal.Lens
28+import Internal.PrettyPrinting
29+import Language.Nix
30+
31+-- | A represtation of Nix expressions for building Haskell packages.
32+-- The data type correspond closely to the definition of
33+-- 'PackageDescription' from Cabal.
34+
35+data Derivation = MkDerivation
36+ { _pkgid :: PackageIdentifier
37+ , _revision :: Int
38+ , _src :: DerivationSource
39+ , _isLibrary :: Bool
40+ , _isExecutable :: Bool
41+ , _extraFunctionArgs :: Set Identifier
42+ , _libraryDepends :: BuildInfo
43+ , _executableDepends :: BuildInfo
44+ , _testDepends :: BuildInfo
45+ , _configureFlags :: Set String
46+ , _cabalFlags :: FlagAssignment
47+ , _runHaddock :: Bool
48+ , _jailbreak :: Bool
49+ , _doCheck :: Bool
50+ , _testTarget :: String
51+ , _hyperlinkSource :: Bool
52+ , _enableSplitObjs :: Bool
53+ , _phaseOverrides :: String
54+ , _editedCabalFile :: String
55+ , _metaSection :: Meta
56+ }
57+ deriving (Show, Eq, Generic)
58+
59+instance Default Derivation where
60+ def = MkDerivation
61+ { _pkgid = error "undefined Derivation.pkgid"
62+ , _revision = error "undefined Derivation.revision"
63+ , _src = error "undefined Derivation.src"
64+ , _isLibrary = error "undefined Derivation.isLibrary"
65+ , _isExecutable = error "undefined Derivation.isExecutable"
66+ , _extraFunctionArgs = error "undefined Derivation.extraFunctionArgs"
67+ , _libraryDepends = error "undefined Derivation.libraryDepends"
68+ , _executableDepends = error "undefined Derivation.executableDepends"
69+ , _testDepends = error "undefined Derivation.testDepends"
70+ , _configureFlags = error "undefined Derivation.configureFlags"
71+ , _cabalFlags = error "undefined Derivation.cabalFlags"
72+ , _runHaddock = error "undefined Derivation.runHaddock"
73+ , _jailbreak = error "undefined Derivation.jailbreak"
74+ , _doCheck = error "undefined Derivation.doCheck"
75+ , _testTarget = error "undefined Derivation.testTarget"
76+ , _hyperlinkSource = error "undefined Derivation.hyperlinkSource"
77+ , _enableSplitObjs = error "undefined Derivation.enableSplitObjs"
78+ , _phaseOverrides = error "undefined Derivation.phaseOverrides"
79+ , _editedCabalFile = error "undefined Derivation.editedCabalFile"
80+ , _metaSection = error "undefined Derivation.metaSection"
81+ }
82+
83+makeLenses ''Derivation
84+
85+makeLensesFor [("_libraryDepends", "dependencies"), ("_executableDepends", "dependencies"), ("_testDepends", "dependencies")] ''Derivation
86+
87+instance Package Derivation where
88+ packageId = view pkgid
89+
90+instance NFData Derivation where rnf = genericRnf
91+
92+instance Pretty Derivation where
93+ pPrint drv@(MkDerivation {..}) = funargs (map text ("mkDerivation" : toAscList inputs)) $$ vcat
94+ [ text "mkDerivation" <+> lbrace
95+ , nest 2 $ vcat
96+ [ attr "pname" $ doubleQuotes $ disp (packageName _pkgid)
97+ , attr "version" $ doubleQuotes $ disp (packageVersion _pkgid)
98+ , sourceAttr _src
99+ , onlyIf (_revision > 0) $ attr "revision" $ doubleQuotes $ int _revision
100+ , onlyIf (not (null _editedCabalFile)) $ attr "editedCabalFile" $ string _editedCabalFile
101+ , listattr "configureFlags" empty (map (show . show) renderedFlags)
102+ , boolattr "isLibrary" (not _isLibrary || _isExecutable) _isLibrary
103+ , boolattr "isExecutable" (not _isLibrary || _isExecutable) _isExecutable
104+ , onlyIf (_libraryDepends /= mempty) $ pPrintBuildInfo "library" _libraryDepends
105+ , onlyIf (_executableDepends /= mempty) $ pPrintBuildInfo "executable" _executableDepends
106+ , onlyIf (_testDepends /= mempty) $ pPrintBuildInfo "test" _testDepends
107+ , boolattr "enableSplitObjs" (not _enableSplitObjs) _enableSplitObjs
108+ , boolattr "doHaddock" (not _runHaddock) _runHaddock
109+ , boolattr "jailbreak" _jailbreak _jailbreak
110+ , boolattr "doCheck" (not _doCheck) _doCheck
111+ , onlyIf (not (null _testTarget)) $ attr "testTarget" $ string _testTarget
112+ , boolattr "hyperlinkSource" (not _hyperlinkSource) _hyperlinkSource
113+ , onlyIf (not (null _phaseOverrides)) $ vcat ((map text . lines) _phaseOverrides)
114+ , pPrint _metaSection
115+ ]
116+ , rbrace
117+ ]
118+ where
119+ inputs :: Set String
120+ inputs = Set.unions [ Set.map (view ident) _extraFunctionArgs
121+ , setOf (dependencies . each . folded . localName . ident) drv
122+ , Set.fromList ["fetch" ++ derivKind _src | derivKind _src /= "" && not isHackagePackage]
123+ ]
124+
125+ renderedFlags = [ text "-f" <> (if enable then empty else char '-') <> text f | (FlagName f, enable) <- _cabalFlags ]
126+ ++ map text (toAscList _configureFlags)
127+ isHackagePackage = "mirror://hackage/" `isPrefixOf` derivUrl _src
128+ sourceAttr (DerivationSource{..})
129+ | isHackagePackage = attr "sha256" $ string derivHash
130+ | derivKind /= "" = vcat
131+ [ text "src" <+> equals <+> text ("fetch" ++ derivKind) <+> lbrace
132+ , nest 2 $ vcat
133+ [ attr "url" $ string derivUrl
134+ , attr "sha256" $ string derivHash
135+ , if derivRevision /= "" then attr "rev" (string derivRevision) else empty
136+ ]
137+ , rbrace <> semi
138+ ]
139+ | otherwise = attr "src" $ text derivUrl
src/Distribution/Nixpkgs/Haskell/FromCabal.hs+81−62
@@ -1,8 +1,8 @@
1+{-# LANGUAGE OverloadedStrings #-}
1{-# LANGUAGE RecordWildCards #-}
2{-# LANGUAGE RecordWildCards #-}
2
3
3−module Distribution.Nixpkgs.Haskell.FromCabal ( cabal2nix, cabal2nix' ) where
4+module Distribution.Nixpkgs.Haskell.FromCabal ( fromGenericPackageDescription, fromPackageDescription ) where
4
5
5−import Distribution.Nixpkgs.Haskell.FromCabal.Flags
6import Distribution.Nixpkgs.Haskell.FromCabal.License
6import Distribution.Nixpkgs.Haskell.FromCabal.License
7import Distribution.Nixpkgs.Haskell.FromCabal.Name
7import Distribution.Nixpkgs.Haskell.FromCabal.Name
8import Distribution.Nixpkgs.Haskell.FromCabal.Normalize
8import Distribution.Nixpkgs.Haskell.FromCabal.Normalize
@@ -10,76 +10,95 @@ import Distribution.Nixpkgs.Haskell.FromCabal.PostProcess
10import Internal.Lens
10import Internal.Lens
11import Data.Maybe
11import Data.Maybe
12import qualified Data.Set as Set
12import qualified Data.Set as Set
13−import Data.Version
13+import Distribution.Version
14import Distribution.Compiler
14import Distribution.Compiler
15−import Distribution.Nixpkgs.Fetch
15+import qualified Distribution.PackageDescription as Cabal
16import Distribution.Nixpkgs.Haskell
16import Distribution.Nixpkgs.Haskell
17import qualified Distribution.Nixpkgs.Haskell as Nix
17import qualified Distribution.Nixpkgs.Haskell as Nix
18import qualified Distribution.Nixpkgs.Meta as Nix
18import qualified Distribution.Nixpkgs.Meta as Nix
19import Distribution.Package
19import Distribution.Package
20import Distribution.PackageDescription
20import Distribution.PackageDescription
21−import qualified Distribution.PackageDescription as Cabal
22import Distribution.PackageDescription.Configuration
21import Distribution.PackageDescription.Configuration
23import Distribution.System
22import Distribution.System
23+import Language.Nix
24+import Distribution.Nixpkgs.Haskell.Constraint
24import Distribution.Text ( display )
25import Distribution.Text ( display )
25
26
27+type HaskellResolver = Dependency -> Bool
28+type NixpkgsResolver = Identifier -> Maybe Binding
29+
26−cabal2nix :: FlagAssignment -> GenericPackageDescription -> Derivation
30+fromGenericPackageDescription :: HaskellResolver -> NixpkgsResolver -> Platform -> CompilerInfo -> FlagAssignment -> [Constraint] -> GenericPackageDescription -> Derivation
27−cabal2nix flags' cabal = normalize $ drv & cabalFlags .~ flags
31+fromGenericPackageDescription haskellResolver nixpkgsResolver arch compiler flags constraints descr' =
28− where drv = cabal2nix' descr
32+ case finalize haskellResolver of
29− flags = normalizeCabalFlags (flags' ++ configureCabalFlags (package (packageDescription cabal)))
33+ Left mismatch -> case finalize jailbrokenResolver of
34+ Left missing -> case finalize (const True) of
35+ Left missing' -> error $ "finalizePackageDescription complains about missing dependencies \
36+ \even though we told it that everything exists: " ++ show missing'
37+ Right (descr,_) -> fromPackageDescription haskellResolver nixpkgsResolver mismatch missing flags descr
38+ Right (descr,_) -> fromPackageDescription haskellResolver nixpkgsResolver mismatch [] flags descr
39+ Right (descr,_) -> fromPackageDescription haskellResolver nixpkgsResolver [] [] flags descr
40+
41+ where
42+ -- We have to call the Cabal finalizer several times with different resolver functions, and this
43+ -- convenience function makes our code shorter.
44+ finalize :: HaskellResolver -> Either [Dependency] (PackageDescription,FlagAssignment)
30− Right (descr, _) = finalizePackageDescription
45+ finalize resolver = finalizePackageDescription flags resolver arch compiler constraints descr'
31− flags
46+
32− (const True)
47+ jailbrokenResolver :: HaskellResolver
33− (Platform X86_64 Linux) -- shouldn't be hardcoded
48+ jailbrokenResolver (Dependency pkg _) = haskellResolver (Dependency pkg anyVersion)
34− (unknownCompilerInfo (CompilerId GHC (Version [7,10,2] [])) NoAbiTag)
35− []
36− cabal
37
49
38−cabal2nix' :: PackageDescription -> Derivation
50+fromPackageDescription :: HaskellResolver -> NixpkgsResolver -> [Dependency] -> [Dependency] -> FlagAssignment -> PackageDescription -> Derivation
39−cabal2nix' PackageDescription {..} = normalize $ postProcess $
51+fromPackageDescription haskellResolver nixpkgsResolver mismatchedDeps missingDeps flags (PackageDescription {..}) = normalize $ postProcess $ def
40− let
52+ & isLibrary .~ isJust library
53+ & pkgid .~ package
54+ & revision .~ xrev
55+ & isLibrary .~ isJust library
56+ & isExecutable .~ not (null executables)
57+ & extraFunctionArgs .~ mempty
58+ & libraryDepends .~ maybe mempty (convertBuildInfo . libBuildInfo) library
59+ & executableDepends .~ mconcat (map (convertBuildInfo . buildInfo) executables)
60+ & testDepends .~ mconcat (map (convertBuildInfo . testBuildInfo) testSuites)
61+ & configureFlags .~ mempty
62+ & cabalFlags .~ flags
63+ & runHaddock .~ True
64+ & jailbreak .~ not (null mismatchedDeps)
65+ & doCheck .~ True
66+ & testTarget .~ mempty
67+ & hyperlinkSource .~ True
68+ & enableSplitObjs .~ True
69+ & phaseOverrides .~ mempty
70+ & editedCabalFile .~ (if xrev > 0
71+ then fromMaybe (error (display package ++ ": X-Cabal-File-Hash field is missing")) (lookup "X-Cabal-File-Hash" customFieldsPD)
72+ else "")
73+ & metaSection .~ ( def
74+ & Nix.homepage .~ homepage
75+ & Nix.description .~ synopsis
76+ & Nix.license .~ fromCabalLicense license
77+ & Nix.platforms .~ mempty
78+ & Nix.hydraPlatforms .~ mempty
79+ & Nix.maintainers .~ mempty
80+ & Nix.broken .~ not (null missingDeps)
81+ )
82+ where
41 xrev = maybe 0 read (lookup "x-revision" customFieldsPD)
83 xrev = maybe 0 read (lookup "x-revision" customFieldsPD)
42− in
43− def
44− & pkgid .~ package
45− & revision .~ xrev
46− & src .~ DerivationSource
47− { derivKind = "url"
48− , derivUrl = mempty
49− , derivRevision = mempty
50− , derivHash = mempty
51− }
52− & isLibrary .~ isJust library
53− & isExecutable .~ not (null executables)
54− & extraFunctionArgs .~ mempty
55− & libraryDepends .~ maybe mempty (convertBuildInfo . libBuildInfo) library
56− & executableDepends .~ mconcat (map (convertBuildInfo . buildInfo) executables)
57− & testDepends .~ mconcat (map (convertBuildInfo . testBuildInfo) testSuites)
58− & configureFlags .~ mempty
59− & cabalFlags .~ configureCabalFlags package
60− & runHaddock .~ True
61− & jailbreak .~ False
62− & doCheck .~ True
63− & testTarget .~ mempty
64− & hyperlinkSource .~ True
65− & enableSplitObjs .~ True
66− & phaseOverrides .~ mempty
67− & editedCabalFile .~ (if xrev > 0 then fromMaybe (error (display package ++ ": X-Cabal-File-Hash field is missing"))
68− (lookup "X-Cabal-File-Hash" customFieldsPD)
69− else "")
70− & metaSection .~ ( def
71− & Nix.homepage .~ homepage
72− & Nix.description .~ synopsis
73− & Nix.license .~ fromCabalLicense license
74− & Nix.platforms .~ mempty
75− & Nix.hydraPlatforms .~ mempty
76− & Nix.maintainers .~ mempty
77− & Nix.broken .~ False
78− )
79
84
85+ resolveInHackage :: Identifier -> Binding
86+ resolveInHackage i | (i^.ident) `elem` [ n | (Dependency (PackageName n) _) <- missingDeps ] = bindNull i
87+ | otherwise = create binding (i, create path ["self",i]) -- TODO: "self" shouldn't be hardcoded.
88+
89+ resolveInNixpkgs :: Identifier -> Binding
90+ resolveInNixpkgs i = fromMaybe (bindNull i) (nixpkgsResolver i)
91+
92+ resolveInHackageThenNixpkgs :: Identifier -> Binding
93+ resolveInHackageThenNixpkgs i | haskellResolver (Dependency (PackageName (i^.ident)) anyVersion) = resolveInHackage i
94+ | otherwise = resolveInNixpkgs i
95+
80−convertBuildInfo :: Cabal.BuildInfo -> Nix.BuildInfo
96+ convertBuildInfo :: Cabal.BuildInfo -> Nix.BuildInfo
81−convertBuildInfo Cabal.BuildInfo {..} = mempty
97+ convertBuildInfo Cabal.BuildInfo {..} = mempty
82− & haskell .~ Set.fromList [ toNixName x | (Dependency x _) <- targetBuildDepends ]
98+ & haskell .~ Set.fromList [ resolveInHackage (toNixName x) | (Dependency x _) <- targetBuildDepends ]
83− & system .~ Set.fromList [ y | x <- extraLibs, y <- libNixName x ]
99+ & system .~ Set.fromList [ resolveInNixpkgs y | x <- extraLibs, y <- libNixName x ]
84− & pkgconfig .~ Set.fromList [ y | Dependency (PackageName x) _ <- pkgconfigDepends, y <- libNixName x ]
100+ & pkgconfig .~ Set.fromList [ resolveInNixpkgs y | Dependency (PackageName x) _ <- pkgconfigDepends, y <- libNixName x ]
85− & tool .~ Set.fromList [ y | Dependency (PackageName x) _ <- buildTools, y <- buildToolNixName x ]
101+ & tool .~ Set.fromList [ resolveInHackageThenNixpkgs y | Dependency (PackageName x) _ <- buildTools, y <- buildToolNixName x ]
102+
103+bindNull :: Identifier -> Binding
104+bindNull i = create binding (i, create path ["null"])
src/Distribution/Nixpkgs/Haskell/FromCabal/Configuration.hsnew file+46
@@ -0,0 +1,46 @@
1+module Distribution.Nixpkgs.Haskell.FromCabal.Configuration
2+ ( Configuration(..)
3+ , module Distribution.Package
4+ , module Distribution.System
5+ , module Distribution.Compiler
6+ , module Distribution.Nixpkgs.Haskell.Constraint
7+ , module Distribution.Version
8+ ) where
9+
10+import Data.Set
11+import Distribution.Package
12+import Distribution.System
13+import Distribution.Compiler
14+import Distribution.Nixpkgs.Haskell.Constraint
15+import Distribution.Version
16+
17+data Configuration = Configuration
18+ {
19+ -- |Target architecture. Used by 'finalizePackageDescription' to
20+ -- choose appropriate flags and dependencies.
21+ platform :: Platform
22+
23+ -- |Target compiler. Used by 'finalizePackageDescription' to choose
24+ -- appropriate flags and dependencies.
25+ , compilerInfo :: CompilerInfo
26+
27+ -- |Core packages found on Hackageg
28+ , corePackages :: [PackageIdentifier]
29+
30+ -- |Core packages not found on Hackage.
31+ , hardCorePackages :: [PackageIdentifier]
32+
33+ -- |These packages replace the latest respective version during
34+ -- dependency resolution.
35+ , defaultPackageOverrides :: [Constraint]
36+
37+ -- |These packages are added to the generated set, but the play no
38+ -- role during dependency resolution.
39+ , extraPackages :: [Constraint]
40+
41+ -- |These packages have not succeeded a build yet, so we give them an
42+ -- empty meta.hydraPlatforms attribute to avoid cluttering our Hydra
43+ -- output with lots of broken builds.
44+ , brokenPackages :: Set PackageName
45+ }
46+ deriving (Show)
src/Distribution/Nixpkgs/Haskell/FromCabal/Configuration/GHC7102.hsnew file+3679
@@ -0,0 +1,3679 @@
1+module Distribution.Nixpkgs.Haskell.FromCabal.Configuration.GHC7102 ( Configuration(..), ghc7102 ) where
2+
3+import Data.Maybe ( fromMaybe )
4+import qualified Data.Set as Set
5+import Distribution.Nixpkgs.Haskell.FromCabal.Configuration
6+import Distribution.Text ( simpleParse )
7+
8+ghc7102 :: Configuration
9+ghc7102 = Configuration
10+ { platform = Platform X86_64 Linux
11+
12+ , compilerInfo = unknownCompilerInfo (CompilerId GHC (Version [7,10,2] [])) NoAbiTag
13+
14+ , defaultPackageOverrides = map (\s -> fromMaybe (error (show s ++ " is not a valid override selector")) (simpleParse s))
15+ [ "HUnit < 1.3.0.0" -- newer versions break test-framework-hunit-0.3.0.1
16+ ]
17+
18+ , corePackages = map (\s -> fromMaybe (error (show s ++ " is not a valid core package")) (simpleParse s))
19+ [ "Cabal-1.22.4.0"
20+ , "array-0.5.1.0"
21+ , "base-4.8.1.0"
22+ , "binary-0.7.5.0"
23+ , "bytestring-0.10.6.0"
24+ , "containers-0.5.6.2"
25+ , "deepseq-1.4.1.1"
26+ , "directory-1.2.2.0"
27+ , "filepath-1.4.0.0"
28+ , "ghc-prim-0.4.0.0"
29+ , "haskeline-0.7.2.1"
30+ , "hoopl-3.10.0.2"
31+ , "hpc-0.6.0.2"
32+ , "integer-gmp-1.0.0.0"
33+ , "pretty-1.1.2.0"
34+ , "process-1.2.3.0"
35+ , "template-haskell-2.10.0.0"
36+ , "terminfo-0.4.0.1"
37+ , "time-1.5.0.1"
38+ , "transformers-0.4.2.0"
39+ , "unix-2.7.1.0"
40+ , "xhtml-3000.2.1"
41+ ]
42+
43+ , hardCorePackages = map (\s -> fromMaybe (error (show s ++ " is not a valid core package")) (simpleParse s))
44+ [ "bin-package-db-0.0.0.0"
45+ , "ghc-7.10.2"
46+ , "rts-1.0"
47+ ]
48+
49+ , extraPackages = map (\s -> fromMaybe (error (show s ++ " is not a valid extra package selector")) (simpleParse s))
50+ [ "aeson < 0.8" -- newer versions don't work with GHC 6.12.3
51+ , "Cabal == 1.18.*" -- required for cabal-install et al on old GHC versions
52+ , "Cabal == 1.20.*" -- required for cabal-install et al on old GHC versions
53+ , "cabal-install == 1.18.*" -- required for ghc-mod on 7.8.x
54+ , "conduit < 1.2.4.2" -- newer versions trigger non-deterministic ID bugs in GHC versions prior to 7.10.x
55+ , "containers < 0.5" -- required to build alex with GHC 6.12.3
56+ , "control-monad-free < 0.6" -- newer versions don't compile with anything but GHC 7.8.x
57+ , "deepseq == 1.3.0.1" -- required to build Cabal with GHC 6.12.3
58+ , "descriptive < 0.1" -- required for structured-haskell-mode-1.0.8
59+ , "gloss < 1.9.3" -- new versions don't compile with GHC 7.8.x
60+ , "haddock-api < 2.16" -- required on GHC 7.8.x
61+ , "haskell-src-exts < 1.16" -- required for structured-haskell-mode-1.0.8
62+ , "mtl < 2.2" -- newer versions require transformers > 0.4.x, which we cannot provide in GHC 7.8.x
63+ , "mtl-prelude < 2" -- required for to build postgrest on mtl 2.1.x platforms
64+ , "parallel == 3.2.0.3" -- newer versions don't work with GHC 6.12.3
65+ , "primitive == 0.5.1.*" -- required to build alex with GHC 6.12.3
66+ , "QuickCheck < 2" -- required by test-framework-quickcheck and its users
67+ , "seqid < 0.2" -- newer versions depend on transformers 0.4.x which we cannot provide in GHC 7.8.x
68+ , "seqid-streams < 0.2" -- newer versions depend on transformers 0.4.x which we cannot provide in GHC 7.8.x
69+ , "split < 0.2" -- newer versions don't work with GHC 6.12.3
70+ , "tar < 0.4.2.0" -- later versions don't work with GHC < 7.6.x
71+ , "vector < 0.10.10" -- newer versions don't work with GHC 6.12.3
72+ , "zlib < 0.6" -- newer versions break cabal-install
73+ ]
74+
75+ , brokenPackages = Set.fromList $ map PackageName
76+ [ "3dmodels"
77+ , "4Blocks"
78+ , "abcBridge"
79+ , "abstract-par-accelerate"
80+ , "abt"
81+ , "AC-BuildPlatform"
82+ , "accelerate-arithmetic"
83+ , "accelerate-fftw"
84+ , "accelerate-fourier"
85+ , "accelerate-io"
86+ , "accelerate-utility"
87+ , "accentuateus"
88+ , "access-time"
89+ , "AC-EasyRaster-GTK"
90+ , "AC-HalfInteger"
91+ , "ACME"
92+ , "acme-hq9plus"
93+ , "acme-inator"
94+ , "acme-numbersystem"
95+ , "acme-schoenfinkel"
96+ , "acme-zero"
97+ , "AC-MiniTest"
98+ , "AC-Terminal"
99+ , "ActionKid"
100+ , "activehs"
101+ , "actor"
102+ , "AC-VanillaArray"
103+ , "Adaptive"
104+ , "Adaptive-Blaisorblade"
105+ , "adaptive-containers"
106+ , "adaptive-tuple"
107+ , "adblock2privoxy"
108+ , "adhoc-network"
109+ , "adict"
110+ , "adobe-swatch-exchange"
111+ , "adp-multi"
112+ , "adp-multi-monadiccp"
113+ , "Advgame"
114+ , "AERN-Basics"
115+ , "AERN-Net"
116+ , "AERN-Real"
117+ , "AERN-Real-Double"
118+ , "AERN-Real-Interval"
119+ , "AERN-RnToRm"
120+ , "AERN-RnToRm-Plot"
121+ , "aeson-bson"
122+ , "AesonBson"
123+ , "aeson-native"
124+ , "aeson-smart"
125+ , "afv"
126+ , "Agata"
127+ , "agda-server"
128+ , "AGI"
129+ , "AhoCorasick"
130+ , "airbrake"
131+ , "aivika-experiment-diagrams"
132+ , "aivika-transformers"
133+ , "ajhc"
134+ , "alea"
135+ , "algebraic"
136+ , "alms"
137+ , "alpha"
138+ , "alpino-tools"
139+ , "alsa"
140+ , "alsa-midi"
141+ , "alsa-pcm-tests"
142+ , "alsa-seq-tests"
143+ , "altfloat"
144+ , "alure"
145+ , "amazon-emailer"
146+ , "amazon-products"
147+ , "AMI"
148+ , "ampersand"
149+ , "anansi-pandoc"
150+ , "anatomy"
151+ , "android-lint-summary"
152+ , "AndroidViewHierarchyImporter"
153+ , "angel"
154+ , "Animas"
155+ , "antfarm"
156+ , "anticiv"
157+ , "antigate"
158+ , "antimirov"
159+ , "antlrc"
160+ , "anydbm"
161+ , "aosd"
162+ , "apelsin"
163+ , "apiary-helics"
164+ , "apiary-purescript"
165+ , "apis"
166+ , "api-tools"
167+ , "apotiki"
168+ , "appc"
169+ , "app-lens"
170+ , "ApplePush"
171+ , "AppleScript"
172+ , "approx-rand-test"
173+ , "arbb-vm"
174+ , "arb-fft"
175+ , "archiver"
176+ , "archlinux"
177+ , "archlinux-web"
178+ , "arff"
179+ , "argparser"
180+ , "arguedit"
181+ , "ariadne"
182+ , "arion"
183+ , "armada"
184+ , "array-forth"
185+ , "ArrayRef"
186+ , "arrowapply-utils"
187+ , "arrow-improve"
188+ , "arrowp"
189+ , "ArrowVHDL"
190+ , "arx"
191+ , "ascii85-conduit"
192+ , "asic"
193+ , "asil"
194+ , "asn1-data"
195+ , "AspectAG"
196+ , "assimp"
197+ , "astrds"
198+ , "astview"
199+ , "async-extras"
200+ , "aterm-utils"
201+ , "atlassian-connect-core"
202+ , "atlassian-connect-descriptor"
203+ , "atom-basic"
204+ , "atom-msp430"
205+ , "atomo"
206+ , "attoparsec-csv"
207+ , "attoparsec-iteratee"
208+ , "attoparsec-text"
209+ , "attoparsec-text-enumerator"
210+ , "Attrac"
211+ , "atuin"
212+ , "augeas"
213+ , "augur"
214+ , "Aurochs"
215+ , "authoring"
216+ , "AutoForms"
217+ , "autoproc"
218+ , "avahi"
219+ , "avers"
220+ , "AvlTree"
221+ , "awesomium"
222+ , "awesomium-glut"
223+ , "awesomium-raw"
224+ , "AWin32Console"
225+ , "aws-cloudfront-signer"
226+ , "aws-ec2"
227+ , "aws-elastic-transcoder"
228+ , "aws-kinesis-reshard"
229+ , "aws-lambda"
230+ , "aws-sdk"
231+ , "aws-sdk-text-converter"
232+ , "aws-sdk-xml-unordered"
233+ , "aws-sign4"
234+ , "aws-sns"
235+ , "azure-service-api"
236+ , "azurify"
237+ , "backdropper"
238+ , "bag"
239+ , "Baggins"
240+ , "bamboo"
241+ , "bamboo-launcher"
242+ , "bamboo-plugin-highlight"
243+ , "bamboo-plugin-photo"
244+ , "bamboo-theme-blueprint"
245+ , "bamboo-theme-mini-html5"
246+ , "bamse"
247+ , "barcodes-code128"
248+ , "barley"
249+ , "Barracuda"
250+ , "barrie"
251+ , "barrier-monad"
252+ , "baskell"
253+ , "battleships"
254+ , "bayes-stack"
255+ , "BCMtools"
256+ , "beamable"
257+ , "beautifHOL"
258+ , "bed-and-breakfast"
259+ , "Befunge93"
260+ , "bein"
261+ , "berkeleydb"
262+ , "BerkeleyDBXML"
263+ , "berp"
264+ , "bff"
265+ , "bgzf"
266+ , "bidirectionalization-combined"
267+ , "bidispec"
268+ , "billboard-parser"
269+ , "billeksah-forms"
270+ , "billeksah-main"
271+ , "billeksah-pane"
272+ , "billeksah-services"
273+ , "binary-derive"
274+ , "binary-file"
275+ , "binary-indexed-tree"
276+ , "binary-protocol-zmq"
277+ , "binary-streams"
278+ , "binary-strict"
279+ , "binding-gtk"
280+ , "bindings-apr"
281+ , "bindings-apr-util"
282+ , "bindings-bfd"
283+ , "bindings-cctools"
284+ , "bindings-codec2"
285+ , "bindings-common"
286+ , "bindings-dc1394"
287+ , "bindings-eskit"
288+ , "bindings-EsounD"
289+ , "bindings-fann"
290+ , "bindings-friso"
291+ , "bindings-gts"
292+ , "bindings-hdf5"
293+ , "bindings-K8055"
294+ , "bindings-libftdi"
295+ , "bindings-librrd"
296+ , "bindings-libstemmer"
297+ , "bindings-libv4l2"
298+ , "bindings-linux-videodev2"
299+ , "bindings-mpdecimal"
300+ , "bindings-sc3"
301+ , "bindings-sipc"
302+ , "bind-marshal"
303+ , "bio"
304+ , "Biobase"
305+ , "BiobaseBlast"
306+ , "BiobaseDotP"
307+ , "BiobaseFasta"
308+ , "BiobaseFR3D"
309+ , "BiobaseInfernal"
310+ , "BiobaseMAF"
311+ , "BiobaseTrainingData"
312+ , "BiobaseTurner"
313+ , "BiobaseVienna"
314+ , "biophd"
315+ , "biosff"
316+ , "biostockholm"
317+ , "bird"
318+ , "BirdPP"
319+ , "bit-array"
320+ , "bitcoin-rpc"
321+ , "Bitly"
322+ , "bitly-cli"
323+ , "bits-conduit"
324+ , "bitset"
325+ , "bitspeak"
326+ , "BitSyntax"
327+ , "bittorrent"
328+ , "bkr"
329+ , "bla"
330+ , "black-jewel"
331+ , "blakesum"
332+ , "blakesum-demo"
333+ , "blank-canvas"
334+ , "blas"
335+ , "blas-hs"
336+ , "blaze"
337+ , "blaze-html-contrib"
338+ , "blaze-html-hexpat"
339+ , "blazeMarker"
340+ , "blaze-textual-native"
341+ , "Blobs"
342+ , "blogination"
343+ , "BlogLiterately-diagrams"
344+ , "Blueprint"
345+ , "bluetile"
346+ , "board-games"
347+ , "bogre-banana"
348+ , "Bookshelf"
349+ , "boolean-normal-forms"
350+ , "bools"
351+ , "boolsimplifier"
352+ , "boomslang"
353+ , "borel"
354+ , "bot"
355+ , "brainfuck-monad"
356+ , "Bravo"
357+ , "breakout"
358+ , "brians-brain"
359+ , "brillig"
360+ , "bsd-sysctl"
361+ , "bson-generics"
362+ , "bson-mapping"
363+ , "btree-concurrent"
364+ , "buildbox-tools"
365+ , "buildwrapper"
366+ , "bullet"
367+ , "buster"
368+ , "Buster"
369+ , "buster-gtk"
370+ , "buster-network"
371+ , "bytable"
372+ , "bytestring-class"
373+ , "bytestring-csv"
374+ , "bytestringparser"
375+ , "bytestring-plain"
376+ , "bytestringreadp"
377+ , "bytestring-rematch"
378+ , "bytestring-short"
379+ , "cabal2arch"
380+ , "cabal2doap"
381+ , "cabal2spec"
382+ , "cabal-constraints"
383+ , "cabal-dev"
384+ , "cabal-ghci"
385+ , "cabalgraph"
386+ , "cabal-graphdeps"
387+ , "cabal-install-bundle"
388+ , "cabal-install-ghc72"
389+ , "cabal-install-ghc74"
390+ , "cabalmdvrpm"
391+ , "cabal-query"
392+ , "cabalrpmdeps"
393+ , "cabal-scripts"
394+ , "cabal-setup"
395+ , "cabal-test"
396+ , "cabal-upload"
397+ , "cabocha"
398+ , "cake3"
399+ , "cakyrespa"
400+ , "cal3d"
401+ , "cal3d-examples"
402+ , "cal3d-opengl"
403+ , "calc"
404+ , "caldims"
405+ , "caledon"
406+ , "call-haskell-from-anything"
407+ , "campfire"
408+ , "cantor"
409+ , "cao"
410+ , "cap"
411+ , "Capabilities"
412+ , "capri"
413+ , "carboncopy"
414+ , "carettah"
415+ , "casadi-bindings"
416+ , "casadi-bindings-control"
417+ , "casadi-bindings-core"
418+ , "casadi-bindings-internal"
419+ , "casadi-bindings-ipopt-interface"
420+ , "casadi-bindings-snopt-interface"
421+ , "Cascade"
422+ , "cascading"
423+ , "cash"
424+ , "cassandra-thrift"
425+ , "cassava-streams"
426+ , "cassy"
427+ , "casui"
428+ , "Catana"
429+ , "catch-fd"
430+ , "categorical-algebra"
431+ , "category-extras"
432+ , "CBOR"
433+ , "CC-delcont"
434+ , "CC-delcont-alt"
435+ , "CC-delcont-cxe"
436+ , "CC-delcont-exc"
437+ , "CC-delcont-ref"
438+ , "CC-delcont-ref-tf"
439+ , "cci"
440+ , "cctools-workqueue"
441+ , "cedict"
442+ , "ceilometer-common"
443+ , "cereal-enumerator"
444+ , "cereal-ieee754"
445+ , "cereal-plus"
446+ , "certificate"
447+ , "cf"
448+ , "cfipu"
449+ , "cflp"
450+ , "cfopu"
451+ , "cgen"
452+ , "cgi-utils"
453+ , "chalkboard"
454+ , "chalkboard-viewer"
455+ , "charade"
456+ , "Chart-diagrams"
457+ , "chatter"
458+ , "checked"
459+ , "check-pvp"
460+ , "chevalier-common"
461+ , "Chitra"
462+ , "chp"
463+ , "chp-mtl"
464+ , "chp-plus"
465+ , "chp-spec"
466+ , "chp-transformers"
467+ , "ChristmasTree"
468+ , "chronograph"
469+ , "chuchu"
470+ , "chunks"
471+ , "church-list"
472+ , "cil"
473+ , "cinvoke"
474+ , "c-io"
475+ , "cio"
476+ , "citation-resolve"
477+ , "citeproc-hs"
478+ , "citeproc-hs-pandoc-filter"
479+ , "cjk"
480+ , "clac"
481+ , "clafer"
482+ , "claferIG"
483+ , "claferwiki"
484+ , "CLASE"
485+ , "clash"
486+ , "clash-ghc"
487+ , "clash-prelude"
488+ , "clash-prelude-quickcheck"
489+ , "clash-systemverilog"
490+ , "clash-vhdl"
491+ , "ClassLaws"
492+ , "ClassyPrelude"
493+ , "clckwrks"
494+ , "clckwrks-cli"
495+ , "clckwrks-dot-com"
496+ , "clckwrks-plugin-bugs"
497+ , "clckwrks-plugin-ircbot"
498+ , "clckwrks-plugin-media"
499+ , "clckwrks-plugin-page"
500+ , "clckwrks-theme-bootstrap"
501+ , "clckwrks-theme-clckwrks"
502+ , "clckwrks-theme-geo-bootstrap"
503+ , "Clean"
504+ , "clevercss"
505+ , "clifford"
506+ , "clipper"
507+ , "clippings"
508+ , "clocked"
509+ , "clogparse"
510+ , "clone-all"
511+ , "cloudfront-signer"
512+ , "cloud-haskell"
513+ , "cloudyfs"
514+ , "clua"
515+ , "cluss"
516+ , "clustering"
517+ , "clustertools"
518+ , "clutterhs"
519+ , "cmaes"
520+ , "cmath"
521+ , "cmathml3"
522+ , "CMCompare"
523+ , "cmdargs-browser"
524+ , "cmdtheline"
525+ , "cmonad"
526+ , "cnc-spec-compiler"
527+ , "cndict"
528+ , "Coadjute"
529+ , "Codec-Image-DevIL"
530+ , "codec-libevent"
531+ , "codecov-haskell"
532+ , "codemonitor"
533+ , "codepad"
534+ , "cognimeta-utils"
535+ , "coinbase-exchange"
536+ , "colada"
537+ , "collada-output"
538+ , "collada-types"
539+ , "collections"
540+ , "collections-api"
541+ , "collections-base-instances"
542+ , "coltrane"
543+ , "com"
544+ , "combinat"
545+ , "combinat-diagrams"
546+ , "combinatorial-problems"
547+ , "combinator-interactive"
548+ , "Combinatorrent"
549+ , "Commando"
550+ , "commodities"
551+ , "commsec"
552+ , "commsec-keyexchange"
553+ , "comonad-extras"
554+ , "comonad-random"
555+ , "compact-map"
556+ , "compact-string"
557+ , "compilation"
558+ , "complexity"
559+ , "compose-trans"
560+ , "compression"
561+ , "compstrat"
562+ , "comptrans"
563+ , "computational-algebra"
564+ , "concraft"
565+ , "concraft-hr"
566+ , "concraft-pl"
567+ , "concrete-typerep"
568+ , "concurrent-state"
569+ , "ConcurrentUtils"
570+ , "condor"
571+ , "Condor"
572+ , "condorcet"
573+ , "conductive-clock"
574+ , "conductive-hsc3"
575+ , "conduit-audio-lame"
576+ , "conduit-audio-samplerate"
577+ , "conduit-iconv"
578+ , "conduit-network-stream"
579+ , "conduit-resumablesink"
580+ , "Configger"
581+ , "config-select"
582+ , "conjure"
583+ , "consistent"
584+ , "const-math-ghc-plugin"
585+ , "constrained-categories"
586+ , "constructive-algebra"
587+ , "consul-haskell"
588+ , "Consumer"
589+ , "context-stack"
590+ , "continue"
591+ , "continuum"
592+ , "continuum-client"
593+ , "Contract"
594+ , "control-event"
595+ , "control-monad-attempt"
596+ , "control-monad-exception-mtl"
597+ , "control-monad-failure"
598+ , "control-monad-failure-mtl"
599+ , "Control-Monad-MultiPass"
600+ , "Control-Monad-ST2"
601+ , "contstuff-monads-tf"
602+ , "contstuff-transformers"
603+ , "convertible-ascii"
604+ , "convertible-text"
605+ , "copilot"
606+ , "copilot-c99"
607+ , "copilot-cbmc"
608+ , "copilot-core"
609+ , "copilot-language"
610+ , "copilot-libraries"
611+ , "copilot-sbv"
612+ , "COrdering"
613+ , "core"
614+ , "corebot-bliki"
615+ , "CoreErlang"
616+ , "CoreFoundation"
617+ , "core-haskell"
618+ , "Coroutine"
619+ , "coroutine-iteratee"
620+ , "CouchDB"
621+ , "couchdb-conduit"
622+ , "couchdb-enumerator"
623+ , "couch-hs"
624+ , "court"
625+ , "CPBrainfuck"
626+ , "cpio-conduit"
627+ , "CPL"
628+ , "cplusplus-th"
629+ , "cpsa"
630+ , "cpuperf"
631+ , "cpython"
632+ , "cqrs"
633+ , "cqrs-example"
634+ , "cqrs-postgresql"
635+ , "cqrs-sqlite3"
636+ , "cqrs-test"
637+ , "cqrs-types"
638+ , "cr"
639+ , "crack"
640+ , "Craft3e"
641+ , "craftwerk"
642+ , "craftwerk-cairo"
643+ , "craftwerk-gtk"
644+ , "crc16"
645+ , "crf-chain1"
646+ , "crf-chain1-constrained"
647+ , "crf-chain2-generic"
648+ , "crf-chain2-tiers"
649+ , "criterion-plus"
650+ , "crocodile"
651+ , "crunghc"
652+ , "crypto-cipher-benchmarks"
653+ , "cryptsy-api"
654+ , "crystalfontz"
655+ , "cse-ghc-plugin"
656+ , "csound-catalog"
657+ , "csound-expression"
658+ , "csound-expression-opcodes"
659+ , "csound-expression-typed"
660+ , "csound-sampler"
661+ , "csp"
662+ , "cspmchecker"
663+ , "CSPM-cspm"
664+ , "CSPM-FiringRules"
665+ , "CSPM-Frontend"
666+ , "CSPM-Interpreter"
667+ , "CSPM-ToProlog"
668+ , "css"
669+ , "ctemplate"
670+ , "ctkl"
671+ , "ctpl"
672+ , "cudd"
673+ , "curry-base"
674+ , "CurryDB"
675+ , "curry-frontend"
676+ , "cursedcsv"
677+ , "curves"
678+ , "CV"
679+ , "cypher"
680+ , "dag"
681+ , "DAG-Tournament"
682+ , "Dangerous"
683+ , "dao"
684+ , "Dao"
685+ , "dapi"
686+ , "darcs2dot"
687+ , "darcs-benchmark"
688+ , "darcs-beta"
689+ , "darcs-buildpackage"
690+ , "darcs-cabalized"
691+ , "darcsden"
692+ , "darcs-graph"
693+ , "DarcsHelpers"
694+ , "darcs-monitor"
695+ , "darcs-scripts"
696+ , "darcswatch"
697+ , "darkplaces-demo"
698+ , "data-cycle"
699+ , "data-dispersal"
700+ , "data-easy"
701+ , "data-extra"
702+ , "data-ivar"
703+ , "data-lens-ixset"
704+ , "datalog"
705+ , "data-named"
706+ , "data-nat"
707+ , "data-object-json"
708+ , "data-object-yaml"
709+ , "data-quotientref"
710+ , "data-rope"
711+ , "Data-Rope"
712+ , "data-store"
713+ , "DataTreeView"
714+ , "data-type"
715+ , "dbjava"
716+ , "d-bus"
717+ , "DBus"
718+ , "dbus-client"
719+ , "dbus-core"
720+ , "dclabel"
721+ , "ddc-build"
722+ , "ddc-core"
723+ , "ddc-core-eval"
724+ , "ddc-core-flow"
725+ , "ddc-core-llvm"
726+ , "ddc-core-salt"
727+ , "ddc-core-simpl"
728+ , "ddc-core-tetra"
729+ , "ddc-driver"
730+ , "ddci-core"
731+ , "ddc-source-tetra"
732+ , "ddc-tools"
733+ , "Deadpan-DDP"
734+ , "dead-simple-json"
735+ , "decepticons"
736+ , "DecisionTree"
737+ , "decoder-conduit"
738+ , "dedukti"
739+ , "deeplearning-hs"
740+ , "deepseq-bounded"
741+ , "deepseq-th"
742+ , "deepzoom"
743+ , "defargs"
744+ , "DefendTheKing"
745+ , "definitive-base"
746+ , "definitive-filesystem"
747+ , "definitive-graphics"
748+ , "definitive-parser"
749+ , "definitive-reactive"
750+ , "definitive-sound"
751+ , "deka"
752+ , "deka-tests"
753+ , "delicious"
754+ , "delta-h"
755+ , "demarcate"
756+ , "denominate"
757+ , "depends"
758+ , "dephd"
759+ , "dequeue"
760+ , "derangement"
761+ , "derivation-trees"
762+ , "derive-gadt"
763+ , "derive-IG"
764+ , "derive-topdown"
765+ , "derive-trie"
766+ , "derp-lib"
767+ , "dewdrop"
768+ , "Dflow"
769+ , "dfsbuild"
770+ , "dgim"
771+ , "dgs"
772+ , "diagrams-builder"
773+ , "diagrams-canvas"
774+ , "diagrams-haddock"
775+ , "diagrams-hsqml"
776+ , "diagrams-pdf"
777+ , "diagrams-pgf"
778+ , "diagrams-qrcode"
779+ , "diagrams-tikz"
780+ , "dice-entropy-conduit"
781+ , "dicom"
782+ , "dictparser"
783+ , "diffcabal"
784+ , "DifferenceLogic"
785+ , "DifferentialEvolution"
786+ , "digestive-functors-hsp"
787+ , "DimensionalHash"
788+ , "dingo-core"
789+ , "dingo-example"
790+ , "dingo-widgets"
791+ , "diophantine"
792+ , "direct-binary-files"
793+ , "directed-cubical"
794+ , "direct-fastcgi"
795+ , "direct-http"
796+ , "direct-plugins"
797+ , "DirectSound"
798+ , "dirfiles"
799+ , "discount"
800+ , "disjoint-set"
801+ , "DisTract"
802+ , "distributed-process-async"
803+ , "distributed-process-azure"
804+ , "distributed-process-client-server"
805+ , "distributed-process-execution"
806+ , "distributed-process-extras"
807+ , "distributed-process-platform"
808+ , "distributed-process-registry"
809+ , "distributed-process-supervisor"
810+ , "distributed-process-task"
811+ , "distributed-process-tests"
812+ , "distributed-process-zookeeper"
813+ , "distribution"
814+ , "distribution-plot"
815+ , "dist-upload"
816+ , "djinn-th"
817+ , "DnaProteinAlignment"
818+ , "dnscache"
819+ , "dnssd"
820+ , "doccheck"
821+ , "docidx"
822+ , "docker"
823+ , "dockercook"
824+ , "doc-review"
825+ , "DocTest"
826+ , "doctest-discover"
827+ , "doctest-discover-configurator"
828+ , "DOM"
829+ , "download"
830+ , "download-media-content"
831+ , "DP"
832+ , "dph-examples"
833+ , "dph-lifted-base"
834+ , "dph-lifted-copy"
835+ , "dph-lifted-vseg"
836+ , "dph-par"
837+ , "dph-prim-par"
838+ , "dph-seq"
839+ , "DPM"
840+ , "drClickOn"
841+ , "DrHylo"
842+ , "DrIFT"
843+ , "DrIFT-cabalized"
844+ , "dropbox-sdk"
845+ , "dropsolve"
846+ , "ds-kanren"
847+ , "dsmc"
848+ , "dsmc-tools"
849+ , "dsp"
850+ , "DSTM"
851+ , "dstring"
852+ , "dtab"
853+ , "DTC"
854+ , "dtd"
855+ , "dtd-text"
856+ , "dtd-types"
857+ , "dtw"
858+ , "duplo"
859+ , "Dust"
860+ , "Dust-crypto"
861+ , "Dust-tools"
862+ , "Dust-tools-pcap"
863+ , "dvda"
864+ , "dvdread"
865+ , "dx9base"
866+ , "dx9d3d"
867+ , "dx9d3dx"
868+ , "dynamic-object"
869+ , "dynamic-plot"
870+ , "dynamic-pp"
871+ , "DynamicTimeWarp"
872+ , "dynobud"
873+ , "DysFRP-Cairo"
874+ , "DysFRP-Craftwerk"
875+ , "easy-api"
876+ , "easyjson"
877+ , "easyplot"
878+ , "easyrender"
879+ , "ecdsa"
880+ , "ecu"
881+ , "ed25519"
882+ , "edenmodules"
883+ , "edenskel"
884+ , "edentv"
885+ , "edge"
886+ , "EdisonCore"
887+ , "editable"
888+ , "edit-lenses"
889+ , "editline"
890+ , "EditTimeReport"
891+ , "EEConfig"
892+ , "effective-aspects"
893+ , "effective-aspects-mzv"
894+ , "effect-monad"
895+ , "egison-quote"
896+ , "ehaskell"
897+ , "ehs"
898+ , "eibd-client-simple"
899+ , "eithers"
900+ , "EitherT"
901+ , "Elm"
902+ , "elm-build-lib"
903+ , "elm-compiler"
904+ , "elm-get"
905+ , "elm-make"
906+ , "elm-package"
907+ , "elm-reactor"
908+ , "elm-repl"
909+ , "elm-server"
910+ , "elm-yesod"
911+ , "email"
912+ , "email-header"
913+ , "email-postmark"
914+ , "embeddock"
915+ , "embeddock-example"
916+ , "embroidery"
917+ , "emgm"
918+ , "Emping"
919+ , "empty"
920+ , "Encode"
921+ , "enumfun"
922+ , "EnumMap"
923+ , "enummapmap"
924+ , "env-parser"
925+ , "epoll"
926+ , "epubname"
927+ , "Eq"
928+ , "equational-reasoning"
929+ , "erlang"
930+ , "eros-client"
931+ , "error-message"
932+ , "ersatz"
933+ , "ersatz-toysat"
934+ , "esotericbot"
935+ , "EsounD"
936+ , "estimators"
937+ , "estreps"
938+ , "Etage"
939+ , "Etage-Graph"
940+ , "EtaMOO"
941+ , "eternal"
942+ , "Eternal10Seconds"
943+ , "Etherbunny"
944+ , "ethereum-client-haskell"
945+ , "ethereum-merkle-patricia-db"
946+ , "euphoria"
947+ , "eurofxref"
948+ , "Euterpea"
949+ , "event-driven"
950+ , "event-monad"
951+ , "EventSocket"
952+ , "every-bit-counts"
953+ , "ewe"
954+ , "exif"
955+ , "exists"
956+ , "expand"
957+ , "expat-enumerator"
958+ , "explain"
959+ , "explicit-sharing"
960+ , "explore"
961+ , "exposed-containers"
962+ , "exp-pairs"
963+ , "extcore"
964+ , "extemp"
965+ , "extended-categories"
966+ , "external-sort"
967+ , "ez-couch"
968+ , "faceted"
969+ , "factual-api"
970+ , "FailureT"
971+ , "fallingblocks"
972+ , "falling-turnip"
973+ , "fastirc"
974+ , "fast-tags"
975+ , "fault-tree"
976+ , "fay-hsx"
977+ , "fcd"
978+ , "fckeditor"
979+ , "FComp"
980+ , "fdo-trash"
981+ , "feed2lj"
982+ , "feed2twitter"
983+ , "feed-cli"
984+ , "feldspar-compiler"
985+ , "feldspar-language"
986+ , "fences"
987+ , "fenfire"
988+ , "FermatsLastMargin"
989+ , "FerryCore"
990+ , "ffeed"
991+ , "ffmpeg-tutorials"
992+ , "fibon"
993+ , "fields"
994+ , "FieldTrip"
995+ , "fieldwise"
996+ , "FileManip"
997+ , "FileManipCompat"
998+ , "FileSystem"
999+ , "filesystem-conduit"
1000+ , "filesystem-enumerator"
1001+ , "Finance-Quote-Yahoo"
1002+ , "Finance-Treasury"
1003+ , "find-conduit"
1004+ , "FiniteMap"
1005+ , "firstify"
1006+ , "FirstOrderTheory"
1007+ , "fit"
1008+ , "fitsio"
1009+ , "fixed-point"
1010+ , "fixed-point-vector"
1011+ , "fixed-point-vector-space"
1012+ , "fixed-precision"
1013+ , "fixed-storable-array"
1014+ , "fix-parser-simple"
1015+ , "fixplate"
1016+ , "fix-symbols-gitit"
1017+ , "flexiwrap"
1018+ , "flexiwrap-smallcheck"
1019+ , "flickr"
1020+ , "Flippi"
1021+ , "flite"
1022+ , "flo"
1023+ , "floating-bits"
1024+ , "flow2dot"
1025+ , "flowdock-api"
1026+ , "flower"
1027+ , "flowlocks-framework"
1028+ , "flowsim"
1029+ , "FModExRaw"
1030+ , "FM-SBLEX"
1031+ , "foldl-incremental"
1032+ , "folds"
1033+ , "folds-common"
1034+ , "follower"
1035+ , "Folly"
1036+ , "foma"
1037+ , "font-opengl-basic4x6"
1038+ , "foo"
1039+ , "forbidden-fruit"
1040+ , "fordo"
1041+ , "for-free"
1042+ , "formal"
1043+ , "format"
1044+ , "format-status"
1045+ , "forml"
1046+ , "formlets"
1047+ , "formlets-hsp"
1048+ , "ForSyDe"
1049+ , "forth-hll"
1050+ , "Foster"
1051+ , "fpco-api"
1052+ , "fpnla-examples"
1053+ , "FPretty"
1054+ , "frag"
1055+ , "franchise"
1056+ , "Frank"
1057+ , "free-game"
1058+ , "freekick2"
1059+ , "freenect"
1060+ , "free-operational"
1061+ , "freesect"
1062+ , "freesound"
1063+ , "free-theorems"
1064+ , "free-theorems-counterexamples"
1065+ , "free-theorems-seq"
1066+ , "free-theorems-seq-webui"
1067+ , "free-theorems-webui"
1068+ , "FreeTypeGL"
1069+ , "frp-arduino"
1070+ , "fs-events"
1071+ , "fsmActions"
1072+ , "fswatcher"
1073+ , "ftdi"
1074+ , "ftp-conduit"
1075+ , "ftshell"
1076+ , "full-sessions"
1077+ , "fullstop"
1078+ , "functional-arrow"
1079+ , "function-combine"
1080+ , "functor-apply"
1081+ , "functorm"
1082+ , "funion"
1083+ , "funsat"
1084+ , "future"
1085+ , "fuzzytime"
1086+ , "gact"
1087+ , "gameclock"
1088+ , "game-of-life"
1089+ , "Ganymede"
1090+ , "gc-monitoring-wai"
1091+ , "gdiff-ig"
1092+ , "gdiff-th"
1093+ , "geek"
1094+ , "geek-server"
1095+ , "gemstone"
1096+ , "gencheck"
1097+ , "gender"
1098+ , "genders"
1099+ , "general-prelude"
1100+ , "GeneralTicTacToe"
1101+ , "generators"
1102+ , "generic-church"
1103+ , "genericserialize"
1104+ , "generic-storable"
1105+ , "generic-xml"
1106+ , "genetics"
1107+ , "GenI"
1108+ , "geniconvert"
1109+ , "geni-gui"
1110+ , "geniserver"
1111+ , "geni-util"
1112+ , "GenSmsPdu"
1113+ , "geodetics"
1114+ , "GeoIp"
1115+ , "GeomPredicates-SSE"
1116+ , "getemx"
1117+ , "getflag"
1118+ , "ggtsTC"
1119+ , "ghc-dup"
1120+ , "ghc-events-analyze"
1121+ , "ghc-events-parallel"
1122+ , "ghc-exactprint"
1123+ , "ghci-haskeline"
1124+ , "ghci-ng"
1125+ , "ghclive"
1126+ , "ghc-parmake"
1127+ , "ghc-pkg-autofix"
1128+ , "ghc-pkg-lib"
1129+ , "ghc-server"
1130+ , "ghc-syb"
1131+ , "GHood"
1132+ , "ght"
1133+ , "ginsu"
1134+ , "gipeda"
1135+ , "gist"
1136+ , "git-all"
1137+ , "git-checklist"
1138+ , "git-date"
1139+ , "gitdo"
1140+ , "git-gpush"
1141+ , "gitlib-cross"
1142+ , "gitlib-libgit2"
1143+ , "gitlib-s3"
1144+ , "gitlib-utils"
1145+ , "git-monitor"
1146+ , "git-repair"
1147+ , "gitson"
1148+ , "glade"
1149+ , "gladexml-accessor"
1150+ , "GLFW-OGL"
1151+ , "glider-nlp"
1152+ , "global"
1153+ , "glome-hs"
1154+ , "GlomeTrace"
1155+ , "GlomeView"
1156+ , "gloss-devil"
1157+ , "gmap"
1158+ , "gmndl"
1159+ , "gnome-desktop"
1160+ , "gnome-keyring"
1161+ , "gnomevfs"
1162+ , "g-npm"
1163+ , "goa"
1164+ , "goatee"
1165+ , "goatee-gtk"
1166+ , "gofer-prelude"
1167+ , "google-drive"
1168+ , "google-html5-slide"
1169+ , "google-mail-filters"
1170+ , "googleplus"
1171+ , "GoogleSB"
1172+ , "google-search"
1173+ , "gopherbot"
1174+ , "gpah"
1175+ , "GPipe"
1176+ , "GPipe-Collada"
1177+ , "GPipe-Examples"
1178+ , "GPipe-TextureLoad"
1179+ , "gps"
1180+ , "gps2htmlReport"
1181+ , "GPX"
1182+ , "gpx-conduit"
1183+ , "grapefruit-examples"
1184+ , "grapefruit-frp"
1185+ , "grapefruit-records"
1186+ , "grapefruit-ui"
1187+ , "grapefruit-ui-gtk"
1188+ , "Graph500"
1189+ , "graphbuilder"
1190+ , "GraphHammer"
1191+ , "GraphHammer-examples"
1192+ , "graphicsFormats"
1193+ , "graphics-formats-collada"
1194+ , "graphicstools"
1195+ , "graph-rewriting"
1196+ , "graph-rewriting-cl"
1197+ , "graph-rewriting-gl"
1198+ , "graph-rewriting-lambdascope"
1199+ , "graph-rewriting-layout"
1200+ , "graph-rewriting-ski"
1201+ , "graph-rewriting-strategies"
1202+ , "graph-rewriting-trs"
1203+ , "graph-rewriting-ww"
1204+ , "graphtype"
1205+ , "graph-utils"
1206+ , "greencard"
1207+ , "greencard-lib"
1208+ , "greg-client"
1209+ , "Grempa"
1210+ , "gridland"
1211+ , "grm"
1212+ , "Grow"
1213+ , "GrowlNotify"
1214+ , "gruff"
1215+ , "gruff-examples"
1216+ , "gsl-random"
1217+ , "gsl-random-fu"
1218+ , "gsmenu"
1219+ , "gstreamer"
1220+ , "GTALib"
1221+ , "gtfs"
1222+ , "gtk2hs-cast-glade"
1223+ , "gtk2hs-cast-gnomevfs"
1224+ , "gtk2hs-cast-gtk"
1225+ , "gtk2hs-cast-gtkglext"
1226+ , "Gtk2hsGenerics"
1227+ , "gtk2hs-rpn"
1228+ , "gtk3-mac-integration"
1229+ , "gtkglext"
1230+ , "GtkGLTV"
1231+ , "gtkimageview"
1232+ , "gtk-mac-integration"
1233+ , "gtkrsync"
1234+ , "gtk-serialized-event"
1235+ , "gtk-toy"
1236+ , "guess-combinator"
1237+ , "GuiHaskell"
1238+ , "GuiTV"
1239+ , "h2048"
1240+ , "haar"
1241+ , "Hach"
1242+ , "hack2-handler-happstack-server"
1243+ , "hack2-handler-mongrel2-http"
1244+ , "hack2-handler-warp"
1245+ , "hack2-interface-wai"
1246+ , "hackage2hwn"
1247+ , "hackage2twitter"
1248+ , "hackage-mirror"
1249+ , "hackage-proxy"
1250+ , "hackage-server"
1251+ , "hackage-sparks"
1252+ , "hack-contrib"
1253+ , "hack-contrib-press"
1254+ , "hackernews"
1255+ , "hack-frontend-happstack"
1256+ , "hack-handler-epoll"
1257+ , "hack-handler-evhttp"
1258+ , "hack-handler-fastcgi"
1259+ , "hack-handler-happstack"
1260+ , "hack-handler-hyena"
1261+ , "hack-handler-kibro"
1262+ , "hack-handler-simpleserver"
1263+ , "HackMail"
1264+ , "hack-middleware-cleanpath"
1265+ , "hack-middleware-clientsession"
1266+ , "hack-middleware-jsonp"
1267+ , "hackport"
1268+ , "hactor"
1269+ , "haddock-leksah"
1270+ , "haddocset"
1271+ , "haggis"
1272+ , "Haggressive"
1273+ , "hairy"
1274+ , "hakaru"
1275+ , "hakismet"
1276+ , "hakyll-blaze-templates"
1277+ , "hakyll-contrib"
1278+ , "hakyll-contrib-links"
1279+ , "hakyll-convert"
1280+ , "hakyll-elm"
1281+ , "hakyll-R"
1282+ , "halberd"
1283+ , "HaLeX"
1284+ , "halfs"
1285+ , "halipeto"
1286+ , "halive"
1287+ , "hampp"
1288+ , "hamtmap"
1289+ , "hamusic"
1290+ , "handle-like"
1291+ , "hans"
1292+ , "hans-pcap"
1293+ , "happindicator"
1294+ , "happindicator3"
1295+ , "happraise"
1296+ , "HAppS-Data"
1297+ , "HAppSHelpers"
1298+ , "happs-hsp"
1299+ , "happs-hsp-template"
1300+ , "HAppS-IxSet"
1301+ , "HAppS-Server"
1302+ , "HAppS-State"
1303+ , "happstack-auth"
1304+ , "happstack-contrib"
1305+ , "happstack-data"
1306+ , "happstack-dlg"
1307+ , "happstack-facebook"
1308+ , "happstack-fay"
1309+ , "happstack-foundation"
1310+ , "happstack-heist"
1311+ , "happstack-helpers"
1312+ , "happstack-hsp"
1313+ , "happstack-ixset"
1314+ , "happstack-monad-peel"
1315+ , "happstack-plugins"
1316+ , "happstack-state"
1317+ , "happstack-util"
1318+ , "happstack-yui"
1319+ , "happs-tutorial"
1320+ , "HAppS-Util"
1321+ , "happybara"
1322+ , "happybara-webkit"
1323+ , "happybara-webkit-server"
1324+ , "harchive"
1325+ , "hark"
1326+ , "HARM"
1327+ , "HarmTrace"
1328+ , "HarmTrace-Base"
1329+ , "has"
1330+ , "hascal"
1331+ , "hascat"
1332+ , "hascat-lib"
1333+ , "hascat-setup"
1334+ , "hascat-system"
1335+ , "Haschoo"
1336+ , "HasGP"
1337+ , "hash"
1338+ , "hashable-generics"
1339+ , "hashed-storage"
1340+ , "Hashell"
1341+ , "hasim"
1342+ , "hask"
1343+ , "haskanoid"
1344+ , "haskarrow"
1345+ , "haskeem"
1346+ , "haskeline-class"
1347+ , "haskell2010"
1348+ , "haskell98"
1349+ , "haskell-aliyun"
1350+ , "haskell-awk"
1351+ , "haskell-bcrypt"
1352+ , "haskell-brainfuck"
1353+ , "haskell-cnc"
1354+ , "haskell-course-preludes"
1355+ , "haskelldb-connect-hdbc"
1356+ , "haskelldb-connect-hdbc-catchio-mtl"
1357+ , "haskelldb-connect-hdbc-catchio-tf"
1358+ , "haskelldb-connect-hdbc-catchio-transformers"
1359+ , "haskelldb-connect-hdbc-lifted"
1360+ , "haskelldb-dynamic"
1361+ , "haskelldb-hdbc"
1362+ , "haskelldb-hdbc-mysql"
1363+ , "haskelldb-hdbc-odbc"
1364+ , "haskelldb-hdbc-postgresql"
1365+ , "haskelldb-hdbc-sqlite3"
1366+ , "haskelldb-hsql"
1367+ , "haskelldb-hsql-mysql"
1368+ , "haskelldb-hsql-odbc"
1369+ , "haskelldb-hsql-postgresql"
1370+ , "haskelldb-hsql-sqlite3"
1371+ , "haskelldb-wx"
1372+ , "haskell-docs"
1373+ , "haskell-formatter"
1374+ , "haskell-ftp"
1375+ , "haskell-in-space"
1376+ , "haskell-neo4j-client"
1377+ , "HaskellNN"
1378+ , "Haskelloids"
1379+ , "haskell-openflow"
1380+ , "haskell-pdf-presenter"
1381+ , "haskell-platform-test"
1382+ , "haskell-plot"
1383+ , "haskell-reflect"
1384+ , "haskell-rules"
1385+ , "haskellscrabble"
1386+ , "haskell-src-meta-mwotton"
1387+ , "HaskellTorrent"
1388+ , "haskell-type-exts"
1389+ , "haskell-tyrant"
1390+ , "haskell-xmpp"
1391+ , "haskelm"
1392+ , "haskgame"
1393+ , "haskheap"
1394+ , "haskhol-core"
1395+ , "hask-home"
1396+ , "haskmon"
1397+ , "haskoin"
1398+ , "haskoin-crypto"
1399+ , "haskoin-protocol"
1400+ , "haskoin-script"
1401+ , "haskoin-util"
1402+ , "haskoin-wallet"
1403+ , "haskoon"
1404+ , "haskoon-httpspec"
1405+ , "haskoon-salvia"
1406+ , "haskore"
1407+ , "haskore-realtime"
1408+ , "haskore-supercollider"
1409+ , "haskore-synthesizer"
1410+ , "haskore-vintage"
1411+ , "haslo"
1412+ , "hasloGUI"
1413+ , "hasparql-client"
1414+ , "hastache-aeson"
1415+ , "haste-compiler"
1416+ , "haste-perch"
1417+ , "has-th"
1418+ , "hatex-guide"
1419+ , "HaTeX-meta"
1420+ , "haverer"
1421+ , "HaVSA"
1422+ , "hawitter"
1423+ , "Hawk"
1424+ , "haxparse"
1425+ , "hayland"
1426+ , "Hayoo"
1427+ , "hayoo-cli"
1428+ , "hback"
1429+ , "hbayes"
1430+ , "hBDD-CMUBDD"
1431+ , "hBDD-CUDD"
1432+ , "hbeat"
1433+ , "hblas"
1434+ , "hblock"
1435+ , "h-booru"
1436+ , "hburg"
1437+ , "HCard"
1438+ , "hcheat"
1439+ , "hchesslib"
1440+ , "HCL"
1441+ , "hcron"
1442+ , "hCsound"
1443+ , "hcube"
1444+ , "hcwiid"
1445+ , "hdaemonize-buildfix"
1446+ , "HDBC-mysql"
1447+ , "hdbi"
1448+ , "hdbi-conduit"
1449+ , "hdbi-postgresql"
1450+ , "hdbi-sqlite"
1451+ , "hdbi-tests"
1452+ , "hDFA"
1453+ , "hdigest"
1454+ , "hdirect"
1455+ , "hdis86"
1456+ , "hdiscount"
1457+ , "hdm"
1458+ , "hdph"
1459+ , "hdph-closure"
1460+ , "HDRUtils"
1461+ , "hecc"
1462+ , "Hedi"
1463+ , "hedn"
1464+ , "heist-aeson"
1465+ , "helics"
1466+ , "helics-wai"
1467+ , "helium"
1468+ , "hell"
1469+ , "hellage"
1470+ , "hellnet"
1471+ , "helm"
1472+ , "hemkay"
1473+ , "hemokit"
1474+ , "hen"
1475+ , "henet"
1476+ , "hepevt"
1477+ , "HERA"
1478+ , "herbalizer"
1479+ , "her-lexer"
1480+ , "her-lexer-parsec"
1481+ , "Hermes"
1482+ , "hermit"
1483+ , "hermit-syb"
1484+ , "herringbone"
1485+ , "herringbone-embed"
1486+ , "herringbone-wai"
1487+ , "hesql"
1488+ , "hetris"
1489+ , "heukarya"
1490+ , "hevolisa"
1491+ , "hevolisa-dph"
1492+ , "hexpat-iteratee"
1493+ , "hexpat-pickle-generic"
1494+ , "hexquote"
1495+ , "hF2"
1496+ , "hfann"
1497+ , "hfd"
1498+ , "hfiar"
1499+ , "hfractal"
1500+ , "hfsevents"
1501+ , "hfusion"
1502+ , "hgalib"
1503+ , "HGamer3D"
1504+ , "HGamer3D-API"
1505+ , "HGamer3D-Audio"
1506+ , "HGamer3D-CAudio-Binding"
1507+ , "HGamer3D-CEGUI-Binding"
1508+ , "HGamer3D-Enet-Binding"
1509+ , "HGamer3D-Graphics3D"
1510+ , "HGamer3D-GUI"
1511+ , "HGamer3D-InputSystem"
1512+ , "HGamer3D-Network"
1513+ , "HGamer3D-Ogre-Binding"
1514+ , "HGamer3D-OIS-Binding"
1515+ , "HGamer3D-SDL2-Binding"
1516+ , "HGamer3D-SFML-Binding"
1517+ , "HGamer3D-WinEvent"
1518+ , "HGamer3D-Wire"
1519+ , "hg-buildpackage"
1520+ , "hgen"
1521+ , "hgeometric"
1522+ , "hgithub"
1523+ , "HGL"
1524+ , "hgom"
1525+ , "h-gpgme"
1526+ , "HGraphStorage"
1527+ , "hharp"
1528+ , "HHDL"
1529+ , "hiccup"
1530+ , "hichi"
1531+ , "hieraclus"
1532+ , "hierarchical-clustering-diagrams"
1533+ , "hiernotify"
1534+ , "Hieroglyph"
1535+ , "HiggsSet"
1536+ , "higherorder"
1537+ , "highWaterMark"
1538+ , "himg"
1539+ , "himpy"
1540+ , "hinduce-classifier"
1541+ , "hinduce-classifier-decisiontree"
1542+ , "hinduce-examples"
1543+ , "hinvaders"
1544+ , "hinze-streams"
1545+ , "hipbot"
1546+ , "hircules"
1547+ , "hirt"
1548+ , "hissmetrics"
1549+ , "historian"
1550+ , "hist-pl"
1551+ , "hist-pl-fusion"
1552+ , "hist-pl-lmf"
1553+ , "hjs"
1554+ , "HJVM"
1555+ , "hlatex"
1556+ , "hlbfgsb"
1557+ , "hlcm"
1558+ , "HLearn-algebra"
1559+ , "HLearn-datastructures"
1560+ , "hledger-chart"
1561+ , "hledger-vty"
1562+ , "hlibev"
1563+ , "hlibfam"
1564+ , "HListPP"
1565+ , "hlogger"
1566+ , "HLogger"
1567+ , "hly"
1568+ , "HMap"
1569+ , "hmark"
1570+ , "hmarkup"
1571+ , "hmatrix-banded"
1572+ , "hmatrix-gsl-stats"
1573+ , "hmatrix-quadprogpp"
1574+ , "hmatrix-static"
1575+ , "hmatrix-syntax"
1576+ , "hmatrix-tests"
1577+ , "hmeap"
1578+ , "hmeap-utils"
1579+ , "hmenu"
1580+ , "hmk"
1581+ , "HMM"
1582+ , "hmm-hmatrix"
1583+ , "hMollom"
1584+ , "hmp3"
1585+ , "Hmpf"
1586+ , "hmpfr"
1587+ , "hmumps"
1588+ , "HNM"
1589+ , "hnn"
1590+ , "hoauth"
1591+ , "hob"
1592+ , "hobbes"
1593+ , "hobbits"
1594+ , "HODE"
1595+ , "hofix-mtl"
1596+ , "hog"
1597+ , "hogg"
1598+ , "hogre"
1599+ , "hogre-examples"
1600+ , "hois"
1601+ , "hole"
1602+ , "holey-format"
1603+ , "Holumbus-Distribution"
1604+ , "Holumbus-MapReduce"
1605+ , "Holumbus-Searchengine"
1606+ , "Holumbus-Storage"
1607+ , "homeomorphic"
1608+ , "hommage"
1609+ , "hommage-ds"
1610+ , "HongoDB"
1611+ , "honi"
1612+ , "hoodie"
1613+ , "hoodle"
1614+ , "hoodle-builder"
1615+ , "hoodle-core"
1616+ , "hoodle-extra"
1617+ , "hoodle-parser"
1618+ , "hoodle-publish"
1619+ , "hoodle-render"
1620+ , "hoodle-types"
1621+ , "hood-off"
1622+ , "hoovie"
1623+ , "hopencc"
1624+ , "hopencl"
1625+ , "hOpenPGP"
1626+ , "hopfield"
1627+ , "hoq"
1628+ , "hosts-server"
1629+ , "hotswap"
1630+ , "hp2any-core"
1631+ , "hp2any-graph"
1632+ , "hp2any-manager"
1633+ , "hpage"
1634+ , "hpapi"
1635+ , "hpaste"
1636+ , "hpasteit"
1637+ , "HPath"
1638+ , "hpc-coveralls"
1639+ , "hpc-tracer"
1640+ , "hPDB-examples"
1641+ , "HPDF"
1642+ , "hplayground"
1643+ , "hplaylist"
1644+ , "HPlot"
1645+ , "hpodder"
1646+ , "HPong"
1647+ , "hprotoc-fork"
1648+ , "hps-cairo"
1649+ , "hpygments"
1650+ , "hpylos"
1651+ , "hR"
1652+ , "hranker"
1653+ , "HRay"
1654+ , "Hricket"
1655+ , "HROOT"
1656+ , "HROOT-core"
1657+ , "HROOT-graf"
1658+ , "HROOT-hist"
1659+ , "HROOT-io"
1660+ , "HROOT-math"
1661+ , "hs2bf"
1662+ , "hs2dot"
1663+ , "Hs2lib"
1664+ , "hsbackup"
1665+ , "hsc2hs"
1666+ , "hsc3-cairo"
1667+ , "hsc3-data"
1668+ , "hsc3-forth"
1669+ , "hsc3-graphs"
1670+ , "hsc3-lang"
1671+ , "hsc3-lisp"
1672+ , "hsc3-plot"
1673+ , "hsc3-rec"
1674+ , "hsc3-server"
1675+ , "hsc3-unsafe"
1676+ , "hscamwire"
1677+ , "hs-carbon-examples"
1678+ , "hscassandra"
1679+ , "hs-cdb"
1680+ , "hsclock"
1681+ , "hscurses-fish-ex"
1682+ , "hsdip"
1683+ , "hsdns-cache"
1684+ , "hs-dotnet"
1685+ , "Hsed"
1686+ , "hsfacter"
1687+ , "HSFFIG"
1688+ , "hs-ffmpeg"
1689+ , "hs-fltk"
1690+ , "hs-gchart"
1691+ , "hs-GeoIP"
1692+ , "HSGEP"
1693+ , "hsgnutls"
1694+ , "hsgnutls-yj"
1695+ , "hsgsom"
1696+ , "HsHaruPDF"
1697+ , "HSHHelpers"
1698+ , "HsHyperEstraier"
1699+ , "hsignal"
1700+ , "hSimpleDB"
1701+ , "hs-java"
1702+ , "hs-json-rpc"
1703+ , "HsJudy"
1704+ , "hskeleton"
1705+ , "hslackbuilder"
1706+ , "hslibsvm"
1707+ , "hslogger4j"
1708+ , "hs-logo"
1709+ , "hslogstash"
1710+ , "hsmagick"
1711+ , "HSmarty"
1712+ , "hs-mesos"
1713+ , "Hsmtlib"
1714+ , "hsmtpclient"
1715+ , "hsndfile-storablevector"
1716+ , "hsnock"
1717+ , "hs-nombre-generator"
1718+ , "hsns"
1719+ , "hsntp"
1720+ , "hsoptions"
1721+ , "HSoundFile"
1722+ , "hsparql"
1723+ , "HsParrot"
1724+ , "hsp-cgi"
1725+ , "hspear"
1726+ , "hspec-experimental"
1727+ , "hspec-shouldbe"
1728+ , "HsPerl5"
1729+ , "hs-pgms"
1730+ , "hs-pkpass"
1731+ , "hspread"
1732+ , "hspresent"
1733+ , "hsprocess"
1734+ , "hsql-mysql"
1735+ , "hsqml-datamodel"
1736+ , "hsqml-demo-morris"
1737+ , "hsqml-demo-samples"
1738+ , "hsqml-morris"
1739+ , "hsSqlite3"
1740+ , "HsSVN"
1741+ , "hstatistics"
1742+ , "hstats"
1743+ , "hstest"
1744+ , "hstidy"
1745+ , "hstorchat"
1746+ , "hstradeking"
1747+ , "HStringTemplateHelpers"
1748+ , "hs-twitter"
1749+ , "hs-twitterarchiver"
1750+ , "hstyle"
1751+ , "hstzaar"
1752+ , "hsubconvert"
1753+ , "hs-vcard"
1754+ , "HSvm"
1755+ , "hswip"
1756+ , "hsx"
1757+ , "hsXenCtrl"
1758+ , "hsx-jmacro"
1759+ , "hsx-xhtml"
1760+ , "hsyscall"
1761+ , "hszephyr"
1762+ , "HTab"
1763+ , "hTalos"
1764+ , "hTensor"
1765+ , "HTicTacToe"
1766+ , "html-entities"
1767+ , "htoml"
1768+ , "htsn-import"
1769+ , "http-client-request-modifiers"
1770+ , "http-conduit-browser"
1771+ , "http-conduit-downloader"
1772+ , "http-enumerator"
1773+ , "http-monad"
1774+ , "http-proxy"
1775+ , "https-everywhere-rules"
1776+ , "http-shed"
1777+ , "HTTP-Simple"
1778+ , "httpspec"
1779+ , "http-test"
1780+ , "htune"
1781+ , "hubris"
1782+ , "hugs2yc"
1783+ , "hulk"
1784+ , "hums"
1785+ , "HUnit-Diff"
1786+ , "hunit-gui"
1787+ , "HUnit-Plus"
1788+ , "hunit-rematch"
1789+ , "hunt-searchengine"
1790+ , "hurdle"
1791+ , "husk-scheme"
1792+ , "husk-scheme-libs"
1793+ , "husky"
1794+ , "hutton"
1795+ , "huzzy"
1796+ , "hVOIDP"
1797+ , "hws"
1798+ , "HXMPP"
1799+ , "hxmppc"
1800+ , "hxournal"
1801+ , "HXQ"
1802+ , "hxt-binary"
1803+ , "hxt-filter"
1804+ , "hxthelper"
1805+ , "hxweb"
1806+ , "hybrid"
1807+ , "hydra-hs"
1808+ , "hydrogen-cli-args"
1809+ , "hydrogen-data"
1810+ , "hydrogen-parsing"
1811+ , "hydrogen-prelude"
1812+ , "hydrogen-prelude-parsec"
1813+ , "hydrogen-util"
1814+ , "hyena"
1815+ , "hylolib"
1816+ , "hylotab"
1817+ , "hyloutils"
1818+ , "hyperdrive"
1819+ , "hyperpublic"
1820+ , "hypher"
1821+ , "i18n"
1822+ , "iban"
1823+ , "ideas"
1824+ , "ideas-math"
1825+ , "ide-backend-server"
1826+ , "idiii"
1827+ , "idna2008"
1828+ , "IDynamic"
1829+ , "ieee-utils"
1830+ , "iException"
1831+ , "IFS"
1832+ , "ige-mac-integration"
1833+ , "igraph"
1834+ , "ihaskell"
1835+ , "ihaskell-aeson"
1836+ , "ihaskell-basic"
1837+ , "ihaskell-blaze"
1838+ , "ihaskell-charts"
1839+ , "ihaskell-display"
1840+ , "ihaskell-hatex"
1841+ , "ihaskell-juicypixels"
1842+ , "ihaskell-magic"
1843+ , "ihaskell-parsec"
1844+ , "ihaskell-plot"
1845+ , "ihaskell-rlangqq"
1846+ , "ihttp"
1847+ , "illuminate"
1848+ , "imagepaste"
1849+ , "imbib"
1850+ , "imgurder"
1851+ , "imm"
1852+ , "imparse"
1853+ , "ImperativeHaskell"
1854+ , "implicit"
1855+ , "improve"
1856+ , "INblobs"
1857+ , "inch"
1858+ , "include-file"
1859+ , "incremental-computing"
1860+ , "incremental-sat-solver"
1861+ , "increments"
1862+ , "index-core"
1863+ , "indices"
1864+ , "infer-upstream"
1865+ , "infinity"
1866+ , "infix"
1867+ , "InfixApplicative"
1868+ , "inflist"
1869+ , "informative"
1870+ , "inilist"
1871+ , "instant-zipper"
1872+ , "integer-pure"
1873+ , "intel-aes"
1874+ , "interleavableGen"
1875+ , "interleavableIO"
1876+ , "internetmarke"
1877+ , "interpolatedstring-qq"
1878+ , "interpolatedstring-qq-mwotton"
1879+ , "intricacy"
1880+ , "intset"
1881+ , "IOR"
1882+ , "io-reactive"
1883+ , "IORefCAS"
1884+ , "iotransaction"
1885+ , "ipatch"
1886+ , "ipc"
1887+ , "ipopt-hs"
1888+ , "iptables-helpers"
1889+ , "iptadmin"
1890+ , "Irc"
1891+ , "ircbouncer"
1892+ , "ireal"
1893+ , "IrrHaskell"
1894+ , "isevaluated"
1895+ , "ismtp"
1896+ , "iteratee"
1897+ , "iteratee-compress"
1898+ , "iteratee-parsec"
1899+ , "iteratee-stm"
1900+ , "iterIO"
1901+ , "iterio-server"
1902+ , "iter-stats"
1903+ , "ivor"
1904+ , "ivory"
1905+ , "ivory-opts"
1906+ , "ivory-quickcheck"
1907+ , "ivory-stdlib"
1908+ , "ivy-web"
1909+ , "ixdopp"
1910+ , "ixset-typed"
1911+ , "iyql"
1912+ , "j2hs"
1913+ , "jack-bindings"
1914+ , "jackminimix"
1915+ , "JackMiniMix"
1916+ , "jalla"
1917+ , "jammittools"
1918+ , "jarfind"
1919+ , "java-bridge"
1920+ , "java-bridge-extras"
1921+ , "java-reflect"
1922+ , "javasf"
1923+ , "Javasf"
1924+ , "javav"
1925+ , "Javav"
1926+ , "jespresso"
1927+ , "jobqueue"
1928+ , "join"
1929+ , "joinlist"
1930+ , "jonathanscard"
1931+ , "jort"
1932+ , "jsc"
1933+ , "JsContracts"
1934+ , "js-good-parts"
1935+ , "jsmw"
1936+ , "json2"
1937+ , "json2-hdbc"
1938+ , "json-b"
1939+ , "JSONb"
1940+ , "JSON-Combinator"
1941+ , "JSON-Combinator-Examples"
1942+ , "json-enumerator"
1943+ , "JsonGrammar"
1944+ , "json-qq"
1945+ , "jsonresume"
1946+ , "json-rpc"
1947+ , "json-tools"
1948+ , "jspath"
1949+ , "judy"
1950+ , "JuicyPixels-repa"
1951+ , "JunkDB-driver-gdbm"
1952+ , "JYU-Utils"
1953+ , "kangaroo"
1954+ , "kansas-comet"
1955+ , "kansas-lava"
1956+ , "kansas-lava-cores"
1957+ , "kansas-lava-papilio"
1958+ , "kansas-lava-shake"
1959+ , "katt"
1960+ , "keera-hails-mvc-model-lightmodel"
1961+ , "keera-hails-reactive-fs"
1962+ , "keera-posture"
1963+ , "keiretsu"
1964+ , "Ketchup"
1965+ , "kevin"
1966+ , "keyring"
1967+ , "keystore"
1968+ , "kibro"
1969+ , "kicad-data"
1970+ , "kickass-torrents-dump-parser"
1971+ , "KiCS"
1972+ , "KiCS-debugger"
1973+ , "KiCS-prophecy"
1974+ , "kif-parser"
1975+ , "kit"
1976+ , "kmeans-par"
1977+ , "koellner-phonetic"
1978+ , "Konf"
1979+ , "korfu"
1980+ , "kqueue"
1981+ , "kure-your-boilerplate"
1982+ , "KyotoCabinet"
1983+ , "labeled-graph"
1984+ , "labyrinth"
1985+ , "labyrinth-server"
1986+ , "laika"
1987+ , "lambda2js"
1988+ , "lambdaBase"
1989+ , "lambdabot-utils"
1990+ , "lambda-bridge"
1991+ , "LambdaCalculator"
1992+ , "lambdacat"
1993+ , "lambdacube"
1994+ , "lambdacube-bullet"
1995+ , "lambdacube-engine"
1996+ , "lambdacube-examples"
1997+ , "lambdacube-samples"
1998+ , "lambda-devs"
1999+ , "lambdaFeed"
2000+ , "LambdaINet"
2001+ , "lambdaLit"
2002+ , "LambdaPrettyQuote"
2003+ , "LambdaShell"
2004+ , "lambda-toolbox"
2005+ , "lambdatwit"
2006+ , "lambdiff"
2007+ , "lame-tester"
2008+ , "language-bash"
2009+ , "language-boogie"
2010+ , "language-c-comments"
2011+ , "language-c-inline"
2012+ , "language-eiffel"
2013+ , "language-go"
2014+ , "language-java-classfile"
2015+ , "language-mixal"
2016+ , "language-objc"
2017+ , "language-puppet"
2018+ , "language-python-colour"
2019+ , "language-sh"
2020+ , "language-spelling"
2021+ , "language-sqlite"
2022+ , "language-thrift"
2023+ , "Lastik"
2024+ , "lat"
2025+ , "latest-npm-version"
2026+ , "Lattices"
2027+ , "layers"
2028+ , "layout"
2029+ , "layout-bootstrap"
2030+ , "lazyarray"
2031+ , "lazysplines"
2032+ , "l-bfgs-b"
2033+ , "lcs"
2034+ , "ldap-client"
2035+ , "ldif"
2036+ , "leaf"
2037+ , "leaky"
2038+ , "learn-physics"
2039+ , "learn-physics-examples"
2040+ , "leksah"
2041+ , "Level0"
2042+ , "leveldb-haskell-fork"
2043+ , "levmar-chart"
2044+ , "lgtk"
2045+ , "lha"
2046+ , "lhae"
2047+ , "lhe"
2048+ , "LibClang"
2049+ , "libcspm"
2050+ , "libexpect"
2051+ , "libGenI"
2052+ , "libhbb"
2053+ , "libjenkins"
2054+ , "libltdl"
2055+ , "liboleg"
2056+ , "libpafe"
2057+ , "libpq"
2058+ , "libssh2-conduit"
2059+ , "libsystemd-daemon"
2060+ , "libvirt-hs"
2061+ , "libxml"
2062+ , "libxslt"
2063+ , "lifter"
2064+ , "lighttpd-conf"
2065+ , "lighttpd-conf-qq"
2066+ , "lilypond"
2067+ , "Limit"
2068+ , "limp-cbc"
2069+ , "lin-alg"
2070+ , "linear-algebra-cblas"
2071+ , "linear-maps"
2072+ , "linearscan"
2073+ , "linearscan-hoopl"
2074+ , "LinearSplit"
2075+ , "LinkChecker"
2076+ , "linkchk"
2077+ , "linkcore"
2078+ , "linux-blkid"
2079+ , "linux-kmod"
2080+ , "linux-perf"
2081+ , "linux-ptrace"
2082+ , "lio-eci11"
2083+ , "lio-simple"
2084+ , "liquid-fixpoint"
2085+ , "liquidhaskell"
2086+ , "listlike-instances"
2087+ , "list-t-html-parser"
2088+ , "ListTree"
2089+ , "literals"
2090+ , "live-sequencer"
2091+ , "ll-picosat"
2092+ , "llsd"
2093+ , "llvm-ffi"
2094+ , "llvm-general-quote"
2095+ , "llvm-ht"
2096+ , "local-search"
2097+ , "loch"
2098+ , "log2json"
2099+ , "log-effect"
2100+ , "logic-classes"
2101+ , "LogicGrowsOnTrees"
2102+ , "LogicGrowsOnTrees-MPI"
2103+ , "LogicGrowsOnTrees-network"
2104+ , "LogicGrowsOnTrees-processes"
2105+ , "lojban"
2106+ , "lojbanParser"
2107+ , "lojbanXiragan"
2108+ , "lojysamban"
2109+ , "loli"
2110+ , "loop-effin"
2111+ , "loopy"
2112+ , "lord"
2113+ , "loris"
2114+ , "lostcities"
2115+ , "lscabal"
2116+ , "L-seed"
2117+ , "LslPlus"
2118+ , "ls-usb"
2119+ , "lsystem"
2120+ , "luachunk"
2121+ , "luautils"
2122+ , "lucienne"
2123+ , "Lucu"
2124+ , "lui"
2125+ , "luka"
2126+ , "luthor"
2127+ , "lvish"
2128+ , "lvmlib"
2129+ , "lye"
2130+ , "maam"
2131+ , "mage"
2132+ , "MagicHaskeller"
2133+ , "magma"
2134+ , "mahoro"
2135+ , "majordomo"
2136+ , "majority"
2137+ , "manatee"
2138+ , "manatee-anything"
2139+ , "manatee-browser"
2140+ , "manatee-core"
2141+ , "manatee-curl"
2142+ , "manatee-editor"
2143+ , "manatee-filemanager"
2144+ , "manatee-imageviewer"
2145+ , "manatee-mplayer"
2146+ , "manatee-pdfviewer"
2147+ , "manatee-processmanager"
2148+ , "manatee-reader"
2149+ , "manatee-template"
2150+ , "manatee-terminal"
2151+ , "manatee-welcome"
2152+ , "mandulia"
2153+ , "mangopay"
2154+ , "manifolds"
2155+ , "marionetta"
2156+ , "markdown2svg"
2157+ , "markdown-kate"
2158+ , "markdown-pap"
2159+ , "markov-processes"
2160+ , "markup-preview"
2161+ , "marmalade-upload"
2162+ , "marquise"
2163+ , "marxup"
2164+ , "masakazu-bot"
2165+ , "matchers"
2166+ , "mathblog"
2167+ , "mathgenealogy"
2168+ , "mathlink"
2169+ , "matlab"
2170+ , "matsuri"
2171+ , "maude"
2172+ , "maxent"
2173+ , "maxsharing"
2174+ , "maybench"
2175+ , "MaybeT-monads-tf"
2176+ , "MaybeT-transformers"
2177+ , "MazesOfMonad"
2178+ , "mbox-tools"
2179+ , "MC-Fold-DP"
2180+ , "mcmc-samplers"
2181+ , "mdcat"
2182+ , "Measure"
2183+ , "mecab"
2184+ , "mediawiki"
2185+ , "mediawiki2latex"
2186+ , "mega-sdist"
2187+ , "melody"
2188+ , "memo-sqlite"
2189+ , "MetaObject"
2190+ , "meta-par-accelerate"
2191+ , "metaplug"
2192+ , "metric"
2193+ , "Metrics"
2194+ , "metronome"
2195+ , "MFlow"
2196+ , "Mhailist"
2197+ , "MHask"
2198+ , "microformats2-parser"
2199+ , "mida"
2200+ , "midisurface"
2201+ , "mighttpd"
2202+ , "milena"
2203+ , "mime-directory"
2204+ , "mime-string"
2205+ , "minesweeper"
2206+ , "MiniAgda"
2207+ , "miniball"
2208+ , "miniforth"
2209+ , "minimung"
2210+ , "minioperational"
2211+ , "miniplex"
2212+ , "minirotate"
2213+ , "ministg"
2214+ , "mirror-tweet"
2215+ , "MissingPy"
2216+ , "missing-py2"
2217+ , "mix-arrows"
2218+ , "mkbndl"
2219+ , "mlist"
2220+ , "ml-w"
2221+ , "mmtl"
2222+ , "mmtl-base"
2223+ , "moan"
2224+ , "modelicaparser"
2225+ , "modsplit"
2226+ , "modular-prelude"
2227+ , "modular-prelude-classy"
2228+ , "module-management"
2229+ , "mohws"
2230+ , "monad-abort-fd"
2231+ , "monadacme"
2232+ , "monad-atom"
2233+ , "monad-atom-simple"
2234+ , "monad-bool"
2235+ , "MonadCatchIO-mtl-foreign"
2236+ , "MonadCatchIO-transformers-foreign"
2237+ , "monad-exception"
2238+ , "monadiccp"
2239+ , "monadiccp-gecode"
2240+ , "monad-interleave"
2241+ , "MonadLab"
2242+ , "monad-levels"
2243+ , "monad-lrs"
2244+ , "monad-memo"
2245+ , "monad-mersenne-random"
2246+ , "monad-ran"
2247+ , "MonadRandomLazy"
2248+ , "monad-stlike-io"
2249+ , "monad-stlike-stm"
2250+ , "monad-tx"
2251+ , "monad-unify"
2252+ , "monarch"
2253+ , "Monaris"
2254+ , "Monatron"
2255+ , "Monatron-IO"
2256+ , "mongodb-queue"
2257+ , "mongrel2-handler"
2258+ , "Monocle"
2259+ , "mono-foldable"
2260+ , "monoid-owns"
2261+ , "monoidplus"
2262+ , "monoids"
2263+ , "monte-carlo"
2264+ , "moo"
2265+ , "morfette"
2266+ , "morfeusz"
2267+ , "mosaico-lib"
2268+ , "mount"
2269+ , "mp3decoder"
2270+ , "mpdmate"
2271+ , "mpppc"
2272+ , "mpretty"
2273+ , "mprover"
2274+ , "mps"
2275+ , "mpvguihs"
2276+ , "mqtt-hs"
2277+ , "msgpack-idl"
2278+ , "mtgoxapi"
2279+ , "mtl-tf"
2280+ , "mtlx"
2281+ , "mtp"
2282+ , "mudbath"
2283+ , "multifocal"
2284+ , "multipass"
2285+ , "multiplate-simplified"
2286+ , "multirec-alt-deriver"
2287+ , "multirec-binary"
2288+ , "multisetrewrite"
2289+ , "murder"
2290+ , "murmurhash3"
2291+ , "musicbrainz-email"
2292+ , "music-graphics"
2293+ , "music-parts"
2294+ , "music-preludes"
2295+ , "music-score"
2296+ , "music-sibelius"
2297+ , "music-suite"
2298+ , "music-util"
2299+ , "musicxml"
2300+ , "mustache2hs"
2301+ , "mutable-iter"
2302+ , "mvclient"
2303+ , "mvc-updates"
2304+ , "myo"
2305+ , "mysnapsession"
2306+ , "mysnapsession-example"
2307+ , "mysql-simple-quasi"
2308+ , "mysql-simple-typed"
2309+ , "myTestlll"
2310+ , "mzv"
2311+ , "nagios-plugin-ekg"
2312+ , "named-lock"
2313+ , "nanoAgda"
2314+ , "nano-cryptr"
2315+ , "nanocurses"
2316+ , "nano-hmac"
2317+ , "nano-md5"
2318+ , "nanomsg-haskell"
2319+ , "narc"
2320+ , "nats-queue"
2321+ , "natural-number"
2322+ , "neat"
2323+ , "needle"
2324+ , "nerf"
2325+ , "nero"
2326+ , "nero-wai"
2327+ , "nero-warp"
2328+ , "netcore"
2329+ , "netlines"
2330+ , "NetSNMP"
2331+ , "netspec"
2332+ , "nettle"
2333+ , "nettle-frp"
2334+ , "nettle-netkit"
2335+ , "nettle-openflow"
2336+ , "network-address"
2337+ , "network-anonymous-i2p"
2338+ , "network-builder"
2339+ , "network-bytestring"
2340+ , "network-connection"
2341+ , "network-house"
2342+ , "network-minihttp"
2343+ , "network-rpca"
2344+ , "network-server"
2345+ , "network-simple-tls"
2346+ , "network-topic-models"
2347+ , "network-transport-amqp"
2348+ , "network-websocket"
2349+ , "newports"
2350+ , "newsynth"
2351+ , "newt"
2352+ , "newtype-th"
2353+ , "NGrams"
2354+ , "nibblestring"
2355+ , "nikepub"
2356+ , "Ninjas"
2357+ , "nitro"
2358+ , "nixos-types"
2359+ , "nkjp"
2360+ , "nm"
2361+ , "nme"
2362+ , "nntp"
2363+ , "noise"
2364+ , "Nomyx"
2365+ , "Nomyx-Core"
2366+ , "Nomyx-Language"
2367+ , "Nomyx-Rules"
2368+ , "Nomyx-Web"
2369+ , "nondeterminism"
2370+ , "NonEmptyList"
2371+ , "noodle"
2372+ , "NoSlow"
2373+ , "not-gloss-examples"
2374+ , "notmuch-haskell"
2375+ , "notmuch-web"
2376+ , "np-linear"
2377+ , "nptools"
2378+ , "nthable"
2379+ , "null-canvas"
2380+ , "NumberSieves"
2381+ , "numerals"
2382+ , "numerals-base"
2383+ , "numeric-qq"
2384+ , "nums"
2385+ , "Nussinov78"
2386+ , "nvim-hs"
2387+ , "NXT"
2388+ , "NXTDSL"
2389+ , "nymphaea"
2390+ , "oberon0"
2391+ , "obj"
2392+ , "Object"
2393+ , "ObjectIO"
2394+ , "octopus"
2395+ , "oculus"
2396+ , "ofx"
2397+ , "OGL"
2398+ , "ohloh-hs"
2399+ , "oi"
2400+ , "ois-input-manager"
2401+ , "omaketex"
2402+ , "omega"
2403+ , "Omega"
2404+ , "omnicodec"
2405+ , "on-a-horse"
2406+ , "one-liner"
2407+ , "oneormore"
2408+ , "onu-course"
2409+ , "OpenAFP"
2410+ , "OpenAFP-Utils"
2411+ , "OpenCL"
2412+ , "OpenCLRaw"
2413+ , "opencv-raw"
2414+ , "openexchangerates"
2415+ , "openflow"
2416+ , "OpenGLCheck"
2417+ , "opengles"
2418+ , "openid"
2419+ , "open-pandoc"
2420+ , "openpgp-Crypto"
2421+ , "openpgp-crypto-api"
2422+ , "OpenSCAD"
2423+ , "openssh-github-keys"
2424+ , "opentheory-char"
2425+ , "open-union"
2426+ , "OpenVG"
2427+ , "OpenVGRaw"
2428+ , "open-witness"
2429+ , "Operads"
2430+ , "optimusprime"
2431+ , "OrchestrateDB"
2432+ , "orchid"
2433+ , "orchid-demo"
2434+ , "order-maintenance"
2435+ , "orgmode-parse"
2436+ , "origami"
2437+ , "OSM"
2438+ , "osm-download"
2439+ , "ot"
2440+ , "package-vt"
2441+ , "packedstring"
2442+ , "PageIO"
2443+ , "panda"
2444+ , "PandocAgda"
2445+ , "pandoc-unlit"
2446+ , "papillon"
2447+ , "pappy"
2448+ , "paragon"
2449+ , "Paraiso"
2450+ , "parallel-tasks"
2451+ , "parameterized-data"
2452+ , "parco"
2453+ , "parco-attoparsec"
2454+ , "parconc-examples"
2455+ , "parco-parsec"
2456+ , "Parry"
2457+ , "parsec2"
2458+ , "parse-help"
2459+ , "parsely"
2460+ , "parser-helper"
2461+ , "parsestar"
2462+ , "partial-lens"
2463+ , "partly"
2464+ , "passage"
2465+ , "pastis"
2466+ , "pasty"
2467+ , "Pathfinder"
2468+ , "pathfindingcore"
2469+ , "patterns"
2470+ , "paypal-api"
2471+ , "pb"
2472+ , "PCLT"
2473+ , "PCLT-DB"
2474+ , "pdynload"
2475+ , "peakachu"
2476+ , "pec"
2477+ , "peg"
2478+ , "penny"
2479+ , "penny-bin"
2480+ , "penny-lib"
2481+ , "peparser"
2482+ , "perdure"
2483+ , "PerfectHash"
2484+ , "perm"
2485+ , "permute"
2486+ , "PermuteEffects"
2487+ , "persistent-hssqlppp"
2488+ , "persistent-map"
2489+ , "persistent-protobuf"
2490+ , "pesca"
2491+ , "peyotls"
2492+ , "pez"
2493+ , "pgdl"
2494+ , "pg-harness"
2495+ , "pg-harness-server"
2496+ , "pgsql-simple"
2497+ , "pgstream"
2498+ , "phasechange"
2499+ , "phash"
2500+ , "phone-push"
2501+ , "phooey"
2502+ , "photoname"
2503+ , "phraskell"
2504+ , "Phsu"
2505+ , "phybin"
2506+ , "pianola"
2507+ , "pi-calculus"
2508+ , "picologic"
2509+ , "piet"
2510+ , "piki"
2511+ , "Pipe"
2512+ , "pipes-cereal-plus"
2513+ , "pipes-conduit"
2514+ , "pipes-network-tls"
2515+ , "pipes-p2p-examples"
2516+ , "pisigma"
2517+ , "pit"
2518+ , "pkggraph"
2519+ , "planar-graph"
2520+ , "plat"
2521+ , "plivo"
2522+ , "PlslTools"
2523+ , "plugins"
2524+ , "plugins-auto"
2525+ , "plugins-multistage"
2526+ , "plumbers"
2527+ , "png-file"
2528+ , "pngload"
2529+ , "pngload-fixed"
2530+ , "pocket-dns"
2531+ , "pointless-haskell"
2532+ , "pointless-lenses"
2533+ , "pointless-rewrite"
2534+ , "polh-lexicon"
2535+ , "polyseq"
2536+ , "polytypeable"
2537+ , "polytypeable-utils"
2538+ , "pontarius-mediaserver"
2539+ , "pontarius-xmpp"
2540+ , "pontarius-xpmn"
2541+ , "pool"
2542+ , "pool-conduit"
2543+ , "popenhs"
2544+ , "poppler"
2545+ , "porte"
2546+ , "porter"
2547+ , "ports"
2548+ , "posix-acl"
2549+ , "posix-waitpid"
2550+ , "PostgreSQL"
2551+ , "postgresql-orm"
2552+ , "postgresql-schema"
2553+ , "postgresql-simple-typed"
2554+ , "postgresql-typed"
2555+ , "postgrest"
2556+ , "postie"
2557+ , "postmaster"
2558+ , "powermate"
2559+ , "powerpc"
2560+ , "pqc"
2561+ , "pqueue-mtl"
2562+ , "practice-room"
2563+ , "precis"
2564+ , "prefork"
2565+ , "pregame"
2566+ , "prelude-generalize"
2567+ , "prelude-plus"
2568+ , "preprocess-haskell"
2569+ , "press"
2570+ , "primula-board"
2571+ , "primula-bot"
2572+ , "printf-mauke"
2573+ , "Printf-TH"
2574+ , "PriorityChansConverger"
2575+ , "priority-queue"
2576+ , "ProbabilityMonads"
2577+ , "proc"
2578+ , "processing"
2579+ , "process-iterio"
2580+ , "process-leksah"
2581+ , "process-listlike"
2582+ , "process-progress"
2583+ , "process-qq"
2584+ , "procrastinating-structure"
2585+ , "procrastinating-variable"
2586+ , "procstat"
2587+ , "prof2dot"
2588+ , "profunctor-extras"
2589+ , "progress"
2590+ , "progressbar"
2591+ , "progression"
2592+ , "progressive"
2593+ , "proj4-hs-bindings"
2594+ , "prolog"
2595+ , "prolog-graph"
2596+ , "prolog-graph-lib"
2597+ , "propane"
2598+ , "Proper"
2599+ , "proplang"
2600+ , "protobuf-native"
2601+ , "protocol-buffers-descriptor-fork"
2602+ , "protocol-buffers-fork"
2603+ , "prove-everywhere-server"
2604+ , "proxy-kindness"
2605+ , "pub"
2606+ , "publicsuffixlistcreate"
2607+ , "pubnub"
2608+ , "pubsub"
2609+ , "puffytools"
2610+ , "Pugs"
2611+ , "pugs-compat"
2612+ , "pugs-DrIFT"
2613+ , "pugs-hsregex"
2614+ , "pugs-HsSyck"
2615+ , "punkt"
2616+ , "Pup-Events"
2617+ , "Pup-Events-Demo"
2618+ , "puppetresources"
2619+ , "purescript"
2620+ , "pushme"
2621+ , "push-notify"
2622+ , "push-notify-ccs"
2623+ , "push-notify-general"
2624+ , "putlenses"
2625+ , "puzzle-draw"
2626+ , "puzzle-draw-cmdline"
2627+ , "pvd"
2628+ , "python-pickle"
2629+ , "qd"
2630+ , "qd-vec"
2631+ , "qhull-simple"
2632+ , "QIO"
2633+ , "quantum-arrow"
2634+ , "qudb"
2635+ , "quenya-verb"
2636+ , "querystring-pickle"
2637+ , "queuelike"
2638+ , "QuickAnnotate"
2639+ , "QuickCheck-GenT"
2640+ , "quickcheck-poly"
2641+ , "quickcheck-regex"
2642+ , "quickcheck-relaxng"
2643+ , "quickcheck-rematch"
2644+ , "quickpull"
2645+ , "quickset"
2646+ , "Quickson"
2647+ , "quicktest"
2648+ , "quoridor-hs"
2649+ , "rabocsv2qif"
2650+ , "rad"
2651+ , "radium"
2652+ , "radium-formula-parser"
2653+ , "rados-haskell"
2654+ , "rail-compiler-editor"
2655+ , "rainbow-tests"
2656+ , "Raincat"
2657+ , "rakhana"
2658+ , "ralist"
2659+ , "rallod"
2660+ , "random-access-list"
2661+ , "RandomDotOrg"
2662+ , "random-eff"
2663+ , "random-effin"
2664+ , "random-hypergeometric"
2665+ , "random-stream"
2666+ , "rand-vars"
2667+ , "rangemin"
2668+ , "range-space"
2669+ , "Ranka"
2670+ , "raven-haskell"
2671+ , "raven-haskell-scotty"
2672+ , "rbr"
2673+ , "rdf4h"
2674+ , "rdioh"
2675+ , "reaction-logic"
2676+ , "reactive"
2677+ , "reactive-bacon"
2678+ , "reactive-balsa"
2679+ , "reactive-banana-sdl"
2680+ , "reactive-banana-threepenny"
2681+ , "reactive-fieldtrip"
2682+ , "reactive-glut"
2683+ , "reactive-thread"
2684+ , "reactor"
2685+ , "really-simple-xml-parser"
2686+ , "reasonable-lens"
2687+ , "record-aeson"
2688+ , "record-gl"
2689+ , "record-preprocessor"
2690+ , "records"
2691+ , "records-th"
2692+ , "redHandlers"
2693+ , "ref"
2694+ , "Ref"
2695+ , "Referees"
2696+ , "refh"
2697+ , "reflection-extras"
2698+ , "regex-deriv"
2699+ , "regex-dfa"
2700+ , "regex-genex"
2701+ , "regex-parsec"
2702+ , "regex-pderiv"
2703+ , "regexp-tries"
2704+ , "regexqq"
2705+ , "regex-tdfa-utf8"
2706+ , "regex-tre"
2707+ , "regex-xmlschema"
2708+ , "regional-pointers"
2709+ , "regions"
2710+ , "regions-monadsfd"
2711+ , "regions-monadstf"
2712+ , "regions-mtl"
2713+ , "regular-extras"
2714+ , "regular-web"
2715+ , "reheat"
2716+ , "rei"
2717+ , "reified-records"
2718+ , "reify"
2719+ , "remote"
2720+ , "remote-debugger"
2721+ , "remotion"
2722+ , "reorderable"
2723+ , "repa-array"
2724+ , "repa-bytestring"
2725+ , "repa-flow"
2726+ , "repa-plugin"
2727+ , "repa-series"
2728+ , "repa-v4l2"
2729+ , "repl"
2730+ , "RepLib"
2731+ , "repo-based-blog"
2732+ , "repr"
2733+ , "representable-functors"
2734+ , "representable-profunctors"
2735+ , "representable-tries"
2736+ , "resource-embed"
2737+ , "resource-simple"
2738+ , "respond"
2739+ , "restful-snap"
2740+ , "RESTng"
2741+ , "restricted-workers"
2742+ , "restyle"
2743+ , "resumable-exceptions"
2744+ , "rethinkdb-client-driver"
2745+ , "rethinkdb-model"
2746+ , "ReviewBoard"
2747+ , "rewrite"
2748+ , "rewriting"
2749+ , "rezoom"
2750+ , "rfc3339"
2751+ , "riak"
2752+ , "riak-protobuf"
2753+ , "riot"
2754+ , "ripple"
2755+ , "ripple-federation"
2756+ , "risc386"
2757+ , "rivers"
2758+ , "RJson"
2759+ , "rmonad"
2760+ , "RMP"
2761+ , "RNAdesign"
2762+ , "RNAdraw"
2763+ , "RNAFold"
2764+ , "RNAFoldProgs"
2765+ , "RNAwolf"
2766+ , "roguestar"
2767+ , "roguestar-engine"
2768+ , "roguestar-gl"
2769+ , "roguestar-glut"
2770+ , "RollingDirectory"
2771+ , "rope"
2772+ , "rosa"
2773+ , "roshask"
2774+ , "rosso"
2775+ , "rotating-log"
2776+ , "rounding"
2777+ , "roundtrip"
2778+ , "roundtrip-aeson"
2779+ , "roundtrip-string"
2780+ , "roundtrip-xml"
2781+ , "route-generator"
2782+ , "route-planning"
2783+ , "rowrecord"
2784+ , "rpc"
2785+ , "rpc-framework"
2786+ , "rpm"
2787+ , "rsagl"
2788+ , "rsagl-frp"
2789+ , "rsagl-math"
2790+ , "rss2irc"
2791+ , "rubberband"
2792+ , "ruff"
2793+ , "ruler-core"
2794+ , "rungekutta"
2795+ , "RxHaskell"
2796+ , "safe-freeze"
2797+ , "safe-globals"
2798+ , "safeint"
2799+ , "safe-lazy-io"
2800+ , "safe-plugins"
2801+ , "safer-file-handles"
2802+ , "safer-file-handles-bytestring"
2803+ , "safer-file-handles-text"
2804+ , "sai-shape-syb"
2805+ , "Salsa"
2806+ , "salvia"
2807+ , "salvia-demo"
2808+ , "salvia-extras"
2809+ , "salvia-protocol"
2810+ , "salvia-sessions"
2811+ , "salvia-websocket"
2812+ , "samtools-iteratee"
2813+ , "sasl"
2814+ , "sat"
2815+ , "satchmo-backends"
2816+ , "satchmo-examples"
2817+ , "satchmo-funsat"
2818+ , "satchmo-minisat"
2819+ , "sat-micro-hs"
2820+ , "SBench"
2821+ , "scaleimage"
2822+ , "scan-vector-machine"
2823+ , "scat"
2824+ , "scenegraph"
2825+ , "schedevr"
2826+ , "scholdoc"
2827+ , "scholdoc-citeproc"
2828+ , "scion"
2829+ , "scion-browser"
2830+ , "scope"
2831+ , "scope-cairo"
2832+ , "scottish"
2833+ , "scotty-blaze"
2834+ , "scotty-fay"
2835+ , "scotty-hastache"
2836+ , "scotty-session"
2837+ , "scrabble-bot"
2838+ , "ScratchFs"
2839+ , "scrobble"
2840+ , "scroll"
2841+ , "scrz"
2842+ , "Scurry"
2843+ , "SDL-gfx"
2844+ , "SDL-image"
2845+ , "SDL-mixer"
2846+ , "SDL-mpeg"
2847+ , "SDL-ttf"
2848+ , "seacat"
2849+ , "search"
2850+ , "secdh"
2851+ , "second-transfer"
2852+ , "secret-santa"
2853+ , "secret-sharing"
2854+ , "secrm"
2855+ , "sednaDBXML"
2856+ , "selectors"
2857+ , "selenium"
2858+ , "selenium-server"
2859+ , "selinux"
2860+ , "Semantique"
2861+ , "semigroups-actions"
2862+ , "semi-iso"
2863+ , "semiring"
2864+ , "sensenet"
2865+ , "sentry"
2866+ , "senza"
2867+ , "seqaid"
2868+ , "SeqAlign"
2869+ , "seqloc-datafiles"
2870+ , "sequent-core"
2871+ , "sequor"
2872+ , "servant-pool"
2873+ , "servant-postgresql"
2874+ , "servant-scotty"
2875+ , "servius"
2876+ , "ses-html-snaplet"
2877+ , "SessionLogger"
2878+ , "sessions"
2879+ , "set-with"
2880+ , "sexp"
2881+ , "sexpr"
2882+ , "sext"
2883+ , "SFML"
2884+ , "SFML-control"
2885+ , "SFont"
2886+ , "SG"
2887+ , "SGdemo"
2888+ , "sgrep"
2889+ , "shadower"
2890+ , "shady-gen"
2891+ , "shady-graphics"
2892+ , "shake-extras"
2893+ , "shaker"
2894+ , "shakespeare-css"
2895+ , "shakespeare-i18n"
2896+ , "shapely-data"
2897+ , "shared-buffer"
2898+ , "she"
2899+ , "Shellac"
2900+ , "Shellac-compatline"
2901+ , "Shellac-editline"
2902+ , "Shellac-haskeline"
2903+ , "Shellac-readline"
2904+ , "shellish"
2905+ , "shell-pipe"
2906+ , "shivers-cfg"
2907+ , "showdown"
2908+ , "shpider"
2909+ , "sifflet"
2910+ , "sifflet-lib"
2911+ , "signals"
2912+ , "simd"
2913+ , "simgi"
2914+ , "simple"
2915+ , "simple-bluetooth"
2916+ , "simple-css"
2917+ , "simple-c-value"
2918+ , "simple-firewire"
2919+ , "simple-form"
2920+ , "SimpleGL"
2921+ , "SimpleH"
2922+ , "simpleirc"
2923+ , "simpleirc-lens"
2924+ , "SimpleLog"
2925+ , "simple-log-syslog"
2926+ , "simplenote"
2927+ , "simple-pascal"
2928+ , "simple-postgresql-orm"
2929+ , "simpleprelude"
2930+ , "simple-session"
2931+ , "simplessh"
2932+ , "simple-templates"
2933+ , "simple-vec3"
2934+ , "simseq"
2935+ , "sindre"
2936+ , "sirkel"
2937+ , "sized"
2938+ , "sized-types"
2939+ , "sized-vector"
2940+ , "skeleton"
2941+ , "skype4hs"
2942+ , "slack"
2943+ , "slidemews"
2944+ , "sloth"
2945+ , "smallarray"
2946+ , "smallpt-hs"
2947+ , "smallstring"
2948+ , "smartcheck"
2949+ , "smartGroup"
2950+ , "smartword"
2951+ , "sme"
2952+ , "Smooth"
2953+ , "smt-lib"
2954+ , "smtlib2"
2955+ , "smtp2mta"
2956+ , "smtp-mail-ng"
2957+ , "smtps-gmail"
2958+ , "snake-game"
2959+ , "snap-accept"
2960+ , "snap-app"
2961+ , "snap-elm"
2962+ , "snap-extras"
2963+ , "snaplet-actionlog"
2964+ , "snaplet-css-min"
2965+ , "snaplet-environments"
2966+ , "snaplet-haxl"
2967+ , "snaplet-hdbc"
2968+ , "snaplet-i18n"
2969+ , "snaplet-mongoDB"
2970+ , "snaplet-mongodb-minimalistic"
2971+ , "snaplet-mysql-simple"
2972+ , "snaplet-oauth"
2973+ , "snaplet-redson"
2974+ , "snaplet-rest"
2975+ , "snaplet-riak"
2976+ , "snaplet-sedna"
2977+ , "snaplet-tasks"
2978+ , "snaplet-typed-sessions"
2979+ , "snaplet-wordpress"
2980+ , "snap-predicates"
2981+ , "snappy-iteratee"
2982+ , "snap-testing"
2983+ , "snap-utils"
2984+ , "sndfile-enumerators"
2985+ , "sneathlane-haste"
2986+ , "SNet"
2987+ , "snm"
2988+ , "snow-white"
2989+ , "Snusmumrik"
2990+ , "SoccerFun"
2991+ , "SoccerFunGL"
2992+ , "sock2stream"
2993+ , "socketio"
2994+ , "socket-sctp"
2995+ , "sonic-visualiser"
2996+ , "SoOSiM"
2997+ , "sorted"
2998+ , "sound-collage"
2999+ , "source-code-server"
3000+ , "sousit"
3001+ , "soxlib"
3002+ , "soyuz"
3003+ , "SpaceInvaders"
3004+ , "SpacePrivateers"
3005+ , "spanout"
3006+ , "sparse"
3007+ , "sparsebit"
3008+ , "sparsecheck"
3009+ , "spata"
3010+ , "special-functors"
3011+ , "specialize-th"
3012+ , "speculation-transformers"
3013+ , "sphero"
3014+ , "sphinx-cli"
3015+ , "spice"
3016+ , "spike"
3017+ , "splaytree"
3018+ , "splines"
3019+ , "split-record"
3020+ , "splot"
3021+ , "Spock-auth"
3022+ , "spoonutil"
3023+ , "spoty"
3024+ , "Sprig"
3025+ , "spy"
3026+ , "sqlite-simple-typed"
3027+ , "sql-simple"
3028+ , "sql-simple-mysql"
3029+ , "sql-simple-pool"
3030+ , "sql-simple-postgresql"
3031+ , "sql-simple-sqlite"
3032+ , "srcinst"
3033+ , "sscgi"
3034+ , "ssh"
3035+ , "sssp"
3036+ , "sstable"
3037+ , "stackage-curator"
3038+ , "stack-prism"
3039+ , "starrover2"
3040+ , "stateful-mtl"
3041+ , "statgrab"
3042+ , "statistics-dirichlet"
3043+ , "statistics-fusion"
3044+ , "stb-truetype"
3045+ , "steeloverseer"
3046+ , "step-function"
3047+ , "stepwise"
3048+ , "stm-chunked-queues"
3049+ , "stmcontrol"
3050+ , "stm-firehose"
3051+ , "Stomp"
3052+ , "storable-static-array"
3053+ , "storablevector"
3054+ , "storablevector-carray"
3055+ , "storablevector-streamfusion"
3056+ , "Strafunski-Sdf2Haskell"
3057+ , "streamed"
3058+ , "stream-fusion"
3059+ , "StrictBench"
3060+ , "strict-concurrency"
3061+ , "string"
3062+ , "stringlike"
3063+ , "structured-mongoDB"
3064+ , "structures"
3065+ , "stunts"
3066+ , "subhask"
3067+ , "suitable"
3068+ , "sunlight"
3069+ , "sunroof-compiler"
3070+ , "sunroof-examples"
3071+ , "sunroof-server"
3072+ , "supercollider-midi"
3073+ , "superdoc"
3074+ , "supero"
3075+ , "supervisor"
3076+ , "svg2q"
3077+ , "SVG2Q"
3078+ , "svm-simple"
3079+ , "svndump"
3080+ , "swapper"
3081+ , "swearjure"
3082+ , "swf"
3083+ , "swift-lda"
3084+ , "sws"
3085+ , "syb-extras"
3086+ , "sylvia"
3087+ , "sym-plot"
3088+ , "sync"
3089+ , "sync-mht"
3090+ , "syntax"
3091+ , "syntax-attoparsec"
3092+ , "syntax-example"
3093+ , "syntax-example-json"
3094+ , "SyntaxMacros"
3095+ , "syntax-pretty"
3096+ , "syntax-printer"
3097+ , "syntax-trees"
3098+ , "syntax-trees-fork-bairyn"
3099+ , "synthesizer"
3100+ , "synthesizer-alsa"
3101+ , "synthesizer-core"
3102+ , "synthesizer-dimensional"
3103+ , "synthesizer-midi"
3104+ , "Sysmon"
3105+ , "system-canonicalpath"
3106+ , "system-lifted"
3107+ , "system-random-effect"
3108+ , "ta"
3109+ , "Tables"
3110+ , "tablestorage"
3111+ , "tabloid"
3112+ , "tagged-list"
3113+ , "tagged-th"
3114+ , "tagsoup-ht"
3115+ , "tagsoup-parsec"
3116+ , "Takusen"
3117+ , "takusen-oracle"
3118+ , "tamarin-prover"
3119+ , "tamarin-prover-term"
3120+ , "tamarin-prover-theory"
3121+ , "tamarin-prover-utils"
3122+ , "tamper"
3123+ , "target"
3124+ , "task"
3125+ , "tasty-integrate"
3126+ , "TBC"
3127+ , "tbox"
3128+ , "tccli"
3129+ , "tcp"
3130+ , "tdd-util"
3131+ , "TeaHS"
3132+ , "teams"
3133+ , "telegram"
3134+ , "template-default"
3135+ , "template-haskell-util"
3136+ , "template-hsml"
3137+ , "templatepg"
3138+ , "tempodb"
3139+ , "temporal-csound"
3140+ , "tempus"
3141+ , "tensor"
3142+ , "termbox-bindings"
3143+ , "term-rewriting"
3144+ , "terrahs"
3145+ , "tersmu"
3146+ , "test-framework-doctest"
3147+ , "test-framework-quickcheck"
3148+ , "testloop"
3149+ , "testpattern"
3150+ , "testPkg"
3151+ , "testrunner"
3152+ , "tetris"
3153+ , "tex2txt"
3154+ , "texrunner"
3155+ , "text-json-qq"
3156+ , "textmatetags"
3157+ , "text-normal"
3158+ , "textPlot"
3159+ , "text-register-machine"
3160+ , "texts"
3161+ , "text-xml-generic"
3162+ , "text-xml-qq"
3163+ , "tfp-th"
3164+ , "themplate"
3165+ , "Theora"
3166+ , "theoremquest-client"
3167+ , "thih"
3168+ , "thimk"
3169+ , "Thingie"
3170+ , "th-instances"
3171+ , "th-kinds"
3172+ , "thrift"
3173+ , "Thrift"
3174+ , "throttle"
3175+ , "tianbar"
3176+ , "tic-tac-toe"
3177+ , "TicTacToe"
3178+ , "tiger"
3179+ , "tighttp"
3180+ , "timberc"
3181+ , "timecalc"
3182+ , "time-extras"
3183+ , "time-http"
3184+ , "timeout"
3185+ , "timeout-control"
3186+ , "timeparsers"
3187+ , "time-patterns"
3188+ , "TimePiece"
3189+ , "timeplot"
3190+ , "time-recurrence"
3191+ , "time-series"
3192+ , "timestamp-subprocess-lines"
3193+ , "time-w3c"
3194+ , "TinyLaunchbury"
3195+ , "TinyURL"
3196+ , "Titim"
3197+ , "tkhs"
3198+ , "tkyprof"
3199+ , "tls-extra"
3200+ , "todos"
3201+ , "to-haskell"
3202+ , "toilet"
3203+ , "toktok"
3204+ , "tokyocabinet-haskell"
3205+ , "toml"
3206+ , "Top"
3207+ , "topkata"
3208+ , "torch"
3209+ , "to-string-class"
3210+ , "to-string-instances"
3211+ , "Tournament"
3212+ , "tracker"
3213+ , "trajectory"
3214+ , "transactional-events"
3215+ , "transformers-convert"
3216+ , "transformers-runnable"
3217+ , "translate"
3218+ , "traypoweroff"
3219+ , "treemap-html-tools"
3220+ , "treeviz"
3221+ , "tremulous-query"
3222+ , "TrendGraph"
3223+ , "trhsx"
3224+ , "triangulation"
3225+ , "TrieMap"
3226+ , "trimpolya"
3227+ , "true-name"
3228+ , "tsession"
3229+ , "tsession-happstack"
3230+ , "tskiplist"
3231+ , "tsp-viz"
3232+ , "tuntap"
3233+ , "tup-functor"
3234+ , "tuple-gen"
3235+ , "tupleinstances"
3236+ , "tuple-morph"
3237+ , "twentefp-rosetree"
3238+ , "twhs"
3239+ , "twidge"
3240+ , "twilight-stm"
3241+ , "twilio"
3242+ , "twill"
3243+ , "twiml"
3244+ , "twine"
3245+ , "twisty"
3246+ , "twitch"
3247+ , "twitter"
3248+ , "twitter-conduit"
3249+ , "twitter-enumerator"
3250+ , "twitter-types"
3251+ , "twitter-types-lens"
3252+ , "tx"
3253+ , "TYB"
3254+ , "typalyze"
3255+ , "typeable-th"
3256+ , "type-cereal"
3257+ , "TypeClass"
3258+ , "type-digits"
3259+ , "typedquery"
3260+ , "type-equality-check"
3261+ , "typehash"
3262+ , "TypeIlluminator"
3263+ , "type-int"
3264+ , "type-level"
3265+ , "type-level-bst"
3266+ , "type-level-sets"
3267+ , "typelevel-tensor"
3268+ , "type-list"
3269+ , "TypeNat"
3270+ , "type-natural"
3271+ , "type-ord"
3272+ , "type-ord-spine-cereal"
3273+ , "typeparams"
3274+ , "type-prelude"
3275+ , "typescript-docs"
3276+ , "type-settheory"
3277+ , "type-spine"
3278+ , "type-structure"
3279+ , "type-sub-th"
3280+ , "typography-geometry"
3281+ , "uAgda"
3282+ , "uberlast"
3283+ , "uconv"
3284+ , "udbus"
3285+ , "udbus-model"
3286+ , "udev"
3287+ , "ui-command"
3288+ , "UMM"
3289+ , "unamb-custom"
3290+ , "unbound"
3291+ , "unbounded-delays-units"
3292+ , "unboxed-containers"
3293+ , "unicode-normalization"
3294+ , "unicoder"
3295+ , "uniform-io"
3296+ , "union-map"
3297+ , "uniqueid"
3298+ , "unique-logic-tf"
3299+ , "units"
3300+ , "units-defs"
3301+ , "unittyped"
3302+ , "universe-th"
3303+ , "unix-process-conduit"
3304+ , "unlit"
3305+ , "unordered-containers-rematch"
3306+ , "unpack-funcs"
3307+ , "unscramble"
3308+ , "up"
3309+ , "uploadcare"
3310+ , "upskirt"
3311+ , "ureader"
3312+ , "urembed"
3313+ , "uri-conduit"
3314+ , "uri-enumerator"
3315+ , "uri-enumerator-file"
3316+ , "urlcheck"
3317+ , "urldecode"
3318+ , "UrlDisp"
3319+ , "urldisp-happstack"
3320+ , "url-generic"
3321+ , "URLT"
3322+ , "urxml"
3323+ , "usb-enumerator"
3324+ , "usb-iteratee"
3325+ , "usb-safe"
3326+ , "uuagc-diagrams"
3327+ , "uu-tc"
3328+ , "uvector"
3329+ , "uvector-algorithms"
3330+ , "v4l2"
3331+ , "v4l2-examples"
3332+ , "vacuum"
3333+ , "vacuum-cairo"
3334+ , "vacuum-graphviz"
3335+ , "vacuum-opengl"
3336+ , "vacuum-ubigraph"
3337+ , "validate"
3338+ , "vampire"
3339+ , "var"
3340+ , "vaultaire-common"
3341+ , "vcard"
3342+ , "Vec-Boolean"
3343+ , "Vec-OpenGLRaw"
3344+ , "vector-bytestring"
3345+ , "vector-clock"
3346+ , "vector-conduit"
3347+ , "vector-fftw"
3348+ , "vector-functorlazy"
3349+ , "vector-instances-collections"
3350+ , "vector-random"
3351+ , "vector-read-instances"
3352+ , "vector-space-opengl"
3353+ , "vector-static"
3354+ , "Vec-Transform"
3355+ , "verilog"
3356+ , "vigilance"
3357+ , "vintage-basic"
3358+ , "vinyl"
3359+ , "vinyl-gl"
3360+ , "vinyl-json"
3361+ , "vinyl-utils"
3362+ , "virthualenv"
3363+ , "vision"
3364+ , "visual-graphrewrite"
3365+ , "visual-prof"
3366+ , "vk-aws-route53"
3367+ , "VKHS"
3368+ , "vorbiscomment"
3369+ , "vowpal-utils"
3370+ , "voyeur"
3371+ , "vtegtk3"
3372+ , "vty-examples"
3373+ , "vty-menu"
3374+ , "vty-ui"
3375+ , "vty-ui-extras"
3376+ , "wai-cors"
3377+ , "wai-eventsource"
3378+ , "wai-graceful"
3379+ , "wai-handler-devel"
3380+ , "wai-handler-snap"
3381+ , "wai-handler-webkit"
3382+ , "wai-hastache"
3383+ , "wai-lite"
3384+ , "wai-logger-prefork"
3385+ , "wai-middleware-cache"
3386+ , "wai-middleware-cache-redis"
3387+ , "wai-middleware-catch"
3388+ , "wai-middleware-consul"
3389+ , "wai-middleware-etag"
3390+ , "wai-middleware-headers"
3391+ , "wai-middleware-hmac-client"
3392+ , "wai-middleware-preprocessor"
3393+ , "wai-middleware-route"
3394+ , "wai-middleware-static-caching"
3395+ , "wai-predicates"
3396+ , "wai-routing"
3397+ , "wai-session-tokyocabinet"
3398+ , "wai-static-cache"
3399+ , "wai-throttler"
3400+ , "waitra"
3401+ , "warp-dynamic"
3402+ , "warp-static"
3403+ , "warp-tls-uid"
3404+ , "WashNGo"
3405+ , "watchdog"
3406+ , "watcher"
3407+ , "watchit"
3408+ , "wavesurfer"
3409+ , "weather-api"
3410+ , "WebBits-Html"
3411+ , "WebBits-multiplate"
3412+ , "web-browser-in-haskell"
3413+ , "WebCont"
3414+ , "webcrank-dispatch"
3415+ , "webcrank-wai"
3416+ , "webdriver-snoy"
3417+ , "web-encodings"
3418+ , "webify"
3419+ , "webkit-javascriptcore"
3420+ , "web-mongrel2"
3421+ , "Webrexp"
3422+ , "web-routes-quasi"
3423+ , "web-routes-transformers"
3424+ , "webserver"
3425+ , "websnap"
3426+ , "webwire"
3427+ , "wedged"
3428+ , "weighted-regexp"
3429+ , "welshy"
3430+ , "Wheb"
3431+ , "wheb-mongo"
3432+ , "wheb-redis"
3433+ , "wheb-strapped"
3434+ , "whim"
3435+ , "whitespace"
3436+ , "WikimediaParser"
3437+ , "wikipedia4epub"
3438+ , "Win32-dhcp-server"
3439+ , "Win32-errors"
3440+ , "Win32-extras"
3441+ , "Win32-junction-point"
3442+ , "Win32-notify"
3443+ , "Win32-security"
3444+ , "Win32-services"
3445+ , "Win32-services-wrapper"
3446+ , "windowslive"
3447+ , "winerror"
3448+ , "winio"
3449+ , "WL500gPControl"
3450+ , "wlc-hs"
3451+ , "wobsurv"
3452+ , "woffex"
3453+ , "wolf"
3454+ , "word24"
3455+ , "wordcloud"
3456+ , "Wordlint"
3457+ , "WordNet"
3458+ , "WordNet-ghc74"
3459+ , "wordsearch"
3460+ , "wp-archivebot"
3461+ , "wraxml"
3462+ , "wright"
3463+ , "wtk"
3464+ , "wtk-gtk"
3465+ , "wumpus-basic"
3466+ , "wumpus-core"
3467+ , "wumpus-drawing"
3468+ , "wumpus-microprint"
3469+ , "wumpus-tree"
3470+ , "WURFL"
3471+ , "wxAsteroids"
3472+ , "WXDiffCtrl"
3473+ , "wxFruit"
3474+ , "wxhnotepad"
3475+ , "wxturtle"
3476+ , "wyvern"
3477+ , "X11-extras"
3478+ , "X11-rm"
3479+ , "X11-xdamage"
3480+ , "X11-xfixes"
3481+ , "x11-xinput"
3482+ , "x509-util"
3483+ , "xchat-plugin"
3484+ , "x-dsp"
3485+ , "Xec"
3486+ , "xfconf"
3487+ , "xhaskell-library"
3488+ , "xhb-ewmh"
3489+ , "xine"
3490+ , "xing-api"
3491+ , "XInput"
3492+ , "xkcd"
3493+ , "xlsior"
3494+ , "xlsx-templater"
3495+ , "xml2json"
3496+ , "xml2x"
3497+ , "xml-catalog"
3498+ , "xml-enumerator"
3499+ , "xml-enumerator-combinators"
3500+ , "XmlHtmlWriter"
3501+ , "xml-parsec"
3502+ , "xml-pipe"
3503+ , "xml-prettify"
3504+ , "xml-push"
3505+ , "xmltv"
3506+ , "XMMS"
3507+ , "xmms2-client"
3508+ , "xmms2-client-glib"
3509+ , "xmonad-bluetilebranch"
3510+ , "xmonad-contrib-bluetilebranch"
3511+ , "xmonad-eval"
3512+ , "xmpipe"
3513+ , "XMPP"
3514+ , "xournal-builder"
3515+ , "xournal-convert"
3516+ , "xournal-parser"
3517+ , "xournal-render"
3518+ , "xournal-types"
3519+ , "xsact"
3520+ , "XSaiga"
3521+ , "xslt"
3522+ , "y0l0bot"
3523+ , "Yablog"
3524+ , "yackage"
3525+ , "YACPong"
3526+ , "yahoo-web-search"
3527+ , "yajl"
3528+ , "yajl-enumerator"
3529+ , "yaml2owl"
3530+ , "YamlReference"
3531+ , "yaml-rpc"
3532+ , "yaml-rpc-scotty"
3533+ , "yaml-rpc-snap"
3534+ , "yampa-canvas"
3535+ , "yampa-glfw"
3536+ , "yampa-glut"
3537+ , "yaop"
3538+ , "yarr"
3539+ , "yarr-image-io"
3540+ , "yavie"
3541+ , "ycextra"
3542+ , "yesod-angular-ui"
3543+ , "yesod-auth-account-fork"
3544+ , "yesod-auth-kerberos"
3545+ , "yesod-auth-ldap"
3546+ , "yesod-auth-pam"
3547+ , "yesod-auth-smbclient"
3548+ , "yesod-bootstrap"
3549+ , "yesod-comments"
3550+ , "yesod-continuations"
3551+ , "yesod-datatables"
3552+ , "yesod-dsl"
3553+ , "yesod-eventsource"
3554+ , "yesod-examples"
3555+ , "yesod-goodies"
3556+ , "yesod-links"
3557+ , "yesod-mangopay"
3558+ , "yesod-paginate"
3559+ , "yesod-pagination"
3560+ , "yesod-paginator"
3561+ , "yesod-platform"
3562+ , "yesod-pure"
3563+ , "yesod-purescript"
3564+ , "yesod-raml"
3565+ , "yesod-routes-flow"
3566+ , "yesod-routes-typescript"
3567+ , "yesod-rst"
3568+ , "yesod-s3"
3569+ , "yesod-session-redis"
3570+ , "yesod-tableview"
3571+ , "yesod-test-json"
3572+ , "yesod-tls"
3573+ , "yesod-vend"
3574+ , "yesod-worker"
3575+ , "YFrob"
3576+ , "yhccore"
3577+ , "yi-contrib"
3578+ , "yi-fuzzy-open"
3579+ , "yi-gtk"
3580+ , "yi-vty"
3581+ , "yjftp"
3582+ , "Yogurt"
3583+ , "Yogurt-Standalone"
3584+ , "yoko"
3585+ , "york-lava"
3586+ , "yql"
3587+ , "yuiGrid"
3588+ , "yuuko"
3589+ , "zampolit"
3590+ , "zasni-gerna"
3591+ , "zendesk-api"
3592+ , "zeno"
3593+ , "zeromq3-conduit"
3594+ , "zeromq3-haskell"
3595+ , "zeromq-haskell"
3596+ , "zeroth"
3597+ , "ZFS"
3598+ , "zipedit"
3599+ , "ZMachine"
3600+ , "zmcat"
3601+ , "zmqat"
3602+ , "zoneinfo"
3603+ , "zoom"
3604+ , "zoom-cache"
3605+ , "zoom-cache-pcm"
3606+ , "zoom-cache-sndfile"
3607+ , "zot"
3608+ , "zsh-battery"
3609+ , "ztail"
3610+ , "Zwaluw"
3611+ , "yesod-media-simple"
3612+ , "token-utils"
3613+ , "ghc-imported-from"
3614+ , "libhbb"
3615+ , "hoogle-index"
3616+ , "reflex-dom"
3617+ , "HaRe"
3618+ , "aws-configuration-tools"
3619+ , "aws-dynamodb-streams"
3620+ , "aws-general"
3621+ , "aws-kinesis-client"
3622+ , "aws-kinesis"
3623+ , "aws-performance-tests"
3624+ , "byline"
3625+ , "glambda"
3626+ , "haskell-token-utils"
3627+ , "hbb"
3628+ , "octohat"
3629+ , "orchestrate"
3630+ , "pdf-toolbox-content"
3631+ , "pdf-toolbox-core"
3632+ , "pdf-toolbox-document"
3633+ , "pdf-toolbox-viewer"
3634+ , "riemann"
3635+ , "tellbot"
3636+ , "terminfo-hs"
3637+ , "vimeta"
3638+ , "ply-loader"
3639+ , "bitvec"
3640+ , "full-text-search"
3641+ , "QuadEdge"
3642+ , "sdr"
3643+ , "these"
3644+ , "tz"
3645+ , "jacobi-roots"
3646+ , "atomic-primops-vector"
3647+ , "OrderedBits"
3648+ , "pipes-csv"
3649+ , "hybrid-vectors"
3650+ , "hyperloglog"
3651+ , "bitstream"
3652+ , "repa-stream"
3653+ , "dph-prim-seq"
3654+ , "compensated"
3655+ , "ADPfusion"
3656+ , "GrammarProducts"
3657+ , "reflex"
3658+ , "reflex-gloss"
3659+ , "AlignmentAlgorithms"
3660+ , "GenussFold"
3661+ , "PrimitiveArray"
3662+ , "FormalGrammars"
3663+ , "BiobaseXNA"
3664+ , "BiobaseTypes"
3665+ , "broker-haskell"
3666+ , "concurrent-machines"
3667+ , "darcs-fastconvert"
3668+ , "ivory-backend-c"
3669+ , "ivory-bitdata"
3670+ , "ivory-examples"
3671+ , "ivory-hw"
3672+ , "laborantin-hs"
3673+ , "magico"
3674+ , "resistor-cube"
3675+ , "taskpool"
3676+ , "wai-middleware-metrics"
3677+ ]
3678+
3679+}
src/Distribution/Nixpkgs/Haskell/FromCabal/Name.hs+5−5
@@ -2,14 +2,14 @@
2
2
3module Distribution.Nixpkgs.Haskell.FromCabal.Name ( toNixName, libNixName, buildToolNixName ) where
3module Distribution.Nixpkgs.Haskell.FromCabal.Name ( toNixName, libNixName, buildToolNixName ) where
4
4
5−import Language.Nix.Identifier
5+import Data.String
6import Distribution.Package
6import Distribution.Package
7−import Internal.Lens
7+import Language.Nix
8
8
9-- | Map Cabal names to Nix attribute names.
9-- | Map Cabal names to Nix attribute names.
10toNixName :: PackageName -> Identifier
10toNixName :: PackageName -> Identifier
11toNixName (PackageName "") = error "toNixName: invalid empty package name"
11toNixName (PackageName "") = error "toNixName: invalid empty package name"
12−toNixName (PackageName n) = create ident n
12+toNixName (PackageName n) = fromString n
13
13
14-- | Map libraries to Nix packages.
14-- | Map libraries to Nix packages.
15--
15--
@@ -160,7 +160,7 @@ libNixName "Xtst" = return "libXtst"
160libNixName "Xxf86vm" = return "libXxf86vm"
160libNixName "Xxf86vm" = return "libXxf86vm"
161libNixName "zmq" = return "zeromq"
161libNixName "zmq" = return "zeromq"
162libNixName "z" = return "zlib"
162libNixName "z" = return "zlib"
163−libNixName x = return (create ident x)
163+libNixName x = return (fromString x)
164
164
165-- | Map build tool names to Nix attribute names.
165-- | Map build tool names to Nix attribute names.
166buildToolNixName :: String -> [Identifier]
166buildToolNixName :: String -> [Identifier]
@@ -169,4 +169,4 @@ buildToolNixName "cabal" = return "cabal-install"
169buildToolNixName "gtk2hsC2hs" = return "gtk2hs-buildtools"
169buildToolNixName "gtk2hsC2hs" = return "gtk2hs-buildtools"
170buildToolNixName "gtk2hsHookGenerator" = return "gtk2hs-buildtools"
170buildToolNixName "gtk2hsHookGenerator" = return "gtk2hs-buildtools"
171buildToolNixName "gtk2hsTypeGen" = return "gtk2hs-buildtools"
171buildToolNixName "gtk2hsTypeGen" = return "gtk2hs-buildtools"
172−buildToolNixName x = return (create ident x)
172+buildToolNixName x = return (fromString x)
src/Distribution/Nixpkgs/Haskell/FromCabal/Normalize.hs+6−5
@@ -1,18 +1,19 @@
1module Distribution.Nixpkgs.Haskell.FromCabal.Normalize ( normalize, normalizeCabalFlags ) where
1module Distribution.Nixpkgs.Haskell.FromCabal.Normalize ( normalize, normalizeCabalFlags ) where
2
2
3−import Distribution.Nixpkgs.Haskell.FromCabal.CorePackages
4import Data.Function
3import Data.Function
5import Data.List
4import Data.List
6import Data.Set ( Set )
5import Data.Set ( Set )
7import qualified Data.Set as Set
6import qualified Data.Set as Set
7+import Data.String
8import Distribution.Nixpkgs.Haskell
8import Distribution.Nixpkgs.Haskell
9+import Distribution.Nixpkgs.Haskell.FromCabal.CorePackages
9import Distribution.Nixpkgs.Meta
10import Distribution.Nixpkgs.Meta
10import Distribution.Package
11import Distribution.Package
11import Distribution.PackageDescription ( FlagAssignment, FlagName(..) )
12import Distribution.PackageDescription ( FlagAssignment, FlagName(..) )
12import Distribution.Simple.Utils ( lowercase )
13import Distribution.Simple.Utils ( lowercase )
13import Internal.Lens
14import Internal.Lens
14import Internal.Regex ( regsubmatch )
15import Internal.Regex ( regsubmatch )
15−import Language.Nix.Identifier ( ident )
16+import Language.Nix hiding ( quote )
16
17
17normalize :: Derivation -> Derivation
18normalize :: Derivation -> Derivation
18normalize drv = drv
19normalize drv = drv
@@ -24,9 +25,9 @@ normalize drv = drv
24
25
25normalizeBuildInfo :: PackageName -> BuildInfo -> BuildInfo
26normalizeBuildInfo :: PackageName -> BuildInfo -> BuildInfo
26normalizeBuildInfo (PackageName pname) bi = bi
27normalizeBuildInfo (PackageName pname) bi = bi
27− & haskell . contains (create ident pname) .~ False
28+ & haskell %~ (Set.filter (\b -> view localName b /= fromString pname))
28− & tool . contains (create ident pname) .~ False
29+ & tool %~ (Set.filter (\b -> view localName b /= fromString pname))
29− & tool %~ Set.filter (\n -> n^.ident `notElem` coreBuildTools)
30+ & tool %~ Set.filter (\n -> n^.localName.ident `notElem` coreBuildTools)
30
31
31 {-
32 {-
32 {
33 {
src/Distribution/Nixpkgs/Haskell/FromCabal/PostProcess.hs+1
@@ -9,6 +9,7 @@ import Distribution.Nixpkgs.Haskell
9import Distribution.Package
9import Distribution.Package
10import Distribution.Text
10import Distribution.Text
11import Distribution.Version
11import Distribution.Version
12+import Language.Nix ( ) -- IsString instance for Binding
12
13
13postProcess :: Derivation -> Derivation
14postProcess :: Derivation -> Derivation
14postProcess deriv = foldr ($) (fixGtkBuilds deriv) [ f | (Dependency n vr, f) <- hooks, packageName deriv == n, packageVersion deriv `withinRange` vr ]
15postProcess deriv = foldr ($) (fixGtkBuilds deriv) [ f | (Dependency n vr, f) <- hooks, packageName deriv == n, packageVersion deriv `withinRange` vr ]
src/Distribution/Nixpkgs/PackageMap.hs+21−7
@@ -1,18 +1,22 @@
1−module Distribution.Nixpkgs.PackageMap where
1+module Distribution.Nixpkgs.PackageMap
2+ ( PackageMap, readNixpkgPackageMap
3+ , resolve
4+ ) where
2
5
3import qualified Data.Aeson as JSON
6import qualified Data.Aeson as JSON
4import qualified Data.ByteString.Lazy as LBS
7import qualified Data.ByteString.Lazy as LBS
8+import Data.Function
9+import Data.List as List
5import Data.List.Split
10import Data.List.Split
6−import qualified Data.Map as Map
11+import qualified Data.Map.Strict as Map
7import Data.Map.Strict ( Map )
12import Data.Map.Strict ( Map )
13+import Data.Maybe
8import Data.Set ( Set )
14import Data.Set ( Set )
9import qualified Data.Set as Set
15import qualified Data.Set as Set
10−import System.Process
11import Internal.Lens
16import Internal.Lens
12−import Language.Nix.Identifier
13−import Language.Nix.Path
14−import Data.Maybe
15import Internal.PrettyPrinting
17import Internal.PrettyPrinting
18+import Language.Nix
19+import System.Process
16
20
17type PackageMap = Map Identifier (Set Path)
21type PackageMap = Map Identifier (Set Path)
18
22
@@ -42,4 +46,14 @@ parsePackage :: String -> Maybe (Identifier, Path)
42parsePackage x | null x = error "Distribution.Nixpkgs.PackageMap.parsepackage: empty string is no valid identifier"
46parsePackage x | null x = error "Distribution.Nixpkgs.PackageMap.parsepackage: empty string is no valid identifier"
43 | xs <- splitOn "." x = if needsQuoting (head xs)
47 | xs <- splitOn "." x = if needsQuoting (head xs)
44 then Nothing
48 then Nothing
45− else Just (create ident (last xs), create path (map (create ident) (init xs)))
49+ else Just (create ident (last xs), create path (map (create ident) xs))
50+
51+resolve :: PackageMap -> Identifier -> Maybe Binding
52+resolve nixpkgs i = case Map.lookup i nixpkgs of
53+ Nothing -> Nothing
54+ Just ps -> let p = chooseShortestPath (Set.toList ps)
55+ in Just $ create binding (i,p)
56+
57+chooseShortestPath :: [Path] -> Path
58+chooseShortestPath [] = error "chooseShortestPath: called with empty list argument"
59+chooseShortestPath ps = minimumBy (on compare (view (path . to length))) ps
src/Language/Nix/Binding.hs+11−2
@@ -1,20 +1,29 @@
1+{-# LANGUAGE DeriveGeneric #-}
1{-# LANGUAGE TemplateHaskell #-}
2{-# LANGUAGE TemplateHaskell #-}
2
3
3module Language.Nix.Binding ( Binding, binding, localName, reference ) where
4module Language.Nix.Binding ( Binding, binding, localName, reference ) where
4
5
6+import Control.DeepSeq.Generics
7+import Data.String
8+import GHC.Generics ( Generic )
5import Internal.Lens
9import Internal.Lens
10+import Internal.PrettyPrinting
6import Language.Nix.Identifier
11import Language.Nix.Identifier
7import Language.Nix.Path
12import Language.Nix.Path
8−import Internal.PrettyPrinting
9
13
10data Binding = Bind { _localName :: Identifier, _reference :: Path }
14data Binding = Bind { _localName :: Identifier, _reference :: Path }
11− deriving (Show, Eq, Ord)
15+ deriving (Show, Eq, Ord, Generic)
12
16
13makeLenses ''Binding
17makeLenses ''Binding
14
18
15binding :: Lens' Binding (Identifier,Path)
19binding :: Lens' Binding (Identifier,Path)
16binding f (Bind l r) = uncurry Bind `fmap` f (l, r)
20binding f (Bind l r) = uncurry Bind `fmap` f (l, r)
17
21
22+instance IsString Binding where -- TODO: This instance feels dangerous!
23+ fromString s = Bind i (create path [i]) where i = fromString s
24+
25+instance NFData Binding where rnf = genericRnf
26+
18instance Default Binding where
27instance Default Binding where
19 def = Bind def def
28 def = Bind def def
20
29
src/Language/Nix/Path.hs+7−1
@@ -1,8 +1,12 @@
1+{-# LANGUAGE DeriveGeneric #-}
2+
1module Language.Nix.Path ( Path, path ) where
3module Language.Nix.Path ( Path, path ) where
2
4
3import Internal.Lens
5import Internal.Lens
4import Internal.PrettyPrinting ( Pretty (..), char, hcat, punctuate )
6import Internal.PrettyPrinting ( Pretty (..), char, hcat, punctuate )
5import Language.Nix.Identifier
7import Language.Nix.Identifier
8+import Control.DeepSeq.Generics
9+import GHC.Generics ( Generic )
6
10
7-- | Paths are non-empty lists of identifiers in Nix.
11-- | Paths are non-empty lists of identifiers in Nix.
8--
12--
@@ -30,7 +34,9 @@ import Language.Nix.Identifier
30-- *** Exception: invalid Nix path: [Identifier "5ident",Identifier "foo",Identifier "bar"]
34-- *** Exception: invalid Nix path: [Identifier "5ident",Identifier "foo",Identifier "bar"]
31
35
32newtype Path = Path { _segments :: [Identifier] }
36newtype Path = Path { _segments :: [Identifier] }
33− deriving (Show, Eq, Ord)
37+ deriving (Show, Eq, Ord, Generic)
38+
39+instance NFData Path where rnf = genericRnf
34
40
35instance Default Path where def = Path (error "undefined Nix.Path")
41instance Default Path where def = Path (error "undefined Nix.Path")
36
42
src/cabal2nix.hs+11−2
@@ -3,7 +3,7 @@
3
3
4module Main ( main ) where
4module Main ( main ) where
5
5
6−import Distribution.Nixpkgs.Haskell.FromCabal ( cabal2nix )
6+import Distribution.Nixpkgs.Haskell.FromCabal ( fromGenericPackageDescription )
7import Distribution.Nixpkgs.Haskell.FromCabal.Normalize ( normalize )
7import Distribution.Nixpkgs.Haskell.FromCabal.Normalize ( normalize )
8import Internal.HaskellPackage
8import Internal.HaskellPackage
9import Control.Exception ( bracket )
9import Control.Exception ( bracket )
@@ -14,6 +14,9 @@ import Distribution.Nixpkgs.Fetch
14import Distribution.Nixpkgs.Haskell
14import Distribution.Nixpkgs.Haskell
15import Distribution.Nixpkgs.Meta
15import Distribution.Nixpkgs.Meta
16import Distribution.PackageDescription ( FlagName(..), FlagAssignment )
16import Distribution.PackageDescription ( FlagName(..), FlagAssignment )
17+import Distribution.Compiler
18+import Distribution.Version
19+import Distribution.System
17import Distribution.Simple.Utils ( lowercase )
20import Distribution.Simple.Utils ( lowercase )
18import Internal.PrettyPrinting hiding ( (<>) )
21import Internal.PrettyPrinting hiding ( (<>) )
19import Internal.Version
22import Internal.Version
@@ -88,7 +91,13 @@ main = bracket (return ()) (\() -> hFlush stdout >> hFlush stderr) $ \() -> do
88 let flags = readFlagList optFlags
91 let flags = readFlagList optFlags
89
92
90 deriv :: Derivation
93 deriv :: Derivation
94+ deriv = fromGenericPackageDescription (const True)
95+ undefined
96+ (Platform X86_64 Linux)
97+ (unknownCompilerInfo (CompilerId GHC (Version [7,10,2] [])) NoAbiTag)
98+ flags
99+ []
91− deriv = cabal2nix flags (pkgCabal pkg)
100+ (pkgCabal pkg)
92 & src .~ pkgSource pkg
101 & src .~ pkgSource pkg
93 & runHaddock .~ optHaddock
102 & runHaddock .~ optHaddock
94 & jailbreak .~ optJailbreak
103 & jailbreak .~ optJailbreak
src/hackage2nix.hs+27−3809
@@ -3,11 +3,11 @@
3
3
4module Main ( main ) where
4module Main ( main ) where
5
5
6−import Distribution.Nixpkgs.Haskell.FromCabal.Flags ( configureCabalFlags )
6+import Distribution.Nixpkgs.Haskell.FromCabal ( fromGenericPackageDescription )
7−import Distribution.Nixpkgs.Haskell.FromCabal ( cabal2nix' )
8import Distribution.Nixpkgs.Haskell.FromCabal.HackageGit ( readHackage, Hackage )
7import Distribution.Nixpkgs.Haskell.FromCabal.HackageGit ( readHackage, Hackage )
8+import Distribution.Nixpkgs.Haskell.Constraint
9+import Distribution.Nixpkgs.Haskell.FromCabal.Configuration.GHC7102
9import Internal.HaskellPackage
10import Internal.HaskellPackage
10−import Control.Arrow ( second )
11import Control.Monad
11import Control.Monad
12import Control.Monad.Par.Combinator
12import Control.Monad.Par.Combinator
13import Control.Monad.Par.IO
13import Control.Monad.Par.IO
@@ -20,31 +20,28 @@ import Data.Maybe
20import Data.Monoid
20import Data.Monoid
21import Data.Set ( Set )
21import Data.Set ( Set )
22import qualified Data.Set as Set
22import qualified Data.Set as Set
23−import Distribution.Compiler
24import Distribution.Nixpkgs.Fetch
23import Distribution.Nixpkgs.Fetch
25import Distribution.Nixpkgs.Haskell
24import Distribution.Nixpkgs.Haskell
26import Distribution.Nixpkgs.Meta
25import Distribution.Nixpkgs.Meta
27import Distribution.Nixpkgs.PackageMap
26import Distribution.Nixpkgs.PackageMap
28−import Distribution.Package
29import Distribution.PackageDescription hiding ( options, buildDepends, extraLibs, buildTools )
27import Distribution.PackageDescription hiding ( options, buildDepends, extraLibs, buildTools )
30−import Distribution.PackageDescription.Configuration
31−import Distribution.System
32import Distribution.Text
28import Distribution.Text
29+import Distribution.Package
33import Distribution.Version
30import Distribution.Version
34import Internal.Lens
31import Internal.Lens
35import Internal.PrettyPrinting hiding ( attr, (<>) )
32import Internal.PrettyPrinting hiding ( attr, (<>) )
36import Internal.Version
33import Internal.Version
37−import Language.Nix.Identifier
34+import Language.Nix
38−import Language.Nix.Path
39import Options.Applicative
35import Options.Applicative
40import System.FilePath
36import System.FilePath
41
37
38+defaultConfiguration :: Configuration
39+defaultConfiguration = ghc7102
40+
42type Nixpkgs = PackageMap -- Map String (Set [String])
41type Nixpkgs = PackageMap -- Map String (Set [String])
43type PackageSet = Map String Version
42type PackageSet = Map String Version
44type PackageMultiSet = Map String (Set Version)
43type PackageMultiSet = Map String (Set Version)
45
44
46−type Constraint = Dependency
47−
48resolveConstraint :: Constraint -> Hackage -> Version
45resolveConstraint :: Constraint -> Hackage -> Version
49resolveConstraint c = fromMaybe (error ("constraint " ++ display c ++ " cannot be resolved in Hackage")) .
46resolveConstraint c = fromMaybe (error ("constraint " ++ display c ++ " cannot be resolved in Hackage")) .
50 resolveConstraint' c
47 resolveConstraint' c
@@ -54,43 +51,6 @@ resolveConstraint' (Dependency (PackageName name) vrange) hackage | Set.null vs
54 | otherwise = Just (Set.findMax vs)
51 | otherwise = Just (Set.findMax vs)
55 where vs = Set.filter (`withinRange` vrange) (Map.keysSet (hackage Map.! name))
52 where vs = Set.filter (`withinRange` vrange) (Map.keysSet (hackage Map.! name))
56
53
57−satisfiesConstraint :: PackageIdentifier -> Constraint -> Bool
58−satisfiesConstraint (PackageIdentifier pn v) (Dependency cn vr) = (pn /= cn) || (v `withinRange` vr)
59−
60−satisfiesConstraints :: PackageIdentifier -> [Constraint] -> Bool
61−satisfiesConstraints p = all (satisfiesConstraint p)
62−
63−data Configuration = Configuration
64− {
65− -- |Target architecture. Used by 'finalizePackageDescription' to
66− -- choose appropriate flags and dependencies.
67− platform :: Platform
68−
69− -- |Target compiler. Used by 'finalizePackageDescription' to choose
70− -- appropriate flags and dependencies.
71− , compilerInfo :: CompilerInfo
72−
73− -- |Core packages found on Hackageg
74− , corePackages :: [PackageIdentifier]
75−
76− -- |Core packages not found on Hackage.
77− , hardCorePackages :: [PackageIdentifier]
78−
79− -- |These packages replace the latest respective version during
80− -- dependency resolution.
81− , defaultPackageOverrides :: [Constraint]
82−
83− -- |These packages are added to the generated set, but the play no
84− -- role during dependency resolution.
85− , extraPackages :: [Constraint]
86−
87− -- |These packages have not succeeded a build yet, so we give them an
88− -- empty meta.hydraPlatforms attribute to avoid cluttering our Hydra
89− -- output with lots of broken builds.
90− , brokenPackages :: Set PackageName
91− }
92− deriving (Read, Show)
93−
94data Options = Options
54data Options = Options
95 { hackageRepository :: FilePath
55 { hackageRepository :: FilePath
96 , nixpkgsRepository :: FilePath
56 , nixpkgsRepository :: FilePath
@@ -117,7 +77,7 @@ main = do
117 Options {..} <- execParser pinfo
77 Options {..} <- execParser pinfo
118
78
119 hackage <- readHackage hackageRepository
79 hackage <- readHackage hackageRepository
120− nixpkgs <- readNixpkgPackageMap nixpkgsRepository (Just (create path ["pkgs"]))
80+ nixpkgs <- readNixpkgPackageMap nixpkgsRepository Nothing
121 preferredVersions <- readPreferredVersions (hackageRepository </> "preferred-versions")
81 preferredVersions <- readPreferredVersions (hackageRepository </> "preferred-versions")
122 let fixup = Map.delete "acme-everything" -- TODO: https://github.com/NixOS/cabal2nix/issues/164
82 let fixup = Map.delete "acme-everything" -- TODO: https://github.com/NixOS/cabal2nix/issues/164
123 . Map.delete "som" -- TODO: https://github.com/NixOS/cabal2nix/issues/164
83 . Map.delete "som" -- TODO: https://github.com/NixOS/cabal2nix/issues/164
@@ -163,15 +123,15 @@ generatePackageSet config hackage nixpkgs = do
163 , extraPackageSet
123 , extraPackageSet
164 ]
124 ]
165
125
166− knownIdentifierSet :: Set Identifier
167− knownIdentifierSet = Set.map (create ident) (Set.union (Map.keysSet hackage) (Map.keysSet corePackageSet))
168−
169− resolver :: Dependency -> Bool
126+ haskellResolver :: Dependency -> Bool
170− resolver (Dependency (PackageName name) vrange)
127+ haskellResolver (Dependency (PackageName name) vrange)
171 | Just v <- Map.lookup name corePackageSet = v `withinRange` vrange
128 | Just v <- Map.lookup name corePackageSet = v `withinRange` vrange
172 | Just v <- Map.lookup name generatedDefaultPackageSet = v `withinRange` vrange
129 | Just v <- Map.lookup name generatedDefaultPackageSet = v `withinRange` vrange
173 | otherwise = False
130 | otherwise = False
174
131
132+ nixpkgsResolver :: Identifier -> Maybe Binding
133+ nixpkgsResolver = resolve (Map.map (Set.map (over path ("pkgs":))) nixpkgs)
134+
175 liftIO $ do putStrLn "/* hackage-packages.nix is an auto-generated file -- DO NOT EDIT! */"
135 liftIO $ do putStrLn "/* hackage-packages.nix is an auto-generated file -- DO NOT EDIT! */"
176 putStrLn ""
136 putStrLn ""
177 putStrLn "{ pkgs, stdenv, callPackage }:"
137 putStrLn "{ pkgs, stdenv, callPackage }:"
@@ -182,42 +142,13 @@ generatePackageSet config hackage nixpkgs = do
182 defs <- forM (Set.toAscList vs) $ \pkgversion -> do
142 defs <- forM (Set.toAscList vs) $ \pkgversion -> do
183 let -- TODO: Include list of broken dependencies in the generated output.
143 let -- TODO: Include list of broken dependencies in the generated output.
184 descr = hackage Map.! name Map.! pkgversion
144 descr = hackage Map.! name Map.! pkgversion
185− (missingDeps, _, drv') = cabal2nix resolver descr
186−
187− haskellDependencies :: Set Identifier
188− haskellDependencies = Set.unions [ drv'^.x.haskell | x <- [libraryDepends,executableDepends,testDepends] ]
189−
190− systemDependencies :: Set Identifier
191− systemDependencies = Set.unions [ drv'^.x.y | x <- [libraryDepends,executableDepends,testDepends], y <- [system,pkgconfig] ]
192−
193− haskellOrSystemDependencies :: Set Identifier
194− haskellOrSystemDependencies = Set.unions [ drv'^.x.tool | x <- [libraryDepends,executableDepends,testDepends] ]
195−
196− missing :: Set Identifier
197− missing = Set.filter (`Set.notMember` knownIdentifierSet) haskellDependencies
198−
199− buildInputs :: Map Identifier (Maybe Path)
200− buildInputs = Map.unions
201− [ Map.fromList [ (n, Nothing) | n <- Set.toList missing ]
202− , Map.fromList [ (n, resolveNixpkgsIdentifier nixpkgs n) | n <- Set.toAscList systemDependencies ]
203− , Map.fromList [ (n, resolveHackageThenNixpkgsIdentifier nixpkgs hackage n) | n <- Set.toAscList haskellOrSystemDependencies ]
204− ]
205−
206− systemOverrides :: Doc
207− systemOverrides = fsep (map (uncurry formatOverride) (Map.toAscList buildInputs))
208−
209− formatOverride :: Identifier -> Maybe Path -> Doc
210− formatOverride n Nothing = space <> pPrint n <> text " = null;" -- missing dependency
211− formatOverride n (Just p) = case view path p of
212− [] -> error ("internal error: " ++ show n ++ "resolved to empty path!")
213− ["self"] -> mempty -- callPackage finds this package automatically
214− _ -> (text " inherit" <+> parens (pPrint p) <+> pPrint n) <> semi
215
145
216− overrides :: Doc
146+ drv' :: Derivation
217− overrides = systemOverrides
147+ drv' = fromGenericPackageDescription haskellResolver nixpkgsResolver (platform ghc7102) (compilerInfo ghc7102) [] [] descr
218
148
149+ attr :: String
219 attr | Just v <- Map.lookup name generatedDefaultPackageSet, v == pkgversion = name
150 attr | Just v <- Map.lookup name generatedDefaultPackageSet, v == pkgversion = name
220− | otherwise = name ++ '_' : [ if c == '.' then '_' else c | c <- display pkgversion ]
151+ | otherwise = name ++ '_' : [ if c == '.' then '_' else c | c <- display pkgversion ]
221
152
222 sha256 :: String
153 sha256 :: String
223 sha256 | Just x <- lookup "X-Package-SHA256" (customFieldsPD (packageDescription descr)) = x
154 sha256 | Just x <- lookup "X-Package-SHA256" (customFieldsPD (packageDescription descr)) = x
@@ -226,66 +157,25 @@ generatePackageSet config hackage nixpkgs = do
226 srcSpec <- liftIO $ sourceFromHackage (Certain sha256) (name ++ "-" ++ display pkgversion)
157 srcSpec <- liftIO $ sourceFromHackage (Certain sha256) (name ++ "-" ++ display pkgversion)
227
158
228 let drv = drv' & src .~ srcSpec
159 let drv = drv' & src .~ srcSpec
229− & jailbreak .~ (not (null missingDeps) && (name /= "jailbreak-cabal")) -- Dependency constraints aren't fulfilled
160+ -- TODO: & jailbreak .~ (not (null missingDeps) && (name /= "jailbreak-cabal"))
230− & metaSection . broken .~ not (Set.null missing) -- Missing Haskell dependencies!
231 & metaSection.hydraPlatforms .~ (if PackageName name `Set.member` brokenPackages config
161 & metaSection.hydraPlatforms .~ (if PackageName name `Set.member` brokenPackages config
232 then Set.singleton "stdenv.lib.platforms.none"
162 then Set.singleton "stdenv.lib.platforms.none"
233 else drv'^.metaSection.hydraPlatforms)
163 else drv'^.metaSection.hydraPlatforms)
234
164
165+ isFromHackage :: Binding -> Bool
166+ isFromHackage b = ["self"] `isPrefixOf` view (reference . path) b
167+
168+ overrides :: Doc
169+ overrides = fcat $ punctuate space
170+ [ pPrint b | b <- Set.toList (view (dependencies . each) drv), not (isFromHackage b) ]
171+
172+
235 return $ nest 2 $ hang (string attr <+> equals <+> text "callPackage") 2 (parens (pPrint drv)) <+> (braces overrides <> semi)
173 return $ nest 2 $ hang (string attr <+> equals <+> text "callPackage") 2 (parens (pPrint drv)) <+> (braces overrides <> semi)
236 return (intercalate "\n\n" (map render defs))
174 return (intercalate "\n\n" (map render defs))
237
175
238 liftIO $ mapM_ (\pkg -> putStrLn pkg >> putStrLn "") pkgs
176 liftIO $ mapM_ (\pkg -> putStrLn pkg >> putStrLn "") pkgs
239 liftIO $ putStrLn "}"
177 liftIO $ putStrLn "}"
240
178
241−resolveHackageThenNixpkgsIdentifier :: Nixpkgs -> Hackage -> Identifier -> Maybe Path
242−resolveHackageThenNixpkgsIdentifier nixpkgs hackage name
243− | Just _ <- Map.lookup (view ident name) hackage = Just (create path ["self"])
244− | p@(Just _) <- resolveNixpkgsIdentifier nixpkgs name = p
245− | otherwise = Nothing
246−
247−resolveNixpkgsIdentifier :: Nixpkgs -> Identifier -> Maybe Path
248−resolveNixpkgsIdentifier nixpkgs name
249− | name `elem` ["clang","lldb","llvm"] = Just (create path ["self","llvmPackages"])
250− | Just paths <- Map.lookup name nixpkgs = getShortestPath (Set.toList (paths `Set.intersection` goodScopes))
251− | otherwise = Nothing
252−
253−goodScopes :: Set Path
254−goodScopes = Set.fromList (map (create path . ("pkgs":)) [[], ["xlibs"], ["gnome"], ["gnome3"], ["kde4"]])
255−
256−getShortestPath :: [Path] -> Maybe Path
257−getShortestPath [] = Nothing
258−getShortestPath ps = Just (minimumBy (on compare (view (path . to length))) ps)
259−
260−cabal2nix :: (Dependency -> Bool) -> GenericPackageDescription -> ([Dependency], FlagAssignment, Derivation)
261−cabal2nix resolver cabal = (missingDeps, flags, drv)
262− where
263− drv = cabal2nix' descr
264−
265− Right (descr, flags) = finalize (if null missingDeps then resolver else const True) cabal
266−
267− missingDeps :: [Dependency]
268− missingDeps = either id (const []) (finalize resolver cabal')
269−
270− finalize :: (Dependency -> Bool) -> GenericPackageDescription -> Either [Dependency] (PackageDescription, FlagAssignment)
271− finalize resolver' = finalizePackageDescription
272− (configureCabalFlags (package (packageDescription cabal)))
273− resolver'
274− (platform defaultConfiguration)
275− (compilerInfo defaultConfiguration)
276− [] -- no additional constraints
277−
278− -- A variant of the cabal file that has all test suites enabled to ensure
279− -- that their dependencies are recognized by finalizePackageDescription.
280− cabal' :: GenericPackageDescription
281− cabal' = cabal { condTestSuites = flaggedTests }
282−
283− flaggedTests :: [(String, CondTree ConfVar [Dependency] TestSuite)]
284− flaggedTests = map (second (mapTreeData enableTest)) (condTestSuites cabal)
285−
286− enableTest :: TestSuite -> TestSuite
287− enableTest t = t { testEnabled = True }
288−
289readPreferredVersions :: FilePath -> IO [Constraint]
179readPreferredVersions :: FilePath -> IO [Constraint]
290readPreferredVersions p = mapMaybe parsePreferredVersionsLine . lines <$> readFile p
180readPreferredVersions p = mapMaybe parsePreferredVersionsLine . lines <$> readFile p
291
181
@@ -294,3675 +184,3 @@ parsePreferredVersionsLine ('-':'-':_) = Nothing
294parsePreferredVersionsLine l = case simpleParse l of
184parsePreferredVersionsLine l = case simpleParse l of
295 Just c -> Just c
185 Just c -> Just c
296 Nothing -> error ("invalid preferred-versions line: " ++ show l)
186 Nothing -> error ("invalid preferred-versions line: " ++ show l)
297−
298−defaultConfiguration :: Configuration
299−defaultConfiguration = Configuration
300− { platform = Platform X86_64 Linux
301− , compilerInfo = unknownCompilerInfo (CompilerId GHC (Version [7,10,2] [])) NoAbiTag
302−
303− , defaultPackageOverrides = map (\s -> fromMaybe (error (show s ++ " is not a valid override selector")) (simpleParse s))
304− [ "HUnit < 1.3.0.0" -- newer versions break test-framework-hunit-0.3.0.1
305− ]
306−
307− , corePackages = map (\s -> fromMaybe (error (show s ++ " is not a valid core package")) (simpleParse s))
308− [ "Cabal-1.22.4.0"
309− , "array-0.5.1.0"
310− , "base-4.8.1.0"
311− , "binary-0.7.5.0"
312− , "bytestring-0.10.6.0"
313− , "containers-0.5.6.2"
314− , "deepseq-1.4.1.1"
315− , "directory-1.2.2.0"
316− , "filepath-1.4.0.0"
317− , "ghc-prim-0.4.0.0"
318− , "haskeline-0.7.2.1"
319− , "hoopl-3.10.0.2"
320− , "hpc-0.6.0.2"
321− , "integer-gmp-1.0.0.0"
322− , "pretty-1.1.2.0"
323− , "process-1.2.3.0"
324− , "template-haskell-2.10.0.0"
325− , "terminfo-0.4.0.1"
326− , "time-1.5.0.1"
327− , "transformers-0.4.2.0"
328− , "unix-2.7.1.0"
329− , "xhtml-3000.2.1"
330− ]
331−
332− , hardCorePackages = map (\s -> fromMaybe (error (show s ++ " is not a valid core package")) (simpleParse s))
333− [ "bin-package-db-0.0.0.0"
334− , "ghc-7.10.2"
335− , "rts-1.0"
336− ]
337−
338− , extraPackages = map (\s -> fromMaybe (error (show s ++ " is not a valid extra package selector")) (simpleParse s))
339− [ "aeson < 0.8" -- newer versions don't work with GHC 6.12.3
340− , "Cabal == 1.18.*" -- required for cabal-install et al on old GHC versions
341− , "Cabal == 1.20.*" -- required for cabal-install et al on old GHC versions
342− , "cabal-install == 1.18.*" -- required for ghc-mod on 7.8.x
343− , "conduit < 1.2.4.2" -- newer versions trigger non-deterministic ID bugs in GHC versions prior to 7.10.x
344− , "containers < 0.5" -- required to build alex with GHC 6.12.3
345− , "control-monad-free < 0.6" -- newer versions don't compile with anything but GHC 7.8.x
346− , "deepseq == 1.3.0.1" -- required to build Cabal with GHC 6.12.3
347− , "descriptive < 0.1" -- required for structured-haskell-mode-1.0.8
348− , "gloss < 1.9.3" -- new versions don't compile with GHC 7.8.x
349− , "haddock-api < 2.16" -- required on GHC 7.8.x
350− , "haskell-src-exts < 1.16" -- required for structured-haskell-mode-1.0.8
351− , "mtl < 2.2" -- newer versions require transformers > 0.4.x, which we cannot provide in GHC 7.8.x
352− , "mtl-prelude < 2" -- required for to build postgrest on mtl 2.1.x platforms
353− , "parallel == 3.2.0.3" -- newer versions don't work with GHC 6.12.3
354− , "primitive == 0.5.1.*" -- required to build alex with GHC 6.12.3
355− , "QuickCheck < 2" -- required by test-framework-quickcheck and its users
356− , "seqid < 0.2" -- newer versions depend on transformers 0.4.x which we cannot provide in GHC 7.8.x
357− , "seqid-streams < 0.2" -- newer versions depend on transformers 0.4.x which we cannot provide in GHC 7.8.x
358− , "split < 0.2" -- newer versions don't work with GHC 6.12.3
359− , "tar < 0.4.2.0" -- later versions don't work with GHC < 7.6.x
360− , "vector < 0.10.10" -- newer versions don't work with GHC 6.12.3
361− , "zlib < 0.6" -- newer versions break cabal-install
362− ]
363−
364− , brokenPackages = Set.fromList $ map PackageName
365− [ "3dmodels"
366− , "4Blocks"
367− , "abcBridge"
368− , "abstract-par-accelerate"
369− , "abt"
370− , "AC-BuildPlatform"
371− , "accelerate-arithmetic"
372− , "accelerate-fftw"
373− , "accelerate-fourier"
374− , "accelerate-io"
375− , "accelerate-utility"
376− , "accentuateus"
377− , "access-time"
378− , "AC-EasyRaster-GTK"
379− , "AC-HalfInteger"
380− , "ACME"
381− , "acme-hq9plus"
382− , "acme-inator"
383− , "acme-numbersystem"
384− , "acme-schoenfinkel"
385− , "acme-zero"
386− , "AC-MiniTest"
387− , "AC-Terminal"
388− , "ActionKid"
389− , "activehs"
390− , "actor"
391− , "AC-VanillaArray"
392− , "Adaptive"
393− , "Adaptive-Blaisorblade"
394− , "adaptive-containers"
395− , "adaptive-tuple"
396− , "adblock2privoxy"
397− , "adhoc-network"
398− , "adict"
399− , "adobe-swatch-exchange"
400− , "adp-multi"
401− , "adp-multi-monadiccp"
402− , "Advgame"
403− , "AERN-Basics"
404− , "AERN-Net"
405− , "AERN-Real"
406− , "AERN-Real-Double"
407− , "AERN-Real-Interval"
408− , "AERN-RnToRm"
409− , "AERN-RnToRm-Plot"
410− , "aeson-bson"
411− , "AesonBson"
412− , "aeson-native"
413− , "aeson-smart"
414− , "afv"
415− , "Agata"
416− , "agda-server"
417− , "AGI"
418− , "AhoCorasick"
419− , "airbrake"
420− , "aivika-experiment-diagrams"
421− , "aivika-transformers"
422− , "ajhc"
423− , "alea"
424− , "algebraic"
425− , "alms"
426− , "alpha"
427− , "alpino-tools"
428− , "alsa"
429− , "alsa-midi"
430− , "alsa-pcm-tests"
431− , "alsa-seq-tests"
432− , "altfloat"
433− , "alure"
434− , "amazon-emailer"
435− , "amazon-products"
436− , "AMI"
437− , "ampersand"
438− , "anansi-pandoc"
439− , "anatomy"
440− , "android-lint-summary"
441− , "AndroidViewHierarchyImporter"
442− , "angel"
443− , "Animas"
444− , "antfarm"
445− , "anticiv"
446− , "antigate"
447− , "antimirov"
448− , "antlrc"
449− , "anydbm"
450− , "aosd"
451− , "apelsin"
452− , "apiary-helics"
453− , "apiary-purescript"
454− , "apis"
455− , "api-tools"
456− , "apotiki"
457− , "appc"
458− , "app-lens"
459− , "ApplePush"
460− , "AppleScript"
461− , "approx-rand-test"
462− , "arbb-vm"
463− , "arb-fft"
464− , "archiver"
465− , "archlinux"
466− , "archlinux-web"
467− , "arff"
468− , "argparser"
469− , "arguedit"
470− , "ariadne"
471− , "arion"
472− , "armada"
473− , "array-forth"
474− , "ArrayRef"
475− , "arrowapply-utils"
476− , "arrow-improve"
477− , "arrowp"
478− , "ArrowVHDL"
479− , "arx"
480− , "ascii85-conduit"
481− , "asic"
482− , "asil"
483− , "asn1-data"
484− , "AspectAG"
485− , "assimp"
486− , "astrds"
487− , "astview"
488− , "async-extras"
489− , "aterm-utils"
490− , "atlassian-connect-core"
491− , "atlassian-connect-descriptor"
492− , "atom-basic"
493− , "atom-msp430"
494− , "atomo"
495− , "attoparsec-csv"
496− , "attoparsec-iteratee"
497− , "attoparsec-text"
498− , "attoparsec-text-enumerator"
499− , "Attrac"
500− , "atuin"
501− , "augeas"
502− , "augur"
503− , "Aurochs"
504− , "authoring"
505− , "AutoForms"
506− , "autoproc"
507− , "avahi"
508− , "avers"
509− , "AvlTree"
510− , "awesomium"
511− , "awesomium-glut"
512− , "awesomium-raw"
513− , "AWin32Console"
514− , "aws-cloudfront-signer"
515− , "aws-ec2"
516− , "aws-elastic-transcoder"
517− , "aws-kinesis-reshard"
518− , "aws-lambda"
519− , "aws-sdk"
520− , "aws-sdk-text-converter"
521− , "aws-sdk-xml-unordered"
522− , "aws-sign4"
523− , "aws-sns"
524− , "azure-service-api"
525− , "azurify"
526− , "backdropper"
527− , "bag"
528− , "Baggins"
529− , "bamboo"
530− , "bamboo-launcher"
531− , "bamboo-plugin-highlight"
532− , "bamboo-plugin-photo"
533− , "bamboo-theme-blueprint"
534− , "bamboo-theme-mini-html5"
535− , "bamse"
536− , "barcodes-code128"
537− , "barley"
538− , "Barracuda"
539− , "barrie"
540− , "barrier-monad"
541− , "baskell"
542− , "battleships"
543− , "bayes-stack"
544− , "BCMtools"
545− , "beamable"
546− , "beautifHOL"
547− , "bed-and-breakfast"
548− , "Befunge93"
549− , "bein"
550− , "berkeleydb"
551− , "BerkeleyDBXML"
552− , "berp"
553− , "bff"
554− , "bgzf"
555− , "bidirectionalization-combined"
556− , "bidispec"
557− , "billboard-parser"
558− , "billeksah-forms"
559− , "billeksah-main"
560− , "billeksah-pane"
561− , "billeksah-services"
562− , "binary-derive"
563− , "binary-file"
564− , "binary-indexed-tree"
565− , "binary-protocol-zmq"
566− , "binary-streams"
567− , "binary-strict"
568− , "binding-gtk"
569− , "bindings-apr"
570− , "bindings-apr-util"
571− , "bindings-bfd"
572− , "bindings-cctools"
573− , "bindings-codec2"
574− , "bindings-common"
575− , "bindings-dc1394"
576− , "bindings-eskit"
577− , "bindings-EsounD"
578− , "bindings-fann"
579− , "bindings-friso"
580− , "bindings-gts"
581− , "bindings-hdf5"
582− , "bindings-K8055"
583− , "bindings-libftdi"
584− , "bindings-librrd"
585− , "bindings-libstemmer"
586− , "bindings-libv4l2"
587− , "bindings-linux-videodev2"
588− , "bindings-mpdecimal"
589− , "bindings-sc3"
590− , "bindings-sipc"
591− , "bind-marshal"
592− , "bio"
593− , "Biobase"
594− , "BiobaseBlast"
595− , "BiobaseDotP"
596− , "BiobaseFasta"
597− , "BiobaseFR3D"
598− , "BiobaseInfernal"
599− , "BiobaseMAF"
600− , "BiobaseTrainingData"
601− , "BiobaseTurner"
602− , "BiobaseVienna"
603− , "biophd"
604− , "biosff"
605− , "biostockholm"
606− , "bird"
607− , "BirdPP"
608− , "bit-array"
609− , "bitcoin-rpc"
610− , "Bitly"
611− , "bitly-cli"
612− , "bits-conduit"
613− , "bitset"
614− , "bitspeak"
615− , "BitSyntax"
616− , "bittorrent"
617− , "bkr"
618− , "bla"
619− , "black-jewel"
620− , "blakesum"
621− , "blakesum-demo"
622− , "blank-canvas"
623− , "blas"
624− , "blas-hs"
625− , "blaze"
626− , "blaze-html-contrib"
627− , "blaze-html-hexpat"
628− , "blazeMarker"
629− , "blaze-textual-native"
630− , "Blobs"
631− , "blogination"
632− , "BlogLiterately-diagrams"
633− , "Blueprint"
634− , "bluetile"
635− , "board-games"
636− , "bogre-banana"
637− , "Bookshelf"
638− , "boolean-normal-forms"
639− , "bools"
640− , "boolsimplifier"
641− , "boomslang"
642− , "borel"
643− , "bot"
644− , "brainfuck-monad"
645− , "Bravo"
646− , "breakout"
647− , "brians-brain"
648− , "brillig"
649− , "bsd-sysctl"
650− , "bson-generics"
651− , "bson-mapping"
652− , "btree-concurrent"
653− , "buildbox-tools"
654− , "buildwrapper"
655− , "bullet"
656− , "buster"
657− , "Buster"
658− , "buster-gtk"
659− , "buster-network"
660− , "bytable"
661− , "bytestring-class"
662− , "bytestring-csv"
663− , "bytestringparser"
664− , "bytestring-plain"
665− , "bytestringreadp"
666− , "bytestring-rematch"
667− , "bytestring-short"
668− , "cabal2arch"
669− , "cabal2doap"
670− , "cabal2spec"
671− , "cabal-constraints"
672− , "cabal-dev"
673− , "cabal-ghci"
674− , "cabalgraph"
675− , "cabal-graphdeps"
676− , "cabal-install-bundle"
677− , "cabal-install-ghc72"
678− , "cabal-install-ghc74"
679− , "cabalmdvrpm"
680− , "cabal-query"
681− , "cabalrpmdeps"
682− , "cabal-scripts"
683− , "cabal-setup"
684− , "cabal-test"
685− , "cabal-upload"
686− , "cabocha"
687− , "cake3"
688− , "cakyrespa"
689− , "cal3d"
690− , "cal3d-examples"
691− , "cal3d-opengl"
692− , "calc"
693− , "caldims"
694− , "caledon"
695− , "call-haskell-from-anything"
696− , "campfire"
697− , "cantor"
698− , "cao"
699− , "cap"
700− , "Capabilities"
701− , "capri"
702− , "carboncopy"
703− , "carettah"
704− , "casadi-bindings"
705− , "casadi-bindings-control"
706− , "casadi-bindings-core"
707− , "casadi-bindings-internal"
708− , "casadi-bindings-ipopt-interface"
709− , "casadi-bindings-snopt-interface"
710− , "Cascade"
711− , "cascading"
712− , "cash"
713− , "cassandra-thrift"
714− , "cassava-streams"
715− , "cassy"
716− , "casui"
717− , "Catana"
718− , "catch-fd"
719− , "categorical-algebra"
720− , "category-extras"
721− , "CBOR"
722− , "CC-delcont"
723− , "CC-delcont-alt"
724− , "CC-delcont-cxe"
725− , "CC-delcont-exc"
726− , "CC-delcont-ref"
727− , "CC-delcont-ref-tf"
728− , "cci"
729− , "cctools-workqueue"
730− , "cedict"
731− , "ceilometer-common"
732− , "cereal-enumerator"
733− , "cereal-ieee754"
734− , "cereal-plus"
735− , "certificate"
736− , "cf"
737− , "cfipu"
738− , "cflp"
739− , "cfopu"
740− , "cgen"
741− , "cgi-utils"
742− , "chalkboard"
743− , "chalkboard-viewer"
744− , "charade"
745− , "Chart-diagrams"
746− , "chatter"
747− , "checked"
748− , "check-pvp"
749− , "chevalier-common"
750− , "Chitra"
751− , "chp"
752− , "chp-mtl"
753− , "chp-plus"
754− , "chp-spec"
755− , "chp-transformers"
756− , "ChristmasTree"
757− , "chronograph"
758− , "chuchu"
759− , "chunks"
760− , "church-list"
761− , "cil"
762− , "cinvoke"
763− , "c-io"
764− , "cio"
765− , "citation-resolve"
766− , "citeproc-hs"
767− , "citeproc-hs-pandoc-filter"
768− , "cjk"
769− , "clac"
770− , "clafer"
771− , "claferIG"
772− , "claferwiki"
773− , "CLASE"
774− , "clash"
775− , "clash-ghc"
776− , "clash-prelude"
777− , "clash-prelude-quickcheck"
778− , "clash-systemverilog"
779− , "clash-vhdl"
780− , "ClassLaws"
781− , "ClassyPrelude"
782− , "clckwrks"
783− , "clckwrks-cli"
784− , "clckwrks-dot-com"
785− , "clckwrks-plugin-bugs"
786− , "clckwrks-plugin-ircbot"
787− , "clckwrks-plugin-media"
788− , "clckwrks-plugin-page"
789− , "clckwrks-theme-bootstrap"
790− , "clckwrks-theme-clckwrks"
791− , "clckwrks-theme-geo-bootstrap"
792− , "Clean"
793− , "clevercss"
794− , "clifford"
795− , "clipper"
796− , "clippings"
797− , "clocked"
798− , "clogparse"
799− , "clone-all"
800− , "cloudfront-signer"
801− , "cloud-haskell"
802− , "cloudyfs"
803− , "clua"
804− , "cluss"
805− , "clustering"
806− , "clustertools"
807− , "clutterhs"
808− , "cmaes"
809− , "cmath"
810− , "cmathml3"
811− , "CMCompare"
812− , "cmdargs-browser"
813− , "cmdtheline"
814− , "cmonad"
815− , "cnc-spec-compiler"
816− , "cndict"
817− , "Coadjute"
818− , "Codec-Image-DevIL"
819− , "codec-libevent"
820− , "codecov-haskell"
821− , "codemonitor"
822− , "codepad"
823− , "cognimeta-utils"
824− , "coinbase-exchange"
825− , "colada"
826− , "collada-output"
827− , "collada-types"
828− , "collections"
829− , "collections-api"
830− , "collections-base-instances"
831− , "coltrane"
832− , "com"
833− , "combinat"
834− , "combinat-diagrams"
835− , "combinatorial-problems"
836− , "combinator-interactive"
837− , "Combinatorrent"
838− , "Commando"
839− , "commodities"
840− , "commsec"
841− , "commsec-keyexchange"
842− , "comonad-extras"
843− , "comonad-random"
844− , "compact-map"
845− , "compact-string"
846− , "compilation"
847− , "complexity"
848− , "compose-trans"
849− , "compression"
850− , "compstrat"
851− , "comptrans"
852− , "computational-algebra"
853− , "concraft"
854− , "concraft-hr"
855− , "concraft-pl"
856− , "concrete-typerep"
857− , "concurrent-state"
858− , "ConcurrentUtils"
859− , "condor"
860− , "Condor"
861− , "condorcet"
862− , "conductive-clock"
863− , "conductive-hsc3"
864− , "conduit-audio-lame"
865− , "conduit-audio-samplerate"
866− , "conduit-iconv"
867− , "conduit-network-stream"
868− , "conduit-resumablesink"
869− , "Configger"
870− , "config-select"
871− , "conjure"
872− , "consistent"
873− , "const-math-ghc-plugin"
874− , "constrained-categories"
875− , "constructive-algebra"
876− , "consul-haskell"
877− , "Consumer"
878− , "context-stack"
879− , "continue"
880− , "continuum"
881− , "continuum-client"
882− , "Contract"
883− , "control-event"
884− , "control-monad-attempt"
885− , "control-monad-exception-mtl"
886− , "control-monad-failure"
887− , "control-monad-failure-mtl"
888− , "Control-Monad-MultiPass"
889− , "Control-Monad-ST2"
890− , "contstuff-monads-tf"
891− , "contstuff-transformers"
892− , "convertible-ascii"
893− , "convertible-text"
894− , "copilot"
895− , "copilot-c99"
896− , "copilot-cbmc"
897− , "copilot-core"
898− , "copilot-language"
899− , "copilot-libraries"
900− , "copilot-sbv"
901− , "COrdering"
902− , "core"
903− , "corebot-bliki"
904− , "CoreErlang"
905− , "CoreFoundation"
906− , "core-haskell"
907− , "Coroutine"
908− , "coroutine-iteratee"
909− , "CouchDB"
910− , "couchdb-conduit"
911− , "couchdb-enumerator"
912− , "couch-hs"
913− , "court"
914− , "CPBrainfuck"
915− , "cpio-conduit"
916− , "CPL"
917− , "cplusplus-th"
918− , "cpsa"
919− , "cpuperf"
920− , "cpython"
921− , "cqrs"
922− , "cqrs-example"
923− , "cqrs-postgresql"
924− , "cqrs-sqlite3"
925− , "cqrs-test"
926− , "cqrs-types"
927− , "cr"
928− , "crack"
929− , "Craft3e"
930− , "craftwerk"
931− , "craftwerk-cairo"
932− , "craftwerk-gtk"
933− , "crc16"
934− , "crf-chain1"
935− , "crf-chain1-constrained"
936− , "crf-chain2-generic"
937− , "crf-chain2-tiers"
938− , "criterion-plus"
939− , "crocodile"
940− , "crunghc"
941− , "crypto-cipher-benchmarks"
942− , "cryptsy-api"
943− , "crystalfontz"
944− , "cse-ghc-plugin"
945− , "csound-catalog"
946− , "csound-expression"
947− , "csound-expression-opcodes"
948− , "csound-expression-typed"
949− , "csound-sampler"
950− , "csp"
951− , "cspmchecker"
952− , "CSPM-cspm"
953− , "CSPM-FiringRules"
954− , "CSPM-Frontend"
955− , "CSPM-Interpreter"
956− , "CSPM-ToProlog"
957− , "css"
958− , "ctemplate"
959− , "ctkl"
960− , "ctpl"
961− , "cudd"
962− , "curry-base"
963− , "CurryDB"
964− , "curry-frontend"
965− , "cursedcsv"
966− , "curves"
967− , "CV"
968− , "cypher"
969− , "dag"
970− , "DAG-Tournament"
971− , "Dangerous"
972− , "dao"
973− , "Dao"
974− , "dapi"
975− , "darcs2dot"
976− , "darcs-benchmark"
977− , "darcs-beta"
978− , "darcs-buildpackage"
979− , "darcs-cabalized"
980− , "darcsden"
981− , "darcs-graph"
982− , "DarcsHelpers"
983− , "darcs-monitor"
984− , "darcs-scripts"
985− , "darcswatch"
986− , "darkplaces-demo"
987− , "data-cycle"
988− , "data-dispersal"
989− , "data-easy"
990− , "data-extra"
991− , "data-ivar"
992− , "data-lens-ixset"
993− , "datalog"
994− , "data-named"
995− , "data-nat"
996− , "data-object-json"
997− , "data-object-yaml"
998− , "data-quotientref"
999− , "data-rope"
1000− , "Data-Rope"
1001− , "data-store"
1002− , "DataTreeView"
1003− , "data-type"
1004− , "dbjava"
1005− , "d-bus"
1006− , "DBus"
1007− , "dbus-client"
1008− , "dbus-core"
1009− , "dclabel"
1010− , "ddc-build"
1011− , "ddc-core"
1012− , "ddc-core-eval"
1013− , "ddc-core-flow"
1014− , "ddc-core-llvm"
1015− , "ddc-core-salt"
1016− , "ddc-core-simpl"
1017− , "ddc-core-tetra"
1018− , "ddc-driver"
1019− , "ddci-core"
1020− , "ddc-source-tetra"
1021− , "ddc-tools"
1022− , "Deadpan-DDP"
1023− , "dead-simple-json"
1024− , "decepticons"
1025− , "DecisionTree"
1026− , "decoder-conduit"
1027− , "dedukti"
1028− , "deeplearning-hs"
1029− , "deepseq-bounded"
1030− , "deepseq-th"
1031− , "deepzoom"
1032− , "defargs"
1033− , "DefendTheKing"
1034− , "definitive-base"
1035− , "definitive-filesystem"
1036− , "definitive-graphics"
1037− , "definitive-parser"
1038− , "definitive-reactive"
1039− , "definitive-sound"
1040− , "deka"
1041− , "deka-tests"
1042− , "delicious"
1043− , "delta-h"
1044− , "demarcate"
1045− , "denominate"
1046− , "depends"
1047− , "dephd"
1048− , "dequeue"
1049− , "derangement"
1050− , "derivation-trees"
1051− , "derive-gadt"
1052− , "derive-IG"
1053− , "derive-topdown"
1054− , "derive-trie"
1055− , "derp-lib"
1056− , "dewdrop"
1057− , "Dflow"
1058− , "dfsbuild"
1059− , "dgim"
1060− , "dgs"
1061− , "diagrams-builder"
1062− , "diagrams-canvas"
1063− , "diagrams-haddock"
1064− , "diagrams-hsqml"
1065− , "diagrams-pdf"
1066− , "diagrams-pgf"
1067− , "diagrams-qrcode"
1068− , "diagrams-tikz"
1069− , "dice-entropy-conduit"
1070− , "dicom"
1071− , "dictparser"
1072− , "diffcabal"
1073− , "DifferenceLogic"
1074− , "DifferentialEvolution"
1075− , "digestive-functors-hsp"
1076− , "DimensionalHash"
1077− , "dingo-core"
1078− , "dingo-example"
1079− , "dingo-widgets"
1080− , "diophantine"
1081− , "direct-binary-files"
1082− , "directed-cubical"
1083− , "direct-fastcgi"
1084− , "direct-http"
1085− , "direct-plugins"
1086− , "DirectSound"
1087− , "dirfiles"
1088− , "discount"
1089− , "disjoint-set"
1090− , "DisTract"
1091− , "distributed-process-async"
1092− , "distributed-process-azure"
1093− , "distributed-process-client-server"
1094− , "distributed-process-execution"
1095− , "distributed-process-extras"
1096− , "distributed-process-platform"
1097− , "distributed-process-registry"
1098− , "distributed-process-supervisor"
1099− , "distributed-process-task"
1100− , "distributed-process-tests"
1101− , "distributed-process-zookeeper"
1102− , "distribution"
1103− , "distribution-plot"
1104− , "dist-upload"
1105− , "djinn-th"
1106− , "DnaProteinAlignment"
1107− , "dnscache"
1108− , "dnssd"
1109− , "doccheck"
1110− , "docidx"
1111− , "docker"
1112− , "dockercook"
1113− , "doc-review"
1114− , "DocTest"
1115− , "doctest-discover"
1116− , "doctest-discover-configurator"
1117− , "DOM"
1118− , "download"
1119− , "download-media-content"
1120− , "DP"
1121− , "dph-examples"
1122− , "dph-lifted-base"
1123− , "dph-lifted-copy"
1124− , "dph-lifted-vseg"
1125− , "dph-par"
1126− , "dph-prim-par"
1127− , "dph-seq"
1128− , "DPM"
1129− , "drClickOn"
1130− , "DrHylo"
1131− , "DrIFT"
1132− , "DrIFT-cabalized"
1133− , "dropbox-sdk"
1134− , "dropsolve"
1135− , "ds-kanren"
1136− , "dsmc"
1137− , "dsmc-tools"
1138− , "dsp"
1139− , "DSTM"
1140− , "dstring"
1141− , "dtab"
1142− , "DTC"
1143− , "dtd"
1144− , "dtd-text"
1145− , "dtd-types"
1146− , "dtw"
1147− , "duplo"
1148− , "Dust"
1149− , "Dust-crypto"
1150− , "Dust-tools"
1151− , "Dust-tools-pcap"
1152− , "dvda"
1153− , "dvdread"
1154− , "dx9base"
1155− , "dx9d3d"
1156− , "dx9d3dx"
1157− , "dynamic-object"
1158− , "dynamic-plot"
1159− , "dynamic-pp"
1160− , "DynamicTimeWarp"
1161− , "dynobud"
1162− , "DysFRP-Cairo"
1163− , "DysFRP-Craftwerk"
1164− , "easy-api"
1165− , "easyjson"
1166− , "easyplot"
1167− , "easyrender"
1168− , "ecdsa"
1169− , "ecu"
1170− , "ed25519"
1171− , "edenmodules"
1172− , "edenskel"
1173− , "edentv"
1174− , "edge"
1175− , "EdisonCore"
1176− , "editable"
1177− , "edit-lenses"
1178− , "editline"
1179− , "EditTimeReport"
1180− , "EEConfig"
1181− , "effective-aspects"
1182− , "effective-aspects-mzv"
1183− , "effect-monad"
1184− , "egison-quote"
1185− , "ehaskell"
1186− , "ehs"
1187− , "eibd-client-simple"
1188− , "eithers"
1189− , "EitherT"
1190− , "Elm"
1191− , "elm-build-lib"
1192− , "elm-compiler"
1193− , "elm-get"
1194− , "elm-make"
1195− , "elm-package"
1196− , "elm-reactor"
1197− , "elm-repl"
1198− , "elm-server"
1199− , "elm-yesod"
1200− , "email"
1201− , "email-header"
1202− , "email-postmark"
1203− , "embeddock"
1204− , "embeddock-example"
1205− , "embroidery"
1206− , "emgm"
1207− , "Emping"
1208− , "empty"
1209− , "Encode"
1210− , "enumfun"
1211− , "EnumMap"
1212− , "enummapmap"
1213− , "env-parser"
1214− , "epoll"
1215− , "epubname"
1216− , "Eq"
1217− , "equational-reasoning"
1218− , "erlang"
1219− , "eros-client"
1220− , "error-message"
1221− , "ersatz"
1222− , "ersatz-toysat"
1223− , "esotericbot"
1224− , "EsounD"
1225− , "estimators"
1226− , "estreps"
1227− , "Etage"
1228− , "Etage-Graph"
1229− , "EtaMOO"
1230− , "eternal"
1231− , "Eternal10Seconds"
1232− , "Etherbunny"
1233− , "ethereum-client-haskell"
1234− , "ethereum-merkle-patricia-db"
1235− , "euphoria"
1236− , "eurofxref"
1237− , "Euterpea"
1238− , "event-driven"
1239− , "event-monad"
1240− , "EventSocket"
1241− , "every-bit-counts"
1242− , "ewe"
1243− , "exif"
1244− , "exists"
1245− , "expand"
1246− , "expat-enumerator"
1247− , "explain"
1248− , "explicit-sharing"
1249− , "explore"
1250− , "exposed-containers"
1251− , "exp-pairs"
1252− , "extcore"
1253− , "extemp"
1254− , "extended-categories"
1255− , "external-sort"
1256− , "ez-couch"
1257− , "faceted"
1258− , "factual-api"
1259− , "FailureT"
1260− , "fallingblocks"
1261− , "falling-turnip"
1262− , "fastirc"
1263− , "fast-tags"
1264− , "fault-tree"
1265− , "fay-hsx"
1266− , "fcd"
1267− , "fckeditor"
1268− , "FComp"
1269− , "fdo-trash"
1270− , "feed2lj"
1271− , "feed2twitter"
1272− , "feed-cli"
1273− , "feldspar-compiler"
1274− , "feldspar-language"
1275− , "fences"
1276− , "fenfire"
1277− , "FermatsLastMargin"
1278− , "FerryCore"
1279− , "ffeed"
1280− , "ffmpeg-tutorials"
1281− , "fibon"
1282− , "fields"
1283− , "FieldTrip"
1284− , "fieldwise"
1285− , "FileManip"
1286− , "FileManipCompat"
1287− , "FileSystem"
1288− , "filesystem-conduit"
1289− , "filesystem-enumerator"
1290− , "Finance-Quote-Yahoo"
1291− , "Finance-Treasury"
1292− , "find-conduit"
1293− , "FiniteMap"
1294− , "firstify"
1295− , "FirstOrderTheory"
1296− , "fit"
1297− , "fitsio"
1298− , "fixed-point"
1299− , "fixed-point-vector"
1300− , "fixed-point-vector-space"
1301− , "fixed-precision"
1302− , "fixed-storable-array"
1303− , "fix-parser-simple"
1304− , "fixplate"
1305− , "fix-symbols-gitit"
1306− , "flexiwrap"
1307− , "flexiwrap-smallcheck"
1308− , "flickr"
1309− , "Flippi"
1310− , "flite"
1311− , "flo"
1312− , "floating-bits"
1313− , "flow2dot"
1314− , "flowdock-api"
1315− , "flower"
1316− , "flowlocks-framework"
1317− , "flowsim"
1318− , "FModExRaw"
1319− , "FM-SBLEX"
1320− , "foldl-incremental"
1321− , "folds"
1322− , "folds-common"
1323− , "follower"
1324− , "Folly"
1325− , "foma"
1326− , "font-opengl-basic4x6"
1327− , "foo"
1328− , "forbidden-fruit"
1329− , "fordo"
1330− , "for-free"
1331− , "formal"
1332− , "format"
1333− , "format-status"
1334− , "forml"
1335− , "formlets"
1336− , "formlets-hsp"
1337− , "ForSyDe"
1338− , "forth-hll"
1339− , "Foster"
1340− , "fpco-api"
1341− , "fpnla-examples"
1342− , "FPretty"
1343− , "frag"
1344− , "franchise"
1345− , "Frank"
1346− , "free-game"
1347− , "freekick2"
1348− , "freenect"
1349− , "free-operational"
1350− , "freesect"
1351− , "freesound"
1352− , "free-theorems"
1353− , "free-theorems-counterexamples"
1354− , "free-theorems-seq"
1355− , "free-theorems-seq-webui"
1356− , "free-theorems-webui"
1357− , "FreeTypeGL"
1358− , "frp-arduino"
1359− , "fs-events"
1360− , "fsmActions"
1361− , "fswatcher"
1362− , "ftdi"
1363− , "ftp-conduit"
1364− , "ftshell"
1365− , "full-sessions"
1366− , "fullstop"
1367− , "functional-arrow"
1368− , "function-combine"
1369− , "functor-apply"
1370− , "functorm"
1371− , "funion"
1372− , "funsat"
1373− , "future"
1374− , "fuzzytime"
1375− , "gact"
1376− , "gameclock"
1377− , "game-of-life"
1378− , "Ganymede"
1379− , "gc-monitoring-wai"
1380− , "gdiff-ig"
1381− , "gdiff-th"
1382− , "geek"
1383− , "geek-server"
1384− , "gemstone"
1385− , "gencheck"
1386− , "gender"
1387− , "genders"
1388− , "general-prelude"
1389− , "GeneralTicTacToe"
1390− , "generators"
1391− , "generic-church"
1392− , "genericserialize"
1393− , "generic-storable"
1394− , "generic-xml"
1395− , "genetics"
1396− , "GenI"
1397− , "geniconvert"
1398− , "geni-gui"
1399− , "geniserver"
1400− , "geni-util"
1401− , "GenSmsPdu"
1402− , "geodetics"
1403− , "GeoIp"
1404− , "GeomPredicates-SSE"
1405− , "getemx"
1406− , "getflag"
1407− , "ggtsTC"
1408− , "ghc-dup"
1409− , "ghc-events-analyze"
1410− , "ghc-events-parallel"
1411− , "ghc-exactprint"
1412− , "ghci-haskeline"
1413− , "ghci-ng"
1414− , "ghclive"
1415− , "ghc-parmake"
1416− , "ghc-pkg-autofix"
1417− , "ghc-pkg-lib"
1418− , "ghc-server"
1419− , "ghc-syb"
1420− , "GHood"
1421− , "ght"
1422− , "ginsu"
1423− , "gipeda"
1424− , "gist"
1425− , "git-all"
1426− , "git-checklist"
1427− , "git-date"
1428− , "gitdo"
1429− , "git-gpush"
1430− , "gitlib-cross"
1431− , "gitlib-libgit2"
1432− , "gitlib-s3"
1433− , "gitlib-utils"
1434− , "git-monitor"
1435− , "git-repair"
1436− , "gitson"
1437− , "glade"
1438− , "gladexml-accessor"
1439− , "GLFW-OGL"
1440− , "glider-nlp"
1441− , "global"
1442− , "glome-hs"
1443− , "GlomeTrace"
1444− , "GlomeView"
1445− , "gloss-devil"
1446− , "gmap"
1447− , "gmndl"
1448− , "gnome-desktop"
1449− , "gnome-keyring"
1450− , "gnomevfs"
1451− , "g-npm"
1452− , "goa"
1453− , "goatee"
1454− , "goatee-gtk"
1455− , "gofer-prelude"
1456− , "google-drive"
1457− , "google-html5-slide"
1458− , "google-mail-filters"
1459− , "googleplus"
1460− , "GoogleSB"
1461− , "google-search"
1462− , "gopherbot"
1463− , "gpah"
1464− , "GPipe"
1465− , "GPipe-Collada"
1466− , "GPipe-Examples"
1467− , "GPipe-TextureLoad"
1468− , "gps"
1469− , "gps2htmlReport"
1470− , "GPX"
1471− , "gpx-conduit"
1472− , "grapefruit-examples"
1473− , "grapefruit-frp"
1474− , "grapefruit-records"
1475− , "grapefruit-ui"
1476− , "grapefruit-ui-gtk"
1477− , "Graph500"
1478− , "graphbuilder"
1479− , "GraphHammer"
1480− , "GraphHammer-examples"
1481− , "graphicsFormats"
1482− , "graphics-formats-collada"
1483− , "graphicstools"
1484− , "graph-rewriting"
1485− , "graph-rewriting-cl"
1486− , "graph-rewriting-gl"
1487− , "graph-rewriting-lambdascope"
1488− , "graph-rewriting-layout"
1489− , "graph-rewriting-ski"
1490− , "graph-rewriting-strategies"
1491− , "graph-rewriting-trs"
1492− , "graph-rewriting-ww"
1493− , "graphtype"
1494− , "graph-utils"
1495− , "greencard"
1496− , "greencard-lib"
1497− , "greg-client"
1498− , "Grempa"
1499− , "gridland"
1500− , "grm"
1501− , "Grow"
1502− , "GrowlNotify"
1503− , "gruff"
1504− , "gruff-examples"
1505− , "gsl-random"
1506− , "gsl-random-fu"
1507− , "gsmenu"
1508− , "gstreamer"
1509− , "GTALib"
1510− , "gtfs"
1511− , "gtk2hs-cast-glade"
1512− , "gtk2hs-cast-gnomevfs"
1513− , "gtk2hs-cast-gtk"
1514− , "gtk2hs-cast-gtkglext"
1515− , "Gtk2hsGenerics"
1516− , "gtk2hs-rpn"
1517− , "gtk3-mac-integration"
1518− , "gtkglext"
1519− , "GtkGLTV"
1520− , "gtkimageview"
1521− , "gtk-mac-integration"
1522− , "gtkrsync"
1523− , "gtk-serialized-event"
1524− , "gtk-toy"
1525− , "guess-combinator"
1526− , "GuiHaskell"
1527− , "GuiTV"
1528− , "h2048"
1529− , "haar"
1530− , "Hach"
1531− , "hack2-handler-happstack-server"
1532− , "hack2-handler-mongrel2-http"
1533− , "hack2-handler-warp"
1534− , "hack2-interface-wai"
1535− , "hackage2hwn"
1536− , "hackage2twitter"
1537− , "hackage-mirror"
1538− , "hackage-proxy"
1539− , "hackage-server"
1540− , "hackage-sparks"
1541− , "hack-contrib"
1542− , "hack-contrib-press"
1543− , "hackernews"
1544− , "hack-frontend-happstack"
1545− , "hack-handler-epoll"
1546− , "hack-handler-evhttp"
1547− , "hack-handler-fastcgi"
1548− , "hack-handler-happstack"
1549− , "hack-handler-hyena"
1550− , "hack-handler-kibro"
1551− , "hack-handler-simpleserver"
1552− , "HackMail"
1553− , "hack-middleware-cleanpath"
1554− , "hack-middleware-clientsession"
1555− , "hack-middleware-jsonp"
1556− , "hackport"
1557− , "hactor"
1558− , "haddock-leksah"
1559− , "haddocset"
1560− , "haggis"
1561− , "Haggressive"
1562− , "hairy"
1563− , "hakaru"
1564− , "hakismet"
1565− , "hakyll-blaze-templates"
1566− , "hakyll-contrib"
1567− , "hakyll-contrib-links"
1568− , "hakyll-convert"
1569− , "hakyll-elm"
1570− , "hakyll-R"
1571− , "halberd"
1572− , "HaLeX"
1573− , "halfs"
1574− , "halipeto"
1575− , "halive"
1576− , "hampp"
1577− , "hamtmap"
1578− , "hamusic"
1579− , "handle-like"
1580− , "hans"
1581− , "hans-pcap"
1582− , "happindicator"
1583− , "happindicator3"
1584− , "happraise"
1585− , "HAppS-Data"
1586− , "HAppSHelpers"
1587− , "happs-hsp"
1588− , "happs-hsp-template"
1589− , "HAppS-IxSet"
1590− , "HAppS-Server"
1591− , "HAppS-State"
1592− , "happstack-auth"
1593− , "happstack-contrib"
1594− , "happstack-data"
1595− , "happstack-dlg"
1596− , "happstack-facebook"
1597− , "happstack-fay"
1598− , "happstack-foundation"
1599− , "happstack-heist"
1600− , "happstack-helpers"
1601− , "happstack-hsp"
1602− , "happstack-ixset"
1603− , "happstack-monad-peel"
1604− , "happstack-plugins"
1605− , "happstack-state"
1606− , "happstack-util"
1607− , "happstack-yui"
1608− , "happs-tutorial"
1609− , "HAppS-Util"
1610− , "happybara"
1611− , "happybara-webkit"
1612− , "happybara-webkit-server"
1613− , "harchive"
1614− , "hark"
1615− , "HARM"
1616− , "HarmTrace"
1617− , "HarmTrace-Base"
1618− , "has"
1619− , "hascal"
1620− , "hascat"
1621− , "hascat-lib"
1622− , "hascat-setup"
1623− , "hascat-system"
1624− , "Haschoo"
1625− , "HasGP"
1626− , "hash"
1627− , "hashable-generics"
1628− , "hashed-storage"
1629− , "Hashell"
1630− , "hasim"
1631− , "hask"
1632− , "haskanoid"
1633− , "haskarrow"
1634− , "haskeem"
1635− , "haskeline-class"
1636− , "haskell2010"
1637− , "haskell98"
1638− , "haskell-aliyun"
1639− , "haskell-awk"
1640− , "haskell-bcrypt"
1641− , "haskell-brainfuck"
1642− , "haskell-cnc"
1643− , "haskell-course-preludes"
1644− , "haskelldb-connect-hdbc"
1645− , "haskelldb-connect-hdbc-catchio-mtl"
1646− , "haskelldb-connect-hdbc-catchio-tf"
1647− , "haskelldb-connect-hdbc-catchio-transformers"
1648− , "haskelldb-connect-hdbc-lifted"
1649− , "haskelldb-dynamic"
1650− , "haskelldb-hdbc"
1651− , "haskelldb-hdbc-mysql"
1652− , "haskelldb-hdbc-odbc"
1653− , "haskelldb-hdbc-postgresql"
1654− , "haskelldb-hdbc-sqlite3"
1655− , "haskelldb-hsql"
1656− , "haskelldb-hsql-mysql"
1657− , "haskelldb-hsql-odbc"
1658− , "haskelldb-hsql-postgresql"
1659− , "haskelldb-hsql-sqlite3"
1660− , "haskelldb-wx"
1661− , "haskell-docs"
1662− , "haskell-formatter"
1663− , "haskell-ftp"
1664− , "haskell-in-space"
1665− , "haskell-neo4j-client"
1666− , "HaskellNN"
1667− , "Haskelloids"
1668− , "haskell-openflow"
1669− , "haskell-pdf-presenter"
1670− , "haskell-platform-test"
1671− , "haskell-plot"
1672− , "haskell-reflect"
1673− , "haskell-rules"
1674− , "haskellscrabble"
1675− , "haskell-src-meta-mwotton"
1676− , "HaskellTorrent"
1677− , "haskell-type-exts"
1678− , "haskell-tyrant"
1679− , "haskell-xmpp"
1680− , "haskelm"
1681− , "haskgame"
1682− , "haskheap"
1683− , "haskhol-core"
1684− , "hask-home"
1685− , "haskmon"
1686− , "haskoin"
1687− , "haskoin-crypto"
1688− , "haskoin-protocol"
1689− , "haskoin-script"
1690− , "haskoin-util"
1691− , "haskoin-wallet"
1692− , "haskoon"
1693− , "haskoon-httpspec"
1694− , "haskoon-salvia"
1695− , "haskore"
1696− , "haskore-realtime"
1697− , "haskore-supercollider"
1698− , "haskore-synthesizer"
1699− , "haskore-vintage"
1700− , "haslo"
1701− , "hasloGUI"
1702− , "hasparql-client"
1703− , "hastache-aeson"
1704− , "haste-compiler"
1705− , "haste-perch"
1706− , "has-th"
1707− , "hatex-guide"
1708− , "HaTeX-meta"
1709− , "haverer"
1710− , "HaVSA"
1711− , "hawitter"
1712− , "Hawk"
1713− , "haxparse"
1714− , "hayland"
1715− , "Hayoo"
1716− , "hayoo-cli"
1717− , "hback"
1718− , "hbayes"
1719− , "hBDD-CMUBDD"
1720− , "hBDD-CUDD"
1721− , "hbeat"
1722− , "hblas"
1723− , "hblock"
1724− , "h-booru"
1725− , "hburg"
1726− , "HCard"
1727− , "hcheat"
1728− , "hchesslib"
1729− , "HCL"
1730− , "hcron"
1731− , "hCsound"
1732− , "hcube"
1733− , "hcwiid"
1734− , "hdaemonize-buildfix"
1735− , "HDBC-mysql"
1736− , "hdbi"
1737− , "hdbi-conduit"
1738− , "hdbi-postgresql"
1739− , "hdbi-sqlite"
1740− , "hdbi-tests"
1741− , "hDFA"
1742− , "hdigest"
1743− , "hdirect"
1744− , "hdis86"
1745− , "hdiscount"
1746− , "hdm"
1747− , "hdph"
1748− , "hdph-closure"
1749− , "HDRUtils"
1750− , "hecc"
1751− , "Hedi"
1752− , "hedn"
1753− , "heist-aeson"
1754− , "helics"
1755− , "helics-wai"
1756− , "helium"
1757− , "hell"
1758− , "hellage"
1759− , "hellnet"
1760− , "helm"
1761− , "hemkay"
1762− , "hemokit"
1763− , "hen"
1764− , "henet"
1765− , "hepevt"
1766− , "HERA"
1767− , "herbalizer"
1768− , "her-lexer"
1769− , "her-lexer-parsec"
1770− , "Hermes"
1771− , "hermit"
1772− , "hermit-syb"
1773− , "herringbone"
1774− , "herringbone-embed"
1775− , "herringbone-wai"
1776− , "hesql"
1777− , "hetris"
1778− , "heukarya"
1779− , "hevolisa"
1780− , "hevolisa-dph"
1781− , "hexpat-iteratee"
1782− , "hexpat-pickle-generic"
1783− , "hexquote"
1784− , "hF2"
1785− , "hfann"
1786− , "hfd"
1787− , "hfiar"
1788− , "hfractal"
1789− , "hfsevents"
1790− , "hfusion"
1791− , "hgalib"
1792− , "HGamer3D"
1793− , "HGamer3D-API"
1794− , "HGamer3D-Audio"
1795− , "HGamer3D-CAudio-Binding"
1796− , "HGamer3D-CEGUI-Binding"
1797− , "HGamer3D-Enet-Binding"
1798− , "HGamer3D-Graphics3D"
1799− , "HGamer3D-GUI"
1800− , "HGamer3D-InputSystem"
1801− , "HGamer3D-Network"
1802− , "HGamer3D-Ogre-Binding"
1803− , "HGamer3D-OIS-Binding"
1804− , "HGamer3D-SDL2-Binding"
1805− , "HGamer3D-SFML-Binding"
1806− , "HGamer3D-WinEvent"
1807− , "HGamer3D-Wire"
1808− , "hg-buildpackage"
1809− , "hgen"
1810− , "hgeometric"
1811− , "hgithub"
1812− , "HGL"
1813− , "hgom"
1814− , "h-gpgme"
1815− , "HGraphStorage"
1816− , "hharp"
1817− , "HHDL"
1818− , "hiccup"
1819− , "hichi"
1820− , "hieraclus"
1821− , "hierarchical-clustering-diagrams"
1822− , "hiernotify"
1823− , "Hieroglyph"
1824− , "HiggsSet"
1825− , "higherorder"
1826− , "highWaterMark"
1827− , "himg"
1828− , "himpy"
1829− , "hinduce-classifier"
1830− , "hinduce-classifier-decisiontree"
1831− , "hinduce-examples"
1832− , "hinvaders"
1833− , "hinze-streams"
1834− , "hipbot"
1835− , "hircules"
1836− , "hirt"
1837− , "hissmetrics"
1838− , "historian"
1839− , "hist-pl"
1840− , "hist-pl-fusion"
1841− , "hist-pl-lmf"
1842− , "hjs"
1843− , "HJVM"
1844− , "hlatex"
1845− , "hlbfgsb"
1846− , "hlcm"
1847− , "HLearn-algebra"
1848− , "HLearn-datastructures"
1849− , "hledger-chart"
1850− , "hledger-vty"
1851− , "hlibev"
1852− , "hlibfam"
1853− , "HListPP"
1854− , "hlogger"
1855− , "HLogger"
1856− , "hly"
1857− , "HMap"
1858− , "hmark"
1859− , "hmarkup"
1860− , "hmatrix-banded"
1861− , "hmatrix-gsl-stats"
1862− , "hmatrix-quadprogpp"
1863− , "hmatrix-static"
1864− , "hmatrix-syntax"
1865− , "hmatrix-tests"
1866− , "hmeap"
1867− , "hmeap-utils"
1868− , "hmenu"
1869− , "hmk"
1870− , "HMM"
1871− , "hmm-hmatrix"
1872− , "hMollom"
1873− , "hmp3"
1874− , "Hmpf"
1875− , "hmpfr"
1876− , "hmumps"
1877− , "HNM"
1878− , "hnn"
1879− , "hoauth"
1880− , "hob"
1881− , "hobbes"
1882− , "hobbits"
1883− , "HODE"
1884− , "hofix-mtl"
1885− , "hog"
1886− , "hogg"
1887− , "hogre"
1888− , "hogre-examples"
1889− , "hois"
1890− , "hole"
1891− , "holey-format"
1892− , "Holumbus-Distribution"
1893− , "Holumbus-MapReduce"
1894− , "Holumbus-Searchengine"
1895− , "Holumbus-Storage"
1896− , "homeomorphic"
1897− , "hommage"
1898− , "hommage-ds"
1899− , "HongoDB"
1900− , "honi"
1901− , "hoodie"
1902− , "hoodle"
1903− , "hoodle-builder"
1904− , "hoodle-core"
1905− , "hoodle-extra"
1906− , "hoodle-parser"
1907− , "hoodle-publish"
1908− , "hoodle-render"
1909− , "hoodle-types"
1910− , "hood-off"
1911− , "hoovie"
1912− , "hopencc"
1913− , "hopencl"
1914− , "hOpenPGP"
1915− , "hopfield"
1916− , "hoq"
1917− , "hosts-server"
1918− , "hotswap"
1919− , "hp2any-core"
1920− , "hp2any-graph"
1921− , "hp2any-manager"
1922− , "hpage"
1923− , "hpapi"
1924− , "hpaste"
1925− , "hpasteit"
1926− , "HPath"
1927− , "hpc-coveralls"
1928− , "hpc-tracer"
1929− , "hPDB-examples"
1930− , "HPDF"
1931− , "hplayground"
1932− , "hplaylist"
1933− , "HPlot"
1934− , "hpodder"
1935− , "HPong"
1936− , "hprotoc-fork"
1937− , "hps-cairo"
1938− , "hpygments"
1939− , "hpylos"
1940− , "hR"
1941− , "hranker"
1942− , "HRay"
1943− , "Hricket"
1944− , "HROOT"
1945− , "HROOT-core"
1946− , "HROOT-graf"
1947− , "HROOT-hist"
1948− , "HROOT-io"
1949− , "HROOT-math"
1950− , "hs2bf"
1951− , "hs2dot"
1952− , "Hs2lib"
1953− , "hsbackup"
1954− , "hsc2hs"
1955− , "hsc3-cairo"
1956− , "hsc3-data"
1957− , "hsc3-forth"
1958− , "hsc3-graphs"
1959− , "hsc3-lang"
1960− , "hsc3-lisp"
1961− , "hsc3-plot"
1962− , "hsc3-rec"
1963− , "hsc3-server"
1964− , "hsc3-unsafe"
1965− , "hscamwire"
1966− , "hs-carbon-examples"
1967− , "hscassandra"
1968− , "hs-cdb"
1969− , "hsclock"
1970− , "hscurses-fish-ex"
1971− , "hsdip"
1972− , "hsdns-cache"
1973− , "hs-dotnet"
1974− , "Hsed"
1975− , "hsfacter"
1976− , "HSFFIG"
1977− , "hs-ffmpeg"
1978− , "hs-fltk"
1979− , "hs-gchart"
1980− , "hs-GeoIP"
1981− , "HSGEP"
1982− , "hsgnutls"
1983− , "hsgnutls-yj"
1984− , "hsgsom"
1985− , "HsHaruPDF"
1986− , "HSHHelpers"
1987− , "HsHyperEstraier"
1988− , "hsignal"
1989− , "hSimpleDB"
1990− , "hs-java"
1991− , "hs-json-rpc"
1992− , "HsJudy"
1993− , "hskeleton"
1994− , "hslackbuilder"
1995− , "hslibsvm"
1996− , "hslogger4j"
1997− , "hs-logo"
1998− , "hslogstash"
1999− , "hsmagick"
2000− , "HSmarty"
2001− , "hs-mesos"
2002− , "Hsmtlib"
2003− , "hsmtpclient"
2004− , "hsndfile-storablevector"
2005− , "hsnock"
2006− , "hs-nombre-generator"
2007− , "hsns"
2008− , "hsntp"
2009− , "hsoptions"
2010− , "HSoundFile"
2011− , "hsparql"
2012− , "HsParrot"
2013− , "hsp-cgi"
2014− , "hspear"
2015− , "hspec-experimental"
2016− , "hspec-shouldbe"
2017− , "HsPerl5"
2018− , "hs-pgms"
2019− , "hs-pkpass"
2020− , "hspread"
2021− , "hspresent"
2022− , "hsprocess"
2023− , "hsql-mysql"
2024− , "hsqml-datamodel"
2025− , "hsqml-demo-morris"
2026− , "hsqml-demo-samples"
2027− , "hsqml-morris"
2028− , "hsSqlite3"
2029− , "HsSVN"
2030− , "hstatistics"
2031− , "hstats"
2032− , "hstest"
2033− , "hstidy"
2034− , "hstorchat"
2035− , "hstradeking"
2036− , "HStringTemplateHelpers"
2037− , "hs-twitter"
2038− , "hs-twitterarchiver"
2039− , "hstyle"
2040− , "hstzaar"
2041− , "hsubconvert"
2042− , "hs-vcard"
2043− , "HSvm"
2044− , "hswip"
2045− , "hsx"
2046− , "hsXenCtrl"
2047− , "hsx-jmacro"
2048− , "hsx-xhtml"
2049− , "hsyscall"
2050− , "hszephyr"
2051− , "HTab"
2052− , "hTalos"
2053− , "hTensor"
2054− , "HTicTacToe"
2055− , "html-entities"
2056− , "htoml"
2057− , "htsn-import"
2058− , "http-client-request-modifiers"
2059− , "http-conduit-browser"
2060− , "http-conduit-downloader"
2061− , "http-enumerator"
2062− , "http-monad"
2063− , "http-proxy"
2064− , "https-everywhere-rules"
2065− , "http-shed"
2066− , "HTTP-Simple"
2067− , "httpspec"
2068− , "http-test"
2069− , "htune"
2070− , "hubris"
2071− , "hugs2yc"
2072− , "hulk"
2073− , "hums"
2074− , "HUnit-Diff"
2075− , "hunit-gui"
2076− , "HUnit-Plus"
2077− , "hunit-rematch"
2078− , "hunt-searchengine"
2079− , "hurdle"
2080− , "husk-scheme"
2081− , "husk-scheme-libs"
2082− , "husky"
2083− , "hutton"
2084− , "huzzy"
2085− , "hVOIDP"
2086− , "hws"
2087− , "HXMPP"
2088− , "hxmppc"
2089− , "hxournal"
2090− , "HXQ"
2091− , "hxt-binary"
2092− , "hxt-filter"
2093− , "hxthelper"
2094− , "hxweb"
2095− , "hybrid"
2096− , "hydra-hs"
2097− , "hydrogen-cli-args"
2098− , "hydrogen-data"
2099− , "hydrogen-parsing"
2100− , "hydrogen-prelude"
2101− , "hydrogen-prelude-parsec"
2102− , "hydrogen-util"
2103− , "hyena"
2104− , "hylolib"
2105− , "hylotab"
2106− , "hyloutils"
2107− , "hyperdrive"
2108− , "hyperpublic"
2109− , "hypher"
2110− , "i18n"
2111− , "iban"
2112− , "ideas"
2113− , "ideas-math"
2114− , "ide-backend-server"
2115− , "idiii"
2116− , "idna2008"
2117− , "IDynamic"
2118− , "ieee-utils"
2119− , "iException"
2120− , "IFS"
2121− , "ige-mac-integration"
2122− , "igraph"
2123− , "ihaskell"
2124− , "ihaskell-aeson"
2125− , "ihaskell-basic"
2126− , "ihaskell-blaze"
2127− , "ihaskell-charts"
2128− , "ihaskell-display"
2129− , "ihaskell-hatex"
2130− , "ihaskell-juicypixels"
2131− , "ihaskell-magic"
2132− , "ihaskell-parsec"
2133− , "ihaskell-plot"
2134− , "ihaskell-rlangqq"
2135− , "ihttp"
2136− , "illuminate"
2137− , "imagepaste"
2138− , "imbib"
2139− , "imgurder"
2140− , "imm"
2141− , "imparse"
2142− , "ImperativeHaskell"
2143− , "implicit"
2144− , "improve"
2145− , "INblobs"
2146− , "inch"
2147− , "include-file"
2148− , "incremental-computing"
2149− , "incremental-sat-solver"
2150− , "increments"
2151− , "index-core"
2152− , "indices"
2153− , "infer-upstream"
2154− , "infinity"
2155− , "infix"
2156− , "InfixApplicative"
2157− , "inflist"
2158− , "informative"
2159− , "inilist"
2160− , "instant-zipper"
2161− , "integer-pure"
2162− , "intel-aes"
2163− , "interleavableGen"
2164− , "interleavableIO"
2165− , "internetmarke"
2166− , "interpolatedstring-qq"
2167− , "interpolatedstring-qq-mwotton"
2168− , "intricacy"
2169− , "intset"
2170− , "IOR"
2171− , "io-reactive"
2172− , "IORefCAS"
2173− , "iotransaction"
2174− , "ipatch"
2175− , "ipc"
2176− , "ipopt-hs"
2177− , "iptables-helpers"
2178− , "iptadmin"
2179− , "Irc"
2180− , "ircbouncer"
2181− , "ireal"
2182− , "IrrHaskell"
2183− , "isevaluated"
2184− , "ismtp"
2185− , "iteratee"
2186− , "iteratee-compress"
2187− , "iteratee-parsec"
2188− , "iteratee-stm"
2189− , "iterIO"
2190− , "iterio-server"
2191− , "iter-stats"
2192− , "ivor"
2193− , "ivory"
2194− , "ivory-opts"
2195− , "ivory-quickcheck"
2196− , "ivory-stdlib"
2197− , "ivy-web"
2198− , "ixdopp"
2199− , "ixset-typed"
2200− , "iyql"
2201− , "j2hs"
2202− , "jack-bindings"
2203− , "jackminimix"
2204− , "JackMiniMix"
2205− , "jalla"
2206− , "jammittools"
2207− , "jarfind"
2208− , "java-bridge"
2209− , "java-bridge-extras"
2210− , "java-reflect"
2211− , "javasf"
2212− , "Javasf"
2213− , "javav"
2214− , "Javav"
2215− , "jespresso"
2216− , "jobqueue"
2217− , "join"
2218− , "joinlist"
2219− , "jonathanscard"
2220− , "jort"
2221− , "jsc"
2222− , "JsContracts"
2223− , "js-good-parts"
2224− , "jsmw"
2225− , "json2"
2226− , "json2-hdbc"
2227− , "json-b"
2228− , "JSONb"
2229− , "JSON-Combinator"
2230− , "JSON-Combinator-Examples"
2231− , "json-enumerator"
2232− , "JsonGrammar"
2233− , "json-qq"
2234− , "jsonresume"
2235− , "json-rpc"
2236− , "json-tools"
2237− , "jspath"
2238− , "judy"
2239− , "JuicyPixels-repa"
2240− , "JunkDB-driver-gdbm"
2241− , "JYU-Utils"
2242− , "kangaroo"
2243− , "kansas-comet"
2244− , "kansas-lava"
2245− , "kansas-lava-cores"
2246− , "kansas-lava-papilio"
2247− , "kansas-lava-shake"
2248− , "katt"
2249− , "keera-hails-mvc-model-lightmodel"
2250− , "keera-hails-reactive-fs"
2251− , "keera-posture"
2252− , "keiretsu"
2253− , "Ketchup"
2254− , "kevin"
2255− , "keyring"
2256− , "keystore"
2257− , "kibro"
2258− , "kicad-data"
2259− , "kickass-torrents-dump-parser"
2260− , "KiCS"
2261− , "KiCS-debugger"
2262− , "KiCS-prophecy"
2263− , "kif-parser"
2264− , "kit"
2265− , "kmeans-par"
2266− , "koellner-phonetic"
2267− , "Konf"
2268− , "korfu"
2269− , "kqueue"
2270− , "kure-your-boilerplate"
2271− , "KyotoCabinet"
2272− , "labeled-graph"
2273− , "labyrinth"
2274− , "labyrinth-server"
2275− , "laika"
2276− , "lambda2js"
2277− , "lambdaBase"
2278− , "lambdabot-utils"
2279− , "lambda-bridge"
2280− , "LambdaCalculator"
2281− , "lambdacat"
2282− , "lambdacube"
2283− , "lambdacube-bullet"
2284− , "lambdacube-engine"
2285− , "lambdacube-examples"
2286− , "lambdacube-samples"
2287− , "lambda-devs"
2288− , "lambdaFeed"
2289− , "LambdaINet"
2290− , "lambdaLit"
2291− , "LambdaPrettyQuote"
2292− , "LambdaShell"
2293− , "lambda-toolbox"
2294− , "lambdatwit"
2295− , "lambdiff"
2296− , "lame-tester"
2297− , "language-bash"
2298− , "language-boogie"
2299− , "language-c-comments"
2300− , "language-c-inline"
2301− , "language-eiffel"
2302− , "language-go"
2303− , "language-java-classfile"
2304− , "language-mixal"
2305− , "language-objc"
2306− , "language-puppet"
2307− , "language-python-colour"
2308− , "language-sh"
2309− , "language-spelling"
2310− , "language-sqlite"
2311− , "language-thrift"
2312− , "Lastik"
2313− , "lat"
2314− , "latest-npm-version"
2315− , "Lattices"
2316− , "layers"
2317− , "layout"
2318− , "layout-bootstrap"
2319− , "lazyarray"
2320− , "lazysplines"
2321− , "l-bfgs-b"
2322− , "lcs"
2323− , "ldap-client"
2324− , "ldif"
2325− , "leaf"
2326− , "leaky"
2327− , "learn-physics"
2328− , "learn-physics-examples"
2329− , "leksah"
2330− , "Level0"
2331− , "leveldb-haskell-fork"
2332− , "levmar-chart"
2333− , "lgtk"
2334− , "lha"
2335− , "lhae"
2336− , "lhe"
2337− , "LibClang"
2338− , "libcspm"
2339− , "libexpect"
2340− , "libGenI"
2341− , "libhbb"
2342− , "libjenkins"
2343− , "libltdl"
2344− , "liboleg"
2345− , "libpafe"
2346− , "libpq"
2347− , "libssh2-conduit"
2348− , "libsystemd-daemon"
2349− , "libvirt-hs"
2350− , "libxml"
2351− , "libxslt"
2352− , "lifter"
2353− , "lighttpd-conf"
2354− , "lighttpd-conf-qq"
2355− , "lilypond"
2356− , "Limit"
2357− , "limp-cbc"
2358− , "lin-alg"
2359− , "linear-algebra-cblas"
2360− , "linear-maps"
2361− , "linearscan"
2362− , "linearscan-hoopl"
2363− , "LinearSplit"
2364− , "LinkChecker"
2365− , "linkchk"
2366− , "linkcore"
2367− , "linux-blkid"
2368− , "linux-kmod"
2369− , "linux-perf"
2370− , "linux-ptrace"
2371− , "lio-eci11"
2372− , "lio-simple"
2373− , "liquid-fixpoint"
2374− , "liquidhaskell"
2375− , "listlike-instances"
2376− , "list-t-html-parser"
2377− , "ListTree"
2378− , "literals"
2379− , "live-sequencer"
2380− , "ll-picosat"
2381− , "llsd"
2382− , "llvm-ffi"
2383− , "llvm-general-quote"
2384− , "llvm-ht"
2385− , "local-search"
2386− , "loch"
2387− , "log2json"
2388− , "log-effect"
2389− , "logic-classes"
2390− , "LogicGrowsOnTrees"
2391− , "LogicGrowsOnTrees-MPI"
2392− , "LogicGrowsOnTrees-network"
2393− , "LogicGrowsOnTrees-processes"
2394− , "lojban"
2395− , "lojbanParser"
2396− , "lojbanXiragan"
2397− , "lojysamban"
2398− , "loli"
2399− , "loop-effin"
2400− , "loopy"
2401− , "lord"
2402− , "loris"
2403− , "lostcities"
2404− , "lscabal"
2405− , "L-seed"
2406− , "LslPlus"
2407− , "ls-usb"
2408− , "lsystem"
2409− , "luachunk"
2410− , "luautils"
2411− , "lucienne"
2412− , "Lucu"
2413− , "lui"
2414− , "luka"
2415− , "luthor"
2416− , "lvish"
2417− , "lvmlib"
2418− , "lye"
2419− , "maam"
2420− , "mage"
2421− , "MagicHaskeller"
2422− , "magma"
2423− , "mahoro"
2424− , "majordomo"
2425− , "majority"
2426− , "manatee"
2427− , "manatee-anything"
2428− , "manatee-browser"
2429− , "manatee-core"
2430− , "manatee-curl"
2431− , "manatee-editor"
2432− , "manatee-filemanager"
2433− , "manatee-imageviewer"
2434− , "manatee-mplayer"
2435− , "manatee-pdfviewer"
2436− , "manatee-processmanager"
2437− , "manatee-reader"
2438− , "manatee-template"
2439− , "manatee-terminal"
2440− , "manatee-welcome"
2441− , "mandulia"
2442− , "mangopay"
2443− , "manifolds"
2444− , "marionetta"
2445− , "markdown2svg"
2446− , "markdown-kate"
2447− , "markdown-pap"
2448− , "markov-processes"
2449− , "markup-preview"
2450− , "marmalade-upload"
2451− , "marquise"
2452− , "marxup"
2453− , "masakazu-bot"
2454− , "matchers"
2455− , "mathblog"
2456− , "mathgenealogy"
2457− , "mathlink"
2458− , "matlab"
2459− , "matsuri"
2460− , "maude"
2461− , "maxent"
2462− , "maxsharing"
2463− , "maybench"
2464− , "MaybeT-monads-tf"
2465− , "MaybeT-transformers"
2466− , "MazesOfMonad"
2467− , "mbox-tools"
2468− , "MC-Fold-DP"
2469− , "mcmc-samplers"
2470− , "mdcat"
2471− , "Measure"
2472− , "mecab"
2473− , "mediawiki"
2474− , "mediawiki2latex"
2475− , "mega-sdist"
2476− , "melody"
2477− , "memo-sqlite"
2478− , "MetaObject"
2479− , "meta-par-accelerate"
2480− , "metaplug"
2481− , "metric"
2482− , "Metrics"
2483− , "metronome"
2484− , "MFlow"
2485− , "Mhailist"
2486− , "MHask"
2487− , "microformats2-parser"
2488− , "mida"
2489− , "midisurface"
2490− , "mighttpd"
2491− , "milena"
2492− , "mime-directory"
2493− , "mime-string"
2494− , "minesweeper"
2495− , "MiniAgda"
2496− , "miniball"
2497− , "miniforth"
2498− , "minimung"
2499− , "minioperational"
2500− , "miniplex"
2501− , "minirotate"
2502− , "ministg"
2503− , "mirror-tweet"
2504− , "MissingPy"
2505− , "missing-py2"
2506− , "mix-arrows"
2507− , "mkbndl"
2508− , "mlist"
2509− , "ml-w"
2510− , "mmtl"
2511− , "mmtl-base"
2512− , "moan"
2513− , "modelicaparser"
2514− , "modsplit"
2515− , "modular-prelude"
2516− , "modular-prelude-classy"
2517− , "module-management"
2518− , "mohws"
2519− , "monad-abort-fd"
2520− , "monadacme"
2521− , "monad-atom"
2522− , "monad-atom-simple"
2523− , "monad-bool"
2524− , "MonadCatchIO-mtl-foreign"
2525− , "MonadCatchIO-transformers-foreign"
2526− , "monad-exception"
2527− , "monadiccp"
2528− , "monadiccp-gecode"
2529− , "monad-interleave"
2530− , "MonadLab"
2531− , "monad-levels"
2532− , "monad-lrs"
2533− , "monad-memo"
2534− , "monad-mersenne-random"
2535− , "monad-ran"
2536− , "MonadRandomLazy"
2537− , "monad-stlike-io"
2538− , "monad-stlike-stm"
2539− , "monad-tx"
2540− , "monad-unify"
2541− , "monarch"
2542− , "Monaris"
2543− , "Monatron"
2544− , "Monatron-IO"
2545− , "mongodb-queue"
2546− , "mongrel2-handler"
2547− , "Monocle"
2548− , "mono-foldable"
2549− , "monoid-owns"
2550− , "monoidplus"
2551− , "monoids"
2552− , "monte-carlo"
2553− , "moo"
2554− , "morfette"
2555− , "morfeusz"
2556− , "mosaico-lib"
2557− , "mount"
2558− , "mp3decoder"
2559− , "mpdmate"
2560− , "mpppc"
2561− , "mpretty"
2562− , "mprover"
2563− , "mps"
2564− , "mpvguihs"
2565− , "mqtt-hs"
2566− , "msgpack-idl"
2567− , "mtgoxapi"
2568− , "mtl-tf"
2569− , "mtlx"
2570− , "mtp"
2571− , "mudbath"
2572− , "multifocal"
2573− , "multipass"
2574− , "multiplate-simplified"
2575− , "multirec-alt-deriver"
2576− , "multirec-binary"
2577− , "multisetrewrite"
2578− , "murder"
2579− , "murmurhash3"
2580− , "musicbrainz-email"
2581− , "music-graphics"
2582− , "music-parts"
2583− , "music-preludes"
2584− , "music-score"
2585− , "music-sibelius"
2586− , "music-suite"
2587− , "music-util"
2588− , "musicxml"
2589− , "mustache2hs"
2590− , "mutable-iter"
2591− , "mvclient"
2592− , "mvc-updates"
2593− , "myo"
2594− , "mysnapsession"
2595− , "mysnapsession-example"
2596− , "mysql-simple-quasi"
2597− , "mysql-simple-typed"
2598− , "myTestlll"
2599− , "mzv"
2600− , "nagios-plugin-ekg"
2601− , "named-lock"
2602− , "nanoAgda"
2603− , "nano-cryptr"
2604− , "nanocurses"
2605− , "nano-hmac"
2606− , "nano-md5"
2607− , "nanomsg-haskell"
2608− , "narc"
2609− , "nats-queue"
2610− , "natural-number"
2611− , "neat"
2612− , "needle"
2613− , "nerf"
2614− , "nero"
2615− , "nero-wai"
2616− , "nero-warp"
2617− , "netcore"
2618− , "netlines"
2619− , "NetSNMP"
2620− , "netspec"
2621− , "nettle"
2622− , "nettle-frp"
2623− , "nettle-netkit"
2624− , "nettle-openflow"
2625− , "network-address"
2626− , "network-anonymous-i2p"
2627− , "network-builder"
2628− , "network-bytestring"
2629− , "network-connection"
2630− , "network-house"
2631− , "network-minihttp"
2632− , "network-rpca"
2633− , "network-server"
2634− , "network-simple-tls"
2635− , "network-topic-models"
2636− , "network-transport-amqp"
2637− , "network-websocket"
2638− , "newports"
2639− , "newsynth"
2640− , "newt"
2641− , "newtype-th"
2642− , "NGrams"
2643− , "nibblestring"
2644− , "nikepub"
2645− , "Ninjas"
2646− , "nitro"
2647− , "nixos-types"
2648− , "nkjp"
2649− , "nm"
2650− , "nme"
2651− , "nntp"
2652− , "noise"
2653− , "Nomyx"
2654− , "Nomyx-Core"
2655− , "Nomyx-Language"
2656− , "Nomyx-Rules"
2657− , "Nomyx-Web"
2658− , "nondeterminism"
2659− , "NonEmptyList"
2660− , "noodle"
2661− , "NoSlow"
2662− , "not-gloss-examples"
2663− , "notmuch-haskell"
2664− , "notmuch-web"
2665− , "np-linear"
2666− , "nptools"
2667− , "nthable"
2668− , "null-canvas"
2669− , "NumberSieves"
2670− , "numerals"
2671− , "numerals-base"
2672− , "numeric-qq"
2673− , "nums"
2674− , "Nussinov78"
2675− , "nvim-hs"
2676− , "NXT"
2677− , "NXTDSL"
2678− , "nymphaea"
2679− , "oberon0"
2680− , "obj"
2681− , "Object"
2682− , "ObjectIO"
2683− , "octopus"
2684− , "oculus"
2685− , "ofx"
2686− , "OGL"
2687− , "ohloh-hs"
2688− , "oi"
2689− , "ois-input-manager"
2690− , "omaketex"
2691− , "omega"
2692− , "Omega"
2693− , "omnicodec"
2694− , "on-a-horse"
2695− , "one-liner"
2696− , "oneormore"
2697− , "onu-course"
2698− , "OpenAFP"
2699− , "OpenAFP-Utils"
2700− , "OpenCL"
2701− , "OpenCLRaw"
2702− , "opencv-raw"
2703− , "openexchangerates"
2704− , "openflow"
2705− , "OpenGLCheck"
2706− , "opengles"
2707− , "openid"
2708− , "open-pandoc"
2709− , "openpgp-Crypto"
2710− , "openpgp-crypto-api"
2711− , "OpenSCAD"
2712− , "openssh-github-keys"
2713− , "opentheory-char"
2714− , "open-union"
2715− , "OpenVG"
2716− , "OpenVGRaw"
2717− , "open-witness"
2718− , "Operads"
2719− , "optimusprime"
2720− , "OrchestrateDB"
2721− , "orchid"
2722− , "orchid-demo"
2723− , "order-maintenance"
2724− , "orgmode-parse"
2725− , "origami"
2726− , "OSM"
2727− , "osm-download"
2728− , "ot"
2729− , "package-vt"
2730− , "packedstring"
2731− , "PageIO"
2732− , "panda"
2733− , "PandocAgda"
2734− , "pandoc-unlit"
2735− , "papillon"
2736− , "pappy"
2737− , "paragon"
2738− , "Paraiso"
2739− , "parallel-tasks"
2740− , "parameterized-data"
2741− , "parco"
2742− , "parco-attoparsec"
2743− , "parconc-examples"
2744− , "parco-parsec"
2745− , "Parry"
2746− , "parsec2"
2747− , "parse-help"
2748− , "parsely"
2749− , "parser-helper"
2750− , "parsestar"
2751− , "partial-lens"
2752− , "partly"
2753− , "passage"
2754− , "pastis"
2755− , "pasty"
2756− , "Pathfinder"
2757− , "pathfindingcore"
2758− , "patterns"
2759− , "paypal-api"
2760− , "pb"
2761− , "PCLT"
2762− , "PCLT-DB"
2763− , "pdynload"
2764− , "peakachu"
2765− , "pec"
2766− , "peg"
2767− , "penny"
2768− , "penny-bin"
2769− , "penny-lib"
2770− , "peparser"
2771− , "perdure"
2772− , "PerfectHash"
2773− , "perm"
2774− , "permute"
2775− , "PermuteEffects"
2776− , "persistent-hssqlppp"
2777− , "persistent-map"
2778− , "persistent-protobuf"
2779− , "pesca"
2780− , "peyotls"
2781− , "pez"
2782− , "pgdl"
2783− , "pg-harness"
2784− , "pg-harness-server"
2785− , "pgsql-simple"
2786− , "pgstream"
2787− , "phasechange"
2788− , "phash"
2789− , "phone-push"
2790− , "phooey"
2791− , "photoname"
2792− , "phraskell"
2793− , "Phsu"
2794− , "phybin"
2795− , "pianola"
2796− , "pi-calculus"
2797− , "picologic"
2798− , "piet"
2799− , "piki"
2800− , "Pipe"
2801− , "pipes-cereal-plus"
2802− , "pipes-conduit"
2803− , "pipes-network-tls"
2804− , "pipes-p2p-examples"
2805− , "pisigma"
2806− , "pit"
2807− , "pkggraph"
2808− , "planar-graph"
2809− , "plat"
2810− , "plivo"
2811− , "PlslTools"
2812− , "plugins"
2813− , "plugins-auto"
2814− , "plugins-multistage"
2815− , "plumbers"
2816− , "png-file"
2817− , "pngload"
2818− , "pngload-fixed"
2819− , "pocket-dns"
2820− , "pointless-haskell"
2821− , "pointless-lenses"
2822− , "pointless-rewrite"
2823− , "polh-lexicon"
2824− , "polyseq"
2825− , "polytypeable"
2826− , "polytypeable-utils"
2827− , "pontarius-mediaserver"
2828− , "pontarius-xmpp"
2829− , "pontarius-xpmn"
2830− , "pool"
2831− , "pool-conduit"
2832− , "popenhs"
2833− , "poppler"
2834− , "porte"
2835− , "porter"
2836− , "ports"
2837− , "posix-acl"
2838− , "posix-waitpid"
2839− , "PostgreSQL"
2840− , "postgresql-orm"
2841− , "postgresql-schema"
2842− , "postgresql-simple-typed"
2843− , "postgresql-typed"
2844− , "postgrest"
2845− , "postie"
2846− , "postmaster"
2847− , "powermate"
2848− , "powerpc"
2849− , "pqc"
2850− , "pqueue-mtl"
2851− , "practice-room"
2852− , "precis"
2853− , "prefork"
2854− , "pregame"
2855− , "prelude-generalize"
2856− , "prelude-plus"
2857− , "preprocess-haskell"
2858− , "press"
2859− , "primula-board"
2860− , "primula-bot"
2861− , "printf-mauke"
2862− , "Printf-TH"
2863− , "PriorityChansConverger"
2864− , "priority-queue"
2865− , "ProbabilityMonads"
2866− , "proc"
2867− , "processing"
2868− , "process-iterio"
2869− , "process-leksah"
2870− , "process-listlike"
2871− , "process-progress"
2872− , "process-qq"
2873− , "procrastinating-structure"
2874− , "procrastinating-variable"
2875− , "procstat"
2876− , "prof2dot"
2877− , "profunctor-extras"
2878− , "progress"
2879− , "progressbar"
2880− , "progression"
2881− , "progressive"
2882− , "proj4-hs-bindings"
2883− , "prolog"
2884− , "prolog-graph"
2885− , "prolog-graph-lib"
2886− , "propane"
2887− , "Proper"
2888− , "proplang"
2889− , "protobuf-native"
2890− , "protocol-buffers-descriptor-fork"
2891− , "protocol-buffers-fork"
2892− , "prove-everywhere-server"
2893− , "proxy-kindness"
2894− , "pub"
2895− , "publicsuffixlistcreate"
2896− , "pubnub"
2897− , "pubsub"
2898− , "puffytools"
2899− , "Pugs"
2900− , "pugs-compat"
2901− , "pugs-DrIFT"
2902− , "pugs-hsregex"
2903− , "pugs-HsSyck"
2904− , "punkt"
2905− , "Pup-Events"
2906− , "Pup-Events-Demo"
2907− , "puppetresources"
2908− , "purescript"
2909− , "pushme"
2910− , "push-notify"
2911− , "push-notify-ccs"
2912− , "push-notify-general"
2913− , "putlenses"
2914− , "puzzle-draw"
2915− , "puzzle-draw-cmdline"
2916− , "pvd"
2917− , "python-pickle"
2918− , "qd"
2919− , "qd-vec"
2920− , "qhull-simple"
2921− , "QIO"
2922− , "quantum-arrow"
2923− , "qudb"
2924− , "quenya-verb"
2925− , "querystring-pickle"
2926− , "queuelike"
2927− , "QuickAnnotate"
2928− , "QuickCheck-GenT"
2929− , "quickcheck-poly"
2930− , "quickcheck-regex"
2931− , "quickcheck-relaxng"
2932− , "quickcheck-rematch"
2933− , "quickpull"
2934− , "quickset"
2935− , "Quickson"
2936− , "quicktest"
2937− , "quoridor-hs"
2938− , "rabocsv2qif"
2939− , "rad"
2940− , "radium"
2941− , "radium-formula-parser"
2942− , "rados-haskell"
2943− , "rail-compiler-editor"
2944− , "rainbow-tests"
2945− , "Raincat"
2946− , "rakhana"
2947− , "ralist"
2948− , "rallod"
2949− , "random-access-list"
2950− , "RandomDotOrg"
2951− , "random-eff"
2952− , "random-effin"
2953− , "random-hypergeometric"
2954− , "random-stream"
2955− , "rand-vars"
2956− , "rangemin"
2957− , "range-space"
2958− , "Ranka"
2959− , "raven-haskell"
2960− , "raven-haskell-scotty"
2961− , "rbr"
2962− , "rdf4h"
2963− , "rdioh"
2964− , "reaction-logic"
2965− , "reactive"
2966− , "reactive-bacon"
2967− , "reactive-balsa"
2968− , "reactive-banana-sdl"
2969− , "reactive-banana-threepenny"
2970− , "reactive-fieldtrip"
2971− , "reactive-glut"
2972− , "reactive-thread"
2973− , "reactor"
2974− , "really-simple-xml-parser"
2975− , "reasonable-lens"
2976− , "record-aeson"
2977− , "record-gl"
2978− , "record-preprocessor"
2979− , "records"
2980− , "records-th"
2981− , "redHandlers"
2982− , "ref"
2983− , "Ref"
2984− , "Referees"
2985− , "refh"
2986− , "reflection-extras"
2987− , "regex-deriv"
2988− , "regex-dfa"
2989− , "regex-genex"
2990− , "regex-parsec"
2991− , "regex-pderiv"
2992− , "regexp-tries"
2993− , "regexqq"
2994− , "regex-tdfa-utf8"
2995− , "regex-tre"
2996− , "regex-xmlschema"
2997− , "regional-pointers"
2998− , "regions"
2999− , "regions-monadsfd"
3000− , "regions-monadstf"
3001− , "regions-mtl"
3002− , "regular-extras"
3003− , "regular-web"
3004− , "reheat"
3005− , "rei"
3006− , "reified-records"
3007− , "reify"
3008− , "remote"
3009− , "remote-debugger"
3010− , "remotion"
3011− , "reorderable"
3012− , "repa-array"
3013− , "repa-bytestring"
3014− , "repa-flow"
3015− , "repa-plugin"
3016− , "repa-series"
3017− , "repa-v4l2"
3018− , "repl"
3019− , "RepLib"
3020− , "repo-based-blog"
3021− , "repr"
3022− , "representable-functors"
3023− , "representable-profunctors"
3024− , "representable-tries"
3025− , "resource-embed"
3026− , "resource-simple"
3027− , "respond"
3028− , "restful-snap"
3029− , "RESTng"
3030− , "restricted-workers"
3031− , "restyle"
3032− , "resumable-exceptions"
3033− , "rethinkdb-client-driver"
3034− , "rethinkdb-model"
3035− , "ReviewBoard"
3036− , "rewrite"
3037− , "rewriting"
3038− , "rezoom"
3039− , "rfc3339"
3040− , "riak"
3041− , "riak-protobuf"
3042− , "riot"
3043− , "ripple"
3044− , "ripple-federation"
3045− , "risc386"
3046− , "rivers"
3047− , "RJson"
3048− , "rmonad"
3049− , "RMP"
3050− , "RNAdesign"
3051− , "RNAdraw"
3052− , "RNAFold"
3053− , "RNAFoldProgs"
3054− , "RNAwolf"
3055− , "roguestar"
3056− , "roguestar-engine"
3057− , "roguestar-gl"
3058− , "roguestar-glut"
3059− , "RollingDirectory"
3060− , "rope"
3061− , "rosa"
3062− , "roshask"
3063− , "rosso"
3064− , "rotating-log"
3065− , "rounding"
3066− , "roundtrip"
3067− , "roundtrip-aeson"
3068− , "roundtrip-string"
3069− , "roundtrip-xml"
3070− , "route-generator"
3071− , "route-planning"
3072− , "rowrecord"
3073− , "rpc"
3074− , "rpc-framework"
3075− , "rpm"
3076− , "rsagl"
3077− , "rsagl-frp"
3078− , "rsagl-math"
3079− , "rss2irc"
3080− , "rubberband"
3081− , "ruff"
3082− , "ruler-core"
3083− , "rungekutta"
3084− , "RxHaskell"
3085− , "safe-freeze"
3086− , "safe-globals"
3087− , "safeint"
3088− , "safe-lazy-io"
3089− , "safe-plugins"
3090− , "safer-file-handles"
3091− , "safer-file-handles-bytestring"
3092− , "safer-file-handles-text"
3093− , "sai-shape-syb"
3094− , "Salsa"
3095− , "salvia"
3096− , "salvia-demo"
3097− , "salvia-extras"
3098− , "salvia-protocol"
3099− , "salvia-sessions"
3100− , "salvia-websocket"
3101− , "samtools-iteratee"
3102− , "sasl"
3103− , "sat"
3104− , "satchmo-backends"
3105− , "satchmo-examples"
3106− , "satchmo-funsat"
3107− , "satchmo-minisat"
3108− , "sat-micro-hs"
3109− , "SBench"
3110− , "scaleimage"
3111− , "scan-vector-machine"
3112− , "scat"
3113− , "scenegraph"
3114− , "schedevr"
3115− , "scholdoc"
3116− , "scholdoc-citeproc"
3117− , "scion"
3118− , "scion-browser"
3119− , "scope"
3120− , "scope-cairo"
3121− , "scottish"
3122− , "scotty-blaze"
3123− , "scotty-fay"
3124− , "scotty-hastache"
3125− , "scotty-session"
3126− , "scrabble-bot"
3127− , "ScratchFs"
3128− , "scrobble"
3129− , "scroll"
3130− , "scrz"
3131− , "Scurry"
3132− , "SDL-gfx"
3133− , "SDL-image"
3134− , "SDL-mixer"
3135− , "SDL-mpeg"
3136− , "SDL-ttf"
3137− , "seacat"
3138− , "search"
3139− , "secdh"
3140− , "second-transfer"
3141− , "secret-santa"
3142− , "secret-sharing"
3143− , "secrm"
3144− , "sednaDBXML"
3145− , "selectors"
3146− , "selenium"
3147− , "selenium-server"
3148− , "selinux"
3149− , "Semantique"
3150− , "semigroups-actions"
3151− , "semi-iso"
3152− , "semiring"
3153− , "sensenet"
3154− , "sentry"
3155− , "senza"
3156− , "seqaid"
3157− , "SeqAlign"
3158− , "seqloc-datafiles"
3159− , "sequent-core"
3160− , "sequor"
3161− , "servant-pool"
3162− , "servant-postgresql"
3163− , "servant-scotty"
3164− , "servius"
3165− , "ses-html-snaplet"
3166− , "SessionLogger"
3167− , "sessions"
3168− , "set-with"
3169− , "sexp"
3170− , "sexpr"
3171− , "sext"
3172− , "SFML"
3173− , "SFML-control"
3174− , "SFont"
3175− , "SG"
3176− , "SGdemo"
3177− , "sgrep"
3178− , "shadower"
3179− , "shady-gen"
3180− , "shady-graphics"
3181− , "shake-extras"
3182− , "shaker"
3183− , "shakespeare-css"
3184− , "shakespeare-i18n"
3185− , "shapely-data"
3186− , "shared-buffer"
3187− , "she"
3188− , "Shellac"
3189− , "Shellac-compatline"
3190− , "Shellac-editline"
3191− , "Shellac-haskeline"
3192− , "Shellac-readline"
3193− , "shellish"
3194− , "shell-pipe"
3195− , "shivers-cfg"
3196− , "showdown"
3197− , "shpider"
3198− , "sifflet"
3199− , "sifflet-lib"
3200− , "signals"
3201− , "simd"
3202− , "simgi"
3203− , "simple"
3204− , "simple-bluetooth"
3205− , "simple-css"
3206− , "simple-c-value"
3207− , "simple-firewire"
3208− , "simple-form"
3209− , "SimpleGL"
3210− , "SimpleH"
3211− , "simpleirc"
3212− , "simpleirc-lens"
3213− , "SimpleLog"
3214− , "simple-log-syslog"
3215− , "simplenote"
3216− , "simple-pascal"
3217− , "simple-postgresql-orm"
3218− , "simpleprelude"
3219− , "simple-session"
3220− , "simplessh"
3221− , "simple-templates"
3222− , "simple-vec3"
3223− , "simseq"
3224− , "sindre"
3225− , "sirkel"
3226− , "sized"
3227− , "sized-types"
3228− , "sized-vector"
3229− , "skeleton"
3230− , "skype4hs"
3231− , "slack"
3232− , "slidemews"
3233− , "sloth"
3234− , "smallarray"
3235− , "smallpt-hs"
3236− , "smallstring"
3237− , "smartcheck"
3238− , "smartGroup"
3239− , "smartword"
3240− , "sme"
3241− , "Smooth"
3242− , "smt-lib"
3243− , "smtlib2"
3244− , "smtp2mta"
3245− , "smtp-mail-ng"
3246− , "smtps-gmail"
3247− , "snake-game"
3248− , "snap-accept"
3249− , "snap-app"
3250− , "snap-elm"
3251− , "snap-extras"
3252− , "snaplet-actionlog"
3253− , "snaplet-css-min"
3254− , "snaplet-environments"
3255− , "snaplet-haxl"
3256− , "snaplet-hdbc"
3257− , "snaplet-i18n"
3258− , "snaplet-mongoDB"
3259− , "snaplet-mongodb-minimalistic"
3260− , "snaplet-mysql-simple"
3261− , "snaplet-oauth"
3262− , "snaplet-redson"
3263− , "snaplet-rest"
3264− , "snaplet-riak"
3265− , "snaplet-sedna"
3266− , "snaplet-tasks"
3267− , "snaplet-typed-sessions"
3268− , "snaplet-wordpress"
3269− , "snap-predicates"
3270− , "snappy-iteratee"
3271− , "snap-testing"
3272− , "snap-utils"
3273− , "sndfile-enumerators"
3274− , "sneathlane-haste"
3275− , "SNet"
3276− , "snm"
3277− , "snow-white"
3278− , "Snusmumrik"
3279− , "SoccerFun"
3280− , "SoccerFunGL"
3281− , "sock2stream"
3282− , "socketio"
3283− , "socket-sctp"
3284− , "sonic-visualiser"
3285− , "SoOSiM"
3286− , "sorted"
3287− , "sound-collage"
3288− , "source-code-server"
3289− , "sousit"
3290− , "soxlib"
3291− , "soyuz"
3292− , "SpaceInvaders"
3293− , "SpacePrivateers"
3294− , "spanout"
3295− , "sparse"
3296− , "sparsebit"
3297− , "sparsecheck"
3298− , "spata"
3299− , "special-functors"
3300− , "specialize-th"
3301− , "speculation-transformers"
3302− , "sphero"
3303− , "sphinx-cli"
3304− , "spice"
3305− , "spike"
3306− , "splaytree"
3307− , "splines"
3308− , "split-record"
3309− , "splot"
3310− , "Spock-auth"
3311− , "spoonutil"
3312− , "spoty"
3313− , "Sprig"
3314− , "spy"
3315− , "sqlite-simple-typed"
3316− , "sql-simple"
3317− , "sql-simple-mysql"
3318− , "sql-simple-pool"
3319− , "sql-simple-postgresql"
3320− , "sql-simple-sqlite"
3321− , "srcinst"
3322− , "sscgi"
3323− , "ssh"
3324− , "sssp"
3325− , "sstable"
3326− , "stackage-curator"
3327− , "stack-prism"
3328− , "starrover2"
3329− , "stateful-mtl"
3330− , "statgrab"
3331− , "statistics-dirichlet"
3332− , "statistics-fusion"
3333− , "stb-truetype"
3334− , "steeloverseer"
3335− , "step-function"
3336− , "stepwise"
3337− , "stm-chunked-queues"
3338− , "stmcontrol"
3339− , "stm-firehose"
3340− , "Stomp"
3341− , "storable-static-array"
3342− , "storablevector"
3343− , "storablevector-carray"
3344− , "storablevector-streamfusion"
3345− , "Strafunski-Sdf2Haskell"
3346− , "streamed"
3347− , "stream-fusion"
3348− , "StrictBench"
3349− , "strict-concurrency"
3350− , "string"
3351− , "stringlike"
3352− , "structured-mongoDB"
3353− , "structures"
3354− , "stunts"
3355− , "subhask"
3356− , "suitable"
3357− , "sunlight"
3358− , "sunroof-compiler"
3359− , "sunroof-examples"
3360− , "sunroof-server"
3361− , "supercollider-midi"
3362− , "superdoc"
3363− , "supero"
3364− , "supervisor"
3365− , "svg2q"
3366− , "SVG2Q"
3367− , "svm-simple"
3368− , "svndump"
3369− , "swapper"
3370− , "swearjure"
3371− , "swf"
3372− , "swift-lda"
3373− , "sws"
3374− , "syb-extras"
3375− , "sylvia"
3376− , "sym-plot"
3377− , "sync"
3378− , "sync-mht"
3379− , "syntax"
3380− , "syntax-attoparsec"
3381− , "syntax-example"
3382− , "syntax-example-json"
3383− , "SyntaxMacros"
3384− , "syntax-pretty"
3385− , "syntax-printer"
3386− , "syntax-trees"
3387− , "syntax-trees-fork-bairyn"
3388− , "synthesizer"
3389− , "synthesizer-alsa"
3390− , "synthesizer-core"
3391− , "synthesizer-dimensional"
3392− , "synthesizer-midi"
3393− , "Sysmon"
3394− , "system-canonicalpath"
3395− , "system-lifted"
3396− , "system-random-effect"
3397− , "ta"
3398− , "Tables"
3399− , "tablestorage"
3400− , "tabloid"
3401− , "tagged-list"
3402− , "tagged-th"
3403− , "tagsoup-ht"
3404− , "tagsoup-parsec"
3405− , "Takusen"
3406− , "takusen-oracle"
3407− , "tamarin-prover"
3408− , "tamarin-prover-term"
3409− , "tamarin-prover-theory"
3410− , "tamarin-prover-utils"
3411− , "tamper"
3412− , "target"
3413− , "task"
3414− , "tasty-integrate"
3415− , "TBC"
3416− , "tbox"
3417− , "tccli"
3418− , "tcp"
3419− , "tdd-util"
3420− , "TeaHS"
3421− , "teams"
3422− , "telegram"
3423− , "template-default"
3424− , "template-haskell-util"
3425− , "template-hsml"
3426− , "templatepg"
3427− , "tempodb"
3428− , "temporal-csound"
3429− , "tempus"
3430− , "tensor"
3431− , "termbox-bindings"
3432− , "term-rewriting"
3433− , "terrahs"
3434− , "tersmu"
3435− , "test-framework-doctest"
3436− , "test-framework-quickcheck"
3437− , "testloop"
3438− , "testpattern"
3439− , "testPkg"
3440− , "testrunner"
3441− , "tetris"
3442− , "tex2txt"
3443− , "texrunner"
3444− , "text-json-qq"
3445− , "textmatetags"
3446− , "text-normal"
3447− , "textPlot"
3448− , "text-register-machine"
3449− , "texts"
3450− , "text-xml-generic"
3451− , "text-xml-qq"
3452− , "tfp-th"
3453− , "themplate"
3454− , "Theora"
3455− , "theoremquest-client"
3456− , "thih"
3457− , "thimk"
3458− , "Thingie"
3459− , "th-instances"
3460− , "th-kinds"
3461− , "thrift"
3462− , "Thrift"
3463− , "throttle"
3464− , "tianbar"
3465− , "tic-tac-toe"
3466− , "TicTacToe"
3467− , "tiger"
3468− , "tighttp"
3469− , "timberc"
3470− , "timecalc"
3471− , "time-extras"
3472− , "time-http"
3473− , "timeout"
3474− , "timeout-control"
3475− , "timeparsers"
3476− , "time-patterns"
3477− , "TimePiece"
3478− , "timeplot"
3479− , "time-recurrence"
3480− , "time-series"
3481− , "timestamp-subprocess-lines"
3482− , "time-w3c"
3483− , "TinyLaunchbury"
3484− , "TinyURL"
3485− , "Titim"
3486− , "tkhs"
3487− , "tkyprof"
3488− , "tls-extra"
3489− , "todos"
3490− , "to-haskell"
3491− , "toilet"
3492− , "toktok"
3493− , "tokyocabinet-haskell"
3494− , "toml"
3495− , "Top"
3496− , "topkata"
3497− , "torch"
3498− , "to-string-class"
3499− , "to-string-instances"
3500− , "Tournament"
3501− , "tracker"
3502− , "trajectory"
3503− , "transactional-events"
3504− , "transformers-convert"
3505− , "transformers-runnable"
3506− , "translate"
3507− , "traypoweroff"
3508− , "treemap-html-tools"
3509− , "treeviz"
3510− , "tremulous-query"
3511− , "TrendGraph"
3512− , "trhsx"
3513− , "triangulation"
3514− , "TrieMap"
3515− , "trimpolya"
3516− , "true-name"
3517− , "tsession"
3518− , "tsession-happstack"
3519− , "tskiplist"
3520− , "tsp-viz"
3521− , "tuntap"
3522− , "tup-functor"
3523− , "tuple-gen"
3524− , "tupleinstances"
3525− , "tuple-morph"
3526− , "twentefp-rosetree"
3527− , "twhs"
3528− , "twidge"
3529− , "twilight-stm"
3530− , "twilio"
3531− , "twill"
3532− , "twiml"
3533− , "twine"
3534− , "twisty"
3535− , "twitch"
3536− , "twitter"
3537− , "twitter-conduit"
3538− , "twitter-enumerator"
3539− , "twitter-types"
3540− , "twitter-types-lens"
3541− , "tx"
3542− , "TYB"
3543− , "typalyze"
3544− , "typeable-th"
3545− , "type-cereal"
3546− , "TypeClass"
3547− , "type-digits"
3548− , "typedquery"
3549− , "type-equality-check"
3550− , "typehash"
3551− , "TypeIlluminator"
3552− , "type-int"
3553− , "type-level"
3554− , "type-level-bst"
3555− , "type-level-sets"
3556− , "typelevel-tensor"
3557− , "type-list"
3558− , "TypeNat"
3559− , "type-natural"
3560− , "type-ord"
3561− , "type-ord-spine-cereal"
3562− , "typeparams"
3563− , "type-prelude"
3564− , "typescript-docs"
3565− , "type-settheory"
3566− , "type-spine"
3567− , "type-structure"
3568− , "type-sub-th"
3569− , "typography-geometry"
3570− , "uAgda"
3571− , "uberlast"
3572− , "uconv"
3573− , "udbus"
3574− , "udbus-model"
3575− , "udev"
3576− , "ui-command"
3577− , "UMM"
3578− , "unamb-custom"
3579− , "unbound"
3580− , "unbounded-delays-units"
3581− , "unboxed-containers"
3582− , "unicode-normalization"
3583− , "unicoder"
3584− , "uniform-io"
3585− , "union-map"
3586− , "uniqueid"
3587− , "unique-logic-tf"
3588− , "units"
3589− , "units-defs"
3590− , "unittyped"
3591− , "universe-th"
3592− , "unix-process-conduit"
3593− , "unlit"
3594− , "unordered-containers-rematch"
3595− , "unpack-funcs"
3596− , "unscramble"
3597− , "up"
3598− , "uploadcare"
3599− , "upskirt"
3600− , "ureader"
3601− , "urembed"
3602− , "uri-conduit"
3603− , "uri-enumerator"
3604− , "uri-enumerator-file"
3605− , "urlcheck"
3606− , "urldecode"
3607− , "UrlDisp"
3608− , "urldisp-happstack"
3609− , "url-generic"
3610− , "URLT"
3611− , "urxml"
3612− , "usb-enumerator"
3613− , "usb-iteratee"
3614− , "usb-safe"
3615− , "uuagc-diagrams"
3616− , "uu-tc"
3617− , "uvector"
3618− , "uvector-algorithms"
3619− , "v4l2"
3620− , "v4l2-examples"
3621− , "vacuum"
3622− , "vacuum-cairo"
3623− , "vacuum-graphviz"
3624− , "vacuum-opengl"
3625− , "vacuum-ubigraph"
3626− , "validate"
3627− , "vampire"
3628− , "var"
3629− , "vaultaire-common"
3630− , "vcard"
3631− , "Vec-Boolean"
3632− , "Vec-OpenGLRaw"
3633− , "vector-bytestring"
3634− , "vector-clock"
3635− , "vector-conduit"
3636− , "vector-fftw"
3637− , "vector-functorlazy"
3638− , "vector-instances-collections"
3639− , "vector-random"
3640− , "vector-read-instances"
3641− , "vector-space-opengl"
3642− , "vector-static"
3643− , "Vec-Transform"
3644− , "verilog"
3645− , "vigilance"
3646− , "vintage-basic"
3647− , "vinyl"
3648− , "vinyl-gl"
3649− , "vinyl-json"
3650− , "vinyl-utils"
3651− , "virthualenv"
3652− , "vision"
3653− , "visual-graphrewrite"
3654− , "visual-prof"
3655− , "vk-aws-route53"
3656− , "VKHS"
3657− , "vorbiscomment"
3658− , "vowpal-utils"
3659− , "voyeur"
3660− , "vtegtk3"
3661− , "vty-examples"
3662− , "vty-menu"
3663− , "vty-ui"
3664− , "vty-ui-extras"
3665− , "wai-cors"
3666− , "wai-eventsource"
3667− , "wai-graceful"
3668− , "wai-handler-devel"
3669− , "wai-handler-snap"
3670− , "wai-handler-webkit"
3671− , "wai-hastache"
3672− , "wai-lite"
3673− , "wai-logger-prefork"
3674− , "wai-middleware-cache"
3675− , "wai-middleware-cache-redis"
3676− , "wai-middleware-catch"
3677− , "wai-middleware-consul"
3678− , "wai-middleware-etag"
3679− , "wai-middleware-headers"
3680− , "wai-middleware-hmac-client"
3681− , "wai-middleware-preprocessor"
3682− , "wai-middleware-route"
3683− , "wai-middleware-static-caching"
3684− , "wai-predicates"
3685− , "wai-routing"
3686− , "wai-session-tokyocabinet"
3687− , "wai-static-cache"
3688− , "wai-throttler"
3689− , "waitra"
3690− , "warp-dynamic"
3691− , "warp-static"
3692− , "warp-tls-uid"
3693− , "WashNGo"
3694− , "watchdog"
3695− , "watcher"
3696− , "watchit"
3697− , "wavesurfer"
3698− , "weather-api"
3699− , "WebBits-Html"
3700− , "WebBits-multiplate"
3701− , "web-browser-in-haskell"
3702− , "WebCont"
3703− , "webcrank-dispatch"
3704− , "webcrank-wai"
3705− , "webdriver-snoy"
3706− , "web-encodings"
3707− , "webify"
3708− , "webkit-javascriptcore"
3709− , "web-mongrel2"
3710− , "Webrexp"
3711− , "web-routes-quasi"
3712− , "web-routes-transformers"
3713− , "webserver"
3714− , "websnap"
3715− , "webwire"
3716− , "wedged"
3717− , "weighted-regexp"
3718− , "welshy"
3719− , "Wheb"
3720− , "wheb-mongo"
3721− , "wheb-redis"
3722− , "wheb-strapped"
3723− , "whim"
3724− , "whitespace"
3725− , "WikimediaParser"
3726− , "wikipedia4epub"
3727− , "Win32-dhcp-server"
3728− , "Win32-errors"
3729− , "Win32-extras"
3730− , "Win32-junction-point"
3731− , "Win32-notify"
3732− , "Win32-security"
3733− , "Win32-services"
3734− , "Win32-services-wrapper"
3735− , "windowslive"
3736− , "winerror"
3737− , "winio"
3738− , "WL500gPControl"
3739− , "wlc-hs"
3740− , "wobsurv"
3741− , "woffex"
3742− , "wolf"
3743− , "word24"
3744− , "wordcloud"
3745− , "Wordlint"
3746− , "WordNet"
3747− , "WordNet-ghc74"
3748− , "wordsearch"
3749− , "wp-archivebot"
3750− , "wraxml"
3751− , "wright"
3752− , "wtk"
3753− , "wtk-gtk"
3754− , "wumpus-basic"
3755− , "wumpus-core"
3756− , "wumpus-drawing"
3757− , "wumpus-microprint"
3758− , "wumpus-tree"
3759− , "WURFL"
3760− , "wxAsteroids"
3761− , "WXDiffCtrl"
3762− , "wxFruit"
3763− , "wxhnotepad"
3764− , "wxturtle"
3765− , "wyvern"
3766− , "X11-extras"
3767− , "X11-rm"
3768− , "X11-xdamage"
3769− , "X11-xfixes"
3770− , "x11-xinput"
3771− , "x509-util"
3772− , "xchat-plugin"
3773− , "x-dsp"
3774− , "Xec"
3775− , "xfconf"
3776− , "xhaskell-library"
3777− , "xhb-ewmh"
3778− , "xine"
3779− , "xing-api"
3780− , "XInput"
3781− , "xkcd"
3782− , "xlsior"
3783− , "xlsx-templater"
3784− , "xml2json"
3785− , "xml2x"
3786− , "xml-catalog"
3787− , "xml-enumerator"
3788− , "xml-enumerator-combinators"
3789− , "XmlHtmlWriter"
3790− , "xml-parsec"
3791− , "xml-pipe"
3792− , "xml-prettify"
3793− , "xml-push"
3794− , "xmltv"
3795− , "XMMS"
3796− , "xmms2-client"
3797− , "xmms2-client-glib"
3798− , "xmonad-bluetilebranch"
3799− , "xmonad-contrib-bluetilebranch"
3800− , "xmonad-eval"
3801− , "xmpipe"
3802− , "XMPP"
3803− , "xournal-builder"
3804− , "xournal-convert"
3805− , "xournal-parser"
3806− , "xournal-render"
3807− , "xournal-types"
3808− , "xsact"
3809− , "XSaiga"
3810− , "xslt"
3811− , "y0l0bot"
3812− , "Yablog"
3813− , "yackage"
3814− , "YACPong"
3815− , "yahoo-web-search"
3816− , "yajl"
3817− , "yajl-enumerator"
3818− , "yaml2owl"
3819− , "YamlReference"
3820− , "yaml-rpc"
3821− , "yaml-rpc-scotty"
3822− , "yaml-rpc-snap"
3823− , "yampa-canvas"
3824− , "yampa-glfw"
3825− , "yampa-glut"
3826− , "yaop"
3827− , "yarr"
3828− , "yarr-image-io"
3829− , "yavie"
3830− , "ycextra"
3831− , "yesod-angular-ui"
3832− , "yesod-auth-account-fork"
3833− , "yesod-auth-kerberos"
3834− , "yesod-auth-ldap"
3835− , "yesod-auth-pam"
3836− , "yesod-auth-smbclient"
3837− , "yesod-bootstrap"
3838− , "yesod-comments"
3839− , "yesod-continuations"
3840− , "yesod-datatables"
3841− , "yesod-dsl"
3842− , "yesod-eventsource"
3843− , "yesod-examples"
3844− , "yesod-goodies"
3845− , "yesod-links"
3846− , "yesod-mangopay"
3847− , "yesod-paginate"
3848− , "yesod-pagination"
3849− , "yesod-paginator"
3850− , "yesod-platform"
3851− , "yesod-pure"
3852− , "yesod-purescript"
3853− , "yesod-raml"
3854− , "yesod-routes-flow"
3855− , "yesod-routes-typescript"
3856− , "yesod-rst"
3857− , "yesod-s3"
3858− , "yesod-session-redis"
3859− , "yesod-tableview"
3860− , "yesod-test-json"
3861− , "yesod-tls"
3862− , "yesod-vend"
3863− , "yesod-worker"
3864− , "YFrob"
3865− , "yhccore"
3866− , "yi-contrib"
3867− , "yi-fuzzy-open"
3868− , "yi-gtk"
3869− , "yi-vty"
3870− , "yjftp"
3871− , "Yogurt"
3872− , "Yogurt-Standalone"
3873− , "yoko"
3874− , "york-lava"
3875− , "yql"
3876− , "yuiGrid"
3877− , "yuuko"
3878− , "zampolit"
3879− , "zasni-gerna"
3880− , "zendesk-api"
3881− , "zeno"
3882− , "zeromq3-conduit"
3883− , "zeromq3-haskell"
3884− , "zeromq-haskell"
3885− , "zeroth"
3886− , "ZFS"
3887− , "zipedit"
3888− , "ZMachine"
3889− , "zmcat"
3890− , "zmqat"
3891− , "zoneinfo"
3892− , "zoom"
3893− , "zoom-cache"
3894− , "zoom-cache-pcm"
3895− , "zoom-cache-sndfile"
3896− , "zot"
3897− , "zsh-battery"
3898− , "ztail"
3899− , "Zwaluw"
3900− , "yesod-media-simple"
3901− , "token-utils"
3902− , "ghc-imported-from"
3903− , "libhbb"
3904− , "hoogle-index"
3905− , "reflex-dom"
3906− , "HaRe"
3907− , "aws-configuration-tools"
3908− , "aws-dynamodb-streams"
3909− , "aws-general"
3910− , "aws-kinesis-client"
3911− , "aws-kinesis"
3912− , "aws-performance-tests"
3913− , "byline"
3914− , "glambda"
3915− , "haskell-token-utils"
3916− , "hbb"
3917− , "octohat"
3918− , "orchestrate"
3919− , "pdf-toolbox-content"
3920− , "pdf-toolbox-core"
3921− , "pdf-toolbox-document"
3922− , "pdf-toolbox-viewer"
3923− , "riemann"
3924− , "tellbot"
3925− , "terminfo-hs"
3926− , "vimeta"
3927− , "ply-loader"
3928− , "bitvec"
3929− , "full-text-search"
3930− , "QuadEdge"
3931− , "sdr"
3932− , "these"
3933− , "tz"
3934− , "jacobi-roots"
3935− , "atomic-primops-vector"
3936− , "OrderedBits"
3937− , "pipes-csv"
3938− , "hybrid-vectors"
3939− , "hyperloglog"
3940− , "bitstream"
3941− , "repa-stream"
3942− , "dph-prim-seq"
3943− , "compensated"
3944− , "ADPfusion"
3945− , "GrammarProducts"
3946− , "reflex"
3947− , "reflex-gloss"
3948− , "AlignmentAlgorithms"
3949− , "GenussFold"
3950− , "PrimitiveArray"
3951− , "FormalGrammars"
3952− , "BiobaseXNA"
3953− , "BiobaseTypes"
3954− , "broker-haskell"
3955− , "concurrent-machines"
3956− , "darcs-fastconvert"
3957− , "ivory-backend-c"
3958− , "ivory-bitdata"
3959− , "ivory-examples"
3960− , "ivory-hw"
3961− , "laborantin-hs"
3962− , "magico"
3963− , "resistor-cube"
3964− , "taskpool"
3965− , "wai-middleware-metrics"
3966− ]
3967−
3968−}