@@ -1,40 +0,0 @@
1−#! /usr/bin/env runhaskell
2−
3−> module Main ( main ) where
4−>
5−> import Data.Char
6−> import Data.Maybe
7−> import Distribution.PackageDescription
8−> import Distribution.Simple
9−> import Distribution.Simple.LocalBuildInfo
10−> import Distribution.Simple.Program
11−> import Distribution.Simple.Setup
12−>
13−> main :: IO ()
14−> main = defaultMainWithHooks simpleUserHooks
15−> { hookedPrograms = map simpleProgram programs
16−> , confHook = configure
17−> }
18−>
19−> programs :: [String]
20−> programs = ["nix-instantiate", "nix-build", "nix-env", "nix-store"]
21−>
22−> configure :: (GenericPackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo
23−> configure (gpd, hbi) flags = do
24−> lbi' <- confHook simpleUserHooks (gpd, hbi) flags
25−> let paths = map (\p -> (p, maybe p programPath (lookupProgram (simpleProgram p) (withPrograms lbi)))) programs
26−> descr = localPkgDescr lbi'
27−> lib = fromJust (library descr)
28−> libbi = libBuildInfo lib
29−> lbi = lbi' { localPkgDescr = descr
30−> { library = Just (lib { libBuildInfo = libbi { cppOptions = cppOptions libbi ++ map fmtCppArg paths } })
31−> }
32−> }
33−> return lbi
34−>
35−> fmtCppArg :: (String, FilePath) -> String
36−> fmtCppArg (prg, path) = "-DPATH_TO_" ++ map mangle prg ++ "=" ++ show path
37−> where
38−> mangle :: Char -> Char
39−> mangle '-' = '_'
40−> mangle c = toUpper c