git.iko.soy/typeable/cabal2nix
on master help sign in
cabal2nix: added support for hard-coded flag selections
96e068bPeter Simons
cabal2nix.cabal+2
@@ -59,6 +59,7 @@ Executable cabal2nix
59 Extensions: PatternGuards, RecordWildCards, CPP
59 Extensions: PatternGuards, RecordWildCards, CPP
60 Ghc-Options: -Wall
60 Ghc-Options: -Wall
61 other-modules: Cabal2Nix.CorePackages
61 other-modules: Cabal2Nix.CorePackages
62+ Cabal2Nix.Flags
62 Cabal2Nix.Hackage
63 Cabal2Nix.Hackage
63 Cabal2Nix.Name
64 Cabal2Nix.Name
64 Cabal2Nix.Normalize
65 Cabal2Nix.Normalize
@@ -77,6 +78,7 @@ Executable hackage4nix
77 Extensions: PatternGuards, RecordWildCards, CPP
78 Extensions: PatternGuards, RecordWildCards, CPP
78 Ghc-Options: -Wall
79 Ghc-Options: -Wall
79 other-modules: Cabal2Nix.CorePackages
80 other-modules: Cabal2Nix.CorePackages
81+ Cabal2Nix.Flags
80 Cabal2Nix.Name
82 Cabal2Nix.Name
81 Cabal2Nix.Normalize
83 Cabal2Nix.Normalize
82 Cabal2Nix.Package
84 Cabal2Nix.Package
src/Cabal2Nix/Flags.hsnew file+17
@@ -0,0 +1,17 @@
1+module Cabal2Nix.Flags ( configureFlags ) where
2+
3+import Distribution.Package
4+import Distribution.PackageDescription
5+import Distribution.PackageDescription.Configuration
6+
7+configureFlags :: PackageIdentifier -> FlagAssignment
8+configureFlags (PackageIdentifier (PackageName name) version)
9+ | name == "pandoc" = [enable "highlighting", enable "threaded"]
10+ | otherwise = []
11+
12+
13+enable :: String -> (FlagName,Bool)
14+enable name = (FlagName name, True)
15+
16+disable :: String -> (FlagName,Bool)
17+disable name = (FlagName name, False)
src/Cabal2Nix/Package.hs+4−1
@@ -3,6 +3,7 @@ module Cabal2Nix.Package ( cabal2nix ) where
3import Cabal2Nix.License
3import Cabal2Nix.License
4import Cabal2Nix.PostProcess
4import Cabal2Nix.PostProcess
5import Cabal2Nix.Normalize
5import Cabal2Nix.Normalize
6+import Cabal2Nix.Flags
6import Data.Maybe
7import Data.Maybe
7import Distribution.Compiler
8import Distribution.Compiler
8import qualified Distribution.Package as Cabal
9import qualified Distribution.Package as Cabal
@@ -41,7 +42,9 @@ cabal2nix cabal = normalize $ postProcess $ MkDerivation
41 tools = concatMap Cabal.buildTools (libDeps ++ exeDeps)
42 tools = concatMap Cabal.buildTools (libDeps ++ exeDeps)
42 libs = concatMap Cabal.extraLibs (libDeps ++ exeDeps)
43 libs = concatMap Cabal.extraLibs (libDeps ++ exeDeps)
43 pcs = map unDep (concatMap Cabal.pkgconfigDepends (libDeps ++ exeDeps))
44 pcs = map unDep (concatMap Cabal.pkgconfigDepends (libDeps ++ exeDeps))
44− Right (tpkg, _) = finalizePackageDescription [] (const True)
45+ Right (tpkg, _) = finalizePackageDescription
46+ (configureFlags pkg)
47+ (const True)
45 (Platform I386 Linux) -- shouldn't be hardcoded
48 (Platform I386 Linux) -- shouldn't be hardcoded
46 (CompilerId GHC (Version [7,0,4] [])) -- dito
49 (CompilerId GHC (Version [7,0,4] [])) -- dito
47 [] cabal
50 [] cabal