hnix 0.4.0 → 0.5.0
raw patch · 64 files changed
+9798/−24543 lines, 64 filesdep +Diffdep +Globdep +QuickCheckdep −parsecdep −parsersdep −trifectadep ~basedep ~deepseqdep ~deriving-compat
Dependencies added: Diff, Glob, QuickCheck, aeson, array, base16-bytestring, binary, bytestring, cryptohash-md5, cryptohash-sha1, cryptohash-sha256, cryptohash-sha512, directory, exceptions, filepath, generic-random, hashable, hashing, haskeline, http-client, http-client-tls, http-types, interpolate, lens-family, lens-family-core, lens-family-th, logict, megaparsec, monadlist, mtl, optparse-applicative, pretty-show, process, quickcheck-instances, repline, scientific, serialise, split, syb, tasty-quickcheck, template-haskell, these, time, unix, vector, xml
Dependencies removed: parsec, parsers, trifecta
Dependency ranges changed: base, deepseq, deriving-compat, unordered-containers
Files
- Nix/Atoms.hs +0/−48
- Nix/Eval.hs +0/−240
- Nix/Expr.hs +0/−10
- Nix/Expr/Shorthands.hs +0/−238
- Nix/Expr/Types.hs +0/−272
- Nix/Expr/Types/Annotated.hs +0/−90
- Nix/Parser.hs +0/−293
- Nix/Parser/Library.hs +0/−138
- Nix/Parser/Operators.hs +0/−81
- Nix/Pretty.hs +0/−177
- Nix/StringOperations.hs +0/−87
- README.md +94/−0
- data/let-comments-multiline.nix +0/−13
- data/let-comments.nix +0/−13
- data/let.nix +0/−5
- data/nixpkgs-all-packages-pretty.nix +0/−10835
- data/nixpkgs-all-packages.nix +0/−11561
- data/simple-pretty.nix +0/−28
- data/simple.nix +0/−1
- hnix.cabal +269/−116
- main/Main.hs +213/−30
- main/Repl.hs +196/−0
- src/Nix.hs +151/−0
- src/Nix/Atoms.hs +43/−0
- src/Nix/Builtins.hs +996/−0
- src/Nix/Cache.hs +48/−0
- src/Nix/Context.hs +33/−0
- src/Nix/Convert.hs +583/−0
- src/Nix/Effects.hs +40/−0
- src/Nix/Eval.hs +442/−0
- src/Nix/Exec.hs +758/−0
- src/Nix/Expr.hs +10/−0
- src/Nix/Expr/Shorthands.hs +231/−0
- src/Nix/Expr/Types.hs +558/−0
- src/Nix/Expr/Types/Annotated.hs +240/−0
- src/Nix/Frames.hs +46/−0
- src/Nix/Lint.hs +418/−0
- src/Nix/Normal.hs +98/−0
- src/Nix/Options.hs +79/−0
- src/Nix/Options/Parser.hs +130/−0
- src/Nix/Parser.hs +548/−0
- src/Nix/Pretty.hs +305/−0
- src/Nix/Reduce.hs +363/−0
- src/Nix/Render.hs +35/−0
- src/Nix/Render/Frame.hs +175/−0
- src/Nix/Scope.hs +83/−0
- src/Nix/Strings.hs +112/−0
- src/Nix/TH.hs +36/−0
- src/Nix/Thunk.hs +111/−0
- src/Nix/Type/Assumption.hs +44/−0
- src/Nix/Type/Env.hs +70/−0
- src/Nix/Type/Infer.hs +612/−0
- src/Nix/Type/Type.hs +40/−0
- src/Nix/Utils.hs +110/−0
- src/Nix/Value.hs +346/−0
- src/Nix/XML.hs +54/−0
- tests/EvalTests.hs +272/−32
- tests/Main.hs +97/−11
- tests/NixLanguageTests.hs +159/−0
- tests/ParserTests.hs +227/−182
- tests/PrettyParseTests.hs +244/−0
- tests/PrettyTests.hs +12/−3
- tests/ShorthandTests.hs +0/−39
- tests/TestCommon.hs +67/−0
@@ -1,48 +0,0 @@-module Nix.Atoms where--import Prelude-import Data.Text (Text, pack)-import GHC.Generics-import Data.Data-import Data.HashMap.Strict (HashMap)---- | Atoms are values that evaluate to themselves. This means that--- they appear in both the parsed AST (in the form of literals) and--- the evaluated form.-data NAtom- -- | An integer. The c nix implementation currently only supports- -- integers that fit in the range of 'Int64'.- = NInt !Integer- -- | Booleans.- | NBool !Bool- -- | Null values. There's only one of this variant.- | NNull- -- | URIs, which are just string literals, but do not need quotes.- | NUri !Text- deriving (Eq, Ord, Generic, Typeable, Data, Show)--class ToAtom t where- toAtom :: t -> NAtom--instance ToAtom Bool where toAtom = NBool-instance ToAtom Int where toAtom = NInt . fromIntegral-instance ToAtom Integer where toAtom = NInt--class FromAtom t where- fromAtom :: NAtom -> t- fromAtoms :: [NAtom] -> t- fromAtomSet :: HashMap Text NAtom -> t---- | Convert a primitive into something which can be made from a--- constant. So for example `convert 1 :: Expression`-convert :: (ToAtom prim, FromAtom t) => prim -> t-convert = fromAtom . toAtom---- | Conversion to environment variables for constants.-atomToEnvString :: NAtom -> Text-atomToEnvString = \case- NInt i -> pack $ show i- NBool True -> "1"- NBool False -> ""- NNull -> ""- NUri uri -> uri
@@ -1,240 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE RecursiveDo #-}-module Nix.Eval where--import Control.Applicative-import Control.Arrow-import Control.Monad hiding (mapM, sequence)-import Control.Monad.Fix-import Data.Fix-import Data.Foldable (foldl')-import qualified Data.Map as Map-import Data.Text (Text)-import qualified Data.Text as Text-import Data.Traversable as T-import Data.Typeable (Typeable)-import GHC.Generics-import Nix.Pretty (atomText)-import Nix.StringOperations (runAntiquoted)-import Nix.Atoms-import Nix.Expr-import Prelude hiding (mapM, sequence)---- | An 'NValue' is the most reduced form of an 'NExpr' after evaluation--- is completed.-data NValueF m r- = NVConstant NAtom- | NVStr Text- | NVList [r]- | NVSet (Map.Map Text r)- | NVFunction (Params r) (NValue m -> m r)- | NVLiteralPath FilePath- | NVEnvPath FilePath- deriving (Generic, Typeable, Functor)--instance Show f => Show (NValueF m f) where- showsPrec = flip go where- go (NVConstant atom) = showsCon1 "NVConstant" atom- go (NVStr text) = showsCon1 "NVStr" text- go (NVList list) = showsCon1 "NVList" list- go (NVSet attrs) = showsCon1 "NVSet" attrs- go (NVFunction r _) = showsCon1 "NVFunction" r- go (NVLiteralPath p) = showsCon1 "NVLiteralPath" p- go (NVEnvPath p) = showsCon1 "NVEnvPath" p-- showsCon1 :: Show a => String -> a -> Int -> String -> String- showsCon1 con a d = showParen (d > 10) $ showString (con ++ " ") . showsPrec 11 a--type NValue m = Fix (NValueF m)--valueText :: Functor m => NValue m -> Text-valueText = cata phi where- phi (NVConstant a) = atomText a- phi (NVStr t) = t- phi (NVList _) = error "Cannot coerce a list to a string"- phi (NVSet _) = error "Cannot coerce a set to a string"- phi (NVFunction _ _) = error "Cannot coerce a function to a string"- phi (NVLiteralPath p) = Text.pack p- phi (NVEnvPath p) = Text.pack p--buildArgument :: Params (NValue m) -> NValue m -> NValue m-buildArgument paramSpec arg = either error (Fix . NVSet) $ case paramSpec of- Param name -> return $ Map.singleton name arg- ParamSet (FixedParamSet s) Nothing -> lookupParamSet s- ParamSet (FixedParamSet s) (Just name) ->- Map.insert name arg <$> lookupParamSet s- ParamSet _ _ -> error "Can't yet handle variadic param sets"- where- go env k def = maybe (Left err) return $ Map.lookup k env <|> def- where err = "Could not find " ++ show k- lookupParamSet s = case arg of- Fix (NVSet env) -> Map.traverseWithKey (go env) s- _ -> Left "Unexpected function environment"--evalExpr :: MonadFix m => NExpr -> NValue m -> m (NValue m)-evalExpr = cata phi- where- phi (NSym var) = \env -> case env of- Fix (NVSet s) -> maybe err return $ Map.lookup var s- _ -> error "invalid evaluation environment"- where err = error ("Undefined variable: " ++ show var)- phi (NConstant x) = const $ return $ Fix $ NVConstant x- phi (NStr str) = fmap (Fix . NVStr) . flip evalString str- phi (NLiteralPath p) = const $ return $ Fix $ NVLiteralPath p- phi (NEnvPath p) = const $ return $ Fix $ NVEnvPath p-- phi (NUnary op arg) = \env -> arg env >>= \case- Fix (NVConstant c) -> pure $ Fix $ NVConstant $ case (op, c) of- (NNeg, NInt i) -> NInt (-i)- (NNot, NBool b) -> NBool (not b)- _ -> error $ "unsupported argument type for unary operator " ++ show op- _ -> error "argument to unary operator must evaluate to an atomic type"- phi (NBinary op larg rarg) = \env -> do- lval <- larg env- rval <- rarg env- case (lval, rval) of- (Fix (NVConstant lc), Fix (NVConstant rc)) -> pure $ Fix $ NVConstant $ case (op, lc, rc) of- (NEq, l, r) -> NBool $ l == r- (NNEq, l, r) -> NBool $ l /= r- (NLt, l, r) -> NBool $ l < r- (NLte, l, r) -> NBool $ l <= r- (NGt, l, r) -> NBool $ l > r- (NGte, l, r) -> NBool $ l >= r- (NAnd, NBool l, NBool r) -> NBool $ l && r- (NOr, NBool l, NBool r) -> NBool $ l || r- (NImpl, NBool l, NBool r) -> NBool $ not l || r- (NPlus, NInt l, NInt r) -> NInt $ l + r- (NMinus, NInt l, NInt r) -> NInt $ l - r- (NMult, NInt l, NInt r) -> NInt $ l * r- (NDiv, NInt l, NInt r) -> NInt $ l `div` r- _ -> error $ "unsupported argument types for binary operator " ++ show op- (Fix (NVStr ls), Fix (NVStr rs)) -> case op of- NConcat -> pure $ Fix $ NVStr $ ls `mappend` rs- _ -> error $ "unsupported argument types for binary operator " ++ show op- (Fix (NVSet ls), Fix (NVSet rs)) -> case op of- NUpdate -> pure $ Fix $ NVSet $ rs `Map.union` ls- _ -> error $ "unsupported argument types for binary operator " ++ show op- _ -> error $ "unsupported argument types for binary operator " ++ show op-- phi (NSelect aset attr alternative) = go where- go env = do- aset' <- aset env- ks <- evalSelector True env attr- case extract aset' ks of- Just v -> pure v- Nothing -> case alternative of- Just v -> v env- Nothing -> error "could not look up attribute in value"- extract (Fix (NVSet s)) (k:ks) = case Map.lookup k s of- Just v -> extract v ks- Nothing -> Nothing- extract _ (_:_) = Nothing- extract v [] = Just v-- phi (NHasAttr aset attr) = \env -> aset env >>= \case- Fix (NVSet s) -> evalSelector True env attr >>= \case- [keyName] -> pure $ Fix $ NVConstant $ NBool $ keyName `Map.member` s- _ -> error "attribute name argument to hasAttr is not a single-part name"- _ -> error "argument to hasAttr has wrong type"-- phi (NList l) = \env ->- Fix . NVList <$> mapM ($ env) l-- phi (NSet binds) = \env -> Fix . NVSet <$> evalBinds True env binds-- phi (NRecSet binds) = \env -> case env of- (Fix (NVSet env')) -> do- rec- mergedEnv <- pure $ Fix $ NVSet $ evaledBinds `Map.union` env'- evaledBinds <- evalBinds True mergedEnv binds- pure mergedEnv- _ -> error "invalid evaluation environment"-- phi (NLet binds e) = \env -> case env of- (Fix (NVSet env')) -> do- rec- mergedEnv <- pure $ Fix $ NVSet $ evaledBinds `Map.union` env'- evaledBinds <- evalBinds True mergedEnv binds- e mergedEnv- _ -> error "invalid evaluation environment"-- phi (NIf cond t f) = \env -> do- (Fix cval) <- cond env- case cval of- NVConstant (NBool True) -> t env- NVConstant (NBool False) -> f env- _ -> error "condition must be a boolean"-- phi (NWith scope e) = \env -> case env of- (Fix (NVSet env')) -> do- s <- scope env- case s of- (Fix (NVSet scope')) -> e . Fix . NVSet $ Map.union scope' env'- _ -> error "scope must be a set in with statement"- _ -> error "invalid evaluation environment"-- phi (NAssert cond e) = \env -> do- (Fix cond') <- cond env- case cond' of- (NVConstant (NBool True)) -> e env- (NVConstant (NBool False)) -> error "assertion failed"- _ -> error "assertion condition must be boolean"-- phi (NApp fun x) = \env -> do- fun' <- fun env- case fun' of- Fix (NVFunction argset f) -> do- arg <- x env- let arg' = buildArgument argset arg- f arg'- _ -> error "Attempt to call non-function"-- phi (NAbs a b) = \env -> do- -- jww (2014-06-28): arglists should not receive the current- -- environment, but rather should recursively view their own arg- -- set- args <- traverse ($ env) a- return $ Fix $ NVFunction args b--evalString :: Monad m- => NValue m -> NString (NValue m -> m (NValue m)) -> m Text-evalString env nstr = do- let fromParts parts = Text.concat <$>- mapM (runAntiquoted return (fmap valueText . ($ env))) parts- case nstr of- Indented parts -> fromParts parts- DoubleQuoted parts -> fromParts parts--evalBinds :: Monad m => Bool -> NValue m ->- [Binding (NValue m -> m (NValue m))] ->- m (Map.Map Text (NValue m))-evalBinds allowDynamic env xs = buildResult <$> sequence (concatMap go xs) where- buildResult :: [([Text], NValue m)] -> Map.Map Text (NValue m)- buildResult = foldl' insert Map.empty . map (first reverse) where- insert _ ([], _) = error "invalid selector with no components"- insert m (p:ps, v) = modifyPath ps (insertIfNotMember p v) where- alreadyDefinedErr = error $ "attribute " ++ attr ++ " already defined"- attr = show $ Text.intercalate "." $ reverse (p:ps)-- modifyPath [] f = f m- modifyPath (x:parts) f = modifyPath parts $ \m' -> case Map.lookup x m' of- Nothing -> Map.singleton x $ g Map.empty- Just (Fix (NVSet m'')) -> Map.insert x (g m'') m'- Just _ -> alreadyDefinedErr- where g = Fix . NVSet . f-- insertIfNotMember k x m'- | Map.notMember k m' = Map.insert k x m'- | otherwise = alreadyDefinedErr-- -- TODO: Inherit- go (NamedVar x y) = [liftM2 (,) (evalSelector allowDynamic env x) (y env)]- go _ = [] -- HACK! But who cares right now--evalSelector :: Monad m => Bool -> NValue m -> NAttrPath (NValue m -> m (NValue m)) -> m [Text]-evalSelector dyn env = mapM evalKeyName where- evalKeyName (StaticKey k) = return k- evalKeyName (DynamicKey k)- | dyn = runAntiquoted (evalString env) (fmap valueText . ($ env)) k- | otherwise = error "dynamic attribute not allowed in this context"
@@ -1,10 +0,0 @@--- | Wraps the expression submodules.-module Nix.Expr (- module Nix.Expr.Types,- module Nix.Expr.Types.Annotated,- module Nix.Expr.Shorthands- ) where--import Nix.Expr.Types-import Nix.Expr.Shorthands-import Nix.Expr.Types.Annotated
@@ -1,238 +0,0 @@--- | A bunch of shorthands for making nix expressions.------ Functions with an @F@ suffix return a more general type without the outer--- 'Fix' wrapper.-module Nix.Expr.Shorthands where--import Prelude-import Data.Monoid-import Data.Text (Text)-import Data.Fix-import qualified Data.Map as Map-import Nix.Atoms-import Nix.Expr.Types-import Text.Regex.TDFA.Text ()-import Text.Regex.TDFA ((=~))---- | Make an integer literal expression.-mkInt :: Integer -> NExpr-mkInt = Fix . mkIntF--mkIntF :: Integer -> NExprF a-mkIntF = NConstant . NInt---- | Make a regular (double-quoted) string.-mkStr :: Text -> NExpr-mkStr = Fix . NStr . DoubleQuoted . \case- "" -> []- x -> [Plain x]---- | Make an indented string.-mkIndentedStr :: Text -> NExpr-mkIndentedStr = Fix . NStr . Indented . \case- "" -> []- x -> [Plain x]---- | Make a literal URI expression.-mkUri :: Text -> NExpr-mkUri = Fix . mkUriF--mkUriF :: Text -> NExprF a-mkUriF = NConstant . NUri---- | Make a path. Use 'True' if the path should be read from the--- environment, else 'False'.-mkPath :: Bool -> FilePath -> NExpr-mkPath b = Fix . mkPathF b--mkPathF :: Bool -> FilePath -> NExprF a-mkPathF False = NLiteralPath-mkPathF True = NEnvPath---- | Make a path expression which pulls from the NIX_PATH env variable.-mkEnvPath :: FilePath -> NExpr-mkEnvPath = Fix . mkEnvPathF--mkEnvPathF :: FilePath -> NExprF a-mkEnvPathF = mkPathF True---- | Make a path expression which references a relative path.-mkRelPath :: FilePath -> NExpr-mkRelPath = Fix . mkRelPathF--mkRelPathF :: FilePath -> NExprF a-mkRelPathF = mkPathF False---- | Make a variable (symbol)-mkSym :: Text -> NExpr-mkSym = Fix . mkSymF--mkSymF :: Text -> NExprF a-mkSymF = NSym--mkSelector :: Text -> NAttrPath NExpr-mkSelector = (:[]) . StaticKey--mkBool :: Bool -> NExpr-mkBool = Fix . mkBoolF--mkBoolF :: Bool -> NExprF a-mkBoolF = NConstant . NBool--mkNull :: NExpr-mkNull = Fix mkNullF--mkNullF :: NExprF a-mkNullF = NConstant NNull--mkOper :: NUnaryOp -> NExpr -> NExpr-mkOper op = Fix . NUnary op--mkOper2 :: NBinaryOp -> NExpr -> NExpr -> NExpr-mkOper2 op a = Fix . NBinary op a--mkParamset :: [(Text, Maybe NExpr)] -> Params NExpr-mkParamset params = ParamSet (mkFixedParamSet params) Nothing--mkFixedParamSet :: [(Text, Maybe NExpr)] -> ParamSet NExpr-mkFixedParamSet ps = FixedParamSet (Map.fromList ps)--mkVariadicParamSet :: [(Text, Maybe NExpr)] -> ParamSet NExpr-mkVariadicParamSet ps = VariadicParamSet (Map.fromList ps)--mkApp :: NExpr -> NExpr -> NExpr-mkApp e = Fix . NApp e--mkRecSet :: [Binding NExpr] -> NExpr-mkRecSet = Fix . NRecSet--mkNonRecSet :: [Binding NExpr] -> NExpr-mkNonRecSet = Fix . NSet--mkLets :: [Binding NExpr] -> NExpr -> NExpr-mkLets bindings = Fix . NLet bindings--mkList :: [NExpr] -> NExpr-mkList = Fix . NList--mkWith :: NExpr -> NExpr -> NExpr-mkWith e = Fix . NWith e--mkAssert :: NExpr -> NExpr -> NExpr-mkAssert e = Fix . NWith e--mkIf :: NExpr -> NExpr -> NExpr -> NExpr-mkIf e1 e2 = Fix . NIf e1 e2--mkFunction :: Params NExpr -> NExpr -> NExpr-mkFunction params = Fix . NAbs params--mkDot :: NExpr -> Text -> NExpr-mkDot e key = mkDots e [key]--mkDots :: NExpr -> [Text] -> NExpr-mkDots e keys = Fix $ NSelect e (toKey <$> keys) Nothing- where- toKey :: Text -> NKeyName NExpr- toKey k = (if isPlainSymbol k then StaticKey else dynamicKey) k- -- | Make a dynamic key name that is only enclosed in double quotes- -- (no antiquotes).- dynamicKey :: Text -> NKeyName NExpr- dynamicKey k = DynamicKey $ Plain $ DoubleQuoted [Plain k]- -- | Check if it’s a valid nix symbol- -- the nix lexer regex for IDs (symbols) is [a-zA-Z\_][a-zA-Z0-9\_\'\-]*- isPlainSymbol :: Text -> Bool- isPlainSymbol s = s =~ ("^[a-zA-Z_][a-zA-Z0-9_'-]*$" :: Text)---- | An `inherit` clause without an expression to pull from.-inherit :: [NKeyName e] -> Binding e-inherit = Inherit Nothing---- | An `inherit` clause with an expression to pull from.-inheritFrom :: e -> [NKeyName e] -> Binding e-inheritFrom expr = Inherit (Just expr)---- | Shorthand for producing a binding of a name to an expression.-bindTo :: Text -> NExpr -> Binding NExpr-bindTo name val = NamedVar (mkSelector name) val---- | Infix version of bindTo.-($=) :: Text -> NExpr -> Binding NExpr-name $= value = bindTo name value--infixr 2 $=---- | Append a list of bindings to a set or let expression.--- For example, adding `[a = 1, b = 2]` to `let c = 3; in 4` produces--- `let a = 1; b = 2; c = 3; in 4`.-appendBindings :: [Binding NExpr] -> NExpr -> NExpr-appendBindings newBindings (Fix e) = case e of- NLet bindings e' -> Fix $ NLet (bindings <> newBindings) e'- NSet bindings -> Fix $ NSet (bindings <> newBindings)- NRecSet bindings -> Fix $ NRecSet (bindings <> newBindings)- _ -> error "Can only append bindings to a set or a let"---- | Applies a transformation to the body of a nix function.-modifyFunctionBody :: (NExpr -> NExpr) -> NExpr -> NExpr-modifyFunctionBody f (Fix e) = case e of- NAbs params body -> Fix $ NAbs params (f body)- _ -> error "Not a function"---- | A let statement with multiple assignments.-letsE :: [(Text, NExpr)] -> NExpr -> NExpr-letsE pairs = Fix . NLet (map (uncurry bindTo) pairs)---- | Wrapper for a single-variable @let@.-letE :: Text -> NExpr -> NExpr -> NExpr-letE varName varExpr = letsE [(varName, varExpr)]---- | Make an attribute set (non-recursive).-attrsE :: [(Text, NExpr)] -> NExpr-attrsE pairs = Fix $ NSet (map (uncurry bindTo) pairs)---- | Make an attribute set (recursive).-recAttrsE :: [(Text, NExpr)] -> NExpr-recAttrsE pairs = Fix $ NRecSet (map (uncurry bindTo) pairs)---- | Logical negation.-mkNot :: NExpr -> NExpr-mkNot = Fix . NUnary NNot---- | Dot-reference into an attribute set.-(!.) :: NExpr -> Text -> NExpr-(!.) = mkDot-infixl 8 !.--mkBinop :: NBinaryOp -> NExpr -> NExpr -> NExpr-mkBinop op e1 e2 = Fix (NBinary op e1 e2)---- | Various nix binary operators-($==), ($!=), ($<), ($<=), ($>), ($>=), ($&&), ($||), ($->),- ($//), ($+), ($-), ($*), ($/), ($++)- :: NExpr -> NExpr -> NExpr-e1 $== e2 = mkBinop NEq e1 e2-e1 $!= e2 = mkBinop NNEq e1 e2-e1 $< e2 = mkBinop NLt e1 e2-e1 $<= e2 = mkBinop NLte e1 e2-e1 $> e2 = mkBinop NGt e1 e2-e1 $>= e2 = mkBinop NGte e1 e2-e1 $&& e2 = mkBinop NAnd e1 e2-e1 $|| e2 = mkBinop NOr e1 e2-e1 $-> e2 = mkBinop NImpl e1 e2-e1 $// e2 = mkBinop NUpdate e1 e2-e1 $+ e2 = mkBinop NPlus e1 e2-e1 $- e2 = mkBinop NMinus e1 e2-e1 $* e2 = mkBinop NMult e1 e2-e1 $/ e2 = mkBinop NDiv e1 e2-e1 $++ e2 = mkBinop NConcat e1 e2---- | Function application expression.-(@@) :: NExpr -> NExpr -> NExpr-(@@) = mkApp-infixl 1 @@---- | Lambda shorthand.-(==>) :: Params NExpr -> NExpr -> NExpr-(==>) = mkFunction--infixr 1 ==>
@@ -1,272 +0,0 @@-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE DeriveTraversable #-}-{-# LANGUAGE DeriveFoldable #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveFunctor #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE TemplateHaskell #-}--- | The nix expression type and supporting types.-module Nix.Expr.Types where--import Control.Monad hiding (forM_, mapM, sequence)-import Data.Data-import Data.Eq.Deriving-import Data.Fix-import Data.Foldable-import Data.Functor.Classes (Eq1(..), Eq2(..), Show1(..), showsUnaryWith, liftShowsPrec2)-import Data.Map (Map, toList)-import Data.Text (Text, pack)-import Data.Traversable-import GHC.Exts-import GHC.Generics-import Nix.Atoms-import Prelude hiding (readFile, concat, concatMap, elem, mapM,- sequence, minimum, foldr)-import Text.Show.Deriving---- | The main nix expression type. This is polymorphic so that it can be made--- a functor, which allows us to traverse expressions and map functions over--- them. The actual 'NExpr' type is a fixed point of this functor, defined--- below.-data NExprF r- = NConstant !NAtom- -- ^ Constants: ints, bools, URIs, and null.- | NStr !(NString r)- -- ^ A string, with interpolated expressions.- | NSym !Text- -- ^ A variable. For example, in the expression @f a@, @f@ is represented- -- as @NSym "f"@ and @a@ as @NSym "a"@.- | NList ![r]- -- ^ A list literal.- | NSet ![Binding r]- -- ^ An attribute set literal, not recursive.- | NRecSet ![Binding r]- -- ^ An attribute set literal, recursive.- | NLiteralPath !FilePath- -- ^ A path expression, which is evaluated to a store path. The path here- -- can be relative, in which case it's evaluated relative to the file in- -- which it appears.- | NEnvPath !FilePath- -- ^ A path which refers to something in the Nix search path (the NIX_PATH- -- environment variable. For example, @<nixpkgs/pkgs>@.- | NUnary !NUnaryOp !r- -- ^ Application of a unary operator to an expression.- | NBinary !NBinaryOp !r !r- -- ^ Application of a binary operator to two expressions.- | NSelect !r !(NAttrPath r) !(Maybe r)- -- ^ Dot-reference into an attribute set, optionally providing an- -- alternative if the key doesn't exist.- | NHasAttr !r !(NAttrPath r)- -- ^ Ask if a set contains a given attribute path.- | NAbs !(Params r) !r- -- ^ A function literal (lambda abstraction).- | NApp !r !r- -- ^ Apply a function to an argument.- | NLet ![Binding r] !r- -- ^ Evaluate the second argument after introducing the bindings.- | NIf !r !r !r- -- ^ If-then-else statement.- | NWith !r !r- -- ^ Evaluate an attribute set, bring its bindings into scope, and- -- evaluate the second argument.- | NAssert !r !r- -- ^ Assert that the first returns true before evaluating the second.- deriving (Ord, Eq, Generic, Typeable, Data, Functor, Foldable, Traversable, Show)---- | We make an `IsString` for expressions, where the string is interpreted--- as an identifier. This is the most common use-case...-instance IsString NExpr where- fromString = Fix . NSym . fromString----- | The monomorphic expression type is a fixed point of the polymorphic one.-type NExpr = Fix NExprF---- | A single line of the bindings section of a let expression or of a set.-data Binding r- = NamedVar !(NAttrPath r) !r- -- ^ An explicit naming, such as @x = y@ or @x.y = z@.- | Inherit !(Maybe r) ![NKeyName r]- -- ^ Using a name already in scope, such as @inherit x;@ which is shorthand- -- for @x = x;@ or @inherit (x) y;@ which means @y = x.y;@.- deriving (Typeable, Data, Ord, Eq, Functor, Foldable, Traversable, Show)---- | @Params@ represents all the ways the formal parameters to a--- function can be represented.-data Params r- = Param !Text- -- ^ For functions with a single named argument, such as @x: x + 1@.- | ParamSet !(ParamSet r) !(Maybe Text)- -- ^ Explicit parameters (argument must be a set). Might specify a name- -- to bind to the set in the function body.- deriving (Ord, Eq, Generic, Typeable, Data, Functor, Show,- Foldable, Traversable)--instance IsString (Params r) where- fromString = Param . fromString---- | An explicit parameter set; provides a shorthand for unpacking arguments.-data ParamSet r- = FixedParamSet !(Map Text (Maybe r))- -- ^ A fixed set, where no arguments beyond what is specified in the map- -- may be given. The map might contain defaults for arguments not passed.- | VariadicParamSet !(Map Text (Maybe r))- -- ^ Same as the 'FixedParamSet', but extra arguments are allowed.- deriving (Ord, Eq, Generic, Typeable, Data, Functor, Show,- Foldable, Traversable)--instance Eq1 ParamSet where- liftEq eq (FixedParamSet a) (FixedParamSet b) =- liftEq (liftEq (liftEq eq)) (Data.Map.toList a) (Data.Map.toList b)- liftEq eq (VariadicParamSet a) (VariadicParamSet b) =- liftEq (liftEq (liftEq eq)) (Data.Map.toList a) (Data.Map.toList b)- liftEq _ _ _ = False---- It's not possible to derive this automatically as there is no Show1 instance--- for Map. We define one locally here.-instance Show1 ParamSet where- liftShowsPrec sp sl p =- let liftShowsPrecMap :: (Int -> a -> ShowS)- -> ([a] -> ShowS)- -> Int- -> Map Text a- -> ShowS- liftShowsPrecMap spMap slMap pMap m =- showsUnaryWith (liftShowsPrec (liftShowsPrec spMap slMap)- (liftShowList spMap slMap))- "fromList" pMap (Data.Map.toList m)- showNamedMap s =- showsUnaryWith (liftShowsPrecMap (liftShowsPrec sp sl)- (liftShowList sp sl))- s p- in \case- FixedParamSet m -> showNamedMap "FixedParamSet" m- VariadicParamSet m -> showNamedMap "VariadicParamSet" m---- | 'Antiquoted' represents an expression that is either--- antiquoted (surrounded by ${...}) or plain (not antiquoted).-data Antiquoted v r = Plain !v | Antiquoted !r- deriving (Ord, Eq, Generic, Typeable, Data, Functor, Foldable, Traversable, Show)---- | An 'NString' is a list of things that are either a plain string--- or an antiquoted expression. After the antiquotes have been evaluated,--- the final string is constructed by concating all the parts.-data NString r- = DoubleQuoted ![Antiquoted Text r]- -- ^ Strings wrapped with double-quotes (") are not allowed to contain- -- literal newline characters.- | Indented ![Antiquoted Text r]- -- ^ Strings wrapped with two single quotes ('') can contain newlines,- -- and their indentation will be stripped.- deriving (Eq, Ord, Generic, Typeable, Data, Functor, Foldable, Traversable, Show)---- | For the the 'IsString' instance, we use a plain doublequoted string.-instance IsString (NString r) where- fromString "" = DoubleQuoted []- fromString string = DoubleQuoted [Plain $ pack string]---- | A 'KeyName' is something that can appear at the right side of an--- equals sign. For example, @a@ is a 'KeyName' in @{ a = 3; }@, @let a = 3;--- in ...@, @{}.a@ or @{} ? a@.------ Nix supports both static keynames (just an identifier) and dynamic--- identifiers. Dynamic identifiers can be either a string (e.g.:--- @{ "a" = 3; }@) or an antiquotation (e.g.: @let a = "example";--- in { ${a} = 3; }.example@).------ Note: There are some places where a dynamic keyname is not allowed.--- In particular, those include:------ * The RHS of a @binding@ inside @let@: @let ${"a"} = 3; in ...@--- produces a syntax error.--- * The attribute names of an 'inherit': @inherit ${"a"};@ is forbidden.------ Note: In Nix, a simple string without antiquotes such as @"foo"@ is--- allowed even if the context requires a static keyname, but the--- parser still considers it a 'DynamicKey' for simplicity.-data NKeyName r- = DynamicKey !(Antiquoted (NString r) r)- | StaticKey !Text- deriving (Eq, Ord, Generic, Typeable, Data, Show)---- | Most key names are just static text, so this instance is convenient.-instance IsString (NKeyName r) where- fromString = StaticKey . fromString--instance Eq1 NKeyName where- liftEq eq (DynamicKey a) (DynamicKey b) = liftEq2 (liftEq eq) eq a b- liftEq _ (StaticKey a) (StaticKey b) = a == b- liftEq _ _ _ = False---- Deriving this instance automatically is not possible because @r@--- occurs not only as last argument in @Antiquoted (NString r) r@-instance Show1 NKeyName where- liftShowsPrec sp sl p = \case- DynamicKey a -> showsUnaryWith (liftShowsPrec2 (liftShowsPrec sp sl) (liftShowList sp sl) sp sl) "DynamicKey" p a- StaticKey t -> showsUnaryWith showsPrec "StaticKey" p t---- Deriving this instance automatically is not possible because @r@--- occurs not only as last argument in @Antiquoted (NString r) r@-instance Functor NKeyName where- fmap = fmapDefault---- Deriving this instance automatically is not possible because @r@--- occurs not only as last argument in @Antiquoted (NString r) r@-instance Foldable NKeyName where- foldMap = foldMapDefault---- Deriving this instance automatically is not possible because @r@--- occurs not only as last argument in @Antiquoted (NString r) r@-instance Traversable NKeyName where- traverse f = \case- DynamicKey (Plain str) -> DynamicKey . Plain <$> traverse f str- DynamicKey (Antiquoted e) -> DynamicKey . Antiquoted <$> f e- StaticKey key -> pure (StaticKey key)---- | A selector (for example in a @let@ or an attribute set) is made up--- of strung-together key names.-type NAttrPath r = [NKeyName r]---- | There are two unary operations: logical not and integer negation.-data NUnaryOp = NNeg | NNot- deriving (Eq, Ord, Generic, Typeable, Data, Show)---- | Binary operators expressible in the nix language.-data NBinaryOp- = NEq -- ^ Equality (==)- | NNEq -- ^ Inequality (!=)- | NLt -- ^ Less than (<)- | NLte -- ^ Less than or equal (<=)- | NGt -- ^ Greater than (>)- | NGte -- ^ Greater than or equal (>=)- | NAnd -- ^ Logical and (&&)- | NOr -- ^ Logical or (||)- | NImpl -- ^ Logical implication (->)- | NUpdate -- ^ Joining two attribut sets (//)- | NPlus -- ^ Addition (+)- | NMinus -- ^ Subtraction (-)- | NMult -- ^ Multiplication (*)- | NDiv -- ^ Division (/)- | NConcat -- ^ List concatenation (++)- deriving (Eq, Ord, Generic, Typeable, Data, Show)---- | Get the name out of the parameter (there might be none).-paramName :: Params r -> Maybe Text-paramName (Param n) = Just n-paramName (ParamSet _ n) = n--$(deriveEq1 ''NExprF)-$(deriveEq1 ''NString)-$(deriveEq1 ''Binding)-$(deriveEq1 ''Params)-$(deriveEq1 ''Antiquoted)-$(deriveEq2 ''Antiquoted)--$(deriveShow1 ''NExprF)-$(deriveShow1 ''NString)-$(deriveShow1 ''Params)-$(deriveShow1 ''Binding)-$(deriveShow1 ''Antiquoted)-$(deriveShow2 ''Antiquoted)
@@ -1,90 +0,0 @@-{-# LANGUAGE DeriveDataTypeable #-}-{-# LANGUAGE DeriveFunctor #-}-{-# LANGUAGE DeriveFoldable #-}-{-# LANGUAGE DeriveTraversable #-}-{-# LANGUAGE PatternSynonyms #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE TemplateHaskell #-}---- | The source location annotated nix expression type and supporting types.----module Nix.Expr.Types.Annotated- ( module Nix.Expr.Types.Annotated- , Delta(..)- )where--import Control.Monad hiding (forM_, mapM, sequence)-import Data.Data-import Data.Fix-import Data.Function (on)-import Data.Functor.Compose-import Data.Semigroup-import GHC.Generics-import Nix.Expr.Types-import Nix.Parser.Library (Delta(..))-import Prelude hiding (concat, concatMap, elem, foldr,- mapM, minimum, readFile, sequence)-import Text.Show.Deriving---- | A location in a source file-data SrcSpan = SrcSpan{ spanBegin :: Delta- , spanEnd :: Delta- }- deriving (Ord, Eq, Generic, Typeable, Data, Show)---- | A type constructor applied to a type along with an annotation------ Intended to be used with 'Fix':--- @type MyType = Fix (Compose (Ann Annotation) F)@-data Ann ann a = Ann{ annotation :: ann- , annotated :: a- }- deriving (Ord, Eq, Data, Generic, Typeable, Functor, Foldable, Traversable, Read, Show)--$(deriveShow1 ''Ann)--instance Semigroup SrcSpan where- s1 <> s2 = SrcSpan ((min `on` spanBegin) s1 s2)- ((max `on` spanEnd) s1 s2)--type AnnF ann f = Compose (Ann ann) f--annToAnnF :: Ann ann (f (Fix (AnnF ann f))) -> Fix (AnnF ann f)-annToAnnF (Ann ann a) = AnnE ann a--type NExprLocF = AnnF SrcSpan NExprF---- | A nix expression with source location at each subexpression.-type NExprLoc = Fix NExprLocF--pattern AnnE ann a = Fix (Compose (Ann ann a))--stripAnnotation :: Functor f => Fix (AnnF ann f) -> Fix f-stripAnnotation = ana (annotated . getCompose . unFix)--nApp :: NExprLoc -> NExprLoc -> NExprLoc-nApp e1@(AnnE s1 _) e2@(AnnE s2 _) = AnnE (s1 <> s2) (NApp e1 e2)--nUnary :: Ann SrcSpan NUnaryOp -> NExprLoc -> NExprLoc-nUnary (Ann s1 u) e1@(AnnE s2 _) = AnnE (s1 <> s2) (NUnary u e1)--nBinary :: Ann SrcSpan NBinaryOp -> NExprLoc -> NExprLoc -> NExprLoc-nBinary (Ann s1 b) e1@(AnnE s2 _) e2@(AnnE s3 _) =- AnnE (s1 <> s2 <> s3) (NBinary b e1 e2)--nSelectLoc :: NExprLoc -> Ann SrcSpan (NAttrPath NExprLoc) -> Maybe NExprLoc -> NExprLoc-nSelectLoc e1@(AnnE s1 _) (Ann s2 ats) d = case d of- Nothing -> AnnE (s1 <> s2) (NSelect e1 ats Nothing)- Just (e2@(AnnE s3 _)) -> AnnE (s1 <> s2 <> s3) (NSelect e1 ats (Just e2))--nHasAttr :: NExprLoc -> Ann SrcSpan (NAttrPath NExprLoc) -> NExprLoc-nHasAttr e1@(AnnE s1 _) (Ann s2 ats) = AnnE (s1 <> s2) (NHasAttr e1 ats)--nAbs :: Ann SrcSpan (Params NExprLoc) -> NExprLoc -> NExprLoc-nAbs (Ann s1 ps) e1@(AnnE s2 _) = AnnE (s1 <> s2) (NAbs ps e1)--nStr :: Ann SrcSpan (NString NExprLoc) -> NExprLoc-nStr (Ann s1 s) = AnnE s1 (NStr s)
@@ -1,293 +0,0 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE OverloadedStrings #-}--module Nix.Parser (- parseNixFile,- parseNixFileLoc,- parseNixString,- parseNixStringLoc,- parseNixText,- parseNixTextLoc,- Result(..)- ) where--import Control.Applicative-import Control.Monad-import Control.Monad.IO.Class-import Data.Foldable hiding (concat)-import qualified Data.Map as Map-import Data.Text hiding (head, map, foldl1', foldl', concat)-import Nix.Parser.Library-import Nix.Parser.Operators-import Nix.Expr-import Nix.StringOperations-import Prelude hiding (elem)------------------------------------------------------------------------------------annotateLocation :: Parser a -> Parser (Ann SrcSpan a)-annotateLocation p = do- begin <- position- res <- p- end <- position- let span = SrcSpan begin end- pure $ Ann span res--annotateLocation1 :: Parser (NExprF NExprLoc) -> Parser NExprLoc-annotateLocation1 = fmap annToAnnF . annotateLocation------------------------------------------------------------------------------------nixExpr :: Parser NExpr-nixExpr = stripAnnotation <$> nixExprLoc---- | The lexer for this parser is defined in 'Nix.Parser.Library'.-nixExprLoc :: Parser NExprLoc-nixExprLoc = whiteSpace *> (nixToplevelForm <|> foldl' makeParser nixTerm nixOperators)- where- makeParser :: Parser NExprLoc -> Either NSpecialOp NOperatorDef -> Parser NExprLoc- makeParser term (Left NSelectOp) = nixSelect term- makeParser term (Left NAppOp) = chainl1 term $ pure $ \a b -> (nApp a b)- makeParser term (Left NHasAttrOp) = nixHasAttr term- makeParser term (Right (NUnaryDef name op))- = build <$> many (annotateLocation (void $ symbol name)) <*> term- where build :: [Ann SrcSpan ()] -> NExprLoc -> NExprLoc- build = flip $ foldl' (\t' (Ann s ()) -> nUnary (Ann s op) t')- makeParser term (Right (NBinaryDef assoc ops)) = case assoc of- NAssocLeft -> chainl1 term op- NAssocRight -> chainr1 term op- NAssocNone -> term <**> (flip <$> op <*> term <|> pure id)- where op :: Parser (NExprLoc -> NExprLoc -> NExprLoc)- op = choice . map (\(n,o) -> (\(Ann a ()) -> nBinary (Ann a o)) <$> annotateLocation (reservedOp n)) $ ops--antiStart :: Parser String-antiStart = try (string "${") <?> show ("${" :: String)--nixAntiquoted :: Parser a -> Parser (Antiquoted a NExprLoc)-nixAntiquoted p = Antiquoted <$> (antiStart *> nixExprLoc <* symbolic '}') <|> Plain <$> p--selDot :: Parser ()-selDot = try (char '.' *> notFollowedBy (("path" :: String) <$ nixPath)) *> whiteSpace- <?> "."--nixSelector :: Parser (Ann SrcSpan (NAttrPath NExprLoc))-nixSelector = annotateLocation $ keyName `sepBy1` selDot--nixSelect :: Parser NExprLoc -> Parser NExprLoc-nixSelect term = build- <$> term- <*> optional ((,) <$> (selDot *> nixSelector) <*> optional (reserved "or" *> nixExprLoc))- where- build :: NExprLoc -> Maybe (Ann SrcSpan (NAttrPath NExprLoc), Maybe NExprLoc) -> NExprLoc- build t Nothing = t- build t (Just (s,o)) = nSelectLoc t s o--nixHasAttr :: Parser NExprLoc -> Parser NExprLoc-nixHasAttr term = build <$> term <*> optional (reservedOp "?" *> nixSelector) where- build :: NExprLoc -> Maybe (Ann SrcSpan (NAttrPath NExprLoc)) -> NExprLoc- build t Nothing = t- build t (Just s) = nHasAttr t s---- | A self-contained unit.-nixTerm :: Parser NExprLoc-nixTerm = nixSelect $ choice- [ nixInt, nixBool, nixNull, nixParens, nixList, nixPath, nixSPath, nixUri- , nixStringExpr, nixSet, nixSym ]--nixToplevelForm :: Parser NExprLoc-nixToplevelForm = choice [nixLambda, nixLet, nixIf, nixAssert, nixWith]--nixSym :: Parser NExprLoc-nixSym = annotateLocation1 $ mkSymF <$> identifier--nixInt :: Parser NExprLoc-nixInt = annotateLocation1 $ mkIntF <$> token decimal <?> "integer"--nixBool :: Parser NExprLoc-nixBool = annotateLocation1 $ try (true <|> false) <?> "bool" where- true = mkBoolF True <$ reserved "true"- false = mkBoolF False <$ reserved "false"--nixNull :: Parser NExprLoc-nixNull = annotateLocation1 $ mkNullF <$ try (reserved "null") <?> "null"--nixParens :: Parser NExprLoc-nixParens = parens nixExprLoc <?> "parens"--nixList :: Parser NExprLoc-nixList = annotateLocation1 $ brackets (NList <$> many nixTerm) <?> "list"--pathChars :: String-pathChars = ['A'..'Z'] ++ ['a'..'z'] ++ "._-+" ++ ['0'..'9']--slash :: Parser Char-slash = try (char '/' <* notFollowedBy (char '/')) <?> "slash"---- | A path surrounded by angle brackets, indicating that it should be--- looked up in the NIX_PATH environment variable at evaluation.-nixSPath :: Parser NExprLoc-nixSPath = annotateLocation1 $ mkPathF True <$> try (char '<' *> some (oneOf pathChars <|> slash) <* symbolic '>')- <?> "spath"--nixPath :: Parser NExprLoc-nixPath = annotateLocation1 $ token $ fmap (mkPathF False) $ ((++)- <$> (try ((++) <$> many (oneOf pathChars) <*> fmap (:[]) slash) <?> "path")- <*> fmap concat- ( some (some (oneOf pathChars)- <|> liftA2 (:) slash (some (oneOf pathChars)))- )- )- <?> "path"--nixLet :: Parser NExprLoc-nixLet = annotateLocation1 $ NLet- <$> (reserved "let" *> nixBinders)- <*> (whiteSpace *> reserved "in" *> nixExprLoc)- <?> "let"--nixIf :: Parser NExprLoc-nixIf = annotateLocation1 $ NIf- <$> (reserved "if" *> nixExprLoc)- <*> (whiteSpace *> reserved "then" *> nixExprLoc)- <*> (whiteSpace *> reserved "else" *> nixExprLoc)- <?> "if"--nixAssert :: Parser NExprLoc-nixAssert = annotateLocation1 $ NAssert- <$> (reserved "assert" *> nixExprLoc)- <*> (semi *> nixExprLoc)--nixWith :: Parser NExprLoc-nixWith = annotateLocation1 $ NWith- <$> (reserved "with" *> nixExprLoc)- <*> (semi *> nixExprLoc)--nixLambda :: Parser NExprLoc-nixLambda = (nAbs <$> annotateLocation (try argExpr <?> "lambda arguments") <*> nixExprLoc) <?> "lambda"--nixStringExpr :: Parser NExprLoc-nixStringExpr = nStr <$> annotateLocation nixString--uriAfterColonC :: Parser Char-uriAfterColonC = alphaNum <|> oneOf "%/?:@&=+$,-_.!~*'"--nixUri :: Parser NExprLoc-nixUri = annotateLocation1 $ token $ fmap (mkUriF . pack) $ (++)- <$> try ((++) <$> (scheme <* char ':') <*> fmap (\x -> [':',x]) uriAfterColonC)- <*> many uriAfterColonC- where- scheme = (:) <$> letter <*> many (alphaNum <|> oneOf "+-.")--nixString :: Parser (NString NExprLoc)-nixString = doubleQuoted <|> indented <?> "string"- where- doubleQuoted :: Parser (NString NExprLoc)- doubleQuoted = DoubleQuoted . removePlainEmpty . mergePlain- <$> (doubleQ *> many (stringChar doubleQ (void $ char '\\') doubleEscape)- <* token doubleQ)- <?> "double quoted string"-- doubleQ = void $ char '"'- doubleEscape = Plain . singleton <$> (char '\\' *> escapeCode)-- indented :: Parser (NString NExprLoc)- indented = stripIndent- <$> (indentedQ *> many (stringChar indentedQ indentedQ indentedEscape)- <* token indentedQ)- <?> "indented string"-- indentedQ = void $ try (string "''") <?> "\"''\""- indentedEscape = fmap Plain- $ try (indentedQ *> char '\\') *> fmap singleton escapeCode- <|> try (indentedQ *> ("''" <$ char '\'' <|> "$" <$ char '$'))-- stringChar end escStart esc- = esc- <|> Antiquoted <$> (antiStart *> nixExprLoc <* char '}') -- don't skip trailing space- <|> Plain . singleton <$> char '$'- <|> Plain . pack <$> some plainChar- where plainChar = notFollowedBy (end <|> void (char '$') <|> escStart) *> anyChar-- escapeCode = choice [ c <$ char e | (c,e) <- escapeCodes ] <|> anyChar---- | Gets all of the arguments for a function.-argExpr :: Parser (Params NExprLoc)-argExpr = choice [atLeft, onlyname, atRight] <* symbolic ':' where- -- An argument not in curly braces. There's some potential ambiguity- -- in the case of, for example `x:y`. Is it a lambda function `x: y`, or- -- a URI `x:y`? Nix syntax says it's the latter. So we need to fail if- -- there's a valid URI parse here.- onlyname = choice [nixUri >> unexpected "valid uri",- Param <$> identifier]-- -- Parameters named by an identifier on the left (`args @ {x, y}`)- atLeft = try $ do- name <- identifier <* symbolic '@'- (constructor, params) <- params- return $ ParamSet (constructor params) (Just name)-- -- Parameters named by an identifier on the right, or none (`{x, y} @ args`)- atRight = do- (constructor, params) <- params- name <- optional $ symbolic '@' *> identifier- return $ ParamSet (constructor params) name-- -- Return the parameters set.- params = do- (args, dotdots) <- braces getParams- let constructor = if dotdots then VariadicParamSet else FixedParamSet- return (constructor, Map.fromList args)-- -- Collects the parameters within curly braces. Returns the parameters and- -- a boolean indicating if the parameters are variadic.- getParams :: Parser ([(Text, Maybe NExprLoc)], Bool)- getParams = go [] where- -- Attempt to parse `...`. If this succeeds, stop and return True.- -- Otherwise, attempt to parse an argument, optionally with a- -- default. If this fails, then return what has been accumulated- -- so far.- go acc = (token (string "...") >> return (acc, True)) <|> getMore acc- getMore acc =- -- Could be nothing, in which just return what we have so far.- option (acc, False) $ do- -- Get an argument name and an optional default.- pair <- liftA2 (,) identifier (optional $ symbolic '?' *> nixExprLoc)- -- Either return this, or attempt to get a comma and restart.- option (acc ++ [pair], False) $ symbolic ',' >> go (acc ++ [pair])--nixBinders :: Parser [Binding NExprLoc]-nixBinders = (inherit <|> namedVar) `endBy` symbolic ';' where- inherit = Inherit <$> (reserved "inherit" *> optional scope)- <*> many keyName- <?> "inherited binding"- namedVar = NamedVar <$> (annotated <$> nixSelector) <*> (symbolic '=' *> nixExprLoc)- <?> "variable binding"- scope = parens nixExprLoc <?> "inherit scope"--keyName :: Parser (NKeyName NExprLoc)-keyName = dynamicKey <|> staticKey where- staticKey = StaticKey <$> identifier- dynamicKey = DynamicKey <$> nixAntiquoted nixString--nixSet :: Parser NExprLoc-nixSet = annotateLocation1 $ (isRec <*> braces nixBinders) <?> "set" where- isRec = (try (reserved "rec" *> pure NRecSet) <?> "recursive set")- <|> pure NSet--parseNixFile :: MonadIO m => FilePath -> m (Result NExpr)-parseNixFile = parseFromFileEx $ nixExpr <* eof--parseNixFileLoc :: MonadIO m => FilePath -> m (Result NExprLoc)-parseNixFileLoc = parseFromFileEx $ nixExprLoc <* eof--parseNixString :: String -> Result NExpr-parseNixString = parseFromString $ nixExpr <* eof--parseNixStringLoc :: String -> Result NExprLoc-parseNixStringLoc = parseFromString $ nixExprLoc <* eof--parseNixText :: Text -> Result NExpr-parseNixText = parseNixString . unpack--parseNixTextLoc :: Text -> Result NExprLoc-parseNixTextLoc = parseNixStringLoc . unpack
@@ -1,138 +0,0 @@-{-# LANGUAGE CPP #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE OverloadedStrings #-}-module Nix.Parser.Library- ( module Nix.Parser.Library- , module X- , Trifecta.Delta(..)- ) where--import Prelude-import Control.Applicative-import Control.Monad-import Control.Monad.IO.Class-import Data.Text hiding (map)-import Text.Parser.Expression as X-import Text.Parser.LookAhead as X-import Text.Parser.Token as X-import Text.Parser.Char as X hiding (text)-import Text.Parser.Combinators as X-import Text.PrettyPrint.ANSI.Leijen as X (Doc, text)-import Text.Parser.Token.Highlight-import Text.Parser.Token.Style--import qualified Data.HashSet as HashSet--#if USE_PARSEC-import qualified Text.Parsec as Parsec-import qualified Text.Parsec.Text as Parsec-import qualified Data.Text.IO as T-#else-import qualified Text.Trifecta as Trifecta-import qualified Text.Trifecta.Delta as Trifecta--import Text.Trifecta as X (Result(..))-#endif--newtype NixParser p a = NixParser { runNixParser :: p a }- deriving (Functor, Applicative, Alternative, Monad, MonadPlus, Parsing, CharParsing, LookAheadParsing, Trifecta.DeltaParsing)--instance TokenParsing p => TokenParsing (NixParser p) where- someSpace = NixParser $ buildSomeSpaceParser someSpace commentStyle- nesting = NixParser . nesting . runNixParser- highlight h = NixParser . highlight h . runNixParser- semi = token $ char ';' <?> ";"- token p = p <* whiteSpace--commentStyle :: CommentStyle-commentStyle = CommentStyle- { _commentStart = "/*"- , _commentEnd = "*/"- , _commentLine = "#"- , _commentNesting = True- }--identStyle :: CharParsing m => IdentifierStyle m-identStyle = IdentifierStyle- { _styleName = "identifier"- , _styleStart = identStart- , _styleLetter = identLetter- , _styleReserved = reservedNames- , _styleHighlight = Identifier- , _styleReservedHighlight = ReservedIdentifier- }--identifier :: (TokenParsing m, Monad m) => m Text-identifier = ident identStyle <?> "identifier"--reserved :: (TokenParsing m, Monad m) => String -> m ()-reserved = reserve identStyle--reservedOp :: TokenParsing m => String -> m ()-reservedOp o = token $ try $ () <$- highlight ReservedOperator (string o) <* (notFollowedBy opLetter <?> "end of " ++ o)--opStart :: CharParsing m => m Char-opStart = oneOf ".+-*/=<>&|!?"--opLetter :: CharParsing m => m Char-opLetter = oneOf ">-+/&|="--identStart :: CharParsing m => m Char-identStart = letter <|> char '_'--identLetter :: CharParsing m => m Char-identLetter = alphaNum <|> oneOf "_'-"--reservedNames :: HashSet.HashSet String-reservedNames = HashSet.fromList- [ "let", "in"- , "if", "then", "else"- , "assert"- , "with"- , "rec"- , "inherit"- , "or"- ]--stopWords :: (TokenParsing m, Monad m) => m ()-stopWords = () <$- (whiteSpace *> (reserved "in" <|> reserved "then" <|> reserved "else"))--someTill :: Alternative f => f a -> f end -> f [a]-someTill p end = go- where- go = (:) <$> p <*> scan- scan = (end *> pure []) <|> go-----------------------------------------------------------------------------------parseFromFileEx :: MonadIO m => Parser a -> FilePath -> m (Result a)-parseFromString :: Parser a -> String -> Result a-position :: Parser Trifecta.Delta--#if USE_PARSEC-data Result a = Success a- | Failure Doc- deriving Show--type Parser = NixParser Parsec.Parser--parseFromFileEx p path =- (either (Failure . text . show) Success . Parsec.parse (runNixParser p) path)- `liftM` liftIO (T.readFile path)--parseFromString p = either (Failure . text . show) Success . Parsec.parse (runNixParser p) "<string>" . pack--position = error "position not implemented for Parsec parser"--#else--type Parser = NixParser Trifecta.Parser--parseFromFileEx p = Trifecta.parseFromFileEx (runNixParser p)--parseFromString p = Trifecta.parseString (runNixParser p) (Trifecta.Directed "<string>" 0 0 0 0)--position = Trifecta.position--#endif
@@ -1,81 +0,0 @@-module Nix.Parser.Operators where--import Data.Data (Data(..))-import Data.Foldable (concat)-import qualified Data.Map as Map-import Data.Maybe (catMaybes)-import Data.Typeable (Typeable)-import GHC.Exts-import GHC.Generics-import Nix.Expr-import Prelude hiding (readFile, concat, concatMap, elem, mapM,- sequence, minimum, foldr)--data NSpecialOp = NHasAttrOp | NSelectOp | NAppOp- deriving (Eq, Ord, Generic, Typeable, Data, Show)--data NAssoc = NAssocNone | NAssocLeft | NAssocRight- deriving (Eq, Ord, Generic, Typeable, Data, Show)--data NOperatorDef- = NUnaryDef String NUnaryOp- | NBinaryDef NAssoc [(String, NBinaryOp)]- deriving (Eq, Ord, Generic, Typeable, Data, Show)--nixOperators :: [Either NSpecialOp NOperatorDef]-nixOperators =- [ Left NSelectOp- , Left NAppOp- , Right $ NUnaryDef "-" NNeg- , Left NHasAttrOp- ] ++ map Right- [ NBinaryDef NAssocRight [("++", NConcat)]- , NBinaryDef NAssocLeft [("*", NMult), ("/", NDiv)]- , NBinaryDef NAssocLeft [("+", NPlus), ("-", NMinus)]- , NUnaryDef "!" NNot- , NBinaryDef NAssocRight [("//", NUpdate)]- , NBinaryDef NAssocLeft [("<", NLt), (">", NGt), ("<=", NLte), (">=", NGte)]- , NBinaryDef NAssocNone [("==", NEq), ("!=", NNEq)]- , NBinaryDef NAssocLeft [("&&", NAnd)]- , NBinaryDef NAssocLeft [("||", NOr)]- , NBinaryDef NAssocNone [("->", NImpl)]- ]--data OperatorInfo = OperatorInfo- { precedence :: Int- , associativity :: NAssoc- , operatorName :: String- } deriving (Eq, Ord, Generic, Typeable, Data, Show)--getUnaryOperator :: NUnaryOp -> OperatorInfo-getUnaryOperator = (m Map.!) where- m = Map.fromList . concat . zipWith buildEntry [1..] . reverse $- nixOperators- buildEntry i = \case- Right (NUnaryDef name op) -> [(op, OperatorInfo i NAssocNone name)]- _ -> []--getBinaryOperator :: NBinaryOp -> OperatorInfo-getBinaryOperator = (m Map.!) where- m = Map.fromList . concat . zipWith buildEntry [1..] . reverse $- nixOperators- buildEntry i = \case- Right (NBinaryDef assoc ops) -> do- [(op, OperatorInfo i assoc name) | (name,op) <- ops]- _ -> []--getSpecialOperatorPrec :: NSpecialOp -> Int-getSpecialOperatorPrec = (m Map.!) where- m = Map.fromList . catMaybes . zipWith buildEntry [1..] . reverse $- nixOperators- buildEntry _ (Right _) = Nothing- buildEntry i (Left op) = Just (op, i)--selectOp :: OperatorInfo-selectOp = OperatorInfo (getSpecialOperatorPrec NSelectOp) NAssocLeft "."--hasAttrOp :: OperatorInfo-hasAttrOp = OperatorInfo (getSpecialOperatorPrec NHasAttrOp) NAssocLeft "?"--appOp :: OperatorInfo-appOp = OperatorInfo (getSpecialOperatorPrec NAppOp) NAssocLeft " "
@@ -1,177 +0,0 @@-{-# LANGUAGE OverloadedStrings #-}-module Nix.Pretty where--import Prelude hiding ((<$>))-import Data.Fix-import Data.Map (toList)-import Data.Maybe (isJust)-import Data.Text (Text, pack, unpack, replace, strip)-import Data.List (isPrefixOf)-import Nix.Atoms-import Nix.Expr-import Nix.Parser.Library (reservedNames)-import Nix.Parser.Operators-import Nix.StringOperations-import Text.PrettyPrint.ANSI.Leijen--import qualified Data.Text as Text-import qualified Data.HashSet as HashSet---- | This type represents a pretty printed nix expression--- together with some information about the expression.-data NixDoc = NixDoc- { -- | The rendered expression, without any parentheses.- withoutParens :: Doc-- -- | The root operator is the operator at the root of- -- the expression tree. For example, in '(a * b) + c', '+' would be the root- -- operator. It is needed to determine if we need to wrap the expression in- -- parentheses.- , rootOp :: OperatorInfo- }---- | A simple expression is never wrapped in parentheses. The expression--- behaves as if its root operator had a precedence higher than all--- other operators (including function application).-simpleExpr :: Doc -> NixDoc-simpleExpr = flip NixDoc $ OperatorInfo maxBound NAssocNone "simple expr"---- | An expression that behaves as if its root operator--- had a precedence lower than all other operators.--- That ensures that the expression is wrapped in parantheses in--- almost always, but it's still rendered without parentheses--- in cases where parentheses are never required (such as in the LHS--- of a binding).-leastPrecedence :: Doc -> NixDoc-leastPrecedence = flip NixDoc $ OperatorInfo minBound NAssocNone "least precedence"--appOpNonAssoc :: OperatorInfo-appOpNonAssoc = appOp { associativity = NAssocNone }--wrapParens :: OperatorInfo -> NixDoc -> Doc-wrapParens op sub- | precedence (rootOp sub) > precedence op = withoutParens sub- | precedence (rootOp sub) == precedence op- && associativity (rootOp sub) == associativity op- && associativity op /= NAssocNone = withoutParens sub- | otherwise = parens $ withoutParens sub--prettyString :: NString NixDoc -> Doc-prettyString (DoubleQuoted parts) = dquotes . hcat . map prettyPart $ parts- where prettyPart (Plain t) = text . concatMap escape . unpack $ t- prettyPart (Antiquoted r) = text "$" <> braces (withoutParens r)- escape '"' = "\\\""- escape x = maybe [x] (('\\':) . (:[])) $ toEscapeCode x-prettyString (Indented parts)- = group $ nest 2 (squote <> squote <$$> content) <$$> squote <> squote- where- content = vsep . map prettyLine . stripLastIfEmpty . splitLines $ parts- stripLastIfEmpty = reverse . f . reverse where- f ([Plain t] : xs) | Text.null (strip t) = xs- f xs = xs- prettyLine = hcat . map prettyPart- prettyPart (Plain t) = text . unpack . replace "${" "''${" . replace "''" "'''" $ t- prettyPart (Antiquoted r) = text "$" <> braces (withoutParens r)--prettyParams :: Params NixDoc -> Doc-prettyParams (Param n) = text $ unpack n-prettyParams (ParamSet s mname) = prettyParamSet s <> case mname of- Nothing -> empty- Just name -> text "@" <> text (unpack name)--prettyParamSet :: ParamSet NixDoc -> Doc-prettyParamSet params = lbrace <+> middle <+> rbrace- where- prettyArgs = case params of- FixedParamSet args -> map prettySetArg (toList args)-- VariadicParamSet args -> map prettySetArg (toList args) ++ [text "..."]- middle = hcat $ punctuate (comma <> space) prettyArgs- prettySetArg (n, maybeDef) = case maybeDef of- Nothing -> text (unpack n)- Just v -> text (unpack n) <+> text "?" <+> withoutParens v--prettyBind :: Binding NixDoc -> Doc-prettyBind (NamedVar n v) = prettySelector n <+> equals <+> withoutParens v <> semi-prettyBind (Inherit s ns)- = text "inherit" <+> scope <> fillSep (map prettyKeyName ns) <> semi- where scope = maybe empty ((<> space) . parens . withoutParens) s--prettyKeyName :: NKeyName NixDoc -> Doc-prettyKeyName (StaticKey key)- | HashSet.member (unpack key) reservedNames = dquotes $ text $ unpack key-prettyKeyName (StaticKey key) = text . unpack $ key-prettyKeyName (DynamicKey key) = runAntiquoted prettyString withoutParens key--prettySelector :: NAttrPath NixDoc -> Doc-prettySelector = hcat . punctuate dot . map prettyKeyName---- | Translate an atom into its nix representation.-atomText :: NAtom -> Text-atomText (NInt i) = pack (show i)-atomText (NBool b) = if b then "true" else "false"-atomText NNull = "null"-atomText (NUri uri) = uri--prettyAtom :: NAtom -> NixDoc-prettyAtom atom = simpleExpr $ text $ unpack $ atomText atom--prettyNix :: NExpr -> Doc-prettyNix = withoutParens . cata phi where- phi :: NExprF NixDoc -> NixDoc- phi (NConstant atom) = prettyAtom atom- phi (NStr str) = simpleExpr $ prettyString str- phi (NList []) = simpleExpr $ lbracket <> rbracket- phi (NList xs) = simpleExpr $ group $- nest 2 (vsep $ lbracket : map (wrapParens appOpNonAssoc) xs) <$> rbracket- phi (NSet []) = simpleExpr $ lbrace <> rbrace- phi (NSet xs) = simpleExpr $ group $- nest 2 (vsep $ lbrace : map prettyBind xs) <$> rbrace- phi (NRecSet []) = simpleExpr $ recPrefix <> lbrace <> rbrace- phi (NRecSet xs) = simpleExpr $ group $- nest 2 (vsep $ recPrefix <> lbrace : map prettyBind xs) <$> rbrace- phi (NAbs args body) = leastPrecedence $- (prettyParams args <> colon) </> (nest 2 $ withoutParens body)- phi (NBinary op r1 r2) = flip NixDoc opInfo $ hsep- [ wrapParens (f NAssocLeft) r1- , text $ operatorName opInfo- , wrapParens (f NAssocRight) r2- ]- where- opInfo = getBinaryOperator op- f x- | associativity opInfo /= x = opInfo { associativity = NAssocNone }- | otherwise = opInfo- phi (NUnary op r1) =- NixDoc (text (operatorName opInfo) <> wrapParens opInfo r1) opInfo- where opInfo = getUnaryOperator op- phi (NSelect r attr o) = (if isJust o then leastPrecedence else flip NixDoc selectOp) $- wrapParens selectOp r <> dot <> prettySelector attr <> ordoc- where ordoc = maybe empty (((space <> text "or") <+>) . withoutParens) o- phi (NHasAttr r attr)- = NixDoc (wrapParens hasAttrOp r <+> text "?" <+> prettySelector attr) hasAttrOp- phi (NApp fun arg)- = NixDoc (wrapParens appOp fun <+> wrapParens appOpNonAssoc arg) appOp- phi (NEnvPath p) = simpleExpr $ text ("<" ++ p ++ ">")- phi (NLiteralPath p) = simpleExpr $ text $ case p of- "./" -> "./."- "../" -> "../."- ".." -> "../."- txt | "/" `isPrefixOf` txt -> txt- | "./" `isPrefixOf` txt -> txt- | "../" `isPrefixOf` txt -> txt- | otherwise -> "./" ++ txt- phi (NSym name) = simpleExpr $ text (unpack name)- phi (NLet binds body) = leastPrecedence $ group $ nest 2 $- vsep (text "let" : map prettyBind binds) <$> text "in" <+> withoutParens body- phi (NIf cond trueBody falseBody) = leastPrecedence $- group $ nest 2 $ (text "if" <+> withoutParens cond) <$>- ( align (text "then" <+> withoutParens trueBody)- <$> align (text "else" <+> withoutParens falseBody)- )- phi (NWith scope body) = leastPrecedence $- text "with" <+> withoutParens scope <> semi <+> withoutParens body- phi (NAssert cond body) = leastPrecedence $- text "assert" <+> withoutParens cond <> semi <+> withoutParens body-- recPrefix = text "rec" <> space
@@ -1,87 +0,0 @@--- | Functions for manipulating nix strings.-module Nix.StringOperations where--import Nix.Expr-import Data.List (intercalate)-import Data.Monoid ((<>))-import Data.Text (Text)-import qualified Data.Text as T-import Prelude hiding (elem)-import Data.Tuple (swap)----- | Merge adjacent 'Plain' values with 'mappend'.-mergePlain :: Monoid v => [Antiquoted v r] -> [Antiquoted v r]-mergePlain [] = []-mergePlain (Plain a: Plain b: xs) = mergePlain (Plain (a <> b) : xs)-mergePlain (x:xs) = x : mergePlain xs---- | Remove 'Plain' values equal to 'mempty', as they don't have any--- informational content.-removePlainEmpty :: (Eq v, Monoid v) => [Antiquoted v r] -> [Antiquoted v r]-removePlainEmpty = filter f where- f (Plain x) = x /= mempty- f _ = True---- | Equivalent to case splitting on 'Antiquoted' strings.-runAntiquoted :: (v -> a) -> (r -> a) -> Antiquoted v r -> a-runAntiquoted f _ (Plain v) = f v-runAntiquoted _ f (Antiquoted r) = f r---- | Split a stream representing a string with antiquotes on line breaks.-splitLines :: [Antiquoted Text r] -> [[Antiquoted Text r]]-splitLines = uncurry (flip (:)) . go where- go (Plain t : xs) = (Plain l :) <$> foldr f (go xs) ls where- (l : ls) = T.split (=='\n') t- f prefix (finished, current) = ((Plain prefix : current) : finished, [])- go (Antiquoted a : xs) = (Antiquoted a :) <$> go xs- go [] = ([],[])---- | Join a stream of strings containing antiquotes again. This is the inverse--- of 'splitLines'.-unsplitLines :: [[Antiquoted Text r]] -> [Antiquoted Text r]-unsplitLines = intercalate [Plain "\n"]---- | Form an indented string by stripping spaces equal to the minimal indent.-stripIndent :: [Antiquoted Text r] -> NString r-stripIndent [] = Indented []-stripIndent xs =- Indented . removePlainEmpty . mergePlain . unsplitLines $ ls'- where- ls = stripEmptyOpening $ splitLines xs- ls' = map (dropSpaces minIndent) ls-- minIndent = case stripEmptyLines ls of- [] -> 0- nonEmptyLs -> minimum $ map (countSpaces . mergePlain) nonEmptyLs-- stripEmptyLines = filter $ \case- [Plain t] -> not $ T.null $ T.strip t- _ -> True-- stripEmptyOpening ([Plain t]:ts) | T.null (T.strip t) = ts- stripEmptyOpening ts = ts-- countSpaces (Antiquoted _:_) = 0- countSpaces (Plain t : _) = T.length . T.takeWhile (== ' ') $ t- countSpaces [] = 0-- dropSpaces 0 x = x- dropSpaces n (Plain t : cs) = Plain (T.drop n t) : cs- dropSpaces _ _ = error "stripIndent: impossible"--escapeCodes :: [(Char, Char)]-escapeCodes =- [ ('\n', 'n' )- , ('\r', 'r' )- , ('\t', 't' )- , ('\\', '\\')- , ('$' , '$' )- , ('"', '"')- ]--fromEscapeCode :: Char -> Maybe Char-fromEscapeCode = (`lookup` map swap escapeCodes)--toEscapeCode :: Char -> Maybe Char-toEscapeCode = (`lookup` escapeCodes)
@@ -0,0 +1,94 @@+# hnix++[](https://travis-ci.org/haskell-nix/hnix)+[](https://gitter.im/haskell-nix/Lobby)++Haskell parser, evaluator and type checker for the Nix language.++## Prerequisites++Nix is installed and in your `$PATH`. This is so that `nix-store` can be used+for interacting with store paths, until `hnix-store` is ready.++## Getting Started++```bash+$ git clone --recursive https://github.com/haskell-nix/hnix.git+...+$ cd hnix+$ nix-shell+$ cabal configure --enable-tests+$ cabal build+$ cabal test+# To run all of the tests, which takes up to a minute:+$ LANGUAGE_TESTS=yes NIXPKGS_TESTS=yes cabal test+$ ./dist/build/hnix/hnix --help+```++## Building a Docker container++If you don't have Nix installed, or you'd just like to play around with `hnix`+completely separately from your main system, you can build a Docker container:++```bash+$ docker build -t hnix .+$ docker run hnix hnix --eval --expr '1 + 2'++# In order to refer to files under the current directory:+$ docker run -v $PWD/:/tmp/build run hnix hnix default.nix+```++## Building with full debug info++To build `hnix` for debugging, and with full tracing output and stack traces,+use:++```+$ nix-shell --arg doProfiling true+$ cabal configure --enable-tests --enable-profiling --flags=tracing+$ cabal build+$ ./dist/build/hnix/hnix -v5 --trace <args> +RTS -xc+```++Note that this will run quite slowly, but will give the most information as to+what might potentially be going wrong during parsing or evaluation.++## Building with benchmarks enabled++To build `hnix` with benchmarks enabled:++```+$ nix-shell --arg doBenchmarks true+$ cabal configure --enable-tests --enable-benchmarks+$ cabal build+$ cabal bench+```++## Building with profiling enabled++To build `hnix` with profiling enabled:++```+$ nix-shell --arg doProfiling true+$ cabal configure --enable-tests --enable-profiling+$ cabal build+$ ./dist/build/hnix/hnix <args> +RTS -p+```++## How you can help++If you're looking for a way to help out, try taking a look+[here](https://github.com/haskell-nix/hnix/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22+no%3Aassignee).+When you find an issue that looks interesting to you, comment on the ticket to+let others know you're working on it; look for others who might have done the+same. You can talk with everyone live on+[Gitter](https://gitter.im/haskell-nix/Lobby).++When you're ready to submit a pull request, test it with:+```+git submodule update --init --recursive+nix-shell --run "LANGUAGE_TESTS=yes cabal test"+```++Make sure that all the tests that were passing prior to your PR are still+passing afterwards; it's OK if no new tests are passing.
@@ -1,13 +0,0 @@-let- b.a = 3; /*- this is a multiline comment- /* we can also nest these comments- */ /*- */- */- b.c = { e = {}; };- /* just some more comments- */- b.c.e.f = 4;-/* this file is documented really well */-in b /* todo */
@@ -1,13 +0,0 @@-let- b.a = 3;- # this is a oneline comment- # we can also nest these comments- # #- #- #- b.c = { e = {}; };- # just some more comments- #- b.c.e.f = 4;-# this file is documented really well-in b # todo
@@ -1,5 +0,0 @@-let- b.a = 3;- b.c = { e = {}; };- b.c.e.f = 4;-in b
@@ -1,10835 +0,0 @@-{ bootStdenv ? null, config ? null, crossSystem ? null, gccWithCC ? true, gccWithProfiling ? true, noSysDirs ? system != "x86_64-darwin" && system != "x86_64-freebsd" && system != "i686-freebsd" && system != "x86_64-kfreebsd-gnu", platform ? null, system ? builtins.currentSystem }:-let- config_ = config;- platform_ = platform;- in let- lib = import ../../lib;- config = let- toPath = builtins.toPath;- getEnv = x: if builtins ? getEnv- then builtins.getEnv x- else "";- pathExists = name:- builtins ? pathExists && builtins.pathExists (toPath name);- configFile = getEnv "NIXPKGS_CONFIG";- homeDir = getEnv "HOME";- configFile2 = homeDir + "/.nixpkgs/config.nix";- configExpr = if config_ != null- then config_- else if configFile != "" && pathExists configFile- then import (toPath configFile)- else if homeDir != "" && pathExists configFile2- then import (toPath configFile2)- else { };- in if builtins.isFunction configExpr- then configExpr {- inherit pkgs;- }- else configExpr;- platformAuto = let- platforms = import ./platforms.nix;- in if system == "armv6l-linux"- then platforms.raspberrypi- else if system == "armv5tel-linux"- then platforms.sheevaplug- else if system == "mips64el-linux"- then platforms.fuloong2f_n32- else if system == "x86_64-linux"- then platforms.pc64- else if system == "i686-linux"- then platforms.pc32- else platforms.pcBase;- platform = if platform_ != null- then platform_- else config.platform or platformAuto;- helperFunctions = stdenvAdapters // import ../build-support/trivial-builders.nix {- inherit (pkgs) stdenv;- inherit (pkgs.xorg) lndir;- };- stdenvAdapters = import ../stdenv/adapters.nix pkgs;- pkgs = applyGlobalOverrides (config.packageOverrides or pkgs:- { });- applyGlobalOverrides = overrider:- let- overrides = overrider pkgsOrig // lib.optionalAttrs (pkgsOrig.stdenv ? overrides && crossSystem == null) (pkgsOrig.stdenv.overrides pkgsOrig);- pkgsOrig = pkgsFun pkgs { };- pkgs = pkgsFun pkgs overrides;- in pkgs;- pkgsFun = pkgs: overrides:- with helperFunctions; let- defaultScope = pkgs // pkgs.xorg;- self = self_ // overrides;- self_ = with self; helperFunctions // {- inherit system platform;- inherit pkgs;- callPackage = newScope { };- newScope = extra:- lib.callPackageWith (defaultScope // extra);- forceSystem = system: kernel:- import ./all-packages.nix {- inherit system;- platform = platform // {- kernelArch = kernel;- };- inherit bootStdenv noSysDirs- gccWithCC gccWithProfiling- config crossSystem;- };- pkgsi686Linux = forceSystem "i686-linux" "i386";- callPackage_i686 = lib.callPackageWith (pkgsi686Linux // pkgsi686Linux.xorg);- path = ../..;- x11 = xlibsWrapper;- xlibs = xorg // {- xlibs = xlibsWrapper;- };- inherit lib config- stdenvAdapters;- inherit (lib) lowPrio hiPrio- appendToName makeOverridable;- inherit (misc) versionedDerivation;- recurseIntoAttrs = attrs:- attrs // {- recurseForDerivations = true;- };- builderDefs = lib.composedArgsAndFun (import ../build-support/builder-defs/builder-defs.nix) {- inherit stringsWithDeps lib- stdenv writeScript fetchurl- fetchmtn fetchgit;- };- builderDefsPackage = builderDefs.builderDefsPackage builderDefs;- stringsWithDeps = lib.stringsWithDeps;- nix-generate-from-cpan = callPackage ../../maintainers/scripts/nix-generate-from-cpan.nix {- };- nixpkgs-lint = callPackage ../../maintainers/scripts/nixpkgs-lint.nix {- };- allStdenvs = import ../stdenv {- inherit system platform config;- allPackages = args:- import ./all-packages.nix ({- inherit config system;- } // args);- };- defaultStdenv = allStdenvs.stdenv // {- inherit platform;- };- stdenvCross = lowPrio (makeStdenvCross defaultStdenv crossSystem binutilsCross gccCrossStageFinal);- stdenv = if bootStdenv != null- then bootStdenv // {- inherit platform;- }- else if crossSystem != null- then stdenvCross- else let- changer = config.replaceStdenv or null;- in if changer != null- then changer {- pkgs = import ./all-packages.nix {- config = removeAttrs config [- "replaceStdenv"- ];- };- }- else defaultStdenv;- stdenvApple = stdenvAdapters.overrideGCC allStdenvs.stdenvNative gccApple;- forceNativeDrv = drv:- if crossSystem == null- then drv- else drv // {- crossDrv = drv.nativeDrv;- };- stdenv_32bit = lowPrio (if system == "x86_64-linux"- then overrideGCC stdenv gcc48_multi- else stdenv);- attrSetToDir = arg:- import ../build-support/upstream-updater/attrset-to-dir.nix {- inherit writeTextFile stdenv- lib;- theAttrSet = arg;- };- autoreconfHook = makeSetupHook {- substitutions = {- inherit autoconf automake- libtool;- };- } ../build-support/setup-hooks/autoreconf.sh;- buildEnv = import ../build-support/buildenv {- inherit (pkgs) runCommand perl;- };- buildFHSChrootEnv = import ../build-support/build-fhs-chrootenv {- inherit stdenv glibc- glibcLocales gcc coreutils- diffutils findutils;- inherit gnused gnugrep gnutar- gzip bzip2 bashInteractive xz- shadow gawk;- inherit less buildEnv;- };- dotnetenv = import ../build-support/dotnetenv {- inherit stdenv;- dotnetfx = dotnetfx40;- };- scatterOutputHook = makeSetupHook {- } ../build-support/setup-hooks/scatter_output.sh;- vsenv = callPackage ../build-support/vsenv {- vs = vs90wrapper;- };- fetchbower = import ../build-support/fetchbower {- inherit stdenv git;- inherit (nodePackages) fetch-bower;- };- fetchbzr = import ../build-support/fetchbzr {- inherit stdenv bazaar;- };- fetchcvs = import ../build-support/fetchcvs {- inherit stdenv cvs;- };- fetchdarcs = import ../build-support/fetchdarcs {- inherit stdenv darcs nix;- };- fetchgit = import ../build-support/fetchgit {- inherit stdenv git cacert;- };- fetchgitPrivate = import ../build-support/fetchgit/private.nix {- inherit fetchgit writeScript- openssh stdenv;- };- fetchgitrevision = import ../build-support/fetchgitrevision runCommand git;- fetchmtn = callPackage ../build-support/fetchmtn (config.fetchmtn or {- });- packer = callPackage ../development/tools/packer {- };- fetchpatch = callPackage ../build-support/fetchpatch {- };- fetchsvn = import ../build-support/fetchsvn {- inherit stdenv subversion- openssh;- sshSupport = true;- };- fetchsvnrevision = import ../build-support/fetchsvnrevision runCommand subversion;- fetchsvnssh = import ../build-support/fetchsvnssh {- inherit stdenv subversion- openssh expect;- sshSupport = true;- };- fetchhg = import ../build-support/fetchhg {- inherit stdenv mercurial nix;- };- fetchurl = import ../build-support/fetchurl {- inherit curl stdenv;- };- fetchurlGnome = callPackage ../build-support/fetchurl/gnome.nix {- };- fetchurlBoot = stdenv.fetchurlBoot;- fetchzip = import ../build-support/fetchzip {- inherit lib fetchurl unzip;- };- fetchFromGitHub = { owner, repo, rev, sha256 }:- fetchzip {- name = "${repo}-${rev}-src";- url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz";- inherit sha256;- };- resolveMirrorURLs = { url }:- fetchurl {- showURLs = true;- inherit url;- };- libredirect = callPackage ../build-support/libredirect {- };- makeDesktopItem = import ../build-support/make-desktopitem {- inherit stdenv;- };- makeAutostartItem = import ../build-support/make-startupitem {- inherit stdenv;- inherit lib;- };- makeInitrd = { compressor ? "gzip -9", contents }:- import ../build-support/kernel/make-initrd.nix {- inherit stdenv perl- perlArchiveCpio cpio contents- ubootChooser compressor;- };- makeWrapper = makeSetupHook {- } ../build-support/setup-hooks/make-wrapper.sh;- makeModulesClosure = { allowMissing ? false, kernel, rootModules }:- import ../build-support/kernel/modules-closure.nix {- inherit stdenv kmod kernel- nukeReferences rootModules- allowMissing;- };- pathsFromGraph = ../build-support/kernel/paths-from-graph.pl;- srcOnly = args:- import ../build-support/src-only ({- inherit stdenv;- } // args);- substituteAll = import ../build-support/substitute/substitute-all.nix {- inherit stdenv;- };- replaceDependency = import ../build-support/replace-dependency.nix {- inherit runCommand nix lib;- };- nukeReferences = callPackage ../build-support/nuke-references/default.nix {- };- vmTools = import ../build-support/vm/default.nix {- inherit pkgs;- };- releaseTools = import ../build-support/release/default.nix {- inherit pkgs;- };- composableDerivation = import ../../lib/composable-derivation.nix {- inherit pkgs lib;- };- platforms = import ./platforms.nix;- setJavaClassPath = makeSetupHook {- } ../build-support/setup-hooks/set-java-classpath.sh;- fixDarwinDylibNames = makeSetupHook {- } ../build-support/setup-hooks/fix-darwin-dylib-names.sh;- keepBuildTree = makeSetupHook {- } ../build-support/setup-hooks/keep-build-tree.sh;- enableGCOVInstrumentation = makeSetupHook {- } ../build-support/setup-hooks/enable-coverage-instrumentation.sh;- makeGCOVReport = makeSetupHook {- deps = [- pkgs.lcov- pkgs.enableGCOVInstrumentation- ];- } ../build-support/setup-hooks/make-coverage-analysis-report.sh;- abduco = callPackage ../tools/misc/abduco {- };- acct = callPackage ../tools/system/acct {- };- acoustidFingerprinter = callPackage ../tools/audio/acoustid-fingerprinter {- ffmpeg = ffmpeg_1;- };- actdiag = pythonPackages.actdiag;- adom = callPackage ../games/adom {- };- aefs = callPackage ../tools/filesystems/aefs {- };- aegisub = callPackage ../applications/video/aegisub {- wxGTK = wxGTK30;- lua = lua5_1;- };- aespipe = callPackage ../tools/security/aespipe {- };- aescrypt = callPackage ../tools/misc/aescrypt {- };- ahcpd = callPackage ../tools/networking/ahcpd {- };- aircrackng = callPackage ../tools/networking/aircrack-ng {- };- analog = callPackage ../tools/admin/analog {- };- apktool = callPackage ../development/tools/apktool {- buildTools = androidenv.buildTools;- };- apt-offline = callPackage ../tools/misc/apt-offline {- };- archivemount = callPackage ../tools/filesystems/archivemount {- };- arandr = callPackage ../tools/X11/arandr {- };- arcanist = callPackage ../development/tools/misc/arcanist {- };- arduino_core = callPackage ../development/arduino/arduino-core {- jdk = jdk;- jre = jdk;- };- argyllcms = callPackage ../tools/graphics/argyllcms {- };- arp-scan = callPackage ../tools/misc/arp-scan {- };- ascii = callPackage ../tools/text/ascii {- };- asymptote = builderDefsPackage ../tools/graphics/asymptote {- inherit freeglut ghostscriptX- imagemagick fftw boehmgc mesa- ncurses readline gsl libsigsegv- python zlib perl texinfo xz;- texLive = texLiveAggregationFun {- paths = [- texLive- texLiveExtra- texLiveCMSuper- ];- };- };- awscli = callPackage ../tools/admin/awscli {- };- ec2_api_tools = callPackage ../tools/virtualization/ec2-api-tools {- };- ec2_ami_tools = callPackage ../tools/virtualization/ec2-ami-tools {- };- altermime = callPackage ../tools/networking/altermime {- };- amule = callPackage ../tools/networking/p2p/amule {- };- amuleDaemon = appendToName "daemon" (amule.override {- monolithic = false;- daemon = true;- });- amuleGui = appendToName "gui" (amule.override {- monolithic = false;- client = true;- });- androidenv = import ../development/mobile/androidenv {- inherit pkgs;- pkgs_i686 = pkgsi686Linux;- };- apg = callPackage ../tools/security/apg {- };- grc = callPackage ../tools/misc/grc {- };- otool = callPackage ../os-specific/darwin/otool {- };- pass = callPackage ../tools/security/pass {- gnupg = gnupg1compat;- };- setfile = callPackage ../os-specific/darwin/setfile {- };- install_name_tool = callPackage ../os-specific/darwin/install_name_tool {- };- xcodeenv = callPackage ../development/mobile/xcodeenv {- };- titaniumenv = callPackage ../development/mobile/titaniumenv {- inherit pkgs;- pkgs_i686 = pkgsi686Linux;- };- inherit (androidenv) androidsdk_4_1;- aria2 = callPackage ../tools/networking/aria2 {- };- aria = aria2;- at = callPackage ../tools/system/at {- };- atftp = callPackage ../tools/networking/atftp {- };- autogen = callPackage ../development/tools/misc/autogen {- };- autojump = callPackage ../tools/misc/autojump {- };- autorandr = callPackage ../tools/misc/autorandr {- inherit (xorg) xrandr xdpyinfo;- };- avahi = callPackage ../development/libraries/avahi {- qt4Support = config.avahi.qt4Support or false;- };- aws = callPackage ../tools/virtualization/aws {- };- aws_mturk_clt = callPackage ../tools/misc/aws-mturk-clt {- };- axel = callPackage ../tools/networking/axel {- };- azureus = callPackage ../tools/networking/p2p/azureus {- };- basex = callPackage ../tools/text/xml/basex {- };- babeld = callPackage ../tools/networking/babeld {- };- badvpn = callPackage ../tools/networking/badvpn {- };- banner = callPackage ../games/banner {- };- barcode = callPackage ../tools/graphics/barcode {- };- bc = callPackage ../tools/misc/bc {- };- bcache-tools = callPackage ../tools/filesystems/bcache-tools {- };- bchunk = callPackage ../tools/cd-dvd/bchunk {- };- bfr = callPackage ../tools/misc/bfr {- };- bindfs = callPackage ../tools/filesystems/bindfs {- };- bitbucket-cli = pythonPackages.bitbucket-cli;- blockdiag = pythonPackages.blockdiag;- bmon = callPackage ../tools/misc/bmon {- };- bochs = callPackage ../applications/virtualization/bochs {- wxSupport = false;- };- boomerang = callPackage ../development/tools/boomerang {- };- bootchart = callPackage ../tools/system/bootchart {- };- bro = callPackage ../applications/networking/ids/bro {- };- bsod = callPackage ../misc/emulators/bsod {- };- btrfsProgs = callPackage ../tools/filesystems/btrfsprogs {- };- bwm_ng = callPackage ../tools/networking/bwm-ng {- };- byobu = callPackage ../tools/misc/byobu {- };- capstone = callPackage ../development/libraries/capstone {- };- catdoc = callPackage ../tools/text/catdoc {- };- ccnet = callPackage ../tools/networking/ccnet {- };- consul = callPackage ../servers/consul {- };- consul_ui = callPackage ../servers/consul/ui.nix {- };- chntpw = callPackage ../tools/security/chntpw {- };- coprthr = callPackage ../development/libraries/coprthr {- flex = flex_2_5_35;- };- crawl = callPackage ../games/crawl {- lua = lua5;- };- cv = callPackage ../tools/misc/cv {- };- direnv = callPackage ../tools/misc/direnv {- };- ditaa = callPackage ../tools/graphics/ditaa {- };- dlx = callPackage ../misc/emulators/dlx {- };- eggdrop = callPackage ../tools/networking/eggdrop {- };- enca = callPackage ../tools/text/enca {- };- fasd = callPackage ../tools/misc/fasd {- inherit (haskellPackages) pandoc;- };- fop = callPackage ../tools/typesetting/fop {- };- mcrl = callPackage ../tools/misc/mcrl {- };- mcrl2 = callPackage ../tools/misc/mcrl2 {- };- mpdcron = callPackage ../tools/audio/mpdcron {- };- syslogng = callPackage ../tools/system/syslog-ng {- };- syslogng_incubator = callPackage ../tools/system/syslog-ng-incubator {- };- rsyslog = callPackage ../tools/system/rsyslog {- };- mcrypt = callPackage ../tools/misc/mcrypt {- };- mcelog = callPackage ../os-specific/linux/mcelog {- };- apparix = callPackage ../tools/misc/apparix {- };- appdata-tools = callPackage ../tools/misc/appdata-tools {- };- asciidoc = callPackage ../tools/typesetting/asciidoc {- inherit (pythonPackages) matplotlib- numpy aafigure- recursivePthLoader;- enableStandardFeatures = false;- };- asciidoc-full = appendToName "full" (asciidoc.override {- inherit (pythonPackages) pygments;- enableStandardFeatures = true;- });- autossh = callPackage ../tools/networking/autossh {- };- bacula = callPackage ../tools/backup/bacula {- };- beanstalkd = callPackage ../servers/beanstalkd {- };- bgs = callPackage ../tools/X11/bgs {- };- biber = callPackage ../tools/typesetting/biber {- inherit (perlPackages) autovivification- BusinessISBN BusinessISMN- BusinessISSN ConfigAutoConf- DataCompare DataDump DateSimple- EncodeEUCJPASCII EncodeHanExtra- EncodeJIS2K ExtUtilsLibBuilder- FileSlurp IPCRun3 Log4Perl- LWPProtocolHttps ListAllUtils- ListMoreUtils ModuleBuild- MozillaCA ReadonlyXS- RegexpCommon TextBibTeX- UnicodeCollate UnicodeLineBreak- URI XMLLibXMLSimple XMLLibXSLT- XMLWriter;- };- bibtextools = callPackage ../tools/typesetting/bibtex-tools {- inherit (strategoPackages016) strategoxt- sdf;- };- bittorrent = callPackage ../tools/networking/p2p/bittorrent {- gui = true;- };- bittornado = callPackage ../tools/networking/p2p/bit-tornado {- };- blueman = callPackage ../tools/bluetooth/blueman {- inherit (pythonPackages) notify;- };- bmrsa = builderDefsPackage (import ../tools/security/bmrsa/11.nix) {- inherit unzip;- };- bogofilter = callPackage ../tools/misc/bogofilter {- };- bsdiff = callPackage ../tools/compression/bsdiff {- };- btar = callPackage ../tools/backup/btar {- };- bud = callPackage ../tools/networking/bud {- inherit (pythonPackages) gyp;- };- bup = callPackage ../tools/backup/bup {- inherit (pythonPackages) pyxattr- pylibacl setuptools fuse;- inherit (haskellPackages) pandoc;- par2Support = config.bup.par2Support or false;- };- ori = callPackage ../tools/backup/ori {- };- atool = callPackage ../tools/archivers/atool {- };- bzip2 = callPackage ../tools/compression/bzip2 {- };- cabextract = callPackage ../tools/archivers/cabextract {- };- cadaver = callPackage ../tools/networking/cadaver {- };- cantata = callPackage ../applications/audio/cantata {- };- can-utils = callPackage ../os-specific/linux/can-utils {- };- ccid = callPackage ../tools/security/ccid {- };- ccrypt = callPackage ../tools/security/ccrypt {- };- cdecl = callPackage ../development/tools/cdecl {- };- cdrdao = callPackage ../tools/cd-dvd/cdrdao {- };- cdrkit = callPackage ../tools/cd-dvd/cdrkit {- };- ceph = callPackage ../tools/filesystems/ceph {- };- cfdg = builderDefsPackage ../tools/graphics/cfdg {- inherit libpng bison flex- ffmpeg;- };- checkinstall = callPackage ../tools/package-management/checkinstall {- };- cheetahTemplate = builderDefsPackage (import ../tools/text/cheetah-template/2.0.1.nix) {- inherit makeWrapper python;- };- chkrootkit = callPackage ../tools/security/chkrootkit {- };- chrony = callPackage ../tools/networking/chrony {- };- chunkfs = callPackage ../tools/filesystems/chunkfs {- };- chunksync = callPackage ../tools/backup/chunksync {- };- cjdns = callPackage ../tools/networking/cjdns {- };- cksfv = callPackage ../tools/networking/cksfv {- };- clementine = callPackage ../applications/audio/clementine {- };- ciopfs = callPackage ../tools/filesystems/ciopfs {- };- colord = callPackage ../tools/misc/colord {- };- colord-gtk = callPackage ../tools/misc/colord-gtk {- };- colordiff = callPackage ../tools/text/colordiff {- };- concurrencykit = callPackage ../development/libraries/concurrencykit {- };- connect = callPackage ../tools/networking/connect {- };- conspy = callPackage ../os-specific/linux/conspy {- };- connman = callPackage ../tools/networking/connman {- };- connmanui = callPackage ../tools/networking/connmanui {- };- convertlit = callPackage ../tools/text/convertlit {- };- collectd = callPackage ../tools/system/collectd {- };- colormake = callPackage ../development/tools/build-managers/colormake {- };- cowsay = callPackage ../tools/misc/cowsay {- };- cpuminer = callPackage ../tools/misc/cpuminer {- };- cuetools = callPackage ../tools/cd-dvd/cuetools {- };- unifdef = callPackage ../development/tools/misc/unifdef {- };- "unionfs-fuse" = callPackage ../tools/filesystems/unionfs-fuse {- };- usb_modeswitch = callPackage ../development/tools/misc/usb-modeswitch {- };- biosdevname = callPackage ../tools/networking/biosdevname {- };- clamav = callPackage ../tools/security/clamav {- };- cloc = callPackage ../tools/misc/cloc {- inherit (perlPackages) perl- AlgorithmDiff RegexpCommon;- };- cloog = callPackage ../development/libraries/cloog {- };- cloogppl = callPackage ../development/libraries/cloog-ppl {- };- convmv = callPackage ../tools/misc/convmv {- };- cool-old-term = callPackage ../applications/misc/cool-old-term {- };- coreutils = callPackage ../tools/misc/coreutils {- aclSupport = crossSystem == null && stdenv.isLinux;- };- cpio = callPackage ../tools/archivers/cpio {- };- cromfs = callPackage ../tools/archivers/cromfs {- };- cron = callPackage ../tools/system/cron {- };- cudatoolkit5 = callPackage ../development/compilers/cudatoolkit/5.5.nix {- python = python26;- };- cudatoolkit6 = callPackage ../development/compilers/cudatoolkit/6.0.nix {- python = python26;- };- cudatoolkit = cudatoolkit5;- curl = callPackage ../tools/networking/curl rec {- fetchurl = fetchurlBoot;- zlibSupport = true;- sslSupport = zlibSupport;- scpSupport = zlibSupport && !stdenv.isSunOS && !stdenv.isCygwin;- };- curl3 = callPackage ../tools/networking/curl/7.15.nix rec {- zlibSupport = true;- sslSupport = zlibSupport;- };- cunit = callPackage ../tools/misc/cunit {- };- curlftpfs = callPackage ../tools/filesystems/curlftpfs {- };- cutter = callPackage ../tools/networking/cutter {- };- dadadodo = builderDefsPackage (import ../tools/text/dadadodo) {- };- daq = callPackage ../applications/networking/ids/daq {- };- dar = callPackage ../tools/archivers/dar {- };- davfs2 = callPackage ../tools/filesystems/davfs2 {- };- dbench = callPackage ../development/tools/misc/dbench {- };- dcraw = callPackage ../tools/graphics/dcraw {- };- debian_devscripts = callPackage ../tools/misc/debian-devscripts {- inherit (perlPackages) CryptSSLeay- LWP TimeDate DBFile- FileDesktopEntry;- };- debootstrap = callPackage ../tools/misc/debootstrap {- };- detox = callPackage ../tools/misc/detox {- };- ddclient = callPackage ../tools/networking/ddclient {- };- dd_rescue = callPackage ../tools/system/dd_rescue {- };- ddrescue = callPackage ../tools/system/ddrescue {- };- deluge = pythonPackages.deluge;- desktop_file_utils = callPackage ../tools/misc/desktop-file-utils {- };- despotify = callPackage ../development/libraries/despotify {- };- dev86 = callPackage ../development/compilers/dev86 {- };- dnsmasq = callPackage ../tools/networking/dnsmasq {- };- dnstop = callPackage ../tools/networking/dnstop {- };- dhcp = callPackage ../tools/networking/dhcp {- };- dhcpcd = callPackage ../tools/networking/dhcpcd {- };- diffstat = callPackage ../tools/text/diffstat {- };- diffutils = callPackage ../tools/text/diffutils {- };- wgetpaste = callPackage ../tools/text/wgetpaste {- };- dirmngr = callPackage ../tools/security/dirmngr {- };- disper = callPackage ../tools/misc/disper {- };- dmd = callPackage ../development/compilers/dmd {- };- dmg2img = callPackage ../tools/misc/dmg2img {- };- docbook2odf = callPackage ../tools/typesetting/docbook2odf {- inherit (perlPackages) PerlMagick;- };- docbook2x = callPackage ../tools/typesetting/docbook2x {- inherit (perlPackages) XMLSAX- XMLParser XMLNamespaceSupport;- };- dosfstools = callPackage ../tools/filesystems/dosfstools {- };- dotnetfx35 = callPackage ../development/libraries/dotnetfx35 {- };- dotnetfx40 = callPackage ../development/libraries/dotnetfx40 {- };- dropbear = callPackage ../tools/networking/dropbear {- };- dtach = callPackage ../tools/misc/dtach {- };- duo-unix = callPackage ../tools/security/duo-unix {- };- duplicity = callPackage ../tools/backup/duplicity {- inherit (pythonPackages) boto- lockfile;- gnupg = gnupg1;- };- duply = callPackage ../tools/backup/duply {- };- dvdplusrwtools = callPackage ../tools/cd-dvd/dvd+rw-tools {- };- dvgrab = callPackage ../tools/video/dvgrab {- };- dvtm = callPackage ../tools/misc/dvtm {- };- e2fsprogs = callPackage ../tools/filesystems/e2fsprogs {- };- easyrsa = callPackage ../tools/networking/easyrsa {- };- ebook_tools = callPackage ../tools/text/ebook-tools {- };- ecryptfs = callPackage ../tools/security/ecryptfs {- };- editres = callPackage ../tools/graphics/editres {- inherit (xlibs) libXt libXaw;- inherit (xorg) utilmacros;- };- edk2 = callPackage ../development/compilers/edk2 {- };- efibootmgr = callPackage ../tools/system/efibootmgr {- };- efivar = callPackage ../tools/system/efivar {- };- evemu = callPackage ../tools/system/evemu {- };- elasticsearch = callPackage ../servers/search/elasticsearch {- };- elasticsearchPlugins = recurseIntoAttrs (callPackage ../servers/search/elasticsearch/plugins.nix {- });- emv = callPackage ../tools/misc/emv {- };- enblendenfuse = callPackage ../tools/graphics/enblend-enfuse {- };- encfs = callPackage ../tools/filesystems/encfs {- };- enscript = callPackage ../tools/text/enscript {- };- ethtool = callPackage ../tools/misc/ethtool {- };- ettercap = callPackage ../applications/networking/sniffers/ettercap {- };- euca2ools = callPackage ../tools/virtualization/euca2ools {- pythonPackages = python26Packages;- };- evtest = callPackage ../applications/misc/evtest {- };- exempi = callPackage ../development/libraries/exempi {- };- execline = callPackage ../tools/misc/execline {- };- exercism = callPackage ../development/tools/exercism {- };- exif = callPackage ../tools/graphics/exif {- };- exiftags = callPackage ../tools/graphics/exiftags {- };- extundelete = callPackage ../tools/filesystems/extundelete {- };- expect = callPackage ../tools/misc/expect {- };- f2fs-tools = callPackage ../tools/filesystems/f2fs-tools {- };- fabric = pythonPackages.fabric;- fail2ban = callPackage ../tools/security/fail2ban {- systemd = systemd.override {- pythonSupport = true;- };- };- fakeroot = callPackage ../tools/system/fakeroot {- };- fakechroot = callPackage ../tools/system/fakechroot {- };- fcitx = callPackage ../tools/inputmethods/fcitx {- };- fcron = callPackage ../tools/system/fcron {- };- fdm = callPackage ../tools/networking/fdm {- };- figlet = callPackage ../tools/misc/figlet {- };- file = callPackage ../tools/misc/file {- };- filegive = callPackage ../tools/networking/filegive {- };- fileschanged = callPackage ../tools/misc/fileschanged {- };- findutils = callPackage ../tools/misc/findutils {- };- finger_bsd = callPackage ../tools/networking/bsd-finger {- };- fio = callPackage ../tools/system/fio {- };- flashtool = callPackage_i686 ../development/mobile/flashtool {- platformTools = androidenv.platformTools;- };- flpsed = callPackage ../applications/editors/flpsed {- };- flvstreamer = callPackage ../tools/networking/flvstreamer {- };- libbsd = callPackage ../development/libraries/libbsd {- };- lprof = callPackage ../tools/graphics/lprof {- };- fdk_aac = callPackage ../development/libraries/fdk-aac {- };- flvtool2 = callPackage ../tools/video/flvtool2 {- };- fontforge = lowPrio (callPackage ../tools/misc/fontforge {- });- fontforgeX = callPackage ../tools/misc/fontforge {- withX11 = true;- };- forktty = callPackage ../os-specific/linux/forktty {- };- fortune = callPackage ../tools/misc/fortune {- };- fox = callPackage ../development/libraries/fox/default.nix {- libpng = libpng12;- };- fox_1_6 = callPackage ../development/libraries/fox/fox-1.6.nix {- };- fping = callPackage ../tools/networking/fping {- };- fprot = callPackage ../tools/security/fprot {- };- freeipmi = callPackage ../tools/system/freeipmi {- };- freetalk = callPackage ../applications/networking/instant-messengers/freetalk {- guile = guile_1_8;- };- freetds = callPackage ../development/libraries/freetds {- };- ftgl = callPackage ../development/libraries/ftgl {- };- ftgl212 = callPackage ../development/libraries/ftgl/2.1.2.nix {- };- fuppes = callPackage ../tools/networking/fuppes {- ffmpeg = ffmpeg_0_6_90;- };- fsfs = callPackage ../tools/filesystems/fsfs {- };- fuse_zip = callPackage ../tools/filesystems/fuse-zip {- };- fuse_exfat = callPackage ../tools/filesystems/fuse-exfat {- };- dos2unix = callPackage ../tools/text/dos2unix {- };- uni2ascii = callPackage ../tools/text/uni2ascii {- };- g500-control = callPackage ../tools/misc/g500-control {- };- galculator = callPackage ../applications/misc/galculator {- gtk = gtk3;- };- gawk = callPackage ../tools/text/gawk {- };- gawkInteractive = appendToName "interactive" (gawk.override {- readlineSupport = true;- });- gbdfed = callPackage ../tools/misc/gbdfed {- gtk = gtk2;- };- gdmap = callPackage ../tools/system/gdmap {- };- genext2fs = callPackage ../tools/filesystems/genext2fs {- };- gengetopt = callPackage ../development/tools/misc/gengetopt {- };- getmail = callPackage ../tools/networking/getmail {- };- getopt = callPackage ../tools/misc/getopt {- };- gftp = callPackage ../tools/networking/gftp {- };- gifsicle = callPackage ../tools/graphics/gifsicle {- };- glusterfs = callPackage ../tools/filesystems/glusterfs {- };- glmark2 = callPackage ../tools/graphics/glmark2 {- };- glxinfo = callPackage ../tools/graphics/glxinfo {- };- gmvault = callPackage ../tools/networking/gmvault {- };- gnokii = builderDefsPackage (import ../tools/misc/gnokii) {- inherit intltool perl gettext- libusb pkgconfig bluez readline- pcsclite libical gtk glib;- inherit (xorg) libXpm;- };- gnufdisk = callPackage ../tools/system/fdisk {- guile = guile_1_8;- };- gnugrep = callPackage ../tools/text/gnugrep {- libiconv = libiconvOrNull;- };- gnulib = callPackage ../development/tools/gnulib {- };- gnupatch = callPackage ../tools/text/gnupatch {- };- gnupg1orig = callPackage ../tools/security/gnupg1 {- };- gnupg1compat = callPackage ../tools/security/gnupg1compat {- };- gnupg1 = gnupg1compat;- gnupg = callPackage ../tools/security/gnupg {- libusb = libusb1;- };- gnupg2_1 = lowPrio (callPackage ../tools/security/gnupg/git.nix {- libassuan = libassuan2_1;- });- gnuplot = callPackage ../tools/graphics/gnuplot {- };- gnuplot_qt = gnuplot.override {- withQt = true;- };- gnuplot_aquaterm = gnuplot.override {- aquaterm = true;- };- gnused = callPackage ../tools/text/gnused {- };- gnutar = callPackage ../tools/archivers/gnutar {- };- gnuvd = callPackage ../tools/misc/gnuvd {- };- goaccess = callPackage ../tools/misc/goaccess {- };- googleAuthenticator = callPackage ../os-specific/linux/google-authenticator {- };- gource = callPackage ../applications/version-management/gource {- };- gpodder = callPackage ../applications/audio/gpodder {- };- gptfdisk = callPackage ../tools/system/gptfdisk {- };- grafana = callPackage ../development/tools/misc/grafana {- };- grafx2 = callPackage ../applications/graphics/grafx2 {- };- graphviz = callPackage ../tools/graphics/graphviz {- };- graphviz_2_0 = callPackage ../tools/graphics/graphviz/2.0.nix {- };- grive = callPackage ../tools/filesystems/grive {- json_c = json-c-0-11;- };- groff = callPackage ../tools/text/groff {- ghostscript = null;- };- grub = callPackage_i686 ../tools/misc/grub {- buggyBiosCDSupport = config.grub.buggyBiosCDSupport or true;- };- grub2 = callPackage ../tools/misc/grub/2.0x.nix {- libusb = libusb1;- flex = flex_2_5_35;- };- grub2_efi = grub2.override {- EFIsupport = true;- };- gssdp = callPackage ../development/libraries/gssdp {- inherit (gnome) libsoup;- };- gt5 = callPackage ../tools/system/gt5 {- };- gtest = callPackage ../development/libraries/gtest {- };- gtkdatabox = callPackage ../development/libraries/gtkdatabox {- };- gtkgnutella = callPackage ../tools/networking/p2p/gtk-gnutella {- };- gtkvnc = callPackage ../tools/admin/gtk-vnc {- };- gtmess = callPackage ../applications/networking/instant-messengers/gtmess {- };- gummiboot = callPackage ../tools/misc/gummiboot {- };- gupnp = callPackage ../development/libraries/gupnp {- inherit (gnome) libsoup;- };- gupnp_av = callPackage ../development/libraries/gupnp-av {- };- gupnp_igd = callPackage ../development/libraries/gupnp-igd {- };- gupnptools = callPackage ../tools/networking/gupnp-tools {- };- gvpe = builderDefsPackage ../tools/networking/gvpe {- inherit openssl gmp nettools- iproute;- };- gvolicon = callPackage ../tools/audio/gvolicon {- };- gzip = callPackage ../tools/compression/gzip {- };- gzrt = callPackage ../tools/compression/gzrt {- };- partclone = callPackage ../tools/backup/partclone {- };- partimage = callPackage ../tools/backup/partimage {- };- pigz = callPackage ../tools/compression/pigz {- };- haproxy = callPackage ../tools/networking/haproxy {- };- haveged = callPackage ../tools/security/haveged {- };- hardlink = callPackage ../tools/system/hardlink {- };- hashcat = callPackage ../tools/security/hashcat {- };- halibut = callPackage ../tools/typesetting/halibut {- };- hddtemp = callPackage ../tools/misc/hddtemp {- };- hdf5 = callPackage ../tools/misc/hdf5 {- szip = null;- };- heimdall = callPackage ../tools/misc/heimdall {- };- hevea = callPackage ../tools/typesetting/hevea {- };- highlight = callPackage ../tools/text/highlight {- lua = lua5;- };- host = callPackage ../tools/networking/host {- };- hping = callPackage ../tools/networking/hping {- };- httpie = callPackage ../tools/networking/httpie {- };- httpfs2 = callPackage ../tools/filesystems/httpfs {- };- iasl = callPackage ../development/compilers/iasl {- };- icecast = callPackage ../servers/icecast {- };- icoutils = callPackage ../tools/graphics/icoutils {- };- idutils = callPackage ../tools/misc/idutils {- };- idle3tools = callPackage ../tools/system/idle3tools {- };- iftop = callPackage ../tools/networking/iftop {- };- imapproxy = callPackage ../tools/networking/imapproxy {- };- imapsync = callPackage ../tools/networking/imapsync {- inherit (perlPackages) MailIMAPClient;- };- inadyn = callPackage ../tools/networking/inadyn {- };- inetutils = callPackage ../tools/networking/inetutils {- };- ioping = callPackage ../tools/system/ioping {- };- iodine = callPackage ../tools/networking/iodine {- };- iperf = callPackage ../tools/networking/iperf {- };- ipmitool = callPackage ../tools/system/ipmitool {- static = false;- };- ipmiutil = callPackage ../tools/system/ipmiutil {- };- ised = callPackage ../tools/misc/ised {- };- isl = callPackage ../development/libraries/isl {- };- isl_0_12 = callPackage ../development/libraries/isl/0.12.2.nix {- };- isync = callPackage ../tools/networking/isync {- };- jd-gui = callPackage_i686 ../tools/security/jd-gui {- };- jdiskreport = callPackage ../tools/misc/jdiskreport {- };- jfsrec = callPackage ../tools/filesystems/jfsrec {- boost = boost144;- };- jfsutils = callPackage ../tools/filesystems/jfsutils {- };- jhead = callPackage ../tools/graphics/jhead {- };- jing = callPackage ../tools/text/xml/jing {- };- jmtpfs = callPackage ../tools/filesystems/jmtpfs {- };- jnettop = callPackage ../tools/networking/jnettop {- };- jq = callPackage ../development/tools/jq {- };- jscoverage = callPackage ../development/tools/misc/jscoverage {- };- jwhois = callPackage ../tools/networking/jwhois {- };- kazam = callPackage ../applications/video/kazam {- };- kalibrate-rtl = callPackage ../tools/misc/kalibrate-rtl {- };- kexectools = callPackage ../os-specific/linux/kexectools {- };- keychain = callPackage ../tools/misc/keychain {- };- kismet = callPackage ../applications/networking/sniffers/kismet {- };- less = callPackage ../tools/misc/less {- };- lockfileProgs = callPackage ../tools/misc/lockfile-progs {- };- logstash = callPackage ../tools/misc/logstash {- };- logstash-forwarder = callPackage ../tools/misc/logstash-forwarder {- };- kippo = callPackage ../servers/kippo {- };- klavaro = callPackage ../games/klavaro {- };- kzipmix = callPackage_i686 ../tools/compression/kzipmix {- };- minidlna = callPackage ../tools/networking/minidlna {- ffmpeg = ffmpeg_0_10;- };- mmv = callPackage ../tools/misc/mmv {- };- most = callPackage ../tools/misc/most {- };- multitail = callPackage ../tools/misc/multitail {- };- netperf = callPackage ../applications/networking/netperf {- };- ninka = callPackage ../development/tools/misc/ninka {- };- nodejs = callPackage ../development/web/nodejs {- };- nodePackages = recurseIntoAttrs (import ./node-packages.nix {- inherit pkgs stdenv nodejs- fetchurl fetchgit;- neededNatives = [- python- ] ++ lib.optional (lib.elem system lib.platforms.linux) utillinux;- self = pkgs.nodePackages;- });- ldapvi = callPackage ../tools/misc/ldapvi {- };- ldns = callPackage ../development/libraries/ldns {- };- lftp = callPackage ../tools/networking/lftp {- };- libconfig = callPackage ../development/libraries/libconfig {- };- libee = callPackage ../development/libraries/libee {- };- libestr = callPackage ../development/libraries/libestr {- };- libevdev = callPackage ../development/libraries/libevdev {- };- liboauth = callPackage ../development/libraries/liboauth {- };- libtirpc = callPackage ../development/libraries/ti-rpc {- };- libshout = callPackage ../development/libraries/libshout {- };- libqmi = callPackage ../development/libraries/libqmi {- };- libmbim = callPackage ../development/libraries/libmbim {- };- libtorrent = callPackage ../tools/networking/p2p/libtorrent {- };- logcheck = callPackage ../tools/system/logcheck {- inherit (perlPackages) mimeConstruct;- };- logrotate = callPackage ../tools/system/logrotate {- };- logstalgia = callPackage ../tools/graphics/logstalgia {- };- lout = callPackage ../tools/typesetting/lout {- };- lrzip = callPackage ../tools/compression/lrzip {- };- lsh = lowPrio (callPackage ../tools/networking/lsh {- });- lshw = callPackage ../tools/system/lshw {- };- lxc = callPackage ../os-specific/linux/lxc {- };- lzip = callPackage ../tools/compression/lzip {- };- lzma = xz;- xz = callPackage ../tools/compression/xz {- };- lzop = callPackage ../tools/compression/lzop {- };- maildrop = callPackage ../tools/networking/maildrop {- };- mailpile = callPackage ../applications/networking/mailreaders/mailpile {- };- mailutils = callPackage ../tools/networking/mailutils {- guile = guile_1_8;- };- mairix = callPackage ../tools/text/mairix {- };- makemkv = callPackage ../applications/video/makemkv {- };- man = callPackage ../tools/misc/man {- };- man_db = callPackage ../tools/misc/man-db {- };- memtest86 = callPackage ../tools/misc/memtest86 {- };- memtest86plus = callPackage ../tools/misc/memtest86+ {- };- meo = callPackage ../tools/security/meo {- };- mc = callPackage ../tools/misc/mc {- };- mcabber = callPackage ../applications/networking/instant-messengers/mcabber {- };- mcron = callPackage ../tools/system/mcron {- guile = guile_1_8;- };- mdbtools = callPackage ../tools/misc/mdbtools {- };- mdbtools_git = callPackage ../tools/misc/mdbtools/git.nix {- inherit (gnome) scrollkeeper;- };- mednafen = callPackage ../misc/emulators/mednafen {- };- mednafen-server = callPackage ../misc/emulators/mednafen/server.nix {- };- megacli = callPackage ../tools/misc/megacli {- };- megatools = callPackage ../tools/networking/megatools {- };- mfcuk = callPackage ../tools/security/mfcuk {- };- minecraft = callPackage ../games/minecraft {- };- minecraft-server = callPackage ../games/minecraft-server {- };- minetest = callPackage ../games/minetest {- libpng = libpng12;- };- miniupnpc = callPackage ../tools/networking/miniupnpc {- };- miniupnpd = callPackage ../tools/networking/miniupnpd {- };- minixml = callPackage ../development/libraries/minixml {- };- mjpegtools = callPackage ../tools/video/mjpegtools {- };- mkcue = callPackage ../tools/cd-dvd/mkcue {- };- mkpasswd = callPackage ../tools/security/mkpasswd {- };- mktemp = callPackage ../tools/security/mktemp {- };- mktorrent = callPackage ../tools/misc/mktorrent {- };- modemmanager = callPackage ../tools/networking/modemmanager {- };- monit = callPackage ../tools/system/monit {- };- mosh = callPackage ../tools/networking/mosh {- boost = boostHeaders;- inherit (perlPackages) IOTty;- };- mpage = callPackage ../tools/text/mpage {- };- mr = callPackage ../applications/version-management/mr {- };- mscgen = callPackage ../tools/graphics/mscgen {- };- msf = builderDefsPackage (import ../tools/security/metasploit/3.1.nix) {- inherit ruby makeWrapper;- };- mssys = callPackage ../tools/misc/mssys {- };- mtdutils = callPackage ../tools/filesystems/mtdutils {- };- mtools = callPackage ../tools/filesystems/mtools {- };- mtr = callPackage ../tools/networking/mtr {- };- multitran = recurseIntoAttrs (let- callPackage = newScope pkgs.multitran;- in rec {- multitrandata = callPackage ../tools/text/multitran/data {- };- libbtree = callPackage ../tools/text/multitran/libbtree {- };- libmtsupport = callPackage ../tools/text/multitran/libmtsupport {- };- libfacet = callPackage ../tools/text/multitran/libfacet {- };- libmtquery = callPackage ../tools/text/multitran/libmtquery {- };- mtutils = callPackage ../tools/text/multitran/mtutils {- };- });- munge = callPackage ../tools/security/munge {- };- muscleframework = callPackage ../tools/security/muscleframework {- };- muscletool = callPackage ../tools/security/muscletool {- };- mysql2pgsql = callPackage ../tools/misc/mysql2pgsql {- };- namazu = callPackage ../tools/text/namazu {- };- nbd = callPackage ../tools/networking/nbd {- };- ndjbdns = callPackage ../tools/networking/ndjbdns {- };- netatalk = callPackage ../tools/filesystems/netatalk {- };- netcdf = callPackage ../development/libraries/netcdf {- };- nc6 = callPackage ../tools/networking/nc6 {- };- ncat = callPackage ../tools/networking/ncat {- };- ncftp = callPackage ../tools/networking/ncftp {- };- ncompress = callPackage ../tools/compression/ncompress {- };- ndisc6 = callPackage ../tools/networking/ndisc6 {- };- netboot = callPackage ../tools/networking/netboot {- };- netcat = callPackage ../tools/networking/netcat {- };- netcat-openbsd = callPackage ../tools/networking/netcat-openbsd {- };- nethogs = callPackage ../tools/networking/nethogs {- };- netkittftp = callPackage ../tools/networking/netkit/tftp {- };- netpbm = callPackage ../tools/graphics/netpbm {- };- netrw = callPackage ../tools/networking/netrw {- };- netselect = callPackage ../tools/networking/netselect {- };- networkmanager = callPackage ../tools/networking/network-manager {- };- networkmanager_openvpn = callPackage ../tools/networking/network-manager/openvpn.nix {- };- networkmanager_pptp = callPackage ../tools/networking/network-manager/pptp.nix {- };- networkmanager_vpnc = callPackage ../tools/networking/network-manager/vpnc.nix {- };- networkmanager_openconnect = callPackage ../tools/networking/network-manager/openconnect.nix {- };- networkmanagerapplet = newScope gnome ../tools/networking/network-manager-applet {- dconf = gnome3.dconf;- };- newsbeuter = callPackage ../applications/networking/feedreaders/newsbeuter {- };- newsbeuter-dev = callPackage ../applications/networking/feedreaders/newsbeuter/dev.nix {- };- ngrep = callPackage ../tools/networking/ngrep {- };- ngrok = callPackage ../tools/misc/ngrok {- };- mpack = callPackage ../tools/networking/mpack {- };- pa_applet = callPackage ../tools/audio/pa-applet {- };- pnmixer = callPackage ../tools/audio/pnmixer {- };- nifskope = callPackage ../tools/graphics/nifskope {- };- nilfs_utils = callPackage ../tools/filesystems/nilfs-utils {- };- nitrogen = callPackage ../tools/X11/nitrogen {- };- nlopt = callPackage ../development/libraries/nlopt {- };- npapi_sdk = callPackage ../development/libraries/npapi-sdk {- };- npth = callPackage ../development/libraries/npth {- };- nmap = callPackage ../tools/security/nmap {- };- nmap_graphical = callPackage ../tools/security/nmap {- inherit (pythonPackages) pysqlite;- graphicalSupport = true;- };- notbit = callPackage ../applications/networking/notbit {- };- nox = callPackage ../tools/package-management/nox {- pythonPackages = python3Packages;- nix = nixUnstable;- };- nss_pam_ldapd = callPackage ../tools/networking/nss-pam-ldapd {- };- ntfs3g = callPackage ../tools/filesystems/ntfs-3g {- };- ntfsprogs = pkgs.ntfs3g;- ntop = callPackage ../tools/networking/ntop {- };- ntopng = callPackage ../tools/networking/ntopng {- };- ntp = callPackage ../tools/networking/ntp {- };- numdiff = callPackage ../tools/text/numdiff {- };- nssmdns = callPackage ../tools/networking/nss-mdns {- };- nwdiag = pythonPackages.nwdiag;- nylon = callPackage ../tools/networking/nylon {- };- nzbget = callPackage ../tools/networking/nzbget {- };- oathToolkit = callPackage ../tools/security/oath-toolkit {- };- obex_data_server = callPackage ../tools/bluetooth/obex-data-server {- };- obexd = callPackage ../tools/bluetooth/obexd {- };- obexfs = callPackage ../tools/bluetooth/obexfs {- };- obexftp = callPackage ../tools/bluetooth/obexftp {- };- obnam = callPackage ../tools/backup/obnam {- };- odt2txt = callPackage ../tools/text/odt2txt {- };- offlineimap = callPackage ../tools/networking/offlineimap {- inherit (pythonPackages) sqlite3;- };- opendbx = callPackage ../development/libraries/opendbx {- };- opendkim = callPackage ../development/libraries/opendkim {- };- opendylan = callPackage ../development/compilers/opendylan {- opendylan-bootstrap = opendylan_bin;- };- opendylan_bin = callPackage ../development/compilers/opendylan/bin.nix {- };- openjade = callPackage ../tools/text/sgml/openjade {- };- openobex = callPackage ../tools/bluetooth/openobex {- };- openopc = callPackage ../tools/misc/openopc {- pythonFull = python27Full.override {- extraLibs = [- python27Packages.pyro3- ];- };- };- openresolv = callPackage ../tools/networking/openresolv {- };- opensc = callPackage ../tools/security/opensc {- };- opensc_dnie_wrapper = callPackage ../tools/security/opensc-dnie-wrapper {- };- openssh = callPackage ../tools/networking/openssh {- hpnSupport = false;- withKerberos = false;- etcDir = "/etc/ssh";- pam = if stdenv.isLinux- then pam- else null;- };- openssh_hpn = pkgs.appendToName "with-hpn" (openssh.override {- hpnSupport = true;- });- openssh_with_kerberos = pkgs.appendToName "with-kerberos" (openssh.override {- withKerberos = true;- });- opensp = callPackage ../tools/text/sgml/opensp {- };- spCompat = callPackage ../tools/text/sgml/opensp/compat.nix {- };- openvpn = callPackage ../tools/networking/openvpn {- };- openvpn_learnaddress = callPackage ../tools/networking/openvpn/openvpn_learnaddress.nix {- };- optipng = callPackage ../tools/graphics/optipng {- libpng = libpng12;- };- oslrd = callPackage ../tools/networking/oslrd {- };- ossec = callPackage ../tools/security/ossec {- };- otpw = callPackage ../os-specific/linux/otpw {- };- p7zip = callPackage ../tools/archivers/p7zip {- };- pal = callPackage ../tools/misc/pal {- };- panomatic = callPackage ../tools/graphics/panomatic {- };- par2cmdline = callPackage ../tools/networking/par2cmdline {- };- parallel = callPackage ../tools/misc/parallel {- };- parcellite = callPackage ../tools/misc/parcellite {- };- patchutils = callPackage ../tools/text/patchutils {- };- parted = callPackage ../tools/misc/parted {- hurd = null;- };- pitivi = callPackage ../applications/video/pitivi {- gst = gst_all_1;- clutter-gtk = clutter_gtk;- inherit (gnome3) gnome_icon_theme- gnome_icon_theme_symbolic;- };- p0f = callPackage ../tools/security/p0f {- };- pngout = callPackage ../tools/graphics/pngout {- };- hurdPartedCross = if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then makeOverridable ({ hurd }:- (parted.override {- inherit hurd;- enableStatic = true;- gettext = null;- readline = null;- devicemapper = null;- }).crossDrv) {- hurd = gnu.hurdCrossIntermediate;- }- else null;- ipsecTools = callPackage ../os-specific/linux/ipsec-tools {- flex = flex_2_5_35;- };- patch = gnupatch;- pbzip2 = callPackage ../tools/compression/pbzip2 {- };- pciutils = callPackage ../tools/system/pciutils {- };- pcsclite = callPackage ../tools/security/pcsclite {- };- pdf2djvu = callPackage ../tools/typesetting/pdf2djvu {- };- pdfjam = callPackage ../tools/typesetting/pdfjam {- };- jbig2enc = callPackage ../tools/graphics/jbig2enc {- };- pdfread = callPackage ../tools/graphics/pdfread {- };- briss = callPackage ../tools/graphics/briss {- };- bully = callPackage ../tools/networking/bully {- };- pdnsd = callPackage ../tools/networking/pdnsd {- };- peco = callPackage ../tools/text/peco {- };- pg_top = callPackage ../tools/misc/pg_top {- };- pdsh = callPackage ../tools/networking/pdsh {- rsh = true;- ssh = openssh;- };- pfstools = callPackage ../tools/graphics/pfstools {- };- philter = callPackage ../tools/networking/philter {- };- pinentry = callPackage ../tools/security/pinentry {- };- pius = callPackage ../tools/security/pius {- };- pk2cmd = callPackage ../tools/misc/pk2cmd {- };- plantuml = callPackage ../tools/misc/plantuml {- };- plan9port = callPackage ../tools/system/plan9port {- };- ploticus = callPackage ../tools/graphics/ploticus {- libpng = libpng12;- };- plotutils = callPackage ../tools/graphics/plotutils {- };- plowshare = callPackage ../tools/misc/plowshare {- };- pngcrush = callPackage ../tools/graphics/pngcrush {- };- pngnq = callPackage ../tools/graphics/pngnq {- };- pngtoico = callPackage ../tools/graphics/pngtoico {- libpng = libpng12;- };- pngquant = callPackage ../tools/graphics/pngquant {- };- podiff = callPackage ../tools/text/podiff {- };- poedit = callPackage ../tools/text/poedit {- };- polipo = callPackage ../servers/polipo {- };- polkit_gnome = callPackage ../tools/security/polkit-gnome {- };- ponysay = callPackage ../tools/misc/ponysay {- };- povray = callPackage ../tools/graphics/povray {- };- ppl = callPackage ../development/libraries/ppl {- };- ppp = callPackage ../tools/networking/ppp {- };- pptp = callPackage ../tools/networking/pptp {- };- prey-bash-client = callPackage ../tools/security/prey {- };- projectm = callPackage ../applications/audio/projectm {- };- proxychains = callPackage ../tools/networking/proxychains {- };- proxytunnel = callPackage ../tools/misc/proxytunnel {- };- cntlm = callPackage ../tools/networking/cntlm {- };- pastebinit = callPackage ../tools/misc/pastebinit {- };- psmisc = callPackage ../os-specific/linux/psmisc {- };- pstoedit = callPackage ../tools/graphics/pstoedit {- };- pv = callPackage ../tools/misc/pv {- };- pwgen = callPackage ../tools/security/pwgen {- };- pwnat = callPackage ../tools/networking/pwnat {- };- pycangjie = callPackage ../development/python-modules/pycangjie {- };- pydb = callPackage ../development/tools/pydb {- };- pystringtemplate = callPackage ../development/python-modules/stringtemplate {- };- pythonDBus = dbus_python;- pythonIRClib = builderDefsPackage (import ../development/python-modules/irclib) {- inherit python;- };- pythonSexy = builderDefsPackage (import ../development/python-modules/libsexy) {- inherit python libsexy pkgconfig- libxml2 pygtk pango gtk glib;- };- openmpi = callPackage ../development/libraries/openmpi {- };- qhull = callPackage ../development/libraries/qhull {- };- qjoypad = callPackage ../tools/misc/qjoypad {- };- qshowdiff = callPackage ../tools/text/qshowdiff {- };- quilt = callPackage ../development/tools/quilt {- };- radvd = callPackage ../tools/networking/radvd {- };- ranger = callPackage ../applications/misc/ranger {- };- privateer = callPackage ../games/privateer {- };- rtmpdump = callPackage ../tools/video/rtmpdump {- };- reaverwps = callPackage ../tools/networking/reaver-wps {- };- recutils = callPackage ../tools/misc/recutils {- };- recoll = callPackage ../applications/search/recoll {- };- reiser4progs = callPackage ../tools/filesystems/reiser4progs {- };- reiserfsprogs = callPackage ../tools/filesystems/reiserfsprogs {- };- relfs = callPackage ../tools/filesystems/relfs {- inherit (gnome) gnome_vfs GConf;- };- remarkjs = callPackage ../development/web/remarkjs {- };- remind = callPackage ../tools/misc/remind {- };- remmina = callPackage ../applications/networking/remote/remmina {- };- renameutils = callPackage ../tools/misc/renameutils {- };- replace = callPackage ../tools/text/replace {- };- reptyr = callPackage ../os-specific/linux/reptyr {- };- rdiff_backup = callPackage ../tools/backup/rdiff-backup {- };- rdmd = callPackage ../development/compilers/rdmd {- };- rhash = callPackage ../tools/security/rhash {- };- riemann_c_client = callPackage ../tools/misc/riemann-c-client {- };- ripmime = callPackage ../tools/networking/ripmime {- };- rkflashtool = callPackage ../tools/misc/rkflashtool {- };- rmlint = callPackage ../tools/misc/rmlint {- };- rng_tools = callPackage ../tools/security/rng-tools {- };- rsnapshot = callPackage ../tools/backup/rsnapshot {- logger = inetutils;- };- rlwrap = callPackage ../tools/misc/rlwrap {- };- rockbox_utility = callPackage ../tools/misc/rockbox-utility {- };- rpPPPoE = builderDefsPackage (import ../tools/networking/rp-pppoe) {- inherit ppp;- };- rpm = callPackage ../tools/package-management/rpm {- };- rrdtool = callPackage ../tools/misc/rrdtool {- };- rtorrent = callPackage ../tools/networking/p2p/rtorrent {- };- rubber = callPackage ../tools/typesetting/rubber {- };- rxp = callPackage ../tools/text/xml/rxp {- };- rzip = callPackage ../tools/compression/rzip {- };- s3backer = callPackage ../tools/filesystems/s3backer {- };- s3cmd = callPackage ../tools/networking/s3cmd {- };- s3cmd_15_pre_81e3842f7a = lowPrio (callPackage ../tools/networking/s3cmd/git.nix {- });- s3sync = callPackage ../tools/networking/s3sync {- ruby = ruby18;- };- sablotron = callPackage ../tools/text/xml/sablotron {- };- safecopy = callPackage ../tools/system/safecopy {- };- salut_a_toi = callPackage ../applications/networking/instant-messengers/salut-a-toi {- };- samplicator = callPackage ../tools/networking/samplicator {- };- screen = callPackage ../tools/misc/screen {- };- scrot = callPackage ../tools/graphics/scrot {- };- scrypt = callPackage ../tools/security/scrypt {- };- sdcv = callPackage ../applications/misc/sdcv {- };- sec = callPackage ../tools/admin/sec {- };- seccure = callPackage ../tools/security/seccure {- };- setserial = builderDefsPackage (import ../tools/system/setserial) {- inherit groff;- };- seqdiag = pythonPackages.seqdiag;- screenfetch = callPackage ../tools/misc/screenfetch {- };- sg3_utils = callPackage ../tools/system/sg3_utils {- };- sharutils = callPackage ../tools/archivers/sharutils {- };- shotwell = callPackage ../applications/graphics/shotwell {- };- shebangfix = callPackage ../tools/misc/shebangfix {- };- shellinabox = callPackage ../servers/shellinabox {- };- siege = callPackage ../tools/networking/siege {- };- silc_client = callPackage ../applications/networking/instant-messengers/silc-client {- };- silc_server = callPackage ../servers/silc-server {- };- silver-searcher = callPackage ../tools/text/silver-searcher {- };- simplescreenrecorder = callPackage ../applications/video/simplescreenrecorder {- };- sleuthkit = callPackage ../tools/system/sleuthkit {- };- slimrat = callPackage ../tools/networking/slimrat {- inherit (perlPackages) WWWMechanize- LWP;- };- slsnif = callPackage ../tools/misc/slsnif {- };- smartmontools = callPackage ../tools/system/smartmontools {- };- smbldaptools = callPackage ../tools/networking/smbldaptools {- inherit (perlPackages) NetLDAP- CryptSmbHash DigestSHA1;- };- smbnetfs = callPackage ../tools/filesystems/smbnetfs {- };- snort = callPackage ../applications/networking/ids/snort {- };- snx = callPackage_i686 ../tools/networking/snx {- inherit (pkgsi686Linux) pam- gcc33;- inherit (pkgsi686Linux.xlibs) libX11;- };- solr = callPackage ../servers/search/solr {- };- sparsehash = callPackage ../development/libraries/sparsehash {- };- spiped = callPackage ../tools/networking/spiped {- };- sproxy = haskellPackages.callPackage ../tools/networking/sproxy {- };- sproxy-web = haskellPackages.callPackage ../tools/networking/sproxy-web {- };- stardict = callPackage ../applications/misc/stardict/stardict.nix {- inherit (gnome) libgnomeui- scrollkeeper;- };- storebrowse = callPackage ../tools/system/storebrowse {- };- fusesmb = callPackage ../tools/filesystems/fusesmb {- };- sl = callPackage ../tools/misc/sl {- };- socat = callPackage ../tools/networking/socat {- };- socat2pre = lowPrio (callPackage ../tools/networking/socat/2.x.nix {- });- sourceHighlight = callPackage ../tools/text/source-highlight {- boost = boost149;- };- spaceFM = callPackage ../applications/misc/spacefm {- };- squashfsTools = callPackage ../tools/filesystems/squashfs {- };- sshfsFuse = callPackage ../tools/filesystems/sshfs-fuse {- };- sshuttle = callPackage ../tools/security/sshuttle {- };- sudo = callPackage ../tools/security/sudo {- };- suidChroot = builderDefsPackage (import ../tools/system/suid-chroot) {- };- super = callPackage ../tools/security/super {- };- ssdeep = callPackage ../tools/security/ssdeep {- };- ssmtp = callPackage ../tools/networking/ssmtp {- tlsSupport = true;- };- ssss = callPackage ../tools/security/ssss {- };- storeBackup = callPackage ../tools/backup/store-backup {- };- stow = callPackage ../tools/misc/stow {- };- stun = callPackage ../tools/networking/stun {- };- stunnel = callPackage ../tools/networking/stunnel {- };- su = shadow.su;- surfraw = callPackage ../tools/networking/surfraw {- };- swec = callPackage ../tools/networking/swec {- inherit (perlPackages) LWP URI- HTMLParser HTTPServerSimple- Parent;- };- svnfs = callPackage ../tools/filesystems/svnfs {- };- sysbench = callPackage ../development/tools/misc/sysbench {- };- system_config_printer = callPackage ../tools/misc/system-config-printer {- libxml2 = libxml2Python;- };- sitecopy = callPackage ../tools/networking/sitecopy {- };- stricat = callPackage ../tools/security/stricat {- };- privoxy = callPackage ../tools/networking/privoxy {- };- t1utils = callPackage ../tools/misc/t1utils {- };- tarsnap = callPackage ../tools/backup/tarsnap {- };- tcpcrypt = callPackage ../tools/security/tcpcrypt {- };- tboot = callPackage ../tools/security/tboot {- };- tcpdump = callPackage ../tools/networking/tcpdump {- };- tcpflow = callPackage ../tools/networking/tcpflow {- };- teamviewer = callPackage_i686 ../applications/networking/remote/teamviewer {- };- teamviewer8 = lowPrio (callPackage_i686 ../applications/networking/remote/teamviewer/8.nix {- });- telnet = callPackage ../tools/networking/telnet {- };- texmacs = callPackage ../applications/editors/texmacs {- tex = texLive;- extraFonts = true;- guile = guile_1_8;- };- texmaker = callPackage ../applications/editors/texmaker {- };- texstudio = callPackage ../applications/editors/texstudio {- };- tiled-qt = callPackage ../applications/editors/tiled-qt {- qt = qt4;- };- tinc = callPackage ../tools/networking/tinc {- };- tiny8086 = callPackage ../applications/virtualization/8086tiny {- };- tmpwatch = callPackage ../tools/misc/tmpwatch {- };- tmux = callPackage ../tools/misc/tmux {- };- tor = callPackage ../tools/security/tor {- };- torbutton = callPackage ../tools/security/torbutton {- };- torbrowser = callPackage ../tools/security/tor/torbrowser.nix {- };- torsocks = callPackage ../tools/security/tor/torsocks.nix {- };- tpm-quote-tools = callPackage ../tools/security/tpm-quote-tools {- };- tpm-tools = callPackage ../tools/security/tpm-tools {- };- trickle = callPackage ../tools/networking/trickle {- };- trousers = callPackage ../tools/security/trousers {- };- ttf2pt1 = callPackage ../tools/misc/ttf2pt1 {- };- ttysnoop = callPackage ../os-specific/linux/ttysnoop {- };- twitterBootstrap = callPackage ../development/web/twitter-bootstrap {- };- txt2man = callPackage ../tools/misc/txt2man {- };- ucl = callPackage ../development/libraries/ucl {- };- ucspi-tcp = callPackage ../tools/networking/ucspi-tcp {- };- udftools = callPackage ../tools/filesystems/udftools {- };- udptunnel = callPackage ../tools/networking/udptunnel {- };- ufraw = callPackage ../applications/graphics/ufraw {- };- unetbootin = callPackage ../tools/cd-dvd/unetbootin {- };- unfs3 = callPackage ../servers/unfs3 {- };- unoconv = callPackage ../tools/text/unoconv {- };- upx = callPackage ../tools/compression/upx {- };- urlview = callPackage ../applications/misc/urlview {- };- usbmuxd = callPackage ../tools/misc/usbmuxd {- };- vacuum = callPackage ../applications/networking/instant-messengers/vacuum {- };- volatility = callPackage ../tools/security/volatility {- };- vidalia = callPackage ../tools/security/vidalia {- };- vbetool = builderDefsPackage ../tools/system/vbetool {- inherit pciutils libx86 zlib;- };- vde2 = callPackage ../tools/networking/vde2 {- };- vboot_reference = callPackage ../tools/system/vboot_reference {- };- vcsh = callPackage ../applications/version-management/vcsh {- };- verilog = callPackage ../applications/science/electronics/verilog {- };- vfdecrypt = callPackage ../tools/misc/vfdecrypt {- };- vifm = callPackage ../applications/misc/vifm {- };- viking = callPackage ../applications/misc/viking {- inherit (gnome) scrollkeeper;- };- vnc2flv = callPackage ../tools/video/vnc2flv {- };- vncrec = builderDefsPackage ../tools/video/vncrec {- inherit (xlibs) imake libX11- xproto gccmakedep libXt libXmu- libXaw libXext xextproto libSM- libICE libXpm libXp;- };- vobcopy = callPackage ../tools/cd-dvd/vobcopy {- };- vobsub2srt = callPackage ../tools/cd-dvd/vobsub2srt {- };- vorbisgain = callPackage ../tools/misc/vorbisgain {- };- vpnc = callPackage ../tools/networking/vpnc {- };- openconnect = callPackage ../tools/networking/openconnect.nix {- };- vtun = callPackage ../tools/networking/vtun {- };- wal_e = callPackage ../tools/backup/wal-e {- };- watchman = callPackage ../development/tools/watchman {- };- wbox = callPackage ../tools/networking/wbox {- };- welkin = callPackage ../tools/graphics/welkin {- };- testdisk = callPackage ../tools/misc/testdisk {- };- htmlTidy = callPackage ../tools/text/html-tidy {- };- html-xml-utils = callPackage ../tools/text/xml/html-xml-utils {- };- tftp_hpa = callPackage ../tools/networking/tftp-hpa {- };- tigervnc = callPackage ../tools/admin/tigervnc {- fontDirectories = [- xorg.fontadobe75dpi- xorg.fontmiscmisc- xorg.fontcursormisc- xorg.fontbhlucidatypewriter75dpi- ];- inherit (xorg) xorgserver;- fltk = fltk13;- };- tightvnc = callPackage ../tools/admin/tightvnc {- fontDirectories = [- xorg.fontadobe75dpi- xorg.fontmiscmisc- xorg.fontcursormisc- xorg.fontbhlucidatypewriter75dpi- ];- };- time = callPackage ../tools/misc/time {- };- tkabber = callPackage ../applications/networking/instant-messengers/tkabber {- };- qfsm = callPackage ../applications/science/electronics/qfsm {- };- tkgate = callPackage ../applications/science/electronics/tkgate/1.x.nix {- inherit (xlibs) libX11 imake- xproto gccmakedep;- };- tkgate2 = lowPrio (callPackage ../applications/science/electronics/tkgate/2.x.nix {- inherit (xlibs) libX11;- });- tm = callPackage ../tools/system/tm {- };- trang = callPackage ../tools/text/xml/trang {- };- tre = callPackage ../development/libraries/tre {- };- ts = callPackage ../tools/system/ts {- };- transfig = callPackage ../tools/graphics/transfig {- libpng = libpng12;- };- truecrypt = callPackage ../applications/misc/truecrypt {- wxGUI = config.truecrypt.wxGUI or true;- };- ttmkfdir = callPackage ../tools/misc/ttmkfdir {- };- unclutter = callPackage ../tools/misc/unclutter {- };- unbound = callPackage ../tools/networking/unbound {- };- units = callPackage ../tools/misc/units {- };- unrar = callPackage ../tools/archivers/unrar {- };- xarchive = callPackage ../tools/archivers/xarchive {- };- xarchiver = callPackage ../tools/archivers/xarchiver {- };- xcruiser = callPackage ../applications/misc/xcruiser {- };- unarj = callPackage ../tools/archivers/unarj {- };- unshield = callPackage ../tools/archivers/unshield {- };- unzip = callPackage ../tools/archivers/unzip {- };- unzipNLS = lowPrio (unzip.override {- enableNLS = true;- });- uptimed = callPackage ../tools/system/uptimed {- };- varnish = callPackage ../servers/varnish {- };- varnish2 = callPackage ../servers/varnish/2.1.nix {- };- venus = callPackage ../tools/misc/venus {- python = python27;- };- vlan = callPackage ../tools/networking/vlan {- };- wakelan = callPackage ../tools/networking/wakelan {- };- wavemon = callPackage ../tools/networking/wavemon {- };- w3cCSSValidator = callPackage ../tools/misc/w3c-css-validator {- tomcat = tomcat6;- };- wdfs = callPackage ../tools/filesystems/wdfs {- };- wdiff = callPackage ../tools/text/wdiff {- };- webalizer = callPackage ../tools/networking/webalizer {- };- webdruid = builderDefsPackage ../tools/admin/webdruid {- inherit zlib libpng freetype gd- which libxml2 geoip;- };- weighttp = callPackage ../tools/networking/weighttp {- };- wget = callPackage ../tools/networking/wget {- inherit (perlPackages) LWP;- };- which = callPackage ../tools/system/which {- };- wicd = callPackage ../tools/networking/wicd {- };- wkhtmltopdf = callPackage ../tools/graphics/wkhtmltopdf {- };- wv = callPackage ../tools/misc/wv {- };- wv2 = callPackage ../tools/misc/wv2 {- };- x86info = callPackage ../os-specific/linux/x86info {- };- x11_ssh_askpass = callPackage ../tools/networking/x11-ssh-askpass {- };- xbursttools = assert stdenv ? glibc; import ../tools/misc/xburst-tools {- inherit stdenv fetchgit autoconf- automake confuse pkgconfig- libusb libusb1;- gccCross = let- pkgsCross = import ./all-packages.nix {- inherit system;- inherit bootStdenv noSysDirs- gccWithCC gccWithProfiling- config;- crossSystem = {- config = "mipsel-unknown-linux";- bigEndian = true;- arch = "mips";- float = "soft";- withTLS = true;- libc = "uclibc";- platform = {- name = "ben_nanonote";- kernelMajor = "2.6";- kernelHeadersBaseConfig = "bcm47xx_defconfig";- kernelArch = "mips";- };- gcc = { arch = "mips32"; };- };- };- in pkgsCross.gccCrossStageStatic;- };- xclip = callPackage ../tools/misc/xclip {- };- xtitle = callPackage ../tools/misc/xtitle {- };- xdelta = callPackage ../tools/compression/xdelta {- };- xdummy = callPackage ../tools/misc/xdummy {- };- xfsprogs = callPackage ../tools/filesystems/xfsprogs {- };- xmlroff = callPackage ../tools/typesetting/xmlroff {- inherit (gnome) libgnomeprint;- };- xmlstarlet = callPackage ../tools/text/xml/xmlstarlet {- };- xmlto = callPackage ../tools/typesetting/xmlto {- };- xmltv = callPackage ../tools/misc/xmltv {- };- xmpppy = builderDefsPackage (import ../development/python-modules/xmpppy) {- inherit python setuptools;- };- xorriso = callPackage ../tools/cd-dvd/xorriso {- };- xpf = callPackage ../tools/text/xml/xpf {- libxml2 = libxml2Python;- };- xsel = callPackage ../tools/misc/xsel {- };- xtreemfs = callPackage ../tools/filesystems/xtreemfs {- };- xvfb_run = callPackage ../tools/misc/xvfb-run {- inherit (texFunctions) fontsConf;- };- youtubeDL = callPackage ../tools/misc/youtube-dl {- };- zbar = callPackage ../tools/graphics/zbar {- pygtk = lib.overrideDerivation pygtk (x:- { gtk = gtk2; });- };- zdelta = callPackage ../tools/compression/zdelta {- };- zfstools = callPackage ../tools/filesystems/zfstools {- zfs = linuxPackages.zfs;- };- zile = callPackage ../applications/editors/zile {- };- zip = callPackage ../tools/archivers/zip {- };- zpaq = callPackage ../tools/archivers/zpaq {- };- zpaqd = callPackage ../tools/archivers/zpaq/zpaqd.nix {- };- zsync = callPackage ../tools/compression/zsync {- };- bash = lowPrio (callPackage ../shells/bash {- texinfo = null;- });- bashInteractive = appendToName "interactive" (callPackage ../shells/bash {- interactive = true;- readline = readline63;- });- bashCompletion = callPackage ../shells/bash-completion {- };- dash = callPackage ../shells/dash {- };- fish = callPackage ../shells/fish {- python = python27Full;- };- tcsh = callPackage ../shells/tcsh {- };- rush = callPackage ../shells/rush {- };- zsh = callPackage ../shells/zsh {- };- abc = abcPatchable [ ];- abcPatchable = patches:- import ../development/compilers/abc/default.nix {- inherit stdenv fetchurl patches- jre apacheAnt;- javaCup = callPackage ../development/libraries/java/cup {- };- };- aldor = callPackage ../development/compilers/aldor {- };- aliceml = callPackage ../development/compilers/aliceml {- };- aspectj = callPackage ../development/compilers/aspectj {- };- ats = callPackage ../development/compilers/ats {- };- ats2 = callPackage ../development/compilers/ats2 {- };- avra = callPackage ../development/compilers/avra {- };- bigloo = callPackage ../development/compilers/bigloo {- };- chicken = callPackage ../development/compilers/chicken {- };- ccl = builderDefsPackage ../development/compilers/ccl {- };- clang = wrapClang llvmPackages.clang;- clang_34 = wrapClang llvmPackages_34.clang;- clang_33 = wrapClang (clangUnwrapped llvm_33 ../development/compilers/llvm/3.3/clang.nix);- clangAnalyzer = callPackage ../development/tools/analysis/clang-analyzer {- clang = clang_34;- llvmPackages = llvmPackages_34;- };- clangUnwrapped = llvm: pkg:- callPackage pkg {- stdenv = if stdenv.isDarwin- then stdenvApple- else stdenv;- inherit llvm;- };- clangSelf = clangWrapSelf llvmPackagesSelf.clang;- clangWrapSelf = build:- import ../build-support/clang-wrapper {- clang = build;- stdenv = clangStdenv;- libc = glibc;- binutils = binutils;- shell = bash;- inherit libcxx coreutils zlib;- nativeTools = false;- nativeLibc = false;- };- clangStdenv = lowPrio (stdenvAdapters.overrideGCC stdenv clang);- libcxxStdenv = stdenvAdapters.overrideGCC stdenv (clangWrapSelf llvmPackages.clang);- clean = callPackage ../development/compilers/clean {- };- closurecompiler = callPackage ../development/compilers/closure {- };- cmucl_binary = callPackage ../development/compilers/cmucl/binary.nix {- };- compcert = callPackage ../development/compilers/compcert {- };- cryptol1 = lowPrio (callPackage ../development/compilers/cryptol/1.8.x.nix {- });- cryptol2 = with haskellPackages_ghc763; callPackage ../development/compilers/cryptol/2.0.x.nix {- Cabal = Cabal_1_18_1_3;- cabalInstall = cabalInstall_1_18_0_3;- process = process_1_2_0_0;- };- cython = pythonPackages.cython;- cython3 = python3Packages.cython;- dylan = callPackage ../development/compilers/gwydion-dylan {- dylan = callPackage ../development/compilers/gwydion-dylan/binary.nix {- };- };- ecl = callPackage ../development/compilers/ecl {- };- eql = callPackage ../development/compilers/eql {- };- adobe_flex_sdk = callPackage ../development/compilers/adobe-flex-sdk {- };- fpc = callPackage ../development/compilers/fpc {- };- fpc_2_4_0 = callPackage ../development/compilers/fpc/2.4.0.nix {- };- gambit = callPackage ../development/compilers/gambit {- };- gcc = gcc48;- gcc33 = wrapGCC (import ../development/compilers/gcc/3.3 {- inherit fetchurl stdenv- noSysDirs;- });- gcc34 = wrapGCC (import ../development/compilers/gcc/3.4 {- inherit fetchurl stdenv- noSysDirs;- });- gcc48_realCross = lib.addMetaAttrs {- hydraPlatforms = [ ];- } (callPackage ../development/compilers/gcc/4.8 {- inherit noSysDirs;- binutilsCross = binutilsCross;- libcCross = libcCross;- profiledCompiler = false;- enableMultilib = false;- crossStageStatic = false;- cross = assert crossSystem != null; crossSystem;- });- gcc_realCross = gcc48_realCross;- gccCrossStageStatic = let- libcCross1 = if stdenv.cross.libc == "msvcrt"- then windows.mingw_w64_headers- else if stdenv.cross.libc == "libSystem"- then darwin.xcode- else null;- in wrapGCCCross {- gcc = forceNativeDrv (lib.addMetaAttrs {- hydraPlatforms = [ ];- } (gcc_realCross.override {- crossStageStatic = true;- langCC = false;- libcCross = libcCross1;- enableShared = false;- }));- libc = libcCross1;- binutils = binutilsCross;- cross = assert crossSystem != null; crossSystem;- };- gccCrossMingw2 = wrapGCCCross {- gcc = gccCrossStageStatic.gcc;- libc = windows.mingw_headers2;- binutils = binutilsCross;- cross = assert crossSystem != null; crossSystem;- };- gccCrossStageFinal = wrapGCCCross {- gcc = forceNativeDrv (gcc_realCross.override {- libpthreadCross = if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then gnu.libpthreadCross- else null;- langCC = crossSystem == null || crossSystem.config != "i686-pc-mingw32";- });- libc = libcCross;- binutils = binutilsCross;- cross = assert crossSystem != null; crossSystem;- };- gcc44 = lowPrio (wrapGCC (makeOverridable (import ../development/compilers/gcc/4.4) {- inherit fetchurl stdenv gmp mpfr- gettext which noSysDirs;- texinfo = texinfo4;- profiledCompiler = true;- }));- gcc45 = lowPrio (wrapGCC (callPackage ../development/compilers/gcc/4.5 {- inherit fetchurl stdenv gmp mpfr- mpc libelf zlib perl gettext- which noSysDirs;- texinfo = texinfo4;- ppl = null;- cloogppl = null;- profiledCompiler = !stdenv.isArm;- cross = null;- libcCross = if crossSystem != null- then libcCross- else null;- libpthreadCross = if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then gnu.libpthreadCross- else null;- }));- gcc46 = lowPrio (wrapGCC (callPackage ../development/compilers/gcc/4.6 {- inherit noSysDirs;- ppl = null;- cloog = null;- profiledCompiler = false;- cross = null;- libcCross = if crossSystem != null- then libcCross- else null;- libpthreadCross = if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then gnu.libpthreadCross- else null;- texinfo = texinfo413;- }));- gcc48 = lowPrio (wrapGCC (callPackage ../development/compilers/gcc/4.8 {- inherit noSysDirs;- profiledCompiler = with stdenv; !isDarwin && (isi686 || isx86_64);- cross = null;- libcCross = if crossSystem != null- then libcCross- else null;- libpthreadCross = if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then gnu.libpthreadCross- else null;- }));- gcc48_multi = if system == "x86_64-linux"- then lowPrio (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi (gcc48.gcc.override {- stdenv = overrideGCC stdenv (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi gcc.gcc);- profiledCompiler = false;- enableMultilib = true;- }))- else throw "Multilib gcc not supported on ‘${system}’";- gcc48_debug = lowPrio (wrapGCC (callPackage ../development/compilers/gcc/4.8 {- stripped = false;- inherit noSysDirs;- cross = null;- libcCross = null;- binutilsCross = null;- }));- gcc49 = lowPrio (wrapGCC (callPackage ../development/compilers/gcc/4.9 {- inherit noSysDirs;- profiledCompiler = with stdenv; !isDarwin && (isi686 || isx86_64);- cross = null;- libcCross = if crossSystem != null- then libcCross- else null;- libpthreadCross = if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then gnu.libpthreadCross- else null;- }));- gccApple = assert stdenv.isDarwin; wrapGCC (makeOverridable (import ../development/compilers/gcc/4.2-apple64) {- inherit fetchurl noSysDirs;- profiledCompiler = true;- stdenv = allStdenvs.stdenvNative;- });- gfortran = gfortran48;- gfortran48 = wrapGCC (gcc48.gcc.override {- name = "gfortran";- langFortran = true;- langCC = false;- langC = false;- profiledCompiler = false;- });- gcj = gcj48;- gcj48 = wrapGCC (gcc48.gcc.override {- name = "gcj";- langJava = true;- langFortran = false;- langCC = false;- langC = false;- profiledCompiler = false;- inherit zip unzip zlib boehmgc- gettext pkgconfig perl;- inherit gtk;- inherit (gnome) libart_lgpl;- inherit (xlibs) libX11 libXt- libSM libICE libXtst libXi- libXrender libXrandr xproto- renderproto xextproto inputproto- randrproto;- });- gnat = gnat45;- gnat45 = wrapGCC (gcc45.gcc.override {- name = "gnat";- langCC = false;- langC = true;- langAda = true;- profiledCompiler = false;- inherit gnatboot;- cloogppl = null;- ppl = null;- });- gnat46 = wrapGCC (gcc46.gcc.override {- name = "gnat";- langCC = false;- langC = true;- langAda = true;- profiledCompiler = false;- gnatboot = gnat45;- ppl = null;- cloog = null;- });- gnatboot = wrapGCC (import ../development/compilers/gnatboot {- inherit fetchurl stdenv;- });- gccgo = gccgo48;- gccgo48 = wrapGCC (gcc48.gcc.override {- name = "gccgo";- langCC = true;- langC = true;- langGo = true;- });- ghdl = wrapGCC (import ../development/compilers/gcc/4.3 {- inherit stdenv fetchurl gmp mpfr- noSysDirs gnat;- texinfo = texinfo4;- name = "ghdl";- langVhdl = true;- langCC = false;- langC = false;- profiledCompiler = false;- enableMultilib = false;- });- ghdl_mcode = callPackage ../development/compilers/ghdl {- };- gcl = builderDefsPackage ../development/compilers/gcl {- inherit mpfr m4 binutils- fetchcvs emacs zlib which- texinfo;- gmp = gmp4;- inherit (xlibs) libX11 xproto- inputproto libXi libXext- xextproto libXt libXaw libXmu;- inherit stdenv;- texLive = texLiveAggregationFun {- paths = [- texLive- texLiveExtra- ];- };- };- jhc = callPackage ../development/compilers/jhc {- inherit (haskellPackages_ghc763) ghc- binary zlib utf8String readline- fgl regexCompat HsSyck random;- };- gcc-arm-embedded-4_7 = callPackage_i686 ../development/compilers/gcc-arm-embedded {- version = "4.7-2013q3-20130916";- releaseType = "update";- sha256 = "1bd9bi9q80xn2rpy0rn1vvj70rh15kb7dmah0qs4q2rv78fqj40d";- };- gcc-arm-embedded-4_8 = callPackage_i686 ../development/compilers/gcc-arm-embedded {- version = "4.8-2014q1-20140314";- releaseType = "update";- sha256 = "ce92859550819d4a3d1a6e2672ea64882b30afa2c08cf67fa8e1d93788c2c577";- };- gcc-arm-embedded = gcc-arm-embedded-4_8;- haskell = let- pkgs_ = pkgs // {- gmp = gmp.override {- withStatic = true;- };- };- callPackage = newScope pkgs_;- newScope = extra:- lib.callPackageWith (pkgs_ // pkgs_.xorg // extra);- in callPackage ./haskell-defaults.nix {- pkgs = pkgs_;- inherit callPackage newScope;- };- ghc = recurseIntoAttrs (lib.mapAttrs' (name:- value:- lib.nameValuePair (builtins.substring (builtins.stringLength "packages_") (builtins.stringLength name) name) value.ghc) (lib.filterAttrs (name:- value:- builtins.substring 0 (builtins.stringLength "packages_") name == "packages_") haskell));- haskellPackages = haskellPackages_ghc783;- haskellPlatform = haskellPlatformPackages."2013_2_0_0";- haskellPackages_ghc6104 = haskell.packages_ghc6104;- haskellPackages_ghc6123 = haskell.packages_ghc6123;- haskellPackages_ghc704 = haskell.packages_ghc704;- haskellPackages_ghc722 = haskell.packages_ghc722;- haskellPackages_ghc742 = haskell.packages_ghc742;- haskellPackages_ghc763 = haskell.packages_ghc763;- haskellPackages_ghc783_no_profiling = recurseIntoAttrs haskell.packages_ghc783.noProfiling;- haskellPackages_ghc783_profiling = recurseIntoAttrs haskell.packages_ghc783.profiling;- haskellPackages_ghc783 = recurseIntoAttrs haskell.packages_ghc783.highPrio;- haskellPackages_ghcHEAD = haskell.packages_ghcHEAD;- haskellPlatformPackages = recurseIntoAttrs (import ../development/libraries/haskell/haskell-platform {- inherit pkgs;- });- haxe = callPackage ../development/compilers/haxe {- };- hhvm = callPackage ../development/compilers/hhvm {- };- hiphopvm = hhvm;- falcon = builderDefsPackage (import ../development/interpreters/falcon) {- inherit cmake;- };- fsharp = callPackage ../development/compilers/fsharp {- };- go_1_0 = callPackage ../development/compilers/go {- };- go_1_1 = if stdenv.isDarwin- then callPackage ../development/compilers/go/1.1-darwin.nix {- }- else callPackage ../development/compilers/go/1.1.nix {- };- go_1_2 = callPackage ../development/compilers/go/1.2.nix {- };- go_1_3 = callPackage ../development/compilers/go/1.3.nix {- };- go = go_1_3;- gox = callPackage ../development/compilers/go/gox.nix {- };- gprolog = callPackage ../development/compilers/gprolog {- };- gwt240 = callPackage ../development/compilers/gwt/2.4.0.nix {- };- icedtea7_jdk = callPackage ../development/compilers/icedtea rec {- jdk = openjdk;- jdkPath = "${openjdk}/lib/openjdk";- } // { outputs = [ "out" ]; };- icedtea7_jre = lib.setName "icedtea7-${lib.getVersion pkgs.icedtea7_jdk.jre}" (lib.addMetaAttrs {- description = "Free Java runtime environment based on OpenJDK 7.0 and the IcedTea project";- } pkgs.icedtea7_jdk.jre) // {- outputs = [ "jre" ];- };- icedtea7_web = callPackage ../development/compilers/icedtea-web {- jdk = "${icedtea7_jdk}/lib/icedtea";- };- ikarus = callPackage ../development/compilers/ikarus {- };- hugs = callPackage ../development/compilers/hugs {- };- path64 = callPackage ../development/compilers/path64 {- };- openjdk = if stdenv.isDarwin- then callPackage ../development/compilers/openjdk-darwin {- }- else let- openjdkBootstrap = callPackage ../development/compilers/openjdk/bootstrap.nix {- };- in callPackage ../development/compilers/openjdk {- jdk = openjdkBootstrap;- } // { outputs = [ "out" ]; };- openjre = lib.setName "openjre-${lib.getVersion pkgs.openjdk.jre}" (lib.addMetaAttrs {- description = "The open-source Java Runtime Environment";- } pkgs.openjdk.jre) // {- outputs = [ "jre" ];- };- jdk = if stdenv.isDarwin || stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"- then pkgs.openjdk- else pkgs.oraclejdk;- jre = if stdenv.isDarwin || stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"- then pkgs.openjre- else pkgs.oraclejre;- oraclejdk = pkgs.jdkdistro true false;- oraclejdk7 = pkgs.oraclejdk7distro true false;- oraclejdk8 = pkgs.oraclejdk8distro true false;- oraclejre = lowPrio (pkgs.jdkdistro false false);- oraclejre7 = lowPrio (pkgs.oraclejdk7distro false false);- oraclejre8 = lowPrio (pkgs.oraclejdk8distro false false);- jrePlugin = lowPrio (pkgs.jdkdistro false true);- supportsJDK = system == "i686-linux" || system == "x86_64-linux";- jdkdistro = installjdk:- pluginSupport:- assert supportsJDK; (if pluginSupport- then appendToName "with-plugin"- else x:- x) (callPackage ../development/compilers/oraclejdk/jdk6-linux.nix {- });- oraclejdk7distro = installjdk:- pluginSupport:- assert supportsJDK; (if pluginSupport- then appendToName "with-plugin"- else x:- x) (callPackage ../development/compilers/oraclejdk/jdk7-linux.nix {- inherit installjdk;- });- oraclejdk8distro = installjdk:- pluginSupport:- assert supportsJDK; (if pluginSupport- then appendToName "with-plugin"- else x:- x) (callPackage ../development/compilers/oraclejdk/jdk8-linux.nix {- inherit installjdk;- });- jikes = callPackage ../development/compilers/jikes {- };- juliaGit = callPackage ../development/compilers/julia/git-20131013.nix {- liblapack = liblapack.override {- shared = true;- };- llvm = llvm_33;- };- julia021 = callPackage ../development/compilers/julia/0.2.1.nix {- liblapack = liblapack.override {- shared = true;- };- llvm = llvm_33;- };- julia030 = let- liblapack = liblapack_3_5_0.override {- shared = true;- };- in callPackage ../development/compilers/julia/0.3.0.nix {- inherit liblapack;- suitesparse = suitesparse.override {- inherit liblapack;- };- openblas = openblas_0_2_10;- llvm = llvm_34;- };- julia = julia021;- lazarus = builderDefsPackage (import ../development/compilers/fpc/lazarus.nix) {- inherit makeWrapper gtk glib- pango atk gdk_pixbuf;- inherit (xlibs) libXi inputproto- libX11 xproto libXext xextproto;- fpc = fpc;- };- lessc = callPackage ../development/compilers/lessc {- };- llvm = llvmPackages.llvm;- llvm_34 = llvmPackages_34.llvm;- llvm_33 = llvm_v ../development/compilers/llvm/3.3/llvm.nix;- llvm_v = path:- callPackage path {- stdenv = if stdenv.isDarwin- then stdenvApple- else stdenv;- };- llvmPackages = if !stdenv.isDarwin- then llvmPackages_34- else llvmPackages_34 // {- llvm = llvm_33;- clang = clang_33;- };- llvmPackages_34 = recurseIntoAttrs (import ../development/compilers/llvm/3.4 {- inherit stdenv newScope- fetchurl;- isl = isl_0_12;- });- llvmPackagesSelf = import ../development/compilers/llvm/3.4 {- inherit newScope fetchurl;- isl = isl_0_12;- stdenv = libcxxStdenv;- };- manticore = callPackage ../development/compilers/manticore {- };- mentorToolchains = recurseIntoAttrs (callPackage_i686 ../development/compilers/mentor {- });- mercury = callPackage ../development/compilers/mercury {- };- mitscheme = callPackage ../development/compilers/mit-scheme {- };- mlton = callPackage ../development/compilers/mlton {- };- mono = callPackage ../development/compilers/mono {- inherit (xlibs) libX11;- };- monoDLLFixer = callPackage ../build-support/mono-dll-fixer {- };- mozart = callPackage ../development/compilers/mozart {- };- neko = callPackage ../development/compilers/neko {- };- nasm = callPackage ../development/compilers/nasm {- };- nvidia_cg_toolkit = callPackage ../development/compilers/nvidia-cg-toolkit {- };- ocaml = ocamlPackages.ocaml;- ocaml_3_08_0 = callPackage ../development/compilers/ocaml/3.08.0.nix {- };- ocaml_3_10_0 = callPackage ../development/compilers/ocaml/3.10.0.nix {- };- ocaml_3_11_2 = callPackage ../development/compilers/ocaml/3.11.2.nix {- };- ocaml_3_12_1 = callPackage ../development/compilers/ocaml/3.12.1.nix {- };- ocaml_4_00_1 = callPackage ../development/compilers/ocaml/4.00.1.nix {- };- ocaml_4_01_0 = callPackage ../development/compilers/ocaml/4.01.0.nix {- };- orc = callPackage ../development/compilers/orc {- };- metaocaml_3_09 = callPackage ../development/compilers/ocaml/metaocaml-3.09.nix {- };- ber_metaocaml_003 = callPackage ../development/compilers/ocaml/ber-metaocaml-003.nix {- };- mkOcamlPackages = ocaml: self:- let- callPackage = newScope self;- in rec {- inherit ocaml;- camlidl = callPackage ../development/tools/ocaml/camlidl {- };- camlp5_5_strict = callPackage ../development/tools/ocaml/camlp5/5.15.nix {- };- camlp5_5_transitional = callPackage ../development/tools/ocaml/camlp5/5.15.nix {- transitional = true;- };- camlp5_6_strict = callPackage ../development/tools/ocaml/camlp5 {- };- camlp5_6_transitional = callPackage ../development/tools/ocaml/camlp5 {- transitional = true;- };- camlp5_strict = camlp5_6_strict;- camlp5_transitional = camlp5_6_transitional;- camlzip = callPackage ../development/ocaml-modules/camlzip {- };- camomile_0_8_2 = callPackage ../development/ocaml-modules/camomile/0.8.2.nix {- };- camomile = callPackage ../development/ocaml-modules/camomile {- };- camlimages = callPackage ../development/ocaml-modules/camlimages {- libpng = libpng12;- giflib = giflib_4_1;- };- biniou = callPackage ../development/ocaml-modules/biniou {- };- ocaml_cairo = callPackage ../development/ocaml-modules/ocaml-cairo {- };- cppo = callPackage ../development/tools/ocaml/cppo {- };- cryptokit = callPackage ../development/ocaml-modules/cryptokit {- };- csv = callPackage ../development/ocaml-modules/csv {- };- deriving = callPackage ../development/tools/ocaml/deriving {- };- easy-format = callPackage ../development/ocaml-modules/easy-format {- };- findlib = callPackage ../development/tools/ocaml/findlib {- };- javalib = callPackage ../development/ocaml-modules/javalib {- extlib = ocaml_extlib_maximal;- };- dypgen = callPackage ../development/ocaml-modules/dypgen {- };- patoline = callPackage ../tools/typesetting/patoline {- };- gmetadom = callPackage ../development/ocaml-modules/gmetadom {- };- lablgl = callPackage ../development/ocaml-modules/lablgl {- };- lablgtk = callPackage ../development/ocaml-modules/lablgtk {- inherit (gnome) libgnomecanvas- libglade gtksourceview;- };- lablgtkmathview = callPackage ../development/ocaml-modules/lablgtkmathview {- gtkmathview = callPackage ../development/libraries/gtkmathview {- };- };- menhir = callPackage ../development/ocaml-modules/menhir {- };- merlin = callPackage ../development/tools/ocaml/merlin {- };- mldonkey = callPackage ../applications/networking/p2p/mldonkey {- };- mlgmp = callPackage ../development/ocaml-modules/mlgmp {- };- ocaml_batteries = callPackage ../development/ocaml-modules/batteries {- };- ocaml_cryptgps = callPackage ../development/ocaml-modules/cryptgps {- };- ocaml_data_notation = callPackage ../development/ocaml-modules/odn {- };- ocaml_expat = callPackage ../development/ocaml-modules/expat {- };- ocamlgraph = callPackage ../development/ocaml-modules/ocamlgraph {- };- ocaml_http = callPackage ../development/ocaml-modules/http {- };- ocamlify = callPackage ../development/tools/ocaml/ocamlify {- };- ocaml_lwt = callPackage ../development/ocaml-modules/lwt {- };- ocamlmod = callPackage ../development/tools/ocaml/ocamlmod {- };- ocaml_mysql = callPackage ../development/ocaml-modules/mysql {- };- ocamlnet = callPackage ../development/ocaml-modules/ocamlnet {- };- ocaml_oasis = callPackage ../development/tools/ocaml/oasis {- };- ocaml_pcre = callPackage ../development/ocaml-modules/pcre {- inherit pcre;- };- ocaml_react = callPackage ../development/ocaml-modules/react {- };- ocamlsdl = callPackage ../development/ocaml-modules/ocamlsdl {- };- ocaml_sqlite3 = callPackage ../development/ocaml-modules/sqlite3 {- };- ocaml_ssl = callPackage ../development/ocaml-modules/ssl {- };- ounit = callPackage ../development/ocaml-modules/ounit {- };- ulex = callPackage ../development/ocaml-modules/ulex {- };- ulex08 = callPackage ../development/ocaml-modules/ulex/0.8 {- camlp5 = camlp5_transitional;- };- ocaml_typeconv = callPackage ../development/ocaml-modules/typeconv {- };- ocaml_typeconv_3_0_5 = callPackage ../development/ocaml-modules/typeconv/3.0.5.nix {- };- ocaml_sexplib = callPackage ../development/ocaml-modules/sexplib {- };- ocaml_extlib = callPackage ../development/ocaml-modules/extlib {- };- ocaml_extlib_maximal = callPackage ../development/ocaml-modules/extlib {- minimal = false;- };- pycaml = callPackage ../development/ocaml-modules/pycaml {- };- opam_1_0_0 = callPackage ../development/tools/ocaml/opam/1.0.0.nix {- };- opam_1_1 = callPackage ../development/tools/ocaml/opam/1.1.nix {- };- opam = opam_1_1;- sawja = callPackage ../development/ocaml-modules/sawja {- };- uucd = callPackage ../development/ocaml-modules/uucd {- };- uunf = callPackage ../development/ocaml-modules/uunf {- };- uutf = callPackage ../development/ocaml-modules/uutf {- };- xmlm = callPackage ../development/ocaml-modules/xmlm {- };- yojson = callPackage ../development/ocaml-modules/yojson {- };- zarith = callPackage ../development/ocaml-modules/zarith {- };- };- ocamlPackages = recurseIntoAttrs ocamlPackages_4_01_0;- ocamlPackages_3_10_0 = mkOcamlPackages ocaml_3_10_0 pkgs.ocamlPackages_3_10_0;- ocamlPackages_3_11_2 = mkOcamlPackages ocaml_3_11_2 pkgs.ocamlPackages_3_11_2;- ocamlPackages_3_12_1 = mkOcamlPackages ocaml_3_12_1 pkgs.ocamlPackages_3_12_1;- ocamlPackages_4_00_1 = mkOcamlPackages ocaml_4_00_1 pkgs.ocamlPackages_4_00_1;- ocamlPackages_4_01_0 = mkOcamlPackages ocaml_4_01_0 pkgs.ocamlPackages_4_01_0;- ocamlPackages_latest = ocamlPackages_4_01_0;- ocaml_make = callPackage ../development/ocaml-modules/ocamlmake {- };- opa = let- callPackage = newScope pkgs.ocamlPackages_4_00_1;- in callPackage ../development/compilers/opa {- };- ocamlnat = let- callPackage = newScope pkgs.ocamlPackages_3_12_1;- in callPackage ../development/ocaml-modules/ocamlnat {- };- qcmm = callPackage ../development/compilers/qcmm {- lua = lua4;- ocaml = ocaml_3_08_0;- };- roadsend = callPackage ../development/compilers/roadsend {- };- rustc = callPackage ../development/compilers/rustc/0.11.nix {- };- rustcMaster = callPackage ../development/compilers/rustc/head.nix {- };- rust = rustc;- sbclBootstrap = callPackage ../development/compilers/sbcl/bootstrap.nix {- };- sbcl = callPackage ../development/compilers/sbcl {- clisp = clisp;- };- scala_2_9 = callPackage ../development/compilers/scala/2.9.nix {- };- scala_2_10 = callPackage ../development/compilers/scala/2.10.nix {- };- scala_2_11 = callPackage ../development/compilers/scala {- };- scala = scala_2_11;- sdcc = callPackage ../development/compilers/sdcc {- };- smlnjBootstrap = callPackage ../development/compilers/smlnj/bootstrap.nix {- };- smlnj = callPackage_i686 ../development/compilers/smlnj {- };- stalin = callPackage ../development/compilers/stalin {- };- strategoPackages = recurseIntoAttrs strategoPackages018;- strategoPackages016 = callPackage ../development/compilers/strategoxt/0.16.nix {- stdenv = overrideInStdenv stdenv [- gnumake380- ];- };- strategoPackages017 = callPackage ../development/compilers/strategoxt/0.17.nix {- readline = readline5;- };- strategoPackages018 = callPackage ../development/compilers/strategoxt/0.18.nix {- readline = readline5;- };- metaBuildEnv = callPackage ../development/compilers/meta-environment/meta-build-env {- };- swiProlog = callPackage ../development/compilers/swi-prolog {- };- tbb = callPackage ../development/libraries/tbb {- };- tinycc = callPackage ../development/compilers/tinycc {- };- urweb = callPackage ../development/compilers/urweb {- };- vala = callPackage ../development/compilers/vala/default.nix {- };- visualcpp = callPackage ../development/compilers/visual-c++ {- };- vs90wrapper = callPackage ../development/compilers/vs90wrapper {- };- webdsl = callPackage ../development/compilers/webdsl {- };- win32hello = callPackage ../development/compilers/visual-c++/test {- };- wrapGCCWith = gccWrapper: glibc:- baseGCC: gccWrapper {- nativeTools = stdenv ? gcc && stdenv.gcc.nativeTools;- nativeLibc = stdenv ? gcc && stdenv.gcc.nativeLibc;- nativePrefix = if stdenv ? gcc- then stdenv.gcc.nativePrefix- else "";- gcc = baseGCC;- libc = glibc;- shell = bash;- inherit stdenv binutils- coreutils zlib;- };- wrapClangWith = clangWrapper:- glibc: baseClang: clangWrapper {- nativeTools = stdenv.gcc.nativeTools or false;- nativeLibc = stdenv.gcc.nativeLibc or false;- nativePrefix = stdenv.gcc.nativePrefix or "";- clang = baseClang;- libc = glibc;- shell = bash;- binutils = stdenv.gcc.binutils;- inherit stdenv coreutils zlib;- };- wrapClang = wrapClangWith (makeOverridable (import ../build-support/clang-wrapper)) glibc;- wrapGCC = wrapGCCWith (makeOverridable (import ../build-support/gcc-wrapper)) glibc;- wrapGCCCross = { binutils, cross, gcc, libc, name ? "gcc-cross-wrapper", shell ? "" }:- forceNativeDrv (import ../build-support/gcc-cross-wrapper {- nativeTools = false;- nativeLibc = false;- noLibc = libc == null;- inherit stdenv gcc binutils libc- shell name cross;- });- yap = callPackage ../development/compilers/yap {- };- yasm = callPackage ../development/compilers/yasm {- };- acl2 = builderDefsPackage ../development/interpreters/acl2 {- inherit sbcl;- };- angelscript = callPackage ../development/interpreters/angelscript {- };- clisp = callPackage ../development/interpreters/clisp {- };- clisp_2_44_1 = callPackage ../development/interpreters/clisp/2.44.1.nix {- libsigsegv = libsigsegv_25;- };- clojure = callPackage ../development/interpreters/clojure {- };- clooj = callPackage ../development/interpreters/clojure/clooj.nix {- };- erlangR14 = callPackage ../development/interpreters/erlang/R14.nix {- };- erlangR15 = callPackage ../development/interpreters/erlang/R15.nix {- };- erlangR16 = callPackage ../development/interpreters/erlang/R16.nix {- };- erlangR17 = callPackage ../development/interpreters/erlang/R17.nix {- };- erlang = erlangR17;- rebar = callPackage ../development/tools/build-managers/rebar {- };- elixir = callPackage ../development/interpreters/elixir {- };- groovy = callPackage ../development/interpreters/groovy {- };- guile_1_8 = callPackage ../development/interpreters/guile/1.8.nix {- };- guile_2_0 = callPackage ../development/interpreters/guile {- };- guile = guile_2_0;- hadoop = callPackage ../applications/networking/cluster/hadoop {- };- io = callPackage ../development/interpreters/io {- };- j = callPackage ../development/interpreters/j {- };- jmeter = callPackage ../applications/networking/jmeter {- };- davmail = callPackage ../applications/networking/davmail {- };- lxappearance = callPackage ../applications/misc/lxappearance {- };- kona = callPackage ../development/interpreters/kona {- };- love = callPackage ../development/interpreters/love {- lua = lua5;- };- love_luajit = callPackage ../development/interpreters/love {- lua = luajit;- };- love_0_9 = callPackage ../development/interpreters/love/0.9.nix {- };- lua4 = callPackage ../development/interpreters/lua-4 {- };- lua5_0 = callPackage ../development/interpreters/lua-5/5.0.3.nix {- };- lua5_1 = callPackage ../development/interpreters/lua-5/5.1.nix {- };- lua5_2 = callPackage ../development/interpreters/lua-5/5.2.nix {- };- lua5_2_compat = callPackage ../development/interpreters/lua-5/5.2.nix {- compat = true;- };- lua5 = lua5_1;- lua = lua5;- lua5_sockets = callPackage ../development/interpreters/lua-5/sockets.nix {- };- lua5_expat = callPackage ../development/interpreters/lua-5/expat.nix {- };- lua5_filesystem = callPackage ../development/interpreters/lua-5/filesystem.nix {- };- lua5_sec = callPackage ../development/interpreters/lua-5/sec.nix {- };- luarocks = callPackage ../development/tools/misc/luarocks {- lua = lua5;- };- luajit = callPackage ../development/interpreters/luajit {- };- lush2 = callPackage ../development/interpreters/lush {- };- maude = callPackage ../development/interpreters/maude {- bison = bison2;- flex = flex_2_5_35;- };- mesos = callPackage ../applications/networking/cluster/mesos {- sasl = cyrus_sasl;- automake = automake114x;- inherit (pythonPackages) python- boto setuptools distutils-cfg- wrapPython;- pythonProtobuf = pythonPackages.protobuf;- };- octave = callPackage ../development/interpreters/octave {- fltk = fltk13;- qt = null;- ghostscript = null;- llvm = null;- hdf5 = null;- glpk = null;- suitesparse = null;- openjdk = null;- gnuplot = null;- readline = readline63;- };- octaveFull = lowPrio (callPackage ../development/interpreters/octave {- fltk = fltk13;- qt = qt4;- });- octaveHG = callPackage ../development/interpreters/octave/hg.nix {- };- ocropus = callPackage ../applications/misc/ocropus {- };- perl514 = callPackage ../development/interpreters/perl/5.14 {- };- perl516 = callPackage ../development/interpreters/perl/5.16 {- fetchurl = fetchurlBoot;- };- perl520 = callPackage ../development/interpreters/perl/5.20 {- };- perl = if system != "i686-cygwin"- then perl516- else sysPerl;- php = php54;- phpPackages = recurseIntoAttrs (import ./php-packages.nix {- inherit php pkgs;- });- php53 = callPackage ../development/interpreters/php/5.3.nix {- };- php_fpm53 = callPackage ../development/interpreters/php/5.3.nix {- config = config // {- php = (config.php or { }) // {- fpm = true;- apxs2 = false;- };- };- };- php54 = callPackage ../development/interpreters/php/5.4.nix {- };- picolisp = callPackage ../development/interpreters/picolisp {- };- pltScheme = racket;- polyml = callPackage ../development/compilers/polyml {- };- pure = callPackage ../development/interpreters/pure {- llvm = llvm_33;- };- python = python2;- python2 = python27;- python3 = python34;- pythonPackages = python2Packages;- python2Packages = python27Packages;- python3Packages = python34Packages;- pythonFull = python2Full;- python2Full = python27Full;- python26 = callPackage ../development/interpreters/python/2.6 {- db = db47;- };- python27 = callPackage ../development/interpreters/python/2.7 {- };- python32 = callPackage ../development/interpreters/python/3.2 {- };- python33 = callPackage ../development/interpreters/python/3.3 {- };- python34 = hiPrio (callPackage ../development/interpreters/python/3.4 {- });- pypy = callPackage ../development/interpreters/pypy/2.3 {- };- python26Full = callPackage ../development/interpreters/python/wrapper.nix {- extraLibs = [ ];- postBuild = "";- python = python26;- inherit (python26Packages) recursivePthLoader;- };- python27Full = callPackage ../development/interpreters/python/wrapper.nix {- extraLibs = [ ];- postBuild = "";- python = python27;- inherit (python27Packages) recursivePthLoader;- };- pythonDocs = recurseIntoAttrs (import ../development/interpreters/python/docs {- inherit stdenv fetchurl lib;- });- pythonLinkmeWrapper = callPackage ../development/interpreters/python/python-linkme-wrapper.nix {- };- pypi2nix = python27Packages.pypi2nix;- pyrex = pyrex095;- pyrex095 = callPackage ../development/interpreters/pyrex/0.9.5.nix {- };- pyrex096 = callPackage ../development/interpreters/pyrex/0.9.6.nix {- };- qi = callPackage ../development/compilers/qi {- };- racket = callPackage ../development/interpreters/racket {- };- rakudo = callPackage ../development/interpreters/rakudo {- };- rascal = callPackage ../development/interpreters/rascal {- };- regina = callPackage ../development/interpreters/regina {- };- renpy = callPackage ../development/interpreters/renpy {- wrapPython = pythonPackages.wrapPython;- };- ruby18 = callPackage ../development/interpreters/ruby/ruby-18.nix {- };- ruby19 = callPackage ../development/interpreters/ruby/ruby-19.nix {- };- ruby2 = lowPrio (callPackage ../development/interpreters/ruby/ruby-2.0.nix {- });- ruby = ruby19;- rubyLibs = recurseIntoAttrs (callPackage ../development/interpreters/ruby/libs.nix {- });- rake = rubyLibs.rake;- rubySqlite3 = callPackage ../development/ruby-modules/sqlite3 {- };- rubygemsFun = ruby:- builderDefsPackage (import ../development/interpreters/ruby/rubygems.nix) {- inherit ruby makeWrapper;- };- rubygems = hiPrio (rubygemsFun ruby);- rq = callPackage ../applications/networking/cluster/rq {- };- scsh = callPackage ../development/interpreters/scsh {- };- scheme48 = callPackage ../development/interpreters/scheme48 {- };- spark = callPackage ../applications/networking/cluster/spark {- };- spidermonkey = callPackage ../development/interpreters/spidermonkey {- };- spidermonkey_1_8_0rc1 = callPackage ../development/interpreters/spidermonkey/1.8.0-rc1.nix {- };- spidermonkey_185 = callPackage ../development/interpreters/spidermonkey/185-1.0.0.nix {- };- spidermonkey_17 = callPackage ../development/interpreters/spidermonkey/17.0.nix {- };- spidermonkey_24 = callPackage ../development/interpreters/spidermonkey/24.2.nix {- };- supercollider = callPackage ../development/interpreters/supercollider {- qt = qt4;- fftw = fftwSinglePrec;- };- supercollider_scel = supercollider.override {- useSCEL = true;- };- sysPerl = callPackage ../development/interpreters/perl/sys-perl {- };- tcl = callPackage ../development/interpreters/tcl {- };- xulrunner = callPackage ../development/interpreters/xulrunner {- inherit (gnome) libIDL;- inherit (pythonPackages) pysqlite;- };- xulrunner_30 = firefox30Pkgs.xulrunner;- amdadlsdk = callPackage ../development/misc/amdadl-sdk {- };- amdappsdk26 = callPackage ../development/misc/amdapp-sdk {- version = "2.6";- };- amdappsdk27 = callPackage ../development/misc/amdapp-sdk {- version = "2.7";- };- amdappsdk28 = callPackage ../development/misc/amdapp-sdk {- version = "2.8";- };- amdappsdk = amdappsdk28;- amdappsdkFull = callPackage ../development/misc/amdapp-sdk {- version = "2.8";- samples = true;- };- avrgcclibc = callPackage ../development/misc/avr-gcc-with-avr-libc {- gcc = gcc46;- stdenv = overrideGCC stdenv gcc46;- };- avr8burnomat = callPackage ../development/misc/avr8-burn-omat {- };- sourceFromHead = import ../build-support/source-from-head-fun.nix {- inherit config;- };- ecj = callPackage ../development/eclipse/ecj {- };- jdtsdk = callPackage ../development/eclipse/jdt-sdk {- };- jruby165 = callPackage ../development/interpreters/jruby {- };- guileCairo = callPackage ../development/guile-modules/guile-cairo {- };- guileGnome = callPackage ../development/guile-modules/guile-gnome {- gconf = gnome.GConf;- inherit (gnome) gnome_vfs- libglade libgnome libgnomecanvas- libgnomeui;- };- guile_lib = callPackage ../development/guile-modules/guile-lib {- };- guile_ncurses = callPackage ../development/guile-modules/guile-ncurses {- };- guile-xcb = callPackage ../development/guile-modules/guile-xcb {- };- pharo-vm = callPackage_i686 ../development/pharo/vm {- };- srecord = callPackage ../development/tools/misc/srecord {- };- windowssdk = import ../development/misc/windows-sdk {- inherit fetchurl stdenv- cabextract;- };- ansible = callPackage ../tools/system/ansible {- };- antlr = callPackage ../development/tools/parsing/antlr/2.7.7.nix {- };- antlr3 = callPackage ../development/tools/parsing/antlr {- };- ant = apacheAnt;- apacheAnt = callPackage ../development/tools/build-managers/apache-ant {- };- astyle = callPackage ../development/tools/misc/astyle {- };- autobuild = callPackage ../development/tools/misc/autobuild {- };- autoconf = callPackage ../development/tools/misc/autoconf {- };- autoconf213 = callPackage ../development/tools/misc/autoconf/2.13.nix {- };- autocutsel = callPackage ../tools/X11/autocutsel {- };- automake = automake112x;- automake111x = callPackage ../development/tools/misc/automake/automake-1.11.x.nix {- };- automake112x = callPackage ../development/tools/misc/automake/automake-1.12.x.nix {- };- automake113x = callPackage ../development/tools/misc/automake/automake-1.13.x.nix {- };- automake114x = callPackage ../development/tools/misc/automake/automake-1.14.x.nix {- };- automoc4 = callPackage ../development/tools/misc/automoc4 {- };- avrdude = callPackage ../development/tools/misc/avrdude {- };- avarice = callPackage ../development/tools/misc/avarice {- };- babeltrace = callPackage ../development/tools/misc/babeltrace {- };- bam = callPackage ../development/tools/build-managers/bam {- };- binutils = callPackage ../development/tools/misc/binutils {- inherit noSysDirs;- };- binutils_nogold = lowPrio (callPackage ../development/tools/misc/binutils {- inherit noSysDirs;- gold = false;- });- binutilsCross = if crossSystem != null && crossSystem.libc == "libSystem"- then darwin.cctools- else lowPrio (forceNativeDrv (import ../development/tools/misc/binutils {- inherit stdenv fetchurl zlib- bison;- noSysDirs = true;- cross = assert crossSystem != null; crossSystem;- }));- bison2 = callPackage ../development/tools/parsing/bison/2.x.nix {- };- bison3 = callPackage ../development/tools/parsing/bison/3.x.nix {- };- bison = bison3;- buildbot = callPackage ../development/tools/build-managers/buildbot {- inherit (pythonPackages) twisted- jinja2 sqlalchemy- sqlalchemy_migrate;- dateutil = pythonPackages.dateutil_1_5;- };- buildbotSlave = callPackage ../development/tools/build-managers/buildbot-slave {- inherit (pythonPackages) twisted;- };- byacc = callPackage ../development/tools/parsing/byacc {- };- casperjs = callPackage ../development/tools/casperjs {- };- cbrowser = callPackage ../development/tools/misc/cbrowser {- };- ccache = callPackage ../development/tools/misc/ccache {- };- ccacheWrapper = makeOverridable ({ extraConfig ? "" }:- wrapGCC (ccache.links extraConfig)) {- };- ccacheStdenv = lowPrio (overrideGCC stdenv ccacheWrapper);- cccc = callPackage ../development/tools/analysis/cccc {- };- cgdb = callPackage ../development/tools/misc/cgdb {- };- chromedriver = callPackage ../development/tools/selenium/chromedriver {- gconf = gnome.GConf;- };- chrpath = callPackage ../development/tools/misc/chrpath {- };- "cl-launch" = callPackage ../development/tools/misc/cl-launch {- };- complexity = callPackage ../development/tools/misc/complexity {- };- ctags = callPackage ../development/tools/misc/ctags {- };- ctagsWrapped = import ../development/tools/misc/ctags/wrapped.nix {- inherit pkgs ctags- writeScriptBin;- };- cmake = callPackage ../development/tools/build-managers/cmake {- };- cmake264 = callPackage ../development/tools/build-managers/cmake/264.nix {- };- cmakeCurses = cmake.override {- useNcurses = true;- };- cmakeWithGui = cmakeCurses.override {- useQt4 = true;- };- coccinelle = callPackage ../development/tools/misc/coccinelle {- };- framac = callPackage ../development/tools/analysis/frama-c {- };- cppi = callPackage ../development/tools/misc/cppi {- };- cproto = callPackage ../development/tools/misc/cproto {- };- cflow = callPackage ../development/tools/misc/cflow {- };- cov-build = callPackage ../development/tools/analysis/cov-build {- };- cppcheck = callPackage ../development/tools/analysis/cppcheck {- };- cscope = callPackage ../development/tools/misc/cscope {- };- csslint = callPackage ../development/web/csslint {- };- libcxx = callPackage ../development/libraries/libc++ {- stdenv = pkgs.clangStdenv;- };- libcxxabi = callPackage ../development/libraries/libc++abi {- stdenv = pkgs.clangStdenv;- };- libsigrok = callPackage ../development/tools/libsigrok {- };- libsigrokdecode = callPackage ../development/tools/libsigrokdecode {- };- dejagnu = callPackage ../development/tools/misc/dejagnu {- };- dfeet = callPackage ../development/tools/misc/d-feet {- inherit (pythonPackages) pep8;- };- dfu-programmer = callPackage ../development/tools/misc/dfu-programmer {- };- ddd = callPackage ../development/tools/misc/ddd {- };- distcc = callPackage ../development/tools/misc/distcc {- };- distccWrapper = makeOverridable ({ extraConfig ? "" }:- wrapGCC (distcc.links extraConfig)) {- };- distccStdenv = lowPrio (overrideGCC stdenv distccWrapper);- distccMasquerade = callPackage ../development/tools/misc/distcc/masq.nix {- gccRaw = gcc.gcc;- binutils = binutils;- };- docutils = builderDefsPackage (import ../development/tools/documentation/docutils) {- inherit python pil makeWrapper;- };- doxygen = callPackage ../development/tools/documentation/doxygen {- qt4 = null;- };- doxygen_gui = lowPrio (doxygen.override {- inherit qt4;- });- drush = callPackage ../development/tools/misc/drush {- };- eggdbus = callPackage ../development/tools/misc/eggdbus {- };- elfutils = callPackage ../development/tools/misc/elfutils {- };- epm = callPackage ../development/tools/misc/epm {- };- emma = callPackage ../development/tools/analysis/emma {- };- findbugs = callPackage ../development/tools/analysis/findbugs {- };- pmd = callPackage ../development/tools/analysis/pmd {- };- jdepend = callPackage ../development/tools/analysis/jdepend {- };- checkstyle = callPackage ../development/tools/analysis/checkstyle {- };- flex_2_5_35 = callPackage ../development/tools/parsing/flex/2.5.35.nix {- };- flex_2_5_39 = callPackage ../development/tools/parsing/flex/2.5.39.nix {- };- flex = flex_2_5_39;- m4 = gnum4;- global = callPackage ../development/tools/misc/global {- };- gnome_doc_utils = callPackage ../development/tools/documentation/gnome-doc-utils {- };- gnum4 = callPackage ../development/tools/misc/gnum4 {- };- gnumake380 = callPackage ../development/tools/build-managers/gnumake/3.80 {- };- gnumake381 = callPackage ../development/tools/build-managers/gnumake/3.81 {- };- gnumake382 = callPackage ../development/tools/build-managers/gnumake/3.82 {- };- gnumake40 = callPackage ../development/tools/build-managers/gnumake/4.0 {- };- gnumake = gnumake382;- gob2 = callPackage ../development/tools/misc/gob2 {- };- gradle = callPackage ../development/tools/build-managers/gradle {- };- gperf = callPackage ../development/tools/misc/gperf {- };- gtk_doc = callPackage ../development/tools/documentation/gtk-doc {- };- gtkdialog = callPackage ../development/tools/misc/gtkdialog {- };- guileLint = callPackage ../development/tools/guile/guile-lint {- };- gwrap = callPackage ../development/tools/guile/g-wrap {- };- help2man = callPackage ../development/tools/misc/help2man {- inherit (perlPackages) LocaleGettext;- };- hyenae = callPackage ../tools/networking/hyenae {- };- ibus = callPackage ../development/libraries/ibus {- };- iconnamingutils = callPackage ../development/tools/misc/icon-naming-utils {- inherit (perlPackages) XMLSimple;- };- indent = callPackage ../development/tools/misc/indent {- };- ino = callPackage ../development/arduino/ino {- };- inotifyTools = callPackage ../development/tools/misc/inotify-tools {- };- intel-gpu-tools = callPackage ../development/tools/misc/intel-gpu-tools {- inherit (xorg) libpciaccess- dri2proto libX11 libXext libXv- libXrandr;- };- ired = callPackage ../development/tools/analysis/radare/ired.nix {- };- itstool = callPackage ../development/tools/misc/itstool {- };- jam = callPackage ../development/tools/build-managers/jam {- };- jikespg = callPackage ../development/tools/parsing/jikespg {- };- jenkins = callPackage ../development/tools/continuous-integration/jenkins {- };- lcov = callPackage ../development/tools/analysis/lcov {- };- leiningen = callPackage ../development/tools/build-managers/leiningen {- };- libtool = libtool_2;- libtool_1_5 = callPackage ../development/tools/misc/libtool {- };- libtool_2 = callPackage ../development/tools/misc/libtool/libtool2.nix {- };- lsof = callPackage ../development/tools/misc/lsof {- };- ltrace = callPackage ../development/tools/misc/ltrace {- };- lttng-tools = callPackage ../development/tools/misc/lttng-tools {- };- lttng-ust = callPackage ../development/tools/misc/lttng-ust {- };- lttv = callPackage ../development/tools/misc/lttv {- };- mk = callPackage ../development/tools/build-managers/mk {- };- neoload = callPackage ../development/tools/neoload {- licenseAccepted = config.neoload.accept_license or false;- };- ninja = callPackage ../development/tools/build-managers/ninja {- };- nixbang = callPackage ../development/tools/misc/nixbang {- pythonPackages = python3Packages;- };- node_webkit = callPackage ../development/tools/node-webkit {- gconf = pkgs.gnome.GConf;- };- noweb = callPackage ../development/tools/literate-programming/noweb {- };- omake = callPackage ../development/tools/ocaml/omake {- };- omake_rc1 = callPackage ../development/tools/ocaml/omake/0.9.8.6-rc1.nix {- };- opengrok = callPackage ../development/tools/misc/opengrok {- };- openocd = callPackage ../development/tools/misc/openocd {- };- oprofile = callPackage ../development/tools/profiling/oprofile {- };- patchelf = callPackage ../development/tools/misc/patchelf {- };- peg = callPackage ../development/tools/parsing/peg {- };- phantomjs = callPackage ../development/tools/phantomjs {- stdenv = if stdenv.isDarwin- then overrideGCC stdenv gccApple- else stdenv;- };- pmccabe = callPackage ../development/tools/misc/pmccabe {- };- pkgconfig = forceNativeDrv (callPackage ../development/tools/misc/pkgconfig {- });- pkgconfigUpstream = lowPrio (pkgconfig.override {- vanilla = true;- });- prelink = callPackage ../development/tools/misc/prelink {- };- premake3 = callPackage ../development/tools/misc/premake/3.nix {- };- premake4 = callPackage ../development/tools/misc/premake {- };- premake = premake4;- pstack = callPackage ../development/tools/misc/gdb/pstack.nix {- };- radare = callPackage ../development/tools/analysis/radare {- inherit (gnome) vte;- lua = lua5;- useX11 = config.radare.useX11 or false;- pythonBindings = config.radare.pythonBindings or false;- rubyBindings = config.radare.rubyBindings or false;- luaBindings = config.radare.luaBindings or false;- };- ragel = callPackage ../development/tools/parsing/ragel {- };- re2c = callPackage ../development/tools/parsing/re2c {- };- remake = callPackage ../development/tools/build-managers/remake {- };- saleae-logic = callPackage ../development/tools/misc/saleae-logic {- };- seleniumRCBin = callPackage ../development/tools/selenium/remote-control {- jre = jdk;- };- selenium-server-standalone = callPackage ../development/tools/selenium/server {- };- scons = callPackage ../development/tools/build-managers/scons {- };- simpleBuildTool = callPackage ../development/tools/build-managers/simple-build-tool {- };- sigrok-cli = callPackage ../development/tools/sigrok-cli {- };- slimerjs = callPackage ../development/tools/slimerjs {- };- sloccount = callPackage ../development/tools/misc/sloccount {- };- smatch = callPackage ../development/tools/analysis/smatch {- buildllvmsparse = false;- buildc2xml = false;- };- smc = callPackage ../tools/misc/smc {- };- sparse = callPackage ../development/tools/analysis/sparse {- };- speedtest_cli = callPackage ../tools/networking/speedtest-cli {- };- spin = callPackage ../development/tools/analysis/spin {- };- splint = callPackage ../development/tools/analysis/splint {- flex = flex_2_5_35;- };- stm32flash = callPackage ../development/tools/misc/stm32flash {- };- strace = callPackage ../development/tools/misc/strace {- };- swig = callPackage ../development/tools/misc/swig {- };- swig2 = callPackage ../development/tools/misc/swig/2.x.nix {- };- swig3 = callPackage ../development/tools/misc/swig/3.x.nix {- };- swigWithJava = swig;- swfmill = callPackage ../tools/video/swfmill {- };- swftools = callPackage ../tools/video/swftools {- };- tcptrack = callPackage ../development/tools/misc/tcptrack {- };- teensy-loader = callPackage ../development/tools/misc/teensy {- };- texinfo413 = callPackage ../development/tools/misc/texinfo/4.13a.nix {- };- texinfo5 = callPackage ../development/tools/misc/texinfo/5.2.nix {- };- texinfo4 = texinfo413;- texinfo = texinfo5;- texinfoInteractive = appendToName "interactive" (texinfo.override {- interactive = true;- });- texi2html = callPackage ../development/tools/misc/texi2html {- };- uhd = callPackage ../development/tools/misc/uhd {- };- uisp = callPackage ../development/tools/misc/uisp {- };- uncrustify = callPackage ../development/tools/misc/uncrustify {- };- vagrant = callPackage ../development/tools/vagrant {- ruby = ruby2;- };- gdb = callPackage ../development/tools/misc/gdb {- hurd = gnu.hurdCross;- readline = readline63;- inherit (gnu) mig;- };- gdbCross = lowPrio (callPackage ../development/tools/misc/gdb {- target = crossSystem;- });- valgrind = callPackage ../development/tools/analysis/valgrind {- stdenv = if stdenv.isDarwin- then overrideGCC stdenv gccApple- else stdenv;- };- valkyrie = callPackage ../development/tools/analysis/valkyrie {- };- xc3sprog = callPackage ../development/tools/misc/xc3sprog {- };- xmlindent = callPackage ../development/web/xmlindent {- };- xpwn = callPackage ../development/mobile/xpwn {- };- xxdiff = callPackage ../development/tools/misc/xxdiff {- bison = bison2;- };- yacc = bison;- yodl = callPackage ../development/tools/misc/yodl {- };- a52dec = callPackage ../development/libraries/a52dec {- };- aacskeys = callPackage ../development/libraries/aacskeys {- };- aalib = callPackage ../development/libraries/aalib {- };- accountsservice = callPackage ../development/libraries/accountsservice {- };- acl = callPackage ../development/libraries/acl {- };- activemq = callPackage ../development/libraries/apache-activemq {- };- adns = callPackage ../development/libraries/adns {- };- afflib = callPackage ../development/libraries/afflib {- };- agg = callPackage ../development/libraries/agg {- };- allegro = callPackage ../development/libraries/allegro {- };- allegro5 = callPackage ../development/libraries/allegro/5.nix {- };- allegro5unstable = callPackage ../development/libraries/allegro/5-unstable.nix {- };- amrnb = callPackage ../development/libraries/amrnb {- };- amrwb = callPackage ../development/libraries/amrwb {- };- apr = callPackage ../development/libraries/apr {- };- aprutil = callPackage ../development/libraries/apr-util {- bdbSupport = true;- };- asio = callPackage ../development/libraries/asio {- };- aspell = callPackage ../development/libraries/aspell {- };- aspellDicts = recurseIntoAttrs (import ../development/libraries/aspell/dictionaries.nix {- inherit fetchurl stdenv aspell- which;- });- aterm = aterm25;- aterm25 = callPackage ../development/libraries/aterm/2.5.nix {- };- aterm28 = lowPrio (callPackage ../development/libraries/aterm/2.8.nix {- });- attica = callPackage ../development/libraries/attica {- };- attr = callPackage ../development/libraries/attr {- };- at_spi2_core = callPackage ../development/libraries/at-spi2-core {- };- at_spi2_atk = callPackage ../development/libraries/at-spi2-atk {- };- aqbanking = callPackage ../development/libraries/aqbanking {- };- aubio = callPackage ../development/libraries/aubio {- };- audiofile = callPackage ../development/libraries/audiofile {- };- axis = callPackage ../development/libraries/axis {- };- babl_0_0_22 = callPackage ../development/libraries/babl/0_0_22.nix {- };- babl = callPackage ../development/libraries/babl {- };- beecrypt = callPackage ../development/libraries/beecrypt {- };- boehmgc = callPackage ../development/libraries/boehm-gc {- };- boolstuff = callPackage ../development/libraries/boolstuff {- };- boost144 = callPackage ../development/libraries/boost/1.44.nix {- };- boost149 = callPackage ../development/libraries/boost/1.49.nix {- };- boost155 = callPackage ../development/libraries/boost/1.55.nix {- };- boost = boost155;- boostHeaders = callPackage ../development/libraries/boost/header-only-wrapper.nix {- };- botan = callPackage ../development/libraries/botan {- };- botanUnstable = callPackage ../development/libraries/botan/unstable.nix {- };- box2d = callPackage ../development/libraries/box2d {- };- box2d_2_0_1 = callPackage ../development/libraries/box2d/2.0.1.nix {- };- buddy = callPackage ../development/libraries/buddy {- };- bwidget = callPackage ../development/libraries/bwidget {- };- c-ares = callPackage ../development/libraries/c-ares {- fetchurl = fetchurlBoot;- };- caelum = callPackage ../development/libraries/caelum {- };- capnproto = callPackage ../development/libraries/capnproto {- };- scmccid = callPackage ../development/libraries/scmccid {- };- ccrtp = callPackage ../development/libraries/ccrtp {- };- ccrtp_1_8 = callPackage ../development/libraries/ccrtp/1.8.nix {- };- celt = callPackage ../development/libraries/celt {- };- celt_0_7 = callPackage ../development/libraries/celt/0.7.nix {- };- celt_0_5_1 = callPackage ../development/libraries/celt/0.5.1.nix {- };- cgal = callPackage ../development/libraries/CGAL {- };- cgui = callPackage ../development/libraries/cgui {- };- check = callPackage ../development/libraries/check {- };- chipmunk = builderDefsPackage (import ../development/libraries/chipmunk) {- inherit cmake freeglut mesa;- inherit (xlibs) libX11 xproto- inputproto libXi libXmu;- };- chmlib = callPackage ../development/libraries/chmlib {- };- chromaprint = callPackage ../development/libraries/chromaprint {- };- cil = callPackage ../development/libraries/cil {- };- cilaterm = callPackage ../development/libraries/cil-aterm {- stdenv = overrideInStdenv stdenv [- gnumake380- ];- };- clanlib = callPackage ../development/libraries/clanlib {- };- classads = callPackage ../development/libraries/classads {- };- classpath = callPackage ../development/libraries/java/classpath {- javac = gcj;- jvm = gcj;- gconf = gnome.GConf;- };- clearsilver = callPackage ../development/libraries/clearsilver {- };- cln = callPackage ../development/libraries/cln {- };- clppcre = builderDefsPackage (import ../development/libraries/cl-ppcre) {- };- clucene_core_2 = callPackage ../development/libraries/clucene-core/2.x.nix {- };- clucene_core_1 = callPackage ../development/libraries/clucene-core {- };- clucene_core = clucene_core_1;- clutter = callPackage ../development/libraries/clutter {- };- clutter_1_18 = callPackage ../development/libraries/clutter/1.18.nix {- cogl = cogl_1_18;- };- clutter-gst = callPackage ../development/libraries/clutter-gst {- };- clutter_gtk = callPackage ../development/libraries/clutter-gtk {- };- clutter_gtk_0_10 = callPackage ../development/libraries/clutter-gtk/0.10.8.nix {- };- cminpack = callPackage ../development/libraries/cminpack {- };- cogl = callPackage ../development/libraries/cogl {- };- cogl_1_18 = callPackage ../development/libraries/cogl/1.18.nix {- };- coin3d = callPackage ../development/libraries/coin3d {- };- commoncpp2 = callPackage ../development/libraries/commoncpp2 {- };- confuse = callPackage ../development/libraries/confuse {- };- coredumper = callPackage ../development/libraries/coredumper {- };- ctl = callPackage ../development/libraries/ctl {- };- cpp-netlib = callPackage ../development/libraries/cpp-netlib {- };- cppunit = callPackage ../development/libraries/cppunit {- };- cppnetlib = callPackage ../development/libraries/cppnetlib {- boost = boostHeaders;- };- cracklib = callPackage ../development/libraries/cracklib {- };- cryptopp = callPackage ../development/libraries/crypto++ {- };- cyrus_sasl = callPackage ../development/libraries/cyrus-sasl {- };- db = db5;- db4 = db48;- db44 = callPackage ../development/libraries/db/db-4.4.nix {- };- db45 = callPackage ../development/libraries/db/db-4.5.nix {- };- db47 = callPackage ../development/libraries/db/db-4.7.nix {- };- db48 = callPackage ../development/libraries/db/db-4.8.nix {- };- db5 = db53;- db53 = callPackage ../development/libraries/db/db-5.3.nix {- };- db6 = db60;- db60 = callPackage ../development/libraries/db/db-6.0.nix {- };- dbus = callPackage ../development/libraries/dbus {- };- dbus_cplusplus = callPackage ../development/libraries/dbus-cplusplus {- };- dbus_glib = callPackage ../development/libraries/dbus-glib {- };- dbus_java = callPackage ../development/libraries/java/dbus-java {- };- dbus_python = callPackage ../development/python-modules/dbus {- };- dbus_tools = pkgs.dbus.tools;- dbus_libs = pkgs.dbus.libs;- dbus_daemon = pkgs.dbus.daemon;- dhex = callPackage ../applications/editors/dhex {- };- dclib = callPackage ../development/libraries/dclib {- };- dillo = callPackage ../applications/networking/browsers/dillo {- fltk = fltk13;- };- directfb = callPackage ../development/libraries/directfb {- };- dotconf = callPackage ../development/libraries/dotconf {- };- dssi = callPackage ../development/libraries/dssi {- };- dragonegg = llvmPackages.dragonegg;- dxflib = callPackage ../development/libraries/dxflib {- };- eigen = callPackage ../development/libraries/eigen {- };- eigen2 = callPackage ../development/libraries/eigen/2.0.nix {- };- enchant = callPackage ../development/libraries/enchant {- };- enet = callPackage ../development/libraries/enet {- };- enginepkcs11 = callPackage ../development/libraries/enginepkcs11 {- };- epoxy = callPackage ../development/libraries/epoxy {- inherit (xorg) utilmacros- libX11;- };- esdl = callPackage ../development/libraries/esdl {- };- exiv2 = callPackage ../development/libraries/exiv2 {- };- expat = callPackage ../development/libraries/expat {- };- extremetuxracer = builderDefsPackage (import ../games/extremetuxracer) {- inherit mesa tcl freeglut SDL- SDL_mixer pkgconfig gettext- intltool;- inherit (xlibs) libX11 xproto- libXi inputproto libXmu libXext- xextproto libXt libSM libICE;- libpng = libpng12;- };- eventlog = callPackage ../development/libraries/eventlog {- };- facile = callPackage ../development/libraries/facile {- };- faac = callPackage ../development/libraries/faac {- };- faad2 = callPackage ../development/libraries/faad2 {- };- farsight2 = callPackage ../development/libraries/farsight2 {- };- farstream = callPackage ../development/libraries/farstream {- inherit (gst_all_1) gstreamer- gst-plugins-base gst-python- gst-plugins-good gst-plugins-bad- gst-libav;- };- fcgi = callPackage ../development/libraries/fcgi {- };- ffmpeg_0_6 = callPackage ../development/libraries/ffmpeg/0.6.nix {- vpxSupport = !stdenv.isMips;- };- ffmpeg_0_6_90 = callPackage ../development/libraries/ffmpeg/0.6.90.nix {- vpxSupport = !stdenv.isMips;- };- ffmpeg_0_10 = callPackage ../development/libraries/ffmpeg/0.10.nix {- vpxSupport = !stdenv.isMips;- stdenv = if stdenv.isDarwin- then overrideGCC stdenv gccApple- else stdenv;- };- ffmpeg_1 = callPackage ../development/libraries/ffmpeg/1.x.nix {- vpxSupport = !stdenv.isMips;- };- ffmpeg_2 = callPackage ../development/libraries/ffmpeg/2.x.nix {- };- ffmpeg = ffmpeg_2;- ffms = callPackage ../development/libraries/ffms {- };- fftw = callPackage ../development/libraries/fftw {- };- fftwSinglePrec = fftw.override {- precision = "single";- };- fftwFloat = fftwSinglePrec;- flann = callPackage ../development/libraries/flann {- };- flite = callPackage ../development/libraries/flite {- };- fltk13 = callPackage ../development/libraries/fltk/fltk13.nix {- };- fltk20 = callPackage ../development/libraries/fltk {- };- fmod = callPackage ../development/libraries/fmod {- };- freeimage = callPackage ../development/libraries/freeimage {- };- freetts = callPackage ../development/libraries/freetts {- };- cfitsio = callPackage ../development/libraries/cfitsio {- };- fontconfig = callPackage ../development/libraries/fontconfig {- };- makeFontsConf = let- fontconfig_ = fontconfig;- in { fontDirectories, fontconfig ? fontconfig_ }:- import ../development/libraries/fontconfig/make-fonts-conf.nix {- inherit runCommand libxslt- fontconfig fontDirectories;- };- freealut = callPackage ../development/libraries/freealut {- };- freeglut = callPackage ../development/libraries/freeglut {- };- freetype = callPackage ../development/libraries/freetype {- };- frei0r = callPackage ../development/libraries/frei0r {- };- fribidi = callPackage ../development/libraries/fribidi {- };- funambol = callPackage ../development/libraries/funambol {- };- fam = gamin;- gamin = callPackage ../development/libraries/gamin {- };- ganv = callPackage ../development/libraries/ganv {- };- gav = callPackage ../games/gav {- };- gsb = callPackage ../games/gsb {- };- gdome2 = callPackage ../development/libraries/gdome2 {- inherit (gnome) gtkdoc;- };- gdbm = callPackage ../development/libraries/gdbm {- };- gegl = callPackage ../development/libraries/gegl {- };- gegl_0_0_22 = callPackage ../development/libraries/gegl/0_0_22.nix {- libpng = libpng12;- };- geoclue = callPackage ../development/libraries/geoclue {- };- geoclue2 = callPackage ../development/libraries/geoclue/2.0.nix {- };- geoip = callPackage ../development/libraries/geoip {- };- geoipjava = callPackage ../development/libraries/java/geoipjava {- };- geos = callPackage ../development/libraries/geos {- };- gettext = gettext_0_18;- gettext_0_17 = callPackage ../development/libraries/gettext/0.17.nix {- };- gettext_0_18 = callPackage ../development/libraries/gettext {- };- gd = callPackage ../development/libraries/gd {- };- gdal = callPackage ../development/libraries/gdal {- };- ggz_base_libs = callPackage ../development/libraries/ggz_base_libs {- };- giblib = callPackage ../development/libraries/giblib {- };- libgit2 = callPackage ../development/libraries/git2 {- };- glew = callPackage ../development/libraries/glew {- };- glfw = glfw3;- glfw2 = callPackage ../development/libraries/glfw/2.x.nix {- };- glfw3 = callPackage ../development/libraries/glfw/3.x.nix {- };- glibc = callPackage ../development/libraries/glibc/2.19 {- kernelHeaders = linuxHeaders;- installLocales = config.glibc.locales or false;- machHeaders = null;- hurdHeaders = null;- gccCross = null;- };- glibc_memusage = callPackage ../development/libraries/glibc/2.19 {- kernelHeaders = linuxHeaders;- installLocales = false;- withGd = true;- };- glibcCross = forceNativeDrv (makeOverridable (import ../development/libraries/glibc/2.19) (let- crossGNU = crossSystem != null && crossSystem.config == "i586-pc-gnu";- in {- inherit stdenv fetchurl;- gccCross = gccCrossStageStatic;- kernelHeaders = if crossGNU- then gnu.hurdHeaders- else linuxHeadersCross;- installLocales = config.glibc.locales or false;- } // lib.optionalAttrs crossGNU {- inherit (gnu) machHeaders- hurdHeaders libpthreadHeaders- mig;- inherit fetchgit;- }));- libcCrossChooser = name:- if name == "glibc"- then glibcCross- else if name == "uclibc"- then uclibcCross- else if name == "msvcrt"- then windows.mingw_w64- else if name == "libSystem"- then darwin.xcode- else throw "Unknown libc";- libcCross = assert crossSystem != null; libcCrossChooser crossSystem.libc;- eglibc = callPackage ../development/libraries/eglibc {- kernelHeaders = linuxHeaders;- installLocales = config.glibc.locales or false;- };- glibcLocales = callPackage ../development/libraries/glibc/2.19/locales.nix {- };- glibcInfo = callPackage ../development/libraries/glibc/2.19/info.nix {- };- glibc_multi = runCommand "${glibc.name}-multi" {- glibc64 = glibc;- glibc32 = (import ./all-packages.nix {- system = "i686-linux";- }).glibc;- } ''- mkdir -p ''$out- ln -s ''$glibc64/* ''$out/- - rm ''$out/lib ''$out/lib64- mkdir -p ''$out/lib- ln -s ''$glibc64/lib/* ''$out/lib- ln -s ''$glibc32/lib ''$out/lib/32- ln -s lib ''$out/lib64- - # fixing ldd RLTDLIST- rm ''$out/bin- cp -rs ''$glibc64/bin ''$out- chmod u+w ''$out/bin- rm ''$out/bin/ldd- sed -e "s|^RTLDLIST=.*''$|RTLDLIST=\"''$out/lib/ld-2.19.so ''$out/lib/32/ld-linux.so.2\"|g" \- ''$glibc64/bin/ldd > ''$out/bin/ldd- chmod 555 ''$out/bin/ldd- - rm ''$out/include- cp -rs ''$glibc32/include ''$out- chmod -R u+w ''$out/include- cp -rsf ''$glibc64/include ''$out- '';- glm = callPackage ../development/libraries/glm {- };- glog = callPackage ../development/libraries/glog {- };- gloox = callPackage ../development/libraries/gloox {- };- glpk = callPackage ../development/libraries/glpk {- };- glsurf = callPackage ../applications/science/math/glsurf {- inherit (ocamlPackages) lablgl- findlib camlimages ocaml_mysql- mlgmp;- libpng = libpng12;- giflib = giflib_4_1;- };- gmime = callPackage ../development/libraries/gmime {- };- gmm = callPackage ../development/libraries/gmm {- };- gmp = gmp5;- gmp5 = gmp51;- gmpxx = appendToName "with-cxx" (gmp.override {- cxx = true;- });- gmp4 = callPackage ../development/libraries/gmp/4.3.2.nix {- };- gmp51 = callPackage ../development/libraries/gmp/5.1.x.nix {- };- mpfr = callPackage ../development/libraries/mpfr/default.nix {- };- gobjectIntrospection = callPackage ../development/libraries/gobject-introspection {- };- goocanvas = callPackage ../development/libraries/goocanvas {- };- google-gflags = callPackage ../development/libraries/google-gflags {- };- gperftools = callPackage ../development/libraries/gperftools {- };- gst_all_1 = recurseIntoAttrs (callPackage ../development/libraries/gstreamer {- callPackage = pkgs.newScope (pkgs // {- libav = pkgs.libav_10;- });- });- gst_all = {- inherit (pkgs) gstreamer gnonlin- gst_python qt_gstreamer;- gstPluginsBase = pkgs.gst_plugins_base;- gstPluginsBad = pkgs.gst_plugins_bad;- gstPluginsGood = pkgs.gst_plugins_good;- gstPluginsUgly = pkgs.gst_plugins_ugly;- gstFfmpeg = pkgs.gst_ffmpeg;- };- gstreamer = callPackage ../development/libraries/gstreamer/legacy/gstreamer {- bison = bison2;- };- gst_plugins_base = callPackage ../development/libraries/gstreamer/legacy/gst-plugins-base {- };- gst_plugins_good = callPackage ../development/libraries/gstreamer/legacy/gst-plugins-good {- };- gst_plugins_bad = callPackage ../development/libraries/gstreamer/legacy/gst-plugins-bad {- };- gst_plugins_ugly = callPackage ../development/libraries/gstreamer/legacy/gst-plugins-ugly {- };- gst_ffmpeg = callPackage ../development/libraries/gstreamer/legacy/gst-ffmpeg {- ffmpeg = ffmpeg_0_10;- };- gst_python = callPackage ../development/libraries/gstreamer/legacy/gst-python {- };- gstreamermm = callPackage ../development/libraries/gstreamer/legacy/gstreamermm {- };- gnonlin = callPackage ../development/libraries/gstreamer/legacy/gnonlin {- };- gusb = callPackage ../development/libraries/gusb {- inherit (gnome) gtkdoc;- };- qt_gstreamer = callPackage ../development/libraries/gstreamer/legacy/qt-gstreamer {- };- gnet = callPackage ../development/libraries/gnet {- };- gnu-efi = callPackage ../development/libraries/gnu-efi {- };- gnutls = gnutls32;- gnutls31 = callPackage ../development/libraries/gnutls/3.1.nix {- guileBindings = config.gnutls.guile or false;- };- gnutls32 = callPackage ../development/libraries/gnutls/3.2.nix {- guileBindings = config.gnutls.guile or false;- };- gnutls_with_guile = lowPrio (gnutls.override {- guileBindings = true;- });- gpac = callPackage ../applications/video/gpac {- };- gpgme = callPackage ../development/libraries/gpgme {- gnupg1 = gnupg1orig;- };- grantlee = callPackage ../development/libraries/grantlee {- };- gsasl = callPackage ../development/libraries/gsasl {- };- gsl = callPackage ../development/libraries/gsl {- };- gsm = callPackage ../development/libraries/gsm {- };- gsoap = callPackage ../development/libraries/gsoap {- };- gss = callPackage ../development/libraries/gss {- };- gtkimageview = callPackage ../development/libraries/gtkimageview {- };- gtkmathview = callPackage ../development/libraries/gtkmathview {- };- gtkLibs = {- inherit (pkgs) glib glibmm atk- atkmm cairo pango pangomm- gdk_pixbuf gtk gtkmm;- };- glib = callPackage ../development/libraries/glib {- };- glib-tested = glib.override {- doCheck = true;- };- glibmm = callPackage ../development/libraries/glibmm {- };- glib_networking = callPackage ../development/libraries/glib-networking {- };- atk = callPackage ../development/libraries/atk {- };- atkmm = callPackage ../development/libraries/atkmm {- };- pixman = callPackage ../development/libraries/pixman {- };- cairo = callPackage ../development/libraries/cairo {- glSupport = config.cairo.gl or stdenv.isLinux && !stdenv.isArm && !stdenv.isMips;- };- cairomm = callPackage ../development/libraries/cairomm {- };- pango = callPackage ../development/libraries/pango {- };- pangomm = callPackage ../development/libraries/pangomm {- };- pangox_compat = callPackage ../development/libraries/pangox-compat {- };- gdk_pixbuf = callPackage ../development/libraries/gdk-pixbuf {- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };- gtk2 = callPackage ../development/libraries/gtk+/2.x.nix {- cupsSupport = config.gtk2.cups or stdenv.isLinux;- };- gtk3 = callPackage ../development/libraries/gtk+/3.x.nix {- };- gtk = pkgs.gtk2;- gtkmm = callPackage ../development/libraries/gtkmm/2.x.nix {- };- gtkmm3 = callPackage ../development/libraries/gtkmm/3.x.nix {- };- gtkmozembedsharp = callPackage ../development/libraries/gtkmozembed-sharp {- gtksharp = gtksharp2;- };- gtksharp1 = callPackage ../development/libraries/gtk-sharp-1 {- inherit (gnome) libglade- libgtkhtml gtkhtml- libgnomecanvas libgnomeui- libgnomeprint libgnomeprintui- GConf;- };- gtksharp2 = callPackage ../development/libraries/gtk-sharp-2 {- inherit (gnome) libglade- libgtkhtml gtkhtml- libgnomecanvas libgnomeui- libgnomeprint libgnomeprintui- GConf gnomepanel;- };- gtksourceviewsharp = callPackage ../development/libraries/gtksourceview-sharp {- inherit (gnome) gtksourceview;- gtksharp = gtksharp2;- };- gtkspell = callPackage ../development/libraries/gtkspell {- };- gtkspell3 = callPackage ../development/libraries/gtkspell/3.nix {- };- gts = callPackage ../development/libraries/gts {- };- gvfs = callPackage ../development/libraries/gvfs {- gconf = gnome.GConf;- };- gwenhywfar = callPackage ../development/libraries/gwenhywfar {- };- hamlib = callPackage ../development/libraries/hamlib {- };- kerberos = heimdal;- heimdal = callPackage ../development/libraries/kerberos/heimdal.nix {- };- harfbuzz = callPackage ../development/libraries/harfbuzz {- };- hawknl = callPackage ../development/libraries/hawknl {- };- herqq = callPackage ../development/libraries/herqq {- };- hspell = callPackage ../development/libraries/hspell {- };- hspellDicts = callPackage ../development/libraries/hspell/dicts.nix {- };- hsqldb = callPackage ../development/libraries/java/hsqldb {- };- http-parser = callPackage ../development/libraries/http-parser {- inherit (pythonPackages) gyp;- };- hunspell = callPackage ../development/libraries/hunspell {- };- hwloc = callPackage ../development/libraries/hwloc {- inherit (xlibs) libX11;- };- hydraAntLogger = callPackage ../development/libraries/java/hydra-ant-logger {- };- icu = callPackage ../development/libraries/icu {- };- id3lib = callPackage ../development/libraries/id3lib {- };- iksemel = callPackage ../development/libraries/iksemel {- };- ilbc = callPackage ../development/libraries/ilbc {- };- ilixi = callPackage ../development/libraries/ilixi {- };- ilmbase = callPackage ../development/libraries/ilmbase {- };- imlib = callPackage ../development/libraries/imlib {- libpng = libpng12;- };- imlib2 = callPackage ../development/libraries/imlib2 {- };- incrtcl = callPackage ../development/libraries/incrtcl {- };- indilib = callPackage ../development/libraries/indilib {- };- iniparser = callPackage ../development/libraries/iniparser {- };- intltool = callPackage ../development/tools/misc/intltool {- };- irrlicht3843 = callPackage ../development/libraries/irrlicht {- };- isocodes = callPackage ../development/libraries/iso-codes {- };- itk = callPackage ../development/libraries/itk {- };- jamp = builderDefsPackage ../games/jamp {- inherit mesa SDL SDL_image- SDL_mixer;- };- jasper = callPackage ../development/libraries/jasper {- };- jama = callPackage ../development/libraries/jama {- };- jansson = callPackage ../development/libraries/jansson {- };- jbig2dec = callPackage ../development/libraries/jbig2dec {- };- jetty_gwt = callPackage ../development/libraries/java/jetty-gwt {- };- jetty_util = callPackage ../development/libraries/java/jetty-util {- };- json_glib = callPackage ../development/libraries/json-glib {- };- json-c-0-11 = callPackage ../development/libraries/json-c/0.11.nix {- };- json_c = callPackage ../development/libraries/json-c {- };- jsoncpp = callPackage ../development/libraries/jsoncpp {- };- libjson = callPackage ../development/libraries/libjson {- };- judy = callPackage ../development/libraries/judy {- };- keybinder = callPackage ../development/libraries/keybinder {- automake = automake111x;- lua = lua5_1;- };- keybinder3 = callPackage ../development/libraries/keybinder3 {- automake = automake111x;- lua = lua5_1;- };- krb5 = callPackage ../development/libraries/kerberos/krb5.nix {- };- lcms = lcms1;- lcms1 = callPackage ../development/libraries/lcms {- };- lcms2 = callPackage ../development/libraries/lcms2 {- };- lensfun = callPackage ../development/libraries/lensfun {- };- lesstif = callPackage ../development/libraries/lesstif {- };- lesstif93 = callPackage ../development/libraries/lesstif-0.93 {- };- leveldb = callPackage ../development/libraries/leveldb {- };- levmar = callPackage ../development/libraries/levmar {- };- leptonica = callPackage ../development/libraries/leptonica {- libpng = libpng12;- };- lgi = callPackage ../development/libraries/lgi {- lua = lua5_1;- };- lib3ds = callPackage ../development/libraries/lib3ds {- };- libaacs = callPackage ../development/libraries/libaacs {- };- libaal = callPackage ../development/libraries/libaal {- };- libao = callPackage ../development/libraries/libao {- usePulseAudio = config.pulseaudio or true;- };- libarchive = callPackage ../development/libraries/libarchive {- };- libass = callPackage ../development/libraries/libass {- };- libassuan1 = callPackage ../development/libraries/libassuan1 {- };- libassuan = callPackage ../development/libraries/libassuan {- };- libassuan2_1 = callPackage ../development/libraries/libassuan/git.nix {- };- libatomic_ops = callPackage ../development/libraries/libatomic_ops {- };- libav = libav_10;- libav_all = callPackage ../development/libraries/libav {- };- inherit (libav_all) libav_0_8- libav_9 libav_10;- libavc1394 = callPackage ../development/libraries/libavc1394 {- };- libbluedevil = callPackage ../development/libraries/libbluedevil {- };- libbluray = callPackage ../development/libraries/libbluray {- };- libbs2b = callPackage ../development/libraries/audio/libbs2b {- };- libcaca = callPackage ../development/libraries/libcaca {- };- libcanberra = callPackage ../development/libraries/libcanberra {- };- libcanberra_gtk3 = libcanberra.override {- gtk = gtk3;- };- libcanberra_kde = if config.kde_runtime.libcanberraWithoutGTK or true- then libcanberra.override {- gtk = null;- }- else libcanberra;- libcello = callPackage ../development/libraries/libcello {- };- libcdaudio = callPackage ../development/libraries/libcdaudio {- };- libcddb = callPackage ../development/libraries/libcddb {- };- libcdio = callPackage ../development/libraries/libcdio {- };- libcdio082 = callPackage ../development/libraries/libcdio/0.82.nix {- };- libcdr = callPackage ../development/libraries/libcdr {- lcms = lcms2;- };- libchamplain = callPackage ../development/libraries/libchamplain {- inherit (gnome) libsoup;- };- libchamplain_0_6 = callPackage ../development/libraries/libchamplain/0.6.nix {- };- libchop = callPackage ../development/libraries/libchop {- };- libcm = callPackage ../development/libraries/libcm {- };- inherit (gnome3) libcroco;- libcangjie = callPackage ../development/libraries/libcangjie {- };- libcredis = callPackage ../development/libraries/libcredis {- };- libctemplate = callPackage ../development/libraries/libctemplate {- };- libcue = callPackage ../development/libraries/libcue {- };- libdaemon = callPackage ../development/libraries/libdaemon {- };- libdbi = callPackage ../development/libraries/libdbi {- };- libdbiDriversBase = callPackage ../development/libraries/libdbi-drivers {- mysql = null;- sqlite = null;- };- libdbiDrivers = libdbiDriversBase.override {- inherit sqlite mysql;- };- libdbusmenu_qt = callPackage ../development/libraries/libdbusmenu-qt {- };- libdc1394 = callPackage ../development/libraries/libdc1394 {- };- libdc1394avt = callPackage ../development/libraries/libdc1394avt {- };- libdevil = callPackage ../development/libraries/libdevil {- };- libdiscid = callPackage ../development/libraries/libdiscid {- };- libdivsufsort = callPackage ../development/libraries/libdivsufsort {- };- libdmtx = callPackage ../development/libraries/libdmtx {- };- libdnet = callPackage ../development/libraries/libdnet {- };- libdrm = callPackage ../development/libraries/libdrm {- inherit fetchurl stdenv- pkgconfig;- inherit (xorg) libpthreadstubs;- };- libdv = callPackage ../development/libraries/libdv {- };- libdvbpsi = callPackage ../development/libraries/libdvbpsi {- };- libdwg = callPackage ../development/libraries/libdwg {- };- libdvdcss = callPackage ../development/libraries/libdvdcss {- };- libdvdnav = callPackage ../development/libraries/libdvdnav {- };- libdvdread = callPackage ../development/libraries/libdvdread {- };- libdwarf = callPackage ../development/libraries/libdwarf {- };- libeatmydata = callPackage ../development/libraries/libeatmydata {- };- libebml = callPackage ../development/libraries/libebml {- };- libedit = callPackage ../development/libraries/libedit {- };- libelf = callPackage ../development/libraries/libelf {- };- libfm = callPackage ../development/libraries/libfm {- };- libgadu = callPackage ../development/libraries/libgadu {- };- libgdata = gnome3.libgdata;- libgig = callPackage ../development/libraries/libgig {- };- libgnome_keyring = callPackage ../development/libraries/libgnome-keyring {- };- libgnome_keyring3 = gnome3.libgnome_keyring;- libgnurl = callPackage ../development/libraries/libgnurl {- };- libseccomp = callPackage ../development/libraries/libseccomp {- };- libsecret = callPackage ../development/libraries/libsecret {- };- libserialport = callPackage ../development/libraries/libserialport {- };- libgtop = callPackage ../development/libraries/libgtop {- };- liblo = callPackage ../development/libraries/liblo {- };- liblrdf = librdf;- liblscp = callPackage ../development/libraries/liblscp {- };- libe-book = callPackage ../development/libraries/libe-book {- };- libe-book_00 = callPackage ../development/libraries/libe-book/0.0.nix {- };- libev = builderDefsPackage ../development/libraries/libev {- };- libevent14 = callPackage ../development/libraries/libevent/1.4.nix {- };- libevent = callPackage ../development/libraries/libevent {- };- libewf = callPackage ../development/libraries/libewf {- };- libexif = callPackage ../development/libraries/libexif {- };- libexosip = callPackage ../development/libraries/exosip {- };- libexosip_3 = callPackage ../development/libraries/exosip/3.x.nix {- libosip = libosip_3;- };- libextractor = callPackage ../development/libraries/libextractor {- libmpeg2 = mpeg2dec;- };- libexttextcat = callPackage ../development/libraries/libexttextcat {- };- libf2c = callPackage ../development/libraries/libf2c {- };- libfixposix = callPackage ../development/libraries/libfixposix {- };- libffcall = builderDefsPackage (import ../development/libraries/libffcall) {- inherit fetchcvs;- };- libffi = callPackage ../development/libraries/libffi {- };- libftdi = callPackage ../development/libraries/libftdi {- };- libftdi1 = callPackage ../development/libraries/libftdi/1.x.nix {- };- libgcrypt = callPackage ../development/libraries/libgcrypt {- };- libgcrypt_1_6 = lowPrio (callPackage ../development/libraries/libgcrypt/1.6.nix {- });- libgdiplus = callPackage ../development/libraries/libgdiplus {- };- libgksu = callPackage ../development/libraries/libgksu {- };- libgpgerror = callPackage ../development/libraries/libgpg-error {- };- libgphoto2 = callPackage ../development/libraries/libgphoto2 {- };- libgphoto2_4 = callPackage ../development/libraries/libgphoto2/2.4.nix {- };- libgpod = callPackage ../development/libraries/libgpod {- inherit (pkgs.pythonPackages) mutagen;- };- libharu = callPackage ../development/libraries/libharu {- };- libical = callPackage ../development/libraries/libical {- };- libicns = callPackage ../development/libraries/libicns {- };- libimobiledevice = callPackage ../development/libraries/libimobiledevice {- };- libiodbc = callPackage ../development/libraries/libiodbc {- useGTK = config.libiodbc.gtk or false;- };- libivykis = callPackage ../development/libraries/libivykis {- };- liblastfmSF = callPackage ../development/libraries/liblastfmSF {- };- liblastfm = callPackage ../development/libraries/liblastfm {- };- liblqr1 = callPackage ../development/libraries/liblqr-1 {- };- liblockfile = callPackage ../development/libraries/liblockfile {- };- liblogging = callPackage ../development/libraries/liblogging {- };- libmcrypt = callPackage ../development/libraries/libmcrypt {- };- libmhash = callPackage ../development/libraries/libmhash {- };- libmodbus = callPackage ../development/libraries/libmodbus {- };- libmtp = callPackage ../development/libraries/libmtp {- };- libmsgpack = callPackage ../development/libraries/libmsgpack {- };- libnatspec = callPackage ../development/libraries/libnatspec {- };- libnfc = callPackage ../development/libraries/libnfc {- };- libnfsidmap = callPackage ../development/libraries/libnfsidmap {- };- libnice = callPackage ../development/libraries/libnice {- };- liboping = callPackage ../development/libraries/liboping {- };- libplist = callPackage ../development/libraries/libplist {- };- libQGLViewer = callPackage ../development/libraries/libqglviewer {- };- libre = callPackage ../development/libraries/libre {- };- librem = callPackage ../development/libraries/librem {- };- libresample = callPackage ../development/libraries/libresample {- };- librevenge = callPackage ../development/libraries/librevenge {- };- librevisa = callPackage ../development/libraries/librevisa {- };- libsamplerate = callPackage ../development/libraries/libsamplerate {- };- libspectre = callPackage ../development/libraries/libspectre {- };- libgsf = callPackage ../development/libraries/libgsf {- };- libiconv = callPackage ../development/libraries/libiconv {- };- libiconvOrEmpty = if libiconvOrNull == null- then [ ]- else [ libiconv ];- libiconvOrNull = if gcc.libc or null != null || stdenv.isGlibc- then null- else libiconv;- libiconvOrLibc = if libiconvOrNull == null- then gcc.libc- else libiconv;- libintlOrEmpty = stdenv.lib.optional (!stdenv.isLinux) gettext;- libid3tag = callPackage ../development/libraries/libid3tag {- };- libidn = callPackage ../development/libraries/libidn {- };- libiec61883 = callPackage ../development/libraries/libiec61883 {- };- libinfinity = callPackage ../development/libraries/libinfinity {- inherit (gnome) gtkdoc;- };- libiptcdata = callPackage ../development/libraries/libiptcdata {- };- libjpeg_original = callPackage ../development/libraries/libjpeg {- };- libjpeg_turbo = callPackage ../development/libraries/libjpeg-turbo {- };- libjpeg = if stdenv.isLinux- then libjpeg_turbo- else libjpeg_original;- libjpeg62 = callPackage ../development/libraries/libjpeg/62.nix {- libtool = libtool_1_5;- };- libjson_rpc_cpp = callPackage ../development/libraries/libjson-rpc-cpp {- };- libkate = callPackage ../development/libraries/libkate {- };- libksba = callPackage ../development/libraries/libksba {- };- libmad = callPackage ../development/libraries/libmad {- };- libmatchbox = callPackage ../development/libraries/libmatchbox {- };- libmatthew_java = callPackage ../development/libraries/java/libmatthew-java {- };- libmatroska = callPackage ../development/libraries/libmatroska {- };- libmcs = callPackage ../development/libraries/libmcs {- };- libmemcached = callPackage ../development/libraries/libmemcached {- };- libmicrohttpd = callPackage ../development/libraries/libmicrohttpd {- };- libmikmod = callPackage ../development/libraries/libmikmod {- stdenv = if stdenv.isDarwin- then overrideGCC stdenv gccApple- else stdenv;- };- libmilter = callPackage ../development/libraries/libmilter {- };- libmkv = callPackage ../development/libraries/libmkv {- };- libmms = callPackage ../development/libraries/libmms {- };- libmowgli = callPackage ../development/libraries/libmowgli {- };- libmng = callPackage ../development/libraries/libmng {- };- libmnl = callPackage ../development/libraries/libmnl {- };- libmodplug = callPackage ../development/libraries/libmodplug {- };- libmpcdec = callPackage ../development/libraries/libmpcdec {- };- libmp3splt = callPackage ../development/libraries/libmp3splt {- };- libmrss = callPackage ../development/libraries/libmrss {- };- libmsn = callPackage ../development/libraries/libmsn {- };- libmspack = callPackage ../development/libraries/libmspack {- };- libmusclecard = callPackage ../development/libraries/libmusclecard {- };- libmusicbrainz2 = callPackage ../development/libraries/libmusicbrainz/2.x.nix {- };- libmusicbrainz3 = callPackage ../development/libraries/libmusicbrainz {- };- libmusicbrainz5 = callPackage ../development/libraries/libmusicbrainz/5.x.nix {- };- libmusicbrainz = libmusicbrainz3;- libmwaw = callPackage ../development/libraries/libmwaw {- };- libmwaw_02 = callPackage ../development/libraries/libmwaw/0.2.nix {- };- libmx = callPackage ../development/libraries/libmx {- };- libnet = callPackage ../development/libraries/libnet {- };- libnetfilter_conntrack = callPackage ../development/libraries/libnetfilter_conntrack {- };- libnetfilter_queue = callPackage ../development/libraries/libnetfilter_queue {- };- libnfnetlink = callPackage ../development/libraries/libnfnetlink {- };- libnftnl = callPackage ../development/libraries/libnftnl {- };- libnih = callPackage ../development/libraries/libnih {- };- libnova = callPackage ../development/libraries/libnova {- };- libnxml = callPackage ../development/libraries/libnxml {- };- libodfgen = callPackage ../development/libraries/libodfgen {- };- libofa = callPackage ../development/libraries/libofa {- };- libofx = callPackage ../development/libraries/libofx {- };- libogg = callPackage ../development/libraries/libogg {- };- liboggz = callPackage ../development/libraries/liboggz {- };- liboil = callPackage ../development/libraries/liboil {- };- liboop = callPackage ../development/libraries/liboop {- };- libopus = callPackage ../development/libraries/libopus {- };- libosinfo = callPackage ../development/libraries/libosinfo {- };- libosip = callPackage ../development/libraries/osip {- };- libosip_3 = callPackage ../development/libraries/osip/3.nix {- };- libotr = callPackage ../development/libraries/libotr {- libgcrypt = libgcrypt_1_6;- };- libotr_3_2 = callPackage ../development/libraries/libotr/3.2.nix {- };- libp11 = callPackage ../development/libraries/libp11 {- };- libpar2 = callPackage ../development/libraries/libpar2 {- };- libpcap = callPackage ../development/libraries/libpcap {- };- libpipeline = callPackage ../development/libraries/libpipeline {- };- libpng = callPackage ../development/libraries/libpng {- };- libpng_apng = libpng.override {- apngSupport = true;- };- libpng12 = callPackage ../development/libraries/libpng/12.nix {- };- libpng15 = callPackage ../development/libraries/libpng/15.nix {- };- libpaper = callPackage ../development/libraries/libpaper {- };- libproxy = callPackage ../development/libraries/libproxy {- stdenv = if stdenv.isDarwin- then overrideGCC stdenv gcc- else stdenv;- };- libpseudo = callPackage ../development/libraries/libpseudo {- };- libpwquality = callPackage ../development/libraries/libpwquality {- };- libqalculate = callPackage ../development/libraries/libqalculate {- };- librsvg = callPackage ../development/libraries/librsvg {- gtk2 = null;- gtk3 = null;- };- librsync = callPackage ../development/libraries/librsync {- };- libsearpc = callPackage ../development/libraries/libsearpc {- };- libsigcxx = callPackage ../development/libraries/libsigcxx {- };- libsigcxx12 = callPackage ../development/libraries/libsigcxx/1.2.nix {- };- libsigsegv = callPackage ../development/libraries/libsigsegv {- };- libsigsegv_25 = callPackage ../development/libraries/libsigsegv/2.5.nix {- };- libsndfile = callPackage ../development/libraries/libsndfile {- };- libsodium = callPackage ../development/libraries/libsodium {- };- libsoup = callPackage ../development/libraries/libsoup {- };- libssh = callPackage ../development/libraries/libssh {- };- libssh2 = callPackage ../development/libraries/libssh2 {- };- libstartup_notification = callPackage ../development/libraries/startup-notification {- };- libspatialindex = callPackage ../development/libraries/libspatialindex {- };- libspatialite = callPackage ../development/libraries/libspatialite {- };- libtar = callPackage ../development/libraries/libtar {- };- libtasn1 = callPackage ../development/libraries/libtasn1 {- };- libtheora = callPackage ../development/libraries/libtheora {- };- libtiff = callPackage ../development/libraries/libtiff {- };- libtiger = callPackage ../development/libraries/libtiger {- };- libtommath = callPackage ../development/libraries/libtommath {- };- libtorrentRasterbar = callPackage ../development/libraries/libtorrent-rasterbar {- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };- libtoxcore = callPackage ../development/libraries/libtoxcore {- };- libtsm = callPackage ../development/libraries/libtsm {- };- libtunepimp = callPackage ../development/libraries/libtunepimp {- };- libtxc_dxtn = callPackage ../development/libraries/libtxc_dxtn {- };- libtxc_dxtn_s2tc = callPackage ../development/libraries/libtxc_dxtn_s2tc {- };- libgeotiff = callPackage ../development/libraries/libgeotiff {- };- libunistring = callPackage ../development/libraries/libunistring {- };- libupnp = callPackage ../development/libraries/pupnp {- };- giflib = callPackage ../development/libraries/giflib {- };- giflib_4_1 = callPackage ../development/libraries/giflib/4.1.nix {- };- libungif = callPackage ../development/libraries/giflib/libungif.nix {- };- libunibreak = callPackage ../development/libraries/libunibreak {- };- libunique = callPackage ../development/libraries/libunique/default.nix {- };- liburcu = callPackage ../development/libraries/liburcu {- };- libusb = callPackage ../development/libraries/libusb {- };- libusb1 = callPackage ../development/libraries/libusb1 {- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };- libunwind = callPackage ../development/libraries/libunwind {- };- libuvVersions = callPackage ../development/libraries/libuv {- };- libv4l = lowPrio (v4l_utils.override {- withQt4 = false;- });- libva = callPackage ../development/libraries/libva {- };- libvdpau = callPackage ../development/libraries/libvdpau {- };- libvirt = callPackage ../development/libraries/libvirt {- };- libvirt-glib = callPackage ../development/libraries/libvirt-glib {- };- libvisio = callPackage ../development/libraries/libvisio {- };- libvisual = callPackage ../development/libraries/libvisual {- };- libvncserver = callPackage ../development/libraries/libvncserver {- };- libviper = callPackage ../development/libraries/libviper {- };- libvpx = callPackage ../development/libraries/libvpx {- };- libvterm = callPackage ../development/libraries/libvterm {- };- libvorbis = callPackage ../development/libraries/libvorbis {- };- libwebp = callPackage ../development/libraries/libwebp {- };- libwmf = callPackage ../development/libraries/libwmf {- };- libwnck = libwnck2;- libwnck2 = callPackage ../development/libraries/libwnck {- };- libwnck3 = callPackage ../development/libraries/libwnck/3.x.nix {- };- libwpd = callPackage ../development/libraries/libwpd {- };- libwpd_08 = callPackage ../development/libraries/libwpd/0.8.nix {- };- libwpg = callPackage ../development/libraries/libwpg {- };- libx86 = builderDefsPackage ../development/libraries/libx86 {- };- libxdg_basedir = callPackage ../development/libraries/libxdg-basedir {- };- libxkbcommon = callPackage ../development/libraries/libxkbcommon {- };- libxklavier = callPackage ../development/libraries/libxklavier {- };- libxmi = callPackage ../development/libraries/libxmi {- };- libxml2 = callPackage ../development/libraries/libxml2 {- pythonSupport = false;- };- libxml2Python = lowPrio (libxml2.override {- pythonSupport = true;- });- libxmlxx = callPackage ../development/libraries/libxmlxx {- };- libxmp = callPackage ../development/libraries/libxmp {- };- libxslt = callPackage ../development/libraries/libxslt {- };- libixp_for_wmii = lowPrio (import ../development/libraries/libixp_for_wmii {- inherit fetchurl stdenv;- });- libyaml = callPackage ../development/libraries/libyaml {- };- libyamlcpp = callPackage ../development/libraries/libyaml-cpp {- };- libyamlcpp03 = callPackage ../development/libraries/libyaml-cpp/0.3.x.nix {- };- libyubikey = callPackage ../development/libraries/libyubikey {- };- libzip = callPackage ../development/libraries/libzip {- };- libzdb = callPackage ../development/libraries/libzdb {- };- libzrtpcpp = callPackage ../development/libraries/libzrtpcpp {- };- libzrtpcpp_1_6 = callPackage ../development/libraries/libzrtpcpp/1.6.nix {- ccrtp = ccrtp_1_8;- };- libwacom = callPackage ../development/libraries/libwacom {- };- lightning = callPackage ../development/libraries/lightning {- };- lirc = callPackage ../development/libraries/lirc {- };- liquidwar = builderDefsPackage ../games/liquidwar {- inherit (xlibs) xproto libX11- libXrender;- inherit gmp mesa libjpeg expat- gettext perl SDL SDL_image- SDL_mixer SDL_ttf curl sqlite- libogg libvorbis libcaca csound- cunit;- guile = guile_1_8;- libpng = libpng15;- };- log4cpp = callPackage ../development/libraries/log4cpp {- };- log4cxx = callPackage ../development/libraries/log4cxx {- };- log4cplus = callPackage ../development/libraries/log4cplus {- };- loudmouth = callPackage ../development/libraries/loudmouth {- };- lzo = callPackage ../development/libraries/lzo {- };- mdds_0_7_1 = callPackage ../development/libraries/mdds/0.7.1.nix {- };- mdds = callPackage ../development/libraries/mdds {- };- mediastreamer = callPackage ../development/libraries/mediastreamer {- };- menu-cache = callPackage ../development/libraries/menu-cache {- };- mesaSupported = lib.elem system lib.platforms.mesaPlatforms;- mesaDarwinOr = alternative:- if stdenv.isDarwin- then callPackage ../development/libraries/mesa-darwin {- }- else alternative;- mesa_noglu = mesaDarwinOr (callPackage ../development/libraries/mesa {- grsecEnabled = true;- });- mesa_glu = mesaDarwinOr (callPackage ../development/libraries/mesa-glu {- });- mesa_drivers = mesaDarwinOr (let- mo = mesa_noglu.override {- grsecEnabled = config.grsecurity or false;- };- in mo.drivers);- mesa = mesaDarwinOr (buildEnv {- name = "mesa-${mesa_noglu.version}";- paths = [ mesa_noglu mesa_glu ];- });- metaEnvironment = recurseIntoAttrs (let- callPackage = newScope pkgs.metaEnvironment;- in rec {- sdfLibrary = callPackage ../development/libraries/sdf-library {- aterm = aterm28;- };- toolbuslib = callPackage ../development/libraries/toolbuslib {- aterm = aterm28;- inherit (windows) w32api;- };- cLibrary = callPackage ../development/libraries/c-library {- aterm = aterm28;- };- errorSupport = callPackage ../development/libraries/error-support {- aterm = aterm28;- };- ptSupport = callPackage ../development/libraries/pt-support {- aterm = aterm28;- };- ptableSupport = callPackage ../development/libraries/ptable-support {- aterm = aterm28;- };- configSupport = callPackage ../development/libraries/config-support {- aterm = aterm28;- };- asfSupport = callPackage ../development/libraries/asf-support {- aterm = aterm28;- };- tideSupport = callPackage ../development/libraries/tide-support {- aterm = aterm28;- };- rstoreSupport = callPackage ../development/libraries/rstore-support {- aterm = aterm28;- };- sdfSupport = callPackage ../development/libraries/sdf-support {- aterm = aterm28;- };- sglr = callPackage ../development/libraries/sglr {- aterm = aterm28;- };- ascSupport = callPackage ../development/libraries/asc-support {- aterm = aterm28;- };- pgen = callPackage ../development/libraries/pgen {- aterm = aterm28;- };- });- ming = callPackage ../development/libraries/ming {- };- minizip = callPackage ../development/libraries/minizip {- };- minmay = callPackage ../development/libraries/minmay {- };- miro = callPackage ../applications/video/miro {- inherit (pythonPackages) pywebkitgtk- pysqlite pycurl mutagen;- };- mkvtoolnix = callPackage ../applications/video/mkvtoolnix {- };- mlt-qt4 = callPackage ../development/libraries/mlt {- qt = qt4;- SDL = SDL_pulseaudio;- };- mlt-qt5 = callPackage ../development/libraries/mlt {- qt = qt5;- SDL = SDL_pulseaudio;- };- movit = callPackage ../development/libraries/movit {- };- mps = callPackage ../development/libraries/mps {- };- libmpeg2 = callPackage ../development/libraries/libmpeg2 {- };- mpeg2dec = libmpeg2;- msilbc = callPackage ../development/libraries/msilbc {- };- mp4v2 = callPackage ../development/libraries/mp4v2 {- };- mpc = callPackage ../development/libraries/mpc {- };- mpich2 = callPackage ../development/libraries/mpich2 {- };- mtdev = callPackage ../development/libraries/mtdev {- };- mtpfs = callPackage ../tools/filesystems/mtpfs {- };- mu = callPackage ../tools/networking/mu {- texinfo = texinfo4;- };- muparser = callPackage ../development/libraries/muparser {- };- mygpoclient = callPackage ../development/python-modules/mygpoclient {- };- mygui = callPackage ../development/libraries/mygui {- };- myguiSvn = callPackage ../development/libraries/mygui/svn.nix {- };- mysocketw = callPackage ../development/libraries/mysocketw {- };- mythes = callPackage ../development/libraries/mythes {- };- nanomsg = callPackage ../development/libraries/nanomsg {- };- ncurses = callPackage ../development/libraries/ncurses {- unicode = system != "i686-cygwin";- };- neon = callPackage ../development/libraries/neon {- compressionSupport = true;- sslSupport = true;- };- nethack = builderDefsPackage (import ../games/nethack) {- inherit ncurses flex bison;- };- nettle = callPackage ../development/libraries/nettle {- };- newt = callPackage ../development/libraries/newt {- };- nix-plugins = callPackage ../development/libraries/nix-plugins {- nix = pkgs.nixUnstable;- };- nspr = callPackage ../development/libraries/nspr {- };- nss = lowPrio (callPackage ../development/libraries/nss {- });- nssTools = callPackage ../development/libraries/nss {- includeTools = true;- };- ntrack = callPackage ../development/libraries/ntrack {- };- nvidia-texture-tools = callPackage ../development/libraries/nvidia-texture-tools {- };- ode = builderDefsPackage (import ../development/libraries/ode) {- };- ogre = callPackage ../development/libraries/ogre {- };- ogrepaged = callPackage ../development/libraries/ogrepaged {- };- oniguruma = callPackage ../development/libraries/oniguruma {- };- openal = callPackage ../development/libraries/openal {- };- openalSoft = callPackage ../development/libraries/openal-soft {- };- openbabel = callPackage ../development/libraries/openbabel {- };- opencascade = callPackage ../development/libraries/opencascade {- };- opencascade_6_5 = callPackage ../development/libraries/opencascade/6.5.nix {- automake = automake111x;- ftgl = ftgl212;- };- opencascade_oce = callPackage ../development/libraries/opencascade/oce.nix {- };- opencsg = callPackage ../development/libraries/opencsg {- };- openct = callPackage ../development/libraries/openct {- };- opencv = callPackage ../development/libraries/opencv {- };- opencv_2_1 = callPackage ../development/libraries/opencv/2.1.nix {- libpng = libpng12;- };- openexr_ctl = callPackage ../development/libraries/openexr_ctl {- };- openexr = callPackage ../development/libraries/openexr {- };- openldap = callPackage ../development/libraries/openldap {- };- openlierox = callPackage ../games/openlierox {- };- libopensc_dnie = callPackage ../development/libraries/libopensc-dnie {- };- opencolorio = callPackage ../development/libraries/opencolorio {- };- ois = callPackage ../development/libraries/ois {- };- opal = callPackage ../development/libraries/opal {- };- openjpeg = callPackage ../development/libraries/openjpeg {- lcms = lcms2;- };- openscenegraph = callPackage ../development/libraries/openscenegraph {- giflib = giflib_4_1;- ffmpeg = ffmpeg_0_10;- };- openspades = callPackage ../games/openspades {- };- libressl = callPackage ../development/libraries/libressl {- };- boringssl = callPackage ../development/libraries/boringssl {- };- openssl = callPackage ../development/libraries/openssl {- fetchurl = fetchurlBoot;- cryptodevHeaders = linuxPackages.cryptodev.override {- fetchurl = fetchurlBoot;- onlyHeaders = true;- };- };- ortp = callPackage ../development/libraries/ortp {- srtp = srtp_linphone;- };- p11_kit = callPackage ../development/libraries/p11-kit {- };- paperkey = callPackage ../tools/security/paperkey {- };- pangoxsl = callPackage ../development/libraries/pangoxsl {- };- pcl = callPackage ../development/libraries/pcl {- vtk = vtkWithQt4;- };- pcre = callPackage ../development/libraries/pcre {- unicodeSupport = config.pcre.unicode or true;- };- pdf2xml = callPackage ../development/libraries/pdf2xml {- };- phonon = callPackage ../development/libraries/phonon {- };- phonon_backend_gstreamer = callPackage ../development/libraries/phonon-backend-gstreamer {- };- phonon_backend_vlc = callPackage ../development/libraries/phonon-backend-vlc {- };- physfs = callPackage ../development/libraries/physfs {- };- pkcs11helper = callPackage ../development/libraries/pkcs11helper {- };- plib = callPackage ../development/libraries/plib {- };- pocketsphinx = callPackage ../development/libraries/pocketsphinx {- };- podofo = callPackage ../development/libraries/podofo {- };- polkit = callPackage ../development/libraries/polkit {- spidermonkey = spidermonkey_185;- };- polkit_qt_1 = callPackage ../development/libraries/polkit-qt-1 {- };- policykit = callPackage ../development/libraries/policykit {- };- poppler = callPackage ../development/libraries/poppler {- lcms = lcms2;- };- popplerQt4 = poppler.poppler_qt4;- popt = callPackage ../development/libraries/popt {- };- portaudio = callPackage ../development/libraries/portaudio {- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };- portaudioSVN = callPackage ../development/libraries/portaudio/svn-head.nix {- };- portmidi = callPackage ../development/libraries/portmidi {- };- prison = callPackage ../development/libraries/prison {- };- proj = callPackage ../development/libraries/proj {- };- postgis = callPackage ../development/libraries/postgis {- };- protobuf = callPackage ../development/libraries/protobuf {- };- protobufc = callPackage ../development/libraries/protobufc {- };- pth = callPackage ../development/libraries/pth {- };- ptlib = callPackage ../development/libraries/ptlib {- };- re2 = callPackage ../development/libraries/re2 {- };- qca2 = callPackage ../development/libraries/qca2 {- };- qca2_ossl = callPackage ../development/libraries/qca2/ossl.nix {- };- qimageblitz = callPackage ../development/libraries/qimageblitz {- };- qjson = callPackage ../development/libraries/qjson {- };- qoauth = callPackage ../development/libraries/qoauth {- };- qt3 = callPackage ../development/libraries/qt-3 {- openglSupport = mesaSupported;- libpng = libpng12;- };- qt4 = pkgs.kde4.qt4;- qt48 = callPackage ../development/libraries/qt-4.x/4.8 {- mesa = mesa_noglu;- inherit (pkgs.gnome) libgnomeui- GConf gnome_vfs;- cups = if stdenv.isLinux- then cups- else null;- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };- qt48Full = qt48.override {- docs = true;- demos = true;- examples = true;- developerBuild = true;- };- qt4SDK = qtcreator.override {- sdkBuild = true;- qtLib = qt48Full;- };- qt53Full = qt53.override {- buildDocs = true;- buildExamples = true;- buildTests = true;- developerBuild = true;- };- qt53 = callPackage ../development/libraries/qt-5/qt-5.3.nix {- mesa = mesa_noglu;- cups = if stdenv.isLinux- then cups- else null;- inherit (gnome) libgnomeui GConf- gnome_vfs;- bison = bison2;- };- qt5 = callPackage ../development/libraries/qt-5 {- mesa = mesa_noglu;- cups = if stdenv.isLinux- then cups- else null;- inherit (gnome) libgnomeui GConf- gnome_vfs;- bison = bison2;- };- qt5Full = qt5.override {- buildDocs = true;- buildExamples = true;- buildTests = true;- developerBuild = true;- };- qt5SDK = qtcreator.override {- sdkBuild = true;- qtLib = qt5Full;- };- qtcreator = callPackage ../development/qtcreator {- qtLib = qt48.override {- developerBuild = true;- };- };- qtscriptgenerator = callPackage ../development/libraries/qtscriptgenerator {- };- quesoglc = callPackage ../development/libraries/quesoglc {- };- qwt = callPackage ../development/libraries/qwt {- };- qwt6 = callPackage ../development/libraries/qwt/6.nix {- };- rabbitmq-c = callPackage ../development/libraries/rabbitmq-c {- };- rabbitmq-java-client = callPackage ../development/libraries/rabbitmq-java-client {- };- raul = callPackage ../development/libraries/audio/raul {- };- readline = readline6;- readline4 = callPackage ../development/libraries/readline/readline4.nix {- };- readline5 = callPackage ../development/libraries/readline/readline5.nix {- };- readline6 = callPackage ../development/libraries/readline/readline6.nix {- };- readline63 = callPackage ../development/libraries/readline/readline6.3.nix {- };- librdf_raptor = callPackage ../development/libraries/librdf/raptor.nix {- };- librdf_raptor2 = callPackage ../development/libraries/librdf/raptor2.nix {- };- librdf_rasqal = callPackage ../development/libraries/librdf/rasqal.nix {- };- librdf_redland = callPackage ../development/libraries/librdf/redland.nix {- };- librdf = callPackage ../development/libraries/librdf {- };- lilv = callPackage ../development/libraries/audio/lilv {- };- lv2 = callPackage ../development/libraries/audio/lv2 {- };- lvtk = callPackage ../development/libraries/audio/lvtk {- };- qrupdate = callPackage ../development/libraries/qrupdate {- };- redland = pkgs.librdf_redland;- rhino = callPackage ../development/libraries/java/rhino {- javac = gcj;- jvm = gcj;- };- rlog = callPackage ../development/libraries/rlog {- };- rubberband = callPackage ../development/libraries/rubberband {- fftw = fftwSinglePrec;- inherit (vamp) vampSDK;- };- sbc = callPackage ../development/libraries/sbc {- };- schroedinger = callPackage ../development/libraries/schroedinger {- };- SDL = callPackage ../development/libraries/SDL {- openglSupport = mesaSupported;- alsaSupport = !stdenv.isDarwin;- x11Support = true;- pulseaudioSupport = stdenv.isDarwin;- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };- SDL_pulseaudio = SDL.override {- pulseaudioSupport = true;- };- SDL_gfx = callPackage ../development/libraries/SDL_gfx {- };- SDL_image = callPackage ../development/libraries/SDL_image {- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };- SDL_mixer = callPackage ../development/libraries/SDL_mixer {- };- SDL_net = callPackage ../development/libraries/SDL_net {- };- SDL_sound = callPackage ../development/libraries/SDL_sound {- };- SDL_ttf = callPackage ../development/libraries/SDL_ttf {- };- SDL2 = callPackage ../development/libraries/SDL2 {- openglSupport = mesaSupported;- alsaSupport = true;- x11Support = true;- pulseaudioSupport = false;- };- SDL2_image = callPackage ../development/libraries/SDL2_image {- };- SDL2_mixer = callPackage ../development/libraries/SDL2_mixer {- };- SDL2_net = callPackage ../development/libraries/SDL2_net {- };- SDL2_gfx = callPackage ../development/libraries/SDL2_gfx {- };- serd = callPackage ../development/libraries/serd {- };- serf = callPackage ../development/libraries/serf {- };- silgraphite = callPackage ../development/libraries/silgraphite {- };- graphite2 = callPackage ../development/libraries/silgraphite/graphite2.nix {- };- simgear = callPackage ../development/libraries/simgear {- };- sfml_git = callPackage ../development/libraries/sfml {- };- skalibs = callPackage ../development/libraries/skalibs {- };- slang = callPackage ../development/libraries/slang {- };- slibGuile = callPackage ../development/libraries/slib {- scheme = guile_1_8;- texinfo = texinfo4;- };- smpeg = callPackage ../development/libraries/smpeg {- };- snack = callPackage ../development/libraries/snack {- };- snappy = callPackage ../development/libraries/snappy {- };- sodium = callPackage ../development/libraries/sodium {- };- sofia_sip = callPackage ../development/libraries/sofia-sip {- };- soprano = callPackage ../development/libraries/soprano {- };- soqt = callPackage ../development/libraries/soqt {- };- sord = callPackage ../development/libraries/sord {- };- spandsp = callPackage ../development/libraries/spandsp {- };- speechd = callPackage ../development/libraries/speechd {- };- speech_tools = callPackage ../development/libraries/speech-tools {- };- speex = callPackage ../development/libraries/speex {- };- sphinxbase = callPackage ../development/libraries/sphinxbase {- };- spice = callPackage ../development/libraries/spice {- celt = celt_0_5_1;- inherit (xlibs) libXrandr- libXfixes libXext libXrender- libXinerama;- inherit (pythonPackages) pyparsing;- };- spice_gtk = callPackage ../development/libraries/spice-gtk {- };- spice_protocol = callPackage ../development/libraries/spice-protocol {- };- sratom = callPackage ../development/libraries/audio/sratom {- };- srtp = callPackage ../development/libraries/srtp {- };- srtp_linphone = callPackage ../development/libraries/srtp/linphone.nix {- };- sqlite = lowPrio (callPackage ../development/libraries/sqlite {- readline = null;- ncurses = null;- });- sqliteInteractive = appendToName "interactive" (sqlite.override {- inherit readline ncurses;- });- sqlcipher = lowPrio (callPackage ../development/libraries/sqlcipher {- readline = null;- ncurses = null;- });- stfl = callPackage ../development/libraries/stfl {- stdenv = if stdenv.isDarwin- then overrideGCC stdenv gccApple- else stdenv;- };- stlink = callPackage ../development/tools/misc/stlink {- };- steghide = callPackage ../tools/security/steghide {- };- stepmania = callPackage ../games/stepmania {- };- stlport = callPackage ../development/libraries/stlport {- };- strigi = callPackage ../development/libraries/strigi {- clucene_core = clucene_core_2;- };- subtitleeditor = callPackage ../applications/video/subtitleeditor {- };- suil = callPackage ../development/libraries/audio/suil {- };- suitesparse = callPackage ../development/libraries/suitesparse {- };- sutils = callPackage ../tools/misc/sutils {- };- sword = callPackage ../development/libraries/sword {- };- szip = callPackage ../development/libraries/szip {- };- t1lib = callPackage ../development/libraries/t1lib {- };- taglib = callPackage ../development/libraries/taglib {- };- taglib_extras = callPackage ../development/libraries/taglib-extras {- };- talloc = callPackage ../development/libraries/talloc {- };- tclap = callPackage ../development/libraries/tclap {- };- tclgpg = callPackage ../development/libraries/tclgpg {- };- tcllib = callPackage ../development/libraries/tcllib {- };- tcltls = callPackage ../development/libraries/tcltls {- };- tdb = callPackage ../development/libraries/tdb {- };- tecla = callPackage ../development/libraries/tecla {- };- telepathy_glib = callPackage ../development/libraries/telepathy/glib {- };- telepathy_farstream = callPackage ../development/libraries/telepathy/farstream {- };- telepathy_qt = callPackage ../development/libraries/telepathy/qt {- };- thrift = callPackage ../development/libraries/thrift {- };- tinyxml = tinyxml2;- tinyxml2 = callPackage ../development/libraries/tinyxml/2.6.2.nix {- };- tk = callPackage ../development/libraries/tk {- };- tnt = callPackage ../development/libraries/tnt {- };- tokyocabinet = callPackage ../development/libraries/tokyo-cabinet {- };- tokyotyrant = callPackage ../development/libraries/tokyo-tyrant {- };- tremor = callPackage ../development/libraries/tremor {- };- unicap = callPackage ../development/libraries/unicap {- };- tsocks = callPackage ../development/libraries/tsocks {- };- unixODBC = callPackage ../development/libraries/unixODBC {- };- unixODBCDrivers = recurseIntoAttrs (import ../development/libraries/unixODBCDrivers {- inherit fetchurl stdenv unixODBC- glibc libtool openssl zlib;- inherit postgresql mysql sqlite;- });- urt = callPackage ../development/libraries/urt {- };- ustr = callPackage ../development/libraries/ustr {- };- usbredir = callPackage ../development/libraries/usbredir {- libusb = libusb1;- };- ucommon = callPackage ../development/libraries/ucommon {- };- v8 = callPackage ../development/libraries/v8 {- inherit (pythonPackages) gyp;- };- vaapiIntel = callPackage ../development/libraries/vaapi-intel {- };- vaapiVdpau = callPackage ../development/libraries/vaapi-vdpau {- };- vamp = callPackage ../development/libraries/audio/vamp {- };- vcdimager = callPackage ../development/libraries/vcdimager {- };- vigra = callPackage ../development/libraries/vigra {- inherit (pkgs.pythonPackages) numpy;- };- vlock = callPackage ../misc/screensavers/vlock {- };- vmime = callPackage ../development/libraries/vmime {- };- vrpn = callPackage ../development/libraries/vrpn {- };- vtk = callPackage ../development/libraries/vtk {- };- vtkWithQt4 = vtk.override {- qtLib = qt4;- };- vxl = callPackage ../development/libraries/vxl {- libpng = libpng12;- };- wayland = callPackage ../development/libraries/wayland {- };- webkit = webkitgtk;- webkitgtk = callPackage ../development/libraries/webkitgtk {- harfbuzz = harfbuzz.override {- withIcu = true;- };- gst-plugins-base = gst_all_1.gst-plugins-base;- };- webkitgtk2 = webkitgtk.override {- withGtk2 = true;- enableIntrospection = false;- };- wildmidi = callPackage ../development/libraries/wildmidi {- };- wvstreams = callPackage ../development/libraries/wvstreams {- };- wxGTK = wxGTK28;- wxGTK28 = callPackage ../development/libraries/wxGTK-2.8 {- inherit (gnome) GConf;- withMesa = lib.elem system lib.platforms.mesaPlatforms;- };- wxGTK29 = callPackage ../development/libraries/wxGTK-2.9/default.nix {- inherit (gnome) GConf;- withMesa = lib.elem system lib.platforms.mesaPlatforms;- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };- wxGTK30 = callPackage ../development/libraries/wxGTK-3.0/default.nix {- inherit (gnome) GConf;- withMesa = lib.elem system lib.platforms.mesaPlatforms;- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };- wtk = callPackage ../development/libraries/wtk {- };- x264 = callPackage ../development/libraries/x264 {- };- xapian = callPackage ../development/libraries/xapian {- };- xapianBindings = callPackage ../development/libraries/xapian/bindings {- };- xapian10 = callPackage ../development/libraries/xapian/1.0.x.nix {- };- xapianBindings10 = callPackage ../development/libraries/xapian/bindings/1.0.x.nix {- };- Xaw3d = callPackage ../development/libraries/Xaw3d {- };- xbase = callPackage ../development/libraries/xbase {- };- xcb-util-cursor = callPackage ../development/libraries/xcb-util-cursor {- };- xdo = callPackage ../tools/misc/xdo {- };- xineLib = callPackage ../development/libraries/xine-lib {- ffmpeg = ffmpeg_1;- };- xautolock = callPackage ../misc/screensavers/xautolock {- };- xercesc = callPackage ../development/libraries/xercesc {- };- xlibsWrapper = callPackage ../development/libraries/xlibs-wrapper {- packages = [- freetype- fontconfig- xlibs.xproto- xlibs.libX11- xlibs.libXt- xlibs.libXft- xlibs.libXext- xlibs.libSM- xlibs.libICE- xlibs.xextproto- ];- };- xmlrpc_c = callPackage ../development/libraries/xmlrpc-c {- };- xmlsec = callPackage ../development/libraries/xmlsec {- };- xvidcore = callPackage ../development/libraries/xvidcore {- };- xylib = callPackage ../development/libraries/xylib {- };- yajl = callPackage ../development/libraries/yajl {- };- zangband = builderDefsPackage (import ../games/zangband) {- inherit ncurses flex bison- autoconf automake m4 coreutils;- };- zeitgeist = callPackage ../development/libraries/zeitgeist {- };- zlib = callPackage ../development/libraries/zlib {- fetchurl = fetchurlBoot;- };- zlibStatic = lowPrio (appendToName "static" (callPackage ../development/libraries/zlib {- static = true;- }));- zeromq2 = callPackage ../development/libraries/zeromq/2.x.nix {- };- zeromq3 = callPackage ../development/libraries/zeromq/3.x.nix {- };- zeromq4 = callPackage ../development/libraries/zeromq/4.x.nix {- };- zziplib = callPackage ../development/libraries/zziplib {- };- atermjava = callPackage ../development/libraries/java/aterm {- stdenv = overrideInStdenv stdenv [- gnumake380- ];- };- commonsFileUpload = callPackage ../development/libraries/java/jakarta-commons/file-upload {- };- fastjar = callPackage ../development/tools/java/fastjar {- };- httpunit = callPackage ../development/libraries/java/httpunit {- };- gwtdragdrop = callPackage ../development/libraries/java/gwt-dragdrop {- };- gwtwidgets = callPackage ../development/libraries/java/gwt-widgets {- };- jakartabcel = callPackage ../development/libraries/java/jakarta-bcel {- regexp = jakartaregexp;- };- jakartaregexp = callPackage ../development/libraries/java/jakarta-regexp {- };- javaCup = callPackage ../development/libraries/java/cup {- };- javasvn = callPackage ../development/libraries/java/javasvn {- };- jclasslib = callPackage ../development/tools/java/jclasslib {- };- jdom = callPackage ../development/libraries/java/jdom {- };- jflex = callPackage ../development/libraries/java/jflex {- };- jjtraveler = callPackage ../development/libraries/java/jjtraveler {- stdenv = overrideInStdenv stdenv [- gnumake380- ];- };- junit = callPackage ../development/libraries/java/junit {- antBuild = releaseTools.antBuild;- };- junixsocket = callPackage ../development/libraries/java/junixsocket {- };- jzmq = callPackage ../development/libraries/java/jzmq {- };- lucene = callPackage ../development/libraries/java/lucene {- };- mockobjects = callPackage ../development/libraries/java/mockobjects {- };- saxon = callPackage ../development/libraries/java/saxon {- };- saxonb = callPackage ../development/libraries/java/saxon/default8.nix {- };- sharedobjects = callPackage ../development/libraries/java/shared-objects {- stdenv = overrideInStdenv stdenv [- gnumake380- ];- };- smack = callPackage ../development/libraries/java/smack {- };- swt = callPackage ../development/libraries/java/swt {- inherit (gnome) libsoup;- };- jquery_ui = callPackage ../development/libraries/javascript/jquery-ui {- };- yuicompressor = callPackage ../development/tools/yuicompressor {- };- asdf = callPackage ../development/lisp-modules/asdf {- texLive = null;- };- clwrapperFunction = callPackage ../development/lisp-modules/clwrapper;- wrapLisp = lisp:- clwrapperFunction {- inherit lisp;- };- lispPackagesFor = clwrapper:- callPackage ../development/lisp-modules/lisp-packages.nix {- inherit clwrapper;- };- lispPackagesClisp = lispPackagesFor (wrapLisp clisp);- lispPackagesSBCL = lispPackagesFor (wrapLisp sbcl);- lispPackages = recurseIntoAttrs lispPackagesSBCL;- buildPerlPackage = import ../development/perl-modules/generic perl;- perlPackages = recurseIntoAttrs (import ./perl-packages.nix {- inherit pkgs;- overrides = (config.perlPackageOverrides or p:- { }) pkgs;- });- perl514Packages = import ./perl-packages.nix {- pkgs = pkgs // {- perl = perl514;- buildPerlPackage = import ../development/perl-modules/generic perl514;- };- overrides = (config.perl514PackageOverrides or p:- { }) pkgs;- };- perlXMLParser = perlPackages.XMLParser;- ack = perlPackages.ack;- perlArchiveCpio = perlPackages.ArchiveCpio;- perlcritic = perlPackages.PerlCritic;- planetary_annihilation = callPackage ../games/planetaryannihilation {- };- buildPythonPackage = pythonPackages.buildPythonPackage;- python26Packages = import ./python-packages.nix {- inherit pkgs;- python = python26;- };- python27Packages = lib.hiPrioSet (recurseIntoAttrs (import ./python-packages.nix {- inherit pkgs;- python = python27;- }));- python32Packages = import ./python-packages.nix {- inherit pkgs;- python = python32;- };- python33Packages = recurseIntoAttrs (import ./python-packages.nix {- inherit pkgs;- python = python33;- });- python34Packages = recurseIntoAttrs (import ./python-packages.nix {- inherit pkgs;- python = python34;- });- pypyPackages = recurseIntoAttrs (import ./python-packages.nix {- inherit pkgs;- python = pypy;- });- foursuite = callPackage ../development/python-modules/4suite {- };- bsddb3 = callPackage ../development/python-modules/bsddb3 {- };- ecdsa = callPackage ../development/python-modules/ecdsa {- };- numeric = callPackage ../development/python-modules/numeric {- };- pil = pythonPackages.pil;- psyco = callPackage ../development/python-modules/psyco {- };- pycairo = pythonPackages.pycairo;- pycapnp = pythonPackages.pycapnp;- pycrypto = pythonPackages.pycrypto;- pycups = callPackage ../development/python-modules/pycups {- };- pyexiv2 = callPackage ../development/python-modules/pyexiv2 {- };- pygame = callPackage ../development/python-modules/pygame {- };- pygobject = pythonPackages.pygobject;- pygobject3 = pythonPackages.pygobject3;- pygtk = pythonPackages.pygtk;- pyGtkGlade = pythonPackages.pyGtkGlade;- pylint = callPackage ../development/python-modules/pylint {- };- pyopenssl = builderDefsPackage (import ../development/python-modules/pyopenssl) {- inherit python openssl;- };- rhpl = callPackage ../development/python-modules/rhpl {- };- sip = callPackage ../development/python-modules/sip {- };- pyqt4 = callPackage ../development/python-modules/pyqt/4.x.nix {- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };- pysideApiextractor = callPackage ../development/python-modules/pyside/apiextractor.nix {- };- pysideGeneratorrunner = callPackage ../development/python-modules/pyside/generatorrunner.nix {- };- pyside = callPackage ../development/python-modules/pyside {- };- pysideTools = callPackage ../development/python-modules/pyside/tools.nix {- };- pysideShiboken = callPackage ../development/python-modules/pyside/shiboken.nix {- };- pyx = callPackage ../development/python-modules/pyx {- };- pyxml = callPackage ../development/python-modules/pyxml {- };- rbtools = callPackage ../development/python-modules/rbtools {- };- setuptools = pythonPackages.setuptools;- slowaes = callPackage ../development/python-modules/slowaes {- };- wxPython = pythonPackages.wxPython;- wxPython28 = pythonPackages.wxPython28;- twisted = pythonPackages.twisted;- ZopeInterface = pythonPackages.zope_interface;- R = callPackage ../applications/science/math/R {- inherit (xlibs) libX11 libXt;- texLive = texLiveAggregationFun {- paths = [- texLive- texLiveExtra- ];- };- withRecommendedPackages = false;- };- rWrapper = callPackage ../development/r-modules/wrapper.nix {- recommendedPackages = with rPackages; [- MASS- lattice- Matrix- nlme- survival- boot- cluster- codetools- foreign- KernSmooth- rpart- class- nnet- spatial- mgcv- ];- packages = [ ];- };- rPackages = import ../development/r-modules/cran-packages.nix {- inherit pkgs;- overrides = (config.rPackageOverrides or p:- { }) pkgs;- };- rdf4store = callPackage ../servers/http/4store {- };- apacheHttpd = pkgs.apacheHttpd_2_2;- apacheHttpd_2_2 = callPackage ../servers/http/apache-httpd/2.2.nix {- sslSupport = true;- };- apacheHttpd_2_4 = lowPrio (callPackage ../servers/http/apache-httpd/2.4.nix {- sslSupport = true;- });- apcupsd = callPackage ../servers/apcupsd {- };- sabnzbd = callPackage ../servers/sabnzbd {- };- bind = callPackage ../servers/dns/bind {- };- bird = callPackage ../servers/bird {- };- couchdb = callPackage ../servers/http/couchdb {- spidermonkey = spidermonkey_185;- python = python27;- sphinx = python27Packages.sphinx;- erlang = erlangR16;- };- dico = callPackage ../servers/dico {- };- dict = callPackage ../servers/dict {- libmaa = callPackage ../servers/dict/libmaa.nix {- };- };- dictdDBs = recurseIntoAttrs (import ../servers/dict/dictd-db.nix {- inherit builderDefs;- });- dictDBCollector = import ../servers/dict/dictd-db-collector.nix {- inherit stdenv lib dict;- };- dictdWiktionary = callPackage ../servers/dict/dictd-wiktionary.nix {- };- dictdWordnet = callPackage ../servers/dict/dictd-wordnet.nix {- };- diod = callPackage ../servers/diod {- };- dovecot = dovecot21;- dovecot21 = callPackage ../servers/mail/dovecot {- };- dovecot22 = callPackage ../servers/mail/dovecot/2.2.x.nix {- };- dovecot_pigeonhole = callPackage ../servers/mail/dovecot-pigeonhole {- };- etcd = callPackage ../servers/etcd {- };- ejabberd = callPackage ../servers/xmpp/ejabberd {- erlang = erlangR16;- };- elasticmq = callPackage ../servers/elasticmq {- };- etcdctl = callPackage ../development/tools/etcdctl {- };- fcgiwrap = callPackage ../servers/fcgiwrap {- };- felix = callPackage ../servers/felix {- };- felix_remoteshell = callPackage ../servers/felix/remoteshell.nix {- };- fingerd_bsd = callPackage ../servers/fingerd/bsd-fingerd {- };- firebird = callPackage ../servers/firebird {- icu = null;- };- firebirdSuper = callPackage ../servers/firebird {- superServer = true;- };- fleet = callPackage ../servers/fleet {- };- freepops = callPackage ../servers/mail/freepops {- };- freeswitch = callPackage ../servers/sip/freeswitch {- };- ghostOne = callPackage ../servers/games/ghost-one {- boost = boost144.override {- taggedLayout = true;- };- };- ircdHybrid = callPackage ../servers/irc/ircd-hybrid {- };- jboss = callPackage ../servers/http/jboss {- };- jboss_mysql_jdbc = callPackage ../servers/http/jboss/jdbc/mysql {- };- jetty = callPackage ../servers/http/jetty {- };- jetty61 = callPackage ../servers/http/jetty/6.1 {- };- joseki = callPackage ../servers/http/joseki {- };- leafnode = callPackage ../servers/news/leafnode {- };- lighttpd = callPackage ../servers/http/lighttpd {- };- mailman = callPackage ../servers/mail/mailman {- };- mediatomb = callPackage ../servers/mediatomb {- };- memcached = callPackage ../servers/memcached {- };- mod_dnssd = callPackage ../servers/http/apache-modules/mod_dnssd/default.nix {- };- mod_evasive = callPackage ../servers/http/apache-modules/mod_evasive {- };- mod_python = callPackage ../servers/http/apache-modules/mod_python {- };- mod_fastcgi = callPackage ../servers/http/apache-modules/mod_fastcgi {- };- mod_wsgi = callPackage ../servers/http/apache-modules/mod_wsgi {- };- mpd = callPackage ../servers/mpd {- aacSupport = config.mpd.aacSupport or true;- ffmpegSupport = config.mpd.ffmpegSupport or true;- };- mpd_clientlib = callPackage ../servers/mpd/clientlib.nix {- };- miniHttpd = callPackage ../servers/http/mini-httpd {- };- mlmmj = callPackage ../servers/mail/mlmmj {- };- myserver = callPackage ../servers/http/myserver {- };- nginx = callPackage ../servers/http/nginx {- rtmp = true;- fullWebDAV = true;- syslog = true;- moreheaders = true;- };- ngircd = callPackage ../servers/irc/ngircd {- };- nix-binary-cache = callPackage ../servers/http/nix-binary-cache {- };- nsd = callPackage ../servers/dns/nsd {- };- nsq = callPackage ../servers/nsq {- };- openresty = callPackage ../servers/http/openresty {- };- opensmtpd = callPackage ../servers/mail/opensmtpd {- };- petidomo = callPackage ../servers/mail/petidomo {- };- popa3d = callPackage ../servers/mail/popa3d {- };- postfix = callPackage ../servers/mail/postfix {- };- postfix211 = callPackage ../servers/mail/postfix/2.11.nix {- };- pulseaudio = callPackage ../servers/pulseaudio {- gconf = gnome.GConf;- bluez = null;- avahi = null;- };- pulseaudioFull = pulseaudio.override {- bluez = bluez5;- avahi = avahi;- jackaudioSupport = true;- x11Support = true;- };- tomcat_connectors = callPackage ../servers/http/apache-modules/tomcat-connectors {- };- pies = callPackage ../servers/pies {- };- portmap = callPackage ../servers/portmap {- };- rpcbind = callPackage ../servers/rpcbind {- };- mariadb = callPackage ../servers/sql/mariadb {- };- mongodb = callPackage ../servers/nosql/mongodb {- };- riak = callPackage ../servers/nosql/riak/1.3.1.nix {- };- influxdb = callPackage ../servers/nosql/influxdb {- };- mysql51 = import ../servers/sql/mysql/5.1.x.nix {- inherit fetchurl ncurses zlib- perl openssl stdenv;- ps = procps;- };- mysql55 = callPackage ../servers/sql/mysql/5.5.x.nix {- };- mysql = mysql51;- mysql_jdbc = callPackage ../servers/sql/mysql/jdbc {- };- nagios = callPackage ../servers/monitoring/nagios {- };- munin = callPackage ../servers/monitoring/munin {- };- nagiosPluginsOfficial = callPackage ../servers/monitoring/nagios/plugins/official-2.x.nix {- };- neo4j = callPackage ../servers/nosql/neo4j {- };- net_snmp = callPackage ../servers/monitoring/net-snmp {- };- riemann = callPackage ../servers/monitoring/riemann {- };- oidentd = callPackage ../servers/identd/oidentd {- };- openfire = callPackage ../servers/xmpp/openfire {- };- oracleXE = callPackage ../servers/sql/oracle-xe {- };- OVMF = callPackage ../applications/virtualization/OVMF {- };- postgresql = postgresql92;- postgresql84 = callPackage ../servers/sql/postgresql/8.4.x.nix {- };- postgresql90 = callPackage ../servers/sql/postgresql/9.0.x.nix {- };- postgresql91 = callPackage ../servers/sql/postgresql/9.1.x.nix {- };- postgresql92 = callPackage ../servers/sql/postgresql/9.2.x.nix {- };- postgresql93 = callPackage ../servers/sql/postgresql/9.3.x.nix {- };- postgresql_jdbc = callPackage ../servers/sql/postgresql/jdbc {- };- psqlodbc = callPackage ../servers/sql/postgresql/psqlodbc {- };- pyIRCt = builderDefsPackage (import ../servers/xmpp/pyIRCt) {- inherit xmpppy pythonIRClib- python makeWrapper;- };- pyMAILt = builderDefsPackage (import ../servers/xmpp/pyMAILt) {- inherit xmpppy python- makeWrapper fetchcvs;- };- qpid-cpp = callPackage ../servers/amqp/qpid-cpp {- };- rabbitmq_server = callPackage ../servers/amqp/rabbitmq-server {- };- radius = callPackage ../servers/radius {- };- redis = callPackage ../servers/nosql/redis {- };- redstore = callPackage ../servers/http/redstore {- };- restund = callPackage ../servers/restund {- };- rethinkdb = callPackage ../servers/nosql/rethinkdb {- };- rippled = callPackage ../servers/rippled {- };- s6 = callPackage ../servers/s6 {- };- spamassassin = callPackage ../servers/mail/spamassassin {- inherit (perlPackages) HTMLParser- NetDNS NetAddrIP DBFile HTTPDate- MailDKIM LWP IOSocketSSL;- };- samba = callPackage ../servers/samba {- };- samba_light = lowPrio (callPackage ../servers/samba {- pam = null;- fam = null;- cups = null;- acl = null;- openldap = null;- libunwind = null;- });- serfdom = callPackage ../servers/serfdom {- };- seyren = callPackage ../servers/monitoring/seyren {- };- shishi = callPackage ../servers/shishi {- };- sipwitch = callPackage ../servers/sip/sipwitch {- };- spawn_fcgi = callPackage ../servers/http/spawn-fcgi {- };- squids = recurseIntoAttrs (import ../servers/squid/squids.nix {- inherit fetchurl stdenv perl lib- composableDerivation openldap- pam db cyrus_sasl kerberos- libcap expat libxml2 libtool- openssl;- });- squid = squids.squid31;- thttpd = callPackage ../servers/http/thttpd {- };- storm = callPackage ../servers/computing/storm {- };- tomcat5 = callPackage ../servers/http/tomcat/5.0.nix {- };- tomcat6 = callPackage ../servers/http/tomcat/6.0.nix {- };- tomcat_mysql_jdbc = callPackage ../servers/http/tomcat/jdbc/mysql {- };- axis2 = callPackage ../servers/http/tomcat/axis2 {- };- unifi = callPackage ../servers/unifi {- };- virtuoso6 = callPackage ../servers/sql/virtuoso/6.x.nix {- };- virtuoso7 = callPackage ../servers/sql/virtuoso/7.x.nix {- };- virtuoso = virtuoso6;- vsftpd = callPackage ../servers/ftp/vsftpd {- };- winstone = callPackage ../servers/http/winstone {- };- xinetd = callPackage ../servers/xinetd {- };- xquartz = callPackage ../servers/x11/xquartz {- };- quartz-wm = callPackage ../servers/x11/quartz-wm {- stdenv = clangStdenv;- };- xorg = recurseIntoAttrs (import ../servers/x11/xorg/default.nix {- inherit clangStdenv fetchurl- fetchgit fetchpatch stdenv- pkgconfig intltool freetype- fontconfig libxslt expat libpng- zlib perl mesa_drivers- spice_protocol dbus libuuid- openssl gperf m4 autoconf- automake libtool xmlto asciidoc- flex bison python mtdev pixman;- mesa = mesa_noglu;- udev = if stdenv.isLinux- then udev- else null;- libdrm = if stdenv.isLinux- then libdrm- else null;- } // {- xf86videointel-testing = callPackage ../servers/x11/xorg/xf86-video-intel-testing.nix {- };- });- xorgReplacements = callPackage ../servers/x11/xorg/replacements.nix {- };- xorgVideoUnichrome = callPackage ../servers/x11/xorg/unichrome/default.nix {- };- yaws = callPackage ../servers/http/yaws {- };- zabbix = recurseIntoAttrs (import ../servers/monitoring/zabbix {- inherit fetchurl stdenv- pkgconfig postgresql curl- openssl zlib;- });- zabbix20 = callPackage ../servers/monitoring/zabbix/2.0.nix {- };- zabbix22 = callPackage ../servers/monitoring/zabbix/2.2.nix {- };- afuse = callPackage ../os-specific/linux/afuse {- };- amdUcode = callPackage ../os-specific/linux/microcode/amd.nix {- };- autofs5 = callPackage ../os-specific/linux/autofs/autofs-v5.nix {- };- _915resolution = callPackage ../os-specific/linux/915resolution {- };- nfsUtils = callPackage ../os-specific/linux/nfs-utils {- };- acpi = callPackage ../os-specific/linux/acpi {- };- acpid = callPackage ../os-specific/linux/acpid {- };- acpitool = callPackage ../os-specific/linux/acpitool {- };- alienfx = callPackage ../os-specific/linux/alienfx {- };- alsaLib = callPackage ../os-specific/linux/alsa-lib {- };- alsaPlugins = callPackage ../os-specific/linux/alsa-plugins {- jack2 = null;- };- alsaPluginWrapper = callPackage ../os-specific/linux/alsa-plugins/wrapper.nix {- };- alsaUtils = callPackage ../os-specific/linux/alsa-utils {- };- alsaOss = callPackage ../os-specific/linux/alsa-oss {- };- microcode2ucode = callPackage ../os-specific/linux/microcode/converter.nix {- };- microcodeIntel = callPackage ../os-specific/linux/microcode/intel.nix {- };- apparmor = callPackage ../os-specific/linux/apparmor {- inherit (perlPackages) LocaleGettext- TermReadKey RpcXML;- bison = bison2;- };- atop = callPackage ../os-specific/linux/atop {- };- audit = callPackage ../os-specific/linux/audit {- };- b43Firmware_5_1_138 = callPackage ../os-specific/linux/firmware/b43-firmware/5.1.138.nix {- };- b43FirmwareCutter = callPackage ../os-specific/linux/firmware/b43-firmware-cutter {- };- batctl = callPackage ../os-specific/linux/batman-adv/batctl.nix {- };- bluez4 = callPackage ../os-specific/linux/bluez {- pygobject = pygobject3;- };- bluez5 = lowPrio (callPackage ../os-specific/linux/bluez/bluez5.nix {- });- bluez = bluez4;- inherit (pythonPackages) bedup;- beret = callPackage ../games/beret {- };- bridge_utils = callPackage ../os-specific/linux/bridge-utils {- };- busybox = callPackage ../os-specific/linux/busybox {- };- checkpolicy = callPackage ../os-specific/linux/checkpolicy {- };- checksec = callPackage ../os-specific/linux/checksec {- };- cifs_utils = callPackage ../os-specific/linux/cifs-utils {- };- conky = callPackage ../os-specific/linux/conky {- mpdSupport = config.conky.mpdSupport or true;- x11Support = config.conky.x11Support or false;- xdamage = config.conky.xdamage or false;- wireless = config.conky.wireless or false;- luaSupport = config.conky.luaSupport or false;- rss = config.conky.rss or false;- weatherMetar = config.conky.weatherMetar or false;- weatherXoap = config.conky.weatherXoap or false;- };- cpufrequtils = callPackage ../os-specific/linux/cpufrequtils {- };- cryopid = callPackage ../os-specific/linux/cryopid {- };- criu = callPackage ../os-specific/linux/criu {- };- cryptsetup = callPackage ../os-specific/linux/cryptsetup {- };- cramfsswap = callPackage ../os-specific/linux/cramfsswap {- };- darwin = rec {- cctools = forceNativeDrv (callPackage ../os-specific/darwin/cctools-port {- cross = assert crossSystem != null; crossSystem;- inherit maloader;- xctoolchain = xcode.toolchain;- });- maloader = callPackage ../os-specific/darwin/maloader {- inherit opencflite;- };- opencflite = callPackage ../os-specific/darwin/opencflite {- };- xcode = callPackage ../os-specific/darwin/xcode {- };- };- devicemapper = lvm2;- disk_indicator = callPackage ../os-specific/linux/disk-indicator {- };- dmidecode = callPackage ../os-specific/linux/dmidecode {- };- dmtcp = callPackage ../os-specific/linux/dmtcp {- };- dietlibc = callPackage ../os-specific/linux/dietlibc {- };- directvnc = builderDefsPackage ../os-specific/linux/directvnc {- inherit libjpeg pkgconfig zlib- directfb;- inherit (xlibs) xproto;- };- dmraid = callPackage ../os-specific/linux/dmraid {- };- drbd = callPackage ../os-specific/linux/drbd {- };- dstat = callPackage ../os-specific/linux/dstat {- python = pythonFull;- };- libossp_uuid = callPackage ../development/libraries/libossp-uuid {- };- libuuid = if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then utillinux // {- crossDrv = lib.overrideDerivation utillinux.crossDrv (args:- {- configureFlags = args.configureFlags + " --disable-libblkid --disable-mount --disable-libmount" + " --disable-fsck --enable-static --disable-partx";- doCheck = false;- CPPFLAGS = lib.concatStringsSep " " (map (v:- "-D${v}=4096") [- "PATH_MAX"- "MAXPATHLEN"- "MAXHOSTNAMELEN"- ]);- });- }- else if stdenv.isLinux- then utillinux- else null;- e3cfsprogs = callPackage ../os-specific/linux/e3cfsprogs {- };- ebtables = callPackage ../os-specific/linux/ebtables {- };- eject = utillinux;- ffado = callPackage ../os-specific/linux/ffado {- };- fbterm = callPackage ../os-specific/linux/fbterm {- };- firejail = callPackage ../os-specific/linux/firejail {- };- fuse = callPackage ../os-specific/linux/fuse {- };- fxload = callPackage ../os-specific/linux/fxload {- };- gfxtablet = callPackage ../os-specific/linux/gfxtablet {- };- gpm = callPackage ../servers/gpm {- };- gradm = callPackage ../os-specific/linux/gradm {- flex = flex_2_5_35;- };- hdparm = callPackage ../os-specific/linux/hdparm {- };- hibernate = callPackage ../os-specific/linux/hibernate {- };- hostapd = callPackage ../os-specific/linux/hostapd {- };- htop = if stdenv.isLinux- then callPackage ../os-specific/linux/htop {- }- else if stdenv.isDarwin- then callPackage ../os-specific/darwin/htop {- }- else null;- gnu = recurseIntoAttrs (callPackage ../os-specific/gnu {- inherit platform crossSystem;- });- hwdata = callPackage ../os-specific/linux/hwdata {- };- i7z = callPackage ../os-specific/linux/i7z {- };- ifplugd = callPackage ../os-specific/linux/ifplugd {- };- iomelt = callPackage ../os-specific/linux/iomelt {- };- iotop = callPackage ../os-specific/linux/iotop {- };- iproute = callPackage ../os-specific/linux/iproute {- };- iputils = callPackage ../os-specific/linux/iputils {- sp = spCompat;- inherit (perlPackages) SGMLSpm;- };- iptables = callPackage ../os-specific/linux/iptables {- };- iw = callPackage ../os-specific/linux/iw {- };- jujuutils = callPackage ../os-specific/linux/jujuutils {- };- kbd = callPackage ../os-specific/linux/kbd {- };- kmscon = callPackage ../os-specific/linux/kmscon {- };- latencytop = callPackage ../os-specific/linux/latencytop {- };- ldm = callPackage ../os-specific/linux/ldm {- };- libaio = callPackage ../os-specific/linux/libaio {- };- libatasmart = callPackage ../os-specific/linux/libatasmart {- };- libcgroup = callPackage ../os-specific/linux/libcgroup {- };- libnl = callPackage ../os-specific/linux/libnl {- };- libnl_3_2_19 = callPackage ../os-specific/linux/libnl/3.2.19.nix {- };- linuxConsoleTools = callPackage ../os-specific/linux/consoletools {- };- linuxHeaders = linuxHeaders_3_7;- linuxHeaders24Cross = forceNativeDrv (import ../os-specific/linux/kernel-headers/2.4.nix {- inherit stdenv fetchurl perl;- cross = assert crossSystem != null; crossSystem;- });- linuxHeaders26Cross = forceNativeDrv (import ../os-specific/linux/kernel-headers/2.6.32.nix {- inherit stdenv fetchurl perl;- cross = assert crossSystem != null; crossSystem;- });- linuxHeaders_3_7 = callPackage ../os-specific/linux/kernel-headers/3.7.nix {- };- linuxHeaders_3_14 = callPackage ../os-specific/linux/kernel-headers/3.14.nix {- };- linuxHeadersCrossChooser = ver:- if ver == "2.4"- then linuxHeaders24Cross- else if ver == "2.6"- then linuxHeaders26Cross- else throw "Unknown linux kernel version";- linuxHeadersCross = assert crossSystem != null; linuxHeadersCrossChooser crossSystem.platform.kernelMajor;- kernelPatches = callPackage ../os-specific/linux/kernel/patches.nix {- };- linux_3_2 = makeOverridable (import ../os-specific/linux/kernel/linux-3.2.nix) {- inherit fetchurl stdenv perl- buildLinux;- kernelPatches = [ ];- };- linux_3_2_xen = lowPrio (linux_3_2.override {- extraConfig = ''XEN_DOM0 y'';- });- linux_3_4 = makeOverridable (import ../os-specific/linux/kernel/linux-3.4.nix) {- inherit fetchurl stdenv perl- buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips") [- kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- ];- };- linux_3_6_rpi = makeOverridable (import ../os-specific/linux/kernel/linux-rpi-3.6.nix) {- inherit fetchurl stdenv perl- buildLinux;- };- linux_3_10 = makeOverridable (import ../os-specific/linux/kernel/linux-3.10.nix) {- inherit fetchurl stdenv perl- buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips") [- kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- kernelPatches.mips_ext3_n32- ];- };- linux_3_12 = makeOverridable (import ../os-specific/linux/kernel/linux-3.12.nix) {- inherit fetchurl stdenv perl- buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips") [- kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- kernelPatches.mips_ext3_n32- ];- };- linux_3_14 = makeOverridable (import ../os-specific/linux/kernel/linux-3.14.nix) {- inherit fetchurl stdenv perl- buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips") [- kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- kernelPatches.mips_ext3_n32- ];- };- linux_3_15 = makeOverridable (import ../os-specific/linux/kernel/linux-3.15.nix) {- inherit fetchurl stdenv perl- buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips") [- kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- kernelPatches.mips_ext3_n32- ];- };- linux_3_16 = makeOverridable (import ../os-specific/linux/kernel/linux-3.16.nix) {- inherit fetchurl stdenv perl- buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips") [- kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- kernelPatches.mips_ext3_n32- ];- };- linux_testing = makeOverridable (import ../os-specific/linux/kernel/linux-testing.nix) {- inherit fetchurl stdenv perl- buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips") [- kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- kernelPatches.mips_ext3_n32- ];- };- grFlavors = import ../build-support/grsecurity/flavors.nix;- mkGrsecurity = opts:- import ../build-support/grsecurity {- grsecOptions = opts;- inherit pkgs lib;- };- grKernel = opts:- (mkGrsecurity opts).grsecKernel;- grPackage = opts:- recurseIntoAttrs (mkGrsecurity opts).grsecPackage;- linux_grsec_stable_desktop = grKernel grFlavors.linux_grsec_stable_desktop;- linux_grsec_stable_server = grKernel grFlavors.linux_grsec_stable_server;- linux_grsec_stable_server_xen = grKernel grFlavors.linux_grsec_stable_server_xen;- linux_grsec_testing_desktop = grKernel grFlavors.linux_grsec_testing_desktop;- linux_grsec_testing_server = grKernel grFlavors.linux_grsec_testing_server;- linux_grsec_testing_server_xen = grKernel grFlavors.linux_grsec_testing_server_xen;- linuxPackagesFor = kernel: self:- let- callPackage = newScope self;- in {- inherit kernel;- acpi_call = callPackage ../os-specific/linux/acpi-call {- };- batman_adv = callPackage ../os-specific/linux/batman-adv {- };- bbswitch = callPackage ../os-specific/linux/bbswitch {- };- ati_drivers_x11 = callPackage ../os-specific/linux/ati-drivers {- };- blcr = callPackage ../os-specific/linux/blcr {- };- cryptodev = callPackage ../os-specific/linux/cryptodev {- };- cpupower = callPackage ../os-specific/linux/cpupower {- };- e1000e = callPackage ../os-specific/linux/e1000e {- };- v4l2loopback = callPackage ../os-specific/linux/v4l2loopback {- };- frandom = callPackage ../os-specific/linux/frandom {- };- ktap = callPackage ../os-specific/linux/ktap {- };- lttng-modules = callPackage ../os-specific/linux/lttng-modules {- };- broadcom_sta = callPackage ../os-specific/linux/broadcom-sta/default.nix {- };- nvidiabl = callPackage ../os-specific/linux/nvidiabl {- };- nvidia_x11 = callPackage ../os-specific/linux/nvidia-x11 {- };- nvidia_x11_legacy173 = callPackage ../os-specific/linux/nvidia-x11/legacy173.nix {- };- nvidia_x11_legacy304 = callPackage ../os-specific/linux/nvidia-x11/legacy304.nix {- };- openafsClient = callPackage ../servers/openafs-client {- };- openiscsi = callPackage ../os-specific/linux/open-iscsi {- };- wis_go7007 = callPackage ../os-specific/linux/wis-go7007 {- };- kernelHeaders = callPackage ../os-specific/linux/kernel-headers {- };- klibc = callPackage ../os-specific/linux/klibc {- };- klibcShrunk = lowPrio (callPackage ../os-specific/linux/klibc/shrunk.nix {- });- ndiswrapper = callPackage ../os-specific/linux/ndiswrapper {- };- netatop = callPackage ../os-specific/linux/netatop {- };- perf = callPackage ../os-specific/linux/kernel/perf.nix {- };- psmouse_alps = callPackage ../os-specific/linux/psmouse-alps {- };- spl = callPackage ../os-specific/linux/spl {- };- spl_git = callPackage ../os-specific/linux/spl/git.nix {- };- sysdig = callPackage ../os-specific/linux/sysdig {- };- tp_smapi = callPackage ../os-specific/linux/tp_smapi {- };- v86d = callPackage ../os-specific/linux/v86d {- };- virtualbox = callPackage ../applications/virtualization/virtualbox {- stdenv = stdenv_32bit;- inherit (gnome) libIDL;- enableExtensionPack = config.virtualbox.enableExtensionPack or false;- };- virtualboxGuestAdditions = callPackage ../applications/virtualization/virtualbox/guest-additions {- };- zfs = callPackage ../os-specific/linux/zfs {- };- zfs_git = callPackage ../os-specific/linux/zfs/git.nix {- };- };- linux = linuxPackages.kernel;- linuxPackages = linuxPackages_3_12;- linux_latest = pkgs.linux_3_16;- linuxPackages_latest = pkgs.linuxPackages_3_16;- linuxPackages_3_2 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_2 linuxPackages_3_2);- linuxPackages_3_2_xen = linuxPackagesFor pkgs.linux_3_2_xen linuxPackages_3_2_xen;- linuxPackages_3_4 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_4 linuxPackages_3_4);- linuxPackages_3_6_rpi = linuxPackagesFor pkgs.linux_3_6_rpi linuxPackages_3_6_rpi;- linuxPackages_3_10 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_10 linuxPackages_3_10);- linuxPackages_3_10_tuxonice = linuxPackagesFor pkgs.linux_3_10_tuxonice linuxPackages_3_10_tuxonice;- linuxPackages_3_12 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_12 linuxPackages_3_12);- linuxPackages_3_14 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_14 linuxPackages_3_14);- linuxPackages_3_15 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_15 linuxPackages_3_15);- linuxPackages_3_16 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_16 linuxPackages_3_16);- linuxPackages_testing = recurseIntoAttrs (linuxPackagesFor pkgs.linux_testing linuxPackages_testing);- linuxPackages_grsec_stable_desktop = grPackage grFlavors.linux_grsec_stable_desktop;- linuxPackages_grsec_stable_server = grPackage grFlavors.linux_grsec_stable_server;- linuxPackages_grsec_stable_server_xen = grPackage grFlavors.linux_grsec_stable_server_xen;- linuxPackages_grsec_testing_desktop = grPackage grFlavors.linux_grsec_testing_desktop;- linuxPackages_grsec_testing_server = grPackage grFlavors.linux_grsec_testing_server;- linuxPackages_grsec_testing_server_xen = grPackage grFlavors.linux_grsec_testing_server_xen;- linuxManualConfig = pkgs.buildLinux;- buildLinux = import ../os-specific/linux/kernel/manual-config.nix {- inherit (pkgs) stdenv runCommand- nettools bc perl kmod- writeTextFile ubootChooser;- };- keyutils = callPackage ../os-specific/linux/keyutils {- };- libselinux = callPackage ../os-specific/linux/libselinux {- };- libsemanage = callPackage ../os-specific/linux/libsemanage {- };- libraw = callPackage ../development/libraries/libraw {- };- libraw1394 = callPackage ../development/libraries/libraw1394 {- };- libsexy = callPackage ../development/libraries/libsexy {- };- libsepol = callPackage ../os-specific/linux/libsepol {- };- libsmbios = callPackage ../os-specific/linux/libsmbios {- };- lm_sensors = callPackage ../os-specific/linux/lm-sensors {- };- lockdep = callPackage ../os-specific/linux/lockdep {- };- lsiutil = callPackage ../os-specific/linux/lsiutil {- };- kmod = callPackage ../os-specific/linux/kmod {- };- kmod-blacklist-ubuntu = callPackage ../os-specific/linux/kmod-blacklist-ubuntu {- };- kvm = qemu_kvm;- libcap = callPackage ../os-specific/linux/libcap {- };- libcap_progs = callPackage ../os-specific/linux/libcap/progs.nix {- };- libcap_pam = callPackage ../os-specific/linux/libcap/pam.nix {- };- libcap_manpages = callPackage ../os-specific/linux/libcap/man.nix {- };- libcap_ng = callPackage ../os-specific/linux/libcap-ng {- };- libnscd = callPackage ../os-specific/linux/libnscd {- };- libnotify = callPackage ../development/libraries/libnotify {- };- libvolume_id = callPackage ../os-specific/linux/libvolume_id {- };- lsscsi = callPackage ../os-specific/linux/lsscsi {- };- lvm2 = callPackage ../os-specific/linux/lvm2 {- };- mdadm = callPackage ../os-specific/linux/mdadm {- };- mingetty = callPackage ../os-specific/linux/mingetty {- };- module_init_tools = callPackage ../os-specific/linux/module-init-tools {- };- aggregateModules = modules:- callPackage ../os-specific/linux/kmod/aggregator.nix {- inherit modules;- };- multipath_tools = callPackage ../os-specific/linux/multipath-tools {- };- musl = callPackage ../os-specific/linux/musl {- };- nettools = callPackage ../os-specific/linux/net-tools {- };- neverball = callPackage ../games/neverball {- libpng = libpng15;- };- nftables = callPackage ../os-specific/linux/nftables {- };- numactl = callPackage ../os-specific/linux/numactl {- };- gocode = callPackage ../development/tools/gocode {- };- gogoclient = callPackage ../os-specific/linux/gogoclient {- };- nss_ldap = callPackage ../os-specific/linux/nss_ldap {- };- pam = callPackage ../os-specific/linux/pam {- };- pam_ccreds = callPackage ../os-specific/linux/pam_ccreds {- };- pam_console = callPackage ../os-specific/linux/pam_console {- libtool = libtool_1_5;- };- pam_devperm = callPackage ../os-specific/linux/pam_devperm {- };- pam_krb5 = callPackage ../os-specific/linux/pam_krb5 {- };- pam_ldap = callPackage ../os-specific/linux/pam_ldap {- };- pam_login = callPackage ../os-specific/linux/pam_login {- };- pam_ssh_agent_auth = callPackage ../os-specific/linux/pam_ssh_agent_auth {- };- pam_usb = callPackage ../os-specific/linux/pam_usb {- };- paxctl = callPackage ../os-specific/linux/paxctl {- };- pax-utils = callPackage ../os-specific/linux/pax-utils {- };- pcmciaUtils = callPackage ../os-specific/linux/pcmciautils {- firmware = config.pcmciaUtils.firmware or [- ];- config = config.pcmciaUtils.config or null;- };- plymouth = callPackage ../os-specific/linux/plymouth {- automake = automake113x;- };- pmount = callPackage ../os-specific/linux/pmount {- };- pmutils = callPackage ../os-specific/linux/pm-utils {- };- pmtools = callPackage ../os-specific/linux/pmtools {- };- policycoreutils = callPackage ../os-specific/linux/policycoreutils {- };- powertop = callPackage ../os-specific/linux/powertop {- };- prayer = callPackage ../servers/prayer {- };- procps = procps-ng;- procps-old = lowPrio (callPackage ../os-specific/linux/procps {- });- procps-ng = callPackage ../os-specific/linux/procps-ng {- };- watch = callPackage ../os-specific/linux/procps/watch.nix {- };- qemu_kvm = lowPrio (qemu.override {- x86Only = true;- });- firmwareLinuxNonfree = callPackage ../os-specific/linux/firmware/firmware-linux-nonfree {- };- radeontools = callPackage ../os-specific/linux/radeontools {- };- raspberrypifw = callPackage ../os-specific/linux/firmware/raspberrypi {- };- regionset = callPackage ../os-specific/linux/regionset {- };- rfkill = callPackage ../os-specific/linux/rfkill {- };- rfkill_udev = callPackage ../os-specific/linux/rfkill/udev.nix {- };- rtkit = callPackage ../os-specific/linux/rtkit {- };- sdparm = callPackage ../os-specific/linux/sdparm {- };- sepolgen = callPackage ../os-specific/linux/sepolgen {- };- setools = callPackage ../os-specific/linux/setools {- };- shadow = callPackage ../os-specific/linux/shadow {- };- statifier = builderDefsPackage (import ../os-specific/linux/statifier) {- };- sysdig = callPackage ../os-specific/linux/sysdig {- kernel = null;- };- sysfsutils = callPackage ../os-specific/linux/sysfsutils {- };- sysprof = callPackage ../development/tools/profiling/sysprof {- inherit (gnome) libglade;- };- libsysfs = sysfsutils;- systool = sysfsutils;- sysklogd = callPackage ../os-specific/linux/sysklogd {- };- syslinux = callPackage ../os-specific/linux/syslinux {- };- sysstat = callPackage ../os-specific/linux/sysstat {- };- systemd = callPackage ../os-specific/linux/systemd {- linuxHeaders = linuxHeaders_3_14;- };- systemtap = callPackage ../development/tools/profiling/systemtap {- inherit (gnome) libglademm;- };- systemd_with_lvm2 = pkgs.lib.overrideDerivation pkgs.systemd (p:- {- name = p.name + "-with-lvm2";- postInstall = p.postInstall + ''- cp "${pkgs.lvm2}/lib/systemd/system-generators/"* ''$out/lib/systemd/system-generators- '';- });- sysvinit = callPackage ../os-specific/linux/sysvinit {- };- sysvtools = callPackage ../os-specific/linux/sysvinit {- withoutInitTools = true;- };- tcp_wrappers = callPackage ../os-specific/linux/tcp-wrappers {- };- trackballs = callPackage ../games/trackballs {- debug = false;- guile = guile_1_8;- };- tunctl = callPackage ../os-specific/linux/tunctl {- };- ubootChooser = name:- if name == "upstream"- then ubootUpstream- else if name == "sheevaplug"- then ubootSheevaplug- else if name == "guruplug"- then ubootGuruplug- else if name == "nanonote"- then ubootNanonote- else throw "Unknown uboot";- ubootUpstream = callPackage ../misc/uboot {- };- ubootSheevaplug = callPackage ../misc/uboot/sheevaplug.nix {- };- ubootNanonote = callPackage ../misc/uboot/nanonote.nix {- };- ubootGuruplug = callPackage ../misc/uboot/guruplug.nix {- };- uclibc = callPackage ../os-specific/linux/uclibc {- };- uclibcCross = lowPrio (callPackage ../os-specific/linux/uclibc {- inherit fetchurl stdenv- libiconv;- linuxHeaders = linuxHeadersCross;- gccCross = gccCrossStageStatic;- cross = assert crossSystem != null; crossSystem;- });- udev145 = callPackage ../os-specific/linux/udev/145.nix {- };- udev = pkgs.systemd;- udisks1 = callPackage ../os-specific/linux/udisks/1-default.nix {- };- udisks2 = callPackage ../os-specific/linux/udisks/2-default.nix {- };- udisks = udisks1;- udisks_glue = callPackage ../os-specific/linux/udisks-glue {- };- untie = callPackage ../os-specific/linux/untie {- };- upower = callPackage ../os-specific/linux/upower {- };- upower_99 = callPackage ../os-specific/linux/upower/0.99.nix {- };- upstart = callPackage ../os-specific/linux/upstart {- };- usbutils = callPackage ../os-specific/linux/usbutils {- };- usermount = callPackage ../os-specific/linux/usermount {- };- utillinux = lowPrio (callPackage ../os-specific/linux/util-linux {- ncurses = null;- perl = null;- });- utillinuxCurses = utillinux.override {- inherit ncurses perl;- };- v4l_utils = callPackage ../os-specific/linux/v4l-utils {- withQt4 = true;- };- windows = rec {- cygwinSetup = callPackage ../os-specific/windows/cygwin-setup {- };- jom = callPackage ../os-specific/windows/jom {- };- w32api = callPackage ../os-specific/windows/w32api {- gccCross = gccCrossStageStatic;- binutilsCross = binutilsCross;- };- w32api_headers = w32api.override {- onlyHeaders = true;- };- mingw_runtime = callPackage ../os-specific/windows/mingwrt {- gccCross = gccCrossMingw2;- binutilsCross = binutilsCross;- };- mingw_runtime_headers = mingw_runtime.override {- onlyHeaders = true;- };- mingw_headers1 = buildEnv {- name = "mingw-headers-1";- paths = [- w32api_headers- mingw_runtime_headers- ];- };- mingw_headers2 = buildEnv {- name = "mingw-headers-2";- paths = [- w32api- mingw_runtime_headers- ];- };- mingw_headers3 = buildEnv {- name = "mingw-headers-3";- paths = [- w32api- mingw_runtime- ];- };- mingw_w64 = callPackage ../os-specific/windows/mingw-w64 {- gccCross = gccCrossStageStatic;- binutilsCross = binutilsCross;- };- mingw_w64_headers = callPackage ../os-specific/windows/mingw-w64 {- onlyHeaders = true;- };- mingw_w64_pthreads = callPackage ../os-specific/windows/mingw-w64 {- onlyPthreads = true;- };- pthreads = callPackage ../os-specific/windows/pthread-w32 {- mingw_headers = mingw_headers3;- };- wxMSW = callPackage ../os-specific/windows/wxMSW-2.8 {- };- };- wesnoth = callPackage ../games/wesnoth {- lua = lua5;- };- wirelesstools = callPackage ../os-specific/linux/wireless-tools {- };- wpa_supplicant = callPackage ../os-specific/linux/wpa_supplicant {- };- wpa_supplicant_gui = callPackage ../os-specific/linux/wpa_supplicant/gui.nix {- };- xf86_input_mtrack = callPackage ../os-specific/linux/xf86-input-mtrack {- inherit (xorg) utilmacros xproto- inputproto xorgserver;- };- xf86_input_multitouch = callPackage ../os-specific/linux/xf86-input-multitouch {- };- xf86_input_wacom = callPackage ../os-specific/linux/xf86-input-wacom {- };- xf86_video_nested = callPackage ../os-specific/linux/xf86-video-nested {- inherit (xorg) fontsproto- renderproto utilmacros- xorgserver;- };- xf86_video_nouveau = xorg.xf86videonouveau;- xmoto = builderDefsPackage (import ../games/xmoto) {- inherit chipmunk sqlite curl- zlib bzip2 libjpeg libpng- freeglut mesa SDL SDL_mixer- SDL_image SDL_net SDL_ttf lua5- ode libxdg_basedir libxml2;- };- xorg_sys_opengl = callPackage ../os-specific/linux/opengl/xorg-sys {- };- zd1211fw = callPackage ../os-specific/linux/firmware/zd1211 {- };- andagii = callPackage ../data/fonts/andagii {- };- anonymousPro = callPackage ../data/fonts/anonymous-pro {- };- arkpandora_ttf = builderDefsPackage (import ../data/fonts/arkpandora) {- };- aurulent-sans = callPackage ../data/fonts/aurulent-sans {- };- bakoma_ttf = callPackage ../data/fonts/bakoma-ttf {- };- cacert = callPackage ../data/misc/cacert {- };- cantarell_fonts = callPackage ../data/fonts/cantarell-fonts {- };- corefonts = callPackage ../data/fonts/corefonts {- };- wrapFonts = paths:- import ../data/fonts/fontWrap {- inherit fetchurl stdenv- builderDefs paths;- inherit (xorg) mkfontdir- mkfontscale;- };- clearlyU = callPackage ../data/fonts/clearlyU {- };- cm_unicode = callPackage ../data/fonts/cm-unicode {- };- dejavu_fonts = callPackage ../data/fonts/dejavu-fonts {- inherit (perlPackages) FontTTF;- };- docbook5 = callPackage ../data/sgml+xml/schemas/docbook-5.0 {- };- docbook_sgml_dtd_31 = callPackage ../data/sgml+xml/schemas/sgml-dtd/docbook/3.1.nix {- };- docbook_sgml_dtd_41 = callPackage ../data/sgml+xml/schemas/sgml-dtd/docbook/4.1.nix {- };- docbook_xml_dtd_412 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.1.2.nix {- };- docbook_xml_dtd_42 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.2.nix {- };- docbook_xml_dtd_43 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.3.nix {- };- docbook_xml_dtd_45 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.5.nix {- };- docbook_xml_ebnf_dtd = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook-ebnf {- };- docbook_xml_xslt = docbook_xsl;- docbook_xsl = callPackage ../data/sgml+xml/stylesheets/xslt/docbook-xsl {- };- docbook5_xsl = docbook_xsl_ns;- docbook_xsl_ns = callPackage ../data/sgml+xml/stylesheets/xslt/docbook-xsl-ns {- };- dosemu_fonts = callPackage ../data/fonts/dosemu-fonts {- };- eb-garamond = callPackage ../data/fonts/eb-garamond {- };- fira = callPackage ../data/fonts/fira {- };- freefont_ttf = callPackage ../data/fonts/freefont-ttf {- };- freepats = callPackage ../data/misc/freepats {- };- gentium = callPackage ../data/fonts/gentium {- };- gnome_user_docs = callPackage ../data/documentation/gnome-user-docs {- };- inherit (gnome3) gsettings_desktop_schemas;- hicolor_icon_theme = callPackage ../data/icons/hicolor-icon-theme {- };- inconsolata = callPackage ../data/fonts/inconsolata {- };- ipafont = callPackage ../data/fonts/ipafont {- };- junicode = callPackage ../data/fonts/junicode {- };- kochi-substitute = callPackage ../data/fonts/kochi-substitute {- };- kochi-substitute-naga10 = callPackage ../data/fonts/kochi-substitute-naga10 {- };- liberation_ttf = callPackage ../data/fonts/redhat-liberation-fonts {- };- libertine = builderDefsPackage (import ../data/fonts/libertine) {- inherit fetchurl fontforge lib;- };- lmmath = callPackage ../data/fonts/lmodern/lmmath.nix {- };- lmodern = callPackage ../data/fonts/lmodern {- };- lohit-fonts = callPackage ../data/fonts/lohit-fonts {- };- manpages = callPackage ../data/documentation/man-pages {- };- miscfiles = callPackage ../data/misc/miscfiles {- };- mobile_broadband_provider_info = callPackage ../data/misc/mobile-broadband-provider-info {- };- mph_2b_damase = callPackage ../data/fonts/mph-2b-damase {- };- nafees = callPackage ../data/fonts/nafees {- };- oldstandard = callPackage ../data/fonts/oldstandard {- };- opensans-ttf = callPackage ../data/fonts/opensans-ttf {- };- poly = callPackage ../data/fonts/poly {- };- posix_man_pages = callPackage ../data/documentation/man-pages-posix {- };- pthreadmanpages = callPackage ../data/documentation/pthread-man-pages {- };- shared_mime_info = callPackage ../data/misc/shared-mime-info {- };- shared_desktop_ontologies = callPackage ../data/misc/shared-desktop-ontologies {- };- stdmanpages = callPackage ../data/documentation/std-man-pages {- };- symbola = callPackage ../data/fonts/symbola {- };- iana_etc = callPackage ../data/misc/iana-etc {- };- poppler_data = callPackage ../data/misc/poppler-data {- };- r3rs = callPackage ../data/documentation/rnrs/r3rs.nix {- };- r4rs = callPackage ../data/documentation/rnrs/r4rs.nix {- };- r5rs = callPackage ../data/documentation/rnrs/r5rs.nix {- };- source-code-pro = callPackage ../data/fonts/source-code-pro {- };- source-sans-pro = callPackage ../data/fonts/source-sans-pro {- };- source-serif-pro = callPackage ../data/fonts/source-serif-pro {- };- source-han-sans-japanese = callPackage ../data/fonts/source-han-sans/japanese.nix {- };- source-han-sans-korean = callPackage ../data/fonts/source-han-sans/korean.nix {- };- source-han-sans-simplified-chinese = callPackage ../data/fonts/source-han-sans/simplified-chinese.nix {- };- source-han-sans-traditional-chinese = callPackage ../data/fonts/source-han-sans/traditional-chinese.nix {- };- tango-icon-theme = callPackage ../data/icons/tango-icon-theme {- };- themes = name:- import (../data/misc/themes + ("/" + name + ".nix")) {- inherit fetchurl;- };- theano = callPackage ../data/fonts/theano {- };- tempora_lgc = callPackage ../data/fonts/tempora-lgc {- };- terminus_font = callPackage ../data/fonts/terminus-font {- };- tipa = callPackage ../data/fonts/tipa {- };- ttf_bitstream_vera = callPackage ../data/fonts/ttf-bitstream-vera {- };- tzdata = callPackage ../data/misc/tzdata {- };- ubuntu_font_family = callPackage ../data/fonts/ubuntu-font-family {- };- ucsFonts = callPackage ../data/fonts/ucs-fonts {- };- unifont = callPackage ../data/fonts/unifont {- };- vistafonts = callPackage ../data/fonts/vista-fonts {- };- wqy_microhei = callPackage ../data/fonts/wqy-microhei {- };- wqy_zenhei = callPackage ../data/fonts/wqy-zenhei {- };- xhtml1 = callPackage ../data/sgml+xml/schemas/xml-dtd/xhtml1 {- };- xkeyboard_config = xorg.xkeyboardconfig;- a2jmidid = callPackage ../applications/audio/a2jmidid {- };- aangifte2006 = callPackage_i686 ../applications/taxes/aangifte-2006 {- };- aangifte2007 = callPackage_i686 ../applications/taxes/aangifte-2007 {- };- aangifte2008 = callPackage_i686 ../applications/taxes/aangifte-2008 {- };- aangifte2009 = callPackage_i686 ../applications/taxes/aangifte-2009 {- };- aangifte2010 = callPackage_i686 ../applications/taxes/aangifte-2010 {- };- aangifte2011 = callPackage_i686 ../applications/taxes/aangifte-2011 {- };- aangifte2012 = callPackage_i686 ../applications/taxes/aangifte-2012 {- };- aangifte2013 = callPackage_i686 ../applications/taxes/aangifte-2013 {- };- abcde = callPackage ../applications/audio/abcde {- inherit (perlPackages) DigestSHA- MusicBrainz MusicBrainzDiscID;- libcdio = libcdio082;- };- abiword = callPackage ../applications/office/abiword {- inherit (gnome) libglade- libgnomecanvas;- };- abook = callPackage ../applications/misc/abook {- };- adobe-reader = callPackage_i686 ../applications/misc/adobe-reader {- };- aewan = callPackage ../applications/editors/aewan {- };- alchemy = callPackage ../applications/graphics/alchemy {- };- ams-lv2 = callPackage ../applications/audio/ams-lv2 {- };- amsn = callPackage ../applications/networking/instant-messengers/amsn {- };- antiword = callPackage ../applications/office/antiword {- };- ardour = ardour3;- ardour3 = lowPrio (callPackage ../applications/audio/ardour {- inherit (gnome) libgnomecanvas- libgnomecanvasmm;- });- arora = callPackage ../applications/networking/browsers/arora {- };- atom = callPackage ../applications/editors/atom {- gconf = gnome.GConf;- };- aseprite = callPackage ../applications/editors/aseprite {- giflib = giflib_4_1;- };- audacious = callPackage ../applications/audio/audacious {- };- audacity = callPackage ../applications/audio/audacity {- ffmpeg = ffmpeg_0_10;- };- milkytracker = callPackage ../applications/audio/milkytracker {- };- aumix = callPackage ../applications/audio/aumix {- gtkGUI = false;- };- autopanosiftc = callPackage ../applications/graphics/autopanosiftc {- };- avidemux = callPackage ../applications/video/avidemux {- };- avogadro = callPackage ../applications/science/chemistry/avogadro {- eigen = eigen2;- };- avrdudess = callPackage ../applications/misc/avrdudess {- };- avxsynth = callPackage ../applications/video/avxsynth {- };- awesome-3-4 = callPackage ../applications/window-managers/awesome/3.4.nix {- lua = lua5;- cairo = cairo.override {- xcbSupport = true;- };- };- awesome-3-5 = callPackage ../applications/window-managers/awesome {- lua = lua5_1;- cairo = cairo.override {- xcbSupport = true;- };- };- awesome = awesome-3-5;- inherit (gnome3) baobab;- bar = callPackage ../applications/window-managers/bar {- };- baresip = callPackage ../applications/networking/instant-messengers/baresip {- ffmpeg = ffmpeg_1;- };- batik = callPackage ../applications/graphics/batik {- };- bazaar = callPackage ../applications/version-management/bazaar {- };- bazaarTools = builderDefsPackage (import ../applications/version-management/bazaar/tools.nix) {- inherit bazaar;- };- beast = callPackage ../applications/audio/beast {- inherit (gnome) libgnomecanvas- libart_lgpl;- guile = guile_1_8;- };- bibletime = callPackage ../applications/misc/bibletime {- };- bitcoin = callPackage ../applications/misc/bitcoin {- };- bitlbee = callPackage ../applications/networking/instant-messengers/bitlbee {- gnutls = gnutls;- libotr = libotr_3_2;- };- blender = callPackage ../applications/misc/blender {- python = python34;- };- bristol = callPackage ../applications/audio/bristol {- };- bspwm = callPackage ../applications/window-managers/bspwm {- };- bvi = callPackage ../applications/editors/bvi {- };- calf = callPackage ../applications/audio/calf {- inherit (gnome) libglade;- };- calibre = callPackage ../applications/misc/calibre {- inherit (pythonPackages) pyqt5- sip_4_16;- };- camlistore = callPackage ../applications/misc/camlistore {- };- carrier = builderDefsPackage (import ../applications/networking/instant-messengers/carrier/2.5.0.nix) {- inherit fetchurl stdenv- pkgconfig perl perlXMLParser- libxml2 openssl nss gtkspell- aspell gettext ncurses avahi- dbus dbus_glib python libtool- automake autoconf gstreamer;- inherit gtk glib;- inherit (gnome) startupnotification- GConf;- inherit (xlibs) libXScrnSaver- scrnsaverproto libX11 xproto- kbproto;- };- funpidgin = carrier;- cc1394 = callPackage ../applications/video/cc1394 {- };- cddiscid = callPackage ../applications/audio/cd-discid {- };- cdparanoia = cdparanoiaIII;- cdparanoiaIII = callPackage ../applications/audio/cdparanoia {- };- cdrtools = callPackage ../applications/misc/cdrtools {- };- centerim = callPackage ../applications/networking/instant-messengers/centerim {- };- cgit = callPackage ../applications/version-management/git-and-tools/cgit {- };- cgminer = callPackage ../applications/misc/cgminer {- amdappsdk = amdappsdk28;- };- chatzilla = callPackage ../applications/networking/irc/chatzilla {- };- chromium = lowPrio (callPackage ../applications/networking/browsers/chromium {- channel = "stable";- pulseSupport = config.pulseaudio or true;- enablePepperFlash = config.chromium.enablePepperFlash or false;- enablePepperPDF = config.chromium.enablePepperPDF or false;- });- chromiumBeta = lowPrio (chromium.override {- channel = "beta";- });- chromiumBetaWrapper = lowPrio (wrapChromium chromiumBeta);- chromiumDev = lowPrio (chromium.override {- channel = "dev";- });- chromiumDevWrapper = lowPrio (wrapChromium chromiumDev);- chromiumWrapper = wrapChromium chromium;- cinelerra = callPackage ../applications/video/cinelerra {- };- clipit = callPackage ../applications/misc/clipit {- };- cmus = callPackage ../applications/audio/cmus {- };- compiz = callPackage ../applications/window-managers/compiz {- inherit (gnome) GConf ORBit2- metacity;- boost = boost149;- };- coriander = callPackage ../applications/video/coriander {- inherit (gnome) libgnomeui- GConf;- };- csound = callPackage ../applications/audio/csound {- };- cinepaint = callPackage ../applications/graphics/cinepaint {- fltk = fltk13;- libpng = libpng12;- };- codeblocks = callPackage ../applications/editors/codeblocks {- };- codeblocksFull = callPackage ../applications/editors/codeblocks {- contribPlugins = true;- };- codeville = builderDefsPackage (import ../applications/version-management/codeville/0.8.0.nix) {- inherit makeWrapper;- python = pythonFull;- };- comical = callPackage ../applications/graphics/comical {- };- conkeror = callPackage ../applications/networking/browsers/conkeror {- };- conkerorWrapper = wrapFirefox {- browser = conkeror;- browserName = "conkeror";- desktopName = "Conkeror";- };- cuneiform = builderDefsPackage (import ../tools/graphics/cuneiform) {- inherit cmake patchelf;- imagemagick = imagemagick;- };- cvs = callPackage ../applications/version-management/cvs {- };- cvsps = callPackage ../applications/version-management/cvsps {- };- cvs2svn = callPackage ../applications/version-management/cvs2svn {- };- d4x = callPackage ../applications/misc/d4x {- };- darcs = with haskellPackages_ghc783; callPackage ../applications/version-management/darcs {- cabal = cabal.override {- extension = self: super: {- isLibrary = false;- configureFlags = "-f-library " + (super.configureFlags or "");- };- };- };- darktable = callPackage ../applications/graphics/darktable {- inherit (gnome) GConf libglade;- };- dd-agent = callPackage ../tools/networking/dd-agent {- inherit (pythonPackages) tornado;- };- dia = callPackage ../applications/graphics/dia {- inherit (pkgs.gnome) libart_lgpl- libgnomeui;- };- diffuse = callPackage ../applications/version-management/diffuse {- };- distrho = callPackage ../applications/audio/distrho {- };- djvulibre = callPackage ../applications/misc/djvulibre {- };- djvu2pdf = callPackage ../tools/typesetting/djvu2pdf {- };- djview = callPackage ../applications/graphics/djview {- };- djview4 = pkgs.djview;- dmenu = callPackage ../applications/misc/dmenu {- enableXft = config.dmenu.enableXft or false;- };- dmtx = builderDefsPackage (import ../tools/graphics/dmtx) {- inherit libpng libtiff libjpeg- imagemagick librsvg pkgconfig- bzip2 zlib libtool freetype- fontconfig ghostscript jasper- xz;- inherit (xlibs) libX11;- };- docker = callPackage ../applications/virtualization/docker {- };- doodle = callPackage ../applications/search/doodle {- };- dunst = callPackage ../applications/misc/dunst {- };- dvb_apps = callPackage ../applications/video/dvb-apps {- };- dvdauthor = callPackage ../applications/video/dvdauthor {- };- dwb = callPackage ../applications/networking/browsers/dwb {- dconf = gnome3.dconf;- };- dwbWrapper = wrapFirefox {- browser = dwb;- browserName = "dwb";- desktopName = "dwb";- };- dwm = callPackage ../applications/window-managers/dwm {- patches = config.dwm.patches or [- ];- };- dzen2 = callPackage ../applications/window-managers/dzen2 {- };- eaglemode = callPackage ../applications/misc/eaglemode {- };- eclipses = recurseIntoAttrs (callPackage ../applications/editors/eclipse {- });- ed = callPackage ../applications/editors/ed {- };- ekho = callPackage ../applications/audio/ekho {- };- electrum = callPackage ../applications/misc/electrum {- };- elinks = callPackage ../applications/networking/browsers/elinks {- };- elvis = callPackage ../applications/editors/elvis {- };- emacs = emacs24;- emacs24 = callPackage ../applications/editors/emacs-24 {- libXaw = xlibs.libXaw;- Xaw3d = null;- gconf = null;- librsvg = null;- alsaLib = null;- imagemagick = null;- };- emacs24-nox = lowPrio (appendToName "nox" (emacs24.override {- withX = false;- }));- emacs24Macport = lowPrio (callPackage ../applications/editors/emacs-24/macport.nix {- stdenv = pkgs.clangStdenv;- });- emacsPackages = emacs: self: let- callPackage = newScope self;- in rec {- inherit emacs;- autoComplete = callPackage ../applications/editors/emacs-modes/auto-complete {- };- bbdb = callPackage ../applications/editors/emacs-modes/bbdb {- };- bbdb3 = callPackage ../applications/editors/emacs-modes/bbdb/3.nix {- };- cedet = callPackage ../applications/editors/emacs-modes/cedet {- };- calfw = callPackage ../applications/editors/emacs-modes/calfw {- };- coffee = callPackage ../applications/editors/emacs-modes/coffee {- };- colorTheme = callPackage ../applications/editors/emacs-modes/color-theme {- };- colorThemeSolarized = callPackage ../applications/editors/emacs-modes/color-theme-solarized {- };- cryptol = callPackage ../applications/editors/emacs-modes/cryptol {- };- cua = callPackage ../applications/editors/emacs-modes/cua {- };- darcsum = callPackage ../applications/editors/emacs-modes/darcsum {- };- jabber = callPackage ../applications/editors/emacs-modes/jabber {- };- emacsClangCompleteAsync = callPackage ../applications/editors/emacs-modes/emacs-clang-complete-async {- };- emacsSessionManagement = callPackage ../applications/editors/emacs-modes/session-management-for-emacs {- };- emacsw3m = callPackage ../applications/editors/emacs-modes/emacs-w3m {- };- emms = callPackage ../applications/editors/emacs-modes/emms {- };- ess = callPackage ../applications/editors/emacs-modes/ess {- };- flymakeCursor = callPackage ../applications/editors/emacs-modes/flymake-cursor {- };- gh = callPackage ../applications/editors/emacs-modes/gh {- };- graphvizDot = callPackage ../applications/editors/emacs-modes/graphviz-dot {- };- gist = callPackage ../applications/editors/emacs-modes/gist {- };- idris = callPackage ../applications/editors/emacs-modes/idris {- };- jade = callPackage ../applications/editors/emacs-modes/jade {- };- jdee = callPackage ../applications/editors/emacs-modes/jdee {- };- js2 = callPackage ../applications/editors/emacs-modes/js2 {- };- stratego = callPackage ../applications/editors/emacs-modes/stratego {- };- haskellMode = callPackage ../applications/editors/emacs-modes/haskell {- };- ocamlMode = callPackage ../applications/editors/emacs-modes/ocaml {- };- structuredHaskellMode = callPackage ../applications/editors/emacs-modes/structured-haskell-mode {- inherit (haskellPackages) cabal- haskellSrcExts;- };- tuaregMode = callPackage ../applications/editors/emacs-modes/tuareg {- };- hol_light_mode = callPackage ../applications/editors/emacs-modes/hol_light {- };- htmlize = callPackage ../applications/editors/emacs-modes/htmlize {- };- logito = callPackage ../applications/editors/emacs-modes/logito {- };- loremIpsum = callPackage ../applications/editors/emacs-modes/lorem-ipsum {- };- magit = callPackage ../applications/editors/emacs-modes/magit {- };- maudeMode = callPackage ../applications/editors/emacs-modes/maude {- };- metaweblog = callPackage ../applications/editors/emacs-modes/metaweblog {- };- notmuch = lowPrio (callPackage ../applications/networking/mailreaders/notmuch {- });- offlineimap = callPackage ../applications/editors/emacs-modes/offlineimap {- };- org = hiPrio (callPackage ../applications/editors/emacs-modes/org {- });- org2blog = callPackage ../applications/editors/emacs-modes/org2blog {- };- pcache = callPackage ../applications/editors/emacs-modes/pcache {- };- phpMode = callPackage ../applications/editors/emacs-modes/php {- };- prologMode = callPackage ../applications/editors/emacs-modes/prolog {- };- proofgeneral_4_2 = callPackage ../applications/editors/emacs-modes/proofgeneral/4.2.nix {- texinfo = texinfo4;- texLive = pkgs.texLiveAggregationFun {- paths = [- pkgs.texLive- pkgs.texLiveCMSuper- ];- };- };- proofgeneral_4_3_pre = callPackage ../applications/editors/emacs-modes/proofgeneral/4.3pre.nix {- texinfo = texinfo4;- texLive = pkgs.texLiveAggregationFun {- paths = [- pkgs.texLive- pkgs.texLiveCMSuper- ];- };- };- proofgeneral = self.proofgeneral_4_2;- quack = callPackage ../applications/editors/emacs-modes/quack {- };- rectMark = callPackage ../applications/editors/emacs-modes/rect-mark {- };- remember = callPackage ../applications/editors/emacs-modes/remember {- };- rudel = callPackage ../applications/editors/emacs-modes/rudel {- };- sbtMode = callPackage ../applications/editors/emacs-modes/sbt-mode {- };- scalaMode1 = callPackage ../applications/editors/emacs-modes/scala-mode/v1.nix {- };- scalaMode2 = callPackage ../applications/editors/emacs-modes/scala-mode/v2.nix {- };- sunriseCommander = callPackage ../applications/editors/emacs-modes/sunrise-commander {- };- writeGood = callPackage ../applications/editors/emacs-modes/writegood {- };- xmlRpc = callPackage ../applications/editors/emacs-modes/xml-rpc {- };- };- emacs24Packages = recurseIntoAttrs (emacsPackages emacs24 pkgs.emacs24Packages);- inherit (gnome3) empathy;- epdfview = callPackage ../applications/misc/epdfview {- };- inherit (gnome3) epiphany;- espeak = callPackage ../applications/audio/espeak {- };- espeakedit = callPackage ../applications/audio/espeak/edit.nix {- };- esniper = callPackage ../applications/networking/esniper {- };- etherape = callPackage ../applications/networking/sniffers/etherape {- inherit (gnome) gnomedocutils- libgnome libglade libgnomeui- scrollkeeper;- };- evopedia = callPackage ../applications/misc/evopedia {- };- keepassx = callPackage ../applications/misc/keepassx {- };- keepassx2 = callPackage ../applications/misc/keepassx/2.0.nix {- };- inherit (gnome3) evince;- evolution_data_server = gnome3.evolution_data_server;- keepass = callPackage ../applications/misc/keepass {- };- exrdisplay = callPackage ../applications/graphics/exrdisplay {- fltk = fltk20;- };- fbpanel = callPackage ../applications/window-managers/fbpanel {- };- fbreader = callPackage ../applications/misc/fbreader {- };- fetchmail = import ../applications/misc/fetchmail {- inherit stdenv fetchurl openssl;- };- fldigi = callPackage ../applications/audio/fldigi {- };- fluidsynth = callPackage ../applications/audio/fluidsynth {- };- fossil = callPackage ../applications/version-management/fossil {- };- fribid = callPackage ../applications/networking/browsers/mozilla-plugins/fribid {- };- fvwm = callPackage ../applications/window-managers/fvwm {- };- geany = callPackage ../applications/editors/geany {- };- gksu = callPackage ../applications/misc/gksu {- };- gnuradio = callPackage ../applications/misc/gnuradio {- inherit (pythonPackages) lxml- numpy scipy matplotlib pyopengl;- fftw = fftwFloat;- };- gnuradio-osmosdr = callPackage ../applications/misc/gnuradio-osmosdr {- };- goldendict = callPackage ../applications/misc/goldendict {- };- google-musicmanager = callPackage ../applications/audio/google-musicmanager {- };- gpicview = callPackage ../applications/graphics/gpicview {- };- gqrx = callPackage ../applications/misc/gqrx {- };- grass = import ../applications/misc/grass {- inherit (xlibs) libXmu libXext- libXp libX11 libXt libSM libICE- libXpm libXaw libXrender;- inherit config- composableDerivation stdenv- fetchurl lib flex bison cairo- fontconfig gdal zlib ncurses- gdbm proj pkgconfig swig blas- liblapack libjpeg libpng mysql- unixODBC mesa postgresql python- readline sqlite tcl tk libtiff- freetype makeWrapper wxGTK;- fftw = fftwSinglePrec;- ffmpeg = ffmpeg_0_10;- motif = lesstif;- opendwg = libdwg;- wxPython = wxPython28;- };- grip = callPackage ../applications/misc/grip {- inherit (gnome) libgnome- libgnomeui vte;- };- gtimelog = pythonPackages.gtimelog;- inherit (gnome3) gucharmap;- guitarix = callPackage ../applications/audio/guitarix {- fftw = fftwSinglePrec;- };- photivo = callPackage ../applications/graphics/photivo {- };- wavesurfer = callPackage ../applications/misc/audio/wavesurfer {- };- wireshark = callPackage ../applications/networking/sniffers/wireshark {- };- wvdial = callPackage ../os-specific/linux/wvdial {- };- fbida = callPackage ../applications/graphics/fbida {- };- fdupes = callPackage ../tools/misc/fdupes {- };- feh = callPackage ../applications/graphics/feh {- };- filezilla = callPackage ../applications/networking/ftp/filezilla {- };- firefox13Pkgs = callPackage ../applications/networking/browsers/firefox/13.0.nix {- inherit (gnome) libIDL;- };- firefox13Wrapper = wrapFirefox {- browser = firefox13Pkgs.firefox;- };- firefox30Pkgs = callPackage ../applications/networking/browsers/firefox/30.nix {- inherit (gnome) libIDL;- inherit (pythonPackages) pysqlite;- libpng = libpng_apng;- };- firefox = callPackage ../applications/networking/browsers/firefox {- inherit (gnome) libIDL;- inherit (pythonPackages) pysqlite;- };- firefoxWrapper = wrapFirefox {- browser = pkgs.firefox;- };- firefox-bin = callPackage ../applications/networking/browsers/firefox-bin {- gconf = pkgs.gnome.GConf;- inherit (pkgs.gnome) libgnome- libgnomeui;- inherit (pkgs.xlibs) libX11- libXScrnSaver libXext- libXinerama libXrender libXt;- };- flac = callPackage ../applications/audio/flac {- };- flashplayer = callPackage ../applications/networking/browsers/mozilla-plugins/flashplayer-11 {- debug = config.flashplayer.debug or false;- };- fluxbox = callPackage ../applications/window-managers/fluxbox {- };- freecad = callPackage ../applications/graphics/freecad {- opencascade = opencascade_6_5;- inherit (pythonPackages) matplotlib- pycollada;- };- freemind = callPackage ../applications/misc/freemind {- jdk = jdk;- jre = jdk;- };- freenet = callPackage ../applications/networking/p2p/freenet {- };- freepv = callPackage ../applications/graphics/freepv {- };- xfontsel = callPackage ../applications/misc/xfontsel {- };- xlsfonts = callPackage ../applications/misc/xlsfonts {- };- freerdp = callPackage ../applications/networking/remote/freerdp {- ffmpeg = ffmpeg_1;- };- freerdpUnstable = callPackage ../applications/networking/remote/freerdp/unstable.nix {- };- freicoin = callPackage ../applications/misc/freicoin {- };- fspot = callPackage ../applications/graphics/f-spot {- inherit (gnome) libgnome- libgnomeui;- gtksharp = gtksharp1;- };- fuze = callPackage ../applications/networking/instant-messengers/fuze {- };- gcolor2 = callPackage ../applications/graphics/gcolor2 {- };- get_iplayer = callPackage ../applications/misc/get_iplayer {- };- gimp_2_8 = callPackage ../applications/graphics/gimp/2.8.nix {- inherit (gnome) libart_lgpl;- webkit = null;- lcms = lcms2;- wrapPython = pythonPackages.wrapPython;- };- gimp = gimp_2_8;- gimpPlugins = recurseIntoAttrs (import ../applications/graphics/gimp/plugins {- inherit pkgs gimp;- });- gitAndTools = recurseIntoAttrs (import ../applications/version-management/git-and-tools {- inherit pkgs;- });- git = gitAndTools.git;- gitFull = gitAndTools.gitFull;- gitSVN = gitAndTools.gitSVN;- gitRepo = callPackage ../applications/version-management/git-repo {- python = python27;- };- gitolite = callPackage ../applications/version-management/gitolite {- };- inherit (gnome3) gitg;- giv = callPackage ../applications/graphics/giv {- pcre = pcre.override {- unicodeSupport = true;- };- };- gmrun = callPackage ../applications/misc/gmrun {- };- gnucash = callPackage ../applications/office/gnucash {- inherit (gnome2) libgnomeui- libgtkhtml gtkhtml libbonoboui- libgnomeprint libglade- libart_lgpl;- gconf = gnome2.GConf;- guile = guile_1_8;- slibGuile = slibGuile.override {- scheme = guile_1_8;- };- goffice = goffice_0_8;- };- goffice_0_8 = callPackage ../desktops/gnome-3/3.10/misc/goffice/0.8.nix {- inherit (gnome2) libglade- libgnomeui;- gconf = gnome2.GConf;- libart = gnome2.libart_lgpl;- };- ideas = recurseIntoAttrs (callPackage ../applications/editors/idea {- } // callPackage ../applications/editors/idea/pycharm.nix {- });- libquvi = callPackage ../applications/video/quvi/library.nix {- };- mi2ly = callPackage ../applications/audio/mi2ly {- };- praat = callPackage ../applications/audio/praat {- };- quvi = callPackage ../applications/video/quvi/tool.nix {- };- quvi_scripts = callPackage ../applications/video/quvi/scripts.nix {- };- qjackctl = callPackage ../applications/audio/qjackctl {- };- gkrellm = callPackage ../applications/misc/gkrellm {- };- gmu = callPackage ../applications/audio/gmu {- };- gnash = callPackage ../applications/video/gnash {- inherit (gnome) gtkglext;- };- gnome_mplayer = callPackage ../applications/video/gnome-mplayer {- inherit (gnome) GConf;- };- gnumeric = callPackage ../applications/office/gnumeric {- inherit (gnome3) goffice- gnome_icon_theme;- };- gnunet = callPackage ../applications/networking/p2p/gnunet {- libgcrypt = libgcrypt_1_6;- };- gnunet_svn = lowPrio (callPackage ../applications/networking/p2p/gnunet/svn.nix {- libgcrypt = libgcrypt_1_6;- });- gocr = callPackage ../applications/graphics/gocr {- };- gobby5 = callPackage ../applications/editors/gobby {- inherit (gnome) gtksourceview;- };- gphoto2 = callPackage ../applications/misc/gphoto2 {- };- gphoto2fs = builderDefsPackage ../applications/misc/gphoto2/gphotofs.nix {- inherit libgphoto2 fuse- pkgconfig glib libtool;- };- graphicsmagick = callPackage ../applications/graphics/graphicsmagick {- };- graphicsmagick_q16 = callPackage ../applications/graphics/graphicsmagick {- quantumdepth = 16;- };- graphicsmagick137 = callPackage ../applications/graphics/graphicsmagick/1.3.7.nix {- libpng = libpng12;- };- gtkpod = callPackage ../applications/audio/gtkpod {- inherit (gnome) libglade;- };- jbidwatcher = callPackage ../applications/misc/jbidwatcher {- java = if stdenv.isLinux- then jre- else jdk;- };- qrdecode = builderDefsPackage (import ../tools/graphics/qrdecode) {- libpng = libpng12;- opencv = opencv_2_1;- };- qrencode = callPackage ../tools/graphics/qrencode {- };- gecko_mediaplayer = callPackage ../applications/networking/browsers/mozilla-plugins/gecko-mediaplayer {- inherit (gnome) GConf;- browser = firefox;- };- geeqie = callPackage ../applications/graphics/geeqie {- };- gigedit = callPackage ../applications/audio/gigedit {- };- gqview = callPackage ../applications/graphics/gqview {- };- gmpc = callPackage ../applications/audio/gmpc {- };- gmtk = callPackage ../applications/networking/browsers/mozilla-plugins/gmtk {- inherit (gnome) GConf;- };- googleearth = callPackage_i686 ../applications/misc/googleearth {- };- google_talk_plugin = callPackage ../applications/networking/browsers/mozilla-plugins/google-talk-plugin {- libpng = libpng12;- };- gosmore = builderDefsPackage ../applications/misc/gosmore {- inherit fetchsvn curl pkgconfig- libxml2 gtk;- };- gpsbabel = callPackage ../applications/misc/gpsbabel {- };- gpscorrelate = callPackage ../applications/misc/gpscorrelate {- };- gpsd = callPackage ../servers/gpsd {- };- guitone = callPackage ../applications/version-management/guitone {- };- gv = callPackage ../applications/misc/gv {- };- guvcview = callPackage ../os-specific/linux/guvcview {- };- hello = callPackage ../applications/misc/hello/ex-2 {- };- herbstluftwm = callPackage ../applications/window-managers/herbstluftwm {- };- hexchat = callPackage ../applications/networking/irc/hexchat {- };- hexedit = callPackage ../applications/editors/hexedit {- };- hipchat = callPackage ../applications/networking/instant-messengers/hipchat {- };- homebank = callPackage ../applications/office/homebank {- };- htmldoc = callPackage ../applications/misc/htmldoc {- fltk = fltk13;- };- hugin = callPackage ../applications/graphics/hugin {- };- hydrogen = callPackage ../applications/audio/hydrogen {- };- i3 = callPackage ../applications/window-managers/i3 {- };- i3lock = callPackage ../applications/window-managers/i3/lock.nix {- inherit (xorg) libxkbfile;- cairo = cairo.override {- xcbSupport = true;- };- };- i3minator = callPackage ../tools/misc/i3minator {- };- i3status = callPackage ../applications/window-managers/i3/status.nix {- };- i810switch = callPackage ../os-specific/linux/i810switch {- };- icewm = callPackage ../applications/window-managers/icewm {- };- id3v2 = callPackage ../applications/audio/id3v2 {- };- ifenslave = callPackage ../os-specific/linux/ifenslave {- };- ii = callPackage ../applications/networking/irc/ii {- };- ike = callPackage ../applications/ike {- };- ikiwiki = callPackage ../applications/misc/ikiwiki {- inherit (perlPackages) TextMarkdown- URI HTMLParser HTMLScrubber- HTMLTemplate TimeDate CGISession- DBFile CGIFormBuilder- LocaleGettext RpcXML XMLSimple- PerlMagick YAML YAMLLibYAML- HTMLTree Filechdir- AuthenPassphrase- NetOpenIDConsumer- LWPxParanoidAgent CryptSSLeay;- };- imagemagick = callPackage ../applications/graphics/ImageMagick {- tetex = null;- librsvg = null;- };- imagemagickBig = lowPrio (callPackage ../applications/graphics/ImageMagick {- });- impressive = callPackage ../applications/office/impressive {- inherit (pythonPackages) pyopengl;- };- inferno = callPackage_i686 ../applications/inferno {- };- inkscape = callPackage ../applications/graphics/inkscape {- inherit (pythonPackages) lxml;- lcms = lcms2;- };- ion3 = callPackage ../applications/window-managers/ion-3 {- lua = lua5;- };- ipe = callPackage ../applications/graphics/ipe {- };- iptraf = callPackage ../applications/networking/iptraf {- };- irssi = callPackage ../applications/networking/irc/irssi {- stdenv = if stdenv.isDarwin- then stdenvAdapters.overrideGCC stdenv gccApple- else stdenv;- };- irssi_fish = callPackage ../applications/networking/irc/irssi/fish {- };- irssi_otr = callPackage ../applications/networking/irc/irssi/otr {- };- bip = callPackage ../applications/networking/irc/bip {- };- jack_capture = callPackage ../applications/audio/jack-capture {- };- jack_oscrolloscope = callPackage ../applications/audio/jack-oscrolloscope {- };- jack_rack = callPackage ../applications/audio/jack-rack {- };- jackmeter = callPackage ../applications/audio/jackmeter {- };- jalv = callPackage ../applications/audio/jalv {- };- jedit = callPackage ../applications/editors/jedit {- };- jigdo = callPackage ../applications/misc/jigdo {- };- jitsi = callPackage ../applications/networking/instant-messengers/jitsi {- };- joe = callPackage ../applications/editors/joe {- };- jbrout = callPackage ../applications/graphics/jbrout {- inherit (pythonPackages) lxml;- };- jwm = callPackage ../applications/window-managers/jwm {- };- k3d = callPackage ../applications/graphics/k3d {- inherit (pkgs.gnome2) gtkglext;- };- keepnote = callPackage ../applications/office/keepnote {- pygtk = pyGtkGlade;- };- kermit = callPackage ../tools/misc/kermit {- };- keymon = callPackage ../applications/video/key-mon {- };- kino = callPackage ../applications/video/kino {- inherit (gnome) libglade;- };- lame = callPackage ../applications/audio/lame {- };- larswm = callPackage ../applications/window-managers/larswm {- };- lash = callPackage ../applications/audio/lash {- };- ladspaH = callPackage ../applications/audio/ladspa-plugins/ladspah.nix {- };- ladspaPlugins = callPackage ../applications/audio/ladspa-plugins {- fftw = fftwSinglePrec;- };- caps = callPackage ../applications/audio/caps {- };- lastwatch = callPackage ../applications/audio/lastwatch {- };- lastfmsubmitd = callPackage ../applications/audio/lastfmsubmitd {- };- lbdb = callPackage ../tools/misc/lbdb {- };- lci = callPackage ../applications/science/logic/lci {- };- ldcpp = callPackage ../applications/networking/p2p/ldcpp {- inherit (gnome) libglade;- };- librecad = callPackage ../applications/misc/librecad {- };- librecad2 = callPackage ../applications/misc/librecad/2.0.nix {- };- libreoffice = callPackage ../applications/office/libreoffice {- inherit (perlPackages) ArchiveZip- CompressZlib;- inherit (gnome) GConf ORBit2- gnome_vfs;- zip = zip.override {- enableNLS = false;- };- boost = boost155;- jdk = openjdk;- fontsConf = makeFontsConf {- fontDirectories = [- freefont_ttf- xorg.fontmiscmisc- xorg.fontbhttf- ];- };- clucene_core = clucene_core_2;- lcms = lcms2;- harfbuzz = harfbuzz.override {- withIcu = true;- withGraphite2 = true;- };- };- liferea = callPackage ../applications/networking/newsreaders/liferea {- };- lingot = callPackage ../applications/audio/lingot {- inherit (gnome) libglade;- };- links = callPackage ../applications/networking/browsers/links {- };- ledger = callPackage ../applications/office/ledger/2.6.3.nix {- };- ledger3 = callPackage ../applications/office/ledger/3.0.nix {- };- lighttable = callPackage ../applications/editors/lighttable {- };- links2 = callPackage ../applications/networking/browsers/links2 {- };- linphone = callPackage ../applications/networking/instant-messengers/linphone rec {- inherit (gnome) libglade;- libexosip = libexosip_3;- libosip = libosip_3;- };- linuxsampler = callPackage ../applications/audio/linuxsampler {- bison = bison2;- };- llpp = callPackage ../applications/misc/llpp {- inherit (ocamlPackages) lablgl;- };- lmms = callPackage ../applications/audio/lmms {- };- lrzsz = callPackage ../tools/misc/lrzsz {- };- luminanceHDR = callPackage ../applications/graphics/luminance-hdr {- };- lxdvdrip = callPackage ../applications/video/lxdvdrip {- };- handbrake = callPackage ../applications/video/handbrake {- };- lynx = callPackage ../applications/networking/browsers/lynx {- };- lyx = callPackage ../applications/misc/lyx {- };- makeself = callPackage ../applications/misc/makeself {- };- matchbox = callPackage ../applications/window-managers/matchbox {- };- mcpp = callPackage ../development/compilers/mcpp {- };- mda_lv2 = callPackage ../applications/audio/mda-lv2 {- };- meld = callPackage ../applications/version-management/meld {- inherit (gnome) scrollkeeper;- pygtk = pyGtkGlade;- };- mcomix = callPackage ../applications/graphics/mcomix {- };- mercurial = callPackage ../applications/version-management/mercurial {- inherit (pythonPackages) curses- docutils;- guiSupport = false;- };- mercurialFull = appendToName "full" (pkgs.mercurial.override {- guiSupport = true;- });- merkaartor = callPackage ../applications/misc/merkaartor {- };- meshlab = callPackage ../applications/graphics/meshlab {- };- mhwaveedit = callPackage ../applications/audio/mhwaveedit {- };- mid2key = callPackage ../applications/audio/mid2key {- };- midori = callPackage ../applications/networking/browsers/midori {- };- midoriWrapper = wrapFirefox {- browser = midori;- browserName = "midori";- desktopName = "Midori";- icon = "${midori}/share/icons/hicolor/22x22/apps/midori.png";- };- mikmod = callPackage ../applications/audio/mikmod {- };- minicom = callPackage ../tools/misc/minicom {- };- minimodem = callPackage ../applications/audio/minimodem {- };- minidjvu = callPackage ../applications/graphics/minidjvu {- };- mirage = callPackage ../applications/graphics/mirage {- };- mixxx = callPackage ../applications/audio/mixxx {- inherit (vamp) vampSDK;- };- mmex = callPackage ../applications/office/mmex {- };- moc = callPackage ../applications/audio/moc {- };- monkeysAudio = callPackage ../applications/audio/monkeys-audio {- };- monodevelop = callPackage ../applications/editors/monodevelop {- inherit (gnome) gnome_vfs- libbonobo libglade libgnome- GConf;- mozilla = firefox;- gtksharp = gtksharp2;- };- monodoc = callPackage ../applications/editors/monodoc {- gtksharp = gtksharp1;- };- monotone = callPackage ../applications/version-management/monotone {- lua = lua5;- boost = boost149;- };- monotoneViz = builderDefsPackage (import ../applications/version-management/monotone-viz/mtn-head.nix) {- inherit ocaml graphviz pkgconfig- autoconf automake libtool glib- gtk;- inherit (ocamlPackages) lablgtk;- inherit (gnome) libgnomecanvas;- };- mopidy = callPackage ../applications/audio/mopidy {- };- mopidy-spotify = callPackage ../applications/audio/mopidy-spotify {- };- mopidy-moped = callPackage ../applications/audio/mopidy-moped {- };- mozilla = callPackage ../applications/networking/browsers/mozilla {- inherit (gnome) libIDL;- };- mozplugger = builderDefsPackage (import ../applications/networking/browsers/mozilla-plugins/mozplugger) {- inherit firefox;- inherit (xlibs) libX11 xproto;- };- easytag = callPackage ../applications/audio/easytag {- };- mp3info = callPackage ../applications/audio/mp3info {- };- mp3splt = callPackage ../applications/audio/mp3splt {- };- mpc123 = callPackage ../applications/audio/mpc123 {- };- mpg123 = callPackage ../applications/audio/mpg123 {- };- mpg321 = callPackage ../applications/audio/mpg321 {- };- mpc_cli = callPackage ../applications/audio/mpc {- };- ncmpc = callPackage ../applications/audio/ncmpc {- };- ncmpcpp = callPackage ../applications/audio/ncmpcpp {- };- normalize = callPackage ../applications/audio/normalize {- };- mplayer = callPackage ../applications/video/mplayer {- pulseSupport = config.pulseaudio or false;- vdpauSupport = config.mplayer.vdpauSupport or false;- };- mplayer2 = callPackage ../applications/video/mplayer2 {- ffmpeg = libav_9;- };- MPlayerPlugin = browser:- import ../applications/networking/browsers/mozilla-plugins/mplayerplug-in {- inherit browser;- inherit fetchurl stdenv- pkgconfig gettext;- inherit (xlibs) libXpm;- };- mpv = callPackage ../applications/video/mpv {- lua = lua5_1;- bs2bSupport = true;- quviSupport = true;- cacaSupport = true;- };- mrxvt = callPackage ../applications/misc/mrxvt {- };- multisync = callPackage ../applications/misc/multisync {- inherit (gnome) ORBit2 libbonobo- libgnomeui GConf;- };- mumble = callPackage ../applications/networking/mumble {- avahi = avahi.override {- withLibdnssdCompat = true;- };- jackSupport = config.mumble.jackSupport or false;- speechdSupport = config.mumble.speechdSupport or false;- };- murmur = callPackage ../applications/networking/mumble/murmur.nix {- avahi = avahi.override {- withLibdnssdCompat = true;- };- iceSupport = config.murmur.iceSupport or true;- };- mutt = callPackage ../applications/networking/mailreaders/mutt {- };- pcmanfm = callPackage ../applications/misc/pcmanfm {- };- ruby_gpgme = callPackage ../development/libraries/ruby_gpgme {- ruby = ruby19;- hoe = rubyLibs.hoe;- };- ruby_ncursesw_sup = callPackage ../development/libraries/ruby_ncursesw_sup {- };- shotcut = callPackage ../applications/video/shotcut {- mlt = mlt-qt5;- };- smplayer = callPackage ../applications/video/smplayer {- };- sup = with rubyLibs; callPackage ../applications/networking/mailreaders/sup {- ruby = ruby19.override {- cursesSupport = true;- };- inherit gettext highline iconv- locale lockfile text trollop- xapian_ruby which;- rmail_sup = "";- unicode = "";- bundler = pkgs.lib.overrideDerivation pkgs.rubyLibs.bundler (oldAttrs:- { dontPatchShebangs = 1; });- chronic = chronic;- gpgme = ruby_gpgme;- mime_types = mime_types;- ncursesw_sup = ruby_ncursesw_sup;- rake = rake;- };- synfigstudio = callPackage ../applications/graphics/synfigstudio {- fontsConf = makeFontsConf {- fontDirectories = [- freefont_ttf- ];- };- };- sxhkd = callPackage ../applications/window-managers/sxhkd {- };- msmtp = callPackage ../applications/networking/msmtp {- };- imapfilter = callPackage ../applications/networking/mailreaders/imapfilter.nix {- lua = lua5;- };- mupdf = callPackage ../applications/misc/mupdf {- };- mypaint = callPackage ../applications/graphics/mypaint {- };- mythtv = callPackage ../applications/video/mythtv {- };- tvtime = callPackage ../applications/video/tvtime {- kernel = linux;- };- nano = callPackage ../applications/editors/nano {- };- navipowm = callPackage ../applications/misc/navipowm {- };- navit = callPackage ../applications/misc/navit {- };- netbeans = callPackage ../applications/editors/netbeans {- };- ncdu = callPackage ../tools/misc/ncdu {- };- ncdc = callPackage ../applications/networking/p2p/ncdc {- };- nedit = callPackage ../applications/editors/nedit {- motif = lesstif;- };- netsurfBrowser = netsurf.browser;- netsurf = recurseIntoAttrs (import ../applications/networking/browsers/netsurf {- inherit pkgs;- });- notmuch = callPackage ../applications/networking/mailreaders/notmuch {- emacs = null;- };- nova = callPackage ../applications/virtualization/nova {- };- novaclient = callPackage ../applications/virtualization/nova/client.nix {- };- nspluginwrapper = callPackage ../applications/networking/browsers/mozilla-plugins/nspluginwrapper {- };- nvi = callPackage ../applications/editors/nvi {- };- nvpy = callPackage ../applications/editors/nvpy {- };- obconf = callPackage ../tools/X11/obconf {- inherit (gnome) libglade;- };- ocrad = callPackage ../applications/graphics/ocrad {- };- offrss = callPackage ../applications/networking/offrss {- };- ogmtools = callPackage ../applications/video/ogmtools {- };- omxplayer = callPackage ../applications/video/omxplayer {- };- oneteam = callPackage ../applications/networking/instant-messengers/oneteam {- };- openbox = callPackage ../applications/window-managers/openbox {- };- openimageio = callPackage ../applications/graphics/openimageio {- };- openjump = callPackage ../applications/misc/openjump {- };- openscad = callPackage ../applications/graphics/openscad {- };- opera = callPackage ../applications/networking/browsers/opera {- inherit (pkgs.kde4) kdelibs;- };- opusfile = callPackage ../applications/audio/opusfile {- };- opusTools = callPackage ../applications/audio/opus-tools {- };- pamixer = callPackage ../applications/audio/pamixer {- };- pan = callPackage ../applications/networking/newsreaders/pan {- spellChecking = false;- };- panotools = callPackage ../applications/graphics/panotools {- };- pavucontrol = callPackage ../applications/audio/pavucontrol {- };- paraview = callPackage ../applications/graphics/paraview {- };- pencil = callPackage ../applications/graphics/pencil {- };- petrifoo = callPackage ../applications/audio/petrifoo {- inherit (gnome) libgnomecanvas;- };- pdftk = callPackage ../tools/typesetting/pdftk {- };- pdfgrep = callPackage ../tools/typesetting/pdfgrep {- };- pianobar = callPackage ../applications/audio/pianobar {- };- pianobooster = callPackage ../applications/audio/pianobooster {- };- picard = callPackage ../applications/audio/picard {- };- picocom = callPackage ../tools/misc/picocom {- };- pidgin = callPackage ../applications/networking/instant-messengers/pidgin {- openssl = if config.pidgin.openssl or true- then openssl- else null;- gnutls = if config.pidgin.gnutls or false- then gnutls- else null;- libgcrypt = if config.pidgin.gnutls or false- then libgcrypt- else null;- startupnotification = libstartup_notification;- };- pidginlatex = callPackage ../applications/networking/instant-messengers/pidgin-plugins/pidgin-latex {- imagemagick = imagemagickBig;- };- pidginlatexSF = builderDefsPackage (import ../applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/pidgin-latex-sf.nix) {- inherit pkgconfig pidgin texLive- imagemagick which glib gtk;- };- pidginmsnpecan = callPackage ../applications/networking/instant-messengers/pidgin-plugins/msn-pecan {- };- pidginotr = callPackage ../applications/networking/instant-messengers/pidgin-plugins/otr {- };- pidginsipe = callPackage ../applications/networking/instant-messengers/pidgin-plugins/sipe {- };- toxprpl = callPackage ../applications/networking/instant-messengers/pidgin-plugins/tox-prpl {- };- pinfo = callPackage ../applications/misc/pinfo {- };- pinta = callPackage ../applications/graphics/pinta {- gtksharp = gtksharp2;- };- pommed = callPackage ../os-specific/linux/pommed {- inherit (xorg) libXpm;- };- potrace = callPackage ../applications/graphics/potrace {- };- posterazor = callPackage ../applications/misc/posterazor {- };- pqiv = callPackage ../applications/graphics/pqiv {- };- qiv = callPackage ../applications/graphics/qiv {- };- procmail = callPackage ../applications/misc/procmail {- };- pstree = callPackage ../applications/misc/pstree {- };- pulseview = callPackage ../applications/science/electronics/pulseview {- };- puredata = callPackage ../applications/audio/puredata {- };- pythonmagick = callPackage ../applications/graphics/PythonMagick {- };- qbittorrent = callPackage ../applications/networking/p2p/qbittorrent {- };- eiskaltdcpp = callPackage ../applications/networking/p2p/eiskaltdcpp {- };- qemu = callPackage ../applications/virtualization/qemu {- };- qmmp = callPackage ../applications/audio/qmmp {- };- qsampler = callPackage ../applications/audio/qsampler {- };- qsynth = callPackage ../applications/audio/qsynth {- };- qtpfsgui = callPackage ../applications/graphics/qtpfsgui {- };- qtractor = callPackage ../applications/audio/qtractor {- };- quodlibet = callPackage ../applications/audio/quodlibet {- inherit (pythonPackages) mutagen;- };- quodlibet-with-gst-plugins = callPackage ../applications/audio/quodlibet {- inherit (pythonPackages) mutagen;- withGstPlugins = true;- gst_plugins_bad = null;- };- rakarrack = callPackage ../applications/audio/rakarrack {- inherit (xorg) libXpm libXft;- fltk = fltk13;- };- rapcad = callPackage ../applications/graphics/rapcad {- };- rapidsvn = callPackage ../applications/version-management/rapidsvn {- };- ratpoison = callPackage ../applications/window-managers/ratpoison {- };- rawtherapee = callPackage ../applications/graphics/rawtherapee {- fftw = fftwSinglePrec;- };- rcs = callPackage ../applications/version-management/rcs {- };- rdesktop = callPackage ../applications/networking/remote/rdesktop {- };- recode = callPackage ../tools/text/recode {- };- retroshare = callPackage ../applications/networking/p2p/retroshare {- qt = qt4;- };- retroshare06 = lowPrio (callPackage ../applications/networking/p2p/retroshare/0.6.nix {- qt = qt4;- });- rsync = callPackage ../applications/networking/sync/rsync {- enableACLs = !(stdenv.isDarwin || stdenv.isSunOS || stdenv.isFreeBSD);- enableCopyDevicesPatch = config.rsync.enableCopyDevicesPatch or false;- };- rtl-sdr = callPackage ../applications/misc/rtl-sdr {- };- rubyripper = callPackage ../applications/audio/rubyripper {- };- rxvt = callPackage ../applications/misc/rxvt {- };- rxvt_unicode = callPackage ../applications/misc/rxvt_unicode {- perlSupport = true;- gdkPixbufSupport = true;- unicode3Support = true;- };- sakura = callPackage ../applications/misc/sakura {- inherit (gnome) vte;- };- sbagen = callPackage ../applications/misc/sbagen {- };- scite = callPackage ../applications/editors/scite {- };- scribus = callPackage ../applications/office/scribus {- inherit (gnome) libart_lgpl;- };- seafile-client = callPackage ../applications/networking/seafile-client {- };- seeks = callPackage ../tools/networking/p2p/seeks {- opencv = opencv_2_1;- };- seg3d = callPackage ../applications/graphics/seg3d {- wxGTK = wxGTK28.override {- unicode = false;- };- };- seq24 = callPackage ../applications/audio/seq24 {- };- setbfree = callPackage ../applications/audio/setbfree {- };- sflphone = callPackage ../applications/networking/instant-messengers/sflphone {- gtk = gtk3;- };- siproxd = callPackage ../applications/networking/siproxd {- };- skype = callPackage_i686 ../applications/networking/instant-messengers/skype {- };- skype4pidgin = callPackage ../applications/networking/instant-messengers/pidgin-plugins/skype4pidgin {- };- skype_call_recorder = callPackage ../applications/networking/instant-messengers/skype-call-recorder {- };- slrn = callPackage ../applications/networking/newsreaders/slrn {- };- spideroak = callPackage ../applications/networking/spideroak {- };- ssvnc = callPackage ../applications/networking/remote/ssvnc {- };- st = callPackage ../applications/misc/st {- conf = config.st.conf or null;- };- linuxstopmotion = callPackage ../applications/video/linuxstopmotion {- };- sweethome3d = recurseIntoAttrs (callPackage ../applications/misc/sweethome3d {- } // callPackage ../applications/misc/sweethome3d/editors.nix {- sweethome3dApp = sweethome3d.application;- });- sxiv = callPackage ../applications/graphics/sxiv {- };- bittorrentSync = callPackage ../applications/networking/bittorrentsync {- };- dropbox = callPackage ../applications/networking/dropbox {- };- dropbox-cli = callPackage ../applications/networking/dropbox-cli {- };- lightdm = callPackage ../applications/display-managers/lightdm {- };- lightdm_gtk_greeter = callPackage ../applications/display-managers/lightdm-gtk-greeter {- };- slic3r = callPackage ../applications/misc/slic3r {- perlPackages = perl514Packages;- perl = perl514;- };- curaengine = callPackage ../applications/misc/curaengine {- };- cura = callPackage ../applications/misc/cura {- };- printrun = callPackage ../applications/misc/printrun {- };- slim = callPackage ../applications/display-managers/slim {- libpng = libpng12;- };- smartdeblur = callPackage ../applications/graphics/smartdeblur {- };- snd = callPackage ../applications/audio/snd {- };- shntool = callPackage ../applications/audio/shntool {- };- sonic_visualiser = callPackage ../applications/audio/sonic-visualiser {- inherit (pkgs.vamp) vampSDK;- inherit (pkgs.xlibs) libX11;- fftw = pkgs.fftwSinglePrec;- };- sox = callPackage ../applications/misc/audio/sox {- };- soxr = callPackage ../applications/misc/audio/soxr {- };- spotify = callPackage ../applications/audio/spotify {- inherit (gnome) GConf;- libpng = libpng12;- };- libspotify = callPackage ../development/libraries/libspotify {- apiKey = config.libspotify.apiKey or null;- };- stalonetray = callPackage ../applications/window-managers/stalonetray {- };- stp = callPackage ../applications/science/logic/stp {- };- stumpwm = lispPackages.stumpwm;- sublime = callPackage ../applications/editors/sublime {- };- sublime3 = lowPrio (callPackage ../applications/editors/sublime3 {- });- subversion = callPackage ../applications/version-management/subversion/default.nix {- bdbSupport = true;- httpServer = false;- httpSupport = true;- pythonBindings = false;- perlBindings = false;- javahlBindings = false;- saslSupport = false;- httpd = apacheHttpd;- sasl = cyrus_sasl;- };- subversionClient = appendToName "client" (subversion.override {- bdbSupport = false;- perlBindings = true;- pythonBindings = true;- });- surf = callPackage ../applications/misc/surf {- webkit = webkitgtk2;- };- svk = perlPackages.SVK;- swh_lv2 = callPackage ../applications/audio/swh-lv2 {- };- sylpheed = callPackage ../applications/networking/mailreaders/sylpheed {- sslSupport = true;- gpgSupport = true;- };- symlinks = callPackage ../tools/system/symlinks {- };- syncthing = callPackage ../applications/networking/syncthing {- };- synergy = callPackage ../applications/misc/synergy {- };- tabbed = callPackage ../applications/window-managers/tabbed {- };- tahoelafs = callPackage ../tools/networking/p2p/tahoe-lafs {- inherit (pythonPackages) twisted- foolscap simplejson nevow zfec- pycryptopp sqlite3 darcsver- setuptoolsTrial setuptoolsDarcs- numpy pyasn1 mock;- };- tailor = builderDefsPackage (import ../applications/version-management/tailor) {- inherit makeWrapper python;- };- tangogps = callPackage ../applications/misc/tangogps {- gconf = gnome.GConf;- };- teamspeak_client = callPackage ../applications/networking/instant-messengers/teamspeak/client.nix {- };- teamspeak_server = callPackage ../applications/networking/instant-messengers/teamspeak/server.nix {- };- taskjuggler = callPackage ../applications/misc/taskjuggler {- };- taskwarrior = callPackage ../applications/misc/taskwarrior {- };- taskserver = callPackage ../servers/misc/taskserver {- };- telegram-cli = callPackage ../applications/networking/instant-messengers/telegram-cli/default.nix {- };- telepathy_gabble = callPackage ../applications/networking/instant-messengers/telepathy/gabble {- };- telepathy_haze = callPackage ../applications/networking/instant-messengers/telepathy/haze {- };- telepathy_logger = callPackage ../applications/networking/instant-messengers/telepathy/logger {- };- telepathy_mission_control = callPackage ../applications/networking/instant-messengers/telepathy/mission-control {- };- telepathy_rakia = callPackage ../applications/networking/instant-messengers/telepathy/rakia {- };- telepathy_salut = callPackage ../applications/networking/instant-messengers/telepathy/salut {- };- terminator = callPackage ../applications/misc/terminator {- vte = gnome.vte.override {- pythonSupport = true;- };- inherit (pythonPackages) notify;- };- tesseract = callPackage ../applications/graphics/tesseract {- };- thinkingRock = callPackage ../applications/misc/thinking-rock {- };- thunderbird = callPackage ../applications/networking/mailreaders/thunderbird {- inherit (gnome) libIDL;- inherit (pythonPackages) pysqlite;- libpng = libpng_apng;- };- thunderbird-bin = callPackage ../applications/networking/mailreaders/thunderbird-bin {- gconf = pkgs.gnome.GConf;- inherit (pkgs.gnome) libgnome- libgnomeui;- inherit (pkgs.xlibs) libX11- libXScrnSaver libXext- libXinerama libXrender libXt;- };- tig = gitAndTools.tig;- timidity = callPackage ../tools/misc/timidity {- };- tint2 = callPackage ../applications/misc/tint2 {- };- tkcvs = callPackage ../applications/version-management/tkcvs {- };- tla = callPackage ../applications/version-management/arch {- };- todo-txt-cli = callPackage ../applications/office/todo.txt-cli {- };- torchat = callPackage ../applications/networking/instant-messengers/torchat {- wrapPython = pythonPackages.wrapPython;- };- toxic = callPackage ../applications/networking/instant-messengers/toxic {- };- transcode = callPackage ../applications/audio/transcode {- };- transmission = callPackage ../applications/networking/p2p/transmission {- };- transmission_gtk = transmission.override {- enableGTK3 = true;- };- transmission_remote_gtk = callPackage ../applications/networking/p2p/transmission-remote-gtk {- };- trayer = callPackage ../applications/window-managers/trayer {- };- tree = callPackage ../tools/system/tree {- };- tribler = callPackage ../applications/networking/p2p/tribler {- };- twister = callPackage ../applications/networking/p2p/twister {- };- twmn = callPackage ../applications/misc/twmn {- };- twinkle = callPackage ../applications/networking/instant-messengers/twinkle {- };- umurmur = callPackage ../applications/networking/umurmur {- };- unison = callPackage ../applications/networking/sync/unison {- inherit (ocamlPackages) lablgtk;- enableX11 = config.unison.enableX11 or true;- };- uucp = callPackage ../tools/misc/uucp {- };- uvccapture = callPackage ../applications/video/uvccapture {- };- uwimap = callPackage ../tools/networking/uwimap {- };- uzbl = callPackage ../applications/networking/browsers/uzbl {- webkit = webkitgtk2;- };- uTox = callPackage ../applications/networking/instant-messengers/utox {- };- vanitygen = callPackage ../applications/misc/vanitygen {- };- vbindiff = callPackage ../applications/editors/vbindiff {- };- vcprompt = callPackage ../applications/version-management/vcprompt {- };- vdpauinfo = callPackage ../tools/X11/vdpauinfo {- };- veracity = callPackage ../applications/version-management/veracity {- };- viewMtn = builderDefsPackage (import ../applications/version-management/viewmtn/0.10.nix) {- inherit monotone cheetahTemplate- highlight ctags makeWrapper- graphviz which python;- flup = pythonPackages.flup;- };- vim = callPackage ../applications/editors/vim {- };- macvim = callPackage ../applications/editors/vim/macvim.nix {- };- vimHugeX = vim_configurable;- vim_configurable = callPackage ../applications/editors/vim/configurable.nix {- inherit (pkgs) fetchurl fetchhg- stdenv ncurses pkgconfig gettext- composableDerivation lib config- glib gtk python perl tcl ruby;- inherit (pkgs.xlibs) libX11- libXext libSM libXpm libXt- libXaw libXau libXmu libICE;- features = "huge";- lua = pkgs.lua5;- gui = config.vim.gui or "auto";- flags = [ "python" "X11" ];- inherit stdenvAdapters gccApple;- };- vimNox = lowPrio (vim_configurable.override {- source = "vim-nox";- });- qvim = lowPrio (callPackage ../applications/editors/vim/qvim.nix {- inherit (pkgs) fetchgit stdenv- ncurses pkgconfig gettext- composableDerivation lib config- python perl tcl ruby qt4;- inherit (pkgs.xlibs) libX11- libXext libSM libXpm libXt- libXaw libXau libXmu libICE;- inherit (pkgs) stdenvAdapters- gccApple;- features = "huge";- lua = pkgs.lua5;- flags = [ "python" "X11" ];- });- vimpc = callPackage ../applications/audio/vimpc {- };- virtviewer = callPackage ../applications/virtualization/virt-viewer {- gtkvnc = gtkvnc.override {- enableGTK3 = true;- };- spice_gtk = spice_gtk.override {- enableGTK3 = true;- };- };- virtmanager = callPackage ../applications/virtualization/virt-manager {- inherit (gnome) gnome_python;- vte = gnome3.vte;- dconf = gnome3.dconf;- gtkvnc = gtkvnc.override {- enableGTK3 = true;- };- spice_gtk = spice_gtk.override {- enableGTK3 = true;- };- };- virtinst = callPackage ../applications/virtualization/virtinst {- };- virtualgl = callPackage ../tools/X11/virtualgl {- };- bumblebee = callPackage ../tools/X11/bumblebee {- };- vkeybd = callPackage ../applications/audio/vkeybd {- inherit (xlibs) libX11;- };- vlc = callPackage ../applications/video/vlc {- };- vmpk = callPackage ../applications/audio/vmpk {- };- vnstat = callPackage ../applications/networking/vnstat {- };- vorbisTools = callPackage ../applications/audio/vorbis-tools {- };- vue = callPackage ../applications/misc/vue {- jre = icedtea7_jre;- };- vwm = callPackage ../applications/window-managers/vwm {- };- vym = callPackage ../applications/misc/vym {- };- w3m = callPackage ../applications/networking/browsers/w3m {- graphicsSupport = false;- };- weechat = callPackage ../applications/networking/irc/weechat {- };- weechatDevel = lowPrio (callPackage ../applications/networking/irc/weechat/devel.nix {- });- weston = callPackage ../applications/window-managers/weston {- };- windowmaker = callPackage ../applications/window-managers/windowmaker {- };- winswitch = callPackage ../tools/X11/winswitch {- };- wings = callPackage ../applications/graphics/wings {- erlang = erlangR14;- esdl = esdl.override {- erlang = erlangR14;- };- };- wmname = callPackage ../applications/misc/wmname {- };- wmctrl = callPackage ../tools/X11/wmctrl {- };- wmiimenu = import ../applications/window-managers/wmii31 {- libixp = libixp_for_wmii;- inherit fetchurl stdenv gawk;- inherit (xlibs) libX11;- };- wmiiSnap = import ../applications/window-managers/wmii {- libixp = libixp_for_wmii;- inherit fetchurl stdenv gawk;- inherit (xlibs) libX11 xextproto- libXt libXext;- includeUnpack = config.stdenv.includeUnpack or false;- };- wordnet = callPackage ../applications/misc/wordnet {- };- wrapChromium = browser:- wrapFirefox {- inherit browser;- browserName = browser.packageName;- desktopName = "Chromium";- icon = "${browser}/share/icons/hicolor/48x48/apps/${browser.packageName}.png";- };- wrapFirefox = { browser, browserName ? "firefox", desktopName ? "Firefox", icon ? "${browser}/lib/${browser.name}/browser/icons/mozicon128.png", nameSuffix ? "" }:- let- cfg = stdenv.lib.attrByPath [- browserName- ] { } config;- enableAdobeFlash = cfg.enableAdobeFlash or false;- enableGnash = cfg.enableGnash or false;- in import ../applications/networking/browsers/firefox/wrapper.nix {- inherit stdenv lib makeWrapper- makeDesktopItem browser- browserName desktopName- nameSuffix icon;- plugins = assert !(enableGnash && enableAdobeFlash); [- ] ++ lib.optional enableGnash gnash ++ lib.optional enableAdobeFlash flashplayer ++ lib.optional (cfg.enableDjvu or false) djview4 ++ lib.optional (cfg.enableMPlayer or false) (MPlayerPlugin browser) ++ lib.optional (cfg.enableGeckoMediaPlayer or false) gecko_mediaplayer ++ lib.optional (supportsJDK && (cfg.jre or false && jrePlugin ? mozillaPlugin)) jrePlugin ++ lib.optional (cfg.enableGoogleTalkPlugin or false) google_talk_plugin ++ lib.optional (cfg.enableFriBIDPlugin or false) fribid ++ lib.optional (cfg.enableGnomeExtensions or false) gnome3.gnome_shell;- libs = [- gstreamer- gst_plugins_base- ] ++ lib.optionals (cfg.enableQuakeLive or false) (with xlibs; [- stdenv.gcc- libX11- libXxf86dga- libXxf86vm- libXext- libXt- alsaLib- zlib- ]);- gtk_modules = [ libcanberra ];- };- x11vnc = callPackage ../tools/X11/x11vnc {- };- x2vnc = callPackage ../tools/X11/x2vnc {- };- xaos = builderDefsPackage (import ../applications/graphics/xaos) {- inherit (xlibs) libXt libX11- libXext xextproto xproto;- inherit gsl aalib zlib intltool- gettext perl;- libpng = libpng12;- };- xara = callPackage ../applications/graphics/xara {- };- xawtv = callPackage ../applications/video/xawtv {- };- xbindkeys = callPackage ../tools/X11/xbindkeys {- };- xbmc = callPackage ../applications/video/xbmc {- ffmpeg = ffmpeg_1;- };- xca = callPackage ../applications/misc/xca {- };- xcalib = callPackage ../tools/X11/xcalib {- };- xcape = callPackage ../tools/X11/xcape {- };- xchainkeys = callPackage ../tools/X11/xchainkeys {- };- xchat = callPackage ../applications/networking/irc/xchat {- };- xchm = callPackage ../applications/misc/xchm {- };- xcompmgr = callPackage ../applications/window-managers/xcompmgr {- };- compton = callPackage ../applications/window-managers/compton {- };- xdaliclock = callPackage ../tools/misc/xdaliclock {- };- xdg-user-dirs = callPackage ../tools/X11/xdg-user-dirs {- };- xdg_utils = callPackage ../tools/X11/xdg-utils {- };- xdotool = callPackage ../tools/X11/xdotool {- };- xen = callPackage ../applications/virtualization/xen {- stdenv = overrideGCC stdenv gcc45;- };- xfe = callPackage ../applications/misc/xfe {- fox = fox_1_6;- };- xfig = callPackage ../applications/graphics/xfig {- };- xineUI = callPackage ../applications/video/xine-ui {- };- xneur_0_13 = callPackage ../applications/misc/xneur {- };- xneur_0_8 = callPackage ../applications/misc/xneur/0.8.nix {- };- xneur = xneur_0_13;- gxneur = callPackage ../applications/misc/gxneur {- inherit (gnome) libglade GConf;- };- xournal = callPackage ../applications/graphics/xournal {- inherit (gnome) libgnomeprint- libgnomeprintui libgnomecanvas;- };- xpdf = callPackage ../applications/misc/xpdf {- motif = lesstif;- base14Fonts = "${ghostscript}/share/ghostscript/fonts";- };- xkb_switch = callPackage ../tools/X11/xkb-switch {- };- libxpdf = callPackage ../applications/misc/xpdf/libxpdf.nix {- };- xpra = callPackage ../tools/X11/xpra {- };- xrestop = callPackage ../tools/X11/xrestop {- };- xscreensaver = callPackage ../misc/screensavers/xscreensaver {- inherit (gnome) libglade;- };- xsynth_dssi = callPackage ../applications/audio/xsynth-dssi {- };- xterm = callPackage ../applications/misc/xterm {- };- finalterm = callPackage ../applications/misc/finalterm {- };- xtrace = callPackage ../tools/X11/xtrace {- };- xlaunch = callPackage ../tools/X11/xlaunch {- };- xmacro = callPackage ../tools/X11/xmacro {- };- xmove = callPackage ../applications/misc/xmove {- };- xmp = callPackage ../applications/audio/xmp {- };- xnee = callPackage ../tools/X11/xnee {- stdenv = overrideInStdenv stdenv [- gnumake381- ];- };- xvidcap = callPackage ../applications/video/xvidcap {- inherit (gnome) scrollkeeper- libglade;- };- yate = callPackage ../applications/misc/yate {- };- inherit (gnome3) yelp;- qgis = callPackage ../applications/misc/qgis {- };- qtbitcointrader = callPackage ../applications/misc/qtbitcointrader {- };- ykpers = callPackage ../applications/misc/ykpers {- };- yoshimi = callPackage ../applications/audio/yoshimi {- fltk = fltk13;- };- zathuraCollection = recurseIntoAttrs (let- callPackage = newScope pkgs.zathuraCollection;- in import ../applications/misc/zathura {- inherit callPackage pkgs- fetchurl;- useMupdf = config.zathura.useMupdf or false;- });- zathura = zathuraCollection.zathuraWrapper;- zed = callPackage ../applications/editors/zed {- };- zeroc_ice = callPackage ../development/libraries/zeroc-ice {- };- girara = callPackage ../applications/misc/girara {- gtk = gtk3;- };- zgrviewer = callPackage ../applications/graphics/zgrviewer {- };- zotero = callPackage ../applications/office/zotero {- xulrunner = xulrunner_30;- };- zynaddsubfx = callPackage ../applications/audio/zynaddsubfx {- };- alienarena = callPackage ../games/alienarena {- };- andyetitmoves = if stdenv.isLinux- then callPackage ../games/andyetitmoves {- }- else null;- anki = callPackage ../games/anki {- };- asc = callPackage ../games/asc {- lua = lua5;- libsigcxx = libsigcxx12;- };- astromenace = callPackage ../games/astromenace {- };- atanks = callPackage ../games/atanks {- };- ballAndPaddle = callPackage ../games/ball-and-paddle {- guile = guile_1_8;- };- bitsnbots = callPackage ../games/bitsnbots {- lua = lua5;- };- blackshades = callPackage ../games/blackshades {- };- blackshadeselite = callPackage ../games/blackshadeselite {- };- blobby = callPackage ../games/blobby {- };- bsdgames = callPackage ../games/bsdgames {- };- btanks = callPackage ../games/btanks {- };- bzflag = callPackage ../games/bzflag {- };- castle_combat = callPackage ../games/castle-combat {- };- chessdb = callPackage ../games/chessdb {- };- construoBase = lowPrio (callPackage ../games/construo {- mesa = null;- freeglut = null;- });- construo = construoBase.override {- inherit mesa freeglut;- };- crack_attack = callPackage ../games/crack-attack {- };- crafty = callPackage ../games/crafty {- };- craftyFull = appendToName "full" (crafty.override {- fullVariant = true;- });- crrcsim = callPackage ../games/crrcsim {- };- dhewm3 = callPackage ../games/dhewm3 {- };- drumkv1 = callPackage ../applications/audio/drumkv1 {- };- dwarf_fortress = callPackage_i686 ../games/dwarf-fortress {- SDL_image = pkgsi686Linux.SDL_image.override {- libpng = pkgsi686Linux.libpng12;- };- };- dwarf_fortress_2014 = callPackage_i686 ../games/dwarf-fortress/df2014.nix {- SDL_image = pkgsi686Linux.SDL_image.override {- libpng = pkgsi686Linux.libpng12;- };- };- dwarf_fortress_modable = appendToName "moddable" (dwarf_fortress.override {- copyDataDirectory = true;- });- dwarf_fortress_2014_modable = appendToName "moddable" (dwarf_fortress_2014.override {- copyDataDirectory = true;- });- dwarf-therapist = callPackage ../games/dwarf-therapist {- };- d1x_rebirth = callPackage ../games/d1x-rebirth {- };- d2x_rebirth = callPackage ../games/d2x-rebirth {- };- eboard = callPackage ../games/eboard {- };- eduke32 = callPackage ../games/eduke32 {- };- egoboo = callPackage ../games/egoboo {- };- exult = callPackage ../games/exult {- };- flightgear = callPackage ../games/flightgear {- };- freeciv = callPackage ../games/freeciv {- };- freeciv_gtk = callPackage ../games/freeciv {- gtkClient = true;- sdlClient = false;- };- freedink = callPackage ../games/freedink {- };- fsg = callPackage ../games/fsg {- wxGTK = wxGTK28.override {- unicode = false;- };- };- gemrb = callPackage ../games/gemrb {- };- gl117 = callPackage ../games/gl-117 {- };- glestae = callPackage ../games/glestae {- };- globulation2 = callPackage ../games/globulation {- };- gltron = callPackage ../games/gltron {- };- gnuchess = callPackage ../games/gnuchess {- };- gnugo = callPackage ../games/gnugo {- };- gparted = callPackage ../tools/misc/gparted {- };- gsmartcontrol = callPackage ../tools/misc/gsmartcontrol {- inherit (gnome) libglademm;- };- gtypist = callPackage ../games/gtypist {- };- hexen = callPackage ../games/hexen {- };- icbm3d = callPackage ../games/icbm3d {- };- ingen = callPackage ../applications/audio/ingen {- };- instead = callPackage ../games/instead {- lua = lua5;- };- kobodeluxe = callPackage ../games/kobodeluxe {- };- lincity = builderDefsPackage (import ../games/lincity) {- inherit (xlibs) libX11 libXext- xextproto libICE libSM xproto;- inherit libpng zlib;- };- lincity_ng = callPackage ../games/lincity/ng.nix {- };- mars = callPackage ../games/mars {- };- micropolis = callPackage ../games/micropolis {- };- mnemosyne = callPackage ../games/mnemosyne {- inherit (pythonPackages) matplotlib- cherrypy sqlite3;- };- naev = callPackage ../games/naev {- };- nexuiz = callPackage ../games/nexuiz {- };- njam = callPackage ../games/njam {- };- oilrush = callPackage ../games/oilrush {- };- openra = callPackage ../games/openra {- };- openttd = callPackage ../games/openttd {- zlib = zlibStatic;- };- opentyrian = callPackage ../games/opentyrian {- };- openxcom = callPackage ../games/openxcom {- };- pingus = callPackage ../games/pingus {- };- pioneers = callPackage ../games/pioneers {- };- pong3d = callPackage ../games/pong3d {- };- prboom = callPackage ../games/prboom {- };- quake3demo = callPackage ../games/quake3/wrapper {- name = "quake3-demo-${quake3game.name}";- description = "Demo of Quake 3 Arena, a classic first-person shooter";- game = quake3game;- paks = [ quake3demodata ];- };- quake3demodata = callPackage ../games/quake3/demo {- };- quake3game = callPackage ../games/quake3/game {- };- quantumminigolf = callPackage ../games/quantumminigolf {- };- racer = callPackage ../games/racer {- };- residualvm = callPackage ../games/residualvm {- openglSupport = mesaSupported;- };- rigsofrods = callPackage ../games/rigsofrods {- mygui = myguiSvn;- };- rili = callPackage ../games/rili {- };- rogue = callPackage ../games/rogue {- };- samplv1 = callPackage ../applications/audio/samplv1 {- };- sauerbraten = callPackage ../games/sauerbraten {- };- scid = callPackage ../games/scid {- };- scummvm = callPackage ../games/scummvm {- };- scorched3d = callPackage ../games/scorched3d {- };- sdlmame = callPackage ../games/sdlmame {- };- sgtpuzzles = builderDefsPackage (import ../games/sgt-puzzles) {- inherit pkgconfig fetchsvn perl- gtk;- inherit (xlibs) libX11;- };- simutrans = callPackage ../games/simutrans {- };- soi = callPackage ../games/soi {- };- spaceOrbit = callPackage ../games/orbit {- };- spring = callPackage ../games/spring {- };- springLobby = callPackage ../games/spring/springlobby.nix {- };- stardust = callPackage ../games/stardust {- };- steam = callPackage_i686 ../games/steam {- };- steamChrootEnv = callPackage_i686 ../games/steam/chrootenv.nix {- zenity = gnome2.zenity;- };- stuntrally = callPackage ../games/stuntrally {- };- superTux = callPackage ../games/super-tux {- };- superTuxKart = callPackage ../games/super-tux-kart {- };- synthv1 = callPackage ../applications/audio/synthv1 {- };- tbe = callPackage ../games/the-butterfly-effect {- };- teetertorture = callPackage ../games/teetertorture {- };- teeworlds = callPackage ../games/teeworlds {- };- tennix = callPackage ../games/tennix {- };- tibia = callPackage ../games/tibia {- };- tintin = callPackage ../games/tintin {- };- tpm = callPackage ../games/thePenguinMachine {- };- tremulous = callPackage ../games/tremulous {- };- speed_dreams = callPackage ../games/speed-dreams {- plib = plib.override {- enablePIC = !stdenv.isi686;- };- libpng = libpng12;- };- torcs = callPackage ../games/torcs {- plib = plib.override {- enablePIC = !stdenv.isi686;- };- };- trigger = callPackage ../games/trigger {- };- typespeed = callPackage ../games/typespeed {- };- ufoai = callPackage ../games/ufoai {- };- ultimatestunts = callPackage ../games/ultimatestunts {- };- ultrastardx = callPackage ../games/ultrastardx {- ffmpeg = ffmpeg_0_6;- lua = lua5;- };- unvanquished = callPackage ../games/unvanquished {- };- uqm = callPackage ../games/uqm {- };- urbanterror = callPackage ../games/urbanterror {- };- ut2004demo = callPackage ../games/ut2004demo {- };- vdrift = callPackage ../games/vdrift {- };- vectoroids = callPackage ../games/vectoroids {- };- vessel = callPackage_i686 ../games/vessel {- };- warmux = callPackage ../games/warmux {- };- warsow = callPackage ../games/warsow {- libjpeg = libjpeg62;- };- warzone2100 = callPackage ../games/warzone2100 {- };- widelands = callPackage ../games/widelands {- lua = lua5_1;- };- worldofgoo_demo = callPackage ../games/worldofgoo {- demo = true;- };- worldofgoo = callPackage ../games/worldofgoo {- };- xboard = callPackage ../games/xboard {- };- xconq = callPackage ../games/xconq {- };- xonotic = callPackage ../games/xonotic {- };- xskat = callPackage ../games/xskat {- };- xsokoban = builderDefsPackage (import ../games/xsokoban) {- inherit (xlibs) libX11 xproto- libXpm libXt;- };- zdoom = callPackage ../games/zdoom {- };- zod = callPackage ../games/zod {- };- zoom = callPackage ../games/zoom {- };- keen4 = callPackage ../games/keen4 {- };- zeroad = callPackage ../games/0ad {- };- cinnamon = recurseIntoAttrs rec {- callPackage = newScope pkgs.cinnamon;- inherit (gnome3) gnome_common- libgnomekbd gnome-menus zenity;- muffin = callPackage ../desktops/cinnamon/muffin.nix {- };- cinnamon-control-center = callPackage ../desktops/cinnamon/cinnamon-control-center.nix {- };- cinnamon-settings-daemon = callPackage ../desktops/cinnamon/cinnamon-settings-daemon.nix {- };- cinnamon-session = callPackage ../desktops/cinnamon/cinnamon-session.nix {- };- cinnamon-desktop = callPackage ../desktops/cinnamon/cinnamon-desktop.nix {- };- cinnamon-translations = callPackage ../desktops/cinnamon/cinnamon-translations.nix {- };- cjs = callPackage ../desktops/cinnamon/cjs.nix {- };- };- enlightenment = callPackage ../desktops/enlightenment {- };- e17 = recurseIntoAttrs (let- callPackage = newScope pkgs.e17;- in import ../desktops/e17 {- inherit callPackage pkgs;- });- e18 = recurseIntoAttrs (let- callPackage = newScope pkgs.e18;- in import ../desktops/e18 {- inherit callPackage pkgs;- });- gnome2 = callPackage ../desktops/gnome-2 {- callPackage = pkgs.newScope pkgs.gnome2;- self = pkgs.gnome2;- } // pkgs.gtkLibs // {- inherit (pkgs) libsoup libwnck- gtk_doc gnome_doc_utils;- };- gnome3 = recurseIntoAttrs (callPackage ../desktops/gnome-3/3.10 {- callPackage = pkgs.newScope pkgs.gnome3;- self = pkgs.gnome3;- });- gnome3_12 = recurseIntoAttrs (callPackage ../desktops/gnome-3/3.12 {- callPackage = pkgs.newScope pkgs.gnome3_12;- });- gnome = recurseIntoAttrs gnome2;- hsetroot = callPackage ../tools/X11/hsetroot {- };- kakasi = callPackage ../tools/text/kakasi {- };- kde4 = recurseIntoAttrs pkgs.kde412;- kde4_next = recurseIntoAttrs (lib.lowPrioSet pkgs.kde412);- kde412 = kdePackagesFor (pkgs.kde412 // {- eigen = eigen2;- libusb = libusb1;- libcanberra = libcanberra_kde;- }) ../desktops/kde-4.12;- kdePackagesFor = self: dir: let- callPackageOrig = callPackage;- in let- callPackage = newScope self;- kde4 = callPackageOrig dir {- inherit callPackage- callPackageOrig;- };- in kde4 // {- inherit kde4;- wrapper = callPackage ../build-support/kdewrapper {- };- recurseForRelease = true;- akunambol = callPackage ../applications/networking/sync/akunambol {- };- amarok = callPackage ../applications/audio/amarok {- };- bangarang = callPackage ../applications/video/bangarang {- };- basket = callPackage ../applications/office/basket {- };- bluedevil = callPackage ../tools/bluetooth/bluedevil {- };- calligra = callPackage ../applications/office/calligra {- };- colord-kde = callPackage ../tools/misc/colord-kde {- };- digikam = if builtins.compareVersions "4.9" kde4.release == 1- then callPackage ../applications/graphics/digikam/2.nix {- }- else callPackage ../applications/graphics/digikam {- };- eventlist = callPackage ../applications/office/eventlist {- };- k3b = callPackage ../applications/misc/k3b {- };- kadu = callPackage ../applications/networking/instant-messengers/kadu {- };- kbibtex = callPackage ../applications/office/kbibtex {- };- kde_gtk_config = callPackage ../tools/misc/kde-gtk-config {- };- kde_wacomtablet = callPackage ../applications/misc/kde-wacomtablet {- };- kdeconnect = callPackage ../applications/misc/kdeconnect {- };- kdenlive = callPackage ../applications/video/kdenlive {- mlt = mlt-qt4;- };- kdesvn = callPackage ../applications/version-management/kdesvn {- };- kdevelop = callPackage ../applications/editors/kdevelop {- };- kdevplatform = callPackage ../development/libraries/kdevplatform {- };- kdiff3 = callPackage ../tools/text/kdiff3 {- };- kile = callPackage ../applications/editors/kile {- };- kmplayer = callPackage ../applications/video/kmplayer {- };- kmymoney = callPackage ../applications/office/kmymoney {- };- kipi_plugins = callPackage ../applications/graphics/kipi-plugins {- };- konversation = callPackage ../applications/networking/irc/konversation {- };- kvirc = callPackage ../applications/networking/irc/kvirc {- };- krename = callPackage ../applications/misc/krename {- };- krusader = callPackage ../applications/misc/krusader {- };- ksshaskpass = callPackage ../tools/security/ksshaskpass {- };- ktorrent = callPackage ../applications/networking/p2p/ktorrent {- };- kuickshow = callPackage ../applications/graphics/kuickshow {- };- libalkimia = callPackage ../development/libraries/libalkimia {- };- libktorrent = callPackage ../development/libraries/libktorrent {- };- libkvkontakte = callPackage ../development/libraries/libkvkontakte {- };- liblikeback = callPackage ../development/libraries/liblikeback {- };- libmm-qt = callPackage ../development/libraries/libmm-qt {- };- libnm-qt = callPackage ../development/libraries/libnm-qt {- };- networkmanagement = callPackage ../tools/networking/networkmanagement {- };- partitionManager = callPackage ../tools/misc/partition-manager {- };- plasma-nm = callPackage ../tools/networking/plasma-nm {- };- polkit_kde_agent = callPackage ../tools/security/polkit-kde-agent {- };- psi = callPackage ../applications/networking/instant-messengers/psi {- };- qtcurve = callPackage ../misc/themes/qtcurve {- };- quassel = callPackage ../applications/networking/irc/quassel {- dconf = gnome3.dconf;- };- quasselWithoutKDE = self.quassel.override {- withKDE = false;- tag = "-without-kde";- };- quasselDaemon = self.quassel.override {- monolithic = false;- daemon = true;- tag = "-daemon";- };- quasselClient = self.quassel.override {- monolithic = false;- client = true;- tag = "-client";- };- quasselClientWithoutKDE = self.quasselClient.override {- withKDE = false;- tag = "-client-without-kde";- };- rekonq = callPackage ../applications/networking/browsers/rekonq {- };- kwebkitpart = callPackage ../applications/networking/browsers/kwebkitpart {- };- rsibreak = callPackage ../applications/misc/rsibreak {- };- semnotes = callPackage ../applications/misc/semnotes {- };- skrooge = callPackage ../applications/office/skrooge {- };- telepathy = callPackage ../applications/networking/instant-messengers/telepathy/kde {- };- yakuake = callPackage ../applications/misc/yakuake {- };- zanshin = callPackage ../applications/office/zanshin {- };- kwooty = callPackage ../applications/networking/newsreaders/kwooty {- };- };- redshift = callPackage ../applications/misc/redshift {- inherit (xorg) libX11 libXrandr- libxcb randrproto libXxf86vm- xf86vidmodeproto;- inherit (gnome) GConf;- inherit (pythonPackages) pyxdg;- geoclue = geoclue2;- };- oxygen_gtk = callPackage ../misc/themes/gtk2/oxygen-gtk {- };- gtk_engines = callPackage ../misc/themes/gtk2/gtk-engines {- };- gtk-engine-murrine = callPackage ../misc/themes/gtk2/gtk-engine-murrine {- };- gnome_themes_standard = gnome3.gnome_themes_standard;- mate-icon-theme = callPackage ../misc/themes/mate-icon-theme {- };- mate-themes = callPackage ../misc/themes/mate-themes {- };- xfce = xfce4_10;- xfce4_10 = recurseIntoAttrs (import ../desktops/xfce {- inherit pkgs newScope;- });- drgeo = builderDefsPackage (import ../applications/science/geometry/drgeo) {- inherit (gnome) libglade;- inherit libxml2 perl intltool- libtool pkgconfig gtk;- guile = guile_1_8;- };- tetgen = callPackage ../applications/science/geometry/tetgen {- };- alliance = callPackage ../applications/science/electronics/alliance {- motif = lesstif;- };- arb = callPackage ../applications/science/biology/arb {- lesstif = lesstif93;- };- archimedes = callPackage ../applications/science/electronics/archimedes {- };- biolib = callPackage ../development/libraries/science/biology/biolib {- };- emboss = callPackage ../applications/science/biology/emboss {- };- mrbayes = callPackage ../applications/science/biology/mrbayes {- };- ncbiCTools = builderDefsPackage ../development/libraries/ncbi {- inherit tcsh mesa lesstif;- inherit (xlibs) libX11 libXaw- xproto libXt libSM libICE libXmu- libXext;- };- ncbi_tools = callPackage ../applications/science/biology/ncbi-tools {- };- paml = callPackage ../applications/science/biology/paml {- };- pal2nal = callPackage ../applications/science/biology/pal2nal {- };- plink = callPackage ../applications/science/biology/plink/default.nix {- };- arpack = callPackage ../development/libraries/science/math/arpack {- };- atlas = callPackage ../development/libraries/science/math/atlas {- tolerateCpuTimingInaccuracy = true;- };- blas = callPackage ../development/libraries/science/math/blas {- };- content = builderDefsPackage ../applications/science/math/content {- inherit mesa lesstif;- inherit (xlibs) libX11 libXaw- xproto libXt libSM libICE libXmu- libXext libXcursor;- };- jags = callPackage ../applications/science/math/jags {- };- liblapack = callPackage ../development/libraries/science/math/liblapack {- };- liblapack_3_5_0 = callPackage ../development/libraries/science/math/liblapack/3.5.0.nix {- };- liblbfgs = callPackage ../development/libraries/science/math/liblbfgs {- };- openblas = callPackage ../development/libraries/science/math/openblas {- };- openblas_0_2_10 = callPackage ../development/libraries/science/math/openblas/0.2.10.nix {- liblapack = liblapack_3_5_0;- };- mathematica = callPackage ../applications/science/math/mathematica {- };- sage = callPackage ../applications/science/math/sage {- };- gromacs = callPackage ../applications/science/molecular-dynamics/gromacs {- singlePrec = true;- fftw = fftwSinglePrec;- cmake = cmakeCurses;- };- gromacsDouble = lowPrio (callPackage ../applications/science/molecular-dynamics/gromacs {- singlePrec = false;- fftw = fftw;- cmake = cmakeCurses;- });- abc-verifier = callPackage ../applications/science/logic/abc {- };- alt-ergo = callPackage ../applications/science/logic/alt-ergo {- };- coq = callPackage ../applications/science/logic/coq {- inherit (ocamlPackages) findlib- lablgtk;- camlp5 = ocamlPackages.camlp5_transitional;- };- coq_HEAD = callPackage ../applications/science/logic/coq/HEAD.nix {- inherit (ocamlPackages) findlib- lablgtk;- camlp5 = ocamlPackages.camlp5_transitional;- };- coq_8_3 = callPackage ../applications/science/logic/coq/8.3.nix {- inherit (ocamlPackages) findlib- lablgtk;- camlp5 = ocamlPackages.camlp5_transitional;- };- cvc3 = callPackage ../applications/science/logic/cvc3 {- };- ekrhyper = callPackage ../applications/science/logic/ekrhyper {- };- eprover = callPackage ../applications/science/logic/eprover {- texLive = texLiveAggregationFun {- paths = [- texLive- texLiveExtra- ];- };- };- ginac = callPackage ../applications/science/math/ginac {- };- hol = callPackage ../applications/science/logic/hol {- };- hol_light = callPackage ../applications/science/logic/hol_light {- inherit (ocamlPackages) findlib;- camlp5 = ocamlPackages.camlp5_strict;- };- isabelle = import ../applications/science/logic/isabelle {- inherit (pkgs) stdenv fetchurl- nettools perl polyml;- inherit (pkgs.emacs24Packages) proofgeneral;- };- iprover = callPackage ../applications/science/logic/iprover {- };- leo2 = callPackage ../applications/science/logic/leo2 {- };- logisim = callPackage ../applications/science/logic/logisim {- };- ltl2ba = callPackage ../applications/science/logic/ltl2ba {- };- matita = callPackage ../applications/science/logic/matita {- ocaml = ocaml_3_11_2;- inherit (ocamlPackages_3_11_2) findlib- lablgtk ocaml_expat gmetadom- ocaml_http lablgtkmathview- ocaml_mysql ocaml_sqlite3- ocamlnet camlzip ocaml_pcre;- ulex08 = ocamlPackages_3_11_2.ulex08.override {- camlp5 = ocamlPackages_3_11_2.camlp5_5_transitional;- };- };- matita_130312 = lowPrio (callPackage ../applications/science/logic/matita/130312.nix {- inherit (ocamlPackages) findlib- lablgtk ocaml_expat gmetadom- ocaml_http ocaml_mysql ocamlnet- ulex08 camlzip ocaml_pcre;- });- minisat = callPackage ../applications/science/logic/minisat {- };- opensmt = callPackage ../applications/science/logic/opensmt {- };- otter = callPackage ../applications/science/logic/otter {- };- picosat = callPackage ../applications/science/logic/picosat {- };- prooftree = callPackage ../applications/science/logic/prooftree {- inherit (ocamlPackages) findlib- lablgtk;- camlp5 = ocamlPackages.camlp5_transitional;- };- prover9 = callPackage ../applications/science/logic/prover9 {- };- satallax = callPackage ../applications/science/logic/satallax {- };- spass = callPackage ../applications/science/logic/spass {- };- ssreflect = callPackage ../applications/science/logic/ssreflect {- camlp5 = ocamlPackages.camlp5_transitional;- };- tptp = callPackage ../applications/science/logic/tptp {- };- twelf = callPackage ../applications/science/logic/twelf {- smlnj = if stdenv.isDarwin- then smlnjBootstrap- else smlnj;- };- verifast = callPackage ../applications/science/logic/verifast {- };- why3 = callPackage ../applications/science/logic/why3 {- };- yices = callPackage ../applications/science/logic/yices {- };- z3 = callPackage ../applications/science/logic/z3 {- };- boolector = boolector15;- boolector15 = callPackage ../applications/science/logic/boolector {- };- boolector16 = lowPrio (callPackage ../applications/science/logic/boolector {- useV16 = true;- });- eagle = callPackage_i686 ../applications/science/electronics/eagle {- };- caneda = callPackage ../applications/science/electronics/caneda {- };- gtkwave = callPackage ../applications/science/electronics/gtkwave {- };- kicad = callPackage ../applications/science/electronics/kicad {- wxGTK = wxGTK29;- };- ngspice = callPackage ../applications/science/electronics/ngspice {- };- qucs = callPackage ../applications/science/electronics/qucs {- };- xoscope = callPackage ../applications/science/electronics/xoscope {- };- ecm = callPackage ../applications/science/math/ecm {- };- eukleides = callPackage ../applications/science/math/eukleides {- texinfo = texinfo4;- };- fricas = callPackage ../applications/science/math/fricas {- };- gap = callPackage ../applications/science/math/gap {- };- maxima = callPackage ../applications/science/math/maxima {- };- wxmaxima = callPackage ../applications/science/math/wxmaxima {- };- pari = callPackage ../applications/science/math/pari {- };- pspp = callPackage ../applications/science/math/pssp {- inherit (gnome) libglade- gtksourceview;- };- singular = callPackage ../applications/science/math/singular {- };- scilab = callPackage ../applications/science/math/scilab {- withXaw3d = false;- withTk = true;- withGtk = false;- withOCaml = true;- withX = true;- };- msieve = callPackage ../applications/science/math/msieve {- };- weka = callPackage ../applications/science/math/weka {- };- yad = callPackage ../tools/misc/yad {- };- yacas = callPackage ../applications/science/math/yacas {- };- speedcrunch = callPackage ../applications/science/math/speedcrunch {- qt = qt4;- cmake = cmakeCurses;- };- boinc = callPackage ../applications/science/misc/boinc {- };- celestia = callPackage ../applications/science/astronomy/celestia {- lua = lua5_1;- inherit (xlibs) libXmu;- inherit (pkgs.gnome) gtkglext;- };- fityk = callPackage ../applications/science/misc/fityk {- };- gravit = callPackage ../applications/science/astronomy/gravit {- };- golly = callPackage ../applications/science/misc/golly {- };- megam = callPackage ../applications/science/misc/megam {- };- root = callPackage ../applications/science/misc/root {- };- simgrid = callPackage ../applications/science/misc/simgrid {- };- spyder = callPackage ../applications/science/spyder {- inherit (pythonPackages) pyflakes- rope sphinx numpy scipy- matplotlib;- inherit (pythonPackages) ipython- pep8;- inherit pylint;- };- stellarium = callPackage ../applications/science/astronomy/stellarium {- };- tulip = callPackage ../applications/science/misc/tulip {- };- vite = callPackage ../applications/science/misc/vite {- };- xplanet = callPackage ../applications/science/astronomy/xplanet {- };- atari800 = callPackage ../misc/emulators/atari800 {- };- ataripp = callPackage ../misc/emulators/atari++ {- };- auctex = callPackage ../tools/typesetting/tex/auctex {- };- beep = callPackage ../misc/beep {- };- cups = callPackage ../misc/cups {- libusb = libusb1;- };- cups_pdf_filter = callPackage ../misc/cups/pdf-filter.nix {- };- gutenprint = callPackage ../misc/drivers/gutenprint {- };- gutenprintBin = callPackage ../misc/drivers/gutenprint/bin.nix {- };- cupsBjnp = callPackage ../misc/cups/drivers/cups-bjnp {- };- darcnes = callPackage ../misc/emulators/darcnes {- };- dbacl = callPackage ../tools/misc/dbacl {- };- dblatex = callPackage ../tools/typesetting/tex/dblatex {- enableAllFeatures = false;- };- dblatexFull = appendToName "full" (dblatex.override {- enableAllFeatures = true;- });- dosbox = callPackage ../misc/emulators/dosbox {- };- dpkg = callPackage ../tools/package-management/dpkg {- };- ekiga = newScope pkgs.gnome ../applications/networking/instant-messengers/ekiga {- };- emulationstation = callPackage ../misc/emulators/emulationstation {- };- electricsheep = callPackage ../misc/screensavers/electricsheep {- };- fakenes = callPackage ../misc/emulators/fakenes {- };- fceux = callPackage ../misc/emulators/fceux {- };- foldingathome = callPackage ../misc/foldingathome {- };- foo2zjs = callPackage ../misc/drivers/foo2zjs {- };- foomatic_filters = callPackage ../misc/drivers/foomatic-filters {- };- freestyle = callPackage ../misc/freestyle {- };- gajim = callPackage ../applications/networking/instant-messengers/gajim {- };- gammu = callPackage ../applications/misc/gammu {- };- gensgs = callPackage_i686 ../misc/emulators/gens-gs {- };- ghostscript = callPackage ../misc/ghostscript {- x11Support = false;- cupsSupport = config.ghostscript.cups or !stdenv.isDarwin;- gnuFork = config.ghostscript.gnu or false;- };- ghostscriptX = appendToName "with-X" (ghostscript.override {- x11Support = true;- });- guix = callPackage ../tools/package-management/guix {- };- gxemul = callPackage ../misc/gxemul {- };- hatari = callPackage ../misc/emulators/hatari {- };- hplip = callPackage ../misc/drivers/hplip {- };- hplipWithPlugin = hplip.override {- withPlugin = true;- };- jack1 = callPackage ../misc/jackaudio/jack1.nix {- };- jack2 = callPackage ../misc/jackaudio {- };- keynav = callPackage ../tools/X11/keynav {- };- lazylist = callPackage ../tools/typesetting/tex/lazylist {- };- lilypond = callPackage ../misc/lilypond {- guile = guile_1_8;- };- martyr = callPackage ../development/libraries/martyr {- };- maven = maven3;- maven3 = callPackage ../misc/maven {- jdk = openjdk;- };- mess = callPackage ../misc/emulators/mess {- inherit (pkgs.gnome) GConf;- };- mupen64plus = callPackage ../misc/emulators/mupen64plus {- };- mupen64plus1_5 = callPackage ../misc/emulators/mupen64plus/1.5.nix {- };- nix = nixStable;- nixStable = callPackage ../tools/package-management/nix {- storeDir = config.nix.storeDir or "/nix/store";- stateDir = config.nix.stateDir or "/nix/var";- };- nixUnstable = callPackage ../tools/package-management/nix/unstable.nix {- storeDir = config.nix.storeDir or "/nix/store";- stateDir = config.nix.stateDir or "/nix/var";- };- nixops = callPackage ../tools/package-management/nixops {- };- nix-prefetch-scripts = callPackage ../tools/package-management/nix-prefetch-scripts {- };- nix-repl = callPackage ../tools/package-management/nix-repl {- };- nut = callPackage ../applications/misc/nut {- };- solfege = callPackage ../misc/solfege {- pysqlite = pkgs.pythonPackages.sqlite3;- };- disnix = callPackage ../tools/package-management/disnix {- };- dysnomia = callPackage ../tools/package-management/disnix/dysnomia {- enableApacheWebApplication = config.disnix.enableApacheWebApplication or false;- enableAxis2WebService = config.disnix.enableAxis2WebService or false;- enableEjabberdDump = config.disnix.enableEjabberdDump or false;- enableMySQLDatabase = config.disnix.enableMySQLDatabase or false;- enablePostgreSQLDatabase = config.disnix.enablePostgreSQLDatabase or false;- enableSubversionRepository = config.disnix.enableSubversionRepository or false;- enableTomcatWebApplication = config.disnix.enableTomcatWebApplication or false;- };- disnixos = callPackage ../tools/package-management/disnix/disnixos {- };- DisnixWebService = callPackage ../tools/package-management/disnix/DisnixWebService {- };- latex2html = callPackage ../tools/typesetting/tex/latex2html/default.nix {- tex = tetex;- };- lkproof = callPackage ../tools/typesetting/tex/lkproof {- };- mysqlWorkbench = newScope gnome ../applications/misc/mysql-workbench {- lua = lua5;- inherit (pythonPackages) pexpect- paramiko;- };- robomongo = callPackage ../applications/misc/robomongo {- };- opkg = callPackage ../tools/package-management/opkg {- };- pgadmin = callPackage ../applications/misc/pgadmin {- };- pgf = pgf2;- pgf1 = callPackage ../tools/typesetting/tex/pgf/1.x.nix {- };- pgf2 = callPackage ../tools/typesetting/tex/pgf/2.x.nix {- };- pgfplots = callPackage ../tools/typesetting/tex/pgfplots {- };- pjsip = callPackage ../applications/networking/pjsip {- };- polytable = callPackage ../tools/typesetting/tex/polytable {- };- PPSSPP = callPackage ../misc/emulators/ppsspp {- };- uae = callPackage ../misc/emulators/uae {- };- putty = callPackage ../applications/networking/remote/putty {- };- retroarch = callPackage ../misc/emulators/retroarch {- };- rssglx = callPackage ../misc/screensavers/rss-glx {- };- xlockmore = callPackage ../misc/screensavers/xlockmore {- };- samsungUnifiedLinuxDriver = import ../misc/cups/drivers/samsung {- inherit fetchurl stdenv;- inherit cups ghostscript glibc- patchelf;- gcc = import ../development/compilers/gcc/4.4 {- inherit stdenv fetchurl gmp mpfr- noSysDirs gettext which;- texinfo = texinfo4;- profiledCompiler = true;- };- };- saneBackends = callPackage ../applications/graphics/sane/backends.nix {- gt68xxFirmware = config.sane.gt68xxFirmware or null;- snapscanFirmware = config.sane.snapscanFirmware or null;- hotplugSupport = config.sane.hotplugSupport or true;- libusb = libusb1;- };- saneBackendsGit = callPackage ../applications/graphics/sane/backends-git.nix {- gt68xxFirmware = config.sane.gt68xxFirmware or null;- snapscanFirmware = config.sane.snapscanFirmware or null;- hotplugSupport = config.sane.hotplugSupport or true;- };- mkSaneConfig = callPackage ../applications/graphics/sane/config.nix {- };- saneFrontends = callPackage ../applications/graphics/sane/frontends.nix {- };- seafile-shared = callPackage ../misc/seafile-shared {- };- slock = callPackage ../misc/screensavers/slock {- };- sourceAndTags = import ../misc/source-and-tags {- inherit pkgs stdenv unzip lib- ctags;- hasktags = haskellPackages.hasktags;- };- splix = callPackage ../misc/cups/drivers/splix {- };- streamripper = callPackage ../applications/audio/streamripper {- };- sqsh = callPackage ../development/tools/sqsh {- };- tetex = callPackage ../tools/typesetting/tex/tetex {- libpng = libpng12;- };- tex4ht = callPackage ../tools/typesetting/tex/tex4ht {- };- texFunctions = import ../tools/typesetting/tex/nix pkgs;- texLive = builderDefsPackage (import ../tools/typesetting/tex/texlive) {- inherit builderDefs zlib bzip2- ncurses libpng ed lesstif ruby- potrace gd t1lib freetype icu- perl expat curl xz pkgconfig- zziplib texinfo libjpeg bison- python fontconfig flex poppler- libpaper graphite2 makeWrapper;- inherit (xlibs) libXaw libX11- xproto libXt libXpm libXmu- libXext xextproto libSM libICE;- ghostscript = ghostscriptX;- harfbuzz = harfbuzz.override {- withIcu = true;- withGraphite2 = true;- };- };- texLiveFull = lib.setName "texlive-full" (texLiveAggregationFun {- paths = [- texLive- texLiveExtra- lmodern- texLiveCMSuper- texLiveLatexXColor- texLivePGF- texLiveBeamer- texLiveModerncv- tipa- tex4ht- texinfo- texLiveModerntimeline- ];- });- texLiveAggregationFun = params:- builderDefsPackage (import ../tools/typesetting/tex/texlive/aggregate.nix) ({- inherit poppler perl- makeWrapper;- } // params);- texDisser = callPackage ../tools/typesetting/tex/disser {- };- texLiveContext = builderDefsPackage (import ../tools/typesetting/tex/texlive/context.nix) {- inherit texLive;- };- texLiveExtra = builderDefsPackage (import ../tools/typesetting/tex/texlive/extra.nix) {- inherit texLive xz;- };- texLiveCMSuper = builderDefsPackage (import ../tools/typesetting/tex/texlive/cm-super.nix) {- inherit texLive;- };- texLiveLatexXColor = builderDefsPackage (import ../tools/typesetting/tex/texlive/xcolor.nix) {- inherit texLive;- };- texLivePGF = builderDefsPackage (import ../tools/typesetting/tex/texlive/pgf.nix) {- inherit texLiveLatexXColor- texLive;- };- texLiveBeamer = builderDefsPackage (import ../tools/typesetting/tex/texlive/beamer.nix) {- inherit texLiveLatexXColor- texLivePGF texLive;- };- texLiveModerncv = builderDefsPackage (import ../tools/typesetting/tex/texlive/moderncv.nix) {- inherit texLive unzip;- };- texLiveModerntimeline = builderDefsPackage (import ../tools/typesetting/tex/texlive/moderntimeline.nix) {- inherit texLive unzip;- };- thermald = callPackage ../tools/system/thermald {- };- thinkfan = callPackage ../tools/system/thinkfan {- };- vice = callPackage ../misc/emulators/vice {- libX11 = xlibs.libX11;- giflib = giflib_4_1;- };- viewnior = callPackage ../applications/graphics/viewnior {- };- vimPlugins = recurseIntoAttrs (callPackage ../misc/vim-plugins {- });- vimprobable2 = callPackage ../applications/networking/browsers/vimprobable2 {- webkit = webkitgtk2;- };- vimprobable2Wrapper = wrapFirefox {- browser = vimprobable2;- browserName = "vimprobable2";- desktopName = "Vimprobable2";- };- vimb = callPackage ../applications/networking/browsers/vimb {- webkit = webkitgtk2;- };- vimbWrapper = wrapFirefox {- browser = vimb;- browserName = "vimb";- desktopName = "Vimb";- };- VisualBoyAdvance = callPackage ../misc/emulators/VisualBoyAdvance {- };- wineStable = callPackage_i686 ../misc/emulators/wine/stable.nix {- bison = bison2;- };- wineUnstable = lowPrio (callPackage_i686 ../misc/emulators/wine/unstable.nix {- bison = bison2;- });- wine = wineStable;- winetricks = callPackage ../misc/emulators/wine/winetricks.nix {- inherit (gnome2) zenity;- };- wxmupen64plus = callPackage ../misc/emulators/wxmupen64plus {- };- x2x = callPackage ../tools/X11/x2x {- };- xboxdrv = callPackage ../misc/drivers/xboxdrv {- };- xinput_calibrator = callPackage ../tools/X11/xinput_calibrator {- inherit (xlibs) libXi- inputproto;- };- xosd = callPackage ../misc/xosd {- };- xsane = callPackage ../applications/graphics/sane/xsane.nix {- libpng = libpng12;- saneBackends = saneBackends;- };- yafc = callPackage ../applications/networking/yafc {- };- yandex-disk = callPackage ../tools/filesystems/yandex-disk {- };- myEnvFun = import ../misc/my-env {- inherit substituteAll pkgs;- inherit (stdenv) mkDerivation;- };- PatolineEnv = pack: myEnvFun {- name = "patoline";- buildInputs = [- stdenv- ncurses- mesa- freeglut- libzip- gcc- pack.ocaml- pack.findlib- pack.camomile- pack.dypgen- pack.ocaml_sqlite3- pack.camlzip- pack.lablgtk- pack.camlimages- pack.ocaml_cairo- pack.lablgl- pack.ocamlnet- pack.cryptokit- pack.ocaml_pcre- pack.patoline- ];- extraCmds = ''- LD_LIBRARY_PATH=\''$LD_LIBRARY_PATH:${gcc.gcc}/lib- export LD_LIBRARY_PATH- '';- };- patoline = PatolineEnv ocamlPackages_4_00_1;- znc = callPackage ../applications/networking/znc {- };- zncModules = recurseIntoAttrs (callPackage ../applications/networking/znc/modules.nix {- });- zsnes = callPackage_i686 ../misc/emulators/zsnes {- };- snes9x-gtk = callPackage ../misc/emulators/snes9x-gtk {- };- misc = import ../misc/misc.nix {- inherit pkgs stdenv;- };- bullet = callPackage ../development/libraries/bullet {- };- dart = callPackage ../development/interpreters/dart {- };- httrack = callPackage ../tools/backup/httrack {- };- mg = callPackage ../applications/editors/mg {- };- adobeReader = adobe-reader;- asciidocFull = asciidoc-full;- lttngTools = lttng-tools;- lttngUst = lttng-ust;- };- in self;- in pkgs
@@ -1,11561 +0,0 @@-/* This file composes the Nix Packages collection. That is, it- imports the functions that build the various packages, and calls- them with appropriate arguments. The result is a set of all the- packages in the Nix Packages collection for some particular- platform. */---{ # The system (e.g., `i686-linux') for which to build the packages.- system ? builtins.currentSystem--, # The standard environment to use. Only used for bootstrapping. If- # null, the default standard environment is used.- bootStdenv ? null--, # Non-GNU/Linux OSes are currently "impure" platforms, with their libc- # outside of the store. Thus, GCC, GFortran, & co. must always look for- # files in standard system directories (/usr/include, etc.)- noSysDirs ? (system != "x86_64-darwin"- && system != "x86_64-freebsd" && system != "i686-freebsd"- && system != "x86_64-kfreebsd-gnu")-- # More flags for the bootstrapping of stdenv.-, gccWithCC ? true-, gccWithProfiling ? true--, # Allow a configuration attribute set to be passed in as an- # argument. Otherwise, it's read from $NIXPKGS_CONFIG or- # ~/.nixpkgs/config.nix.- config ? null--, crossSystem ? null-, platform ? null-}:---let config_ = config; platform_ = platform; in # rename the function arguments--let-- lib = import ../../lib;-- # The contents of the configuration file found at $NIXPKGS_CONFIG or- # $HOME/.nixpkgs/config.nix.- # for NIXOS (nixos-rebuild): use nixpkgs.config option- config =- let- toPath = builtins.toPath;- getEnv = x: if builtins ? getEnv then builtins.getEnv x else "";- pathExists = name:- builtins ? pathExists && builtins.pathExists (toPath name);-- configFile = getEnv "NIXPKGS_CONFIG";- homeDir = getEnv "HOME";- configFile2 = homeDir + "/.nixpkgs/config.nix";-- configExpr =- if config_ != null then config_- else if configFile != "" && pathExists configFile then import (toPath configFile)- else if homeDir != "" && pathExists configFile2 then import (toPath configFile2)- else {};-- in- # allow both:- # { /* the config */ } and- # { pkgs, ... } : { /* the config */ }- if builtins.isFunction configExpr- then configExpr { inherit pkgs; }- else configExpr;-- # Allow setting the platform in the config file. Otherwise, let's use a reasonable default (pc)-- platformAuto = let- platforms = (import ./platforms.nix);- in- if system == "armv6l-linux" then platforms.raspberrypi- else if system == "armv5tel-linux" then platforms.sheevaplug- else if system == "mips64el-linux" then platforms.fuloong2f_n32- else if system == "x86_64-linux" then platforms.pc64- else if system == "i686-linux" then platforms.pc32- else platforms.pcBase;-- platform = if platform_ != null then platform_- else config.platform or platformAuto;-- # Helper functions that are exported through `pkgs'.- helperFunctions =- stdenvAdapters //- (import ../build-support/trivial-builders.nix { inherit (pkgs) stdenv; inherit (pkgs.xorg) lndir; });-- stdenvAdapters =- import ../stdenv/adapters.nix pkgs;--- # Allow packages to be overriden globally via the `packageOverrides'- # configuration option, which must be a function that takes `pkgs'- # as an argument and returns a set of new or overriden packages.- # The `packageOverrides' function is called with the *original*- # (un-overriden) set of packages, allowing packageOverrides- # attributes to refer to the original attributes (e.g. "foo =- # ... pkgs.foo ...").- pkgs = applyGlobalOverrides (config.packageOverrides or (pkgs: {}));--- # Return the complete set of packages, after applying the overrides- # returned by the `overrider' function (see above). Warning: this- # function is very expensive!- applyGlobalOverrides = overrider:- let- # Call the overrider function. We don't want stdenv overrides- # in the case of cross-building, or otherwise the basic- # overrided packages will not be built with the crossStdenv- # adapter.- overrides = overrider pkgsOrig //- (lib.optionalAttrs (pkgsOrig.stdenv ? overrides && crossSystem == null) (pkgsOrig.stdenv.overrides pkgsOrig));-- # The un-overriden packages, passed to `overrider'.- pkgsOrig = pkgsFun pkgs {};-- # The overriden, final packages.- pkgs = pkgsFun pkgs overrides;- in pkgs;--- # The package compositions. Yes, this isn't properly indented.- pkgsFun = pkgs: overrides:- with helperFunctions;- let defaultScope = pkgs // pkgs.xorg; self = self_ // overrides;- self_ = with self; helperFunctions // {-- # Make some arguments passed to all-packages.nix available- inherit system platform;-- # Allow callPackage to fill in the pkgs argument- inherit pkgs;--- # We use `callPackage' to be able to omit function arguments that- # can be obtained from `pkgs' or `pkgs.xorg' (i.e. `defaultScope').- # Use `newScope' for sets of packages in `pkgs' (see e.g. `gnome'- # below).- callPackage = newScope {};-- newScope = extra: lib.callPackageWith (defaultScope // extra);--- # Override system. This is useful to build i686 packages on x86_64-linux.- forceSystem = system: kernel: (import ./all-packages.nix) {- inherit system;- platform = platform // { kernelArch = kernel; };- inherit bootStdenv noSysDirs gccWithCC gccWithProfiling config- crossSystem;- };--- # Used by wine, firefox with debugging version of Flash, ...- pkgsi686Linux = forceSystem "i686-linux" "i386";-- callPackage_i686 = lib.callPackageWith (pkgsi686Linux // pkgsi686Linux.xorg);--- # For convenience, allow callers to get the path to Nixpkgs.- path = ../..;--- ### Symbolic names.-- x11 = xlibsWrapper;-- # `xlibs' is the set of X library components. This used to be the- # old modular X llibraries project (called `xlibs') but now it's just- # the set of packages in the modular X.org tree (which also includes- # non-library components like the server, drivers, fonts, etc.).- xlibs = xorg // {xlibs = xlibsWrapper;};--- ### Helper functions.-- inherit lib config stdenvAdapters;-- inherit (lib) lowPrio hiPrio appendToName makeOverridable;- inherit (misc) versionedDerivation;-- # Applying this to an attribute set will cause nix-env to look- # inside the set for derivations.- recurseIntoAttrs = attrs: attrs // { recurseForDerivations = true; };-- builderDefs = lib.composedArgsAndFun (import ../build-support/builder-defs/builder-defs.nix) {- inherit stringsWithDeps lib stdenv writeScript- fetchurl fetchmtn fetchgit;- };-- builderDefsPackage = builderDefs.builderDefsPackage builderDefs;-- stringsWithDeps = lib.stringsWithDeps;--- ### Nixpkgs maintainer tools-- nix-generate-from-cpan = callPackage ../../maintainers/scripts/nix-generate-from-cpan.nix { };-- nixpkgs-lint = callPackage ../../maintainers/scripts/nixpkgs-lint.nix { };--- ### STANDARD ENVIRONMENT--- allStdenvs = import ../stdenv {- inherit system platform config;- allPackages = args: import ./all-packages.nix ({ inherit config system; } // args);- };-- defaultStdenv = allStdenvs.stdenv // { inherit platform; };-- stdenvCross = lowPrio (makeStdenvCross defaultStdenv crossSystem binutilsCross gccCrossStageFinal);-- stdenv =- if bootStdenv != null then (bootStdenv // {inherit platform;}) else- if crossSystem != null then- stdenvCross- else- let- changer = config.replaceStdenv or null;- in if changer != null then- changer {- # We import again all-packages to avoid recursivities.- pkgs = import ./all-packages.nix {- # We remove packageOverrides to avoid recursivities- config = removeAttrs config [ "replaceStdenv" ];- };- }- else- defaultStdenv;-- stdenvApple = stdenvAdapters.overrideGCC allStdenvs.stdenvNative gccApple;-- forceNativeDrv = drv : if crossSystem == null then drv else- (drv // { crossDrv = drv.nativeDrv; });-- # A stdenv capable of building 32-bit binaries. On x86_64-linux,- # it uses GCC compiled with multilib support; on i686-linux, it's- # just the plain stdenv.- stdenv_32bit = lowPrio (- if system == "x86_64-linux" then- overrideGCC stdenv gcc48_multi- else- stdenv);--- ### BUILD SUPPORT-- attrSetToDir = arg: import ../build-support/upstream-updater/attrset-to-dir.nix {- inherit writeTextFile stdenv lib;- theAttrSet = arg;- };-- autoreconfHook = makeSetupHook- { substitutions = { inherit autoconf automake libtool; }; }- ../build-support/setup-hooks/autoreconf.sh;-- buildEnv = import ../build-support/buildenv {- inherit (pkgs) runCommand perl;- };-- buildFHSChrootEnv = import ../build-support/build-fhs-chrootenv {- inherit stdenv glibc glibcLocales gcc coreutils diffutils findutils;- inherit gnused gnugrep gnutar gzip bzip2 bashInteractive xz shadow gawk;- inherit less buildEnv;- };-- dotnetenv = import ../build-support/dotnetenv {- inherit stdenv;- dotnetfx = dotnetfx40;- };-- scatterOutputHook = makeSetupHook {} ../build-support/setup-hooks/scatter_output.sh;-- vsenv = callPackage ../build-support/vsenv {- vs = vs90wrapper;- };-- fetchbower = import ../build-support/fetchbower {- inherit stdenv git;- inherit (nodePackages) fetch-bower;- };-- fetchbzr = import ../build-support/fetchbzr {- inherit stdenv bazaar;- };-- fetchcvs = import ../build-support/fetchcvs {- inherit stdenv cvs;- };-- fetchdarcs = import ../build-support/fetchdarcs {- inherit stdenv darcs nix;- };-- fetchgit = import ../build-support/fetchgit {- inherit stdenv git cacert;- };-- fetchgitPrivate = import ../build-support/fetchgit/private.nix {- inherit fetchgit writeScript openssh stdenv;- };-- fetchgitrevision = import ../build-support/fetchgitrevision runCommand git;-- fetchmtn = callPackage ../build-support/fetchmtn (config.fetchmtn or {});-- packer = callPackage ../development/tools/packer { };-- fetchpatch = callPackage ../build-support/fetchpatch { };-- fetchsvn = import ../build-support/fetchsvn {- inherit stdenv subversion openssh;- sshSupport = true;- };-- fetchsvnrevision = import ../build-support/fetchsvnrevision runCommand subversion;-- fetchsvnssh = import ../build-support/fetchsvnssh {- inherit stdenv subversion openssh expect;- sshSupport = true;- };-- fetchhg = import ../build-support/fetchhg {- inherit stdenv mercurial nix;- };-- # `fetchurl' downloads a file from the network.- fetchurl = import ../build-support/fetchurl {- inherit curl stdenv;- };-- # A wrapper around fetchurl that generates miror://gnome URLs automatically- fetchurlGnome = callPackage ../build-support/fetchurl/gnome.nix { };-- # fetchurlBoot is used for curl and its dependencies in order to- # prevent a cyclic dependency (curl depends on curl.tar.bz2,- # curl.tar.bz2 depends on fetchurl, fetchurl depends on curl). It- # uses the curl from the previous bootstrap phase (e.g. a statically- # linked curl in the case of stdenv-linux).- fetchurlBoot = stdenv.fetchurlBoot;-- fetchzip = import ../build-support/fetchzip { inherit lib fetchurl unzip; };-- fetchFromGitHub = { owner, repo, rev, sha256 }: fetchzip {- name = "${repo}-${rev}-src";- url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz";- inherit sha256;- };-- resolveMirrorURLs = {url}: fetchurl {- showURLs = true;- inherit url;- };-- libredirect = callPackage ../build-support/libredirect { };-- makeDesktopItem = import ../build-support/make-desktopitem {- inherit stdenv;- };-- makeAutostartItem = import ../build-support/make-startupitem {- inherit stdenv;- inherit lib;- };-- makeInitrd = {contents, compressor ? "gzip -9"}:- import ../build-support/kernel/make-initrd.nix {- inherit stdenv perl perlArchiveCpio cpio contents ubootChooser compressor;- };-- makeWrapper = makeSetupHook { } ../build-support/setup-hooks/make-wrapper.sh;-- makeModulesClosure = { kernel, rootModules, allowMissing ? false }:- import ../build-support/kernel/modules-closure.nix {- inherit stdenv kmod kernel nukeReferences rootModules allowMissing;- };-- pathsFromGraph = ../build-support/kernel/paths-from-graph.pl;-- srcOnly = args: (import ../build-support/src-only) ({inherit stdenv; } // args);-- substituteAll = import ../build-support/substitute/substitute-all.nix {- inherit stdenv;- };-- replaceDependency = import ../build-support/replace-dependency.nix {- inherit runCommand nix lib;- };-- nukeReferences = callPackage ../build-support/nuke-references/default.nix { };-- vmTools = import ../build-support/vm/default.nix {- inherit pkgs;- };-- releaseTools = import ../build-support/release/default.nix {- inherit pkgs;- };-- composableDerivation = (import ../../lib/composable-derivation.nix) {- inherit pkgs lib;- };-- platforms = import ./platforms.nix;-- setJavaClassPath = makeSetupHook { } ../build-support/setup-hooks/set-java-classpath.sh;-- fixDarwinDylibNames = makeSetupHook { } ../build-support/setup-hooks/fix-darwin-dylib-names.sh;-- keepBuildTree = makeSetupHook { } ../build-support/setup-hooks/keep-build-tree.sh;-- enableGCOVInstrumentation = makeSetupHook { } ../build-support/setup-hooks/enable-coverage-instrumentation.sh;-- makeGCOVReport = makeSetupHook- { deps = [ pkgs.lcov pkgs.enableGCOVInstrumentation ]; }- ../build-support/setup-hooks/make-coverage-analysis-report.sh;--- ### TOOLS-- abduco = callPackage ../tools/misc/abduco { };-- acct = callPackage ../tools/system/acct { };-- acoustidFingerprinter = callPackage ../tools/audio/acoustid-fingerprinter {- ffmpeg = ffmpeg_1;- };-- actdiag = pythonPackages.actdiag;-- adom = callPackage ../games/adom { };-- aefs = callPackage ../tools/filesystems/aefs { };-- aegisub = callPackage ../applications/video/aegisub {- wxGTK = wxGTK30;- lua = lua5_1;- };-- aespipe = callPackage ../tools/security/aespipe { };-- aescrypt = callPackage ../tools/misc/aescrypt { };-- ahcpd = callPackage ../tools/networking/ahcpd { };-- aircrackng = callPackage ../tools/networking/aircrack-ng { };-- analog = callPackage ../tools/admin/analog {};-- apktool = callPackage ../development/tools/apktool {- buildTools = androidenv.buildTools;- };-- apt-offline = callPackage ../tools/misc/apt-offline { };-- archivemount = callPackage ../tools/filesystems/archivemount { };-- arandr = callPackage ../tools/X11/arandr { };-- arcanist = callPackage ../development/tools/misc/arcanist {};-- arduino_core = callPackage ../development/arduino/arduino-core {- jdk = jdk;- jre = jdk;- };-- argyllcms = callPackage ../tools/graphics/argyllcms {};-- arp-scan = callPackage ../tools/misc/arp-scan { };-- ascii = callPackage ../tools/text/ascii { };-- asymptote = builderDefsPackage ../tools/graphics/asymptote {- inherit freeglut ghostscriptX imagemagick fftw boehmgc- mesa ncurses readline gsl libsigsegv python zlib perl- texinfo xz;- texLive = texLiveAggregationFun {- paths = [ texLive texLiveExtra texLiveCMSuper ];- };- };-- awscli = callPackage ../tools/admin/awscli { };-- ec2_api_tools = callPackage ../tools/virtualization/ec2-api-tools { };-- ec2_ami_tools = callPackage ../tools/virtualization/ec2-ami-tools { };-- altermime = callPackage ../tools/networking/altermime {};-- amule = callPackage ../tools/networking/p2p/amule { };-- amuleDaemon = appendToName "daemon" (amule.override {- monolithic = false;- daemon = true;- });-- amuleGui = appendToName "gui" (amule.override {- monolithic = false;- client = true;- });-- androidenv = import ../development/mobile/androidenv {- inherit pkgs;- pkgs_i686 = pkgsi686Linux;- };-- apg = callPackage ../tools/security/apg { };-- grc = callPackage ../tools/misc/grc { };-- otool = callPackage ../os-specific/darwin/otool { };-- pass = callPackage ../tools/security/pass {- gnupg = gnupg1compat;- };-- setfile = callPackage ../os-specific/darwin/setfile { };-- install_name_tool = callPackage ../os-specific/darwin/install_name_tool { };-- xcodeenv = callPackage ../development/mobile/xcodeenv { };-- titaniumenv = callPackage ../development/mobile/titaniumenv {- inherit pkgs;- pkgs_i686 = pkgsi686Linux;- };-- inherit (androidenv) androidsdk_4_1;-- aria2 = callPackage ../tools/networking/aria2 { };- aria = aria2;-- at = callPackage ../tools/system/at { };-- atftp = callPackage ../tools/networking/atftp {};-- autogen = callPackage ../development/tools/misc/autogen { };-- autojump = callPackage ../tools/misc/autojump { };-- autorandr = callPackage ../tools/misc/autorandr {- inherit (xorg) xrandr xdpyinfo;- };-- avahi = callPackage ../development/libraries/avahi {- qt4Support = config.avahi.qt4Support or false;- };-- aws = callPackage ../tools/virtualization/aws { };-- aws_mturk_clt = callPackage ../tools/misc/aws-mturk-clt { };-- axel = callPackage ../tools/networking/axel { };-- azureus = callPackage ../tools/networking/p2p/azureus { };-- basex = callPackage ../tools/text/xml/basex { };-- babeld = callPackage ../tools/networking/babeld { };-- badvpn = callPackage ../tools/networking/badvpn {};-- banner = callPackage ../games/banner {};-- barcode = callPackage ../tools/graphics/barcode {};-- bc = callPackage ../tools/misc/bc { };-- bcache-tools = callPackage ../tools/filesystems/bcache-tools { };-- bchunk = callPackage ../tools/cd-dvd/bchunk { };-- bfr = callPackage ../tools/misc/bfr { };-- bindfs = callPackage ../tools/filesystems/bindfs { };-- bitbucket-cli = pythonPackages.bitbucket-cli;-- blockdiag = pythonPackages.blockdiag;-- bmon = callPackage ../tools/misc/bmon { };-- bochs = callPackage ../applications/virtualization/bochs { wxSupport = false; };-- boomerang = callPackage ../development/tools/boomerang { };-- bootchart = callPackage ../tools/system/bootchart { };-- bro = callPackage ../applications/networking/ids/bro { };-- bsod = callPackage ../misc/emulators/bsod { };-- btrfsProgs = callPackage ../tools/filesystems/btrfsprogs { };-- bwm_ng = callPackage ../tools/networking/bwm-ng { };-- byobu = callPackage ../tools/misc/byobu { };-- capstone = callPackage ../development/libraries/capstone { };-- catdoc = callPackage ../tools/text/catdoc { };-- ccnet = callPackage ../tools/networking/ccnet { };-- consul = callPackage ../servers/consul { };- consul_ui = callPackage ../servers/consul/ui.nix { };-- chntpw = callPackage ../tools/security/chntpw { };-- coprthr = callPackage ../development/libraries/coprthr {- flex = flex_2_5_35;- };-- crawl = callPackage ../games/crawl { lua = lua5; };-- cv = callPackage ../tools/misc/cv { };-- direnv = callPackage ../tools/misc/direnv { };-- ditaa = callPackage ../tools/graphics/ditaa { };-- dlx = callPackage ../misc/emulators/dlx { };-- eggdrop = callPackage ../tools/networking/eggdrop { };-- enca = callPackage ../tools/text/enca { };-- fasd = callPackage ../tools/misc/fasd {- inherit (haskellPackages) pandoc;- };-- fop = callPackage ../tools/typesetting/fop { };-- mcrl = callPackage ../tools/misc/mcrl { };-- mcrl2 = callPackage ../tools/misc/mcrl2 { };-- mpdcron = callPackage ../tools/audio/mpdcron { };-- syslogng = callPackage ../tools/system/syslog-ng { };-- syslogng_incubator = callPackage ../tools/system/syslog-ng-incubator { };-- rsyslog = callPackage ../tools/system/rsyslog { };-- mcrypt = callPackage ../tools/misc/mcrypt { };-- mcelog = callPackage ../os-specific/linux/mcelog { };-- apparix = callPackage ../tools/misc/apparix { };-- appdata-tools = callPackage ../tools/misc/appdata-tools { };-- asciidoc = callPackage ../tools/typesetting/asciidoc {- inherit (pythonPackages) matplotlib numpy aafigure recursivePthLoader;- enableStandardFeatures = false;- };-- asciidoc-full = appendToName "full" (asciidoc.override {- inherit (pythonPackages) pygments;- enableStandardFeatures = true;- });-- autossh = callPackage ../tools/networking/autossh { };-- bacula = callPackage ../tools/backup/bacula { };-- beanstalkd = callPackage ../servers/beanstalkd { };-- bgs = callPackage ../tools/X11/bgs { };-- biber = callPackage ../tools/typesetting/biber {- inherit (perlPackages)- autovivification BusinessISBN BusinessISMN BusinessISSN ConfigAutoConf- DataCompare DataDump DateSimple EncodeEUCJPASCII EncodeHanExtra EncodeJIS2K- ExtUtilsLibBuilder FileSlurp IPCRun3 Log4Perl LWPProtocolHttps ListAllUtils- ListMoreUtils ModuleBuild MozillaCA ReadonlyXS RegexpCommon TextBibTeX- UnicodeCollate UnicodeLineBreak URI XMLLibXMLSimple XMLLibXSLT XMLWriter;- };-- bibtextools = callPackage ../tools/typesetting/bibtex-tools {- inherit (strategoPackages016) strategoxt sdf;- };-- bittorrent = callPackage ../tools/networking/p2p/bittorrent {- gui = true;- };-- bittornado = callPackage ../tools/networking/p2p/bit-tornado { };-- blueman = callPackage ../tools/bluetooth/blueman {- inherit (pythonPackages) notify;- };-- bmrsa = builderDefsPackage (import ../tools/security/bmrsa/11.nix) {- inherit unzip;- };-- bogofilter = callPackage ../tools/misc/bogofilter { };-- bsdiff = callPackage ../tools/compression/bsdiff { };-- btar = callPackage ../tools/backup/btar { };-- bud = callPackage ../tools/networking/bud {- inherit (pythonPackages) gyp;- };-- bup = callPackage ../tools/backup/bup {- inherit (pythonPackages) pyxattr pylibacl setuptools fuse;- inherit (haskellPackages) pandoc;- par2Support = (config.bup.par2Support or false);- };-- ori = callPackage ../tools/backup/ori { };-- atool = callPackage ../tools/archivers/atool { };-- bzip2 = callPackage ../tools/compression/bzip2 { };-- cabextract = callPackage ../tools/archivers/cabextract { };-- cadaver = callPackage ../tools/networking/cadaver { };-- cantata = callPackage ../applications/audio/cantata { };-- can-utils = callPackage ../os-specific/linux/can-utils { };-- ccid = callPackage ../tools/security/ccid { };-- ccrypt = callPackage ../tools/security/ccrypt { };-- cdecl = callPackage ../development/tools/cdecl { };-- cdrdao = callPackage ../tools/cd-dvd/cdrdao { };-- cdrkit = callPackage ../tools/cd-dvd/cdrkit { };-- ceph = callPackage ../tools/filesystems/ceph { };-- cfdg = builderDefsPackage ../tools/graphics/cfdg {- inherit libpng bison flex ffmpeg;- };-- checkinstall = callPackage ../tools/package-management/checkinstall { };-- cheetahTemplate = builderDefsPackage (import ../tools/text/cheetah-template/2.0.1.nix) {- inherit makeWrapper python;- };-- chkrootkit = callPackage ../tools/security/chkrootkit { };-- chrony = callPackage ../tools/networking/chrony { };-- chunkfs = callPackage ../tools/filesystems/chunkfs { };-- chunksync = callPackage ../tools/backup/chunksync { };-- cjdns = callPackage ../tools/networking/cjdns { };-- cksfv = callPackage ../tools/networking/cksfv { };-- clementine = callPackage ../applications/audio/clementine { };-- ciopfs = callPackage ../tools/filesystems/ciopfs { };-- colord = callPackage ../tools/misc/colord { };-- colord-gtk = callPackage ../tools/misc/colord-gtk { };-- colordiff = callPackage ../tools/text/colordiff { };-- concurrencykit = callPackage ../development/libraries/concurrencykit { };-- connect = callPackage ../tools/networking/connect { };-- conspy = callPackage ../os-specific/linux/conspy {};-- connman = callPackage ../tools/networking/connman { };-- connmanui = callPackage ../tools/networking/connmanui { };-- convertlit = callPackage ../tools/text/convertlit { };-- collectd = callPackage ../tools/system/collectd { };-- colormake = callPackage ../development/tools/build-managers/colormake { };-- cowsay = callPackage ../tools/misc/cowsay { };-- cpuminer = callPackage ../tools/misc/cpuminer { };-- cuetools = callPackage ../tools/cd-dvd/cuetools { };-- unifdef = callPackage ../development/tools/misc/unifdef { };-- "unionfs-fuse" = callPackage ../tools/filesystems/unionfs-fuse { };-- usb_modeswitch = callPackage ../development/tools/misc/usb-modeswitch { };-- biosdevname = callPackage ../tools/networking/biosdevname { };-- clamav = callPackage ../tools/security/clamav { };-- cloc = callPackage ../tools/misc/cloc {- inherit (perlPackages) perl AlgorithmDiff RegexpCommon;- };-- cloog = callPackage ../development/libraries/cloog { };-- cloogppl = callPackage ../development/libraries/cloog-ppl { };-- convmv = callPackage ../tools/misc/convmv { };-- cool-old-term = callPackage ../applications/misc/cool-old-term { };-- coreutils = callPackage ../tools/misc/coreutils- {- # TODO: Add ACL support for cross-Linux.- aclSupport = crossSystem == null && stdenv.isLinux;- };-- cpio = callPackage ../tools/archivers/cpio { };-- cromfs = callPackage ../tools/archivers/cromfs { };-- cron = callPackage ../tools/system/cron { };-- cudatoolkit5 = callPackage ../development/compilers/cudatoolkit/5.5.nix {- python = python26;- };-- cudatoolkit6 = callPackage ../development/compilers/cudatoolkit/6.0.nix {- python = python26;- };-- cudatoolkit = cudatoolkit5;-- curl = callPackage ../tools/networking/curl rec {- fetchurl = fetchurlBoot;- zlibSupport = true;- sslSupport = zlibSupport;- scpSupport = zlibSupport && !stdenv.isSunOS && !stdenv.isCygwin;- };-- curl3 = callPackage ../tools/networking/curl/7.15.nix rec {- zlibSupport = true;- sslSupport = zlibSupport;- };-- cunit = callPackage ../tools/misc/cunit { };-- curlftpfs = callPackage ../tools/filesystems/curlftpfs { };-- cutter = callPackage ../tools/networking/cutter { };-- dadadodo = builderDefsPackage (import ../tools/text/dadadodo) { };-- daq = callPackage ../applications/networking/ids/daq { };-- dar = callPackage ../tools/archivers/dar { };-- davfs2 = callPackage ../tools/filesystems/davfs2 { };-- dbench = callPackage ../development/tools/misc/dbench { };-- dcraw = callPackage ../tools/graphics/dcraw { };-- debian_devscripts = callPackage ../tools/misc/debian-devscripts {- inherit (perlPackages) CryptSSLeay LWP TimeDate DBFile FileDesktopEntry;- };-- debootstrap = callPackage ../tools/misc/debootstrap { };-- detox = callPackage ../tools/misc/detox { };-- ddclient = callPackage ../tools/networking/ddclient { };-- dd_rescue = callPackage ../tools/system/dd_rescue { };-- ddrescue = callPackage ../tools/system/ddrescue { };-- deluge = pythonPackages.deluge;-- desktop_file_utils = callPackage ../tools/misc/desktop-file-utils { };-- despotify = callPackage ../development/libraries/despotify { };-- dev86 = callPackage ../development/compilers/dev86 { };-- dnsmasq = callPackage ../tools/networking/dnsmasq { };-- dnstop = callPackage ../tools/networking/dnstop { };-- dhcp = callPackage ../tools/networking/dhcp { };-- dhcpcd = callPackage ../tools/networking/dhcpcd { };-- diffstat = callPackage ../tools/text/diffstat { };-- diffutils = callPackage ../tools/text/diffutils { };-- wgetpaste = callPackage ../tools/text/wgetpaste { };-- dirmngr = callPackage ../tools/security/dirmngr { };-- disper = callPackage ../tools/misc/disper { };-- dmd = callPackage ../development/compilers/dmd { };-- dmg2img = callPackage ../tools/misc/dmg2img { };-- docbook2odf = callPackage ../tools/typesetting/docbook2odf {- inherit (perlPackages) PerlMagick;- };-- docbook2x = callPackage ../tools/typesetting/docbook2x {- inherit (perlPackages) XMLSAX XMLParser XMLNamespaceSupport;- };-- dosfstools = callPackage ../tools/filesystems/dosfstools { };-- dotnetfx35 = callPackage ../development/libraries/dotnetfx35 { };-- dotnetfx40 = callPackage ../development/libraries/dotnetfx40 { };-- dropbear = callPackage ../tools/networking/dropbear { };-- dtach = callPackage ../tools/misc/dtach { };-- duo-unix = callPackage ../tools/security/duo-unix { };-- duplicity = callPackage ../tools/backup/duplicity {- inherit (pythonPackages) boto lockfile;- gnupg = gnupg1;- };-- duply = callPackage ../tools/backup/duply { };-- dvdplusrwtools = callPackage ../tools/cd-dvd/dvd+rw-tools { };-- dvgrab = callPackage ../tools/video/dvgrab { };-- dvtm = callPackage ../tools/misc/dvtm { };-- e2fsprogs = callPackage ../tools/filesystems/e2fsprogs { };-- easyrsa = callPackage ../tools/networking/easyrsa { };-- ebook_tools = callPackage ../tools/text/ebook-tools { };-- ecryptfs = callPackage ../tools/security/ecryptfs { };-- editres = callPackage ../tools/graphics/editres {- inherit (xlibs) libXt libXaw;- inherit (xorg) utilmacros;- };-- edk2 = callPackage ../development/compilers/edk2 { };-- efibootmgr = callPackage ../tools/system/efibootmgr { };-- efivar = callPackage ../tools/system/efivar { };-- evemu = callPackage ../tools/system/evemu { };-- elasticsearch = callPackage ../servers/search/elasticsearch { };-- elasticsearchPlugins = recurseIntoAttrs (- callPackage ../servers/search/elasticsearch/plugins.nix { }- );-- emv = callPackage ../tools/misc/emv { };-- enblendenfuse = callPackage ../tools/graphics/enblend-enfuse { };-- encfs = callPackage ../tools/filesystems/encfs { };-- enscript = callPackage ../tools/text/enscript { };-- ethtool = callPackage ../tools/misc/ethtool { };-- ettercap = callPackage ../applications/networking/sniffers/ettercap { };-- euca2ools = callPackage ../tools/virtualization/euca2ools { pythonPackages = python26Packages; };-- evtest = callPackage ../applications/misc/evtest { };-- exempi = callPackage ../development/libraries/exempi { };-- execline = callPackage ../tools/misc/execline { };-- exercism = callPackage ../development/tools/exercism { };-- exif = callPackage ../tools/graphics/exif { };-- exiftags = callPackage ../tools/graphics/exiftags { };-- extundelete = callPackage ../tools/filesystems/extundelete { };-- expect = callPackage ../tools/misc/expect { };-- f2fs-tools = callPackage ../tools/filesystems/f2fs-tools { };-- fabric = pythonPackages.fabric;-- fail2ban = callPackage ../tools/security/fail2ban {- systemd = systemd.override {- pythonSupport = true;- };- };-- fakeroot = callPackage ../tools/system/fakeroot { };-- fakechroot = callPackage ../tools/system/fakechroot { };-- fcitx = callPackage ../tools/inputmethods/fcitx { };-- fcron = callPackage ../tools/system/fcron { };-- fdm = callPackage ../tools/networking/fdm {};-- figlet = callPackage ../tools/misc/figlet { };-- file = callPackage ../tools/misc/file { };-- filegive = callPackage ../tools/networking/filegive { };-- fileschanged = callPackage ../tools/misc/fileschanged { };-- findutils = callPackage ../tools/misc/findutils { };-- finger_bsd = callPackage ../tools/networking/bsd-finger { };-- fio = callPackage ../tools/system/fio { };-- flashtool = callPackage_i686 ../development/mobile/flashtool {- platformTools = androidenv.platformTools;- };-- flpsed = callPackage ../applications/editors/flpsed { };-- flvstreamer = callPackage ../tools/networking/flvstreamer { };-- libbsd = callPackage ../development/libraries/libbsd { };-- lprof = callPackage ../tools/graphics/lprof { };-- fdk_aac = callPackage ../development/libraries/fdk-aac { };-- flvtool2 = callPackage ../tools/video/flvtool2 { };-- fontforge = lowPrio (callPackage ../tools/misc/fontforge { });-- fontforgeX = callPackage ../tools/misc/fontforge {- withX11 = true;- };-- forktty = callPackage ../os-specific/linux/forktty {};-- fortune = callPackage ../tools/misc/fortune { };-- fox = callPackage ../development/libraries/fox/default.nix {- libpng = libpng12;- };-- fox_1_6 = callPackage ../development/libraries/fox/fox-1.6.nix { };-- fping = callPackage ../tools/networking/fping {};-- fprot = callPackage ../tools/security/fprot { };-- freeipmi = callPackage ../tools/system/freeipmi {};-- freetalk = callPackage ../applications/networking/instant-messengers/freetalk {- guile = guile_1_8;- };-- freetds = callPackage ../development/libraries/freetds { };-- ftgl = callPackage ../development/libraries/ftgl { };-- ftgl212 = callPackage ../development/libraries/ftgl/2.1.2.nix { };-- fuppes = callPackage ../tools/networking/fuppes {- ffmpeg = ffmpeg_0_6_90;- };-- fsfs = callPackage ../tools/filesystems/fsfs { };-- fuse_zip = callPackage ../tools/filesystems/fuse-zip { };-- fuse_exfat = callPackage ../tools/filesystems/fuse-exfat { };-- dos2unix = callPackage ../tools/text/dos2unix { };-- uni2ascii = callPackage ../tools/text/uni2ascii { };-- g500-control = callPackage ../tools/misc/g500-control { };-- galculator = callPackage ../applications/misc/galculator {- gtk = gtk3;- };-- gawk = callPackage ../tools/text/gawk { };-- gawkInteractive = appendToName "interactive"- (gawk.override { readlineSupport = true; });-- gbdfed = callPackage ../tools/misc/gbdfed {- gtk = gtk2;- };-- gdmap = callPackage ../tools/system/gdmap { };-- genext2fs = callPackage ../tools/filesystems/genext2fs { };-- gengetopt = callPackage ../development/tools/misc/gengetopt { };-- getmail = callPackage ../tools/networking/getmail { };-- getopt = callPackage ../tools/misc/getopt { };-- gftp = callPackage ../tools/networking/gftp { };-- gifsicle = callPackage ../tools/graphics/gifsicle { };-- glusterfs = callPackage ../tools/filesystems/glusterfs { };-- glmark2 = callPackage ../tools/graphics/glmark2 { };-- glxinfo = callPackage ../tools/graphics/glxinfo { };-- gmvault = callPackage ../tools/networking/gmvault { };-- gnokii = builderDefsPackage (import ../tools/misc/gnokii) {- inherit intltool perl gettext libusb pkgconfig bluez readline pcsclite- libical gtk glib;- inherit (xorg) libXpm;- };-- gnufdisk = callPackage ../tools/system/fdisk {- guile = guile_1_8;- };-- gnugrep = callPackage ../tools/text/gnugrep {- libiconv = libiconvOrNull;- };-- gnulib = callPackage ../development/tools/gnulib { };-- gnupatch = callPackage ../tools/text/gnupatch { };-- gnupg1orig = callPackage ../tools/security/gnupg1 { };-- gnupg1compat = callPackage ../tools/security/gnupg1compat { };-- # use config.packageOverrides if you prefer original gnupg1- gnupg1 = gnupg1compat;-- gnupg = callPackage ../tools/security/gnupg { libusb = libusb1; };-- gnupg2_1 = lowPrio (callPackage ../tools/security/gnupg/git.nix {- libassuan = libassuan2_1;- });-- gnuplot = callPackage ../tools/graphics/gnuplot { };-- gnuplot_qt = gnuplot.override { withQt = true; };-- # must have AquaTerm installed separately- gnuplot_aquaterm = gnuplot.override { aquaterm = true; };-- gnused = callPackage ../tools/text/gnused { };-- gnutar = callPackage ../tools/archivers/gnutar { };-- gnuvd = callPackage ../tools/misc/gnuvd { };-- goaccess = callPackage ../tools/misc/goaccess { };-- googleAuthenticator = callPackage ../os-specific/linux/google-authenticator { };-- gource = callPackage ../applications/version-management/gource {};-- gpodder = callPackage ../applications/audio/gpodder { };-- gptfdisk = callPackage ../tools/system/gptfdisk { };-- grafana = callPackage ../development/tools/misc/grafana { };-- grafx2 = callPackage ../applications/graphics/grafx2 {};-- graphviz = callPackage ../tools/graphics/graphviz { };-- /* Readded by Michael Raskin. There are programs in the wild- * that do want 2.0 but not 2.22. Please give a day's notice for- * objections before removal.- */- graphviz_2_0 = callPackage ../tools/graphics/graphviz/2.0.nix { };-- grive = callPackage ../tools/filesystems/grive {- json_c = json-c-0-11; # won't configure with 0.12; others are vulnerable- };-- groff = callPackage ../tools/text/groff {- ghostscript = null;- };-- grub = callPackage_i686 ../tools/misc/grub {- buggyBiosCDSupport = config.grub.buggyBiosCDSupport or true;- };-- grub2 = callPackage ../tools/misc/grub/2.0x.nix { libusb = libusb1; flex = flex_2_5_35; };-- grub2_efi = grub2.override { EFIsupport = true; };-- gssdp = callPackage ../development/libraries/gssdp {- inherit (gnome) libsoup;- };-- gt5 = callPackage ../tools/system/gt5 { };-- gtest = callPackage ../development/libraries/gtest {};-- gtkdatabox = callPackage ../development/libraries/gtkdatabox {};-- gtkgnutella = callPackage ../tools/networking/p2p/gtk-gnutella { };-- gtkvnc = callPackage ../tools/admin/gtk-vnc {};-- gtmess = callPackage ../applications/networking/instant-messengers/gtmess { };-- gummiboot = callPackage ../tools/misc/gummiboot { };-- gupnp = callPackage ../development/libraries/gupnp {- inherit (gnome) libsoup;- };-- gupnp_av = callPackage ../development/libraries/gupnp-av {};-- gupnp_igd = callPackage ../development/libraries/gupnp-igd {};-- gupnptools = callPackage ../tools/networking/gupnp-tools {};-- gvpe = builderDefsPackage ../tools/networking/gvpe {- inherit openssl gmp nettools iproute;- };-- gvolicon = callPackage ../tools/audio/gvolicon {};-- gzip = callPackage ../tools/compression/gzip { };-- gzrt = callPackage ../tools/compression/gzrt { };-- partclone = callPackage ../tools/backup/partclone { };-- partimage = callPackage ../tools/backup/partimage { };-- pigz = callPackage ../tools/compression/pigz { };-- haproxy = callPackage ../tools/networking/haproxy { };-- haveged = callPackage ../tools/security/haveged { };-- hardlink = callPackage ../tools/system/hardlink { };-- hashcat = callPackage ../tools/security/hashcat { };-- halibut = callPackage ../tools/typesetting/halibut { };-- hddtemp = callPackage ../tools/misc/hddtemp { };-- hdf5 = callPackage ../tools/misc/hdf5 {- szip = null;- };-- heimdall = callPackage ../tools/misc/heimdall { };-- hevea = callPackage ../tools/typesetting/hevea { };-- highlight = callPackage ../tools/text/highlight {- lua = lua5;- };-- host = callPackage ../tools/networking/host { };-- hping = callPackage ../tools/networking/hping { };-- httpie = callPackage ../tools/networking/httpie { };-- httpfs2 = callPackage ../tools/filesystems/httpfs { };-- # FIXME: This Hydra snapshot is outdated and depends on the `nixPerl',- # which no longer exists.- #- # hydra = callPackage ../development/tools/misc/hydra {- # nix = nixUnstable;- # };-- iasl = callPackage ../development/compilers/iasl { };-- icecast = callPackage ../servers/icecast { };-- icoutils = callPackage ../tools/graphics/icoutils { };-- idutils = callPackage ../tools/misc/idutils { };-- idle3tools = callPackage ../tools/system/idle3tools { };-- iftop = callPackage ../tools/networking/iftop { };-- imapproxy = callPackage ../tools/networking/imapproxy { };-- imapsync = callPackage ../tools/networking/imapsync {- inherit (perlPackages) MailIMAPClient;- };-- inadyn = callPackage ../tools/networking/inadyn { };-- inetutils = callPackage ../tools/networking/inetutils { };-- ioping = callPackage ../tools/system/ioping {};-- iodine = callPackage ../tools/networking/iodine { };-- iperf = callPackage ../tools/networking/iperf { };-- ipmitool = callPackage ../tools/system/ipmitool {- static = false;- };-- ipmiutil = callPackage ../tools/system/ipmiutil {};-- ised = callPackage ../tools/misc/ised {};-- isl = callPackage ../development/libraries/isl { };- isl_0_12 = callPackage ../development/libraries/isl/0.12.2.nix { };-- isync = callPackage ../tools/networking/isync { };-- jd-gui = callPackage_i686 ../tools/security/jd-gui { };-- jdiskreport = callPackage ../tools/misc/jdiskreport { };-- jfsrec = callPackage ../tools/filesystems/jfsrec {- boost = boost144;- };-- jfsutils = callPackage ../tools/filesystems/jfsutils { };-- jhead = callPackage ../tools/graphics/jhead { };-- jing = callPackage ../tools/text/xml/jing { };-- jmtpfs = callPackage ../tools/filesystems/jmtpfs { };-- jnettop = callPackage ../tools/networking/jnettop { };-- jq = callPackage ../development/tools/jq {};-- jscoverage = callPackage ../development/tools/misc/jscoverage { };-- jwhois = callPackage ../tools/networking/jwhois { };-- kazam = callPackage ../applications/video/kazam { };-- kalibrate-rtl = callPackage ../tools/misc/kalibrate-rtl { };-- kexectools = callPackage ../os-specific/linux/kexectools { };-- keychain = callPackage ../tools/misc/keychain { };-- kismet = callPackage ../applications/networking/sniffers/kismet { };-- less = callPackage ../tools/misc/less { };-- lockfileProgs = callPackage ../tools/misc/lockfile-progs { };-- logstash = callPackage ../tools/misc/logstash { };-- logstash-forwarder = callPackage ../tools/misc/logstash-forwarder { };-- kippo = callPackage ../servers/kippo { };-- klavaro = callPackage ../games/klavaro {};-- kzipmix = callPackage_i686 ../tools/compression/kzipmix { };-- minidlna = callPackage ../tools/networking/minidlna {- ffmpeg = ffmpeg_0_10;- };-- mmv = callPackage ../tools/misc/mmv { };-- most = callPackage ../tools/misc/most { };-- multitail = callPackage ../tools/misc/multitail { };-- netperf = callPackage ../applications/networking/netperf { };-- ninka = callPackage ../development/tools/misc/ninka { };-- nodejs = callPackage ../development/web/nodejs {};-- nodePackages = recurseIntoAttrs (import ./node-packages.nix {- inherit pkgs stdenv nodejs fetchurl fetchgit;- neededNatives = [python] ++ lib.optional (lib.elem system lib.platforms.linux) utillinux;- self = pkgs.nodePackages;- });-- ldapvi = callPackage ../tools/misc/ldapvi { };-- ldns = callPackage ../development/libraries/ldns { };-- lftp = callPackage ../tools/networking/lftp { };-- libconfig = callPackage ../development/libraries/libconfig { };-- libee = callPackage ../development/libraries/libee { };-- libestr = callPackage ../development/libraries/libestr { };-- libevdev = callPackage ../development/libraries/libevdev { };-- liboauth = callPackage ../development/libraries/liboauth { };-- libtirpc = callPackage ../development/libraries/ti-rpc { };-- libshout = callPackage ../development/libraries/libshout { };-- libqmi = callPackage ../development/libraries/libqmi { };-- libmbim = callPackage ../development/libraries/libmbim { };-- libtorrent = callPackage ../tools/networking/p2p/libtorrent { };-- logcheck = callPackage ../tools/system/logcheck {- inherit (perlPackages) mimeConstruct;- };-- logrotate = callPackage ../tools/system/logrotate { };-- logstalgia = callPackage ../tools/graphics/logstalgia {};-- lout = callPackage ../tools/typesetting/lout { };-- lrzip = callPackage ../tools/compression/lrzip { };-- # lsh installs `bin/nettle-lfib-stream' and so does Nettle. Give the- # former a lower priority than Nettle.- lsh = lowPrio (callPackage ../tools/networking/lsh { });-- lshw = callPackage ../tools/system/lshw { };-- lxc = callPackage ../os-specific/linux/lxc { };-- lzip = callPackage ../tools/compression/lzip { };-- lzma = xz;-- xz = callPackage ../tools/compression/xz { };-- lzop = callPackage ../tools/compression/lzop { };-- maildrop = callPackage ../tools/networking/maildrop { };-- mailpile = callPackage ../applications/networking/mailreaders/mailpile { };-- mailutils = callPackage ../tools/networking/mailutils {- guile = guile_1_8;- };-- mairix = callPackage ../tools/text/mairix { };-- makemkv = callPackage ../applications/video/makemkv { };-- man = callPackage ../tools/misc/man { };-- man_db = callPackage ../tools/misc/man-db { };-- memtest86 = callPackage ../tools/misc/memtest86 { };-- memtest86plus = callPackage ../tools/misc/memtest86+ { };-- meo = callPackage ../tools/security/meo { };-- mc = callPackage ../tools/misc/mc { };-- mcabber = callPackage ../applications/networking/instant-messengers/mcabber { };-- mcron = callPackage ../tools/system/mcron {- guile = guile_1_8;- };-- mdbtools = callPackage ../tools/misc/mdbtools { };-- mdbtools_git = callPackage ../tools/misc/mdbtools/git.nix {- inherit (gnome) scrollkeeper;- };-- mednafen = callPackage ../misc/emulators/mednafen { };-- mednafen-server = callPackage ../misc/emulators/mednafen/server.nix { };-- megacli = callPackage ../tools/misc/megacli { };-- megatools = callPackage ../tools/networking/megatools { };-- mfcuk = callPackage ../tools/security/mfcuk { };-- minecraft = callPackage ../games/minecraft { };-- minecraft-server = callPackage ../games/minecraft-server { };-- minetest = callPackage ../games/minetest {- libpng = libpng12;- };-- miniupnpc = callPackage ../tools/networking/miniupnpc { };-- miniupnpd = callPackage ../tools/networking/miniupnpd { };-- minixml = callPackage ../development/libraries/minixml { };-- mjpegtools = callPackage ../tools/video/mjpegtools { };-- mkcue = callPackage ../tools/cd-dvd/mkcue { };-- mkpasswd = callPackage ../tools/security/mkpasswd { };-- mktemp = callPackage ../tools/security/mktemp { };-- mktorrent = callPackage ../tools/misc/mktorrent { };-- modemmanager = callPackage ../tools/networking/modemmanager {};-- monit = callPackage ../tools/system/monit { };-- mosh = callPackage ../tools/networking/mosh {- boost = boostHeaders;- inherit (perlPackages) IOTty;- };-- mpage = callPackage ../tools/text/mpage { };-- mr = callPackage ../applications/version-management/mr { };-- mscgen = callPackage ../tools/graphics/mscgen { };-- msf = builderDefsPackage (import ../tools/security/metasploit/3.1.nix) {- inherit ruby makeWrapper;- };-- mssys = callPackage ../tools/misc/mssys { };-- mtdutils = callPackage ../tools/filesystems/mtdutils { };-- mtools = callPackage ../tools/filesystems/mtools { };-- mtr = callPackage ../tools/networking/mtr {};-- multitran = recurseIntoAttrs (let callPackage = newScope pkgs.multitran; in rec {- multitrandata = callPackage ../tools/text/multitran/data { };-- libbtree = callPackage ../tools/text/multitran/libbtree { };-- libmtsupport = callPackage ../tools/text/multitran/libmtsupport { };-- libfacet = callPackage ../tools/text/multitran/libfacet { };-- libmtquery = callPackage ../tools/text/multitran/libmtquery { };-- mtutils = callPackage ../tools/text/multitran/mtutils { };- });-- munge = callPackage ../tools/security/munge { };-- muscleframework = callPackage ../tools/security/muscleframework { };-- muscletool = callPackage ../tools/security/muscletool { };-- mysql2pgsql = callPackage ../tools/misc/mysql2pgsql { };-- namazu = callPackage ../tools/text/namazu { };-- nbd = callPackage ../tools/networking/nbd { };-- ndjbdns = callPackage ../tools/networking/ndjbdns { };-- netatalk = callPackage ../tools/filesystems/netatalk { };-- netcdf = callPackage ../development/libraries/netcdf { };-- nc6 = callPackage ../tools/networking/nc6 { };-- ncat = callPackage ../tools/networking/ncat { };-- ncftp = callPackage ../tools/networking/ncftp { };-- ncompress = callPackage ../tools/compression/ncompress { };-- ndisc6 = callPackage ../tools/networking/ndisc6 { };-- netboot = callPackage ../tools/networking/netboot {};-- netcat = callPackage ../tools/networking/netcat { };-- netcat-openbsd = callPackage ../tools/networking/netcat-openbsd { };-- nethogs = callPackage ../tools/networking/nethogs { };-- netkittftp = callPackage ../tools/networking/netkit/tftp { };-- netpbm = callPackage ../tools/graphics/netpbm { };-- netrw = callPackage ../tools/networking/netrw { };-- netselect = callPackage ../tools/networking/netselect { };-- networkmanager = callPackage ../tools/networking/network-manager { };-- networkmanager_openvpn = callPackage ../tools/networking/network-manager/openvpn.nix { };-- networkmanager_pptp = callPackage ../tools/networking/network-manager/pptp.nix { };-- networkmanager_vpnc = callPackage ../tools/networking/network-manager/vpnc.nix { };-- networkmanager_openconnect = callPackage ../tools/networking/network-manager/openconnect.nix { };-- networkmanagerapplet = newScope gnome ../tools/networking/network-manager-applet { dconf = gnome3.dconf; };-- newsbeuter = callPackage ../applications/networking/feedreaders/newsbeuter { };-- newsbeuter-dev = callPackage ../applications/networking/feedreaders/newsbeuter/dev.nix { };-- ngrep = callPackage ../tools/networking/ngrep { };-- ngrok = callPackage ../tools/misc/ngrok { };-- mpack = callPackage ../tools/networking/mpack { };-- pa_applet = callPackage ../tools/audio/pa-applet { };-- pnmixer = callPackage ../tools/audio/pnmixer { };-- nifskope = callPackage ../tools/graphics/nifskope { };-- nilfs_utils = callPackage ../tools/filesystems/nilfs-utils {};-- nitrogen = callPackage ../tools/X11/nitrogen {};-- nlopt = callPackage ../development/libraries/nlopt {};-- npapi_sdk = callPackage ../development/libraries/npapi-sdk {};-- npth = callPackage ../development/libraries/npth {};-- nmap = callPackage ../tools/security/nmap { };-- nmap_graphical = callPackage ../tools/security/nmap {- inherit (pythonPackages) pysqlite;- graphicalSupport = true;- };-- notbit = callPackage ../applications/networking/notbit { };-- nox = callPackage ../tools/package-management/nox {- pythonPackages = python3Packages;- nix = nixUnstable;- };-- nss_pam_ldapd = callPackage ../tools/networking/nss-pam-ldapd {};-- ntfs3g = callPackage ../tools/filesystems/ntfs-3g { };-- # ntfsprogs are merged into ntfs-3g- ntfsprogs = pkgs.ntfs3g;-- ntop = callPackage ../tools/networking/ntop { };-- ntopng = callPackage ../tools/networking/ntopng { };-- ntp = callPackage ../tools/networking/ntp { };-- numdiff = callPackage ../tools/text/numdiff { };-- nssmdns = callPackage ../tools/networking/nss-mdns { };-- nwdiag = pythonPackages.nwdiag;-- nylon = callPackage ../tools/networking/nylon { };-- nzbget = callPackage ../tools/networking/nzbget { };-- oathToolkit = callPackage ../tools/security/oath-toolkit { };-- obex_data_server = callPackage ../tools/bluetooth/obex-data-server { };-- obexd = callPackage ../tools/bluetooth/obexd { };-- obexfs = callPackage ../tools/bluetooth/obexfs { };-- obexftp = callPackage ../tools/bluetooth/obexftp { };-- obnam = callPackage ../tools/backup/obnam { };-- odt2txt = callPackage ../tools/text/odt2txt { };-- offlineimap = callPackage ../tools/networking/offlineimap {- inherit (pythonPackages) sqlite3;- };-- opendbx = callPackage ../development/libraries/opendbx { };-- opendkim = callPackage ../development/libraries/opendkim { };-- opendylan = callPackage ../development/compilers/opendylan {- opendylan-bootstrap = opendylan_bin;- };-- opendylan_bin = callPackage ../development/compilers/opendylan/bin.nix { };-- openjade = callPackage ../tools/text/sgml/openjade { };-- openobex = callPackage ../tools/bluetooth/openobex { };-- openopc = callPackage ../tools/misc/openopc {- pythonFull = python27Full.override {- extraLibs = [ python27Packages.pyro3 ];- };- };-- openresolv = callPackage ../tools/networking/openresolv { };-- opensc = callPackage ../tools/security/opensc { };-- opensc_dnie_wrapper = callPackage ../tools/security/opensc-dnie-wrapper { };-- openssh =- callPackage ../tools/networking/openssh {- hpnSupport = false;- withKerberos = false;- etcDir = "/etc/ssh";- pam = if stdenv.isLinux then pam else null;- };-- openssh_hpn = pkgs.appendToName "with-hpn" (openssh.override { hpnSupport = true; });-- openssh_with_kerberos = pkgs.appendToName "with-kerberos" (openssh.override { withKerberos = true; });-- opensp = callPackage ../tools/text/sgml/opensp { };-- spCompat = callPackage ../tools/text/sgml/opensp/compat.nix { };-- openvpn = callPackage ../tools/networking/openvpn { };-- openvpn_learnaddress = callPackage ../tools/networking/openvpn/openvpn_learnaddress.nix { };-- optipng = callPackage ../tools/graphics/optipng {- libpng = libpng12;- };-- oslrd = callPackage ../tools/networking/oslrd { };-- ossec = callPackage ../tools/security/ossec {};-- otpw = callPackage ../os-specific/linux/otpw { };-- p7zip = callPackage ../tools/archivers/p7zip { };-- pal = callPackage ../tools/misc/pal { };-- panomatic = callPackage ../tools/graphics/panomatic { };-- par2cmdline = callPackage ../tools/networking/par2cmdline { };-- parallel = callPackage ../tools/misc/parallel { };-- parcellite = callPackage ../tools/misc/parcellite { };-- patchutils = callPackage ../tools/text/patchutils { };-- parted = callPackage ../tools/misc/parted { hurd = null; };-- pitivi = callPackage ../applications/video/pitivi {- gst = gst_all_1;- clutter-gtk = clutter_gtk;- inherit (gnome3) gnome_icon_theme gnome_icon_theme_symbolic;- };-- p0f = callPackage ../tools/security/p0f { };-- pngout = callPackage ../tools/graphics/pngout { };-- hurdPartedCross =- if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then (makeOverridable- ({ hurd }:- (parted.override {- # Needs the Hurd's libstore.- inherit hurd;-- # The Hurd wants a libparted.a.- enableStatic = true;-- gettext = null;- readline = null;- devicemapper = null;- }).crossDrv)- { hurd = gnu.hurdCrossIntermediate; })- else null;-- ipsecTools = callPackage ../os-specific/linux/ipsec-tools { flex = flex_2_5_35; };-- patch = gnupatch;-- pbzip2 = callPackage ../tools/compression/pbzip2 { };-- pciutils = callPackage ../tools/system/pciutils { };-- pcsclite = callPackage ../tools/security/pcsclite { };-- pdf2djvu = callPackage ../tools/typesetting/pdf2djvu { };-- pdfjam = callPackage ../tools/typesetting/pdfjam { };-- jbig2enc = callPackage ../tools/graphics/jbig2enc { };-- pdfread = callPackage ../tools/graphics/pdfread { };-- briss = callPackage ../tools/graphics/briss { };-- bully = callPackage ../tools/networking/bully { };-- pdnsd = callPackage ../tools/networking/pdnsd { };-- peco = callPackage ../tools/text/peco { };-- pg_top = callPackage ../tools/misc/pg_top { };-- pdsh = callPackage ../tools/networking/pdsh {- rsh = true; # enable internal rsh implementation- ssh = openssh;- };-- pfstools = callPackage ../tools/graphics/pfstools { };-- philter = callPackage ../tools/networking/philter { };-- pinentry = callPackage ../tools/security/pinentry { };-- pius = callPackage ../tools/security/pius { };-- pk2cmd = callPackage ../tools/misc/pk2cmd { };-- plantuml = callPackage ../tools/misc/plantuml { };-- plan9port = callPackage ../tools/system/plan9port { };-- ploticus = callPackage ../tools/graphics/ploticus {- libpng = libpng12;- };-- plotutils = callPackage ../tools/graphics/plotutils { };-- plowshare = callPackage ../tools/misc/plowshare { };-- pngcrush = callPackage ../tools/graphics/pngcrush { };-- pngnq = callPackage ../tools/graphics/pngnq { };-- pngtoico = callPackage ../tools/graphics/pngtoico {- libpng = libpng12;- };-- pngquant = callPackage ../tools/graphics/pngquant { };-- podiff = callPackage ../tools/text/podiff { };-- poedit = callPackage ../tools/text/poedit { };-- polipo = callPackage ../servers/polipo { };-- polkit_gnome = callPackage ../tools/security/polkit-gnome { };-- ponysay = callPackage ../tools/misc/ponysay { };-- povray = callPackage ../tools/graphics/povray { };-- ppl = callPackage ../development/libraries/ppl { };-- ppp = callPackage ../tools/networking/ppp { };-- pptp = callPackage ../tools/networking/pptp {};-- prey-bash-client = callPackage ../tools/security/prey { };-- projectm = callPackage ../applications/audio/projectm { };-- proxychains = callPackage ../tools/networking/proxychains { };-- proxytunnel = callPackage ../tools/misc/proxytunnel { };-- cntlm = callPackage ../tools/networking/cntlm { };-- pastebinit = callPackage ../tools/misc/pastebinit { };-- psmisc = callPackage ../os-specific/linux/psmisc { };-- pstoedit = callPackage ../tools/graphics/pstoedit { };-- pv = callPackage ../tools/misc/pv { };-- pwgen = callPackage ../tools/security/pwgen { };-- pwnat = callPackage ../tools/networking/pwnat { };-- pycangjie = callPackage ../development/python-modules/pycangjie { };-- pydb = callPackage ../development/tools/pydb { };-- pystringtemplate = callPackage ../development/python-modules/stringtemplate { };-- pythonDBus = dbus_python;-- pythonIRClib = builderDefsPackage (import ../development/python-modules/irclib) {- inherit python;- };-- pythonSexy = builderDefsPackage (import ../development/python-modules/libsexy) {- inherit python libsexy pkgconfig libxml2 pygtk pango gtk glib;- };-- openmpi = callPackage ../development/libraries/openmpi { };-- qhull = callPackage ../development/libraries/qhull { };-- qjoypad = callPackage ../tools/misc/qjoypad { };-- qshowdiff = callPackage ../tools/text/qshowdiff { };-- quilt = callPackage ../development/tools/quilt { };-- radvd = callPackage ../tools/networking/radvd { };-- ranger = callPackage ../applications/misc/ranger { };-- privateer = callPackage ../games/privateer { };-- rtmpdump = callPackage ../tools/video/rtmpdump { };-- reaverwps = callPackage ../tools/networking/reaver-wps {};-- recutils = callPackage ../tools/misc/recutils { };-- recoll = callPackage ../applications/search/recoll { };-- reiser4progs = callPackage ../tools/filesystems/reiser4progs { };-- reiserfsprogs = callPackage ../tools/filesystems/reiserfsprogs { };-- relfs = callPackage ../tools/filesystems/relfs {- inherit (gnome) gnome_vfs GConf;- };-- remarkjs = callPackage ../development/web/remarkjs { };-- remind = callPackage ../tools/misc/remind { };-- remmina = callPackage ../applications/networking/remote/remmina {};-- renameutils = callPackage ../tools/misc/renameutils { };-- replace = callPackage ../tools/text/replace { };-- reptyr = callPackage ../os-specific/linux/reptyr {};-- rdiff_backup = callPackage ../tools/backup/rdiff-backup { };-- rdmd = callPackage ../development/compilers/rdmd { };-- rhash = callPackage ../tools/security/rhash { };-- riemann_c_client = callPackage ../tools/misc/riemann-c-client { };-- ripmime = callPackage ../tools/networking/ripmime {};-- rkflashtool = callPackage ../tools/misc/rkflashtool { };-- rmlint = callPackage ../tools/misc/rmlint {};-- rng_tools = callPackage ../tools/security/rng-tools { };-- rsnapshot = callPackage ../tools/backup/rsnapshot {- # For the `logger' command, we can use either `utillinux' or- # GNU Inetutils. The latter is more portable.- logger = inetutils;- };-- rlwrap = callPackage ../tools/misc/rlwrap { };-- rockbox_utility = callPackage ../tools/misc/rockbox-utility { };-- rpPPPoE = builderDefsPackage (import ../tools/networking/rp-pppoe) {- inherit ppp;- };-- rpm = callPackage ../tools/package-management/rpm { };-- rrdtool = callPackage ../tools/misc/rrdtool { };-- rtorrent = callPackage ../tools/networking/p2p/rtorrent { };-- rubber = callPackage ../tools/typesetting/rubber { };-- rxp = callPackage ../tools/text/xml/rxp { };-- rzip = callPackage ../tools/compression/rzip { };-- s3backer = callPackage ../tools/filesystems/s3backer { };-- s3cmd = callPackage ../tools/networking/s3cmd { };-- s3cmd_15_pre_81e3842f7a = lowPrio (callPackage ../tools/networking/s3cmd/git.nix { });-- s3sync = callPackage ../tools/networking/s3sync {- ruby = ruby18;- };-- sablotron = callPackage ../tools/text/xml/sablotron { };-- safecopy = callPackage ../tools/system/safecopy { };-- salut_a_toi = callPackage ../applications/networking/instant-messengers/salut-a-toi {};-- samplicator = callPackage ../tools/networking/samplicator { };-- screen = callPackage ../tools/misc/screen { };-- scrot = callPackage ../tools/graphics/scrot { };-- scrypt = callPackage ../tools/security/scrypt { };-- sdcv = callPackage ../applications/misc/sdcv { };-- sec = callPackage ../tools/admin/sec { };-- seccure = callPackage ../tools/security/seccure { };-- setserial = builderDefsPackage (import ../tools/system/setserial) {- inherit groff;- };-- seqdiag = pythonPackages.seqdiag;-- screenfetch = callPackage ../tools/misc/screenfetch { };-- sg3_utils = callPackage ../tools/system/sg3_utils { };-- sharutils = callPackage ../tools/archivers/sharutils { };-- shotwell = callPackage ../applications/graphics/shotwell { };-- shebangfix = callPackage ../tools/misc/shebangfix { };-- shellinabox = callPackage ../servers/shellinabox { };-- siege = callPackage ../tools/networking/siege {};-- silc_client = callPackage ../applications/networking/instant-messengers/silc-client { };-- silc_server = callPackage ../servers/silc-server { };-- silver-searcher = callPackage ../tools/text/silver-searcher { };-- simplescreenrecorder = callPackage ../applications/video/simplescreenrecorder { };-- sleuthkit = callPackage ../tools/system/sleuthkit {};-- slimrat = callPackage ../tools/networking/slimrat {- inherit (perlPackages) WWWMechanize LWP;- };-- slsnif = callPackage ../tools/misc/slsnif { };-- smartmontools = callPackage ../tools/system/smartmontools { };-- smbldaptools = callPackage ../tools/networking/smbldaptools {- inherit (perlPackages) NetLDAP CryptSmbHash DigestSHA1;- };-- smbnetfs = callPackage ../tools/filesystems/smbnetfs {};-- snort = callPackage ../applications/networking/ids/snort { };-- snx = callPackage_i686 ../tools/networking/snx {- inherit (pkgsi686Linux) pam gcc33;- inherit (pkgsi686Linux.xlibs) libX11;- };-- solr = callPackage ../servers/search/solr { };-- sparsehash = callPackage ../development/libraries/sparsehash { };-- spiped = callPackage ../tools/networking/spiped { };-- sproxy = haskellPackages.callPackage ../tools/networking/sproxy { };-- sproxy-web = haskellPackages.callPackage ../tools/networking/sproxy-web { };-- stardict = callPackage ../applications/misc/stardict/stardict.nix {- inherit (gnome) libgnomeui scrollkeeper;- };-- storebrowse = callPackage ../tools/system/storebrowse { };-- fusesmb = callPackage ../tools/filesystems/fusesmb { };-- sl = callPackage ../tools/misc/sl { };-- socat = callPackage ../tools/networking/socat { };-- socat2pre = lowPrio (callPackage ../tools/networking/socat/2.x.nix { });-- sourceHighlight = callPackage ../tools/text/source-highlight {- # Boost 1.54 causes the "test_regexranges" test to fail- boost = boost149;- };-- spaceFM = callPackage ../applications/misc/spacefm { };-- squashfsTools = callPackage ../tools/filesystems/squashfs { };-- sshfsFuse = callPackage ../tools/filesystems/sshfs-fuse { };-- sshuttle = callPackage ../tools/security/sshuttle { };-- sudo = callPackage ../tools/security/sudo { };-- suidChroot = builderDefsPackage (import ../tools/system/suid-chroot) { };-- super = callPackage ../tools/security/super { };-- ssdeep = callPackage ../tools/security/ssdeep { };-- ssmtp = callPackage ../tools/networking/ssmtp {- tlsSupport = true;- };-- ssss = callPackage ../tools/security/ssss { };-- storeBackup = callPackage ../tools/backup/store-backup { };-- stow = callPackage ../tools/misc/stow { };-- stun = callPackage ../tools/networking/stun { };-- stunnel = callPackage ../tools/networking/stunnel { };-- su = shadow.su;-- surfraw = callPackage ../tools/networking/surfraw { };-- swec = callPackage ../tools/networking/swec {- inherit (perlPackages) LWP URI HTMLParser HTTPServerSimple Parent;- };-- svnfs = callPackage ../tools/filesystems/svnfs { };-- sysbench = callPackage ../development/tools/misc/sysbench {};-- system_config_printer = callPackage ../tools/misc/system-config-printer {- libxml2 = libxml2Python;- };-- sitecopy = callPackage ../tools/networking/sitecopy { };-- stricat = callPackage ../tools/security/stricat { };-- privoxy = callPackage ../tools/networking/privoxy { };-- t1utils = callPackage ../tools/misc/t1utils { };-- tarsnap = callPackage ../tools/backup/tarsnap { };-- tcpcrypt = callPackage ../tools/security/tcpcrypt { };-- tboot = callPackage ../tools/security/tboot { };-- tcpdump = callPackage ../tools/networking/tcpdump { };-- tcpflow = callPackage ../tools/networking/tcpflow { };-- teamviewer = callPackage_i686 ../applications/networking/remote/teamviewer { };-- # Work In Progress: it doesn't start unless running a daemon as root- teamviewer8 = lowPrio (callPackage_i686 ../applications/networking/remote/teamviewer/8.nix { });-- telnet = callPackage ../tools/networking/telnet { };-- texmacs = callPackage ../applications/editors/texmacs {- tex = texLive; /* tetex is also an option */- extraFonts = true;- guile = guile_1_8;- };-- texmaker = callPackage ../applications/editors/texmaker { };-- texstudio = callPackage ../applications/editors/texstudio { };-- tiled-qt = callPackage ../applications/editors/tiled-qt { qt = qt4; };-- tinc = callPackage ../tools/networking/tinc { };-- tiny8086 = callPackage ../applications/virtualization/8086tiny { };-- tmpwatch = callPackage ../tools/misc/tmpwatch { };-- tmux = callPackage ../tools/misc/tmux { };-- tor = callPackage ../tools/security/tor { };-- torbutton = callPackage ../tools/security/torbutton { };-- torbrowser = callPackage ../tools/security/tor/torbrowser.nix { };-- torsocks = callPackage ../tools/security/tor/torsocks.nix { };-- tpm-quote-tools = callPackage ../tools/security/tpm-quote-tools { };-- tpm-tools = callPackage ../tools/security/tpm-tools { };-- trickle = callPackage ../tools/networking/trickle {};-- trousers = callPackage ../tools/security/trousers { };-- ttf2pt1 = callPackage ../tools/misc/ttf2pt1 { };-- ttysnoop = callPackage ../os-specific/linux/ttysnoop {};-- twitterBootstrap = callPackage ../development/web/twitter-bootstrap {};-- txt2man = callPackage ../tools/misc/txt2man { };-- ucl = callPackage ../development/libraries/ucl { };-- ucspi-tcp = callPackage ../tools/networking/ucspi-tcp { };-- udftools = callPackage ../tools/filesystems/udftools {};-- udptunnel = callPackage ../tools/networking/udptunnel { };-- ufraw = callPackage ../applications/graphics/ufraw { };-- unetbootin = callPackage ../tools/cd-dvd/unetbootin { };-- unfs3 = callPackage ../servers/unfs3 { };-- unoconv = callPackage ../tools/text/unoconv { };-- upx = callPackage ../tools/compression/upx { };-- urlview = callPackage ../applications/misc/urlview {};-- usbmuxd = callPackage ../tools/misc/usbmuxd {};-- vacuum = callPackage ../applications/networking/instant-messengers/vacuum {};-- volatility = callPackage ../tools/security/volatility { };-- vidalia = callPackage ../tools/security/vidalia { };-- vbetool = builderDefsPackage ../tools/system/vbetool {- inherit pciutils libx86 zlib;- };-- vde2 = callPackage ../tools/networking/vde2 { };-- vboot_reference = callPackage ../tools/system/vboot_reference { };-- vcsh = callPackage ../applications/version-management/vcsh { };-- verilog = callPackage ../applications/science/electronics/verilog {};-- vfdecrypt = callPackage ../tools/misc/vfdecrypt { };-- vifm = callPackage ../applications/misc/vifm { };-- viking = callPackage ../applications/misc/viking {- inherit (gnome) scrollkeeper;- };-- vnc2flv = callPackage ../tools/video/vnc2flv {};-- vncrec = builderDefsPackage ../tools/video/vncrec {- inherit (xlibs) imake libX11 xproto gccmakedep libXt- libXmu libXaw libXext xextproto libSM libICE libXpm- libXp;- };-- vobcopy = callPackage ../tools/cd-dvd/vobcopy { };-- vobsub2srt = callPackage ../tools/cd-dvd/vobsub2srt { };-- vorbisgain = callPackage ../tools/misc/vorbisgain { };-- vpnc = callPackage ../tools/networking/vpnc { };-- openconnect = callPackage ../tools/networking/openconnect.nix { };-- vtun = callPackage ../tools/networking/vtun { };-- wal_e = callPackage ../tools/backup/wal-e { };-- watchman = callPackage ../development/tools/watchman { };-- wbox = callPackage ../tools/networking/wbox {};-- welkin = callPackage ../tools/graphics/welkin {};-- testdisk = callPackage ../tools/misc/testdisk { };-- htmlTidy = callPackage ../tools/text/html-tidy { };-- html-xml-utils = callPackage ../tools/text/xml/html-xml-utils { };-- tftp_hpa = callPackage ../tools/networking/tftp-hpa {};-- tigervnc = callPackage ../tools/admin/tigervnc {- fontDirectories = [ xorg.fontadobe75dpi xorg.fontmiscmisc xorg.fontcursormisc- xorg.fontbhlucidatypewriter75dpi ];- inherit (xorg) xorgserver;- fltk = fltk13;- };-- tightvnc = callPackage ../tools/admin/tightvnc {- fontDirectories = [ xorg.fontadobe75dpi xorg.fontmiscmisc xorg.fontcursormisc- xorg.fontbhlucidatypewriter75dpi ];- };-- time = callPackage ../tools/misc/time { };-- tkabber = callPackage ../applications/networking/instant-messengers/tkabber { };-- qfsm = callPackage ../applications/science/electronics/qfsm { };-- tkgate = callPackage ../applications/science/electronics/tkgate/1.x.nix {- inherit (xlibs) libX11 imake xproto gccmakedep;- };-- # The newer package is low-priority because it segfaults at startup.- tkgate2 = lowPrio (callPackage ../applications/science/electronics/tkgate/2.x.nix {- inherit (xlibs) libX11;- });-- tm = callPackage ../tools/system/tm { };-- trang = callPackage ../tools/text/xml/trang { };-- tre = callPackage ../development/libraries/tre { };-- ts = callPackage ../tools/system/ts { };-- transfig = callPackage ../tools/graphics/transfig {- libpng = libpng12;- };-- truecrypt = callPackage ../applications/misc/truecrypt {- wxGUI = config.truecrypt.wxGUI or true;- };-- ttmkfdir = callPackage ../tools/misc/ttmkfdir { };-- unclutter = callPackage ../tools/misc/unclutter { };-- unbound = callPackage ../tools/networking/unbound { };-- units = callPackage ../tools/misc/units { };-- unrar = callPackage ../tools/archivers/unrar { };-- xarchive = callPackage ../tools/archivers/xarchive { };-- xarchiver = callPackage ../tools/archivers/xarchiver { };-- xcruiser = callPackage ../applications/misc/xcruiser { };-- unarj = callPackage ../tools/archivers/unarj { };-- unshield = callPackage ../tools/archivers/unshield { };-- unzip = callPackage ../tools/archivers/unzip { };-- unzipNLS = lowPrio (unzip.override { enableNLS = true; });-- uptimed = callPackage ../tools/system/uptimed { };-- varnish = callPackage ../servers/varnish { };-- varnish2 = callPackage ../servers/varnish/2.1.nix { };-- venus = callPackage ../tools/misc/venus {- python = python27;- };-- vlan = callPackage ../tools/networking/vlan { };-- wakelan = callPackage ../tools/networking/wakelan { };-- wavemon = callPackage ../tools/networking/wavemon { };-- w3cCSSValidator = callPackage ../tools/misc/w3c-css-validator {- tomcat = tomcat6;- };-- wdfs = callPackage ../tools/filesystems/wdfs { };-- wdiff = callPackage ../tools/text/wdiff { };-- webalizer = callPackage ../tools/networking/webalizer { };-- webdruid = builderDefsPackage ../tools/admin/webdruid {- inherit zlib libpng freetype gd which- libxml2 geoip;- };-- weighttp = callPackage ../tools/networking/weighttp { };-- wget = callPackage ../tools/networking/wget {- inherit (perlPackages) LWP;- };-- which = callPackage ../tools/system/which { };-- wicd = callPackage ../tools/networking/wicd { };-- wkhtmltopdf = callPackage ../tools/graphics/wkhtmltopdf { };-- wv = callPackage ../tools/misc/wv { };-- wv2 = callPackage ../tools/misc/wv2 { };-- x86info = callPackage ../os-specific/linux/x86info { };-- x11_ssh_askpass = callPackage ../tools/networking/x11-ssh-askpass { };-- xbursttools = assert stdenv ? glibc; import ../tools/misc/xburst-tools {- inherit stdenv fetchgit autoconf automake confuse pkgconfig libusb libusb1;- # It needs a cross compiler for mipsel to build the firmware it will- # load into the Ben Nanonote- gccCross =- let- pkgsCross = (import ./all-packages.nix) {- inherit system;- inherit bootStdenv noSysDirs gccWithCC gccWithProfiling config;- # Ben Nanonote system- crossSystem = {- config = "mipsel-unknown-linux";- bigEndian = true;- arch = "mips";- float = "soft";- withTLS = true;- libc = "uclibc";- platform = {- name = "ben_nanonote";- kernelMajor = "2.6";- # It's not a bcm47xx processor, but for the headers this should work- kernelHeadersBaseConfig = "bcm47xx_defconfig";- kernelArch = "mips";- };- gcc = {- arch = "mips32";- };- };- };- in- pkgsCross.gccCrossStageStatic;- };-- xclip = callPackage ../tools/misc/xclip { };-- xtitle = callPackage ../tools/misc/xtitle { };-- xdelta = callPackage ../tools/compression/xdelta { };-- xdummy = callPackage ../tools/misc/xdummy { };-- xfsprogs = callPackage ../tools/filesystems/xfsprogs { };-- xmlroff = callPackage ../tools/typesetting/xmlroff {- inherit (gnome) libgnomeprint;- };-- xmlstarlet = callPackage ../tools/text/xml/xmlstarlet { };-- xmlto = callPackage ../tools/typesetting/xmlto { };-- xmltv = callPackage ../tools/misc/xmltv { };-- xmpppy = builderDefsPackage (import ../development/python-modules/xmpppy) {- inherit python setuptools;- };-- xorriso = callPackage ../tools/cd-dvd/xorriso { };-- xpf = callPackage ../tools/text/xml/xpf {- libxml2 = libxml2Python;- };-- xsel = callPackage ../tools/misc/xsel { };-- xtreemfs = callPackage ../tools/filesystems/xtreemfs {};-- xvfb_run = callPackage ../tools/misc/xvfb-run { inherit (texFunctions) fontsConf; };-- youtubeDL = callPackage ../tools/misc/youtube-dl { };-- zbar = callPackage ../tools/graphics/zbar {- pygtk = lib.overrideDerivation pygtk (x: {- gtk = gtk2;- });- };-- zdelta = callPackage ../tools/compression/zdelta { };-- zfstools = callPackage ../tools/filesystems/zfstools {- zfs = linuxPackages.zfs;- };-- zile = callPackage ../applications/editors/zile { };-- zip = callPackage ../tools/archivers/zip { };-- zpaq = callPackage ../tools/archivers/zpaq { };- zpaqd = callPackage ../tools/archivers/zpaq/zpaqd.nix { };-- zsync = callPackage ../tools/compression/zsync { };--- ### SHELLS-- bash = lowPrio (callPackage ../shells/bash {- texinfo = null;- });-- bashInteractive = appendToName "interactive" (callPackage ../shells/bash {- interactive = true;- readline = readline63; # Includes many vi mode fixes- });-- bashCompletion = callPackage ../shells/bash-completion { };-- dash = callPackage ../shells/dash { };-- fish = callPackage ../shells/fish {- python = python27Full;- };-- tcsh = callPackage ../shells/tcsh { };-- rush = callPackage ../shells/rush { };-- zsh = callPackage ../shells/zsh { };--- ### DEVELOPMENT / COMPILERS-- abc =- abcPatchable [];-- abcPatchable = patches :- import ../development/compilers/abc/default.nix {- inherit stdenv fetchurl patches jre apacheAnt;- javaCup = callPackage ../development/libraries/java/cup { };- };-- aldor = callPackage ../development/compilers/aldor { };-- aliceml = callPackage ../development/compilers/aliceml { };-- aspectj = callPackage ../development/compilers/aspectj { };-- ats = callPackage ../development/compilers/ats { };- ats2 = callPackage ../development/compilers/ats2 { };-- avra = callPackage ../development/compilers/avra { };-- bigloo = callPackage ../development/compilers/bigloo { };-- chicken = callPackage ../development/compilers/chicken { };-- ccl = builderDefsPackage ../development/compilers/ccl {};-- clang = wrapClang llvmPackages.clang;-- clang_34 = wrapClang llvmPackages_34.clang;- clang_33 = wrapClang (clangUnwrapped llvm_33 ../development/compilers/llvm/3.3/clang.nix);-- clangAnalyzer = callPackage ../development/tools/analysis/clang-analyzer {- clang = clang_34;- llvmPackages = llvmPackages_34;- };-- clangUnwrapped = llvm: pkg: callPackage pkg {- stdenv = if stdenv.isDarwin then stdenvApple else stdenv;- inherit llvm;- };-- clangSelf = clangWrapSelf llvmPackagesSelf.clang;-- clangWrapSelf = build: (import ../build-support/clang-wrapper) {- clang = build;- stdenv = clangStdenv;- libc = glibc;- binutils = binutils;- shell = bash;- inherit libcxx coreutils zlib;- nativeTools = false;- nativeLibc = false;- };-- #Use this instead of stdenv to build with clang- clangStdenv = lowPrio (stdenvAdapters.overrideGCC stdenv clang);- libcxxStdenv = stdenvAdapters.overrideGCC stdenv (clangWrapSelf llvmPackages.clang);-- clean = callPackage ../development/compilers/clean { };-- closurecompiler = callPackage ../development/compilers/closure { };-- cmucl_binary = callPackage ../development/compilers/cmucl/binary.nix { };-- compcert = callPackage ../development/compilers/compcert {};-- cryptol1 = lowPrio (callPackage ../development/compilers/cryptol/1.8.x.nix {});- cryptol2 = with haskellPackages_ghc763; callPackage ../development/compilers/cryptol/2.0.x.nix {- Cabal = Cabal_1_18_1_3;- cabalInstall = cabalInstall_1_18_0_3;- process = process_1_2_0_0;- };-- cython = pythonPackages.cython;- cython3 = python3Packages.cython;-- dylan = callPackage ../development/compilers/gwydion-dylan {- dylan = callPackage ../development/compilers/gwydion-dylan/binary.nix { };- };-- ecl = callPackage ../development/compilers/ecl { };-- eql = callPackage ../development/compilers/eql {};-- adobe_flex_sdk = callPackage ../development/compilers/adobe-flex-sdk { };-- fpc = callPackage ../development/compilers/fpc { };- fpc_2_4_0 = callPackage ../development/compilers/fpc/2.4.0.nix { };-- gambit = callPackage ../development/compilers/gambit { };-- gcc = gcc48;-- gcc33 = wrapGCC (import ../development/compilers/gcc/3.3 {- inherit fetchurl stdenv noSysDirs;- });-- gcc34 = wrapGCC (import ../development/compilers/gcc/3.4 {- inherit fetchurl stdenv noSysDirs;- });-- gcc48_realCross = lib.addMetaAttrs { hydraPlatforms = []; }- (callPackage ../development/compilers/gcc/4.8 {- inherit noSysDirs;- binutilsCross = binutilsCross;- libcCross = libcCross;- profiledCompiler = false;- enableMultilib = false;- crossStageStatic = false;- cross = assert crossSystem != null; crossSystem;- });-- gcc_realCross = gcc48_realCross;-- gccCrossStageStatic = let- libcCross1 =- if stdenv.cross.libc == "msvcrt" then windows.mingw_w64_headers- else if stdenv.cross.libc == "libSystem" then darwin.xcode- else null;- in- wrapGCCCross {- gcc = forceNativeDrv (lib.addMetaAttrs { hydraPlatforms = []; } (- gcc_realCross.override {- crossStageStatic = true;- langCC = false;- libcCross = libcCross1;- enableShared = false;- }));- libc = libcCross1;- binutils = binutilsCross;- cross = assert crossSystem != null; crossSystem;- };-- # Only needed for mingw builds- gccCrossMingw2 = wrapGCCCross {- gcc = gccCrossStageStatic.gcc;- libc = windows.mingw_headers2;- binutils = binutilsCross;- cross = assert crossSystem != null; crossSystem;- };-- gccCrossStageFinal = wrapGCCCross {- gcc = forceNativeDrv (gcc_realCross.override {- libpthreadCross =- # FIXME: Don't explicitly refer to `i586-pc-gnu'.- if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then gnu.libpthreadCross- else null;-- # XXX: We have troubles cross-compiling libstdc++ on MinGW (see- # <http://hydra.nixos.org/build/4268232>), so don't even try.- langCC = (crossSystem == null- || crossSystem.config != "i686-pc-mingw32");- });- libc = libcCross;- binutils = binutilsCross;- cross = assert crossSystem != null; crossSystem;- };-- gcc44 = lowPrio (wrapGCC (makeOverridable (import ../development/compilers/gcc/4.4) {- inherit fetchurl stdenv gmp mpfr /* ppl cloogppl */- gettext which noSysDirs;- texinfo = texinfo4;- profiledCompiler = true;- }));-- gcc45 = lowPrio (wrapGCC (callPackage ../development/compilers/gcc/4.5 {- inherit fetchurl stdenv gmp mpfr mpc libelf zlib perl- gettext which noSysDirs;- texinfo = texinfo4;-- ppl = null;- cloogppl = null;-- # bootstrapping a profiled compiler does not work in the sheevaplug:- # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43944- profiledCompiler = !stdenv.isArm;-- # When building `gcc.crossDrv' (a "Canadian cross", with host == target- # and host != build), `cross' must be null but the cross-libc must still- # be passed.- cross = null;- libcCross = if crossSystem != null then libcCross else null;- libpthreadCross =- if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then gnu.libpthreadCross- else null;- }));-- gcc46 = lowPrio (wrapGCC (callPackage ../development/compilers/gcc/4.6 {- inherit noSysDirs;-- ppl = null;- cloog = null;-- # bootstrapping a profiled compiler does not work in the sheevaplug:- # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43944- profiledCompiler = false;-- # When building `gcc.crossDrv' (a "Canadian cross", with host == target- # and host != build), `cross' must be null but the cross-libc must still- # be passed.- cross = null;- libcCross = if crossSystem != null then libcCross else null;- libpthreadCross =- if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then gnu.libpthreadCross- else null;- texinfo = texinfo413;- }));-- gcc48 = lowPrio (wrapGCC (callPackage ../development/compilers/gcc/4.8 {- inherit noSysDirs;-- # PGO seems to speed up compilation by gcc by ~10%, see #445 discussion- profiledCompiler = with stdenv; (!isDarwin && (isi686 || isx86_64));-- # When building `gcc.crossDrv' (a "Canadian cross", with host == target- # and host != build), `cross' must be null but the cross-libc must still- # be passed.- cross = null;- libcCross = if crossSystem != null then libcCross else null;- libpthreadCross =- if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then gnu.libpthreadCross- else null;- }));-- gcc48_multi =- if system == "x86_64-linux" then lowPrio (- wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi (gcc48.gcc.override {- stdenv = overrideGCC stdenv (wrapGCCWith (import ../build-support/gcc-wrapper) glibc_multi gcc.gcc);- profiledCompiler = false;- enableMultilib = true;- }))- else throw "Multilib gcc not supported on ‘${system}’";-- gcc48_debug = lowPrio (wrapGCC (callPackage ../development/compilers/gcc/4.8 {- stripped = false;-- inherit noSysDirs;- cross = null;- libcCross = null;- binutilsCross = null;- }));-- gcc49 = lowPrio (wrapGCC (callPackage ../development/compilers/gcc/4.9 {- inherit noSysDirs;-- # PGO seems to speed up compilation by gcc by ~10%, see #445 discussion- profiledCompiler = with stdenv; (!isDarwin && (isi686 || isx86_64));-- # When building `gcc.crossDrv' (a "Canadian cross", with host == target- # and host != build), `cross' must be null but the cross-libc must still- # be passed.- cross = null;- libcCross = if crossSystem != null then libcCross else null;- libpthreadCross =- if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then gnu.libpthreadCross- else null;- }));-- gccApple =- assert stdenv.isDarwin;- wrapGCC (makeOverridable (import ../development/compilers/gcc/4.2-apple64) {- inherit fetchurl noSysDirs;- profiledCompiler = true;- # Since it fails to build with GCC 4.6, build it with the "native"- # Apple-GCC.- stdenv = allStdenvs.stdenvNative;- });-- gfortran = gfortran48;-- gfortran48 = wrapGCC (gcc48.gcc.override {- name = "gfortran";- langFortran = true;- langCC = false;- langC = false;- profiledCompiler = false;- });-- gcj = gcj48;-- gcj48 = wrapGCC (gcc48.gcc.override {- name = "gcj";- langJava = true;- langFortran = false;- langCC = false;- langC = false;- profiledCompiler = false;- inherit zip unzip zlib boehmgc gettext pkgconfig perl;- inherit gtk;- inherit (gnome) libart_lgpl;- inherit (xlibs) libX11 libXt libSM libICE libXtst libXi libXrender- libXrandr xproto renderproto xextproto inputproto randrproto;- });-- gnat = gnat45;-- gnat45 = wrapGCC (gcc45.gcc.override {- name = "gnat";- langCC = false;- langC = true;- langAda = true;- profiledCompiler = false;- inherit gnatboot;- # We can't use the ppl stuff, because we would have- # libstdc++ problems.- cloogppl = null;- ppl = null;- });-- gnat46 = wrapGCC (gcc46.gcc.override {- name = "gnat";- langCC = false;- langC = true;- langAda = true;- profiledCompiler = false;- gnatboot = gnat45;- # We can't use the ppl stuff, because we would have- # libstdc++ problems.- ppl = null;- cloog = null;- });-- gnatboot = wrapGCC (import ../development/compilers/gnatboot {- inherit fetchurl stdenv;- });-- gccgo = gccgo48;-- gccgo48 = wrapGCC (gcc48.gcc.override {- name = "gccgo";- langCC = true; #required for go.- langC = true;- langGo = true;- });-- ghdl = wrapGCC (import ../development/compilers/gcc/4.3 {- inherit stdenv fetchurl gmp mpfr noSysDirs gnat;- texinfo = texinfo4;- name = "ghdl";- langVhdl = true;- langCC = false;- langC = false;- profiledCompiler = false;- enableMultilib = false;- });-- ghdl_mcode = callPackage ../development/compilers/ghdl { };-- gcl = builderDefsPackage ../development/compilers/gcl {- inherit mpfr m4 binutils fetchcvs emacs zlib which- texinfo;- gmp = gmp4;- inherit (xlibs) libX11 xproto inputproto libXi- libXext xextproto libXt libXaw libXmu;- inherit stdenv;- texLive = texLiveAggregationFun {- paths = [- texLive texLiveExtra- ];- };- };-- jhc = callPackage ../development/compilers/jhc {- inherit (haskellPackages_ghc763) ghc binary zlib utf8String readline fgl- regexCompat HsSyck random;- };-- gcc-arm-embedded-4_7 = callPackage_i686 ../development/compilers/gcc-arm-embedded {- version = "4.7-2013q3-20130916";- releaseType = "update";- sha256 = "1bd9bi9q80xn2rpy0rn1vvj70rh15kb7dmah0qs4q2rv78fqj40d";- };- gcc-arm-embedded-4_8 = callPackage_i686 ../development/compilers/gcc-arm-embedded {- version = "4.8-2014q1-20140314";- releaseType = "update";- sha256 = "ce92859550819d4a3d1a6e2672ea64882b30afa2c08cf67fa8e1d93788c2c577";- };- gcc-arm-embedded = gcc-arm-embedded-4_8;-- # Haskell and GHC-- # Import Haskell infrastructure.-- haskell = let pkgs_ = pkgs // { gmp = gmp.override { withStatic = true; }; };- callPackage = newScope pkgs_;- newScope = extra: lib.callPackageWith (pkgs_ // pkgs_.xorg // extra);- in callPackage ./haskell-defaults.nix { pkgs = pkgs_; inherit callPackage newScope; };-- # Available GHC versions.-- # For several compiler versions, we export a large set of Haskell-related- # packages.-- # NOTE (recurseIntoAttrs): After discussion, we originally decided to- # enable it for all GHC versions. However, this is getting too much,- # particularly in connection with Hydra builds for all these packages.- # So we enable it for selected versions only. We build all ghcs, though-- ghc = recurseIntoAttrs (lib.mapAttrs' (name: value:- lib.nameValuePair (builtins.substring (builtins.stringLength "packages_") (builtins.stringLength name) name) value.ghc- ) (lib.filterAttrs (name: value:- builtins.substring 0 (builtins.stringLength "packages_") name == "packages_"- ) haskell));-- haskellPackages = haskellPackages_ghc783;- haskellPlatform = haskellPlatformPackages."2013_2_0_0";-- haskellPackages_ghc6104 = haskell.packages_ghc6104;- haskellPackages_ghc6123 = haskell.packages_ghc6123;- haskellPackages_ghc704 = haskell.packages_ghc704;- haskellPackages_ghc722 = haskell.packages_ghc722;- haskellPackages_ghc742 = haskell.packages_ghc742;- haskellPackages_ghc763 = haskell.packages_ghc763;- haskellPackages_ghc783_no_profiling = recurseIntoAttrs haskell.packages_ghc783.noProfiling;- haskellPackages_ghc783_profiling = recurseIntoAttrs haskell.packages_ghc783.profiling;- haskellPackages_ghc783 = recurseIntoAttrs haskell.packages_ghc783.highPrio;- haskellPackages_ghcHEAD = haskell.packages_ghcHEAD;-- haskellPlatformPackages = recurseIntoAttrs (import ../development/libraries/haskell/haskell-platform { inherit pkgs; });-- haxe = callPackage ../development/compilers/haxe { };-- hhvm = callPackage ../development/compilers/hhvm { };- hiphopvm = hhvm; /* Compatibility alias */-- falcon = builderDefsPackage (import ../development/interpreters/falcon) {- inherit cmake;- };-- fsharp = callPackage ../development/compilers/fsharp {};-- go_1_0 = callPackage ../development/compilers/go { };-- go_1_1 =- if stdenv.isDarwin then- callPackage ../development/compilers/go/1.1-darwin.nix { }- else- callPackage ../development/compilers/go/1.1.nix { };-- go_1_2 = callPackage ../development/compilers/go/1.2.nix { };-- go_1_3 = callPackage ../development/compilers/go/1.3.nix { };-- go = go_1_3;-- gox = callPackage ../development/compilers/go/gox.nix { };-- gprolog = callPackage ../development/compilers/gprolog { };-- gwt240 = callPackage ../development/compilers/gwt/2.4.0.nix { };-- icedtea7_jdk = callPackage ../development/compilers/icedtea rec {- jdk = openjdk;- jdkPath = "${openjdk}/lib/openjdk";- } // { outputs = [ "out" ]; };-- icedtea7_jre = (lib.setName "icedtea7-${lib.getVersion pkgs.icedtea7_jdk.jre}" (lib.addMetaAttrs- { description = "Free Java runtime environment based on OpenJDK 7.0 and the IcedTea project"; }- pkgs.icedtea7_jdk.jre)) // { outputs = [ "jre" ]; };-- icedtea7_web = callPackage ../development/compilers/icedtea-web {- jdk = "${icedtea7_jdk}/lib/icedtea";- };-- ikarus = callPackage ../development/compilers/ikarus { };-- hugs = callPackage ../development/compilers/hugs { };-- path64 = callPackage ../development/compilers/path64 { };-- openjdk =- if stdenv.isDarwin then- callPackage ../development/compilers/openjdk-darwin { }- else- let- openjdkBootstrap = callPackage ../development/compilers/openjdk/bootstrap.nix { };- in (callPackage ../development/compilers/openjdk {- jdk = openjdkBootstrap;- }) // { outputs = [ "out" ]; };-- # FIXME: Need a way to set per-output meta attributes.- openjre = (lib.setName "openjre-${lib.getVersion pkgs.openjdk.jre}" (lib.addMetaAttrs- { description = "The open-source Java Runtime Environment"; }- pkgs.openjdk.jre)) // { outputs = [ "jre" ]; };-- jdk = if stdenv.isDarwin || stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"- then pkgs.openjdk- else pkgs.oraclejdk;- jre = if stdenv.isDarwin || stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"- then pkgs.openjre- else pkgs.oraclejre;-- oraclejdk = pkgs.jdkdistro true false;-- oraclejdk7 = pkgs.oraclejdk7distro true false;-- oraclejdk8 = pkgs.oraclejdk8distro true false;-- oraclejre = lowPrio (pkgs.jdkdistro false false);-- oraclejre7 = lowPrio (pkgs.oraclejdk7distro false false);-- oraclejre8 = lowPrio (pkgs.oraclejdk8distro false false);-- jrePlugin = lowPrio (pkgs.jdkdistro false true);-- supportsJDK =- system == "i686-linux" ||- system == "x86_64-linux";-- jdkdistro = installjdk: pluginSupport:- assert supportsJDK;- (if pluginSupport then appendToName "with-plugin" else x: x)- (callPackage ../development/compilers/oraclejdk/jdk6-linux.nix { });-- oraclejdk7distro = installjdk: pluginSupport:- assert supportsJDK;- (if pluginSupport then appendToName "with-plugin" else x: x)- (callPackage ../development/compilers/oraclejdk/jdk7-linux.nix { inherit installjdk; });-- oraclejdk8distro = installjdk: pluginSupport:- assert supportsJDK;- (if pluginSupport then appendToName "with-plugin" else x: x)- (callPackage ../development/compilers/oraclejdk/jdk8-linux.nix { inherit installjdk; });-- jikes = callPackage ../development/compilers/jikes { };-- juliaGit = callPackage ../development/compilers/julia/git-20131013.nix {- liblapack = liblapack.override {shared = true;};- llvm = llvm_33;- };- julia021 = callPackage ../development/compilers/julia/0.2.1.nix {- liblapack = liblapack.override {shared = true;};- llvm = llvm_33;- };- julia030 = let- liblapack = liblapack_3_5_0.override {shared = true;};- in callPackage ../development/compilers/julia/0.3.0.nix {- inherit liblapack;- suitesparse = suitesparse.override {- inherit liblapack;- };- openblas = openblas_0_2_10;- llvm = llvm_34;- };- julia = julia021;-- lazarus = builderDefsPackage (import ../development/compilers/fpc/lazarus.nix) {- inherit makeWrapper gtk glib pango atk gdk_pixbuf;- inherit (xlibs) libXi inputproto libX11 xproto libXext xextproto;- fpc = fpc;- };-- lessc = callPackage ../development/compilers/lessc { };-- llvm = llvmPackages.llvm;-- llvm_34 = llvmPackages_34.llvm;- llvm_33 = llvm_v ../development/compilers/llvm/3.3/llvm.nix;-- llvm_v = path: callPackage path {- stdenv = if stdenv.isDarwin then stdenvApple else stdenv;- };-- llvmPackages = if !stdenv.isDarwin then llvmPackages_34 else llvmPackages_34 // {- # until someone solves build problems with _34- llvm = llvm_33;- clang = clang_33;- };-- llvmPackages_34 = recurseIntoAttrs (import ../development/compilers/llvm/3.4 {- inherit stdenv newScope fetchurl;- isl = isl_0_12;- });- llvmPackagesSelf = import ../development/compilers/llvm/3.4 { inherit newScope fetchurl; isl = isl_0_12; stdenv = libcxxStdenv; };-- manticore = callPackage ../development/compilers/manticore { };-- mentorToolchains = recurseIntoAttrs (- callPackage_i686 ../development/compilers/mentor {}- );-- mercury = callPackage ../development/compilers/mercury { };-- mitscheme = callPackage ../development/compilers/mit-scheme { };-- mlton = callPackage ../development/compilers/mlton { };-- mono = callPackage ../development/compilers/mono {- inherit (xlibs) libX11;- };-- monoDLLFixer = callPackage ../build-support/mono-dll-fixer { };-- mozart = callPackage ../development/compilers/mozart { };-- neko = callPackage ../development/compilers/neko { };-- nasm = callPackage ../development/compilers/nasm { };-- nvidia_cg_toolkit = callPackage ../development/compilers/nvidia-cg-toolkit { };-- ocaml = ocamlPackages.ocaml;-- ocaml_3_08_0 = callPackage ../development/compilers/ocaml/3.08.0.nix { };-- ocaml_3_10_0 = callPackage ../development/compilers/ocaml/3.10.0.nix { };-- ocaml_3_11_2 = callPackage ../development/compilers/ocaml/3.11.2.nix { };-- ocaml_3_12_1 = callPackage ../development/compilers/ocaml/3.12.1.nix { };-- ocaml_4_00_1 = callPackage ../development/compilers/ocaml/4.00.1.nix { };-- ocaml_4_01_0 = callPackage ../development/compilers/ocaml/4.01.0.nix { };-- orc = callPackage ../development/compilers/orc { };-- metaocaml_3_09 = callPackage ../development/compilers/ocaml/metaocaml-3.09.nix { };-- ber_metaocaml_003 = callPackage ../development/compilers/ocaml/ber-metaocaml-003.nix { };-- mkOcamlPackages = ocaml: self: let callPackage = newScope self; in rec {- inherit ocaml;-- camlidl = callPackage ../development/tools/ocaml/camlidl { };-- camlp5_5_strict = callPackage ../development/tools/ocaml/camlp5/5.15.nix { };-- camlp5_5_transitional = callPackage ../development/tools/ocaml/camlp5/5.15.nix {- transitional = true;- };-- camlp5_6_strict = callPackage ../development/tools/ocaml/camlp5 { };-- camlp5_6_transitional = callPackage ../development/tools/ocaml/camlp5 {- transitional = true;- };-- camlp5_strict = camlp5_6_strict;-- camlp5_transitional = camlp5_6_transitional;-- camlzip = callPackage ../development/ocaml-modules/camlzip { };-- camomile_0_8_2 = callPackage ../development/ocaml-modules/camomile/0.8.2.nix { };- camomile = callPackage ../development/ocaml-modules/camomile { };-- camlimages = callPackage ../development/ocaml-modules/camlimages {- libpng = libpng12;- giflib = giflib_4_1;- };-- biniou = callPackage ../development/ocaml-modules/biniou { };-- ocaml_cairo = callPackage ../development/ocaml-modules/ocaml-cairo { };-- cppo = callPackage ../development/tools/ocaml/cppo { };-- cryptokit = callPackage ../development/ocaml-modules/cryptokit { };-- csv = callPackage ../development/ocaml-modules/csv { };-- deriving = callPackage ../development/tools/ocaml/deriving { };-- easy-format = callPackage ../development/ocaml-modules/easy-format { };-- findlib = callPackage ../development/tools/ocaml/findlib { };-- javalib = callPackage ../development/ocaml-modules/javalib {- extlib = ocaml_extlib_maximal;- };-- dypgen = callPackage ../development/ocaml-modules/dypgen { };-- patoline = callPackage ../tools/typesetting/patoline { };-- gmetadom = callPackage ../development/ocaml-modules/gmetadom { };-- lablgl = callPackage ../development/ocaml-modules/lablgl { };-- lablgtk = callPackage ../development/ocaml-modules/lablgtk {- inherit (gnome) libgnomecanvas libglade gtksourceview;- };-- lablgtkmathview = callPackage ../development/ocaml-modules/lablgtkmathview {- gtkmathview = callPackage ../development/libraries/gtkmathview { };- };-- menhir = callPackage ../development/ocaml-modules/menhir { };-- merlin = callPackage ../development/tools/ocaml/merlin { };-- mldonkey = callPackage ../applications/networking/p2p/mldonkey { };-- mlgmp = callPackage ../development/ocaml-modules/mlgmp { };-- ocaml_batteries = callPackage ../development/ocaml-modules/batteries { };-- ocaml_cryptgps = callPackage ../development/ocaml-modules/cryptgps { };-- ocaml_data_notation = callPackage ../development/ocaml-modules/odn { };-- ocaml_expat = callPackage ../development/ocaml-modules/expat { };-- ocamlgraph = callPackage ../development/ocaml-modules/ocamlgraph { };-- ocaml_http = callPackage ../development/ocaml-modules/http { };-- ocamlify = callPackage ../development/tools/ocaml/ocamlify { };-- ocaml_lwt = callPackage ../development/ocaml-modules/lwt { };-- ocamlmod = callPackage ../development/tools/ocaml/ocamlmod { };-- ocaml_mysql = callPackage ../development/ocaml-modules/mysql { };-- ocamlnet = callPackage ../development/ocaml-modules/ocamlnet { };-- ocaml_oasis = callPackage ../development/tools/ocaml/oasis { };-- ocaml_pcre = callPackage ../development/ocaml-modules/pcre {- inherit pcre;- };-- ocaml_react = callPackage ../development/ocaml-modules/react { };-- ocamlsdl= callPackage ../development/ocaml-modules/ocamlsdl { };-- ocaml_sqlite3 = callPackage ../development/ocaml-modules/sqlite3 { };-- ocaml_ssl = callPackage ../development/ocaml-modules/ssl { };-- ounit = callPackage ../development/ocaml-modules/ounit { };-- ulex = callPackage ../development/ocaml-modules/ulex { };-- ulex08 = callPackage ../development/ocaml-modules/ulex/0.8 {- camlp5 = camlp5_transitional;- };-- ocaml_typeconv = callPackage ../development/ocaml-modules/typeconv { };-- ocaml_typeconv_3_0_5 = callPackage ../development/ocaml-modules/typeconv/3.0.5.nix { };-- ocaml_sexplib = callPackage ../development/ocaml-modules/sexplib { };-- ocaml_extlib = callPackage ../development/ocaml-modules/extlib { };- ocaml_extlib_maximal = callPackage ../development/ocaml-modules/extlib {- minimal = false;- };-- pycaml = callPackage ../development/ocaml-modules/pycaml { };-- opam_1_0_0 = callPackage ../development/tools/ocaml/opam/1.0.0.nix { };- opam_1_1 = callPackage ../development/tools/ocaml/opam/1.1.nix { };- opam = opam_1_1;-- sawja = callPackage ../development/ocaml-modules/sawja { };-- uucd = callPackage ../development/ocaml-modules/uucd { };- uunf = callPackage ../development/ocaml-modules/uunf { };- uutf = callPackage ../development/ocaml-modules/uutf { };- xmlm = callPackage ../development/ocaml-modules/xmlm { };-- yojson = callPackage ../development/ocaml-modules/yojson { };-- zarith = callPackage ../development/ocaml-modules/zarith { };- };-- ocamlPackages = recurseIntoAttrs ocamlPackages_4_01_0;- ocamlPackages_3_10_0 = mkOcamlPackages ocaml_3_10_0 pkgs.ocamlPackages_3_10_0;- ocamlPackages_3_11_2 = mkOcamlPackages ocaml_3_11_2 pkgs.ocamlPackages_3_11_2;- ocamlPackages_3_12_1 = mkOcamlPackages ocaml_3_12_1 pkgs.ocamlPackages_3_12_1;- ocamlPackages_4_00_1 = mkOcamlPackages ocaml_4_00_1 pkgs.ocamlPackages_4_00_1;- ocamlPackages_4_01_0 = mkOcamlPackages ocaml_4_01_0 pkgs.ocamlPackages_4_01_0;- ocamlPackages_latest = ocamlPackages_4_01_0;-- ocaml_make = callPackage ../development/ocaml-modules/ocamlmake { };-- opa = let callPackage = newScope pkgs.ocamlPackages_4_00_1; in callPackage ../development/compilers/opa { };-- ocamlnat = let callPackage = newScope pkgs.ocamlPackages_3_12_1; in callPackage ../development/ocaml-modules/ocamlnat { };-- qcmm = callPackage ../development/compilers/qcmm {- lua = lua4;- ocaml = ocaml_3_08_0;- };-- roadsend = callPackage ../development/compilers/roadsend { };-- rustc = callPackage ../development/compilers/rustc/0.11.nix {};- rustcMaster = callPackage ../development/compilers/rustc/head.nix {};-- rust = rustc;--- sbclBootstrap = callPackage ../development/compilers/sbcl/bootstrap.nix {};- sbcl = callPackage ../development/compilers/sbcl {- clisp = clisp;- };-- scala_2_9 = callPackage ../development/compilers/scala/2.9.nix { };- scala_2_10 = callPackage ../development/compilers/scala/2.10.nix { };- scala_2_11 = callPackage ../development/compilers/scala { };- scala = scala_2_11;-- sdcc = callPackage ../development/compilers/sdcc { };-- smlnjBootstrap = callPackage ../development/compilers/smlnj/bootstrap.nix { };- smlnj = callPackage_i686 ../development/compilers/smlnj { };-- stalin = callPackage ../development/compilers/stalin { };-- strategoPackages = recurseIntoAttrs strategoPackages018;-- strategoPackages016 = callPackage ../development/compilers/strategoxt/0.16.nix {- stdenv = overrideInStdenv stdenv [gnumake380];- };-- strategoPackages017 = callPackage ../development/compilers/strategoxt/0.17.nix {- readline = readline5;- };-- strategoPackages018 = callPackage ../development/compilers/strategoxt/0.18.nix {- readline = readline5;- };-- metaBuildEnv = callPackage ../development/compilers/meta-environment/meta-build-env { };-- swiProlog = callPackage ../development/compilers/swi-prolog { };-- tbb = callPackage ../development/libraries/tbb { };-- tinycc = callPackage ../development/compilers/tinycc { };-- urweb = callPackage ../development/compilers/urweb { };-- vala = callPackage ../development/compilers/vala/default.nix { };-- visualcpp = callPackage ../development/compilers/visual-c++ { };-- vs90wrapper = callPackage ../development/compilers/vs90wrapper { };-- webdsl = callPackage ../development/compilers/webdsl { };-- win32hello = callPackage ../development/compilers/visual-c++/test { };-- wrapGCCWith = gccWrapper: glibc: baseGCC: gccWrapper {- nativeTools = stdenv ? gcc && stdenv.gcc.nativeTools;- nativeLibc = stdenv ? gcc && stdenv.gcc.nativeLibc;- nativePrefix = if stdenv ? gcc then stdenv.gcc.nativePrefix else "";- gcc = baseGCC;- libc = glibc;- shell = bash;- inherit stdenv binutils coreutils zlib;- };-- wrapClangWith = clangWrapper: glibc: baseClang: clangWrapper {- nativeTools = stdenv.gcc.nativeTools or false;- nativeLibc = stdenv.gcc.nativeLibc or false;- nativePrefix = stdenv.gcc.nativePrefix or "";- clang = baseClang;- libc = glibc;- shell = bash;- binutils = stdenv.gcc.binutils;- inherit stdenv coreutils zlib;- };-- wrapClang = wrapClangWith (makeOverridable (import ../build-support/clang-wrapper)) glibc;-- wrapGCC = wrapGCCWith (makeOverridable (import ../build-support/gcc-wrapper)) glibc;-- wrapGCCCross =- {gcc, libc, binutils, cross, shell ? "", name ? "gcc-cross-wrapper"}:-- forceNativeDrv (import ../build-support/gcc-cross-wrapper {- nativeTools = false;- nativeLibc = false;- noLibc = (libc == null);- inherit stdenv gcc binutils libc shell name cross;- });-- # prolog- yap = callPackage ../development/compilers/yap { };-- yasm = callPackage ../development/compilers/yasm { };--- ### DEVELOPMENT / INTERPRETERS-- acl2 = builderDefsPackage ../development/interpreters/acl2 {- inherit sbcl;- };-- angelscript = callPackage ../development/interpreters/angelscript {};-- clisp = callPackage ../development/interpreters/clisp { };-- # compatibility issues in 2.47 - at list 2.44.1 is known good- # for sbcl bootstrap- clisp_2_44_1 = callPackage ../development/interpreters/clisp/2.44.1.nix {- libsigsegv = libsigsegv_25;- };-- clojure = callPackage ../development/interpreters/clojure { };-- clooj = callPackage ../development/interpreters/clojure/clooj.nix { };-- erlangR14 = callPackage ../development/interpreters/erlang/R14.nix { };- erlangR15 = callPackage ../development/interpreters/erlang/R15.nix { };- erlangR16 = callPackage ../development/interpreters/erlang/R16.nix { };- erlangR17 = callPackage ../development/interpreters/erlang/R17.nix { };- erlang = erlangR17;-- rebar = callPackage ../development/tools/build-managers/rebar { };-- elixir = callPackage ../development/interpreters/elixir { };-- groovy = callPackage ../development/interpreters/groovy { };-- guile_1_8 = callPackage ../development/interpreters/guile/1.8.nix { };-- guile_2_0 = callPackage ../development/interpreters/guile { };-- guile = guile_2_0;-- hadoop = callPackage ../applications/networking/cluster/hadoop { };-- io = callPackage ../development/interpreters/io { };-- j = callPackage ../development/interpreters/j {};-- jmeter = callPackage ../applications/networking/jmeter {};-- davmail = callPackage ../applications/networking/davmail {};-- lxappearance = callPackage ../applications/misc/lxappearance {};-- kona = callPackage ../development/interpreters/kona {};-- love = callPackage ../development/interpreters/love {lua=lua5;};- love_luajit = callPackage ../development/interpreters/love {lua=luajit;};- love_0_9 = callPackage ../development/interpreters/love/0.9.nix { };-- lua4 = callPackage ../development/interpreters/lua-4 { };- lua5_0 = callPackage ../development/interpreters/lua-5/5.0.3.nix { };- lua5_1 = callPackage ../development/interpreters/lua-5/5.1.nix { };- lua5_2 = callPackage ../development/interpreters/lua-5/5.2.nix { };- lua5_2_compat = callPackage ../development/interpreters/lua-5/5.2.nix {- compat = true;- };- lua5 = lua5_1;- lua = lua5;-- lua5_sockets = callPackage ../development/interpreters/lua-5/sockets.nix {};- lua5_expat = callPackage ../development/interpreters/lua-5/expat.nix {};- lua5_filesystem = callPackage ../development/interpreters/lua-5/filesystem.nix {};- lua5_sec = callPackage ../development/interpreters/lua-5/sec.nix {};-- luarocks = callPackage ../development/tools/misc/luarocks {- lua = lua5;- };-- luajit = callPackage ../development/interpreters/luajit {};-- lush2 = callPackage ../development/interpreters/lush {};-- maude = callPackage ../development/interpreters/maude {- bison = bison2;- flex = flex_2_5_35;- };-- mesos = callPackage ../applications/networking/cluster/mesos {- sasl = cyrus_sasl;- automake = automake114x;- inherit (pythonPackages) python boto setuptools distutils-cfg wrapPython;- pythonProtobuf = pythonPackages.protobuf;- };-- octave = callPackage ../development/interpreters/octave {- fltk = fltk13;- qt = null;- ghostscript = null;- llvm = null;- hdf5 = null;- glpk = null;- suitesparse = null;- openjdk = null;- gnuplot = null;- readline = readline63;- };- octaveFull = (lowPrio (callPackage ../development/interpreters/octave {- fltk = fltk13;- qt = qt4;- }));-- # mercurial (hg) bleeding edge version- octaveHG = callPackage ../development/interpreters/octave/hg.nix { };-- ocropus = callPackage ../applications/misc/ocropus { };-- perl514 = callPackage ../development/interpreters/perl/5.14 { };-- perl516 = callPackage ../development/interpreters/perl/5.16 {- fetchurl = fetchurlBoot;- };-- perl520 = callPackage ../development/interpreters/perl/5.20 { };-- perl = if system != "i686-cygwin" then perl516 else sysPerl;-- php = php54;-- phpPackages = recurseIntoAttrs (import ./php-packages.nix {- inherit php pkgs;- });-- php53 = callPackage ../development/interpreters/php/5.3.nix { };-- php_fpm53 = callPackage ../development/interpreters/php/5.3.nix {- config = config // {- php = (config.php or {}) // {- fpm = true;- apxs2 = false;- };- };- };-- php54 = callPackage ../development/interpreters/php/5.4.nix { };-- picolisp = callPackage ../development/interpreters/picolisp {};-- pltScheme = racket; # just to be sure-- polyml = callPackage ../development/compilers/polyml { };-- pure = callPackage ../development/interpreters/pure {- llvm = llvm_33 ;- };-- python = python2;- python2 = python27;- python3 = python34;-- # pythonPackages further below, but assigned here because they need to be in sync- pythonPackages = python2Packages;- python2Packages = python27Packages;- python3Packages = python34Packages;-- pythonFull = python2Full;- python2Full = python27Full;-- python26 = callPackage ../development/interpreters/python/2.6 { db = db47; };- python27 = callPackage ../development/interpreters/python/2.7 { };- python32 = callPackage ../development/interpreters/python/3.2 { };- python33 = callPackage ../development/interpreters/python/3.3 { };- python34 = hiPrio (callPackage ../development/interpreters/python/3.4 { });-- pypy = callPackage ../development/interpreters/pypy/2.3 { };-- python26Full = callPackage ../development/interpreters/python/wrapper.nix {- extraLibs = [];- postBuild = "";- python = python26;- inherit (python26Packages) recursivePthLoader;- };- python27Full = callPackage ../development/interpreters/python/wrapper.nix {- extraLibs = [];- postBuild = "";- python = python27;- inherit (python27Packages) recursivePthLoader;- };-- pythonDocs = recurseIntoAttrs (import ../development/interpreters/python/docs {- inherit stdenv fetchurl lib;- });-- pythonLinkmeWrapper = callPackage ../development/interpreters/python/python-linkme-wrapper.nix { };-- pypi2nix = python27Packages.pypi2nix;-- pyrex = pyrex095;-- pyrex095 = callPackage ../development/interpreters/pyrex/0.9.5.nix { };-- pyrex096 = callPackage ../development/interpreters/pyrex/0.9.6.nix { };-- qi = callPackage ../development/compilers/qi { };-- racket = callPackage ../development/interpreters/racket { };-- rakudo = callPackage ../development/interpreters/rakudo { };-- rascal = callPackage ../development/interpreters/rascal { };-- regina = callPackage ../development/interpreters/regina { };-- renpy = callPackage ../development/interpreters/renpy {- wrapPython = pythonPackages.wrapPython;- };-- ruby18 = callPackage ../development/interpreters/ruby/ruby-18.nix { };- ruby19 = callPackage ../development/interpreters/ruby/ruby-19.nix { };- ruby2 = lowPrio (callPackage ../development/interpreters/ruby/ruby-2.0.nix { });-- ruby = ruby19;-- rubyLibs = recurseIntoAttrs (callPackage ../development/interpreters/ruby/libs.nix { });-- rake = rubyLibs.rake;-- rubySqlite3 = callPackage ../development/ruby-modules/sqlite3 { };-- rubygemsFun = ruby: builderDefsPackage (import ../development/interpreters/ruby/rubygems.nix) {- inherit ruby makeWrapper;- };- rubygems = hiPrio (rubygemsFun ruby);-- rq = callPackage ../applications/networking/cluster/rq { };-- scsh = callPackage ../development/interpreters/scsh { };-- scheme48 = callPackage ../development/interpreters/scheme48 { };-- spark = callPackage ../applications/networking/cluster/spark { };-- spidermonkey = callPackage ../development/interpreters/spidermonkey { };- spidermonkey_1_8_0rc1 = callPackage ../development/interpreters/spidermonkey/1.8.0-rc1.nix { };- spidermonkey_185 = callPackage ../development/interpreters/spidermonkey/185-1.0.0.nix { };- spidermonkey_17 = callPackage ../development/interpreters/spidermonkey/17.0.nix { };- spidermonkey_24 = callPackage ../development/interpreters/spidermonkey/24.2.nix { };-- supercollider = callPackage ../development/interpreters/supercollider {- qt = qt4;- fftw = fftwSinglePrec;- };-- supercollider_scel = supercollider.override { useSCEL = true; };-- sysPerl = callPackage ../development/interpreters/perl/sys-perl { };-- tcl = callPackage ../development/interpreters/tcl { };-- xulrunner = callPackage ../development/interpreters/xulrunner {- inherit (gnome) libIDL;- inherit (pythonPackages) pysqlite;- };-- xulrunner_30 = firefox30Pkgs.xulrunner;--- ### DEVELOPMENT / MISC-- amdadlsdk = callPackage ../development/misc/amdadl-sdk { };-- amdappsdk26 = callPackage ../development/misc/amdapp-sdk {- version = "2.6";- };-- amdappsdk27 = callPackage ../development/misc/amdapp-sdk {- version = "2.7";- };-- amdappsdk28 = callPackage ../development/misc/amdapp-sdk {- version = "2.8";- };-- amdappsdk = amdappsdk28;-- amdappsdkFull = callPackage ../development/misc/amdapp-sdk {- version = "2.8";- samples = true;- };-- avrgcclibc = callPackage ../development/misc/avr-gcc-with-avr-libc {- gcc = gcc46;- stdenv = overrideGCC stdenv gcc46;- };-- avr8burnomat = callPackage ../development/misc/avr8-burn-omat { };-- sourceFromHead = import ../build-support/source-from-head-fun.nix {- inherit config;- };-- ecj = callPackage ../development/eclipse/ecj { };-- jdtsdk = callPackage ../development/eclipse/jdt-sdk { };-- jruby165 = callPackage ../development/interpreters/jruby { };-- guileCairo = callPackage ../development/guile-modules/guile-cairo { };-- guileGnome = callPackage ../development/guile-modules/guile-gnome {- gconf = gnome.GConf;- inherit (gnome) gnome_vfs libglade libgnome libgnomecanvas libgnomeui;- };-- guile_lib = callPackage ../development/guile-modules/guile-lib { };-- guile_ncurses = callPackage ../development/guile-modules/guile-ncurses { };-- guile-xcb = callPackage ../development/guile-modules/guile-xcb { };-- pharo-vm = callPackage_i686 ../development/pharo/vm { };-- srecord = callPackage ../development/tools/misc/srecord { };-- windowssdk = (- import ../development/misc/windows-sdk {- inherit fetchurl stdenv cabextract;- });--- ### DEVELOPMENT / TOOLS-- ansible = callPackage ../tools/system/ansible { };-- antlr = callPackage ../development/tools/parsing/antlr/2.7.7.nix { };-- antlr3 = callPackage ../development/tools/parsing/antlr { };-- ant = apacheAnt;-- apacheAnt = callPackage ../development/tools/build-managers/apache-ant { };-- astyle = callPackage ../development/tools/misc/astyle { };-- autobuild = callPackage ../development/tools/misc/autobuild { };-- autoconf = callPackage ../development/tools/misc/autoconf { };-- autoconf213 = callPackage ../development/tools/misc/autoconf/2.13.nix { };-- autocutsel = callPackage ../tools/X11/autocutsel{ };-- automake = automake112x;-- automake111x = callPackage ../development/tools/misc/automake/automake-1.11.x.nix { };-- automake112x = callPackage ../development/tools/misc/automake/automake-1.12.x.nix { };-- automake113x = callPackage ../development/tools/misc/automake/automake-1.13.x.nix { };-- automake114x = callPackage ../development/tools/misc/automake/automake-1.14.x.nix { };-- automoc4 = callPackage ../development/tools/misc/automoc4 { };-- avrdude = callPackage ../development/tools/misc/avrdude { };-- avarice = callPackage ../development/tools/misc/avarice { };-- babeltrace = callPackage ../development/tools/misc/babeltrace { };-- bam = callPackage ../development/tools/build-managers/bam {};-- binutils = callPackage ../development/tools/misc/binutils {- inherit noSysDirs;- };-- binutils_nogold = lowPrio (callPackage ../development/tools/misc/binutils {- inherit noSysDirs;- gold = false;- });-- binutilsCross =- if crossSystem != null && crossSystem.libc == "libSystem" then darwin.cctools- else lowPrio (forceNativeDrv (import ../development/tools/misc/binutils {- inherit stdenv fetchurl zlib bison;- noSysDirs = true;- cross = assert crossSystem != null; crossSystem;- }));-- bison2 = callPackage ../development/tools/parsing/bison/2.x.nix { };- bison3 = callPackage ../development/tools/parsing/bison/3.x.nix { };- bison = bison3;-- buildbot = callPackage ../development/tools/build-managers/buildbot {- inherit (pythonPackages) twisted jinja2 sqlalchemy sqlalchemy_migrate;- dateutil = pythonPackages.dateutil_1_5;- };-- buildbotSlave = callPackage ../development/tools/build-managers/buildbot-slave {- inherit (pythonPackages) twisted;- };-- byacc = callPackage ../development/tools/parsing/byacc { };-- casperjs = callPackage ../development/tools/casperjs { };-- cbrowser = callPackage ../development/tools/misc/cbrowser { };-- ccache = callPackage ../development/tools/misc/ccache { };-- # Wrapper that works as gcc or g++- # It can be used by setting in nixpkgs config like this, for example:- # replaceStdenv = { pkgs }: pkgs.ccacheStdenv;- # But if you build in chroot, you should have that path in chroot- # If instantiated directly, it will use the HOME/.ccache as cache directory.- # You can use an override in packageOverrides to set extraConfig:- # packageOverrides = pkgs: {- # ccacheWrapper = pkgs.ccacheWrapper.override {- # extraConfig = ''- # CCACHE_COMPRESS=1- # CCACHE_DIR=/bin/.ccache- # '';- # };- #- ccacheWrapper = makeOverridable ({ extraConfig ? "" }:- wrapGCC (ccache.links extraConfig)) {};- ccacheStdenv = lowPrio (overrideGCC stdenv ccacheWrapper);-- cccc = callPackage ../development/tools/analysis/cccc { };-- cgdb = callPackage ../development/tools/misc/cgdb { };-- chromedriver = callPackage ../development/tools/selenium/chromedriver { gconf = gnome.GConf; };-- chrpath = callPackage ../development/tools/misc/chrpath { };-- "cl-launch" = callPackage ../development/tools/misc/cl-launch {};-- complexity = callPackage ../development/tools/misc/complexity { };-- ctags = callPackage ../development/tools/misc/ctags { };-- ctagsWrapped = import ../development/tools/misc/ctags/wrapped.nix {- inherit pkgs ctags writeScriptBin;- };-- cmake = callPackage ../development/tools/build-managers/cmake { };-- cmake264 = callPackage ../development/tools/build-managers/cmake/264.nix { };-- cmakeCurses = cmake.override { useNcurses = true; };-- cmakeWithGui = cmakeCurses.override { useQt4 = true; };-- coccinelle = callPackage ../development/tools/misc/coccinelle { };-- framac = callPackage ../development/tools/analysis/frama-c { };-- cppi = callPackage ../development/tools/misc/cppi { };-- cproto = callPackage ../development/tools/misc/cproto { };-- cflow = callPackage ../development/tools/misc/cflow { };-- cov-build = callPackage ../development/tools/analysis/cov-build {};-- cppcheck = callPackage ../development/tools/analysis/cppcheck { };-- cscope = callPackage ../development/tools/misc/cscope { };-- csslint = callPackage ../development/web/csslint { };-- libcxx = callPackage ../development/libraries/libc++ { stdenv = pkgs.clangStdenv; };- libcxxabi = callPackage ../development/libraries/libc++abi { stdenv = pkgs.clangStdenv; };-- libsigrok = callPackage ../development/tools/libsigrok { };-- libsigrokdecode = callPackage ../development/tools/libsigrokdecode { };-- dejagnu = callPackage ../development/tools/misc/dejagnu { };-- dfeet = callPackage ../development/tools/misc/d-feet {- inherit (pythonPackages) pep8;- };-- dfu-programmer = callPackage ../development/tools/misc/dfu-programmer { };-- ddd = callPackage ../development/tools/misc/ddd { };-- distcc = callPackage ../development/tools/misc/distcc { };-- # distccWrapper: wrapper that works as gcc or g++- # It can be used by setting in nixpkgs config like this, for example:- # replaceStdenv = { pkgs }: pkgs.distccStdenv;- # But if you build in chroot, a default 'nix' will create- # a new net namespace, and won't have network access.- # You can use an override in packageOverrides to set extraConfig:- # packageOverrides = pkgs: {- # distccWrapper = pkgs.distccWrapper.override {- # extraConfig = ''- # DISTCC_HOSTS="myhost1 myhost2"- # '';- # };- #- distccWrapper = makeOverridable ({ extraConfig ? "" }:- wrapGCC (distcc.links extraConfig)) {};- distccStdenv = lowPrio (overrideGCC stdenv distccWrapper);-- distccMasquerade = callPackage ../development/tools/misc/distcc/masq.nix {- gccRaw = gcc.gcc;- binutils = binutils;- };-- docutils = builderDefsPackage (import ../development/tools/documentation/docutils) {- inherit python pil makeWrapper;- };-- doxygen = callPackage ../development/tools/documentation/doxygen {- qt4 = null;- };-- doxygen_gui = lowPrio (doxygen.override { inherit qt4; });-- drush = callPackage ../development/tools/misc/drush { };-- eggdbus = callPackage ../development/tools/misc/eggdbus { };-- elfutils = callPackage ../development/tools/misc/elfutils { };-- epm = callPackage ../development/tools/misc/epm { };-- emma = callPackage ../development/tools/analysis/emma { };-- findbugs = callPackage ../development/tools/analysis/findbugs { };-- pmd = callPackage ../development/tools/analysis/pmd { };-- jdepend = callPackage ../development/tools/analysis/jdepend { };-- checkstyle = callPackage ../development/tools/analysis/checkstyle { };-- flex_2_5_35 = callPackage ../development/tools/parsing/flex/2.5.35.nix { };- flex_2_5_39 = callPackage ../development/tools/parsing/flex/2.5.39.nix { };- flex = flex_2_5_39;-- m4 = gnum4;-- global = callPackage ../development/tools/misc/global { };-- gnome_doc_utils = callPackage ../development/tools/documentation/gnome-doc-utils {};-- gnum4 = callPackage ../development/tools/misc/gnum4 { };-- gnumake380 = callPackage ../development/tools/build-managers/gnumake/3.80 { };- gnumake381 = callPackage ../development/tools/build-managers/gnumake/3.81 { };- gnumake382 = callPackage ../development/tools/build-managers/gnumake/3.82 { };- gnumake40 = callPackage ../development/tools/build-managers/gnumake/4.0 { };- gnumake = gnumake382;-- gob2 = callPackage ../development/tools/misc/gob2 { };-- gradle = callPackage ../development/tools/build-managers/gradle { };-- gperf = callPackage ../development/tools/misc/gperf { };-- gtk_doc = callPackage ../development/tools/documentation/gtk-doc { };-- gtkdialog = callPackage ../development/tools/misc/gtkdialog { };-- guileLint = callPackage ../development/tools/guile/guile-lint { };-- gwrap = callPackage ../development/tools/guile/g-wrap { };-- help2man = callPackage ../development/tools/misc/help2man {- inherit (perlPackages) LocaleGettext;- };-- hyenae = callPackage ../tools/networking/hyenae { };-- ibus = callPackage ../development/libraries/ibus { };-- iconnamingutils = callPackage ../development/tools/misc/icon-naming-utils {- inherit (perlPackages) XMLSimple;- };-- indent = callPackage ../development/tools/misc/indent { };-- ino = callPackage ../development/arduino/ino { };-- inotifyTools = callPackage ../development/tools/misc/inotify-tools { };-- intel-gpu-tools = callPackage ../development/tools/misc/intel-gpu-tools {- inherit (xorg) libpciaccess dri2proto libX11 libXext libXv libXrandr;- };-- ired = callPackage ../development/tools/analysis/radare/ired.nix { };-- itstool = callPackage ../development/tools/misc/itstool { };-- jam = callPackage ../development/tools/build-managers/jam { };-- jikespg = callPackage ../development/tools/parsing/jikespg { };-- jenkins = callPackage ../development/tools/continuous-integration/jenkins { };-- lcov = callPackage ../development/tools/analysis/lcov { };-- leiningen = callPackage ../development/tools/build-managers/leiningen { };-- libtool = libtool_2;-- libtool_1_5 = callPackage ../development/tools/misc/libtool { };-- libtool_2 = callPackage ../development/tools/misc/libtool/libtool2.nix { };-- lsof = callPackage ../development/tools/misc/lsof { };-- ltrace = callPackage ../development/tools/misc/ltrace { };-- lttng-tools = callPackage ../development/tools/misc/lttng-tools { };-- lttng-ust = callPackage ../development/tools/misc/lttng-ust { };-- lttv = callPackage ../development/tools/misc/lttv { };-- mk = callPackage ../development/tools/build-managers/mk { };-- neoload = callPackage ../development/tools/neoload {- licenseAccepted = (config.neoload.accept_license or false);- };-- ninja = callPackage ../development/tools/build-managers/ninja { };-- nixbang = callPackage ../development/tools/misc/nixbang {- pythonPackages = python3Packages;- };-- node_webkit = callPackage ../development/tools/node-webkit {- gconf = pkgs.gnome.GConf;- };-- noweb = callPackage ../development/tools/literate-programming/noweb { };-- omake = callPackage ../development/tools/ocaml/omake { };- omake_rc1 = callPackage ../development/tools/ocaml/omake/0.9.8.6-rc1.nix { };-- opengrok = callPackage ../development/tools/misc/opengrok { };-- openocd = callPackage ../development/tools/misc/openocd { };-- oprofile = callPackage ../development/tools/profiling/oprofile { };-- patchelf = callPackage ../development/tools/misc/patchelf { };-- peg = callPackage ../development/tools/parsing/peg { };-- phantomjs = callPackage ../development/tools/phantomjs {- stdenv = if stdenv.isDarwin- then overrideGCC stdenv gccApple- else stdenv;- };-- pmccabe = callPackage ../development/tools/misc/pmccabe { };-- /* Make pkgconfig always return a nativeDrv, never a proper crossDrv,- because most usage of pkgconfig as buildInput (inheritance of- pre-cross nixpkgs) means using it using as nativeBuildInput- cross_renaming: we should make all programs use pkgconfig as- nativeBuildInput after the renaming.- */- pkgconfig = forceNativeDrv (callPackage ../development/tools/misc/pkgconfig { });- pkgconfigUpstream = lowPrio (pkgconfig.override { vanilla = true; });-- prelink = callPackage ../development/tools/misc/prelink { };-- premake3 = callPackage ../development/tools/misc/premake/3.nix { };-- premake4 = callPackage ../development/tools/misc/premake { };-- premake = premake4;-- pstack = callPackage ../development/tools/misc/gdb/pstack.nix { };-- radare = callPackage ../development/tools/analysis/radare {- inherit (gnome) vte;- lua = lua5;- useX11 = config.radare.useX11 or false;- pythonBindings = config.radare.pythonBindings or false;- rubyBindings = config.radare.rubyBindings or false;- luaBindings = config.radare.luaBindings or false;- };-- ragel = callPackage ../development/tools/parsing/ragel { };-- re2c = callPackage ../development/tools/parsing/re2c { };-- remake = callPackage ../development/tools/build-managers/remake { };-- saleae-logic = callPackage ../development/tools/misc/saleae-logic { };-- # couldn't find the source yet- seleniumRCBin = callPackage ../development/tools/selenium/remote-control {- jre = jdk;- };-- selenium-server-standalone = callPackage ../development/tools/selenium/server { };-- scons = callPackage ../development/tools/build-managers/scons { };-- simpleBuildTool = callPackage ../development/tools/build-managers/simple-build-tool { };-- sigrok-cli = callPackage ../development/tools/sigrok-cli { };-- slimerjs = callPackage ../development/tools/slimerjs {};-- sloccount = callPackage ../development/tools/misc/sloccount { };-- smatch = callPackage ../development/tools/analysis/smatch {- buildllvmsparse = false;- buildc2xml = false;- };-- smc = callPackage ../tools/misc/smc { };-- sparse = callPackage ../development/tools/analysis/sparse { };-- speedtest_cli = callPackage ../tools/networking/speedtest-cli { };-- spin = callPackage ../development/tools/analysis/spin { };-- splint = callPackage ../development/tools/analysis/splint {- flex = flex_2_5_35;- };-- stm32flash = callPackage ../development/tools/misc/stm32flash { };-- strace = callPackage ../development/tools/misc/strace { };-- swig = callPackage ../development/tools/misc/swig { };-- swig2 = callPackage ../development/tools/misc/swig/2.x.nix { };-- swig3 = callPackage ../development/tools/misc/swig/3.x.nix { };-- swigWithJava = swig;-- swfmill = callPackage ../tools/video/swfmill { };-- swftools = callPackage ../tools/video/swftools { };-- tcptrack = callPackage ../development/tools/misc/tcptrack { };-- teensy-loader = callPackage ../development/tools/misc/teensy { };-- texinfo413 = callPackage ../development/tools/misc/texinfo/4.13a.nix { };- texinfo5 = callPackage ../development/tools/misc/texinfo/5.2.nix { };- texinfo4 = texinfo413;- texinfo = texinfo5;- texinfoInteractive = appendToName "interactive" (- texinfo.override { interactive = true; }- );-- texi2html = callPackage ../development/tools/misc/texi2html { };-- uhd = callPackage ../development/tools/misc/uhd { };-- uisp = callPackage ../development/tools/misc/uisp { };-- uncrustify = callPackage ../development/tools/misc/uncrustify { };-- vagrant = callPackage ../development/tools/vagrant {- ruby = ruby2;- };-- gdb = callPackage ../development/tools/misc/gdb {- hurd = gnu.hurdCross;- readline = readline63;- inherit (gnu) mig;- };-- gdbCross = lowPrio (callPackage ../development/tools/misc/gdb {- target = crossSystem;- });-- valgrind = callPackage ../development/tools/analysis/valgrind {- stdenv =- # On Darwin, Valgrind 3.7.0 expects Apple's GCC (for- # `__private_extern'.)- if stdenv.isDarwin- then overrideGCC stdenv gccApple- else stdenv;- };-- valkyrie = callPackage ../development/tools/analysis/valkyrie { };-- xc3sprog = callPackage ../development/tools/misc/xc3sprog { };-- xmlindent = callPackage ../development/web/xmlindent {};-- xpwn = callPackage ../development/mobile/xpwn {};-- xxdiff = callPackage ../development/tools/misc/xxdiff {- bison = bison2;- };-- yacc = bison;-- yodl = callPackage ../development/tools/misc/yodl { };--- ### DEVELOPMENT / LIBRARIES-- a52dec = callPackage ../development/libraries/a52dec { };-- aacskeys = callPackage ../development/libraries/aacskeys { };-- aalib = callPackage ../development/libraries/aalib { };-- accountsservice = callPackage ../development/libraries/accountsservice { };-- acl = callPackage ../development/libraries/acl { };-- activemq = callPackage ../development/libraries/apache-activemq { };-- adns = callPackage ../development/libraries/adns { };-- afflib = callPackage ../development/libraries/afflib {};-- agg = callPackage ../development/libraries/agg { };-- allegro = callPackage ../development/libraries/allegro {};- allegro5 = callPackage ../development/libraries/allegro/5.nix {};- allegro5unstable = callPackage- ../development/libraries/allegro/5-unstable.nix {};-- amrnb = callPackage ../development/libraries/amrnb { };-- amrwb = callPackage ../development/libraries/amrwb { };-- apr = callPackage ../development/libraries/apr { };-- aprutil = callPackage ../development/libraries/apr-util {- bdbSupport = true;- };-- asio = callPackage ../development/libraries/asio { };-- aspell = callPackage ../development/libraries/aspell { };-- aspellDicts = recurseIntoAttrs (import ../development/libraries/aspell/dictionaries.nix {- inherit fetchurl stdenv aspell which;- });-- aterm = aterm25;-- aterm25 = callPackage ../development/libraries/aterm/2.5.nix { };-- aterm28 = lowPrio (callPackage ../development/libraries/aterm/2.8.nix { });-- attica = callPackage ../development/libraries/attica { };-- attr = callPackage ../development/libraries/attr { };-- at_spi2_core = callPackage ../development/libraries/at-spi2-core { };-- at_spi2_atk = callPackage ../development/libraries/at-spi2-atk { };-- aqbanking = callPackage ../development/libraries/aqbanking { };-- aubio = callPackage ../development/libraries/aubio { };-- audiofile = callPackage ../development/libraries/audiofile { };-- axis = callPackage ../development/libraries/axis { };-- babl_0_0_22 = callPackage ../development/libraries/babl/0_0_22.nix { };-- babl = callPackage ../development/libraries/babl { };-- beecrypt = callPackage ../development/libraries/beecrypt { };-- boehmgc = callPackage ../development/libraries/boehm-gc { };-- boolstuff = callPackage ../development/libraries/boolstuff { };-- boost144 = callPackage ../development/libraries/boost/1.44.nix { };- boost149 = callPackage ../development/libraries/boost/1.49.nix { };- boost155 = callPackage ../development/libraries/boost/1.55.nix { };- boost = boost155;-- boostHeaders = callPackage ../development/libraries/boost/header-only-wrapper.nix { };-- botan = callPackage ../development/libraries/botan { };- botanUnstable = callPackage ../development/libraries/botan/unstable.nix { };-- box2d = callPackage ../development/libraries/box2d { };- box2d_2_0_1 = callPackage ../development/libraries/box2d/2.0.1.nix { };-- buddy = callPackage ../development/libraries/buddy { };-- bwidget = callPackage ../development/libraries/bwidget { };-- c-ares = callPackage ../development/libraries/c-ares {- fetchurl = fetchurlBoot;- };-- caelum = callPackage ../development/libraries/caelum { };-- capnproto = callPackage ../development/libraries/capnproto { };-- scmccid = callPackage ../development/libraries/scmccid { };-- ccrtp = callPackage ../development/libraries/ccrtp { };- ccrtp_1_8 = callPackage ../development/libraries/ccrtp/1.8.nix { };-- celt = callPackage ../development/libraries/celt {};- celt_0_7 = callPackage ../development/libraries/celt/0.7.nix {};- celt_0_5_1 = callPackage ../development/libraries/celt/0.5.1.nix {};-- cgal = callPackage ../development/libraries/CGAL {};-- cgui = callPackage ../development/libraries/cgui {};-- check = callPackage ../development/libraries/check { };-- chipmunk = builderDefsPackage (import ../development/libraries/chipmunk) {- inherit cmake freeglut mesa;- inherit (xlibs) libX11 xproto inputproto libXi libXmu;- };-- chmlib = callPackage ../development/libraries/chmlib { };-- chromaprint = callPackage ../development/libraries/chromaprint { };-- cil = callPackage ../development/libraries/cil { };-- cilaterm = callPackage ../development/libraries/cil-aterm {- stdenv = overrideInStdenv stdenv [gnumake380];- };-- clanlib = callPackage ../development/libraries/clanlib { };-- classads = callPackage ../development/libraries/classads { };-- classpath = callPackage ../development/libraries/java/classpath {- javac = gcj;- jvm = gcj;- gconf = gnome.GConf;- };-- clearsilver = callPackage ../development/libraries/clearsilver { };-- cln = callPackage ../development/libraries/cln { };-- clppcre = builderDefsPackage (import ../development/libraries/cl-ppcre) { };-- clucene_core_2 = callPackage ../development/libraries/clucene-core/2.x.nix { };-- clucene_core_1 = callPackage ../development/libraries/clucene-core { };-- clucene_core = clucene_core_1;-- clutter = callPackage ../development/libraries/clutter { };-- clutter_1_18 = callPackage ../development/libraries/clutter/1.18.nix {- cogl = cogl_1_18;- };-- clutter-gst = callPackage ../development/libraries/clutter-gst { };-- clutter_gtk = callPackage ../development/libraries/clutter-gtk { };- clutter_gtk_0_10 = callPackage ../development/libraries/clutter-gtk/0.10.8.nix { };-- cminpack = callPackage ../development/libraries/cminpack { };-- cogl = callPackage ../development/libraries/cogl { };-- cogl_1_18 = callPackage ../development/libraries/cogl/1.18.nix { };-- coin3d = callPackage ../development/libraries/coin3d { };-- commoncpp2 = callPackage ../development/libraries/commoncpp2 { };-- confuse = callPackage ../development/libraries/confuse { };-- coredumper = callPackage ../development/libraries/coredumper { };-- ctl = callPackage ../development/libraries/ctl { };-- cpp-netlib = callPackage ../development/libraries/cpp-netlib { };-- cppunit = callPackage ../development/libraries/cppunit { };-- cppnetlib = callPackage ../development/libraries/cppnetlib {- boost = boostHeaders;- };-- cracklib = callPackage ../development/libraries/cracklib { };-- cryptopp = callPackage ../development/libraries/crypto++ { };-- cyrus_sasl = callPackage ../development/libraries/cyrus-sasl { };-- # Make bdb5 the default as it is the last release under the custom- # bsd-like license- db = db5;- db4 = db48;- db44 = callPackage ../development/libraries/db/db-4.4.nix { };- db45 = callPackage ../development/libraries/db/db-4.5.nix { };- db47 = callPackage ../development/libraries/db/db-4.7.nix { };- db48 = callPackage ../development/libraries/db/db-4.8.nix { };- db5 = db53;- db53 = callPackage ../development/libraries/db/db-5.3.nix { };- db6 = db60;- db60 = callPackage ../development/libraries/db/db-6.0.nix { };-- dbus = callPackage ../development/libraries/dbus { };- dbus_cplusplus = callPackage ../development/libraries/dbus-cplusplus { };- dbus_glib = callPackage ../development/libraries/dbus-glib { };- dbus_java = callPackage ../development/libraries/java/dbus-java { };- dbus_python = callPackage ../development/python-modules/dbus { };-- # Should we deprecate these? Currently there are many references.- dbus_tools = pkgs.dbus.tools;- dbus_libs = pkgs.dbus.libs;- dbus_daemon = pkgs.dbus.daemon;-- dhex = callPackage ../applications/editors/dhex { };-- dclib = callPackage ../development/libraries/dclib { };-- dillo = callPackage ../applications/networking/browsers/dillo {- fltk = fltk13;- };-- directfb = callPackage ../development/libraries/directfb { };-- dotconf = callPackage ../development/libraries/dotconf { };-- dssi = callPackage ../development/libraries/dssi {};-- dragonegg = llvmPackages.dragonegg;-- dxflib = callPackage ../development/libraries/dxflib {};-- eigen = callPackage ../development/libraries/eigen {};-- eigen2 = callPackage ../development/libraries/eigen/2.0.nix {};-- enchant = callPackage ../development/libraries/enchant { };-- enet = callPackage ../development/libraries/enet { };-- enginepkcs11 = callPackage ../development/libraries/enginepkcs11 { };-- epoxy = callPackage ../development/libraries/epoxy {- inherit (xorg) utilmacros libX11;- };-- esdl = callPackage ../development/libraries/esdl { };-- exiv2 = callPackage ../development/libraries/exiv2 { };-- expat = callPackage ../development/libraries/expat { };-- extremetuxracer = builderDefsPackage (import ../games/extremetuxracer) {- inherit mesa tcl freeglut SDL SDL_mixer pkgconfig- gettext intltool;- inherit (xlibs) libX11 xproto libXi inputproto- libXmu libXext xextproto libXt libSM libICE;- libpng = libpng12;- };-- eventlog = callPackage ../development/libraries/eventlog { };-- facile = callPackage ../development/libraries/facile { };-- faac = callPackage ../development/libraries/faac { };-- faad2 = callPackage ../development/libraries/faad2 { };-- farsight2 = callPackage ../development/libraries/farsight2 { };-- farstream = callPackage ../development/libraries/farstream {- inherit (gst_all_1)- gstreamer gst-plugins-base gst-python gst-plugins-good gst-plugins-bad- gst-libav;- };-- fcgi = callPackage ../development/libraries/fcgi { };-- ffmpeg_0_6 = callPackage ../development/libraries/ffmpeg/0.6.nix {- vpxSupport = !stdenv.isMips;- };-- ffmpeg_0_6_90 = callPackage ../development/libraries/ffmpeg/0.6.90.nix {- vpxSupport = !stdenv.isMips;- };-- ffmpeg_0_10 = callPackage ../development/libraries/ffmpeg/0.10.nix {- vpxSupport = !stdenv.isMips;-- stdenv = if stdenv.isDarwin- then overrideGCC stdenv gccApple- else stdenv;- };-- ffmpeg_1 = callPackage ../development/libraries/ffmpeg/1.x.nix {- vpxSupport = !stdenv.isMips;- };-- ffmpeg_2 = callPackage ../development/libraries/ffmpeg/2.x.nix { };-- ffmpeg = ffmpeg_2;-- ffms = callPackage ../development/libraries/ffms { };-- fftw = callPackage ../development/libraries/fftw { };- fftwSinglePrec = fftw.override { precision = "single"; };- fftwFloat = fftwSinglePrec; # the configure option is just an alias-- flann = callPackage ../development/libraries/flann { };-- flite = callPackage ../development/libraries/flite { };-- fltk13 = callPackage ../development/libraries/fltk/fltk13.nix { };-- fltk20 = callPackage ../development/libraries/fltk { };-- fmod = callPackage ../development/libraries/fmod { };-- freeimage = callPackage ../development/libraries/freeimage { };-- freetts = callPackage ../development/libraries/freetts { };-- cfitsio = callPackage ../development/libraries/cfitsio { };-- fontconfig = callPackage ../development/libraries/fontconfig { };-- makeFontsConf = let fontconfig_ = fontconfig; in {fontconfig ? fontconfig_, fontDirectories}:- import ../development/libraries/fontconfig/make-fonts-conf.nix {- inherit runCommand libxslt fontconfig fontDirectories;- };-- freealut = callPackage ../development/libraries/freealut { };-- freeglut = callPackage ../development/libraries/freeglut { };-- freetype = callPackage ../development/libraries/freetype { };-- frei0r = callPackage ../development/libraries/frei0r { };-- fribidi = callPackage ../development/libraries/fribidi { };-- funambol = callPackage ../development/libraries/funambol { };-- fam = gamin;-- gamin = callPackage ../development/libraries/gamin { };-- ganv = callPackage ../development/libraries/ganv { };-- gav = callPackage ../games/gav { };-- gsb = callPackage ../games/gsb { };-- gdome2 = callPackage ../development/libraries/gdome2 {- inherit (gnome) gtkdoc;- };-- gdbm = callPackage ../development/libraries/gdbm { };-- gegl = callPackage ../development/libraries/gegl {- # avocodec avformat librsvg- };-- gegl_0_0_22 = callPackage ../development/libraries/gegl/0_0_22.nix {- # avocodec avformat librsvg- libpng = libpng12;- };-- geoclue = callPackage ../development/libraries/geoclue {};-- geoclue2 = callPackage ../development/libraries/geoclue/2.0.nix {};-- geoip = callPackage ../development/libraries/geoip { };-- geoipjava = callPackage ../development/libraries/java/geoipjava { };-- geos = callPackage ../development/libraries/geos { };-- gettext = gettext_0_18;-- gettext_0_17 = callPackage ../development/libraries/gettext/0.17.nix { };- gettext_0_18 = callPackage ../development/libraries/gettext { };-- gd = callPackage ../development/libraries/gd { };-- gdal = callPackage ../development/libraries/gdal { };-- ggz_base_libs = callPackage ../development/libraries/ggz_base_libs {};-- giblib = callPackage ../development/libraries/giblib { };-- libgit2 = callPackage ../development/libraries/git2 { };-- glew = callPackage ../development/libraries/glew { };-- glfw = glfw3;- glfw2 = callPackage ../development/libraries/glfw/2.x.nix { };- glfw3 = callPackage ../development/libraries/glfw/3.x.nix { };-- glibc = callPackage ../development/libraries/glibc/2.19 {- kernelHeaders = linuxHeaders;- installLocales = config.glibc.locales or false;- machHeaders = null;- hurdHeaders = null;- gccCross = null;- };-- glibc_memusage = callPackage ../development/libraries/glibc/2.19 {- kernelHeaders = linuxHeaders;- installLocales = false;- withGd = true;- };-- glibcCross = forceNativeDrv (makeOverridable (import ../development/libraries/glibc/2.19)- (let crossGNU = crossSystem != null && crossSystem.config == "i586-pc-gnu";- in {- inherit stdenv fetchurl;- gccCross = gccCrossStageStatic;- kernelHeaders = if crossGNU then gnu.hurdHeaders else linuxHeadersCross;- installLocales = config.glibc.locales or false;- }- // lib.optionalAttrs crossGNU {- inherit (gnu) machHeaders hurdHeaders libpthreadHeaders mig;- inherit fetchgit;- }));--- # We can choose:- libcCrossChooser = name : if name == "glibc" then glibcCross- else if name == "uclibc" then uclibcCross- else if name == "msvcrt" then windows.mingw_w64- else if name == "libSystem" then darwin.xcode- else throw "Unknown libc";-- libcCross = assert crossSystem != null; libcCrossChooser crossSystem.libc;-- eglibc = callPackage ../development/libraries/eglibc {- kernelHeaders = linuxHeaders;- installLocales = config.glibc.locales or false;- };-- glibcLocales = callPackage ../development/libraries/glibc/2.19/locales.nix { };-- glibcInfo = callPackage ../development/libraries/glibc/2.19/info.nix { };-- glibc_multi =- runCommand "${glibc.name}-multi"- { glibc64 = glibc;- glibc32 = (import ./all-packages.nix {system = "i686-linux";}).glibc;- }- ''- mkdir -p $out- ln -s $glibc64/* $out/-- rm $out/lib $out/lib64- mkdir -p $out/lib- ln -s $glibc64/lib/* $out/lib- ln -s $glibc32/lib $out/lib/32- ln -s lib $out/lib64-- # fixing ldd RLTDLIST- rm $out/bin- cp -rs $glibc64/bin $out- chmod u+w $out/bin- rm $out/bin/ldd- sed -e "s|^RTLDLIST=.*$|RTLDLIST=\"$out/lib/ld-2.19.so $out/lib/32/ld-linux.so.2\"|g" \- $glibc64/bin/ldd > $out/bin/ldd- chmod 555 $out/bin/ldd-- rm $out/include- cp -rs $glibc32/include $out- chmod -R u+w $out/include- cp -rsf $glibc64/include $out- '' # */- ;-- glm = callPackage ../development/libraries/glm { };-- glog = callPackage ../development/libraries/glog { };-- gloox = callPackage ../development/libraries/gloox { };-- glpk = callPackage ../development/libraries/glpk { };-- glsurf = callPackage ../applications/science/math/glsurf {- inherit (ocamlPackages) lablgl findlib camlimages ocaml_mysql mlgmp;- libpng = libpng12;- giflib = giflib_4_1;- };-- gmime = callPackage ../development/libraries/gmime { };-- gmm = callPackage ../development/libraries/gmm { };-- gmp = gmp5;- gmp5 = gmp51;-- gmpxx = appendToName "with-cxx" (gmp.override { cxx = true; });-- # The GHC bootstrap binaries link against libgmp.so.3, which is in GMP 4.x.- gmp4 = callPackage ../development/libraries/gmp/4.3.2.nix { };-- gmp51 = callPackage ../development/libraries/gmp/5.1.x.nix { };-- #GMP ex-satellite, so better keep it near gmp- mpfr = callPackage ../development/libraries/mpfr/default.nix { };-- gobjectIntrospection = callPackage ../development/libraries/gobject-introspection { };-- goocanvas = callPackage ../development/libraries/goocanvas { };-- google-gflags = callPackage ../development/libraries/google-gflags { };-- gperftools = callPackage ../development/libraries/gperftools { };-- gst_all_1 = recurseIntoAttrs(callPackage ../development/libraries/gstreamer {- callPackage = pkgs.newScope (pkgs // { libav = pkgs.libav_10; });- });-- gst_all = {- inherit (pkgs) gstreamer gnonlin gst_python qt_gstreamer;- gstPluginsBase = pkgs.gst_plugins_base;- gstPluginsBad = pkgs.gst_plugins_bad;- gstPluginsGood = pkgs.gst_plugins_good;- gstPluginsUgly = pkgs.gst_plugins_ugly;- gstFfmpeg = pkgs.gst_ffmpeg;- };-- gstreamer = callPackage ../development/libraries/gstreamer/legacy/gstreamer {- bison = bison2;- };-- gst_plugins_base = callPackage ../development/libraries/gstreamer/legacy/gst-plugins-base {};-- gst_plugins_good = callPackage ../development/libraries/gstreamer/legacy/gst-plugins-good {};-- gst_plugins_bad = callPackage ../development/libraries/gstreamer/legacy/gst-plugins-bad {};-- gst_plugins_ugly = callPackage ../development/libraries/gstreamer/legacy/gst-plugins-ugly {};-- gst_ffmpeg = callPackage ../development/libraries/gstreamer/legacy/gst-ffmpeg {- ffmpeg = ffmpeg_0_10;- };-- gst_python = callPackage ../development/libraries/gstreamer/legacy/gst-python {};-- gstreamermm = callPackage ../development/libraries/gstreamer/legacy/gstreamermm { };-- gnonlin = callPackage ../development/libraries/gstreamer/legacy/gnonlin {};-- gusb = callPackage ../development/libraries/gusb {- inherit (gnome) gtkdoc;- };-- qt_gstreamer = callPackage ../development/libraries/gstreamer/legacy/qt-gstreamer {};-- gnet = callPackage ../development/libraries/gnet { };-- gnu-efi = callPackage ../development/libraries/gnu-efi { };-- gnutls = gnutls32;-- gnutls31 = callPackage ../development/libraries/gnutls/3.1.nix {- guileBindings = config.gnutls.guile or false;- };-- gnutls32 = callPackage ../development/libraries/gnutls/3.2.nix {- guileBindings = config.gnutls.guile or false;- };-- gnutls_with_guile = lowPrio (gnutls.override { guileBindings = true; });-- gpac = callPackage ../applications/video/gpac { };-- gpgme = callPackage ../development/libraries/gpgme {- gnupg1 = gnupg1orig;- };-- grantlee = callPackage ../development/libraries/grantlee { };-- gsasl = callPackage ../development/libraries/gsasl { };-- gsl = callPackage ../development/libraries/gsl { };-- gsm = callPackage ../development/libraries/gsm {};-- gsoap = callPackage ../development/libraries/gsoap { };-- gss = callPackage ../development/libraries/gss { };-- gtkimageview = callPackage ../development/libraries/gtkimageview { };-- gtkmathview = callPackage ../development/libraries/gtkmathview { };-- gtkLibs = {- inherit (pkgs) glib glibmm atk atkmm cairo pango pangomm gdk_pixbuf gtk- gtkmm;- };-- glib = callPackage ../development/libraries/glib { };- glib-tested = glib.override { doCheck = true; }; # checked version separate to break cycles- glibmm = callPackage ../development/libraries/glibmm { };-- glib_networking = callPackage ../development/libraries/glib-networking {};-- atk = callPackage ../development/libraries/atk { };- atkmm = callPackage ../development/libraries/atkmm { };-- pixman = callPackage ../development/libraries/pixman { };-- cairo = callPackage ../development/libraries/cairo {- glSupport = config.cairo.gl or (stdenv.isLinux &&- !stdenv.isArm && !stdenv.isMips);- };- cairomm = callPackage ../development/libraries/cairomm { };-- pango = callPackage ../development/libraries/pango { };- pangomm = callPackage ../development/libraries/pangomm { };-- pangox_compat = callPackage ../development/libraries/pangox-compat { };-- gdk_pixbuf = callPackage ../development/libraries/gdk-pixbuf {- # workaround signal 10 in gdk_pixbuf tests- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };-- gtk2 = callPackage ../development/libraries/gtk+/2.x.nix {- cupsSupport = config.gtk2.cups or stdenv.isLinux;- };-- gtk3 = callPackage ../development/libraries/gtk+/3.x.nix { };-- gtk = pkgs.gtk2;-- gtkmm = callPackage ../development/libraries/gtkmm/2.x.nix { };- gtkmm3 = callPackage ../development/libraries/gtkmm/3.x.nix { };-- gtkmozembedsharp = callPackage ../development/libraries/gtkmozembed-sharp {- gtksharp = gtksharp2;- };-- gtksharp1 = callPackage ../development/libraries/gtk-sharp-1 {- inherit (gnome) libglade libgtkhtml gtkhtml- libgnomecanvas libgnomeui libgnomeprint- libgnomeprintui GConf;- };-- gtksharp2 = callPackage ../development/libraries/gtk-sharp-2 {- inherit (gnome) libglade libgtkhtml gtkhtml- libgnomecanvas libgnomeui libgnomeprint- libgnomeprintui GConf gnomepanel;- };-- gtksourceviewsharp = callPackage ../development/libraries/gtksourceview-sharp {- inherit (gnome) gtksourceview;- gtksharp = gtksharp2;- };-- gtkspell = callPackage ../development/libraries/gtkspell { };-- gtkspell3 = callPackage ../development/libraries/gtkspell/3.nix { };-- gts = callPackage ../development/libraries/gts { };-- gvfs = callPackage ../development/libraries/gvfs { gconf = gnome.GConf; };-- gwenhywfar = callPackage ../development/libraries/gwenhywfar { };-- hamlib = callPackage ../development/libraries/hamlib { };-- # TODO : Add MIT Kerberos and let admin choose.- kerberos = heimdal;-- heimdal = callPackage ../development/libraries/kerberos/heimdal.nix { };-- harfbuzz = callPackage ../development/libraries/harfbuzz { };-- hawknl = callPackage ../development/libraries/hawknl { };-- herqq = callPackage ../development/libraries/herqq { };-- hspell = callPackage ../development/libraries/hspell { };-- hspellDicts = callPackage ../development/libraries/hspell/dicts.nix { };-- hsqldb = callPackage ../development/libraries/java/hsqldb { };-- http-parser = callPackage ../development/libraries/http-parser { inherit (pythonPackages) gyp; };-- hunspell = callPackage ../development/libraries/hunspell { };-- hwloc = callPackage ../development/libraries/hwloc {- inherit (xlibs) libX11;- };-- hydraAntLogger = callPackage ../development/libraries/java/hydra-ant-logger { };-- icu = callPackage ../development/libraries/icu { };-- id3lib = callPackage ../development/libraries/id3lib { };-- iksemel = callPackage ../development/libraries/iksemel { };-- ilbc = callPackage ../development/libraries/ilbc { };-- ilixi = callPackage ../development/libraries/ilixi { };-- ilmbase = callPackage ../development/libraries/ilmbase { };-- imlib = callPackage ../development/libraries/imlib {- libpng = libpng12;- };-- imlib2 = callPackage ../development/libraries/imlib2 { };-- incrtcl = callPackage ../development/libraries/incrtcl { };-- indilib = callPackage ../development/libraries/indilib { };-- iniparser = callPackage ../development/libraries/iniparser { };-- intltool = callPackage ../development/tools/misc/intltool { };-- irrlicht3843 = callPackage ../development/libraries/irrlicht { };-- isocodes = callPackage ../development/libraries/iso-codes { };-- itk = callPackage ../development/libraries/itk { };-- jamp = builderDefsPackage ../games/jamp {- inherit mesa SDL SDL_image SDL_mixer;- };-- jasper = callPackage ../development/libraries/jasper { };-- jama = callPackage ../development/libraries/jama { };-- jansson = callPackage ../development/libraries/jansson { };-- jbig2dec = callPackage ../development/libraries/jbig2dec { };-- jetty_gwt = callPackage ../development/libraries/java/jetty-gwt { };-- jetty_util = callPackage ../development/libraries/java/jetty-util { };-- json_glib = callPackage ../development/libraries/json-glib { };-- json-c-0-11 = callPackage ../development/libraries/json-c/0.11.nix { }; # vulnerable- json_c = callPackage ../development/libraries/json-c { };-- jsoncpp = callPackage ../development/libraries/jsoncpp { };-- libjson = callPackage ../development/libraries/libjson { };-- judy = callPackage ../development/libraries/judy { };-- keybinder = callPackage ../development/libraries/keybinder {- automake = automake111x;- lua = lua5_1;- };-- keybinder3 = callPackage ../development/libraries/keybinder3 {- automake = automake111x;- lua = lua5_1;- };-- krb5 = callPackage ../development/libraries/kerberos/krb5.nix { };-- lcms = lcms1;-- lcms1 = callPackage ../development/libraries/lcms { };-- lcms2 = callPackage ../development/libraries/lcms2 { };-- lensfun = callPackage ../development/libraries/lensfun { };-- lesstif = callPackage ../development/libraries/lesstif { };-- lesstif93 = callPackage ../development/libraries/lesstif-0.93 { };-- leveldb = callPackage ../development/libraries/leveldb { };-- levmar = callPackage ../development/libraries/levmar { };-- leptonica = callPackage ../development/libraries/leptonica {- libpng = libpng12;- };-- lgi = callPackage ../development/libraries/lgi {- lua = lua5_1;- };-- lib3ds = callPackage ../development/libraries/lib3ds { };-- libaacs = callPackage ../development/libraries/libaacs { };-- libaal = callPackage ../development/libraries/libaal { };-- libao = callPackage ../development/libraries/libao {- usePulseAudio = config.pulseaudio or true;- };-- libarchive = callPackage ../development/libraries/libarchive { };-- libass = callPackage ../development/libraries/libass { };-- libassuan1 = callPackage ../development/libraries/libassuan1 { };-- libassuan = callPackage ../development/libraries/libassuan { };-- libassuan2_1 = callPackage ../development/libraries/libassuan/git.nix { };-- libatomic_ops = callPackage ../development/libraries/libatomic_ops {};-- libav = libav_10;- libav_all = callPackage ../development/libraries/libav { };- inherit (libav_all) libav_0_8 libav_9 libav_10;-- libavc1394 = callPackage ../development/libraries/libavc1394 { };-- libbluedevil = callPackage ../development/libraries/libbluedevil { };-- libbluray = callPackage ../development/libraries/libbluray { };-- libbs2b = callPackage ../development/libraries/audio/libbs2b { };-- libcaca = callPackage ../development/libraries/libcaca { };-- libcanberra = callPackage ../development/libraries/libcanberra { };- libcanberra_gtk3 = libcanberra.override { gtk = gtk3; };- libcanberra_kde = if (config.kde_runtime.libcanberraWithoutGTK or true)- then libcanberra.override { gtk = null; }- else libcanberra;-- libcello = callPackage ../development/libraries/libcello {};-- libcdaudio = callPackage ../development/libraries/libcdaudio { };-- libcddb = callPackage ../development/libraries/libcddb { };-- libcdio = callPackage ../development/libraries/libcdio { };- libcdio082 = callPackage ../development/libraries/libcdio/0.82.nix { };-- libcdr = callPackage ../development/libraries/libcdr { lcms = lcms2; };-- libchamplain = callPackage ../development/libraries/libchamplain {- inherit (gnome) libsoup;- };-- libchamplain_0_6 = callPackage ../development/libraries/libchamplain/0.6.nix {};-- libchop = callPackage ../development/libraries/libchop { };-- libcm = callPackage ../development/libraries/libcm { };-- inherit (gnome3) libcroco;-- libcangjie = callPackage ../development/libraries/libcangjie { };-- libcredis = callPackage ../development/libraries/libcredis { };-- libctemplate = callPackage ../development/libraries/libctemplate { };-- libcue = callPackage ../development/libraries/libcue { };-- libdaemon = callPackage ../development/libraries/libdaemon { };-- libdbi = callPackage ../development/libraries/libdbi { };-- libdbiDriversBase = callPackage ../development/libraries/libdbi-drivers {- mysql = null;- sqlite = null;- };-- libdbiDrivers = libdbiDriversBase.override {- inherit sqlite mysql;- };-- libdbusmenu_qt = callPackage ../development/libraries/libdbusmenu-qt { };-- libdc1394 = callPackage ../development/libraries/libdc1394 { };-- libdc1394avt = callPackage ../development/libraries/libdc1394avt { };-- libdevil = callPackage ../development/libraries/libdevil { };-- libdiscid = callPackage ../development/libraries/libdiscid { };-- libdivsufsort = callPackage ../development/libraries/libdivsufsort { };-- libdmtx = callPackage ../development/libraries/libdmtx { };-- libdnet = callPackage ../development/libraries/libdnet { };-- libdrm = callPackage ../development/libraries/libdrm {- inherit fetchurl stdenv pkgconfig;- inherit (xorg) libpthreadstubs;- };-- libdv = callPackage ../development/libraries/libdv { };-- libdvbpsi = callPackage ../development/libraries/libdvbpsi { };-- libdwg = callPackage ../development/libraries/libdwg { };-- libdvdcss = callPackage ../development/libraries/libdvdcss { };-- libdvdnav = callPackage ../development/libraries/libdvdnav { };-- libdvdread = callPackage ../development/libraries/libdvdread { };-- libdwarf = callPackage ../development/libraries/libdwarf { };-- libeatmydata = callPackage ../development/libraries/libeatmydata { };-- libebml = callPackage ../development/libraries/libebml { };-- libedit = callPackage ../development/libraries/libedit { };-- libelf = callPackage ../development/libraries/libelf { };-- libfm = callPackage ../development/libraries/libfm { };-- libgadu = callPackage ../development/libraries/libgadu { };-- libgdata = gnome3.libgdata;-- libgig = callPackage ../development/libraries/libgig { };-- libgnome_keyring = callPackage ../development/libraries/libgnome-keyring { };- libgnome_keyring3 = gnome3.libgnome_keyring;-- libgnurl = callPackage ../development/libraries/libgnurl { };-- libseccomp = callPackage ../development/libraries/libseccomp { };-- libsecret = callPackage ../development/libraries/libsecret { };-- libserialport = callPackage ../development/libraries/libserialport { };-- libgtop = callPackage ../development/libraries/libgtop {};-- liblo = callPackage ../development/libraries/liblo { };-- liblrdf = librdf;-- liblscp = callPackage ../development/libraries/liblscp { };-- libe-book = callPackage ../development/libraries/libe-book {};- libe-book_00 = callPackage ../development/libraries/libe-book/0.0.nix {};-- libev = builderDefsPackage ../development/libraries/libev { };-- libevent14 = callPackage ../development/libraries/libevent/1.4.nix { };- libevent = callPackage ../development/libraries/libevent { };-- libewf = callPackage ../development/libraries/libewf { };-- libexif = callPackage ../development/libraries/libexif { };-- libexosip = callPackage ../development/libraries/exosip {};-- libexosip_3 = callPackage ../development/libraries/exosip/3.x.nix {- libosip = libosip_3;- };-- libextractor = callPackage ../development/libraries/libextractor {- libmpeg2 = mpeg2dec;- };-- libexttextcat = callPackage ../development/libraries/libexttextcat {};-- libf2c = callPackage ../development/libraries/libf2c {};-- libfixposix = callPackage ../development/libraries/libfixposix {};-- libffcall = builderDefsPackage (import ../development/libraries/libffcall) {- inherit fetchcvs;- };-- libffi = callPackage ../development/libraries/libffi { };-- libftdi = callPackage ../development/libraries/libftdi { };-- libftdi1 = callPackage ../development/libraries/libftdi/1.x.nix { };-- libgcrypt = callPackage ../development/libraries/libgcrypt { };-- libgcrypt_1_6 = lowPrio (callPackage ../development/libraries/libgcrypt/1.6.nix { });-- libgdiplus = callPackage ../development/libraries/libgdiplus { };-- libgksu = callPackage ../development/libraries/libgksu { };-- libgpgerror = callPackage ../development/libraries/libgpg-error { };-- libgphoto2 = callPackage ../development/libraries/libgphoto2 { };-- libgphoto2_4 = callPackage ../development/libraries/libgphoto2/2.4.nix { };-- libgpod = callPackage ../development/libraries/libgpod {- inherit (pkgs.pythonPackages) mutagen;- };-- libharu = callPackage ../development/libraries/libharu { };-- libical = callPackage ../development/libraries/libical { };-- libicns = callPackage ../development/libraries/libicns { };-- libimobiledevice = callPackage ../development/libraries/libimobiledevice { };-- libiodbc = callPackage ../development/libraries/libiodbc {- useGTK = config.libiodbc.gtk or false;- };-- libivykis = callPackage ../development/libraries/libivykis { };-- liblastfmSF = callPackage ../development/libraries/liblastfmSF { };-- liblastfm = callPackage ../development/libraries/liblastfm { };-- liblqr1 = callPackage ../development/libraries/liblqr-1 { };-- liblockfile = callPackage ../development/libraries/liblockfile { };-- liblogging = callPackage ../development/libraries/liblogging { };-- libmcrypt = callPackage ../development/libraries/libmcrypt {};-- libmhash = callPackage ../development/libraries/libmhash {};-- libmodbus = callPackage ../development/libraries/libmodbus {};-- libmtp = callPackage ../development/libraries/libmtp { };-- libmsgpack = callPackage ../development/libraries/libmsgpack { };-- libnatspec = callPackage ../development/libraries/libnatspec { };-- libnfc = callPackage ../development/libraries/libnfc { };-- libnfsidmap = callPackage ../development/libraries/libnfsidmap { };-- libnice = callPackage ../development/libraries/libnice { };-- liboping = callPackage ../development/libraries/liboping { };-- libplist = callPackage ../development/libraries/libplist { };-- libQGLViewer = callPackage ../development/libraries/libqglviewer { };-- libre = callPackage ../development/libraries/libre {};- librem = callPackage ../development/libraries/librem {};-- libresample = callPackage ../development/libraries/libresample {};-- librevenge = callPackage ../development/libraries/librevenge {};-- librevisa = callPackage ../development/libraries/librevisa { };-- libsamplerate = callPackage ../development/libraries/libsamplerate { };-- libspectre = callPackage ../development/libraries/libspectre { };-- libgsf = callPackage ../development/libraries/libgsf { };-- libiconv = callPackage ../development/libraries/libiconv { };-- libiconvOrEmpty = if libiconvOrNull == null then [] else [libiconv];-- libiconvOrNull =- if gcc.libc or null != null || stdenv.isGlibc- then null- else libiconv;-- # The logic behind this attribute is broken: libiconvOrNull==null does- # NOT imply libiconv=glibc! On Darwin, for example, we have a native- # libiconv library which is not glibc.- libiconvOrLibc = if libiconvOrNull == null then gcc.libc else libiconv;-- # On non-GNU systems we need GNU Gettext for libintl.- libintlOrEmpty = stdenv.lib.optional (!stdenv.isLinux) gettext;-- libid3tag = callPackage ../development/libraries/libid3tag { };-- libidn = callPackage ../development/libraries/libidn { };-- libiec61883 = callPackage ../development/libraries/libiec61883 { };-- libinfinity = callPackage ../development/libraries/libinfinity {- inherit (gnome) gtkdoc;- };-- libiptcdata = callPackage ../development/libraries/libiptcdata { };-- libjpeg_original = callPackage ../development/libraries/libjpeg { };- libjpeg_turbo = callPackage ../development/libraries/libjpeg-turbo { };- libjpeg = if (stdenv.isLinux) then libjpeg_turbo else libjpeg_original; # some problems, both on FreeBSD and Darwin-- libjpeg62 = callPackage ../development/libraries/libjpeg/62.nix {- libtool = libtool_1_5;- };-- libjson_rpc_cpp = callPackage ../development/libraries/libjson-rpc-cpp { };-- libkate = callPackage ../development/libraries/libkate { };-- libksba = callPackage ../development/libraries/libksba { };-- libmad = callPackage ../development/libraries/libmad { };-- libmatchbox = callPackage ../development/libraries/libmatchbox { };-- libmatthew_java = callPackage ../development/libraries/java/libmatthew-java { };-- libmatroska = callPackage ../development/libraries/libmatroska { };-- libmcs = callPackage ../development/libraries/libmcs { };-- libmemcached = callPackage ../development/libraries/libmemcached { };-- libmicrohttpd = callPackage ../development/libraries/libmicrohttpd { };-- libmikmod = callPackage ../development/libraries/libmikmod {- # resolve the "stray '@' in program" errors- stdenv = if stdenv.isDarwin- then overrideGCC stdenv gccApple- else stdenv;- };-- libmilter = callPackage ../development/libraries/libmilter { };-- libmkv = callPackage ../development/libraries/libmkv { };-- libmms = callPackage ../development/libraries/libmms { };-- libmowgli = callPackage ../development/libraries/libmowgli { };-- libmng = callPackage ../development/libraries/libmng { };-- libmnl = callPackage ../development/libraries/libmnl { };-- libmodplug = callPackage ../development/libraries/libmodplug {};-- libmpcdec = callPackage ../development/libraries/libmpcdec { };-- libmp3splt = callPackage ../development/libraries/libmp3splt { };-- libmrss = callPackage ../development/libraries/libmrss { };-- libmsn = callPackage ../development/libraries/libmsn { };-- libmspack = callPackage ../development/libraries/libmspack { };-- libmusclecard = callPackage ../development/libraries/libmusclecard { };-- libmusicbrainz2 = callPackage ../development/libraries/libmusicbrainz/2.x.nix { };-- libmusicbrainz3 = callPackage ../development/libraries/libmusicbrainz { };-- libmusicbrainz5 = callPackage ../development/libraries/libmusicbrainz/5.x.nix { };-- libmusicbrainz = libmusicbrainz3;-- libmwaw = callPackage ../development/libraries/libmwaw { };- libmwaw_02 = callPackage ../development/libraries/libmwaw/0.2.nix { };-- libmx = callPackage ../development/libraries/libmx { };-- libnet = callPackage ../development/libraries/libnet { };-- libnetfilter_conntrack = callPackage ../development/libraries/libnetfilter_conntrack { };-- libnetfilter_queue = callPackage ../development/libraries/libnetfilter_queue { };-- libnfnetlink = callPackage ../development/libraries/libnfnetlink { };-- libnftnl = callPackage ../development/libraries/libnftnl { };-- libnih = callPackage ../development/libraries/libnih { };-- libnova = callPackage ../development/libraries/libnova { };-- libnxml = callPackage ../development/libraries/libnxml { };-- libodfgen = callPackage ../development/libraries/libodfgen { };-- libofa = callPackage ../development/libraries/libofa { };-- libofx = callPackage ../development/libraries/libofx { };-- libogg = callPackage ../development/libraries/libogg { };-- liboggz = callPackage ../development/libraries/liboggz { };-- liboil = callPackage ../development/libraries/liboil { };-- liboop = callPackage ../development/libraries/liboop { };-- libopus = callPackage ../development/libraries/libopus { };-- libosinfo = callPackage ../development/libraries/libosinfo {};-- libosip = callPackage ../development/libraries/osip {};-- libosip_3 = callPackage ../development/libraries/osip/3.nix {};-- libotr = callPackage ../development/libraries/libotr {- libgcrypt = libgcrypt_1_6;- };-- libotr_3_2 = callPackage ../development/libraries/libotr/3.2.nix { };-- libp11 = callPackage ../development/libraries/libp11 { };-- libpar2 = callPackage ../development/libraries/libpar2 { };-- libpcap = callPackage ../development/libraries/libpcap { };-- libpipeline = callPackage ../development/libraries/libpipeline { };-- libpng = callPackage ../development/libraries/libpng { };- libpng_apng = libpng.override { apngSupport = true; };- libpng12 = callPackage ../development/libraries/libpng/12.nix { };- libpng15 = callPackage ../development/libraries/libpng/15.nix { };-- libpaper = callPackage ../development/libraries/libpaper { };-- libproxy = callPackage ../development/libraries/libproxy {- stdenv = if stdenv.isDarwin- then overrideGCC stdenv gcc- else stdenv;- };-- libpseudo = callPackage ../development/libraries/libpseudo { };-- libpwquality = callPackage ../development/libraries/libpwquality { };-- libqalculate = callPackage ../development/libraries/libqalculate { };-- librsvg = callPackage ../development/libraries/librsvg {- gtk2 = null; gtk3 = null; # neither gtk version by default- };-- librsync = callPackage ../development/libraries/librsync { };-- libsearpc = callPackage ../development/libraries/libsearpc { };-- libsigcxx = callPackage ../development/libraries/libsigcxx { };-- libsigcxx12 = callPackage ../development/libraries/libsigcxx/1.2.nix { };-- libsigsegv = callPackage ../development/libraries/libsigsegv { };-- # To bootstrap SBCL, I need CLisp 2.44.1; it needs libsigsegv 2.5- libsigsegv_25 = callPackage ../development/libraries/libsigsegv/2.5.nix { };-- libsndfile = callPackage ../development/libraries/libsndfile { };-- libsodium = callPackage ../development/libraries/libsodium { };-- libsoup = callPackage ../development/libraries/libsoup { };-- libssh = callPackage ../development/libraries/libssh { };-- libssh2 = callPackage ../development/libraries/libssh2 { };-- libstartup_notification = callPackage ../development/libraries/startup-notification { };-- libspatialindex = callPackage ../development/libraries/libspatialindex { };-- libspatialite = callPackage ../development/libraries/libspatialite { };-- libtar = callPackage ../development/libraries/libtar { };-- libtasn1 = callPackage ../development/libraries/libtasn1 { };-- libtheora = callPackage ../development/libraries/libtheora { };-- libtiff = callPackage ../development/libraries/libtiff { };-- libtiger = callPackage ../development/libraries/libtiger { };-- libtommath = callPackage ../development/libraries/libtommath { };-- libtorrentRasterbar = callPackage ../development/libraries/libtorrent-rasterbar {- # fix "unrecognized option -arch" error- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };-- libtoxcore = callPackage ../development/libraries/libtoxcore { };-- libtsm = callPackage ../development/libraries/libtsm { };-- libtunepimp = callPackage ../development/libraries/libtunepimp { };-- libtxc_dxtn = callPackage ../development/libraries/libtxc_dxtn { };-- libtxc_dxtn_s2tc = callPackage ../development/libraries/libtxc_dxtn_s2tc { };-- libgeotiff = callPackage ../development/libraries/libgeotiff { };-- libunistring = callPackage ../development/libraries/libunistring { };-- libupnp = callPackage ../development/libraries/pupnp { };-- giflib = callPackage ../development/libraries/giflib { };- giflib_4_1 = callPackage ../development/libraries/giflib/4.1.nix { };-- libungif = callPackage ../development/libraries/giflib/libungif.nix { };-- libunibreak = callPackage ../development/libraries/libunibreak { };-- libunique = callPackage ../development/libraries/libunique/default.nix { };-- liburcu = callPackage ../development/libraries/liburcu { };-- libusb = callPackage ../development/libraries/libusb {};-- libusb1 = callPackage ../development/libraries/libusb1 {- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };-- libunwind = callPackage ../development/libraries/libunwind { };-- libuvVersions = callPackage ../development/libraries/libuv { };-- libv4l = lowPrio (v4l_utils.override {- withQt4 = false;- });-- libva = callPackage ../development/libraries/libva { };-- libvdpau = callPackage ../development/libraries/libvdpau { };-- libvirt = callPackage ../development/libraries/libvirt { };-- libvirt-glib = callPackage ../development/libraries/libvirt-glib { };-- libvisio = callPackage ../development/libraries/libvisio { };-- libvisual = callPackage ../development/libraries/libvisual { };-- libvncserver = callPackage ../development/libraries/libvncserver {};-- libviper = callPackage ../development/libraries/libviper { };-- libvpx = callPackage ../development/libraries/libvpx { };-- libvterm = callPackage ../development/libraries/libvterm { };-- libvorbis = callPackage ../development/libraries/libvorbis { };-- libwebp = callPackage ../development/libraries/libwebp { };-- libwmf = callPackage ../development/libraries/libwmf { };-- libwnck = libwnck2;- libwnck2 = callPackage ../development/libraries/libwnck { };- libwnck3 = callPackage ../development/libraries/libwnck/3.x.nix { };-- libwpd = callPackage ../development/libraries/libwpd { };-- libwpd_08 = callPackage ../development/libraries/libwpd/0.8.nix { };-- libwpg = callPackage ../development/libraries/libwpg { };-- libx86 = builderDefsPackage ../development/libraries/libx86 {};-- libxdg_basedir = callPackage ../development/libraries/libxdg-basedir { };-- libxkbcommon = callPackage ../development/libraries/libxkbcommon { };-- libxklavier = callPackage ../development/libraries/libxklavier { };-- libxmi = callPackage ../development/libraries/libxmi { };-- libxml2 = callPackage ../development/libraries/libxml2 {- pythonSupport = false;- };-- libxml2Python = lowPrio (libxml2.override {- pythonSupport = true;- });-- libxmlxx = callPackage ../development/libraries/libxmlxx { };-- libxmp = callPackage ../development/libraries/libxmp { };-- libxslt = callPackage ../development/libraries/libxslt { };-- libixp_for_wmii = lowPrio (import ../development/libraries/libixp_for_wmii {- inherit fetchurl stdenv;- });-- libyaml = callPackage ../development/libraries/libyaml { };-- libyamlcpp = callPackage ../development/libraries/libyaml-cpp { };- libyamlcpp03 = callPackage ../development/libraries/libyaml-cpp/0.3.x.nix { };-- libyubikey = callPackage ../development/libraries/libyubikey {};-- libzip = callPackage ../development/libraries/libzip { };-- libzdb = callPackage ../development/libraries/libzdb { };-- libzrtpcpp = callPackage ../development/libraries/libzrtpcpp { };- libzrtpcpp_1_6 = callPackage ../development/libraries/libzrtpcpp/1.6.nix {- ccrtp = ccrtp_1_8;- };-- libwacom = callPackage ../development/libraries/libwacom { };-- lightning = callPackage ../development/libraries/lightning { };-- lirc = callPackage ../development/libraries/lirc { };-- liquidwar = builderDefsPackage ../games/liquidwar {- inherit (xlibs) xproto libX11 libXrender;- inherit gmp mesa libjpeg- expat gettext perl- SDL SDL_image SDL_mixer SDL_ttf- curl sqlite- libogg libvorbis libcaca csound cunit- ;- guile = guile_1_8;- libpng = libpng15; # 0.0.13 needs libpng 1.2--1.5- };-- log4cpp = callPackage ../development/libraries/log4cpp { };-- log4cxx = callPackage ../development/libraries/log4cxx { };-- log4cplus = callPackage ../development/libraries/log4cplus { };-- loudmouth = callPackage ../development/libraries/loudmouth { };-- lzo = callPackage ../development/libraries/lzo { };-- mdds_0_7_1 = callPackage ../development/libraries/mdds/0.7.1.nix { };- mdds = callPackage ../development/libraries/mdds { };-- # failed to build- mediastreamer = callPackage ../development/libraries/mediastreamer { };-- menu-cache = callPackage ../development/libraries/menu-cache { };-- mesaSupported = lib.elem system lib.platforms.mesaPlatforms;-- mesaDarwinOr = alternative: if stdenv.isDarwin- then callPackage ../development/libraries/mesa-darwin { }- else alternative;- mesa_noglu = mesaDarwinOr (callPackage ../development/libraries/mesa {- # makes it slower, but during runtime we link against just mesa_drivers- # through /run/opengl-driver*, which is overriden according to config.grsecurity- grsecEnabled = true;- });- mesa_glu = mesaDarwinOr (callPackage ../development/libraries/mesa-glu { });- mesa_drivers = mesaDarwinOr (- let mo = mesa_noglu.override {- grsecEnabled = config.grsecurity or false;- };- in mo.drivers- );- mesa = mesaDarwinOr (buildEnv {- name = "mesa-${mesa_noglu.version}";- paths = [ mesa_noglu mesa_glu ];- });-- metaEnvironment = recurseIntoAttrs (let callPackage = newScope pkgs.metaEnvironment; in rec {- sdfLibrary = callPackage ../development/libraries/sdf-library { aterm = aterm28; };- toolbuslib = callPackage ../development/libraries/toolbuslib { aterm = aterm28; inherit (windows) w32api; };- cLibrary = callPackage ../development/libraries/c-library { aterm = aterm28; };- errorSupport = callPackage ../development/libraries/error-support { aterm = aterm28; };- ptSupport = callPackage ../development/libraries/pt-support { aterm = aterm28; };- ptableSupport = callPackage ../development/libraries/ptable-support { aterm = aterm28; };- configSupport = callPackage ../development/libraries/config-support { aterm = aterm28; };- asfSupport = callPackage ../development/libraries/asf-support { aterm = aterm28; };- tideSupport = callPackage ../development/libraries/tide-support { aterm = aterm28; };- rstoreSupport = callPackage ../development/libraries/rstore-support { aterm = aterm28; };- sdfSupport = callPackage ../development/libraries/sdf-support { aterm = aterm28; };- sglr = callPackage ../development/libraries/sglr { aterm = aterm28; };- ascSupport = callPackage ../development/libraries/asc-support { aterm = aterm28; };- pgen = callPackage ../development/libraries/pgen { aterm = aterm28; };- });-- ming = callPackage ../development/libraries/ming { };-- minizip = callPackage ../development/libraries/minizip { };-- minmay = callPackage ../development/libraries/minmay { };-- miro = callPackage ../applications/video/miro {- inherit (pythonPackages) pywebkitgtk pysqlite pycurl mutagen;- };-- mkvtoolnix = callPackage ../applications/video/mkvtoolnix { };-- mlt-qt4 = callPackage ../development/libraries/mlt {- qt = qt4;- SDL = SDL_pulseaudio;- };-- mlt-qt5 = callPackage ../development/libraries/mlt {- qt = qt5;- SDL = SDL_pulseaudio;- };-- movit = callPackage ../development/libraries/movit { };-- mps = callPackage ../development/libraries/mps { };-- libmpeg2 = callPackage ../development/libraries/libmpeg2 { };-- mpeg2dec = libmpeg2;-- msilbc = callPackage ../development/libraries/msilbc { };-- mp4v2 = callPackage ../development/libraries/mp4v2 { };-- mpc = callPackage ../development/libraries/mpc { };-- mpich2 = callPackage ../development/libraries/mpich2 { };-- mtdev = callPackage ../development/libraries/mtdev { };-- mtpfs = callPackage ../tools/filesystems/mtpfs { };-- mu = callPackage ../tools/networking/mu {- texinfo = texinfo4;- };-- muparser = callPackage ../development/libraries/muparser { };-- mygpoclient = callPackage ../development/python-modules/mygpoclient { };-- mygui = callPackage ../development/libraries/mygui {};-- myguiSvn = callPackage ../development/libraries/mygui/svn.nix {};-- mysocketw = callPackage ../development/libraries/mysocketw { };-- mythes = callPackage ../development/libraries/mythes { };-- nanomsg = callPackage ../development/libraries/nanomsg { };-- ncurses = callPackage ../development/libraries/ncurses {- unicode = system != "i686-cygwin";- };-- neon = callPackage ../development/libraries/neon {- compressionSupport = true;- sslSupport = true;- };-- nethack = builderDefsPackage (import ../games/nethack) {- inherit ncurses flex bison;- };-- nettle = callPackage ../development/libraries/nettle { };-- newt = callPackage ../development/libraries/newt { };-- nix-plugins = callPackage ../development/libraries/nix-plugins {- nix = pkgs.nixUnstable;- };-- nspr = callPackage ../development/libraries/nspr { };-- nss = lowPrio (callPackage ../development/libraries/nss { });-- nssTools = callPackage ../development/libraries/nss {- includeTools = true;- };-- ntrack = callPackage ../development/libraries/ntrack { };-- nvidia-texture-tools = callPackage ../development/libraries/nvidia-texture-tools { };-- ode = builderDefsPackage (import ../development/libraries/ode) { };-- ogre = callPackage ../development/libraries/ogre {};-- ogrepaged = callPackage ../development/libraries/ogrepaged { };-- oniguruma = callPackage ../development/libraries/oniguruma { };-- openal = callPackage ../development/libraries/openal { };-- # added because I hope that it has been easier to compile on x86 (for blender)- openalSoft = callPackage ../development/libraries/openal-soft { };-- openbabel = callPackage ../development/libraries/openbabel { };-- opencascade = callPackage ../development/libraries/opencascade { };-- opencascade_6_5 = callPackage ../development/libraries/opencascade/6.5.nix {- automake = automake111x;- ftgl = ftgl212;- };-- opencascade_oce = callPackage ../development/libraries/opencascade/oce.nix { };-- opencsg = callPackage ../development/libraries/opencsg { };-- openct = callPackage ../development/libraries/openct { };-- opencv = callPackage ../development/libraries/opencv { };-- opencv_2_1 = callPackage ../development/libraries/opencv/2.1.nix {- libpng = libpng12;- };-- # this ctl version is needed by openexr_viewers- openexr_ctl = callPackage ../development/libraries/openexr_ctl { };-- openexr = callPackage ../development/libraries/openexr { };-- openldap = callPackage ../development/libraries/openldap { };-- openlierox = callPackage ../games/openlierox { };-- libopensc_dnie = callPackage ../development/libraries/libopensc-dnie { };-- opencolorio = callPackage ../development/libraries/opencolorio { };-- ois = callPackage ../development/libraries/ois {};-- opal = callPackage ../development/libraries/opal {};-- openjpeg = callPackage ../development/libraries/openjpeg { lcms = lcms2; };-- openscenegraph = callPackage ../development/libraries/openscenegraph {- giflib = giflib_4_1;- ffmpeg = ffmpeg_0_10;- };-- openspades = callPackage ../games/openspades {};-- libressl = callPackage ../development/libraries/libressl { };-- boringssl = callPackage ../development/libraries/boringssl { };-- openssl = callPackage ../development/libraries/openssl {- fetchurl = fetchurlBoot;- cryptodevHeaders = linuxPackages.cryptodev.override {- fetchurl = fetchurlBoot;- onlyHeaders = true;- };- };-- ortp = callPackage ../development/libraries/ortp {- srtp = srtp_linphone;- };-- p11_kit = callPackage ../development/libraries/p11-kit { };-- paperkey = callPackage ../tools/security/paperkey { };-- pangoxsl = callPackage ../development/libraries/pangoxsl { };-- pcl = callPackage ../development/libraries/pcl {- vtk = vtkWithQt4;- };-- pcre = callPackage ../development/libraries/pcre {- unicodeSupport = config.pcre.unicode or true;- };-- pdf2xml = callPackage ../development/libraries/pdf2xml {} ;-- phonon = callPackage ../development/libraries/phonon { };-- phonon_backend_gstreamer = callPackage ../development/libraries/phonon-backend-gstreamer { };-- phonon_backend_vlc = callPackage ../development/libraries/phonon-backend-vlc { };-- physfs = callPackage ../development/libraries/physfs { };-- pkcs11helper = callPackage ../development/libraries/pkcs11helper { };-- plib = callPackage ../development/libraries/plib { };-- pocketsphinx = callPackage ../development/libraries/pocketsphinx { };-- podofo = callPackage ../development/libraries/podofo { };-- polkit = callPackage ../development/libraries/polkit {- spidermonkey = spidermonkey_185;- };-- polkit_qt_1 = callPackage ../development/libraries/polkit-qt-1 { };-- policykit = callPackage ../development/libraries/policykit { };-- poppler = callPackage ../development/libraries/poppler { lcms = lcms2; };- popplerQt4 = poppler.poppler_qt4;-- popt = callPackage ../development/libraries/popt { };-- portaudio = callPackage ../development/libraries/portaudio {- # resolves a variety of compile-time errors- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };-- portaudioSVN = callPackage ../development/libraries/portaudio/svn-head.nix { };-- portmidi = callPackage ../development/libraries/portmidi {};-- prison = callPackage ../development/libraries/prison { };-- proj = callPackage ../development/libraries/proj { };-- postgis = callPackage ../development/libraries/postgis { };-- protobuf = callPackage ../development/libraries/protobuf { };-- protobufc = callPackage ../development/libraries/protobufc { };-- pth = callPackage ../development/libraries/pth { };-- ptlib = callPackage ../development/libraries/ptlib {};-- re2 = callPackage ../development/libraries/re2 { };-- qca2 = callPackage ../development/libraries/qca2 {};-- qca2_ossl = callPackage ../development/libraries/qca2/ossl.nix {};-- qimageblitz = callPackage ../development/libraries/qimageblitz {};-- qjson = callPackage ../development/libraries/qjson { };-- qoauth = callPackage ../development/libraries/qoauth { };-- qt3 = callPackage ../development/libraries/qt-3 {- openglSupport = mesaSupported;- libpng = libpng12;- };-- qt4 = pkgs.kde4.qt4;-- qt48 = callPackage ../development/libraries/qt-4.x/4.8 {- # GNOME dependencies are not used unless gtkStyle == true- mesa = mesa_noglu;- inherit (pkgs.gnome) libgnomeui GConf gnome_vfs;- cups = if stdenv.isLinux then cups else null;-- # resolve unrecognised flag '-fconstant-cfstrings' errors- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };-- qt48Full = qt48.override {- docs = true;- demos = true;- examples = true;- developerBuild = true;- };-- qt4SDK = qtcreator.override {- sdkBuild = true;- qtLib = qt48Full;- };-- qt53Full = qt53.override {- buildDocs = true;- buildExamples = true;- buildTests = true;- developerBuild = true;- };-- qt53 = callPackage ../development/libraries/qt-5/qt-5.3.nix {- mesa = mesa_noglu;- cups = if stdenv.isLinux then cups else null;- # GNOME dependencies are not used unless gtkStyle == true- inherit (gnome) libgnomeui GConf gnome_vfs;- bison = bison2; # error: too few arguments to function 'int yylex(...- };-- qt5 = callPackage ../development/libraries/qt-5 {- mesa = mesa_noglu;- cups = if stdenv.isLinux then cups else null;- # GNOME dependencies are not used unless gtkStyle == true- inherit (gnome) libgnomeui GConf gnome_vfs;- bison = bison2; # error: too few arguments to function 'int yylex(...- };-- qt5Full = qt5.override {- buildDocs = true;- buildExamples = true;- buildTests = true;- developerBuild = true;- };-- qt5SDK = qtcreator.override {- sdkBuild = true;- qtLib = qt5Full;- };-- qtcreator = callPackage ../development/qtcreator {- qtLib = qt48.override { developerBuild = true; };- };-- qtscriptgenerator = callPackage ../development/libraries/qtscriptgenerator { };-- quesoglc = callPackage ../development/libraries/quesoglc { };-- qwt = callPackage ../development/libraries/qwt {};-- qwt6 = callPackage ../development/libraries/qwt/6.nix { };-- rabbitmq-c = callPackage ../development/libraries/rabbitmq-c {};-- rabbitmq-java-client = callPackage ../development/libraries/rabbitmq-java-client {};-- raul = callPackage ../development/libraries/audio/raul { };-- readline = readline6; # 6.2 works, 6.3 breaks python, parted-- readline4 = callPackage ../development/libraries/readline/readline4.nix { };-- readline5 = callPackage ../development/libraries/readline/readline5.nix { };-- readline6 = callPackage ../development/libraries/readline/readline6.nix { };-- readline63 = callPackage ../development/libraries/readline/readline6.3.nix { };-- librdf_raptor = callPackage ../development/libraries/librdf/raptor.nix { };-- librdf_raptor2 = callPackage ../development/libraries/librdf/raptor2.nix { };-- librdf_rasqal = callPackage ../development/libraries/librdf/rasqal.nix { };-- librdf_redland = callPackage ../development/libraries/librdf/redland.nix { };-- librdf = callPackage ../development/libraries/librdf { };-- lilv = callPackage ../development/libraries/audio/lilv { };-- lv2 = callPackage ../development/libraries/audio/lv2 { };-- lvtk = callPackage ../development/libraries/audio/lvtk { };-- qrupdate = callPackage ../development/libraries/qrupdate { };-- redland = pkgs.librdf_redland;-- rhino = callPackage ../development/libraries/java/rhino {- javac = gcj;- jvm = gcj;- };-- rlog = callPackage ../development/libraries/rlog { };-- rubberband = callPackage ../development/libraries/rubberband {- fftw = fftwSinglePrec;- inherit (vamp) vampSDK;- };-- sbc = callPackage ../development/libraries/sbc { };-- schroedinger = callPackage ../development/libraries/schroedinger { };-- SDL = callPackage ../development/libraries/SDL {- openglSupport = mesaSupported;- alsaSupport = (!stdenv.isDarwin);- x11Support = true;- pulseaudioSupport = stdenv.isDarwin; # better go through ALSA-- # resolve the unrecognized -fpascal-strings option error- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };-- # Fixes major problems with choppy sound in MLT / Kdenlive / Shotcut- SDL_pulseaudio = SDL.override { pulseaudioSupport = true; };-- SDL_gfx = callPackage ../development/libraries/SDL_gfx { };-- SDL_image = callPackage ../development/libraries/SDL_image {- # provide an Objective-C compiler- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };-- SDL_mixer = callPackage ../development/libraries/SDL_mixer { };-- SDL_net = callPackage ../development/libraries/SDL_net { };-- SDL_sound = callPackage ../development/libraries/SDL_sound { };-- SDL_ttf = callPackage ../development/libraries/SDL_ttf { };-- SDL2 = callPackage ../development/libraries/SDL2 {- openglSupport = mesaSupported;- alsaSupport = true;- x11Support = true;- pulseaudioSupport = false; # better go through ALSA- };-- SDL2_image = callPackage ../development/libraries/SDL2_image { };-- SDL2_mixer = callPackage ../development/libraries/SDL2_mixer { };-- SDL2_net = callPackage ../development/libraries/SDL2_net { };-- SDL2_gfx = callPackage ../development/libraries/SDL2_gfx { };-- serd = callPackage ../development/libraries/serd {};-- serf = callPackage ../development/libraries/serf {};-- silgraphite = callPackage ../development/libraries/silgraphite {};- graphite2 = callPackage ../development/libraries/silgraphite/graphite2.nix {};-- simgear = callPackage ../development/libraries/simgear { };-- sfml_git = callPackage ../development/libraries/sfml { };-- skalibs = callPackage ../development/libraries/skalibs { };-- slang = callPackage ../development/libraries/slang { };-- slibGuile = callPackage ../development/libraries/slib {- scheme = guile_1_8;- texinfo = texinfo4; # otherwise erros: must be after `@defun' to use `@defunx'- };-- smpeg = callPackage ../development/libraries/smpeg { };-- snack = callPackage ../development/libraries/snack {- # optional- };-- snappy = callPackage ../development/libraries/snappy { };-- sodium = callPackage ../development/libraries/sodium {};-- sofia_sip = callPackage ../development/libraries/sofia-sip { };-- soprano = callPackage ../development/libraries/soprano { };-- soqt = callPackage ../development/libraries/soqt { };-- sord = callPackage ../development/libraries/sord {};-- spandsp = callPackage ../development/libraries/spandsp {};-- speechd = callPackage ../development/libraries/speechd { };-- speech_tools = callPackage ../development/libraries/speech-tools {};-- speex = callPackage ../development/libraries/speex { };-- sphinxbase = callPackage ../development/libraries/sphinxbase { };-- spice = callPackage ../development/libraries/spice {- celt = celt_0_5_1;- inherit (xlibs) libXrandr libXfixes libXext libXrender libXinerama;- inherit (pythonPackages) pyparsing;- };-- spice_gtk = callPackage ../development/libraries/spice-gtk { };-- spice_protocol = callPackage ../development/libraries/spice-protocol { };-- sratom = callPackage ../development/libraries/audio/sratom { };-- srtp = callPackage ../development/libraries/srtp {};-- srtp_linphone = callPackage ../development/libraries/srtp/linphone.nix { };-- sqlite = lowPrio (callPackage ../development/libraries/sqlite {- readline = null;- ncurses = null;- });-- sqliteInteractive = appendToName "interactive" (sqlite.override {- inherit readline ncurses;- });-- sqlcipher = lowPrio (callPackage ../development/libraries/sqlcipher {- readline = null;- ncurses = null;- });-- stfl = callPackage ../development/libraries/stfl {- stdenv = if stdenv.isDarwin- then overrideGCC stdenv gccApple- else stdenv;- };-- stlink = callPackage ../development/tools/misc/stlink { };-- steghide = callPackage ../tools/security/steghide {};-- stepmania = callPackage ../games/stepmania {};-- stlport = callPackage ../development/libraries/stlport { };-- strigi = callPackage ../development/libraries/strigi { clucene_core = clucene_core_2; };-- subtitleeditor = callPackage ../applications/video/subtitleeditor { };-- suil = callPackage ../development/libraries/audio/suil { };-- suitesparse = callPackage ../development/libraries/suitesparse { };-- sutils = callPackage ../tools/misc/sutils { };-- sword = callPackage ../development/libraries/sword { };-- szip = callPackage ../development/libraries/szip { };-- t1lib = callPackage ../development/libraries/t1lib { };-- taglib = callPackage ../development/libraries/taglib { };-- taglib_extras = callPackage ../development/libraries/taglib-extras { };-- talloc = callPackage ../development/libraries/talloc { };-- tclap = callPackage ../development/libraries/tclap {};-- tclgpg = callPackage ../development/libraries/tclgpg { };-- tcllib = callPackage ../development/libraries/tcllib { };-- tcltls = callPackage ../development/libraries/tcltls { };-- tdb = callPackage ../development/libraries/tdb { };-- tecla = callPackage ../development/libraries/tecla { };-- telepathy_glib = callPackage ../development/libraries/telepathy/glib { };-- telepathy_farstream = callPackage ../development/libraries/telepathy/farstream {};-- telepathy_qt = callPackage ../development/libraries/telepathy/qt { };-- thrift = callPackage ../development/libraries/thrift { };-- tinyxml = tinyxml2;-- tinyxml2 = callPackage ../development/libraries/tinyxml/2.6.2.nix { };-- tk = callPackage ../development/libraries/tk { };-- tnt = callPackage ../development/libraries/tnt { };-- tokyocabinet = callPackage ../development/libraries/tokyo-cabinet { };- tokyotyrant = callPackage ../development/libraries/tokyo-tyrant { };-- tremor = callPackage ../development/libraries/tremor { };-- unicap = callPackage ../development/libraries/unicap {};-- tsocks = callPackage ../development/libraries/tsocks { };-- unixODBC = callPackage ../development/libraries/unixODBC { };-- unixODBCDrivers = recurseIntoAttrs (import ../development/libraries/unixODBCDrivers {- inherit fetchurl stdenv unixODBC glibc libtool openssl zlib;- inherit postgresql mysql sqlite;- });-- urt = callPackage ../development/libraries/urt { };-- ustr = callPackage ../development/libraries/ustr { };-- usbredir = callPackage ../development/libraries/usbredir {- libusb = libusb1;- };-- ucommon = callPackage ../development/libraries/ucommon { };-- v8 = callPackage ../development/libraries/v8 {- inherit (pythonPackages) gyp;- };-- vaapiIntel = callPackage ../development/libraries/vaapi-intel { };-- vaapiVdpau = callPackage ../development/libraries/vaapi-vdpau { };-- vamp = callPackage ../development/libraries/audio/vamp { };-- vcdimager = callPackage ../development/libraries/vcdimager { };-- vigra = callPackage ../development/libraries/vigra {- inherit (pkgs.pythonPackages) numpy;- };-- vlock = callPackage ../misc/screensavers/vlock { };-- vmime = callPackage ../development/libraries/vmime { };-- vrpn = callPackage ../development/libraries/vrpn { };-- vtk = callPackage ../development/libraries/vtk { };-- vtkWithQt4 = vtk.override { qtLib = qt4; };-- vxl = callPackage ../development/libraries/vxl {- libpng = libpng12;- };-- wayland = callPackage ../development/libraries/wayland { };-- webkit = webkitgtk;-- webkitgtk = callPackage ../development/libraries/webkitgtk {- harfbuzz = harfbuzz.override {- withIcu = true;- };- gst-plugins-base = gst_all_1.gst-plugins-base;- };-- webkitgtk2 = webkitgtk.override {- withGtk2 = true;- enableIntrospection = false;- };-- wildmidi = callPackage ../development/libraries/wildmidi { };-- wvstreams = callPackage ../development/libraries/wvstreams { };-- wxGTK = wxGTK28;-- wxGTK28 = callPackage ../development/libraries/wxGTK-2.8 {- inherit (gnome) GConf;- withMesa = lib.elem system lib.platforms.mesaPlatforms;- };-- wxGTK29 = callPackage ../development/libraries/wxGTK-2.9/default.nix {- inherit (gnome) GConf;- withMesa = lib.elem system lib.platforms.mesaPlatforms;-- # use for Objective-C++ compiler- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };-- wxGTK30 = callPackage ../development/libraries/wxGTK-3.0/default.nix {- inherit (gnome) GConf;- withMesa = lib.elem system lib.platforms.mesaPlatforms;-- # use for Objective-C++ compiler- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };-- wtk = callPackage ../development/libraries/wtk { };-- x264 = callPackage ../development/libraries/x264 { };-- xapian = callPackage ../development/libraries/xapian { };-- xapianBindings = callPackage ../development/libraries/xapian/bindings { # TODO perl php Java, tcl, C#, python- };-- xapian10 = callPackage ../development/libraries/xapian/1.0.x.nix { };-- xapianBindings10 = callPackage ../development/libraries/xapian/bindings/1.0.x.nix { # TODO perl php Java, tcl, C#, python- };-- Xaw3d = callPackage ../development/libraries/Xaw3d { };-- xbase = callPackage ../development/libraries/xbase { };-- xcb-util-cursor = callPackage ../development/libraries/xcb-util-cursor { };-- xdo = callPackage ../tools/misc/xdo { };-- xineLib = callPackage ../development/libraries/xine-lib {- ffmpeg = ffmpeg_1;- };-- xautolock = callPackage ../misc/screensavers/xautolock { };-- xercesc = callPackage ../development/libraries/xercesc {};-- xlibsWrapper = callPackage ../development/libraries/xlibs-wrapper {- packages = [- freetype fontconfig xlibs.xproto xlibs.libX11 xlibs.libXt- xlibs.libXft xlibs.libXext xlibs.libSM xlibs.libICE- xlibs.xextproto- ];- };-- xmlrpc_c = callPackage ../development/libraries/xmlrpc-c { };-- xmlsec = callPackage ../development/libraries/xmlsec { };-- xvidcore = callPackage ../development/libraries/xvidcore { };-- xylib = callPackage ../development/libraries/xylib { };-- yajl = callPackage ../development/libraries/yajl { };-- zangband = builderDefsPackage (import ../games/zangband) {- inherit ncurses flex bison autoconf automake m4 coreutils;- };-- zeitgeist = callPackage ../development/libraries/zeitgeist { };-- zlib = callPackage ../development/libraries/zlib {- fetchurl = fetchurlBoot;- };-- zlibStatic = lowPrio (appendToName "static" (callPackage ../development/libraries/zlib {- static = true;- }));-- zeromq2 = callPackage ../development/libraries/zeromq/2.x.nix {};- zeromq3 = callPackage ../development/libraries/zeromq/3.x.nix {};- zeromq4 = callPackage ../development/libraries/zeromq/4.x.nix {};-- zziplib = callPackage ../development/libraries/zziplib { };--- ### DEVELOPMENT / LIBRARIES / JAVA-- atermjava = callPackage ../development/libraries/java/aterm {- stdenv = overrideInStdenv stdenv [gnumake380];- };-- commonsFileUpload = callPackage ../development/libraries/java/jakarta-commons/file-upload { };-- fastjar = callPackage ../development/tools/java/fastjar { };-- httpunit = callPackage ../development/libraries/java/httpunit { };-- gwtdragdrop = callPackage ../development/libraries/java/gwt-dragdrop { };-- gwtwidgets = callPackage ../development/libraries/java/gwt-widgets { };-- jakartabcel = callPackage ../development/libraries/java/jakarta-bcel {- regexp = jakartaregexp;- };-- jakartaregexp = callPackage ../development/libraries/java/jakarta-regexp { };-- javaCup = callPackage ../development/libraries/java/cup { };-- javasvn = callPackage ../development/libraries/java/javasvn { };-- jclasslib = callPackage ../development/tools/java/jclasslib { };-- jdom = callPackage ../development/libraries/java/jdom { };-- jflex = callPackage ../development/libraries/java/jflex { };-- jjtraveler = callPackage ../development/libraries/java/jjtraveler {- stdenv = overrideInStdenv stdenv [gnumake380];- };-- junit = callPackage ../development/libraries/java/junit { antBuild = releaseTools.antBuild; };-- junixsocket = callPackage ../development/libraries/java/junixsocket { };-- jzmq = callPackage ../development/libraries/java/jzmq { };-- lucene = callPackage ../development/libraries/java/lucene { };-- mockobjects = callPackage ../development/libraries/java/mockobjects { };-- saxon = callPackage ../development/libraries/java/saxon { };-- saxonb = callPackage ../development/libraries/java/saxon/default8.nix { };-- sharedobjects = callPackage ../development/libraries/java/shared-objects {- stdenv = overrideInStdenv stdenv [gnumake380];- };-- smack = callPackage ../development/libraries/java/smack { };-- swt = callPackage ../development/libraries/java/swt {- inherit (gnome) libsoup;- };--- ### DEVELOPMENT / LIBRARIES / JAVASCRIPT-- jquery_ui = callPackage ../development/libraries/javascript/jquery-ui { };-- yuicompressor = callPackage ../development/tools/yuicompressor { };-- ### DEVELOPMENT / LISP MODULES-- asdf = callPackage ../development/lisp-modules/asdf {- texLive = null;- };-- clwrapperFunction = callPackage ../development/lisp-modules/clwrapper;-- wrapLisp = lisp: clwrapperFunction { inherit lisp; };-- lispPackagesFor = clwrapper: callPackage ../development/lisp-modules/lisp-packages.nix {- inherit clwrapper;- };-- lispPackagesClisp = lispPackagesFor (wrapLisp clisp);- lispPackagesSBCL = lispPackagesFor (wrapLisp sbcl);- lispPackages = recurseIntoAttrs lispPackagesSBCL;--- ### DEVELOPMENT / PERL MODULES-- buildPerlPackage = import ../development/perl-modules/generic perl;-- perlPackages = recurseIntoAttrs (import ./perl-packages.nix {- inherit pkgs;- overrides = (config.perlPackageOverrides or (p: {})) pkgs;- });-- perl514Packages = import ./perl-packages.nix {- pkgs = pkgs // {- perl = perl514;- buildPerlPackage = import ../development/perl-modules/generic perl514;- };- overrides = (config.perl514PackageOverrides or (p: {})) pkgs;- };-- perlXMLParser = perlPackages.XMLParser;-- ack = perlPackages.ack;-- perlArchiveCpio = perlPackages.ArchiveCpio;-- perlcritic = perlPackages.PerlCritic;-- planetary_annihilation = callPackage ../games/planetaryannihilation { };--- ### DEVELOPMENT / PYTHON MODULES-- # python function with default python interpreter- buildPythonPackage = pythonPackages.buildPythonPackage;-- # `nix-env -i python-nose` installs for 2.7, the default python.- # Therefore we do not recurse into attributes here, in contrast to- # python27Packages. `nix-env -iA python26Packages.nose` works- # regardless.- python26Packages = import ./python-packages.nix {- inherit pkgs;- python = python26;- };-- python27Packages = lib.hiPrioSet (recurseIntoAttrs (import ./python-packages.nix {- inherit pkgs;- python = python27;- }));-- python32Packages = import ./python-packages.nix {- inherit pkgs;- python = python32;- };-- python33Packages = recurseIntoAttrs (import ./python-packages.nix {- inherit pkgs;- python = python33;- });-- python34Packages = recurseIntoAttrs (import ./python-packages.nix {- inherit pkgs;- python = python34;- });-- pypyPackages = recurseIntoAttrs (import ./python-packages.nix {- inherit pkgs;- python = pypy;- });-- foursuite = callPackage ../development/python-modules/4suite { };-- bsddb3 = callPackage ../development/python-modules/bsddb3 { };-- ecdsa = callPackage ../development/python-modules/ecdsa { };-- numeric = callPackage ../development/python-modules/numeric { };-- pil = pythonPackages.pil;-- psyco = callPackage ../development/python-modules/psyco { };-- pycairo = pythonPackages.pycairo;-- pycapnp = pythonPackages.pycapnp;-- pycrypto = pythonPackages.pycrypto;-- pycups = callPackage ../development/python-modules/pycups { };-- pyexiv2 = callPackage ../development/python-modules/pyexiv2 { };-- pygame = callPackage ../development/python-modules/pygame { };-- pygobject = pythonPackages.pygobject;-- pygobject3 = pythonPackages.pygobject3;-- pygtk = pythonPackages.pygtk;-- pyGtkGlade = pythonPackages.pyGtkGlade;-- pylint = callPackage ../development/python-modules/pylint { };-- pyopenssl = builderDefsPackage (import ../development/python-modules/pyopenssl) {- inherit python openssl;- };-- rhpl = callPackage ../development/python-modules/rhpl { };-- sip = callPackage ../development/python-modules/sip { };-- pyqt4 = callPackage ../development/python-modules/pyqt/4.x.nix {- stdenv = if stdenv.isDarwin- then clangStdenv- else stdenv;- };-- pysideApiextractor = callPackage ../development/python-modules/pyside/apiextractor.nix { };-- pysideGeneratorrunner = callPackage ../development/python-modules/pyside/generatorrunner.nix { };-- pyside = callPackage ../development/python-modules/pyside { };-- pysideTools = callPackage ../development/python-modules/pyside/tools.nix { };-- pysideShiboken = callPackage ../development/python-modules/pyside/shiboken.nix { };-- pyx = callPackage ../development/python-modules/pyx { };-- pyxml = callPackage ../development/python-modules/pyxml { };-- rbtools = callPackage ../development/python-modules/rbtools { };-- setuptools = pythonPackages.setuptools;-- slowaes = callPackage ../development/python-modules/slowaes { };-- wxPython = pythonPackages.wxPython;- wxPython28 = pythonPackages.wxPython28;-- twisted = pythonPackages.twisted;-- ZopeInterface = pythonPackages.zope_interface;-- ### DEVELOPMENT / R MODULES-- R = callPackage ../applications/science/math/R {- inherit (xlibs) libX11 libXt;- texLive = texLiveAggregationFun { paths = [ texLive texLiveExtra ]; };- withRecommendedPackages = false;- };-- rWrapper = callPackage ../development/r-modules/wrapper.nix {- # Those packages are usually installed as part of the R build.- recommendedPackages = with rPackages; [ MASS lattice Matrix nlme- survival boot cluster codetools foreign KernSmooth rpart class- nnet spatial mgcv ];- # Override this attribute to register additional libraries.- packages = [];- };-- rPackages = import ../development/r-modules/cran-packages.nix {- inherit pkgs;- overrides = (config.rPackageOverrides or (p: {})) pkgs;- };-- ### SERVERS-- rdf4store = callPackage ../servers/http/4store { };-- apacheHttpd = pkgs.apacheHttpd_2_2;-- apacheHttpd_2_2 = callPackage ../servers/http/apache-httpd/2.2.nix {- sslSupport = true;- };-- apacheHttpd_2_4 = lowPrio (callPackage ../servers/http/apache-httpd/2.4.nix {- sslSupport = true;- });-- apcupsd = callPackage ../servers/apcupsd { };-- sabnzbd = callPackage ../servers/sabnzbd { };-- bind = callPackage ../servers/dns/bind { };-- bird = callPackage ../servers/bird { };-- couchdb = callPackage ../servers/http/couchdb {- spidermonkey = spidermonkey_185;- python = python27;- sphinx = python27Packages.sphinx;- erlang = erlangR16;- };-- dico = callPackage ../servers/dico { };-- dict = callPackage ../servers/dict {- libmaa = callPackage ../servers/dict/libmaa.nix {};- };-- dictdDBs = recurseIntoAttrs (import ../servers/dict/dictd-db.nix {- inherit builderDefs;- });-- dictDBCollector = import ../servers/dict/dictd-db-collector.nix {- inherit stdenv lib dict;- };-- dictdWiktionary = callPackage ../servers/dict/dictd-wiktionary.nix {};-- dictdWordnet = callPackage ../servers/dict/dictd-wordnet.nix {};-- diod = callPackage ../servers/diod { };-- dovecot = dovecot21;-- dovecot21 = callPackage ../servers/mail/dovecot { };-- dovecot22 = callPackage ../servers/mail/dovecot/2.2.x.nix { };-- dovecot_pigeonhole = callPackage ../servers/mail/dovecot-pigeonhole { };-- etcd = callPackage ../servers/etcd { };-- ejabberd = callPackage ../servers/xmpp/ejabberd {- erlang = erlangR16;- };-- elasticmq = callPackage ../servers/elasticmq { };-- etcdctl = callPackage ../development/tools/etcdctl { };-- fcgiwrap = callPackage ../servers/fcgiwrap { };-- felix = callPackage ../servers/felix { };-- felix_remoteshell = callPackage ../servers/felix/remoteshell.nix { };-- fingerd_bsd = callPackage ../servers/fingerd/bsd-fingerd { };-- firebird = callPackage ../servers/firebird { icu = null; };- firebirdSuper = callPackage ../servers/firebird { superServer = true; };-- fleet = callPackage ../servers/fleet { };-- freepops = callPackage ../servers/mail/freepops { };-- freeswitch = callPackage ../servers/sip/freeswitch { };-- ghostOne = callPackage ../servers/games/ghost-one {- boost = boost144.override { taggedLayout = true; };- };-- ircdHybrid = callPackage ../servers/irc/ircd-hybrid { };-- jboss = callPackage ../servers/http/jboss { };-- jboss_mysql_jdbc = callPackage ../servers/http/jboss/jdbc/mysql { };-- jetty = callPackage ../servers/http/jetty { };-- jetty61 = callPackage ../servers/http/jetty/6.1 { };-- joseki = callPackage ../servers/http/joseki {};-- leafnode = callPackage ../servers/news/leafnode { };-- lighttpd = callPackage ../servers/http/lighttpd { };-- mailman = callPackage ../servers/mail/mailman { };-- mediatomb = callPackage ../servers/mediatomb { };-- memcached = callPackage ../servers/memcached {};-- mod_dnssd = callPackage ../servers/http/apache-modules/mod_dnssd/default.nix { };-- mod_evasive = callPackage ../servers/http/apache-modules/mod_evasive { };-- mod_python = callPackage ../servers/http/apache-modules/mod_python { };-- mod_fastcgi = callPackage ../servers/http/apache-modules/mod_fastcgi { };-- mod_wsgi = callPackage ../servers/http/apache-modules/mod_wsgi { };-- mpd = callPackage ../servers/mpd {- aacSupport = config.mpd.aacSupport or true;- ffmpegSupport = config.mpd.ffmpegSupport or true;- };-- mpd_clientlib = callPackage ../servers/mpd/clientlib.nix { };-- miniHttpd = callPackage ../servers/http/mini-httpd {};-- mlmmj = callPackage ../servers/mail/mlmmj { };-- myserver = callPackage ../servers/http/myserver { };-- nginx = callPackage ../servers/http/nginx {- rtmp = true;- fullWebDAV = true;- syslog = true;- moreheaders = true;- };-- ngircd = callPackage ../servers/irc/ngircd { };-- nix-binary-cache = callPackage ../servers/http/nix-binary-cache {};-- nsd = callPackage ../servers/dns/nsd { };-- nsq = callPackage ../servers/nsq { };-- openresty = callPackage ../servers/http/openresty { };-- opensmtpd = callPackage ../servers/mail/opensmtpd { };-- petidomo = callPackage ../servers/mail/petidomo { };-- popa3d = callPackage ../servers/mail/popa3d { };-- postfix = callPackage ../servers/mail/postfix { };-- postfix211 = callPackage ../servers/mail/postfix/2.11.nix { };-- pulseaudio = callPackage ../servers/pulseaudio {- gconf = gnome.GConf;- # The following are disabled in the default build, because if this- # functionality is desired, they are only needed in the PulseAudio- # server.- bluez = null;- avahi = null;- };- pulseaudioFull = pulseaudio.override {- bluez = bluez5;- avahi = avahi;- jackaudioSupport = true;- x11Support = true;- };-- tomcat_connectors = callPackage ../servers/http/apache-modules/tomcat-connectors { };-- pies = callPackage ../servers/pies { };-- portmap = callPackage ../servers/portmap { };-- rpcbind = callPackage ../servers/rpcbind { };-- #monetdb = callPackage ../servers/sql/monetdb { };-- mariadb = callPackage ../servers/sql/mariadb {};-- mongodb = callPackage ../servers/nosql/mongodb { };-- riak = callPackage ../servers/nosql/riak/1.3.1.nix { };-- influxdb = callPackage ../servers/nosql/influxdb { };-- mysql51 = import ../servers/sql/mysql/5.1.x.nix {- inherit fetchurl ncurses zlib perl openssl stdenv;- ps = procps; /* !!! Linux only */- };-- mysql55 = callPackage ../servers/sql/mysql/5.5.x.nix { };-- mysql = mysql51;-- mysql_jdbc = callPackage ../servers/sql/mysql/jdbc { };-- nagios = callPackage ../servers/monitoring/nagios { };-- munin = callPackage ../servers/monitoring/munin { };-- nagiosPluginsOfficial = callPackage ../servers/monitoring/nagios/plugins/official-2.x.nix { };-- neo4j = callPackage ../servers/nosql/neo4j { };-- net_snmp = callPackage ../servers/monitoring/net-snmp { };-- riemann = callPackage ../servers/monitoring/riemann { };-- oidentd = callPackage ../servers/identd/oidentd { };-- openfire = callPackage ../servers/xmpp/openfire { };-- oracleXE = callPackage ../servers/sql/oracle-xe { };-- OVMF = callPackage ../applications/virtualization/OVMF { };-- postgresql = postgresql92;-- postgresql84 = callPackage ../servers/sql/postgresql/8.4.x.nix { };-- postgresql90 = callPackage ../servers/sql/postgresql/9.0.x.nix { };-- postgresql91 = callPackage ../servers/sql/postgresql/9.1.x.nix { };-- postgresql92 = callPackage ../servers/sql/postgresql/9.2.x.nix { };-- postgresql93 = callPackage ../servers/sql/postgresql/9.3.x.nix { };-- postgresql_jdbc = callPackage ../servers/sql/postgresql/jdbc { };-- psqlodbc = callPackage ../servers/sql/postgresql/psqlodbc { };-- pyIRCt = builderDefsPackage (import ../servers/xmpp/pyIRCt) {- inherit xmpppy pythonIRClib python makeWrapper;- };-- pyMAILt = builderDefsPackage (import ../servers/xmpp/pyMAILt) {- inherit xmpppy python makeWrapper fetchcvs;- };-- qpid-cpp = callPackage ../servers/amqp/qpid-cpp { };-- rabbitmq_server = callPackage ../servers/amqp/rabbitmq-server { };-- radius = callPackage ../servers/radius { };-- redis = callPackage ../servers/nosql/redis { };-- redstore = callPackage ../servers/http/redstore { };-- restund = callPackage ../servers/restund {};-- rethinkdb = callPackage ../servers/nosql/rethinkdb { };-- rippled = callPackage ../servers/rippled { };-- s6 = callPackage ../servers/s6 { };-- spamassassin = callPackage ../servers/mail/spamassassin {- inherit (perlPackages) HTMLParser NetDNS NetAddrIP DBFile- HTTPDate MailDKIM LWP IOSocketSSL;- };-- samba = callPackage ../servers/samba { };-- # A lightweight Samba, useful for non-Linux-based OSes.- samba_light = lowPrio (callPackage ../servers/samba {- pam = null;- fam = null;- cups = null;- acl = null;- openldap = null;- # libunwind 1.0.1 is not ported to GNU/Hurd.- libunwind = null;- });-- serfdom = callPackage ../servers/serfdom { };-- seyren = callPackage ../servers/monitoring/seyren { };-- shishi = callPackage ../servers/shishi { };-- sipwitch = callPackage ../servers/sip/sipwitch { };-- spawn_fcgi = callPackage ../servers/http/spawn-fcgi { };-- squids = recurseIntoAttrs( import ../servers/squid/squids.nix {- inherit fetchurl stdenv perl lib composableDerivation- openldap pam db cyrus_sasl kerberos libcap expat libxml2 libtool- openssl;- });- squid = squids.squid31; # has ipv6 support-- thttpd = callPackage ../servers/http/thttpd { };-- storm = callPackage ../servers/computing/storm { };-- tomcat5 = callPackage ../servers/http/tomcat/5.0.nix { };-- tomcat6 = callPackage ../servers/http/tomcat/6.0.nix { };-- tomcat_mysql_jdbc = callPackage ../servers/http/tomcat/jdbc/mysql { };-- axis2 = callPackage ../servers/http/tomcat/axis2 { };-- unifi = callPackage ../servers/unifi { };-- virtuoso6 = callPackage ../servers/sql/virtuoso/6.x.nix { };-- virtuoso7 = callPackage ../servers/sql/virtuoso/7.x.nix { };-- virtuoso = virtuoso6;-- vsftpd = callPackage ../servers/ftp/vsftpd { };-- winstone = callPackage ../servers/http/winstone { };-- xinetd = callPackage ../servers/xinetd { };-- xquartz = callPackage ../servers/x11/xquartz { };- quartz-wm = callPackage ../servers/x11/quartz-wm { stdenv = clangStdenv; };-- xorg = recurseIntoAttrs (import ../servers/x11/xorg/default.nix {- inherit clangStdenv fetchurl fetchgit fetchpatch stdenv pkgconfig intltool freetype fontconfig- libxslt expat libpng zlib perl mesa_drivers spice_protocol- dbus libuuid openssl gperf m4- autoconf automake libtool xmlto asciidoc flex bison python mtdev pixman;- mesa = mesa_noglu;- udev = if stdenv.isLinux then udev else null;- libdrm = if stdenv.isLinux then libdrm else null;- } // {- xf86videointel-testing = callPackage ../servers/x11/xorg/xf86-video-intel-testing.nix { };- });-- xorgReplacements = callPackage ../servers/x11/xorg/replacements.nix { };-- xorgVideoUnichrome = callPackage ../servers/x11/xorg/unichrome/default.nix { };-- yaws = callPackage ../servers/http/yaws { };-- zabbix = recurseIntoAttrs (import ../servers/monitoring/zabbix {- inherit fetchurl stdenv pkgconfig postgresql curl openssl zlib;- });-- zabbix20 = callPackage ../servers/monitoring/zabbix/2.0.nix { };- zabbix22 = callPackage ../servers/monitoring/zabbix/2.2.nix { };--- ### OS-SPECIFIC-- afuse = callPackage ../os-specific/linux/afuse { };-- amdUcode = callPackage ../os-specific/linux/microcode/amd.nix { };-- autofs5 = callPackage ../os-specific/linux/autofs/autofs-v5.nix { };-- _915resolution = callPackage ../os-specific/linux/915resolution { };-- nfsUtils = callPackage ../os-specific/linux/nfs-utils { };-- acpi = callPackage ../os-specific/linux/acpi { };-- acpid = callPackage ../os-specific/linux/acpid { };-- acpitool = callPackage ../os-specific/linux/acpitool { };-- alienfx = callPackage ../os-specific/linux/alienfx { };-- alsaLib = callPackage ../os-specific/linux/alsa-lib { };-- alsaPlugins = callPackage ../os-specific/linux/alsa-plugins {- jack2 = null;- };-- alsaPluginWrapper = callPackage ../os-specific/linux/alsa-plugins/wrapper.nix { };-- alsaUtils = callPackage ../os-specific/linux/alsa-utils { };- alsaOss = callPackage ../os-specific/linux/alsa-oss { };-- microcode2ucode = callPackage ../os-specific/linux/microcode/converter.nix { };-- microcodeIntel = callPackage ../os-specific/linux/microcode/intel.nix { };-- apparmor = callPackage ../os-specific/linux/apparmor {- inherit (perlPackages) LocaleGettext TermReadKey RpcXML;- bison = bison2;- };-- atop = callPackage ../os-specific/linux/atop { };-- audit = callPackage ../os-specific/linux/audit { };-- b43Firmware_5_1_138 = callPackage ../os-specific/linux/firmware/b43-firmware/5.1.138.nix { };-- b43FirmwareCutter = callPackage ../os-specific/linux/firmware/b43-firmware-cutter { };-- batctl = callPackage ../os-specific/linux/batman-adv/batctl.nix { };-- bluez4 = callPackage ../os-specific/linux/bluez {- pygobject = pygobject3;- };-- bluez5 = lowPrio (callPackage ../os-specific/linux/bluez/bluez5.nix { });-- bluez = bluez4;-- inherit (pythonPackages) bedup;-- beret = callPackage ../games/beret { };-- bridge_utils = callPackage ../os-specific/linux/bridge-utils { };-- busybox = callPackage ../os-specific/linux/busybox { };-- checkpolicy = callPackage ../os-specific/linux/checkpolicy { };-- checksec = callPackage ../os-specific/linux/checksec { };-- cifs_utils = callPackage ../os-specific/linux/cifs-utils { };-- conky = callPackage ../os-specific/linux/conky {- mpdSupport = config.conky.mpdSupport or true;- x11Support = config.conky.x11Support or false;- xdamage = config.conky.xdamage or false;- wireless = config.conky.wireless or false;- luaSupport = config.conky.luaSupport or false;- rss = config.conky.rss or false;- weatherMetar = config.conky.weatherMetar or false;- weatherXoap = config.conky.weatherXoap or false;- };-- cpufrequtils = callPackage ../os-specific/linux/cpufrequtils { };-- cryopid = callPackage ../os-specific/linux/cryopid { };-- criu = callPackage ../os-specific/linux/criu { };-- cryptsetup = callPackage ../os-specific/linux/cryptsetup { };-- cramfsswap = callPackage ../os-specific/linux/cramfsswap { };-- darwin = rec {- cctools = forceNativeDrv (callPackage ../os-specific/darwin/cctools-port {- cross = assert crossSystem != null; crossSystem;- inherit maloader;- xctoolchain = xcode.toolchain;- });-- maloader = callPackage ../os-specific/darwin/maloader {- inherit opencflite;- };-- opencflite = callPackage ../os-specific/darwin/opencflite {};-- xcode = callPackage ../os-specific/darwin/xcode {};- };-- devicemapper = lvm2;-- disk_indicator = callPackage ../os-specific/linux/disk-indicator { };-- dmidecode = callPackage ../os-specific/linux/dmidecode { };-- dmtcp = callPackage ../os-specific/linux/dmtcp { };-- dietlibc = callPackage ../os-specific/linux/dietlibc { };-- directvnc = builderDefsPackage ../os-specific/linux/directvnc {- inherit libjpeg pkgconfig zlib directfb;- inherit (xlibs) xproto;- };-- dmraid = callPackage ../os-specific/linux/dmraid { };-- drbd = callPackage ../os-specific/linux/drbd { };-- dstat = callPackage ../os-specific/linux/dstat {- # pythonFull includes the "curses" standard library module, for pretty- # dstat color output- python = pythonFull;- };-- libossp_uuid = callPackage ../development/libraries/libossp-uuid { };-- libuuid =- if crossSystem != null && crossSystem.config == "i586-pc-gnu"- then (utillinux // {- crossDrv = lib.overrideDerivation utillinux.crossDrv (args: {- # `libblkid' fails to build on GNU/Hurd.- configureFlags = args.configureFlags- + " --disable-libblkid --disable-mount --disable-libmount"- + " --disable-fsck --enable-static --disable-partx";- doCheck = false;- CPPFLAGS = # ugly hack for ugly software!- lib.concatStringsSep " "- (map (v: "-D${v}=4096")- [ "PATH_MAX" "MAXPATHLEN" "MAXHOSTNAMELEN" ]);- });- })- else if stdenv.isLinux- then utillinux- else null;-- e3cfsprogs = callPackage ../os-specific/linux/e3cfsprogs { };-- ebtables = callPackage ../os-specific/linux/ebtables { };-- eject = utillinux;-- ffado = callPackage ../os-specific/linux/ffado { };-- fbterm = callPackage ../os-specific/linux/fbterm { };-- firejail = callPackage ../os-specific/linux/firejail {};-- fuse = callPackage ../os-specific/linux/fuse { };-- fxload = callPackage ../os-specific/linux/fxload { };-- gfxtablet = callPackage ../os-specific/linux/gfxtablet {};-- gpm = callPackage ../servers/gpm { };-- gradm = callPackage ../os-specific/linux/gradm {- flex = flex_2_5_35;- };-- hdparm = callPackage ../os-specific/linux/hdparm { };-- hibernate = callPackage ../os-specific/linux/hibernate { };-- hostapd = callPackage ../os-specific/linux/hostapd { };-- htop =- if stdenv.isLinux then- callPackage ../os-specific/linux/htop { }- else if stdenv.isDarwin then- callPackage ../os-specific/darwin/htop { }- else null;-- # GNU/Hurd core packages.- gnu = recurseIntoAttrs (callPackage ../os-specific/gnu {- inherit platform crossSystem;- });-- hwdata = callPackage ../os-specific/linux/hwdata { };-- i7z = callPackage ../os-specific/linux/i7z { };-- ifplugd = callPackage ../os-specific/linux/ifplugd { };-- iomelt = callPackage ../os-specific/linux/iomelt { };-- iotop = callPackage ../os-specific/linux/iotop { };-- iproute = callPackage ../os-specific/linux/iproute { };-- iputils = callPackage ../os-specific/linux/iputils {- sp = spCompat;- inherit (perlPackages) SGMLSpm;- };-- iptables = callPackage ../os-specific/linux/iptables { };-- iw = callPackage ../os-specific/linux/iw { };-- jujuutils = callPackage ../os-specific/linux/jujuutils { };-- kbd = callPackage ../os-specific/linux/kbd { };-- kmscon = callPackage ../os-specific/linux/kmscon { };-- latencytop = callPackage ../os-specific/linux/latencytop { };-- ldm = callPackage ../os-specific/linux/ldm { };-- libaio = callPackage ../os-specific/linux/libaio { };-- libatasmart = callPackage ../os-specific/linux/libatasmart { };-- libcgroup = callPackage ../os-specific/linux/libcgroup { };-- libnl = callPackage ../os-specific/linux/libnl { };- libnl_3_2_19 = callPackage ../os-specific/linux/libnl/3.2.19.nix { };-- linuxConsoleTools = callPackage ../os-specific/linux/consoletools { };-- # -- Linux kernel expressions -------------------------------------------------- linuxHeaders = linuxHeaders_3_7;-- linuxHeaders24Cross = forceNativeDrv (import ../os-specific/linux/kernel-headers/2.4.nix {- inherit stdenv fetchurl perl;- cross = assert crossSystem != null; crossSystem;- });-- linuxHeaders26Cross = forceNativeDrv (import ../os-specific/linux/kernel-headers/2.6.32.nix {- inherit stdenv fetchurl perl;- cross = assert crossSystem != null; crossSystem;- });-- linuxHeaders_3_7 = callPackage ../os-specific/linux/kernel-headers/3.7.nix { };-- linuxHeaders_3_14 = callPackage ../os-specific/linux/kernel-headers/3.14.nix { };-- # We can choose:- linuxHeadersCrossChooser = ver : if ver == "2.4" then linuxHeaders24Cross- else if ver == "2.6" then linuxHeaders26Cross- else throw "Unknown linux kernel version";-- linuxHeadersCross = assert crossSystem != null;- linuxHeadersCrossChooser crossSystem.platform.kernelMajor;-- kernelPatches = callPackage ../os-specific/linux/kernel/patches.nix { };-- linux_3_2 = makeOverridable (import ../os-specific/linux/kernel/linux-3.2.nix) {- inherit fetchurl stdenv perl buildLinux;- kernelPatches = [];- };-- linux_3_2_xen = lowPrio (linux_3_2.override {- extraConfig = ''- XEN_DOM0 y- '';- });-- linux_3_4 = makeOverridable (import ../os-specific/linux/kernel/linux-3.4.nix) {- inherit fetchurl stdenv perl buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips")- [ kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- ];- };-- linux_3_6_rpi = makeOverridable (import ../os-specific/linux/kernel/linux-rpi-3.6.nix) {- inherit fetchurl stdenv perl buildLinux;- };-- linux_3_10 = makeOverridable (import ../os-specific/linux/kernel/linux-3.10.nix) {- inherit fetchurl stdenv perl buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips")- [ kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- kernelPatches.mips_ext3_n32- ];- };-- linux_3_12 = makeOverridable (import ../os-specific/linux/kernel/linux-3.12.nix) {- inherit fetchurl stdenv perl buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips")- [ kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- kernelPatches.mips_ext3_n32- ];- };-- linux_3_14 = makeOverridable (import ../os-specific/linux/kernel/linux-3.14.nix) {- inherit fetchurl stdenv perl buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips")- [ kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- kernelPatches.mips_ext3_n32- ];- };-- linux_3_15 = makeOverridable (import ../os-specific/linux/kernel/linux-3.15.nix) {- inherit fetchurl stdenv perl buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips")- [ kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- kernelPatches.mips_ext3_n32- ];- };-- linux_3_16 = makeOverridable (import ../os-specific/linux/kernel/linux-3.16.nix) {- inherit fetchurl stdenv perl buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips")- [ kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- kernelPatches.mips_ext3_n32- ];- };-- linux_testing = makeOverridable (import ../os-specific/linux/kernel/linux-testing.nix) {- inherit fetchurl stdenv perl buildLinux;- kernelPatches = lib.optionals ((platform.kernelArch or null) == "mips")- [ kernelPatches.mips_fpureg_emu- kernelPatches.mips_fpu_sigill- kernelPatches.mips_ext3_n32- ];- };-- /* grsec configuration-- We build several flavors of 'default' grsec kernels. These are- built by default with Hydra. If the user selects a matching- 'default' flavor, then the pre-canned package set can be- chosen. Typically, users will make very basic choices like- 'security' + 'server' or 'performance' + 'desktop' with- virtualisation support. These will then be picked.-- Note: Xen guest kernels are included for e.g. NixOps deployments- to EC2, where Xen is the Hypervisor.- */-- grFlavors = import ../build-support/grsecurity/flavors.nix;-- mkGrsecurity = opts:- (import ../build-support/grsecurity {- grsecOptions = opts;- inherit pkgs lib;- });-- grKernel = opts: (mkGrsecurity opts).grsecKernel;- grPackage = opts: recurseIntoAttrs (mkGrsecurity opts).grsecPackage;-- # Stable kernels- linux_grsec_stable_desktop = grKernel grFlavors.linux_grsec_stable_desktop;- linux_grsec_stable_server = grKernel grFlavors.linux_grsec_stable_server;- linux_grsec_stable_server_xen = grKernel grFlavors.linux_grsec_stable_server_xen;-- # Testing kernels- linux_grsec_testing_desktop = grKernel grFlavors.linux_grsec_testing_desktop;- linux_grsec_testing_server = grKernel grFlavors.linux_grsec_testing_server;- linux_grsec_testing_server_xen = grKernel grFlavors.linux_grsec_testing_server_xen;-- /* Linux kernel modules are inherently tied to a specific kernel. So- rather than provide specific instances of those packages for a- specific kernel, we have a function that builds those packages- for a specific kernel. This function can then be called for- whatever kernel you're using. */-- linuxPackagesFor = kernel: self: let callPackage = newScope self; in {- inherit kernel;-- acpi_call = callPackage ../os-specific/linux/acpi-call {};-- batman_adv = callPackage ../os-specific/linux/batman-adv {};-- bbswitch = callPackage ../os-specific/linux/bbswitch {};-- ati_drivers_x11 = callPackage ../os-specific/linux/ati-drivers { };-- blcr = callPackage ../os-specific/linux/blcr { };-- cryptodev = callPackage ../os-specific/linux/cryptodev { };-- cpupower = callPackage ../os-specific/linux/cpupower { };-- e1000e = callPackage ../os-specific/linux/e1000e {};-- v4l2loopback = callPackage ../os-specific/linux/v4l2loopback { };-- frandom = callPackage ../os-specific/linux/frandom { };-- ktap = callPackage ../os-specific/linux/ktap { };-- lttng-modules = callPackage ../os-specific/linux/lttng-modules { };-- broadcom_sta = callPackage ../os-specific/linux/broadcom-sta/default.nix { };-- nvidiabl = callPackage ../os-specific/linux/nvidiabl { };-- nvidia_x11 = callPackage ../os-specific/linux/nvidia-x11 { };-- nvidia_x11_legacy173 = callPackage ../os-specific/linux/nvidia-x11/legacy173.nix { };- nvidia_x11_legacy304 = callPackage ../os-specific/linux/nvidia-x11/legacy304.nix { };-- openafsClient = callPackage ../servers/openafs-client { };-- openiscsi = callPackage ../os-specific/linux/open-iscsi { };-- wis_go7007 = callPackage ../os-specific/linux/wis-go7007 { };-- kernelHeaders = callPackage ../os-specific/linux/kernel-headers { };-- klibc = callPackage ../os-specific/linux/klibc { };-- klibcShrunk = lowPrio (callPackage ../os-specific/linux/klibc/shrunk.nix { });--- /* compiles but has to be integrated into the kernel somehow- Let's have it uncommented and finish it..- */- ndiswrapper = callPackage ../os-specific/linux/ndiswrapper { };-- netatop = callPackage ../os-specific/linux/netatop { };-- perf = callPackage ../os-specific/linux/kernel/perf.nix { };-- psmouse_alps = callPackage ../os-specific/linux/psmouse-alps { };-- spl = callPackage ../os-specific/linux/spl { };- spl_git = callPackage ../os-specific/linux/spl/git.nix { };-- sysdig = callPackage ../os-specific/linux/sysdig {};-- tp_smapi = callPackage ../os-specific/linux/tp_smapi { };-- v86d = callPackage ../os-specific/linux/v86d { };-- virtualbox = callPackage ../applications/virtualization/virtualbox {- stdenv = stdenv_32bit;- inherit (gnome) libIDL;- enableExtensionPack = config.virtualbox.enableExtensionPack or false;- };-- virtualboxGuestAdditions = callPackage ../applications/virtualization/virtualbox/guest-additions { };-- zfs = callPackage ../os-specific/linux/zfs { };- zfs_git = callPackage ../os-specific/linux/zfs/git.nix { };- };-- # The current default kernel / kernel modules.- linux = linuxPackages.kernel;- linuxPackages = linuxPackages_3_12;-- # Update this when adding the newest kernel major version!- linux_latest = pkgs.linux_3_16;- linuxPackages_latest = pkgs.linuxPackages_3_16;-- # Build the kernel modules for the some of the kernels.- linuxPackages_3_2 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_2 linuxPackages_3_2);- linuxPackages_3_2_xen = linuxPackagesFor pkgs.linux_3_2_xen linuxPackages_3_2_xen;- linuxPackages_3_4 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_4 linuxPackages_3_4);- linuxPackages_3_6_rpi = linuxPackagesFor pkgs.linux_3_6_rpi linuxPackages_3_6_rpi;- linuxPackages_3_10 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_10 linuxPackages_3_10);- linuxPackages_3_10_tuxonice = linuxPackagesFor pkgs.linux_3_10_tuxonice linuxPackages_3_10_tuxonice;- linuxPackages_3_12 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_12 linuxPackages_3_12);- linuxPackages_3_14 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_14 linuxPackages_3_14);- linuxPackages_3_15 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_15 linuxPackages_3_15);- linuxPackages_3_16 = recurseIntoAttrs (linuxPackagesFor pkgs.linux_3_16 linuxPackages_3_16);- linuxPackages_testing = recurseIntoAttrs (linuxPackagesFor pkgs.linux_testing linuxPackages_testing);-- # grsecurity flavors- # Stable kernels- linuxPackages_grsec_stable_desktop = grPackage grFlavors.linux_grsec_stable_desktop;- linuxPackages_grsec_stable_server = grPackage grFlavors.linux_grsec_stable_server;- linuxPackages_grsec_stable_server_xen = grPackage grFlavors.linux_grsec_stable_server_xen;-- # Testing kernels- linuxPackages_grsec_testing_desktop = grPackage grFlavors.linux_grsec_testing_desktop;- linuxPackages_grsec_testing_server = grPackage grFlavors.linux_grsec_testing_server;- linuxPackages_grsec_testing_server_xen = grPackage grFlavors.linux_grsec_testing_server_xen;-- # A function to build a manually-configured kernel- linuxManualConfig = pkgs.buildLinux;- buildLinux = import ../os-specific/linux/kernel/manual-config.nix {- inherit (pkgs) stdenv runCommand nettools bc perl kmod writeTextFile ubootChooser;- };-- keyutils = callPackage ../os-specific/linux/keyutils { };-- libselinux = callPackage ../os-specific/linux/libselinux { };-- libsemanage = callPackage ../os-specific/linux/libsemanage { };-- libraw = callPackage ../development/libraries/libraw { };-- libraw1394 = callPackage ../development/libraries/libraw1394 { };-- libsexy = callPackage ../development/libraries/libsexy { };-- libsepol = callPackage ../os-specific/linux/libsepol { };-- libsmbios = callPackage ../os-specific/linux/libsmbios { };-- lm_sensors = callPackage ../os-specific/linux/lm-sensors { };-- lockdep = callPackage ../os-specific/linux/lockdep { };-- lsiutil = callPackage ../os-specific/linux/lsiutil { };-- kmod = callPackage ../os-specific/linux/kmod { };-- kmod-blacklist-ubuntu = callPackage ../os-specific/linux/kmod-blacklist-ubuntu { };-- kvm = qemu_kvm;-- libcap = callPackage ../os-specific/linux/libcap { };-- libcap_progs = callPackage ../os-specific/linux/libcap/progs.nix { };-- libcap_pam = callPackage ../os-specific/linux/libcap/pam.nix { };-- libcap_manpages = callPackage ../os-specific/linux/libcap/man.nix { };-- libcap_ng = callPackage ../os-specific/linux/libcap-ng { };-- libnscd = callPackage ../os-specific/linux/libnscd { };-- libnotify = callPackage ../development/libraries/libnotify { };-- libvolume_id = callPackage ../os-specific/linux/libvolume_id { };-- lsscsi = callPackage ../os-specific/linux/lsscsi { };-- lvm2 = callPackage ../os-specific/linux/lvm2 { };-- mdadm = callPackage ../os-specific/linux/mdadm { };-- mingetty = callPackage ../os-specific/linux/mingetty { };-- module_init_tools = callPackage ../os-specific/linux/module-init-tools { };-- aggregateModules = modules:- callPackage ../os-specific/linux/kmod/aggregator.nix {- inherit modules;- };-- multipath_tools = callPackage ../os-specific/linux/multipath-tools { };-- musl = callPackage ../os-specific/linux/musl { };-- nettools = callPackage ../os-specific/linux/net-tools { };-- neverball = callPackage ../games/neverball {- libpng = libpng15;- };-- nftables = callPackage ../os-specific/linux/nftables { };-- numactl = callPackage ../os-specific/linux/numactl { };-- gocode = callPackage ../development/tools/gocode { };-- gogoclient = callPackage ../os-specific/linux/gogoclient { };-- nss_ldap = callPackage ../os-specific/linux/nss_ldap { };-- pam = callPackage ../os-specific/linux/pam { };-- # pam_bioapi ( see http://www.thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader )-- pam_ccreds = callPackage ../os-specific/linux/pam_ccreds { };-- pam_console = callPackage ../os-specific/linux/pam_console {- libtool = libtool_1_5;- };-- pam_devperm = callPackage ../os-specific/linux/pam_devperm { };-- pam_krb5 = callPackage ../os-specific/linux/pam_krb5 { };-- pam_ldap = callPackage ../os-specific/linux/pam_ldap { };-- pam_login = callPackage ../os-specific/linux/pam_login { };-- pam_ssh_agent_auth = callPackage ../os-specific/linux/pam_ssh_agent_auth { };-- pam_usb = callPackage ../os-specific/linux/pam_usb { };-- paxctl = callPackage ../os-specific/linux/paxctl { };-- pax-utils = callPackage ../os-specific/linux/pax-utils { };-- pcmciaUtils = callPackage ../os-specific/linux/pcmciautils {- firmware = config.pcmciaUtils.firmware or [];- config = config.pcmciaUtils.config or null;- };-- plymouth = callPackage ../os-specific/linux/plymouth {- automake = automake113x;- };-- pmount = callPackage ../os-specific/linux/pmount { };-- pmutils = callPackage ../os-specific/linux/pm-utils { };-- pmtools = callPackage ../os-specific/linux/pmtools { };-- policycoreutils = callPackage ../os-specific/linux/policycoreutils { };-- powertop = callPackage ../os-specific/linux/powertop { };-- prayer = callPackage ../servers/prayer { };-- procps = procps-ng;-- procps-old = lowPrio (callPackage ../os-specific/linux/procps { });-- procps-ng = callPackage ../os-specific/linux/procps-ng { };-- watch = callPackage ../os-specific/linux/procps/watch.nix { };-- qemu_kvm = lowPrio (qemu.override { x86Only = true; });-- firmwareLinuxNonfree = callPackage ../os-specific/linux/firmware/firmware-linux-nonfree { };-- radeontools = callPackage ../os-specific/linux/radeontools { };-- raspberrypifw = callPackage ../os-specific/linux/firmware/raspberrypi {};-- regionset = callPackage ../os-specific/linux/regionset { };-- rfkill = callPackage ../os-specific/linux/rfkill { };-- rfkill_udev = callPackage ../os-specific/linux/rfkill/udev.nix { };-- rtkit = callPackage ../os-specific/linux/rtkit { };-- sdparm = callPackage ../os-specific/linux/sdparm { };-- sepolgen = callPackage ../os-specific/linux/sepolgen { };-- setools = callPackage ../os-specific/linux/setools { };-- shadow = callPackage ../os-specific/linux/shadow { };-- statifier = builderDefsPackage (import ../os-specific/linux/statifier) { };-- sysdig = callPackage ../os-specific/linux/sysdig {- kernel = null;- }; # pkgs.sysdig is a client, for a driver look at linuxPackagesFor-- sysfsutils = callPackage ../os-specific/linux/sysfsutils { };-- sysprof = callPackage ../development/tools/profiling/sysprof {- inherit (gnome) libglade;- };-- # Provided with sysfsutils.- libsysfs = sysfsutils;- systool = sysfsutils;-- sysklogd = callPackage ../os-specific/linux/sysklogd { };-- syslinux = callPackage ../os-specific/linux/syslinux { };-- sysstat = callPackage ../os-specific/linux/sysstat { };-- systemd = callPackage ../os-specific/linux/systemd {- linuxHeaders = linuxHeaders_3_14;- };-- systemtap = callPackage ../development/tools/profiling/systemtap {- inherit (gnome) libglademm;- };-- # In nixos, you can set systemd.package = pkgs.systemd_with_lvm2 to get- # LVM2 working in systemd.- systemd_with_lvm2 = pkgs.lib.overrideDerivation pkgs.systemd (p: {- name = p.name + "-with-lvm2";- postInstall = p.postInstall + ''- cp "${pkgs.lvm2}/lib/systemd/system-generators/"* $out/lib/systemd/system-generators- '';- });-- sysvinit = callPackage ../os-specific/linux/sysvinit { };-- sysvtools = callPackage ../os-specific/linux/sysvinit {- withoutInitTools = true;- };-- # FIXME: `tcp-wrapper' is actually not OS-specific.- tcp_wrappers = callPackage ../os-specific/linux/tcp-wrappers { };-- trackballs = callPackage ../games/trackballs {- debug = false;- guile = guile_1_8;- };-- tunctl = callPackage ../os-specific/linux/tunctl { };-- ubootChooser = name : if name == "upstream" then ubootUpstream- else if name == "sheevaplug" then ubootSheevaplug- else if name == "guruplug" then ubootGuruplug- else if name == "nanonote" then ubootNanonote- else throw "Unknown uboot";-- ubootUpstream = callPackage ../misc/uboot { };-- ubootSheevaplug = callPackage ../misc/uboot/sheevaplug.nix { };-- ubootNanonote = callPackage ../misc/uboot/nanonote.nix { };-- ubootGuruplug = callPackage ../misc/uboot/guruplug.nix { };-- uclibc = callPackage ../os-specific/linux/uclibc { };-- uclibcCross = lowPrio (callPackage ../os-specific/linux/uclibc {- inherit fetchurl stdenv libiconv;- linuxHeaders = linuxHeadersCross;- gccCross = gccCrossStageStatic;- cross = assert crossSystem != null; crossSystem;- });-- udev145 = callPackage ../os-specific/linux/udev/145.nix { };- udev = pkgs.systemd;-- udisks1 = callPackage ../os-specific/linux/udisks/1-default.nix { };- udisks2 = callPackage ../os-specific/linux/udisks/2-default.nix { };- udisks = udisks1;-- udisks_glue = callPackage ../os-specific/linux/udisks-glue { };-- untie = callPackage ../os-specific/linux/untie { };-- upower = callPackage ../os-specific/linux/upower { };-- upower_99 = callPackage ../os-specific/linux/upower/0.99.nix { };-- upstart = callPackage ../os-specific/linux/upstart { };-- usbutils = callPackage ../os-specific/linux/usbutils { };-- usermount = callPackage ../os-specific/linux/usermount { };-- utillinux = lowPrio (callPackage ../os-specific/linux/util-linux {- ncurses = null;- perl = null;- });-- utillinuxCurses = utillinux.override {- inherit ncurses perl;- };-- v4l_utils = callPackage ../os-specific/linux/v4l-utils {- withQt4 = true;- };-- windows = rec {- cygwinSetup = callPackage ../os-specific/windows/cygwin-setup { };-- jom = callPackage ../os-specific/windows/jom { };-- w32api = callPackage ../os-specific/windows/w32api {- gccCross = gccCrossStageStatic;- binutilsCross = binutilsCross;- };-- w32api_headers = w32api.override {- onlyHeaders = true;- };-- mingw_runtime = callPackage ../os-specific/windows/mingwrt {- gccCross = gccCrossMingw2;- binutilsCross = binutilsCross;- };-- mingw_runtime_headers = mingw_runtime.override {- onlyHeaders = true;- };-- mingw_headers1 = buildEnv {- name = "mingw-headers-1";- paths = [ w32api_headers mingw_runtime_headers ];- };-- mingw_headers2 = buildEnv {- name = "mingw-headers-2";- paths = [ w32api mingw_runtime_headers ];- };-- mingw_headers3 = buildEnv {- name = "mingw-headers-3";- paths = [ w32api mingw_runtime ];- };-- mingw_w64 = callPackage ../os-specific/windows/mingw-w64 {- gccCross = gccCrossStageStatic;- binutilsCross = binutilsCross;- };-- mingw_w64_headers = callPackage ../os-specific/windows/mingw-w64 {- onlyHeaders = true;- };-- mingw_w64_pthreads = callPackage ../os-specific/windows/mingw-w64 {- onlyPthreads = true;- };-- pthreads = callPackage ../os-specific/windows/pthread-w32 {- mingw_headers = mingw_headers3;- };-- wxMSW = callPackage ../os-specific/windows/wxMSW-2.8 { };- };-- wesnoth = callPackage ../games/wesnoth {- lua = lua5;- };-- wirelesstools = callPackage ../os-specific/linux/wireless-tools { };-- wpa_supplicant = callPackage ../os-specific/linux/wpa_supplicant { };-- wpa_supplicant_gui = callPackage ../os-specific/linux/wpa_supplicant/gui.nix { };-- xf86_input_mtrack = callPackage ../os-specific/linux/xf86-input-mtrack {- inherit (xorg) utilmacros xproto inputproto xorgserver;- };-- xf86_input_multitouch =- callPackage ../os-specific/linux/xf86-input-multitouch { };-- xf86_input_wacom = callPackage ../os-specific/linux/xf86-input-wacom { };-- xf86_video_nested = callPackage ../os-specific/linux/xf86-video-nested {- inherit (xorg) fontsproto renderproto utilmacros xorgserver;- };-- xf86_video_nouveau = xorg.xf86videonouveau;-- xmoto = builderDefsPackage (import ../games/xmoto) {- inherit chipmunk sqlite curl zlib bzip2 libjpeg libpng- freeglut mesa SDL SDL_mixer SDL_image SDL_net SDL_ttf- lua5 ode libxdg_basedir libxml2;- };-- xorg_sys_opengl = callPackage ../os-specific/linux/opengl/xorg-sys { };-- zd1211fw = callPackage ../os-specific/linux/firmware/zd1211 { };--- ### DATA-- andagii = callPackage ../data/fonts/andagii {};-- anonymousPro = callPackage ../data/fonts/anonymous-pro {};-- arkpandora_ttf = builderDefsPackage (import ../data/fonts/arkpandora) { };-- aurulent-sans = callPackage ../data/fonts/aurulent-sans { };-- bakoma_ttf = callPackage ../data/fonts/bakoma-ttf { };-- cacert = callPackage ../data/misc/cacert { };-- cantarell_fonts = callPackage ../data/fonts/cantarell-fonts { };-- corefonts = callPackage ../data/fonts/corefonts { };-- wrapFonts = paths : ((import ../data/fonts/fontWrap) {- inherit fetchurl stdenv builderDefs paths;- inherit (xorg) mkfontdir mkfontscale;- });-- clearlyU = callPackage ../data/fonts/clearlyU { };-- cm_unicode = callPackage ../data/fonts/cm-unicode {};-- dejavu_fonts = callPackage ../data/fonts/dejavu-fonts {- inherit (perlPackages) FontTTF;- };-- docbook5 = callPackage ../data/sgml+xml/schemas/docbook-5.0 { };-- docbook_sgml_dtd_31 = callPackage ../data/sgml+xml/schemas/sgml-dtd/docbook/3.1.nix { };-- docbook_sgml_dtd_41 = callPackage ../data/sgml+xml/schemas/sgml-dtd/docbook/4.1.nix { };-- docbook_xml_dtd_412 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.1.2.nix { };-- docbook_xml_dtd_42 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.2.nix { };-- docbook_xml_dtd_43 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.3.nix { };-- docbook_xml_dtd_45 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.5.nix { };-- docbook_xml_ebnf_dtd = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook-ebnf { };-- docbook_xml_xslt = docbook_xsl;-- docbook_xsl = callPackage ../data/sgml+xml/stylesheets/xslt/docbook-xsl { };-- docbook5_xsl = docbook_xsl_ns;-- docbook_xsl_ns = callPackage ../data/sgml+xml/stylesheets/xslt/docbook-xsl-ns { };-- dosemu_fonts = callPackage ../data/fonts/dosemu-fonts { };-- eb-garamond = callPackage ../data/fonts/eb-garamond { };-- fira = callPackage ../data/fonts/fira { };-- freefont_ttf = callPackage ../data/fonts/freefont-ttf { };-- freepats = callPackage ../data/misc/freepats { };-- gentium = callPackage ../data/fonts/gentium {};-- gnome_user_docs = callPackage ../data/documentation/gnome-user-docs { };-- inherit (gnome3) gsettings_desktop_schemas;-- hicolor_icon_theme = callPackage ../data/icons/hicolor-icon-theme { };-- inconsolata = callPackage ../data/fonts/inconsolata {};-- ipafont = callPackage ../data/fonts/ipafont {};-- junicode = callPackage ../data/fonts/junicode { };-- kochi-substitute = callPackage ../data/fonts/kochi-substitute {};-- kochi-substitute-naga10 = callPackage ../data/fonts/kochi-substitute-naga10 {};-- liberation_ttf = callPackage ../data/fonts/redhat-liberation-fonts { };-- libertine = builderDefsPackage (import ../data/fonts/libertine) {- inherit fetchurl fontforge lib;- };-- lmmath = callPackage ../data/fonts/lmodern/lmmath.nix {};-- lmodern = callPackage ../data/fonts/lmodern { };-- lohit-fonts = callPackage ../data/fonts/lohit-fonts { };-- manpages = callPackage ../data/documentation/man-pages { };-- miscfiles = callPackage ../data/misc/miscfiles { };-- mobile_broadband_provider_info = callPackage ../data/misc/mobile-broadband-provider-info { };-- mph_2b_damase = callPackage ../data/fonts/mph-2b-damase { };-- nafees = callPackage ../data/fonts/nafees { };-- oldstandard = callPackage ../data/fonts/oldstandard { };-- opensans-ttf = callPackage ../data/fonts/opensans-ttf { };-- poly = callPackage ../data/fonts/poly { };-- posix_man_pages = callPackage ../data/documentation/man-pages-posix { };-- pthreadmanpages = callPackage ../data/documentation/pthread-man-pages { };-- shared_mime_info = callPackage ../data/misc/shared-mime-info { };-- shared_desktop_ontologies = callPackage ../data/misc/shared-desktop-ontologies { };-- stdmanpages = callPackage ../data/documentation/std-man-pages { };-- symbola = callPackage ../data/fonts/symbola { };-- iana_etc = callPackage ../data/misc/iana-etc { };-- poppler_data = callPackage ../data/misc/poppler-data { };-- r3rs = callPackage ../data/documentation/rnrs/r3rs.nix { };-- r4rs = callPackage ../data/documentation/rnrs/r4rs.nix { };-- r5rs = callPackage ../data/documentation/rnrs/r5rs.nix { };-- source-code-pro = callPackage ../data/fonts/source-code-pro {};-- source-sans-pro = callPackage ../data/fonts/source-sans-pro { };-- source-serif-pro = callPackage ../data/fonts/source-serif-pro { };-- source-han-sans-japanese = callPackage ../data/fonts/source-han-sans/japanese.nix {};- source-han-sans-korean = callPackage ../data/fonts/source-han-sans/korean.nix {};- source-han-sans-simplified-chinese = callPackage ../data/fonts/source-han-sans/simplified-chinese.nix {};- source-han-sans-traditional-chinese = callPackage ../data/fonts/source-han-sans/traditional-chinese.nix {};-- tango-icon-theme = callPackage ../data/icons/tango-icon-theme { };-- themes = name: import (../data/misc/themes + ("/" + name + ".nix")) {- inherit fetchurl;- };-- theano = callPackage ../data/fonts/theano { };-- tempora_lgc = callPackage ../data/fonts/tempora-lgc { };-- terminus_font = callPackage ../data/fonts/terminus-font { };-- tipa = callPackage ../data/fonts/tipa { };-- ttf_bitstream_vera = callPackage ../data/fonts/ttf-bitstream-vera { };-- tzdata = callPackage ../data/misc/tzdata { };-- ubuntu_font_family = callPackage ../data/fonts/ubuntu-font-family { };-- ucsFonts = callPackage ../data/fonts/ucs-fonts { };-- unifont = callPackage ../data/fonts/unifont { };-- vistafonts = callPackage ../data/fonts/vista-fonts { };-- wqy_microhei = callPackage ../data/fonts/wqy-microhei { };-- wqy_zenhei = callPackage ../data/fonts/wqy-zenhei { };-- xhtml1 = callPackage ../data/sgml+xml/schemas/xml-dtd/xhtml1 { };-- xkeyboard_config = xorg.xkeyboardconfig;--- ### APPLICATIONS-- a2jmidid = callPackage ../applications/audio/a2jmidid { };-- aangifte2006 = callPackage_i686 ../applications/taxes/aangifte-2006 { };-- aangifte2007 = callPackage_i686 ../applications/taxes/aangifte-2007 { };-- aangifte2008 = callPackage_i686 ../applications/taxes/aangifte-2008 { };-- aangifte2009 = callPackage_i686 ../applications/taxes/aangifte-2009 { };-- aangifte2010 = callPackage_i686 ../applications/taxes/aangifte-2010 { };-- aangifte2011 = callPackage_i686 ../applications/taxes/aangifte-2011 { };-- aangifte2012 = callPackage_i686 ../applications/taxes/aangifte-2012 { };-- aangifte2013 = callPackage_i686 ../applications/taxes/aangifte-2013 { };-- abcde = callPackage ../applications/audio/abcde {- inherit (perlPackages) DigestSHA MusicBrainz MusicBrainzDiscID;- libcdio = libcdio082;- };-- abiword = callPackage ../applications/office/abiword {- inherit (gnome) libglade libgnomecanvas;- };-- abook = callPackage ../applications/misc/abook { };-- adobe-reader = callPackage_i686 ../applications/misc/adobe-reader { };-- aewan = callPackage ../applications/editors/aewan { };-- alchemy = callPackage ../applications/graphics/alchemy { };-- ams-lv2 = callPackage ../applications/audio/ams-lv2 { };-- amsn = callPackage ../applications/networking/instant-messengers/amsn { };-- antiword = callPackage ../applications/office/antiword {};-- ardour = ardour3;-- ardour3 = lowPrio (callPackage ../applications/audio/ardour {- inherit (gnome) libgnomecanvas libgnomecanvasmm;- });-- arora = callPackage ../applications/networking/browsers/arora { };-- atom = callPackage ../applications/editors/atom {- gconf = gnome.GConf;- };-- aseprite = callPackage ../applications/editors/aseprite {- giflib = giflib_4_1;- };-- audacious = callPackage ../applications/audio/audacious { };-- audacity = callPackage ../applications/audio/audacity {- ffmpeg = ffmpeg_0_10;- };-- milkytracker = callPackage ../applications/audio/milkytracker { };-- aumix = callPackage ../applications/audio/aumix {- gtkGUI = false;- };-- autopanosiftc = callPackage ../applications/graphics/autopanosiftc { };-- avidemux = callPackage ../applications/video/avidemux { };-- avogadro = callPackage ../applications/science/chemistry/avogadro {- eigen = eigen2;- };-- avrdudess = callPackage ../applications/misc/avrdudess { };-- avxsynth = callPackage ../applications/video/avxsynth { };-- awesome-3-4 = callPackage ../applications/window-managers/awesome/3.4.nix {- lua = lua5;- cairo = cairo.override { xcbSupport = true; };- };- awesome-3-5 = callPackage ../applications/window-managers/awesome {- lua = lua5_1;- cairo = cairo.override { xcbSupport = true; };- };- awesome = awesome-3-5;-- inherit (gnome3) baobab;-- bar = callPackage ../applications/window-managers/bar { };-- baresip = callPackage ../applications/networking/instant-messengers/baresip {- ffmpeg = ffmpeg_1;- };-- batik = callPackage ../applications/graphics/batik { };-- bazaar = callPackage ../applications/version-management/bazaar { };-- bazaarTools = builderDefsPackage (import ../applications/version-management/bazaar/tools.nix) {- inherit bazaar;- };-- beast = callPackage ../applications/audio/beast {- inherit (gnome) libgnomecanvas libart_lgpl;- guile = guile_1_8;- };-- bibletime = callPackage ../applications/misc/bibletime { };-- bitcoin = callPackage ../applications/misc/bitcoin { };-- bitlbee = callPackage ../applications/networking/instant-messengers/bitlbee {- gnutls = gnutls;- libotr = libotr_3_2;- };-- blender = callPackage ../applications/misc/blender {- python = python34;- };-- bristol = callPackage ../applications/audio/bristol { };-- bspwm = callPackage ../applications/window-managers/bspwm { };-- bvi = callPackage ../applications/editors/bvi { };-- calf = callPackage ../applications/audio/calf {- inherit (gnome) libglade;- };-- calibre = callPackage ../applications/misc/calibre {- inherit (pythonPackages) pyqt5 sip_4_16;- };-- camlistore = callPackage ../applications/misc/camlistore { };-- carrier = builderDefsPackage (import ../applications/networking/instant-messengers/carrier/2.5.0.nix) {- inherit fetchurl stdenv pkgconfig perl perlXMLParser libxml2 openssl nss- gtkspell aspell gettext ncurses avahi dbus dbus_glib python- libtool automake autoconf gstreamer;- inherit gtk glib;- inherit (gnome) startupnotification GConf ;- inherit (xlibs) libXScrnSaver scrnsaverproto libX11 xproto kbproto;- };- funpidgin = carrier;-- cc1394 = callPackage ../applications/video/cc1394 { };-- cddiscid = callPackage ../applications/audio/cd-discid { };-- cdparanoia = cdparanoiaIII;-- cdparanoiaIII = callPackage ../applications/audio/cdparanoia { };-- cdrtools = callPackage ../applications/misc/cdrtools { };-- centerim = callPackage ../applications/networking/instant-messengers/centerim { };-- cgit = callPackage ../applications/version-management/git-and-tools/cgit { };-- cgminer = callPackage ../applications/misc/cgminer {- amdappsdk = amdappsdk28;- };-- chatzilla = callPackage ../applications/networking/irc/chatzilla { };-- chromium = lowPrio (callPackage ../applications/networking/browsers/chromium {- channel = "stable";- pulseSupport = config.pulseaudio or true;- enablePepperFlash = config.chromium.enablePepperFlash or false;- enablePepperPDF = config.chromium.enablePepperPDF or false;- });-- chromiumBeta = lowPrio (chromium.override { channel = "beta"; });- chromiumBetaWrapper = lowPrio (wrapChromium chromiumBeta);-- chromiumDev = lowPrio (chromium.override { channel = "dev"; });- chromiumDevWrapper = lowPrio (wrapChromium chromiumDev);-- chromiumWrapper = wrapChromium chromium;-- cinelerra = callPackage ../applications/video/cinelerra { };-- clipit = callPackage ../applications/misc/clipit { };-- cmus = callPackage ../applications/audio/cmus { };-- compiz = callPackage ../applications/window-managers/compiz {- inherit (gnome) GConf ORBit2 metacity;- boost = boost149; # https://bugs.launchpad.net/compiz/+bug/1131864- };-- coriander = callPackage ../applications/video/coriander {- inherit (gnome) libgnomeui GConf;- };-- csound = callPackage ../applications/audio/csound { };-- cinepaint = callPackage ../applications/graphics/cinepaint {- fltk = fltk13;- libpng = libpng12;- };-- codeblocks = callPackage ../applications/editors/codeblocks { };- codeblocksFull = callPackage ../applications/editors/codeblocks { contribPlugins = true; };-- codeville = builderDefsPackage (import ../applications/version-management/codeville/0.8.0.nix) {- inherit makeWrapper;- python = pythonFull;- };-- comical = callPackage ../applications/graphics/comical { };-- conkeror = callPackage ../applications/networking/browsers/conkeror { };-- conkerorWrapper = wrapFirefox {- browser = conkeror;- browserName = "conkeror";- desktopName = "Conkeror";- };-- cuneiform = builderDefsPackage (import ../tools/graphics/cuneiform) {- inherit cmake patchelf;- imagemagick = imagemagick;- };-- cvs = callPackage ../applications/version-management/cvs { };-- cvsps = callPackage ../applications/version-management/cvsps { };-- cvs2svn = callPackage ../applications/version-management/cvs2svn { };-- d4x = callPackage ../applications/misc/d4x { };-- darcs = with haskellPackages_ghc783; callPackage ../applications/version-management/darcs {- cabal = cabal.override {- extension = self : super : {- isLibrary = false;- configureFlags = "-f-library " + super.configureFlags or "";- };- };- };-- darktable = callPackage ../applications/graphics/darktable {- inherit (gnome) GConf libglade;- };-- dd-agent = callPackage ../tools/networking/dd-agent { inherit (pythonPackages) tornado; };-- dia = callPackage ../applications/graphics/dia {- inherit (pkgs.gnome) libart_lgpl libgnomeui;- };-- diffuse = callPackage ../applications/version-management/diffuse { };-- distrho = callPackage ../applications/audio/distrho {};-- djvulibre = callPackage ../applications/misc/djvulibre { };-- djvu2pdf = callPackage ../tools/typesetting/djvu2pdf { };-- djview = callPackage ../applications/graphics/djview { };- djview4 = pkgs.djview;-- dmenu = callPackage ../applications/misc/dmenu {- enableXft = config.dmenu.enableXft or false;- };-- dmtx = builderDefsPackage (import ../tools/graphics/dmtx) {- inherit libpng libtiff libjpeg imagemagick librsvg- pkgconfig bzip2 zlib libtool freetype fontconfig- ghostscript jasper xz;- inherit (xlibs) libX11;- };-- docker = callPackage ../applications/virtualization/docker { };-- doodle = callPackage ../applications/search/doodle { };-- dunst = callPackage ../applications/misc/dunst { };-- dvb_apps = callPackage ../applications/video/dvb-apps { };-- dvdauthor = callPackage ../applications/video/dvdauthor { };-- dwb = callPackage ../applications/networking/browsers/dwb { dconf = gnome3.dconf; };-- dwbWrapper = wrapFirefox- { browser = dwb; browserName = "dwb"; desktopName = "dwb";- };-- dwm = callPackage ../applications/window-managers/dwm {- patches = config.dwm.patches or [];- };-- dzen2 = callPackage ../applications/window-managers/dzen2 { };-- eaglemode = callPackage ../applications/misc/eaglemode { };-- eclipses = recurseIntoAttrs (callPackage ../applications/editors/eclipse { });-- ed = callPackage ../applications/editors/ed { };-- ekho = callPackage ../applications/audio/ekho { };-- electrum = callPackage ../applications/misc/electrum { };-- elinks = callPackage ../applications/networking/browsers/elinks { };-- elvis = callPackage ../applications/editors/elvis { };-- emacs = emacs24;-- emacs24 = callPackage ../applications/editors/emacs-24 {- # use override to enable additional features- libXaw = xlibs.libXaw;- Xaw3d = null;- gconf = null;- librsvg = null;- alsaLib = null;- imagemagick = null;- };-- emacs24-nox = lowPrio (appendToName "nox" (emacs24.override {- withX = false;- }));-- emacs24Macport = lowPrio (callPackage ../applications/editors/emacs-24/macport.nix {- stdenv = pkgs.clangStdenv;- });-- emacsPackages = emacs: self: let callPackage = newScope self; in rec {- inherit emacs;-- autoComplete = callPackage ../applications/editors/emacs-modes/auto-complete { };-- bbdb = callPackage ../applications/editors/emacs-modes/bbdb { };-- bbdb3 = callPackage ../applications/editors/emacs-modes/bbdb/3.nix {};-- cedet = callPackage ../applications/editors/emacs-modes/cedet { };-- calfw = callPackage ../applications/editors/emacs-modes/calfw { };-- coffee = callPackage ../applications/editors/emacs-modes/coffee { };-- colorTheme = callPackage ../applications/editors/emacs-modes/color-theme { };-- colorThemeSolarized = callPackage ../applications/editors/emacs-modes/color-theme-solarized { };-- cryptol = callPackage ../applications/editors/emacs-modes/cryptol { };-- cua = callPackage ../applications/editors/emacs-modes/cua { };-- darcsum = callPackage ../applications/editors/emacs-modes/darcsum { };-- # ecb = callPackage ../applications/editors/emacs-modes/ecb { };-- jabber = callPackage ../applications/editors/emacs-modes/jabber { };-- emacsClangCompleteAsync = callPackage ../applications/editors/emacs-modes/emacs-clang-complete-async { };-- emacsSessionManagement = callPackage ../applications/editors/emacs-modes/session-management-for-emacs { };-- emacsw3m = callPackage ../applications/editors/emacs-modes/emacs-w3m { };-- emms = callPackage ../applications/editors/emacs-modes/emms { };-- ess = callPackage ../applications/editors/emacs-modes/ess { };-- flymakeCursor = callPackage ../applications/editors/emacs-modes/flymake-cursor { };-- gh = callPackage ../applications/editors/emacs-modes/gh { };-- graphvizDot = callPackage ../applications/editors/emacs-modes/graphviz-dot { };-- gist = callPackage ../applications/editors/emacs-modes/gist { };-- idris = callPackage ../applications/editors/emacs-modes/idris { };-- jade = callPackage ../applications/editors/emacs-modes/jade { };-- jdee = callPackage ../applications/editors/emacs-modes/jdee {- # Requires Emacs 23, for `avl-tree'.- };-- js2 = callPackage ../applications/editors/emacs-modes/js2 { };-- stratego = callPackage ../applications/editors/emacs-modes/stratego { };-- haskellMode = callPackage ../applications/editors/emacs-modes/haskell { };-- ocamlMode = callPackage ../applications/editors/emacs-modes/ocaml { };-- structuredHaskellMode = callPackage ../applications/editors/emacs-modes/structured-haskell-mode {- inherit (haskellPackages) cabal haskellSrcExts;- };-- tuaregMode = callPackage ../applications/editors/emacs-modes/tuareg { };-- hol_light_mode = callPackage ../applications/editors/emacs-modes/hol_light { };-- htmlize = callPackage ../applications/editors/emacs-modes/htmlize { };-- logito = callPackage ../applications/editors/emacs-modes/logito { };-- loremIpsum = callPackage ../applications/editors/emacs-modes/lorem-ipsum { };-- magit = callPackage ../applications/editors/emacs-modes/magit { };-- maudeMode = callPackage ../applications/editors/emacs-modes/maude { };-- metaweblog = callPackage ../applications/editors/emacs-modes/metaweblog { };-- notmuch = lowPrio (callPackage ../applications/networking/mailreaders/notmuch { });-- offlineimap = callPackage ../applications/editors/emacs-modes/offlineimap {};-- # This is usually a newer version of Org-Mode than that found in GNU Emacs, so- # we want it to have higher precedence.- org = hiPrio (callPackage ../applications/editors/emacs-modes/org { });-- org2blog = callPackage ../applications/editors/emacs-modes/org2blog { };-- pcache = callPackage ../applications/editors/emacs-modes/pcache { };-- phpMode = callPackage ../applications/editors/emacs-modes/php { };-- prologMode = callPackage ../applications/editors/emacs-modes/prolog { };-- proofgeneral_4_2 = callPackage ../applications/editors/emacs-modes/proofgeneral/4.2.nix {- texinfo = texinfo4 ;- texLive = pkgs.texLiveAggregationFun {- paths = [ pkgs.texLive pkgs.texLiveCMSuper ];- };- };- proofgeneral_4_3_pre = callPackage ../applications/editors/emacs-modes/proofgeneral/4.3pre.nix {- texinfo = texinfo4 ;- texLive = pkgs.texLiveAggregationFun {- paths = [ pkgs.texLive pkgs.texLiveCMSuper ];- };- };- proofgeneral = self.proofgeneral_4_2;-- quack = callPackage ../applications/editors/emacs-modes/quack { };-- rectMark = callPackage ../applications/editors/emacs-modes/rect-mark { };-- remember = callPackage ../applications/editors/emacs-modes/remember { };-- rudel = callPackage ../applications/editors/emacs-modes/rudel { };-- sbtMode = callPackage ../applications/editors/emacs-modes/sbt-mode { };-- scalaMode1 = callPackage ../applications/editors/emacs-modes/scala-mode/v1.nix { };- scalaMode2 = callPackage ../applications/editors/emacs-modes/scala-mode/v2.nix { };-- sunriseCommander = callPackage ../applications/editors/emacs-modes/sunrise-commander { };-- writeGood = callPackage ../applications/editors/emacs-modes/writegood { };-- xmlRpc = callPackage ../applications/editors/emacs-modes/xml-rpc { };- };-- emacs24Packages = recurseIntoAttrs (emacsPackages emacs24 pkgs.emacs24Packages);-- inherit (gnome3) empathy;-- epdfview = callPackage ../applications/misc/epdfview { };-- inherit (gnome3) epiphany;-- espeak = callPackage ../applications/audio/espeak { };-- espeakedit = callPackage ../applications/audio/espeak/edit.nix { };-- esniper = callPackage ../applications/networking/esniper { };-- etherape = callPackage ../applications/networking/sniffers/etherape {- inherit (gnome) gnomedocutils libgnome libglade libgnomeui scrollkeeper;- };-- evopedia = callPackage ../applications/misc/evopedia { };-- keepassx = callPackage ../applications/misc/keepassx { };- keepassx2 = callPackage ../applications/misc/keepassx/2.0.nix { };-- inherit (gnome3) evince;- evolution_data_server = gnome3.evolution_data_server;-- keepass = callPackage ../applications/misc/keepass { };-- exrdisplay = callPackage ../applications/graphics/exrdisplay {- fltk = fltk20;- };-- fbpanel = callPackage ../applications/window-managers/fbpanel { };-- fbreader = callPackage ../applications/misc/fbreader { };-- fetchmail = import ../applications/misc/fetchmail {- inherit stdenv fetchurl openssl;- };-- fldigi = callPackage ../applications/audio/fldigi { };-- fluidsynth = callPackage ../applications/audio/fluidsynth { };-- fossil = callPackage ../applications/version-management/fossil { };-- fribid = callPackage ../applications/networking/browsers/mozilla-plugins/fribid { };-- fvwm = callPackage ../applications/window-managers/fvwm { };-- geany = callPackage ../applications/editors/geany { };-- gksu = callPackage ../applications/misc/gksu { };-- gnuradio = callPackage ../applications/misc/gnuradio {- inherit (pythonPackages) lxml numpy scipy matplotlib pyopengl;- fftw = fftwFloat;- };-- gnuradio-osmosdr = callPackage ../applications/misc/gnuradio-osmosdr { };-- goldendict = callPackage ../applications/misc/goldendict { };-- google-musicmanager = callPackage ../applications/audio/google-musicmanager { };-- gpicview = callPackage ../applications/graphics/gpicview { };-- gqrx = callPackage ../applications/misc/gqrx { };-- grass = import ../applications/misc/grass {- inherit (xlibs) libXmu libXext libXp libX11 libXt libSM libICE libXpm- libXaw libXrender;- inherit config composableDerivation stdenv fetchurl- lib flex bison cairo fontconfig- gdal zlib ncurses gdbm proj pkgconfig swig- blas liblapack libjpeg libpng mysql unixODBC mesa postgresql python- readline sqlite tcl tk libtiff freetype makeWrapper wxGTK;- fftw = fftwSinglePrec;- ffmpeg = ffmpeg_0_10;- motif = lesstif;- opendwg = libdwg;- wxPython = wxPython28;- };-- grip = callPackage ../applications/misc/grip {- inherit (gnome) libgnome libgnomeui vte;- };-- gtimelog = pythonPackages.gtimelog;-- inherit (gnome3) gucharmap;-- guitarix = callPackage ../applications/audio/guitarix {- fftw = fftwSinglePrec;- };-- photivo = callPackage ../applications/graphics/photivo { };-- wavesurfer = callPackage ../applications/misc/audio/wavesurfer { };-- wireshark = callPackage ../applications/networking/sniffers/wireshark { };-- wvdial = callPackage ../os-specific/linux/wvdial { };-- fbida = callPackage ../applications/graphics/fbida { };-- fdupes = callPackage ../tools/misc/fdupes { };-- feh = callPackage ../applications/graphics/feh { };-- filezilla = callPackage ../applications/networking/ftp/filezilla { };-- firefox13Pkgs = callPackage ../applications/networking/browsers/firefox/13.0.nix {- inherit (gnome) libIDL;- };-- firefox13Wrapper = wrapFirefox { browser = firefox13Pkgs.firefox; };-- firefox30Pkgs = callPackage ../applications/networking/browsers/firefox/30.nix {- inherit (gnome) libIDL;- inherit (pythonPackages) pysqlite;- libpng = libpng_apng;- };-- firefox = callPackage ../applications/networking/browsers/firefox {- inherit (gnome) libIDL;- inherit (pythonPackages) pysqlite;- };-- firefoxWrapper = wrapFirefox { browser = pkgs.firefox; };-- firefox-bin = callPackage ../applications/networking/browsers/firefox-bin {- gconf = pkgs.gnome.GConf;- inherit (pkgs.gnome) libgnome libgnomeui;- inherit (pkgs.xlibs) libX11 libXScrnSaver libXext- libXinerama libXrender libXt;- };-- flac = callPackage ../applications/audio/flac { };-- flashplayer = callPackage ../applications/networking/browsers/mozilla-plugins/flashplayer-11 {- debug = config.flashplayer.debug or false;- };-- fluxbox = callPackage ../applications/window-managers/fluxbox { };-- freecad = callPackage ../applications/graphics/freecad {- opencascade = opencascade_6_5;- inherit (pythonPackages) matplotlib pycollada;- };-- freemind = callPackage ../applications/misc/freemind {- jdk = jdk;- jre = jdk;- };-- freenet = callPackage ../applications/networking/p2p/freenet { };-- freepv = callPackage ../applications/graphics/freepv { };-- xfontsel = callPackage ../applications/misc/xfontsel { };- xlsfonts = callPackage ../applications/misc/xlsfonts { };-- freerdp = callPackage ../applications/networking/remote/freerdp {- ffmpeg = ffmpeg_1;- };-- freerdpUnstable = callPackage ../applications/networking/remote/freerdp/unstable.nix { };-- freicoin = callPackage ../applications/misc/freicoin { };-- fspot = callPackage ../applications/graphics/f-spot {- inherit (gnome) libgnome libgnomeui;- gtksharp = gtksharp1;- };-- fuze = callPackage ../applications/networking/instant-messengers/fuze {};-- gcolor2 = callPackage ../applications/graphics/gcolor2 { };-- get_iplayer = callPackage ../applications/misc/get_iplayer {};-- gimp_2_8 = callPackage ../applications/graphics/gimp/2.8.nix {- inherit (gnome) libart_lgpl;- webkit = null;- lcms = lcms2;- wrapPython = pythonPackages.wrapPython;- };-- gimp = gimp_2_8;-- gimpPlugins = recurseIntoAttrs (import ../applications/graphics/gimp/plugins {- inherit pkgs gimp;- });-- gitAndTools = recurseIntoAttrs (import ../applications/version-management/git-and-tools {- inherit pkgs;- });- git = gitAndTools.git;- gitFull = gitAndTools.gitFull;- gitSVN = gitAndTools.gitSVN;-- gitRepo = callPackage ../applications/version-management/git-repo {- python = python27;- };-- gitolite = callPackage ../applications/version-management/gitolite { };-- inherit (gnome3) gitg;-- giv = callPackage ../applications/graphics/giv {- pcre = pcre.override { unicodeSupport = true; };- };-- gmrun = callPackage ../applications/misc/gmrun {};-- gnucash = callPackage ../applications/office/gnucash {- inherit (gnome2) libgnomeui libgtkhtml gtkhtml libbonoboui libgnomeprint libglade libart_lgpl;- gconf = gnome2.GConf;- guile = guile_1_8;- slibGuile = slibGuile.override { scheme = guile_1_8; };- goffice = goffice_0_8;- };-- goffice_0_8 = callPackage ../desktops/gnome-3/3.10/misc/goffice/0.8.nix {- inherit (gnome2) libglade libgnomeui;- gconf = gnome2.GConf;- libart = gnome2.libart_lgpl;- }; # latest version: gnome3.goffice-- ideas = recurseIntoAttrs ( (callPackage ../applications/editors/idea { })- // (callPackage ../applications/editors/idea/pycharm.nix { }));-- libquvi = callPackage ../applications/video/quvi/library.nix { };-- mi2ly = callPackage ../applications/audio/mi2ly {};-- praat = callPackage ../applications/audio/praat { };-- quvi = callPackage ../applications/video/quvi/tool.nix { };-- quvi_scripts = callPackage ../applications/video/quvi/scripts.nix { };-- qjackctl = callPackage ../applications/audio/qjackctl { };-- gkrellm = callPackage ../applications/misc/gkrellm { };-- gmu = callPackage ../applications/audio/gmu { };-- gnash = callPackage ../applications/video/gnash {- inherit (gnome) gtkglext;- };-- gnome_mplayer = callPackage ../applications/video/gnome-mplayer {- inherit (gnome) GConf;- };-- gnumeric = callPackage ../applications/office/gnumeric {- inherit (gnome3) goffice gnome_icon_theme;- };-- gnunet = callPackage ../applications/networking/p2p/gnunet {- libgcrypt = libgcrypt_1_6;- };-- gnunet_svn = lowPrio (callPackage ../applications/networking/p2p/gnunet/svn.nix {- libgcrypt = libgcrypt_1_6;- });-- gocr = callPackage ../applications/graphics/gocr { };-- gobby5 = callPackage ../applications/editors/gobby {- inherit (gnome) gtksourceview;- };-- gphoto2 = callPackage ../applications/misc/gphoto2 { };-- gphoto2fs = builderDefsPackage ../applications/misc/gphoto2/gphotofs.nix {- inherit libgphoto2 fuse pkgconfig glib libtool;- };-- graphicsmagick = callPackage ../applications/graphics/graphicsmagick { };- graphicsmagick_q16 = callPackage ../applications/graphics/graphicsmagick { quantumdepth = 16; };-- graphicsmagick137 = callPackage ../applications/graphics/graphicsmagick/1.3.7.nix {- libpng = libpng12;- };-- gtkpod = callPackage ../applications/audio/gtkpod {- inherit (gnome) libglade;- };-- jbidwatcher = callPackage ../applications/misc/jbidwatcher {- java = if stdenv.isLinux then jre else jdk;- };-- qrdecode = builderDefsPackage (import ../tools/graphics/qrdecode) {- libpng = libpng12;- opencv = opencv_2_1;- };-- qrencode = callPackage ../tools/graphics/qrencode { };-- gecko_mediaplayer = callPackage ../applications/networking/browsers/mozilla-plugins/gecko-mediaplayer {- inherit (gnome) GConf;- browser = firefox;- };-- geeqie = callPackage ../applications/graphics/geeqie { };-- gigedit = callPackage ../applications/audio/gigedit { };-- gqview = callPackage ../applications/graphics/gqview { };-- gmpc = callPackage ../applications/audio/gmpc { };-- gmtk = callPackage ../applications/networking/browsers/mozilla-plugins/gmtk {- inherit (gnome) GConf;- };-- googleearth = callPackage_i686 ../applications/misc/googleearth { };-- google_talk_plugin = callPackage ../applications/networking/browsers/mozilla-plugins/google-talk-plugin {- libpng = libpng12;- };-- gosmore = builderDefsPackage ../applications/misc/gosmore {- inherit fetchsvn curl pkgconfig libxml2 gtk;- };-- gpsbabel = callPackage ../applications/misc/gpsbabel { };-- gpscorrelate = callPackage ../applications/misc/gpscorrelate { };-- gpsd = callPackage ../servers/gpsd { };-- guitone = callPackage ../applications/version-management/guitone { };-- gv = callPackage ../applications/misc/gv { };-- guvcview = callPackage ../os-specific/linux/guvcview { };-- hello = callPackage ../applications/misc/hello/ex-2 { };-- herbstluftwm = callPackage ../applications/window-managers/herbstluftwm { };-- hexchat = callPackage ../applications/networking/irc/hexchat { };-- hexedit = callPackage ../applications/editors/hexedit { };-- hipchat = callPackage ../applications/networking/instant-messengers/hipchat { };-- homebank = callPackage ../applications/office/homebank { };-- htmldoc = callPackage ../applications/misc/htmldoc {- fltk = fltk13;- };-- hugin = callPackage ../applications/graphics/hugin { };-- hydrogen = callPackage ../applications/audio/hydrogen { };-- i3 = callPackage ../applications/window-managers/i3 { };-- i3lock = callPackage ../applications/window-managers/i3/lock.nix {- inherit (xorg) libxkbfile;- cairo = cairo.override { xcbSupport = true; };- };-- i3minator = callPackage ../tools/misc/i3minator { };-- i3status = callPackage ../applications/window-managers/i3/status.nix { };-- i810switch = callPackage ../os-specific/linux/i810switch { };-- icewm = callPackage ../applications/window-managers/icewm { };-- id3v2 = callPackage ../applications/audio/id3v2 { };-- ifenslave = callPackage ../os-specific/linux/ifenslave { };-- ii = callPackage ../applications/networking/irc/ii { };-- ike = callPackage ../applications/ike { };-- ikiwiki = callPackage ../applications/misc/ikiwiki {- inherit (perlPackages) TextMarkdown URI HTMLParser HTMLScrubber- HTMLTemplate TimeDate CGISession DBFile CGIFormBuilder LocaleGettext- RpcXML XMLSimple PerlMagick YAML YAMLLibYAML HTMLTree Filechdir- AuthenPassphrase NetOpenIDConsumer LWPxParanoidAgent CryptSSLeay;- };-- imagemagick = callPackage ../applications/graphics/ImageMagick {- tetex = null;- librsvg = null;- };-- imagemagickBig = lowPrio (callPackage ../applications/graphics/ImageMagick { });-- # Impressive, formerly known as "KeyJNote".- impressive = callPackage ../applications/office/impressive {- # XXX These are the PyOpenGL dependencies, which we need here.- inherit (pythonPackages) pyopengl;- };-- inferno = callPackage_i686 ../applications/inferno { };-- inkscape = callPackage ../applications/graphics/inkscape {- inherit (pythonPackages) lxml;- lcms = lcms2;- };-- ion3 = callPackage ../applications/window-managers/ion-3 {- lua = lua5;- };-- ipe = callPackage ../applications/graphics/ipe { };-- iptraf = callPackage ../applications/networking/iptraf { };-- irssi = callPackage ../applications/networking/irc/irssi {- # compile with gccApple on darwin to support the -no-cpp-precompile flag- stdenv = if stdenv.isDarwin- then stdenvAdapters.overrideGCC stdenv gccApple- else stdenv;- };-- irssi_fish = callPackage ../applications/networking/irc/irssi/fish { };-- irssi_otr = callPackage ../applications/networking/irc/irssi/otr { };-- bip = callPackage ../applications/networking/irc/bip { };-- jack_capture = callPackage ../applications/audio/jack-capture { };-- jack_oscrolloscope = callPackage ../applications/audio/jack-oscrolloscope { };-- jack_rack = callPackage ../applications/audio/jack-rack { };-- jackmeter = callPackage ../applications/audio/jackmeter { };-- jalv = callPackage ../applications/audio/jalv { };-- jedit = callPackage ../applications/editors/jedit { };-- jigdo = callPackage ../applications/misc/jigdo { };-- jitsi = callPackage ../applications/networking/instant-messengers/jitsi { };-- joe = callPackage ../applications/editors/joe { };-- jbrout = callPackage ../applications/graphics/jbrout {- inherit (pythonPackages) lxml;- };-- jwm = callPackage ../applications/window-managers/jwm { };-- k3d = callPackage ../applications/graphics/k3d {- inherit (pkgs.gnome2) gtkglext;- };-- keepnote = callPackage ../applications/office/keepnote {- pygtk = pyGtkGlade;- };-- kermit = callPackage ../tools/misc/kermit { };-- keymon = callPackage ../applications/video/key-mon { };-- kino = callPackage ../applications/video/kino {- inherit (gnome) libglade;- };-- lame = callPackage ../applications/audio/lame { };-- larswm = callPackage ../applications/window-managers/larswm { };-- lash = callPackage ../applications/audio/lash { };-- ladspaH = callPackage ../applications/audio/ladspa-plugins/ladspah.nix { };-- ladspaPlugins = callPackage ../applications/audio/ladspa-plugins {- fftw = fftwSinglePrec;- };-- caps = callPackage ../applications/audio/caps { };-- lastwatch = callPackage ../applications/audio/lastwatch { };-- lastfmsubmitd = callPackage ../applications/audio/lastfmsubmitd { };-- lbdb = callPackage ../tools/misc/lbdb { };-- lci = callPackage ../applications/science/logic/lci {};-- ldcpp = callPackage ../applications/networking/p2p/ldcpp {- inherit (gnome) libglade;- };-- librecad = callPackage ../applications/misc/librecad { };-- librecad2 = callPackage ../applications/misc/librecad/2.0.nix { };-- libreoffice = callPackage ../applications/office/libreoffice {- inherit (perlPackages) ArchiveZip CompressZlib;- inherit (gnome) GConf ORBit2 gnome_vfs;- zip = zip.override { enableNLS = false; };- boost = boost155;- jdk = openjdk;- fontsConf = makeFontsConf {- fontDirectories = [- freefont_ttf xorg.fontmiscmisc xorg.fontbhttf- ];- };- clucene_core = clucene_core_2;- lcms = lcms2;- harfbuzz = harfbuzz.override {- withIcu = true; withGraphite2 = true;- };- };-- liferea = callPackage ../applications/networking/newsreaders/liferea { };-- lingot = callPackage ../applications/audio/lingot {- inherit (gnome) libglade;- };-- links = callPackage ../applications/networking/browsers/links { };-- ledger = callPackage ../applications/office/ledger/2.6.3.nix { };- ledger3 = callPackage ../applications/office/ledger/3.0.nix { };-- lighttable = callPackage ../applications/editors/lighttable {};-- links2 = callPackage ../applications/networking/browsers/links2 { };-- linphone = callPackage ../applications/networking/instant-messengers/linphone rec {- inherit (gnome) libglade;- libexosip = libexosip_3;- libosip = libosip_3;- };-- linuxsampler = callPackage ../applications/audio/linuxsampler {- bison = bison2;- };-- llpp = callPackage ../applications/misc/llpp { inherit (ocamlPackages) lablgl; };-- lmms = callPackage ../applications/audio/lmms { };-- lrzsz = callPackage ../tools/misc/lrzsz { };-- luminanceHDR = callPackage ../applications/graphics/luminance-hdr { };-- lxdvdrip = callPackage ../applications/video/lxdvdrip { };-- handbrake = callPackage ../applications/video/handbrake { };-- lynx = callPackage ../applications/networking/browsers/lynx { };-- lyx = callPackage ../applications/misc/lyx { };-- makeself = callPackage ../applications/misc/makeself { };-- matchbox = callPackage ../applications/window-managers/matchbox { };-- mcpp = callPackage ../development/compilers/mcpp { };-- mda_lv2 = callPackage ../applications/audio/mda-lv2 { };-- meld = callPackage ../applications/version-management/meld {- inherit (gnome) scrollkeeper;- pygtk = pyGtkGlade;- };-- mcomix = callPackage ../applications/graphics/mcomix { };-- mercurial = callPackage ../applications/version-management/mercurial {- inherit (pythonPackages) curses docutils;- guiSupport = false; # use mercurialFull to get hgk GUI- };-- mercurialFull = appendToName "full" (pkgs.mercurial.override { guiSupport = true; });-- merkaartor = callPackage ../applications/misc/merkaartor { };-- meshlab = callPackage ../applications/graphics/meshlab { };-- mhwaveedit = callPackage ../applications/audio/mhwaveedit {};-- mid2key = callPackage ../applications/audio/mid2key { };-- midori = callPackage ../applications/networking/browsers/midori { };-- midoriWrapper = wrapFirefox- { browser = midori; browserName = "midori"; desktopName = "Midori";- icon = "${midori}/share/icons/hicolor/22x22/apps/midori.png";- };-- mikmod = callPackage ../applications/audio/mikmod { };-- minicom = callPackage ../tools/misc/minicom { };-- minimodem = callPackage ../applications/audio/minimodem { };-- minidjvu = callPackage ../applications/graphics/minidjvu { };-- mirage = callPackage ../applications/graphics/mirage {};-- mixxx = callPackage ../applications/audio/mixxx {- inherit (vamp) vampSDK;- };-- mmex = callPackage ../applications/office/mmex { };-- moc = callPackage ../applications/audio/moc { };-- monkeysAudio = callPackage ../applications/audio/monkeys-audio { };-- monodevelop = callPackage ../applications/editors/monodevelop {- inherit (gnome) gnome_vfs libbonobo libglade libgnome GConf;- mozilla = firefox;- gtksharp = gtksharp2;- };-- monodoc = callPackage ../applications/editors/monodoc {- gtksharp = gtksharp1;- };-- monotone = callPackage ../applications/version-management/monotone {- lua = lua5;- boost = boost149;- };-- monotoneViz = builderDefsPackage (import ../applications/version-management/monotone-viz/mtn-head.nix) {- inherit ocaml graphviz pkgconfig autoconf automake libtool glib gtk;- inherit (ocamlPackages) lablgtk;- inherit (gnome) libgnomecanvas;- };-- mopidy = callPackage ../applications/audio/mopidy { };-- mopidy-spotify = callPackage ../applications/audio/mopidy-spotify { };-- mopidy-moped = callPackage ../applications/audio/mopidy-moped { };-- mozilla = callPackage ../applications/networking/browsers/mozilla {- inherit (gnome) libIDL;- };-- mozplugger = builderDefsPackage (import ../applications/networking/browsers/mozilla-plugins/mozplugger) {- inherit firefox;- inherit (xlibs) libX11 xproto;- };-- easytag = callPackage ../applications/audio/easytag { };-- mp3info = callPackage ../applications/audio/mp3info { };-- mp3splt = callPackage ../applications/audio/mp3splt { };-- mpc123 = callPackage ../applications/audio/mpc123 { };-- mpg123 = callPackage ../applications/audio/mpg123 { };-- mpg321 = callPackage ../applications/audio/mpg321 { };-- mpc_cli = callPackage ../applications/audio/mpc { };-- ncmpc = callPackage ../applications/audio/ncmpc { };-- ncmpcpp = callPackage ../applications/audio/ncmpcpp { };-- normalize = callPackage ../applications/audio/normalize { };-- mplayer = callPackage ../applications/video/mplayer {- pulseSupport = config.pulseaudio or false;- vdpauSupport = config.mplayer.vdpauSupport or false;- };-- mplayer2 = callPackage ../applications/video/mplayer2 {- ffmpeg = libav_9; # see https://trac.macports.org/ticket/44386- };-- MPlayerPlugin = browser:- import ../applications/networking/browsers/mozilla-plugins/mplayerplug-in {- inherit browser;- inherit fetchurl stdenv pkgconfig gettext;- inherit (xlibs) libXpm;- # !!! should depend on MPlayer- };-- mpv = callPackage ../applications/video/mpv {- lua = lua5_1;- bs2bSupport = true;- quviSupport = true;- cacaSupport = true;- };-- mrxvt = callPackage ../applications/misc/mrxvt { };-- multisync = callPackage ../applications/misc/multisync {- inherit (gnome) ORBit2 libbonobo libgnomeui GConf;- };-- mumble = callPackage ../applications/networking/mumble {- avahi = avahi.override {- withLibdnssdCompat = true;- };- jackSupport = config.mumble.jackSupport or false;- speechdSupport = config.mumble.speechdSupport or false;- };-- murmur = callPackage ../applications/networking/mumble/murmur.nix {- avahi = avahi.override {- withLibdnssdCompat = true;- };- iceSupport = config.murmur.iceSupport or true;- };-- mutt = callPackage ../applications/networking/mailreaders/mutt { };-- pcmanfm = callPackage ../applications/misc/pcmanfm { };-- ruby_gpgme = callPackage ../development/libraries/ruby_gpgme {- ruby = ruby19;- hoe = rubyLibs.hoe;- };-- ruby_ncursesw_sup = callPackage ../development/libraries/ruby_ncursesw_sup { };-- shotcut = callPackage ../applications/video/shotcut { mlt = mlt-qt5; };-- smplayer = callPackage ../applications/video/smplayer { };-- sup = with rubyLibs; callPackage ../applications/networking/mailreaders/sup {- ruby = ruby19.override {- cursesSupport = true;- };-- inherit gettext highline iconv locale lockfile- text trollop xapian_ruby which;-- rmail_sup = ""; # missing- unicode = "";-- # See https://github.com/NixOS/nixpkgs/issues/1804 and- # https://github.com/NixOS/nixpkgs/issues/2146- bundler = pkgs.lib.overrideDerivation pkgs.rubyLibs.bundler (- oldAttrs: {- dontPatchShebangs = 1;- }- );- chronic = chronic;- gpgme = ruby_gpgme;- mime_types = mime_types;- ncursesw_sup = ruby_ncursesw_sup;- rake = rake;- };-- synfigstudio = callPackage ../applications/graphics/synfigstudio {- fontsConf = makeFontsConf { fontDirectories = [ freefont_ttf ]; };- };-- sxhkd = callPackage ../applications/window-managers/sxhkd { };-- msmtp = callPackage ../applications/networking/msmtp { };-- imapfilter = callPackage ../applications/networking/mailreaders/imapfilter.nix {- lua = lua5;- };-- mupdf = callPackage ../applications/misc/mupdf { };-- mypaint = callPackage ../applications/graphics/mypaint { };-- mythtv = callPackage ../applications/video/mythtv { };-- tvtime = callPackage ../applications/video/tvtime {- kernel = linux;- };-- nano = callPackage ../applications/editors/nano { };-- navipowm = callPackage ../applications/misc/navipowm { };-- navit = callPackage ../applications/misc/navit { };-- netbeans = callPackage ../applications/editors/netbeans { };-- ncdu = callPackage ../tools/misc/ncdu { };-- ncdc = callPackage ../applications/networking/p2p/ncdc { };-- nedit = callPackage ../applications/editors/nedit {- motif = lesstif;- };-- netsurfBrowser = netsurf.browser;- netsurf = recurseIntoAttrs (import ../applications/networking/browsers/netsurf { inherit pkgs; });-- notmuch = callPackage ../applications/networking/mailreaders/notmuch {- # use emacsPackages.notmuch if you want emacs support- emacs = null;- };-- nova = callPackage ../applications/virtualization/nova { };-- novaclient = callPackage ../applications/virtualization/nova/client.nix { };-- nspluginwrapper = callPackage ../applications/networking/browsers/mozilla-plugins/nspluginwrapper {};-- nvi = callPackage ../applications/editors/nvi { };-- nvpy = callPackage ../applications/editors/nvpy { };-- obconf = callPackage ../tools/X11/obconf {- inherit (gnome) libglade;- };-- ocrad = callPackage ../applications/graphics/ocrad { };-- offrss = callPackage ../applications/networking/offrss { };-- ogmtools = callPackage ../applications/video/ogmtools { };-- omxplayer = callPackage ../applications/video/omxplayer { };-- oneteam = callPackage ../applications/networking/instant-messengers/oneteam {};-- openbox = callPackage ../applications/window-managers/openbox { };-- openimageio = callPackage ../applications/graphics/openimageio { };-- openjump = callPackage ../applications/misc/openjump { };-- openscad = callPackage ../applications/graphics/openscad {};-- opera = callPackage ../applications/networking/browsers/opera {- inherit (pkgs.kde4) kdelibs;- };-- opusfile = callPackage ../applications/audio/opusfile { };-- opusTools = callPackage ../applications/audio/opus-tools { };-- pamixer = callPackage ../applications/audio/pamixer { };-- pan = callPackage ../applications/networking/newsreaders/pan {- spellChecking = false;- };-- panotools = callPackage ../applications/graphics/panotools { };-- pavucontrol = callPackage ../applications/audio/pavucontrol { };-- paraview = callPackage ../applications/graphics/paraview { };-- pencil = callPackage ../applications/graphics/pencil { };-- petrifoo = callPackage ../applications/audio/petrifoo {- inherit (gnome) libgnomecanvas;- };-- pdftk = callPackage ../tools/typesetting/pdftk { };- pdfgrep = callPackage ../tools/typesetting/pdfgrep { };-- pianobar = callPackage ../applications/audio/pianobar { };-- pianobooster = callPackage ../applications/audio/pianobooster { };-- picard = callPackage ../applications/audio/picard { };-- picocom = callPackage ../tools/misc/picocom { };-- pidgin = callPackage ../applications/networking/instant-messengers/pidgin {- openssl = if config.pidgin.openssl or true then openssl else null;- gnutls = if config.pidgin.gnutls or false then gnutls else null;- libgcrypt = if config.pidgin.gnutls or false then libgcrypt else null;- startupnotification = libstartup_notification;- };-- pidginlatex = callPackage ../applications/networking/instant-messengers/pidgin-plugins/pidgin-latex {- imagemagick = imagemagickBig;- };-- pidginlatexSF = builderDefsPackage- (import ../applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/pidgin-latex-sf.nix)- {- inherit pkgconfig pidgin texLive imagemagick which glib gtk;- };-- pidginmsnpecan = callPackage ../applications/networking/instant-messengers/pidgin-plugins/msn-pecan { };-- pidginotr = callPackage ../applications/networking/instant-messengers/pidgin-plugins/otr { };-- pidginsipe = callPackage ../applications/networking/instant-messengers/pidgin-plugins/sipe { };-- toxprpl = callPackage ../applications/networking/instant-messengers/pidgin-plugins/tox-prpl { };-- pinfo = callPackage ../applications/misc/pinfo { };-- pinta = callPackage ../applications/graphics/pinta {- gtksharp = gtksharp2;- };-- pommed = callPackage ../os-specific/linux/pommed {- inherit (xorg) libXpm;- };-- potrace = callPackage ../applications/graphics/potrace {};-- posterazor = callPackage ../applications/misc/posterazor { };-- pqiv = callPackage ../applications/graphics/pqiv { };-- qiv = callPackage ../applications/graphics/qiv { };-- # perhaps there are better apps for this task? It's how I had configured my preivous system.- # And I don't want to rewrite all rules- procmail = callPackage ../applications/misc/procmail { };-- pstree = callPackage ../applications/misc/pstree { };-- pulseview = callPackage ../applications/science/electronics/pulseview { };-- puredata = callPackage ../applications/audio/puredata { };-- pythonmagick = callPackage ../applications/graphics/PythonMagick { };-- qbittorrent = callPackage ../applications/networking/p2p/qbittorrent { };-- eiskaltdcpp = callPackage ../applications/networking/p2p/eiskaltdcpp { };-- qemu = callPackage ../applications/virtualization/qemu { };-- qmmp = callPackage ../applications/audio/qmmp { };-- qsampler = callPackage ../applications/audio/qsampler { };-- qsynth = callPackage ../applications/audio/qsynth { };-- qtpfsgui = callPackage ../applications/graphics/qtpfsgui { };-- qtractor = callPackage ../applications/audio/qtractor { };-- quodlibet = callPackage ../applications/audio/quodlibet {- inherit (pythonPackages) mutagen;- };-- quodlibet-with-gst-plugins = callPackage ../applications/audio/quodlibet {- inherit (pythonPackages) mutagen;- withGstPlugins = true;- gst_plugins_bad = null;- };-- rakarrack = callPackage ../applications/audio/rakarrack {- inherit (xorg) libXpm libXft;- fltk = fltk13;- };-- rapcad = callPackage ../applications/graphics/rapcad {};-- rapidsvn = callPackage ../applications/version-management/rapidsvn { };-- ratpoison = callPackage ../applications/window-managers/ratpoison { };-- rawtherapee = callPackage ../applications/graphics/rawtherapee {- fftw = fftwSinglePrec;- };-- rcs = callPackage ../applications/version-management/rcs { };-- rdesktop = callPackage ../applications/networking/remote/rdesktop { };-- recode = callPackage ../tools/text/recode { };-- retroshare = callPackage ../applications/networking/p2p/retroshare {- qt = qt4;- };-- retroshare06 = lowPrio (callPackage ../applications/networking/p2p/retroshare/0.6.nix {- qt = qt4;- });-- rsync = callPackage ../applications/networking/sync/rsync {- enableACLs = !(stdenv.isDarwin || stdenv.isSunOS || stdenv.isFreeBSD);- enableCopyDevicesPatch = (config.rsync.enableCopyDevicesPatch or false);- };-- rtl-sdr = callPackage ../applications/misc/rtl-sdr { };-- rubyripper = callPackage ../applications/audio/rubyripper {};-- rxvt = callPackage ../applications/misc/rxvt { };-- # = urxvt- rxvt_unicode = callPackage ../applications/misc/rxvt_unicode {- perlSupport = true;- gdkPixbufSupport = true;- unicode3Support = true;- };-- sakura = callPackage ../applications/misc/sakura {- inherit (gnome) vte;- };-- sbagen = callPackage ../applications/misc/sbagen { };-- scite = callPackage ../applications/editors/scite { };-- scribus = callPackage ../applications/office/scribus {- inherit (gnome) libart_lgpl;- };-- seafile-client = callPackage ../applications/networking/seafile-client { };-- seeks = callPackage ../tools/networking/p2p/seeks {- opencv = opencv_2_1;- };-- seg3d = callPackage ../applications/graphics/seg3d {- wxGTK = wxGTK28.override { unicode = false; };- };-- seq24 = callPackage ../applications/audio/seq24 { };-- setbfree = callPackage ../applications/audio/setbfree { };-- sflphone = callPackage ../applications/networking/instant-messengers/sflphone {- gtk = gtk3;- };-- siproxd = callPackage ../applications/networking/siproxd { };-- skype = callPackage_i686 ../applications/networking/instant-messengers/skype { };-- skype4pidgin = callPackage ../applications/networking/instant-messengers/pidgin-plugins/skype4pidgin { };-- skype_call_recorder = callPackage ../applications/networking/instant-messengers/skype-call-recorder { };-- slrn = callPackage ../applications/networking/newsreaders/slrn { };-- spideroak = callPackage ../applications/networking/spideroak { };-- ssvnc = callPackage ../applications/networking/remote/ssvnc { };-- st = callPackage ../applications/misc/st {- conf = config.st.conf or null;- };-- linuxstopmotion = callPackage ../applications/video/linuxstopmotion { };-- sweethome3d = recurseIntoAttrs ( (callPackage ../applications/misc/sweethome3d { })- // (callPackage ../applications/misc/sweethome3d/editors.nix {- sweethome3dApp = sweethome3d.application;- })- );-- sxiv = callPackage ../applications/graphics/sxiv { };-- bittorrentSync = callPackage ../applications/networking/bittorrentsync { };-- dropbox = callPackage ../applications/networking/dropbox { };-- dropbox-cli = callPackage ../applications/networking/dropbox-cli { };-- lightdm = callPackage ../applications/display-managers/lightdm { };-- lightdm_gtk_greeter = callPackage ../applications/display-managers/lightdm-gtk-greeter { };-- # slic3r 0.9.10b says: "Running Slic3r under Perl >= 5.16 is not supported nor recommended"- slic3r = callPackage ../applications/misc/slic3r {- perlPackages = perl514Packages;- perl = perl514;- };-- curaengine = callPackage ../applications/misc/curaengine { };-- cura = callPackage ../applications/misc/cura { };-- printrun = callPackage ../applications/misc/printrun { };-- slim = callPackage ../applications/display-managers/slim {- libpng = libpng12;- };-- smartdeblur = callPackage ../applications/graphics/smartdeblur { };-- snd = callPackage ../applications/audio/snd { };-- shntool = callPackage ../applications/audio/shntool { };-- sonic_visualiser = callPackage ../applications/audio/sonic-visualiser {- inherit (pkgs.vamp) vampSDK;- inherit (pkgs.xlibs) libX11;- fftw = pkgs.fftwSinglePrec;- };-- sox = callPackage ../applications/misc/audio/sox { };-- soxr = callPackage ../applications/misc/audio/soxr { };-- spotify = callPackage ../applications/audio/spotify {- inherit (gnome) GConf;- libpng = libpng12;- };-- libspotify = callPackage ../development/libraries/libspotify {- apiKey = config.libspotify.apiKey or null;- };-- stalonetray = callPackage ../applications/window-managers/stalonetray {};-- stp = callPackage ../applications/science/logic/stp {};-- stumpwm = lispPackages.stumpwm;-- sublime = callPackage ../applications/editors/sublime { };-- sublime3 = lowPrio (callPackage ../applications/editors/sublime3 { });-- subversion = callPackage ../applications/version-management/subversion/default.nix {- bdbSupport = true;- httpServer = false;- httpSupport = true;- pythonBindings = false;- perlBindings = false;- javahlBindings = false;- saslSupport = false;- httpd = apacheHttpd;- sasl = cyrus_sasl;- };-- subversionClient = appendToName "client" (subversion.override {- bdbSupport = false;- perlBindings = true;- pythonBindings = true;- });-- surf = callPackage ../applications/misc/surf {- webkit = webkitgtk2;- };-- svk = perlPackages.SVK;-- swh_lv2 = callPackage ../applications/audio/swh-lv2 { };-- sylpheed = callPackage ../applications/networking/mailreaders/sylpheed {- sslSupport = true;- gpgSupport = true;- };-- symlinks = callPackage ../tools/system/symlinks { };-- syncthing = callPackage ../applications/networking/syncthing { };-- # linux only by now- synergy = callPackage ../applications/misc/synergy { };-- tabbed = callPackage ../applications/window-managers/tabbed { };-- tahoelafs = callPackage ../tools/networking/p2p/tahoe-lafs {- inherit (pythonPackages) twisted foolscap simplejson nevow zfec- pycryptopp sqlite3 darcsver setuptoolsTrial setuptoolsDarcs- numpy pyasn1 mock;- };-- tailor = builderDefsPackage (import ../applications/version-management/tailor) {- inherit makeWrapper python;- };-- tangogps = callPackage ../applications/misc/tangogps {- gconf = gnome.GConf;- };-- teamspeak_client = callPackage ../applications/networking/instant-messengers/teamspeak/client.nix { };- teamspeak_server = callPackage ../applications/networking/instant-messengers/teamspeak/server.nix { };-- taskjuggler = callPackage ../applications/misc/taskjuggler { };-- taskwarrior = callPackage ../applications/misc/taskwarrior { };-- taskserver = callPackage ../servers/misc/taskserver { };-- telegram-cli = callPackage ../applications/networking/instant-messengers/telegram-cli/default.nix { };-- telepathy_gabble = callPackage ../applications/networking/instant-messengers/telepathy/gabble { };-- telepathy_haze = callPackage ../applications/networking/instant-messengers/telepathy/haze {};-- telepathy_logger = callPackage ../applications/networking/instant-messengers/telepathy/logger {};-- telepathy_mission_control = callPackage ../applications/networking/instant-messengers/telepathy/mission-control { };-- telepathy_rakia = callPackage ../applications/networking/instant-messengers/telepathy/rakia { };-- telepathy_salut = callPackage ../applications/networking/instant-messengers/telepathy/salut {};-- terminator = callPackage ../applications/misc/terminator {- vte = gnome.vte.override { pythonSupport = true; };- inherit (pythonPackages) notify;- };-- tesseract = callPackage ../applications/graphics/tesseract { };-- thinkingRock = callPackage ../applications/misc/thinking-rock { };-- thunderbird = callPackage ../applications/networking/mailreaders/thunderbird {- inherit (gnome) libIDL;- inherit (pythonPackages) pysqlite;- libpng = libpng_apng;- };-- thunderbird-bin = callPackage ../applications/networking/mailreaders/thunderbird-bin {- gconf = pkgs.gnome.GConf;- inherit (pkgs.gnome) libgnome libgnomeui;- inherit (pkgs.xlibs) libX11 libXScrnSaver libXext- libXinerama libXrender libXt;- };-- tig = gitAndTools.tig;-- timidity = callPackage ../tools/misc/timidity { };-- tint2 = callPackage ../applications/misc/tint2 { };-- tkcvs = callPackage ../applications/version-management/tkcvs { };-- tla = callPackage ../applications/version-management/arch { };-- todo-txt-cli = callPackage ../applications/office/todo.txt-cli { };-- torchat = callPackage ../applications/networking/instant-messengers/torchat {- wrapPython = pythonPackages.wrapPython;- };-- toxic = callPackage ../applications/networking/instant-messengers/toxic { };-- transcode = callPackage ../applications/audio/transcode { };-- transmission = callPackage ../applications/networking/p2p/transmission { };- transmission_gtk = transmission.override { enableGTK3 = true; };-- transmission_remote_gtk = callPackage ../applications/networking/p2p/transmission-remote-gtk {};-- trayer = callPackage ../applications/window-managers/trayer { };-- tree = callPackage ../tools/system/tree {};-- tribler = callPackage ../applications/networking/p2p/tribler { };-- twister = callPackage ../applications/networking/p2p/twister { };-- twmn = callPackage ../applications/misc/twmn { };-- twinkle = callPackage ../applications/networking/instant-messengers/twinkle { };-- umurmur = callPackage ../applications/networking/umurmur { };-- unison = callPackage ../applications/networking/sync/unison {- inherit (ocamlPackages) lablgtk;- enableX11 = config.unison.enableX11 or true;- };-- uucp = callPackage ../tools/misc/uucp { };-- uvccapture = callPackage ../applications/video/uvccapture { };-- uwimap = callPackage ../tools/networking/uwimap { };-- uzbl = callPackage ../applications/networking/browsers/uzbl {- webkit = webkitgtk2;- };-- uTox = callPackage ../applications/networking/instant-messengers/utox { };-- vanitygen = callPackage ../applications/misc/vanitygen { };-- vbindiff = callPackage ../applications/editors/vbindiff { };-- vcprompt = callPackage ../applications/version-management/vcprompt { };-- vdpauinfo = callPackage ../tools/X11/vdpauinfo { };-- veracity = callPackage ../applications/version-management/veracity {};-- viewMtn = builderDefsPackage (import ../applications/version-management/viewmtn/0.10.nix)- {- inherit monotone cheetahTemplate highlight ctags- makeWrapper graphviz which python;- flup = pythonPackages.flup;- };-- vim = callPackage ../applications/editors/vim { };-- macvim = callPackage ../applications/editors/vim/macvim.nix { };-- vimHugeX = vim_configurable;-- vim_configurable = callPackage ../applications/editors/vim/configurable.nix {- inherit (pkgs) fetchurl fetchhg stdenv ncurses pkgconfig gettext- composableDerivation lib config glib gtk python perl tcl ruby;- inherit (pkgs.xlibs) libX11 libXext libSM libXpm libXt libXaw libXau libXmu- libICE;-- features = "huge"; # one of tiny, small, normal, big or huge- lua = pkgs.lua5;- gui = config.vim.gui or "auto";-- # optional features by flags- flags = [ "python" "X11" ]; # only flag "X11" by now-- # so that we can use gccApple if we're building on darwin- inherit stdenvAdapters gccApple;- };-- vimNox = lowPrio (vim_configurable.override { source = "vim-nox"; });-- qvim = lowPrio (callPackage ../applications/editors/vim/qvim.nix {- inherit (pkgs) fetchgit stdenv ncurses pkgconfig gettext- composableDerivation lib config python perl tcl ruby qt4;- inherit (pkgs.xlibs) libX11 libXext libSM libXpm libXt libXaw libXau libXmu- libICE;-- inherit (pkgs) stdenvAdapters gccApple;-- features = "huge"; # one of tiny, small, normal, big or huge- lua = pkgs.lua5;- flags = [ "python" "X11" ]; # only flag "X11" by now- });-- vimpc = callPackage ../applications/audio/vimpc { };-- virtviewer = callPackage ../applications/virtualization/virt-viewer {- gtkvnc = gtkvnc.override { enableGTK3 = true; };- spice_gtk = spice_gtk.override { enableGTK3 = true; };- };- virtmanager = callPackage ../applications/virtualization/virt-manager {- inherit (gnome) gnome_python;- vte = gnome3.vte;- dconf = gnome3.dconf;- gtkvnc = gtkvnc.override { enableGTK3 = true; };- spice_gtk = spice_gtk.override { enableGTK3 = true; };- };-- virtinst = callPackage ../applications/virtualization/virtinst {};-- virtualgl = callPackage ../tools/X11/virtualgl { };-- bumblebee = callPackage ../tools/X11/bumblebee { };-- vkeybd = callPackage ../applications/audio/vkeybd {- inherit (xlibs) libX11;- };-- vlc = callPackage ../applications/video/vlc { };-- vmpk = callPackage ../applications/audio/vmpk { };-- vnstat = callPackage ../applications/networking/vnstat { };-- vorbisTools = callPackage ../applications/audio/vorbis-tools { };-- vue = callPackage ../applications/misc/vue {- jre = icedtea7_jre;- };-- vwm = callPackage ../applications/window-managers/vwm { };-- vym = callPackage ../applications/misc/vym { };-- w3m = callPackage ../applications/networking/browsers/w3m {- graphicsSupport = false;- };-- weechat = callPackage ../applications/networking/irc/weechat { };-- weechatDevel = lowPrio (callPackage ../applications/networking/irc/weechat/devel.nix { });-- weston = callPackage ../applications/window-managers/weston { };-- windowmaker = callPackage ../applications/window-managers/windowmaker { };-- winswitch = callPackage ../tools/X11/winswitch { };-- wings = callPackage ../applications/graphics/wings {- erlang = erlangR14;- esdl = esdl.override { erlang = erlangR14; };- };-- wmname = callPackage ../applications/misc/wmname { };-- wmctrl = callPackage ../tools/X11/wmctrl { };-- # I'm keen on wmiimenu only >wmii-3.5 no longer has it...- wmiimenu = import ../applications/window-managers/wmii31 {- libixp = libixp_for_wmii;- inherit fetchurl /* fetchhg */ stdenv gawk;- inherit (xlibs) libX11;- };-- wmiiSnap = import ../applications/window-managers/wmii {- libixp = libixp_for_wmii;- inherit fetchurl /* fetchhg */ stdenv gawk;- inherit (xlibs) libX11 xextproto libXt libXext;- includeUnpack = config.stdenv.includeUnpack or false;- };-- wordnet = callPackage ../applications/misc/wordnet { };-- wrapChromium = browser: wrapFirefox {- inherit browser;- browserName = browser.packageName;- desktopName = "Chromium";- icon = "${browser}/share/icons/hicolor/48x48/apps/${browser.packageName}.png";- };-- wrapFirefox =- { browser, browserName ? "firefox", desktopName ? "Firefox", nameSuffix ? ""- , icon ? "${browser}/lib/${browser.name}/browser/icons/mozicon128.png" }:- let- cfg = stdenv.lib.attrByPath [ browserName ] {} config;- enableAdobeFlash = cfg.enableAdobeFlash or false;- enableGnash = cfg.enableGnash or false;- in- import ../applications/networking/browsers/firefox/wrapper.nix {- inherit stdenv lib makeWrapper makeDesktopItem browser browserName desktopName nameSuffix icon;- plugins =- assert !(enableGnash && enableAdobeFlash);- ([ ]- ++ lib.optional enableGnash gnash- ++ lib.optional enableAdobeFlash flashplayer- ++ lib.optional (cfg.enableDjvu or false) (djview4)- ++ lib.optional (cfg.enableMPlayer or false) (MPlayerPlugin browser)- ++ lib.optional (cfg.enableGeckoMediaPlayer or false) gecko_mediaplayer- ++ lib.optional (supportsJDK && cfg.jre or false && jrePlugin ? mozillaPlugin) jrePlugin- ++ lib.optional (cfg.enableGoogleTalkPlugin or false) google_talk_plugin- ++ lib.optional (cfg.enableFriBIDPlugin or false) fribid- ++ lib.optional (cfg.enableGnomeExtensions or false) gnome3.gnome_shell- );- libs = [ gstreamer gst_plugins_base ] ++ lib.optionals (cfg.enableQuakeLive or false)- (with xlibs; [ stdenv.gcc libX11 libXxf86dga libXxf86vm libXext libXt alsaLib zlib ]);- gtk_modules = [ libcanberra ];- };-- x11vnc = callPackage ../tools/X11/x11vnc { };-- x2vnc = callPackage ../tools/X11/x2vnc { };-- xaos = builderDefsPackage (import ../applications/graphics/xaos) {- inherit (xlibs) libXt libX11 libXext xextproto xproto;- inherit gsl aalib zlib intltool gettext perl;- libpng = libpng12;- };-- xara = callPackage ../applications/graphics/xara { };-- xawtv = callPackage ../applications/video/xawtv { };-- xbindkeys = callPackage ../tools/X11/xbindkeys { };-- xbmc = callPackage ../applications/video/xbmc {- ffmpeg = ffmpeg_1;- };-- xca = callPackage ../applications/misc/xca { };-- xcalib = callPackage ../tools/X11/xcalib { };-- xcape = callPackage ../tools/X11/xcape { };-- xchainkeys = callPackage ../tools/X11/xchainkeys { };-- xchat = callPackage ../applications/networking/irc/xchat { };-- xchm = callPackage ../applications/misc/xchm { };-- xcompmgr = callPackage ../applications/window-managers/xcompmgr { };-- compton = callPackage ../applications/window-managers/compton { };-- xdaliclock = callPackage ../tools/misc/xdaliclock {};-- xdg-user-dirs = callPackage ../tools/X11/xdg-user-dirs { };-- xdg_utils = callPackage ../tools/X11/xdg-utils { };-- xdotool = callPackage ../tools/X11/xdotool { };-- xen = callPackage ../applications/virtualization/xen {- stdenv = overrideGCC stdenv gcc45;- };-- xfe = callPackage ../applications/misc/xfe {- fox = fox_1_6;- };-- xfig = callPackage ../applications/graphics/xfig { };-- xineUI = callPackage ../applications/video/xine-ui { };-- xneur_0_13 = callPackage ../applications/misc/xneur { };-- xneur_0_8 = callPackage ../applications/misc/xneur/0.8.nix { };-- xneur = xneur_0_13;-- gxneur = callPackage ../applications/misc/gxneur {- inherit (gnome) libglade GConf;- };-- xournal = callPackage ../applications/graphics/xournal {- inherit (gnome) libgnomeprint libgnomeprintui libgnomecanvas;- };-- xpdf = callPackage ../applications/misc/xpdf {- motif = lesstif;- base14Fonts = "${ghostscript}/share/ghostscript/fonts";- };-- xkb_switch = callPackage ../tools/X11/xkb-switch { };-- libxpdf = callPackage ../applications/misc/xpdf/libxpdf.nix { };-- xpra = callPackage ../tools/X11/xpra { };-- xrestop = callPackage ../tools/X11/xrestop { };-- xscreensaver = callPackage ../misc/screensavers/xscreensaver {- inherit (gnome) libglade;- };-- xsynth_dssi = callPackage ../applications/audio/xsynth-dssi { };-- xterm = callPackage ../applications/misc/xterm { };-- finalterm = callPackage ../applications/misc/finalterm { };-- xtrace = callPackage ../tools/X11/xtrace { };-- xlaunch = callPackage ../tools/X11/xlaunch { };-- xmacro = callPackage ../tools/X11/xmacro { };-- xmove = callPackage ../applications/misc/xmove { };-- xmp = callPackage ../applications/audio/xmp { };-- xnee = callPackage ../tools/X11/xnee {- # Work around "missing separator" error.- stdenv = overrideInStdenv stdenv [ gnumake381 ];- };-- xvidcap = callPackage ../applications/video/xvidcap {- inherit (gnome) scrollkeeper libglade;- };-- yate = callPackage ../applications/misc/yate { };-- inherit (gnome3) yelp;-- qgis = callPackage ../applications/misc/qgis {};-- qtbitcointrader = callPackage ../applications/misc/qtbitcointrader { };-- ykpers = callPackage ../applications/misc/ykpers {};-- yoshimi = callPackage ../applications/audio/yoshimi {- fltk = fltk13;- };-- zathuraCollection = recurseIntoAttrs- (let callPackage = newScope pkgs.zathuraCollection; in- import ../applications/misc/zathura {- inherit callPackage pkgs fetchurl;- useMupdf = config.zathura.useMupdf or false;- });-- zathura = zathuraCollection.zathuraWrapper;-- zed = callPackage ../applications/editors/zed { };-- zeroc_ice = callPackage ../development/libraries/zeroc-ice { };-- girara = callPackage ../applications/misc/girara {- gtk = gtk3;- };-- zgrviewer = callPackage ../applications/graphics/zgrviewer {};-- zotero = callPackage ../applications/office/zotero {- xulrunner = xulrunner_30;- };-- zynaddsubfx = callPackage ../applications/audio/zynaddsubfx { };--- ### GAMES-- alienarena = callPackage ../games/alienarena { };-- andyetitmoves = if stdenv.isLinux then callPackage ../games/andyetitmoves {} else null;-- anki = callPackage ../games/anki { };-- asc = callPackage ../games/asc {- lua = lua5;- libsigcxx = libsigcxx12;- };-- astromenace = callPackage ../games/astromenace { };-- atanks = callPackage ../games/atanks {};-- ballAndPaddle = callPackage ../games/ball-and-paddle {- guile = guile_1_8;- };-- bitsnbots = callPackage ../games/bitsnbots {- lua = lua5;- };-- blackshades = callPackage ../games/blackshades { };-- blackshadeselite = callPackage ../games/blackshadeselite { };-- blobby = callPackage ../games/blobby { };-- bsdgames = callPackage ../games/bsdgames { };-- btanks = callPackage ../games/btanks { };-- bzflag = callPackage ../games/bzflag { };-- castle_combat = callPackage ../games/castle-combat { };-- chessdb = callPackage ../games/chessdb { };-- construoBase = lowPrio (callPackage ../games/construo {- mesa = null;- freeglut = null;- });-- construo = construoBase.override {- inherit mesa freeglut;- };-- crack_attack = callPackage ../games/crack-attack { };-- crafty = callPackage ../games/crafty { };- craftyFull = appendToName "full" (crafty.override { fullVariant = true; });-- crrcsim = callPackage ../games/crrcsim {};-- dhewm3 = callPackage ../games/dhewm3 {};-- drumkv1 = callPackage ../applications/audio/drumkv1 { };-- dwarf_fortress = callPackage_i686 ../games/dwarf-fortress {- SDL_image = pkgsi686Linux.SDL_image.override {- libpng = pkgsi686Linux.libpng12;- };- };-- dwarf_fortress_2014 = callPackage_i686 ../games/dwarf-fortress/df2014.nix {- SDL_image = pkgsi686Linux.SDL_image.override {- libpng = pkgsi686Linux.libpng12;- };- };-- dwarf_fortress_modable = appendToName "moddable" (dwarf_fortress.override {- copyDataDirectory = true;- });-- dwarf_fortress_2014_modable = appendToName "moddable" (dwarf_fortress_2014.override {- copyDataDirectory = true;- });-- dwarf-therapist = callPackage ../games/dwarf-therapist { };-- d1x_rebirth = callPackage ../games/d1x-rebirth { };-- d2x_rebirth = callPackage ../games/d2x-rebirth { };-- eboard = callPackage ../games/eboard { };-- eduke32 = callPackage ../games/eduke32 { };-- egoboo = callPackage ../games/egoboo { };-- exult = callPackage ../games/exult { };-- flightgear = callPackage ../games/flightgear { };-- freeciv = callPackage ../games/freeciv { };-- freeciv_gtk = callPackage ../games/freeciv {- gtkClient = true;- sdlClient = false;- };-- freedink = callPackage ../games/freedink { };-- fsg = callPackage ../games/fsg {- wxGTK = wxGTK28.override { unicode = false; };- };-- gemrb = callPackage ../games/gemrb { };-- gl117 = callPackage ../games/gl-117 {};-- glestae = callPackage ../games/glestae {};-- globulation2 = callPackage ../games/globulation {};-- gltron = callPackage ../games/gltron { };-- gnuchess = callPackage ../games/gnuchess { };-- gnugo = callPackage ../games/gnugo { };-- gparted = callPackage ../tools/misc/gparted { };-- gsmartcontrol = callPackage ../tools/misc/gsmartcontrol {- inherit (gnome) libglademm;- };-- gtypist = callPackage ../games/gtypist { };-- hexen = callPackage ../games/hexen { };-- icbm3d = callPackage ../games/icbm3d { };-- ingen = callPackage ../applications/audio/ingen { };-- instead = callPackage ../games/instead {- lua = lua5;- };-- kobodeluxe = callPackage ../games/kobodeluxe { };-- lincity = builderDefsPackage (import ../games/lincity) {- inherit (xlibs) libX11 libXext xextproto- libICE libSM xproto;- inherit libpng zlib;- };-- lincity_ng = callPackage ../games/lincity/ng.nix {};-- mars = callPackage ../games/mars { };-- micropolis = callPackage ../games/micropolis { };-- mnemosyne = callPackage ../games/mnemosyne {- inherit (pythonPackages) matplotlib cherrypy sqlite3;- };-- naev = callPackage ../games/naev { };-- nexuiz = callPackage ../games/nexuiz { };-- njam = callPackage ../games/njam { };-- oilrush = callPackage ../games/oilrush { };-- openra = callPackage ../games/openra { };-- openttd = callPackage ../games/openttd {- zlib = zlibStatic;- };-- opentyrian = callPackage ../games/opentyrian { };-- openxcom = callPackage ../games/openxcom { };-- pingus = callPackage ../games/pingus {};-- pioneers = callPackage ../games/pioneers { };-- pong3d = callPackage ../games/pong3d { };-- prboom = callPackage ../games/prboom { };-- quake3demo = callPackage ../games/quake3/wrapper {- name = "quake3-demo-${quake3game.name}";- description = "Demo of Quake 3 Arena, a classic first-person shooter";- game = quake3game;- paks = [quake3demodata];- };-- quake3demodata = callPackage ../games/quake3/demo { };-- quake3game = callPackage ../games/quake3/game { };-- quantumminigolf = callPackage ../games/quantumminigolf {};-- racer = callPackage ../games/racer { };-- residualvm = callPackage ../games/residualvm {- openglSupport = mesaSupported;- };-- rigsofrods = callPackage ../games/rigsofrods {- mygui = myguiSvn;- };-- rili = callPackage ../games/rili { };-- rogue = callPackage ../games/rogue { };-- samplv1 = callPackage ../applications/audio/samplv1 { };-- sauerbraten = callPackage ../games/sauerbraten {};-- scid = callPackage ../games/scid { };-- scummvm = callPackage ../games/scummvm { };-- scorched3d = callPackage ../games/scorched3d { };-- sdlmame = callPackage ../games/sdlmame { };-- sgtpuzzles = builderDefsPackage (import ../games/sgt-puzzles) {- inherit pkgconfig fetchsvn perl gtk;- inherit (xlibs) libX11;- };-- simutrans = callPackage ../games/simutrans { };-- soi = callPackage ../games/soi {};-- # You still can override by passing more arguments.- spaceOrbit = callPackage ../games/orbit { };-- spring = callPackage ../games/spring { };-- springLobby = callPackage ../games/spring/springlobby.nix { };-- stardust = callPackage ../games/stardust {};-- steam = callPackage_i686 ../games/steam {};-- steamChrootEnv = callPackage_i686 ../games/steam/chrootenv.nix {- zenity = gnome2.zenity;- };-- stuntrally = callPackage ../games/stuntrally { };-- superTux = callPackage ../games/super-tux { };-- superTuxKart = callPackage ../games/super-tux-kart { };-- synthv1 = callPackage ../applications/audio/synthv1 { };-- tbe = callPackage ../games/the-butterfly-effect {};-- teetertorture = callPackage ../games/teetertorture { };-- teeworlds = callPackage ../games/teeworlds { };-- tennix = callPackage ../games/tennix { };-- tibia = callPackage ../games/tibia { };-- tintin = callPackage ../games/tintin { };-- tpm = callPackage ../games/thePenguinMachine { };-- tremulous = callPackage ../games/tremulous { };-- speed_dreams = callPackage ../games/speed-dreams {- # Torcs wants to make shared libraries linked with plib libraries (it provides static).- # i686 is the only platform I know than can do that linking without plib built with -fPIC- plib = plib.override { enablePIC = !stdenv.isi686; };- libpng = libpng12;- };-- torcs = callPackage ../games/torcs {- # Torcs wants to make shared libraries linked with plib libraries (it provides static).- # i686 is the only platform I know than can do that linking without plib built with -fPIC- plib = plib.override { enablePIC = !stdenv.isi686; };- };-- trigger = callPackage ../games/trigger { };-- typespeed = callPackage ../games/typespeed { };-- ufoai = callPackage ../games/ufoai { };-- ultimatestunts = callPackage ../games/ultimatestunts { };-- ultrastardx = callPackage ../games/ultrastardx {- ffmpeg = ffmpeg_0_6;- lua = lua5;- };-- unvanquished = callPackage ../games/unvanquished { };-- uqm = callPackage ../games/uqm { };-- urbanterror = callPackage ../games/urbanterror { };-- ut2004demo = callPackage ../games/ut2004demo { };-- vdrift = callPackage ../games/vdrift { };-- vectoroids = callPackage ../games/vectoroids { };-- vessel = callPackage_i686 ../games/vessel { };-- warmux = callPackage ../games/warmux { };-- warsow = callPackage ../games/warsow {- libjpeg = libjpeg62;- };-- warzone2100 = callPackage ../games/warzone2100 { };-- widelands = callPackage ../games/widelands {- lua = lua5_1;- };-- worldofgoo_demo = callPackage ../games/worldofgoo {- demo = true;- };-- worldofgoo = callPackage ../games/worldofgoo { };-- xboard = callPackage ../games/xboard { };-- xconq = callPackage ../games/xconq {};-- # TODO: the corresponding nix file is missing- # xracer = callPackage ../games/xracer { };-- xonotic = callPackage ../games/xonotic { };-- xskat = callPackage ../games/xskat { };-- xsokoban = builderDefsPackage (import ../games/xsokoban) {- inherit (xlibs) libX11 xproto libXpm libXt;- };-- zdoom = callPackage ../games/zdoom { };-- zod = callPackage ../games/zod { };-- zoom = callPackage ../games/zoom { };-- keen4 = callPackage ../games/keen4 { };-- zeroad = callPackage ../games/0ad { };-- ### DESKTOP ENVIRONMENTS-- cinnamon = recurseIntoAttrs rec {- callPackage = newScope pkgs.cinnamon;- inherit (gnome3) gnome_common libgnomekbd gnome-menus zenity;-- muffin = callPackage ../desktops/cinnamon/muffin.nix { } ;-- cinnamon-control-center = callPackage ../desktops/cinnamon/cinnamon-control-center.nix{ };-- cinnamon-settings-daemon = callPackage ../desktops/cinnamon/cinnamon-settings-daemon.nix{ };-- cinnamon-session = callPackage ../desktops/cinnamon/cinnamon-session.nix{ } ;-- cinnamon-desktop = callPackage ../desktops/cinnamon/cinnamon-desktop.nix { };-- cinnamon-translations = callPackage ../desktops/cinnamon/cinnamon-translations.nix { };-- cjs = callPackage ../desktops/cinnamon/cjs.nix { };- };-- enlightenment = callPackage ../desktops/enlightenment { };-- e17 = recurseIntoAttrs (- let callPackage = newScope pkgs.e17; in- import ../desktops/e17 { inherit callPackage pkgs; }- );-- e18 = recurseIntoAttrs (- let callPackage = newScope pkgs.e18; in- import ../desktops/e18 { inherit callPackage pkgs; }- );-- gnome2 = callPackage ../desktops/gnome-2 {- callPackage = pkgs.newScope pkgs.gnome2;- self = pkgs.gnome2;- } // pkgs.gtkLibs // {- # Backwards compatibility;- inherit (pkgs) libsoup libwnck gtk_doc gnome_doc_utils;- };-- gnome3 = recurseIntoAttrs (callPackage ../desktops/gnome-3/3.10 {- callPackage = pkgs.newScope pkgs.gnome3;- self = pkgs.gnome3;- });-- gnome3_12 = recurseIntoAttrs (callPackage ../desktops/gnome-3/3.12 {- callPackage = pkgs.newScope pkgs.gnome3_12;- });-- gnome = recurseIntoAttrs gnome2;-- hsetroot = callPackage ../tools/X11/hsetroot { };-- kakasi = callPackage ../tools/text/kakasi { };-- kde4 = recurseIntoAttrs pkgs.kde412;-- kde4_next = recurseIntoAttrs( lib.lowPrioSet pkgs.kde412 );-- kde412 = kdePackagesFor (pkgs.kde412 // {- eigen = eigen2;- libusb = libusb1;- libcanberra = libcanberra_kde;- }) ../desktops/kde-4.12;-- kdePackagesFor = self: dir:- let callPackageOrig = callPackage; in- let- callPackage = newScope self;- kde4 = callPackageOrig dir {- inherit callPackage callPackageOrig;- };- in kde4 // {- inherit kde4;-- wrapper = callPackage ../build-support/kdewrapper {};-- recurseForRelease = true;-- akunambol = callPackage ../applications/networking/sync/akunambol { };-- amarok = callPackage ../applications/audio/amarok { };-- bangarang = callPackage ../applications/video/bangarang { };-- basket = callPackage ../applications/office/basket { };-- bluedevil = callPackage ../tools/bluetooth/bluedevil { };-- calligra = callPackage ../applications/office/calligra { };-- colord-kde = callPackage ../tools/misc/colord-kde { };-- digikam = if builtins.compareVersions "4.9" kde4.release == 1 then- callPackage ../applications/graphics/digikam/2.nix { }- else- callPackage ../applications/graphics/digikam { };-- eventlist = callPackage ../applications/office/eventlist {};-- k3b = callPackage ../applications/misc/k3b { };-- kadu = callPackage ../applications/networking/instant-messengers/kadu { };-- kbibtex = callPackage ../applications/office/kbibtex { };-- kde_gtk_config = callPackage ../tools/misc/kde-gtk-config { };-- kde_wacomtablet = callPackage ../applications/misc/kde-wacomtablet { };-- kdeconnect = callPackage ../applications/misc/kdeconnect { };-- kdenlive = callPackage ../applications/video/kdenlive { mlt = mlt-qt4; };-- kdesvn = callPackage ../applications/version-management/kdesvn { };-- kdevelop = callPackage ../applications/editors/kdevelop { };-- kdevplatform = callPackage ../development/libraries/kdevplatform { };-- kdiff3 = callPackage ../tools/text/kdiff3 { };-- kile = callPackage ../applications/editors/kile { };-- kmplayer = callPackage ../applications/video/kmplayer { };-- kmymoney = callPackage ../applications/office/kmymoney { };-- kipi_plugins = callPackage ../applications/graphics/kipi-plugins { };-- konversation = callPackage ../applications/networking/irc/konversation { };-- kvirc = callPackage ../applications/networking/irc/kvirc { };-- krename = callPackage ../applications/misc/krename { };-- krusader = callPackage ../applications/misc/krusader { };-- ksshaskpass = callPackage ../tools/security/ksshaskpass {};-- ktorrent = callPackage ../applications/networking/p2p/ktorrent { };-- kuickshow = callPackage ../applications/graphics/kuickshow { };-- libalkimia = callPackage ../development/libraries/libalkimia { };-- libktorrent = callPackage ../development/libraries/libktorrent { };-- libkvkontakte = callPackage ../development/libraries/libkvkontakte { };-- liblikeback = callPackage ../development/libraries/liblikeback { };-- libmm-qt = callPackage ../development/libraries/libmm-qt { };-- libnm-qt = callPackage ../development/libraries/libnm-qt { };-- networkmanagement = callPackage ../tools/networking/networkmanagement { };-- partitionManager = callPackage ../tools/misc/partition-manager { };-- plasma-nm = callPackage ../tools/networking/plasma-nm { };-- polkit_kde_agent = callPackage ../tools/security/polkit-kde-agent { };-- psi = callPackage ../applications/networking/instant-messengers/psi { };-- qtcurve = callPackage ../misc/themes/qtcurve { };-- quassel = callPackage ../applications/networking/irc/quassel { dconf = gnome3.dconf; };-- quasselWithoutKDE = (self.quassel.override {- withKDE = false;- tag = "-without-kde";- });-- quasselDaemon = (self.quassel.override {- monolithic = false;- daemon = true;- tag = "-daemon";- });-- quasselClient = (self.quassel.override {- monolithic = false;- client = true;- tag = "-client";- });-- quasselClientWithoutKDE = (self.quasselClient.override {- withKDE = false;- tag = "-client-without-kde";- });-- rekonq = callPackage ../applications/networking/browsers/rekonq { };-- kwebkitpart = callPackage ../applications/networking/browsers/kwebkitpart { };-- rsibreak = callPackage ../applications/misc/rsibreak { };-- semnotes = callPackage ../applications/misc/semnotes { };-- skrooge = callPackage ../applications/office/skrooge { };-- telepathy = callPackage ../applications/networking/instant-messengers/telepathy/kde {};-- yakuake = callPackage ../applications/misc/yakuake { };-- zanshin = callPackage ../applications/office/zanshin { };-- kwooty = callPackage ../applications/networking/newsreaders/kwooty { };- };-- redshift = callPackage ../applications/misc/redshift {- inherit (xorg) libX11 libXrandr libxcb randrproto libXxf86vm- xf86vidmodeproto;- inherit (gnome) GConf;- inherit (pythonPackages) pyxdg;- geoclue = geoclue2;- };-- oxygen_gtk = callPackage ../misc/themes/gtk2/oxygen-gtk { };-- gtk_engines = callPackage ../misc/themes/gtk2/gtk-engines { };-- gtk-engine-murrine = callPackage ../misc/themes/gtk2/gtk-engine-murrine { };-- gnome_themes_standard = gnome3.gnome_themes_standard;-- mate-icon-theme = callPackage ../misc/themes/mate-icon-theme { };-- mate-themes = callPackage ../misc/themes/mate-themes { };-- xfce = xfce4_10;- xfce4_10 = recurseIntoAttrs (import ../desktops/xfce { inherit pkgs newScope; });--- ### SCIENCE-- ### SCIENCE/GEOMETRY-- drgeo = builderDefsPackage (import ../applications/science/geometry/drgeo) {- inherit (gnome) libglade;- inherit libxml2 perl intltool libtool pkgconfig gtk;- guile = guile_1_8;- };-- tetgen = callPackage ../applications/science/geometry/tetgen { };--- ### SCIENCE/BIOLOGY-- alliance = callPackage ../applications/science/electronics/alliance {- motif = lesstif;- };-- arb = callPackage ../applications/science/biology/arb {- lesstif = lesstif93;- };-- archimedes = callPackage ../applications/science/electronics/archimedes { };-- biolib = callPackage ../development/libraries/science/biology/biolib { };-- emboss = callPackage ../applications/science/biology/emboss { };-- mrbayes = callPackage ../applications/science/biology/mrbayes { };-- ncbiCTools = builderDefsPackage ../development/libraries/ncbi {- inherit tcsh mesa lesstif;- inherit (xlibs) libX11 libXaw xproto libXt libSM libICE- libXmu libXext;- };-- ncbi_tools = callPackage ../applications/science/biology/ncbi-tools { };-- paml = callPackage ../applications/science/biology/paml { };-- pal2nal = callPackage ../applications/science/biology/pal2nal { };-- plink = callPackage ../applications/science/biology/plink/default.nix { };--- ### SCIENCE/MATH-- arpack = callPackage ../development/libraries/science/math/arpack { };-- atlas = callPackage ../development/libraries/science/math/atlas {- # The build process measures CPU capabilities and optimizes the- # library to perform best on that particular machine. That is a- # great feature, but it's of limited use with pre-built binaries- # coming from a central build farm.- tolerateCpuTimingInaccuracy = true;- };-- blas = callPackage ../development/libraries/science/math/blas { };-- content = builderDefsPackage ../applications/science/math/content {- inherit mesa lesstif;- inherit (xlibs) libX11 libXaw xproto libXt libSM libICE- libXmu libXext libXcursor;- };-- jags = callPackage ../applications/science/math/jags { };-- liblapack = callPackage ../development/libraries/science/math/liblapack { };- liblapack_3_5_0 = callPackage ../development/libraries/science/math/liblapack/3.5.0.nix { };-- liblbfgs = callPackage ../development/libraries/science/math/liblbfgs { };-- openblas = callPackage ../development/libraries/science/math/openblas { };- openblas_0_2_10 = callPackage ../development/libraries/science/math/openblas/0.2.10.nix { - liblapack = liblapack_3_5_0;- };-- mathematica = callPackage ../applications/science/math/mathematica { };-- sage = callPackage ../applications/science/math/sage { };-- ### SCIENCE/MOLECULAR-DYNAMICS-- gromacs = callPackage ../applications/science/molecular-dynamics/gromacs {- singlePrec = true;- fftw = fftwSinglePrec;- cmake = cmakeCurses;- };-- gromacsDouble = lowPrio (callPackage ../applications/science/molecular-dynamics/gromacs {- singlePrec = false;- fftw = fftw;- cmake = cmakeCurses;- });--- ### SCIENCE/LOGIC-- abc-verifier = callPackage ../applications/science/logic/abc {};-- alt-ergo = callPackage ../applications/science/logic/alt-ergo {};-- coq = callPackage ../applications/science/logic/coq {- inherit (ocamlPackages) findlib lablgtk;- camlp5 = ocamlPackages.camlp5_transitional;- };-- coq_HEAD = callPackage ../applications/science/logic/coq/HEAD.nix {- inherit (ocamlPackages) findlib lablgtk;- camlp5 = ocamlPackages.camlp5_transitional;- };-- coq_8_3 = callPackage ../applications/science/logic/coq/8.3.nix {- inherit (ocamlPackages) findlib lablgtk;- camlp5 = ocamlPackages.camlp5_transitional;- };-- cvc3 = callPackage ../applications/science/logic/cvc3 {};-- ekrhyper = callPackage ../applications/science/logic/ekrhyper {};-- eprover = callPackage ../applications/science/logic/eprover {- texLive = texLiveAggregationFun {- paths = [- texLive texLiveExtra- ];- };- };-- ginac = callPackage ../applications/science/math/ginac { };-- hol = callPackage ../applications/science/logic/hol { };-- hol_light = callPackage ../applications/science/logic/hol_light {- inherit (ocamlPackages) findlib;- camlp5 = ocamlPackages.camlp5_strict;- };-- isabelle = import ../applications/science/logic/isabelle {- inherit (pkgs) stdenv fetchurl nettools perl polyml;- inherit (pkgs.emacs24Packages) proofgeneral;- };-- iprover = callPackage ../applications/science/logic/iprover {};-- leo2 = callPackage ../applications/science/logic/leo2 {};-- logisim = callPackage ../applications/science/logic/logisim {};-- ltl2ba = callPackage ../applications/science/logic/ltl2ba {};-- matita = callPackage ../applications/science/logic/matita {- ocaml = ocaml_3_11_2;- inherit (ocamlPackages_3_11_2) findlib lablgtk ocaml_expat gmetadom ocaml_http- lablgtkmathview ocaml_mysql ocaml_sqlite3 ocamlnet camlzip ocaml_pcre;- ulex08 = ocamlPackages_3_11_2.ulex08.override { camlp5 = ocamlPackages_3_11_2.camlp5_5_transitional; };- };-- matita_130312 = lowPrio (callPackage ../applications/science/logic/matita/130312.nix {- inherit (ocamlPackages) findlib lablgtk ocaml_expat gmetadom ocaml_http- ocaml_mysql ocamlnet ulex08 camlzip ocaml_pcre;- });-- minisat = callPackage ../applications/science/logic/minisat {};-- opensmt = callPackage ../applications/science/logic/opensmt { };-- otter = callPackage ../applications/science/logic/otter {};-- picosat = callPackage ../applications/science/logic/picosat {};-- prooftree = callPackage ../applications/science/logic/prooftree {- inherit (ocamlPackages) findlib lablgtk;- camlp5 = ocamlPackages.camlp5_transitional;- };-- prover9 = callPackage ../applications/science/logic/prover9 { };-- satallax = callPackage ../applications/science/logic/satallax {};-- spass = callPackage ../applications/science/logic/spass {};-- ssreflect = callPackage ../applications/science/logic/ssreflect {- camlp5 = ocamlPackages.camlp5_transitional;- };-- tptp = callPackage ../applications/science/logic/tptp {};-- twelf = callPackage ../applications/science/logic/twelf {- smlnj = if stdenv.isDarwin- then smlnjBootstrap- else smlnj;- };-- verifast = callPackage ../applications/science/logic/verifast {};-- why3 = callPackage ../applications/science/logic/why3 {};-- yices = callPackage ../applications/science/logic/yices {};-- z3 = callPackage ../applications/science/logic/z3 {};-- boolector = boolector15;- boolector15 = callPackage ../applications/science/logic/boolector {};- boolector16 = lowPrio (callPackage ../applications/science/logic/boolector {- useV16 = true;- });-- ### SCIENCE / ELECTRONICS-- eagle = callPackage_i686 ../applications/science/electronics/eagle { };-- caneda = callPackage ../applications/science/electronics/caneda { };-- gtkwave = callPackage ../applications/science/electronics/gtkwave { };-- kicad = callPackage ../applications/science/electronics/kicad {- wxGTK = wxGTK29;- };-- ngspice = callPackage ../applications/science/electronics/ngspice { };-- qucs = callPackage ../applications/science/electronics/qucs { };-- xoscope = callPackage ../applications/science/electronics/xoscope { };--- ### SCIENCE / MATH-- ecm = callPackage ../applications/science/math/ecm { };-- eukleides = callPackage ../applications/science/math/eukleides {- texinfo = texinfo4;- };-- fricas = callPackage ../applications/science/math/fricas { };-- gap = callPackage ../applications/science/math/gap { };-- maxima = callPackage ../applications/science/math/maxima { };-- wxmaxima = callPackage ../applications/science/math/wxmaxima { };-- pari = callPackage ../applications/science/math/pari {};-- pspp = callPackage ../applications/science/math/pssp {- inherit (gnome) libglade gtksourceview;- };-- singular = callPackage ../applications/science/math/singular {};-- scilab = callPackage ../applications/science/math/scilab {- withXaw3d = false;- withTk = true;- withGtk = false;- withOCaml = true;- withX = true;- };-- msieve = callPackage ../applications/science/math/msieve { };-- weka = callPackage ../applications/science/math/weka { };-- yad = callPackage ../tools/misc/yad { };-- yacas = callPackage ../applications/science/math/yacas { };-- speedcrunch = callPackage ../applications/science/math/speedcrunch {- qt = qt4;- cmake = cmakeCurses;- };--- ### SCIENCE / MISC-- boinc = callPackage ../applications/science/misc/boinc { };-- celestia = callPackage ../applications/science/astronomy/celestia {- lua = lua5_1;- inherit (xlibs) libXmu;- inherit (pkgs.gnome) gtkglext;- };-- fityk = callPackage ../applications/science/misc/fityk { };-- gravit = callPackage ../applications/science/astronomy/gravit { };-- golly = callPackage ../applications/science/misc/golly { };-- megam = callPackage ../applications/science/misc/megam { };-- root = callPackage ../applications/science/misc/root { };-- simgrid = callPackage ../applications/science/misc/simgrid { };-- spyder = callPackage ../applications/science/spyder {- inherit (pythonPackages) pyflakes rope sphinx numpy scipy matplotlib; # recommended- inherit (pythonPackages) ipython pep8; # optional- inherit pylint;- };-- stellarium = callPackage ../applications/science/astronomy/stellarium { };-- tulip = callPackage ../applications/science/misc/tulip { };-- vite = callPackage ../applications/science/misc/vite { };-- xplanet = callPackage ../applications/science/astronomy/xplanet { };-- ### MISC-- atari800 = callPackage ../misc/emulators/atari800 { };-- ataripp = callPackage ../misc/emulators/atari++ { };-- auctex = callPackage ../tools/typesetting/tex/auctex { };-- beep = callPackage ../misc/beep { };-- cups = callPackage ../misc/cups { libusb = libusb1; };-- cups_pdf_filter = callPackage ../misc/cups/pdf-filter.nix { };-- gutenprint = callPackage ../misc/drivers/gutenprint { };-- gutenprintBin = callPackage ../misc/drivers/gutenprint/bin.nix { };-- cupsBjnp = callPackage ../misc/cups/drivers/cups-bjnp { };-- darcnes = callPackage ../misc/emulators/darcnes { };-- dbacl = callPackage ../tools/misc/dbacl { };-- dblatex = callPackage ../tools/typesetting/tex/dblatex {- enableAllFeatures = false;- };-- dblatexFull = appendToName "full" (dblatex.override {- enableAllFeatures = true;- });-- dosbox = callPackage ../misc/emulators/dosbox { };-- dpkg = callPackage ../tools/package-management/dpkg { };-- ekiga = newScope pkgs.gnome ../applications/networking/instant-messengers/ekiga { };-- emulationstation = callPackage ../misc/emulators/emulationstation { };-- electricsheep = callPackage ../misc/screensavers/electricsheep { };-- fakenes = callPackage ../misc/emulators/fakenes { };-- fceux = callPackage ../misc/emulators/fceux { };-- foldingathome = callPackage ../misc/foldingathome { };-- foo2zjs = callPackage ../misc/drivers/foo2zjs {};-- foomatic_filters = callPackage ../misc/drivers/foomatic-filters {};-- freestyle = callPackage ../misc/freestyle { };-- gajim = callPackage ../applications/networking/instant-messengers/gajim { };-- gammu = callPackage ../applications/misc/gammu { };-- gensgs = callPackage_i686 ../misc/emulators/gens-gs { };-- ghostscript = callPackage ../misc/ghostscript {- x11Support = false;- cupsSupport = config.ghostscript.cups or (!stdenv.isDarwin);- gnuFork = config.ghostscript.gnu or false;- };-- ghostscriptX = appendToName "with-X" (ghostscript.override {- x11Support = true;- });-- guix = callPackage ../tools/package-management/guix { };-- gxemul = callPackage ../misc/gxemul { };-- hatari = callPackage ../misc/emulators/hatari { };-- hplip = callPackage ../misc/drivers/hplip { };-- hplipWithPlugin = hplip.override { withPlugin = true; };-- # using the new configuration style proposal which is unstable- jack1 = callPackage ../misc/jackaudio/jack1.nix { };-- jack2 = callPackage ../misc/jackaudio { };-- keynav = callPackage ../tools/X11/keynav { };-- lazylist = callPackage ../tools/typesetting/tex/lazylist { };-- lilypond = callPackage ../misc/lilypond { guile = guile_1_8; };-- martyr = callPackage ../development/libraries/martyr { };-- maven = maven3;- maven3 = callPackage ../misc/maven { jdk = openjdk; };-- mess = callPackage ../misc/emulators/mess {- inherit (pkgs.gnome) GConf;- };-- mupen64plus = callPackage ../misc/emulators/mupen64plus { };-- mupen64plus1_5 = callPackage ../misc/emulators/mupen64plus/1.5.nix { };-- nix = nixStable;-- nixStable = callPackage ../tools/package-management/nix {- storeDir = config.nix.storeDir or "/nix/store";- stateDir = config.nix.stateDir or "/nix/var";- };-- nixUnstable = callPackage ../tools/package-management/nix/unstable.nix {- storeDir = config.nix.storeDir or "/nix/store";- stateDir = config.nix.stateDir or "/nix/var";- };-- nixops = callPackage ../tools/package-management/nixops { };-- nix-prefetch-scripts = callPackage ../tools/package-management/nix-prefetch-scripts { };-- nix-repl = callPackage ../tools/package-management/nix-repl { };-- nut = callPackage ../applications/misc/nut { };-- solfege = callPackage ../misc/solfege {- pysqlite = pkgs.pythonPackages.sqlite3;- };-- disnix = callPackage ../tools/package-management/disnix { };-- dysnomia = callPackage ../tools/package-management/disnix/dysnomia {- enableApacheWebApplication = config.disnix.enableApacheWebApplication or false;- enableAxis2WebService = config.disnix.enableAxis2WebService or false;- enableEjabberdDump = config.disnix.enableEjabberdDump or false;- enableMySQLDatabase = config.disnix.enableMySQLDatabase or false;- enablePostgreSQLDatabase = config.disnix.enablePostgreSQLDatabase or false;- enableSubversionRepository = config.disnix.enableSubversionRepository or false;- enableTomcatWebApplication = config.disnix.enableTomcatWebApplication or false;- };-- disnixos = callPackage ../tools/package-management/disnix/disnixos { };-- DisnixWebService = callPackage ../tools/package-management/disnix/DisnixWebService { };-- latex2html = callPackage ../tools/typesetting/tex/latex2html/default.nix {- tex = tetex;- };-- lkproof = callPackage ../tools/typesetting/tex/lkproof { };-- mysqlWorkbench = newScope gnome ../applications/misc/mysql-workbench {- lua = lua5;- inherit (pythonPackages) pexpect paramiko;- };-- robomongo = callPackage ../applications/misc/robomongo { };-- opkg = callPackage ../tools/package-management/opkg { };-- pgadmin = callPackage ../applications/misc/pgadmin { };-- pgf = pgf2;-- # Keep the old PGF since some documents don't render properly with- # the new one.- pgf1 = callPackage ../tools/typesetting/tex/pgf/1.x.nix { };-- pgf2 = callPackage ../tools/typesetting/tex/pgf/2.x.nix { };-- pgfplots = callPackage ../tools/typesetting/tex/pgfplots { };-- pjsip = callPackage ../applications/networking/pjsip { };-- polytable = callPackage ../tools/typesetting/tex/polytable { };-- PPSSPP = callPackage ../misc/emulators/ppsspp { };-- uae = callPackage ../misc/emulators/uae { };-- putty = callPackage ../applications/networking/remote/putty { };-- retroarch = callPackage ../misc/emulators/retroarch { };-- rssglx = callPackage ../misc/screensavers/rss-glx { };-- xlockmore = callPackage ../misc/screensavers/xlockmore { };-- samsungUnifiedLinuxDriver = import ../misc/cups/drivers/samsung {- inherit fetchurl stdenv;- inherit cups ghostscript glibc patchelf;- gcc = import ../development/compilers/gcc/4.4 {- inherit stdenv fetchurl gmp mpfr noSysDirs gettext which;- texinfo = texinfo4;- profiledCompiler = true;- };- };-- saneBackends = callPackage ../applications/graphics/sane/backends.nix {- gt68xxFirmware = config.sane.gt68xxFirmware or null;- snapscanFirmware = config.sane.snapscanFirmware or null;- hotplugSupport = config.sane.hotplugSupport or true;- libusb = libusb1;- };-- saneBackendsGit = callPackage ../applications/graphics/sane/backends-git.nix {- gt68xxFirmware = config.sane.gt68xxFirmware or null;- snapscanFirmware = config.sane.snapscanFirmware or null;- hotplugSupport = config.sane.hotplugSupport or true;- };-- mkSaneConfig = callPackage ../applications/graphics/sane/config.nix { };-- saneFrontends = callPackage ../applications/graphics/sane/frontends.nix { };-- seafile-shared = callPackage ../misc/seafile-shared { };-- slock = callPackage ../misc/screensavers/slock { };-- sourceAndTags = import ../misc/source-and-tags {- inherit pkgs stdenv unzip lib ctags;- hasktags = haskellPackages.hasktags;- };-- splix = callPackage ../misc/cups/drivers/splix { };-- streamripper = callPackage ../applications/audio/streamripper { };-- sqsh = callPackage ../development/tools/sqsh { };-- tetex = callPackage ../tools/typesetting/tex/tetex { libpng = libpng12; };-- tex4ht = callPackage ../tools/typesetting/tex/tex4ht { };-- texFunctions = import ../tools/typesetting/tex/nix pkgs;-- texLive = builderDefsPackage (import ../tools/typesetting/tex/texlive) {- inherit builderDefs zlib bzip2 ncurses libpng ed lesstif ruby potrace- gd t1lib freetype icu perl expat curl xz pkgconfig zziplib texinfo- libjpeg bison python fontconfig flex poppler libpaper graphite2- makeWrapper;- inherit (xlibs) libXaw libX11 xproto libXt libXpm- libXmu libXext xextproto libSM libICE;- ghostscript = ghostscriptX;- harfbuzz = harfbuzz.override {- withIcu = true; withGraphite2 = true;- };- };-- texLiveFull = lib.setName "texlive-full" (texLiveAggregationFun {- paths = [ texLive texLiveExtra lmodern texLiveCMSuper texLiveLatexXColor- texLivePGF texLiveBeamer texLiveModerncv tipa tex4ht texinfo- texLiveModerntimeline ];- });-- /* Look in configurations/misc/raskin.nix for usage example (around revisions- where TeXLive was added)-- (texLiveAggregationFun {- paths = [texLive texLiveExtra texLiveCMSuper- texLiveBeamer- ];- })-- You need to use texLiveAggregationFun to regenerate, say, ls-R (TeX-related file list)- Just installing a few packages doesn't work.- */- texLiveAggregationFun = params:- builderDefsPackage (import ../tools/typesetting/tex/texlive/aggregate.nix)- ({inherit poppler perl makeWrapper;} // params);-- texDisser = callPackage ../tools/typesetting/tex/disser {};-- texLiveContext = builderDefsPackage (import ../tools/typesetting/tex/texlive/context.nix) {- inherit texLive;- };-- texLiveExtra = builderDefsPackage (import ../tools/typesetting/tex/texlive/extra.nix) {- inherit texLive xz;- };-- texLiveCMSuper = builderDefsPackage (import ../tools/typesetting/tex/texlive/cm-super.nix) {- inherit texLive;- };-- texLiveLatexXColor = builderDefsPackage (import ../tools/typesetting/tex/texlive/xcolor.nix) {- inherit texLive;- };-- texLivePGF = builderDefsPackage (import ../tools/typesetting/tex/texlive/pgf.nix) {- inherit texLiveLatexXColor texLive;- };-- texLiveBeamer = builderDefsPackage (import ../tools/typesetting/tex/texlive/beamer.nix) {- inherit texLiveLatexXColor texLivePGF texLive;- };-- texLiveModerncv = builderDefsPackage (import ../tools/typesetting/tex/texlive/moderncv.nix) {- inherit texLive unzip;- };-- texLiveModerntimeline = builderDefsPackage (import ../tools/typesetting/tex/texlive/moderntimeline.nix) {- inherit texLive unzip;- };-- thermald = callPackage ../tools/system/thermald { };-- thinkfan = callPackage ../tools/system/thinkfan { };-- vice = callPackage ../misc/emulators/vice {- libX11 = xlibs.libX11;- giflib = giflib_4_1;- };-- viewnior = callPackage ../applications/graphics/viewnior { };-- vimPlugins = recurseIntoAttrs (callPackage ../misc/vim-plugins { });-- vimprobable2 = callPackage ../applications/networking/browsers/vimprobable2 {- webkit = webkitgtk2;- };-- vimprobable2Wrapper = wrapFirefox- { browser = vimprobable2; browserName = "vimprobable2"; desktopName = "Vimprobable2";- };-- vimb = callPackage ../applications/networking/browsers/vimb {- webkit = webkitgtk2;- };-- vimbWrapper = wrapFirefox {- browser = vimb;- browserName = "vimb";- desktopName = "Vimb";- };-- VisualBoyAdvance = callPackage ../misc/emulators/VisualBoyAdvance { };-- # Wine cannot be built in 64-bit; use a 32-bit build instead.- wineStable = callPackage_i686 ../misc/emulators/wine/stable.nix {- bison = bison2;- };-- wineUnstable = lowPrio (callPackage_i686 ../misc/emulators/wine/unstable.nix {- bison = bison2;- });-- wine = wineStable;-- winetricks = callPackage ../misc/emulators/wine/winetricks.nix {- inherit (gnome2) zenity;- };-- wxmupen64plus = callPackage ../misc/emulators/wxmupen64plus { };-- x2x = callPackage ../tools/X11/x2x { };-- xboxdrv = callPackage ../misc/drivers/xboxdrv { };-- xinput_calibrator = callPackage ../tools/X11/xinput_calibrator {- inherit (xlibs) libXi inputproto;- };-- xosd = callPackage ../misc/xosd { };-- xsane = callPackage ../applications/graphics/sane/xsane.nix {- libpng = libpng12;- saneBackends = saneBackends;- };-- yafc = callPackage ../applications/networking/yafc { };-- yandex-disk = callPackage ../tools/filesystems/yandex-disk { };-- myEnvFun = import ../misc/my-env {- inherit substituteAll pkgs;- inherit (stdenv) mkDerivation;- };-- # patoline requires a rather large ocaml compilation environment.- # this is why it is build as an environment and not just a normal package.- # remark : the emacs mode is also installed, but you have to adjust your load-path.- PatolineEnv = pack: myEnvFun {- name = "patoline";- buildInputs = [ stdenv ncurses mesa freeglut libzip gcc- pack.ocaml pack.findlib pack.camomile- pack.dypgen pack.ocaml_sqlite3 pack.camlzip- pack.lablgtk pack.camlimages pack.ocaml_cairo- pack.lablgl pack.ocamlnet pack.cryptokit- pack.ocaml_pcre pack.patoline- ];- # this is to circumvent the bug with libgcc_s.so.1 which is- # not found when using thread- extraCmds = ''- LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:${gcc.gcc}/lib- export LD_LIBRARY_PATH- '';- };-- patoline = PatolineEnv ocamlPackages_4_00_1;-- znc = callPackage ../applications/networking/znc { };-- zncModules = recurseIntoAttrs (- callPackage ../applications/networking/znc/modules.nix { }- );-- zsnes = callPackage_i686 ../misc/emulators/zsnes { };-- snes9x-gtk = callPackage ../misc/emulators/snes9x-gtk { };-- misc = import ../misc/misc.nix { inherit pkgs stdenv; };-- bullet = callPackage ../development/libraries/bullet {};-- dart = callPackage ../development/interpreters/dart { };-- httrack = callPackage ../tools/backup/httrack { };-- mg = callPackage ../applications/editors/mg { };--- # Attributes for backward compatibility.- adobeReader = adobe-reader;- asciidocFull = asciidoc-full; # added 2014-06-22- lttngTools = lttng-tools; # added 2014-07-31- lttngUst = lttng-ust; # added 2014-07-31---}; in self; in pkgs
@@ -1,28 +0,0 @@-{- a = 3;- b = 4;- c = {- inherit ({ a = 3; }) a;- e = 4;- f = 5;- };- d = if true- then { a = 1; b = 2; c = 3; }- else if false- then null- else {- inherit ({- a = 3;- b = 4;- cdefgads = 5;- }) cdefgads;- };- f = x: x;- list = [- 1- 2- (f 3)- ((x: x) 3)- [ 4 5 ]- ];-}
@@ -1,1 +0,0 @@-{ a = 3; b = 4; c = { inherit ({a = 3; }) a; e = 4; f = 5; }; d = if true then { a = 1; b = 2; c = 3; } else if false then null else { inherit ({a = 3; b = 4; cdefgads = 5; }) cdefgads; }; f = x: x; list = [ 1 2 (f 3) ((x: x) 3) [ 4 5 ] ]; }
@@ -1,138 +1,291 @@-Name: hnix-Version: 0.4.0-Synopsis: Haskell implementation of the Nix language-Description:- Haskell implementation of the Nix language.+-- This file has been generated from package.yaml by hpack version 0.27.0.+--+-- see: https://github.com/sol/hpack+--+-- hash: 98a178891c03317cef1e5f7a984b3d7156bb38b0ca183bea91bab9acdaff4fb3 -License: BSD3-License-file: LICENSE-Author: John Wiegley-Maintainer: johnw@newartisans.com-Category: Data, Nix-Build-type: Simple-Cabal-version: >=1.10-Homepage: http://github.com/jwiegley/hnix+name: hnix+version: 0.5.0+synopsis: Haskell implementation of the Nix language+description: Haskell implementation of the Nix language.+category: System, Data, Nix+homepage: https://github.com/jwiegley/hnix#readme+bug-reports: https://github.com/jwiegley/hnix/issues+author: John Wiegley+maintainer: johnw@newartisans.com+license: BSD3+license-file: LICENSE+build-type: Simple+cabal-version: >= 1.10 -Extra-source-files: data/*.nix+extra-source-files:+ README.md -Flag Parsec- Description: Use parsec instead of Trifecta- Default: False+source-repository head+ type: git+ location: https://github.com/jwiegley/hnix -Library- Default-language: Haskell2010- Exposed-modules:- Nix.Atoms- Nix.Eval- Nix.Parser- Nix.Expr- Nix.Pretty- Nix.Parser.Operators- Nix.StringOperations- Other-modules:- Nix.Parser.Library- Nix.Expr.Types- Nix.Expr.Types.Annotated- Nix.Expr.Shorthands- Default-extensions:- DataKinds- DeriveDataTypeable- DeriveFunctor- DeriveGeneric- FlexibleContexts- FlexibleInstances- GADTs- KindSignatures- LambdaCase- MultiWayIf- NoImplicitPrelude- OverloadedStrings- PatternGuards- RankNTypes- TupleSections- Build-depends:- base >= 4.9 && < 5+flag optimize+ description: Enable all optimization flags+ manual: True+ default: False++flag profiling+ description: Enable profiling+ manual: True+ default: False++flag tracing+ description: Enable full debug tracing+ manual: True+ default: False++library+ exposed-modules:+ Nix+ Nix.Atoms+ Nix.Builtins+ Nix.Cache+ Nix.Context+ Nix.Convert+ Nix.Effects+ Nix.Eval+ Nix.Exec+ Nix.Expr+ Nix.Expr.Shorthands+ Nix.Expr.Types+ Nix.Expr.Types.Annotated+ Nix.Frames+ Nix.Lint+ Nix.Normal+ Nix.Options+ Nix.Parser+ Nix.Pretty+ Nix.Reduce+ Nix.Render+ Nix.Render.Frame+ Nix.Scope+ Nix.Strings+ Nix.TH+ Nix.Thunk+ Nix.Type.Assumption+ Nix.Type.Env+ Nix.Type.Infer+ Nix.Type.Type+ Nix.Utils+ Nix.Value+ Nix.XML+ other-modules:+ Paths_hnix+ hs-source-dirs:+ src+ ghc-options: -Wall+ build-depends:+ aeson , ansi-wl-pprint+ , array >=0.4 && <0.6+ , base >=4.9 && <5+ , binary+ , bytestring , containers- , deriving-compat >= 0.3 && < 0.4- , text- , transformers- , parsers >= 0.10- , unordered-containers , data-fix- , deepseq- , semigroups >= 0.18 && < 0.19+ , deepseq >=1.4.2 && <1.5+ , deriving-compat >=0.3 && <0.5+ , directory+ , exceptions+ , filepath+ , hashing+ , http-client+ , http-client-tls+ , http-types+ , lens-family+ , lens-family-core+ , lens-family-th+ , logict+ , megaparsec >=6.0 && <6.6+ , monadlist+ , mtl+ , optparse-applicative+ , process , regex-tdfa , regex-tdfa-text- if flag(parsec)- Cpp-options: -DUSE_PARSEC- Build-depends: parsec+ , scientific+ , semigroups >=0.18 && <0.19+ , split+ , syb+ , template-haskell+ , text+ , these+ , time+ , transformers+ , unix+ , unordered-containers >=0.2.9 && <0.3+ , vector+ , xml+ if !impl(ghcjs)+ build-depends:+ base16-bytestring+ , cryptohash-md5+ , cryptohash-sha1+ , cryptohash-sha256+ , cryptohash-sha512+ , serialise+ if impl(ghcjs)+ build-depends:+ hashable >=1.2.4 && <1.3 else- Build-depends: trifecta- ghc-options: -Wall -fno-warn-name-shadowing+ exposed-modules:+ Nix.Options.Parser+ build-depends:+ hashable >=1.2.5 && <1.3+ , haskeline+ , pretty-show+ default-language: Haskell2010 -Executable hnix- Default-language: Haskell2010- Main-is: Main.hs- Hs-source-dirs: main- Default-extensions:- DataKinds- DeriveDataTypeable- DeriveFunctor- DeriveGeneric- FlexibleContexts- FlexibleInstances- GADTs- KindSignatures- LambdaCase- MultiWayIf- OverloadedStrings- PatternGuards- RankNTypes- TupleSections- Build-depends:- base >= 4.3 && < 5- , hnix- , containers+executable hnix+ main-is: Main.hs+ other-modules:+ Repl+ Paths_hnix+ hs-source-dirs:+ main+ ghc-options: -Wall+ build-depends:+ aeson , ansi-wl-pprint+ , base >=4.9 && <5+ , bytestring+ , containers , data-fix- , deepseq- Ghc-options: -Wall+ , deepseq >=1.4.2 && <1.5+ , exceptions+ , filepath+ , hashing+ , haskeline+ , hnix+ , mtl+ , optparse-applicative+ , pretty-show+ , repline+ , template-haskell+ , text+ , time+ , transformers+ , unordered-containers >=0.2.9 && <0.3+ if !impl(ghcjs)+ build-depends:+ base16-bytestring+ , cryptohash-md5+ , cryptohash-sha1+ , cryptohash-sha256+ , cryptohash-sha512+ , serialise+ if impl(ghcjs)+ buildable: False+ else+ buildable: True+ default-language: Haskell2010 -Test-suite hnix-tests- Type: exitcode-stdio-1.0- Hs-source-dirs: tests- Default-language: Haskell2010- Main-is: Main.hs- Other-modules:- ParserTests- EvalTests- ShorthandTests- PrettyTests- Build-depends:- base >= 4.3 && < 5+test-suite hnix-tests+ type: exitcode-stdio-1.0+ main-is: Main.hs+ other-modules:+ EvalTests+ NixLanguageTests+ ParserTests+ PrettyParseTests+ PrettyTests+ TestCommon+ Paths_hnix+ hs-source-dirs:+ tests+ ghc-options: -Wall -threaded+ build-depends:+ Diff+ , Glob+ , QuickCheck+ , ansi-wl-pprint+ , base >=4.9 && <5+ , bytestring , containers- , text , data-fix+ , deepseq >=1.4.2 && <1.5+ , directory+ , exceptions+ , filepath+ , generic-random+ , hashing , hnix+ , interpolate+ , megaparsec+ , mtl+ , optparse-applicative+ , pretty-show+ , process+ , quickcheck-instances+ , split , tasty- , tasty-th , tasty-hunit+ , tasty-quickcheck+ , tasty-th+ , template-haskell+ , text+ , time+ , transformers+ , unix+ , unordered-containers >=0.2.9 && <0.3+ if !impl(ghcjs)+ build-depends:+ base16-bytestring+ , cryptohash-md5+ , cryptohash-sha1+ , cryptohash-sha256+ , cryptohash-sha512+ , serialise+ if impl(ghcjs)+ buildable: False+ else+ buildable: True+ default-language: Haskell2010 -Benchmark hnix-benchmarks- Type: exitcode-stdio-1.0- Hs-source-dirs: benchmarks- Default-language: Haskell2010- Main-is: Main.hs- Other-modules:- ParserBench- Build-depends:- base >= 4.3 && < 5+benchmark hnix-benchmarks+ type: exitcode-stdio-1.0+ main-is: Main.hs+ other-modules:+ ParserBench+ Paths_hnix+ hs-source-dirs:+ benchmarks+ ghc-options: -Wall+ build-depends:+ ansi-wl-pprint+ , base >=4.9 && <5+ , bytestring , containers- , text- , hnix , criterion--source-repository head- type: git- location: git://github.com/jwiegley/hnix.git+ , data-fix+ , deepseq >=1.4.2 && <1.5+ , exceptions+ , filepath+ , hashing+ , hnix+ , mtl+ , optparse-applicative+ , template-haskell+ , text+ , time+ , transformers+ , unordered-containers >=0.2.9 && <0.3+ if !impl(ghcjs)+ build-depends:+ base16-bytestring+ , cryptohash-md5+ , cryptohash-sha1+ , cryptohash-sha256+ , cryptohash-sha512+ , serialise+ if impl(ghcjs)+ buildable: False+ else+ buildable: True+ default-language: Haskell2010
@@ -1,38 +1,221 @@+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeApplications #-}+ module Main where -import Nix.Parser-import Nix.Pretty-import Nix.Expr+import qualified Control.DeepSeq as Deep+import qualified Control.Exception as Exc+import Control.Monad+import Control.Monad.Catch+import Control.Monad.IO.Class+-- import Control.Monad.ST+import qualified Data.Aeson.Encoding as A+import qualified Data.Aeson.Text as A+import qualified Data.HashMap.Lazy as M+import qualified Data.Map as Map+import Data.List (sortOn)+import Data.Maybe (fromJust)+import Data.Time+import qualified Data.Text as Text+import qualified Data.Text.IO as Text+import qualified Data.Text.Lazy.Encoding as TL+import qualified Data.Text.Lazy.IO as TL+import Nix+import Nix.Convert+import qualified Nix.Eval as Eval+-- import Nix.Lint+import Nix.Options.Parser+import qualified Nix.Type.Env as Env+import qualified Nix.Type.Infer as HM+import Nix.Utils+import Options.Applicative hiding (ParserResult(..))+import qualified Repl+import System.FilePath+import System.IO+import Text.PrettyPrint.ANSI.Leijen hiding ((<$>))+import qualified Text.Show.Pretty as PS -import System.Environment-import System.IO-import Text.PrettyPrint.ANSI.Leijen+main :: IO ()+main = do+ time <- liftIO getCurrentTime+ opts <- execParser (nixOptionsInfo time)+ runLazyM opts $ case readFrom opts of+ Just path -> do+ let file = addExtension (dropExtension path) "nix"+ process opts (Just file) =<< liftIO (readCache path)+ Nothing -> case expression opts of+ Just s -> handleResult opts Nothing (parseNixTextLoc s)+ Nothing -> case fromFile opts of+ Just "-" ->+ mapM_ (processFile opts)+ =<< (lines <$> liftIO getContents)+ Just path ->+ mapM_ (processFile opts)+ =<< (lines <$> liftIO (readFile path))+ Nothing -> case filePaths opts of+ [] -> Repl.shell (pure ())+ ["-"] ->+ handleResult opts Nothing . parseNixTextLoc+ =<< liftIO Text.getContents+ paths ->+ mapM_ (processFile opts) paths+ where+ processFile opts path = do+ eres <- parseNixFileLoc path+ handleResult opts (Just path) eres -nix :: FilePath -> IO ()-nix path = parseNixFile path >>= displayNExpr+ handleResult opts mpath = \case+ Failure err ->+ (if ignoreErrors opts+ then liftIO . hPutStrLn stderr+ else errorWithoutStackTrace) $ "Parse failed: " ++ show err -nixString :: String -> IO ()-nixString = displayNExpr . parseNixString+ Success expr -> do+ when (check opts) $ do+ expr' <- liftIO (reduceExpr mpath expr)+ case HM.inferTop Env.empty [("it", stripAnnotation expr')] of+ Left err ->+ errorWithoutStackTrace $ "Type error: " ++ PS.ppShow err+ Right ty ->+ liftIO $ putStrLn $ "Type of expression: "+ ++ PS.ppShow (fromJust (Map.lookup "it" (Env.types ty))) -displayNExpr :: Result NExpr -> IO ()-displayNExpr = \case- Success n -> displayIO stdout $ renderPretty 0.4 80 (prettyNix n)- Failure e -> hPutStrLn stderr $ "Parse failed: " ++ show e+ -- liftIO $ putStrLn $ runST $+ -- runLintM opts . renderSymbolic =<< lint opts expr -main :: IO ()-main = do- let usageStr = "Parses a nix file and prints to stdout.\n\- \\n\- \Usage:\n\- \ hnix --help\n\- \ hnix <path>\n\- \ hnix --expr <expr>\n"- let argErr msg = error $ "Invalid arguments: " ++ msg ++ "\n" ++ usageStr- getArgs >>= \case- "--help":_ -> putStrLn usageStr- "--expr":expr:_ -> nixString expr- "--expr":_ -> argErr "Provide an expression."- ('-':_):_ -> argErr "Provide a path to a nix file."- path:_ -> nix path- _ -> argErr "Provide a path to a nix file."+ catch (process opts mpath expr) $ \case+ NixException frames ->+ errorWithoutStackTrace . show+ =<< renderFrames @(NThunk (Lazy IO)) frames++ when (repl opts) $ Repl.shell (pure ())++ process opts mpath expr+ | evaluate opts, tracing opts =+ evaluateExpression mpath+ Nix.nixTracingEvalExprLoc printer expr++ | evaluate opts, Just path <- reduce opts =+ evaluateExpression mpath (reduction path) printer expr++ | evaluate opts, not (null (arg opts) && null (argstr opts)) =+ evaluateExpression mpath+ Nix.nixEvalExprLoc printer expr++ | evaluate opts =+ processResult printer =<< Nix.nixEvalExprLoc mpath expr++ | xml opts =+ error "Rendering expression trees to XML is not yet implemented"++ | json opts =+ liftIO $ TL.putStrLn $+ A.encodeToLazyText (stripAnnotation expr)++ | verbose opts >= DebugInfo =+ liftIO $ putStr $ PS.ppShow $ stripAnnotation expr++ | cache opts, Just path <- mpath =+ liftIO $ writeCache (addExtension (dropExtension path) "nixc") expr++ | parseOnly opts =+ void $ liftIO $ Exc.evaluate $ Deep.force expr++ | otherwise =+ liftIO $ displayIO stdout+ . renderPretty 0.4 80+ . prettyNix+ . stripAnnotation $ expr+ where+ printer :: forall e m. (MonadNix e m, MonadIO m, Typeable m)+ => NValue m -> m ()+ printer+ | finder opts =+ fromValue @(AttrSet (NThunk m)) >=> findAttrs+ | xml opts =+ liftIO . putStrLn . toXML <=< normalForm+ | json opts =+ liftIO . TL.putStrLn+ . TL.decodeUtf8+ . A.encodingToLazyByteString+ . toEncodingSorted+ <=< fromNix+ | normalize opts =+ liftIO . print . prettyNValueNF <=< normalForm+ | values opts =+ liftIO . print <=< prettyNValueProv+ | otherwise =+ liftIO . print <=< prettyNValue+ where+ findAttrs = go ""+ where+ go prefix s = do+ xs <- forM (sortOn fst (M.toList s))+ $ \(k, nv@(NThunk _ t)) -> case t of+ Value v -> pure (k, Just v)+ Thunk _ _ ref -> do+ let path = prefix ++ Text.unpack k+ (_, descend) = filterEntry path k+ val <- readVar ref+ case val of+ Computed _ -> pure (k, Nothing)+ _ | descend -> (k,) <$> forceEntry path nv+ | otherwise -> pure (k, Nothing)++ forM_ xs $ \(k, mv) -> do+ let path = prefix ++ Text.unpack k+ (report, descend) = filterEntry path k+ when report $ do+ liftIO $ putStrLn path+ when descend $ case mv of+ Nothing -> return ()+ Just v -> case v of+ NVSet s' _ -> go (path ++ ".") s'+ _ -> return ()+ where+ filterEntry path k = case (path, k) of+ ("stdenv", "stdenv") -> (True, True)+ (_, "stdenv") -> (False, False)+ (_, "out") -> (True, False)+ (_, "src") -> (True, False)+ (_, "mirrorsFile") -> (True, False)+ (_, "buildPhase") -> (True, False)+ (_, "builder") -> (False, False)+ (_, "drvPath") -> (False, False)+ (_, "outPath") -> (False, False)+ (_, "__impureHostDeps") -> (False, False)+ (_, "__sandboxProfile") -> (False, False)+ ("pkgs", "pkgs") -> (True, True)+ (_, "pkgs") -> (False, False)+ (_, "drvAttrs") -> (False, False)+ _ -> (True, True)++ forceEntry k v = catch (Just <$> force v pure)+ $ \(NixException frames) -> do+ liftIO . putStrLn+ . ("Exception forcing " ++)+ . (k ++)+ . (": " ++) . show+ =<< renderFrames @(NThunk (Lazy IO)) frames+ return Nothing++ reduction path mp x = do+ eres <- Nix.withNixContext mp $+ Nix.reducingEvalExpr (Eval.eval . annotated . getCompose) mp x+ handleReduced path eres++ handleReduced :: (MonadThrow m, MonadIO m)+ => FilePath+ -> (NExprLoc, Either SomeException (NValue m))+ -> m (NValue m)+ handleReduced path (expr', eres) = do+ liftIO $ do+ putStrLn $ "Wrote winnowed expression tree to " ++ path+ writeFile path $ show $ prettyNix (stripAnnotation expr')+ case eres of+ Left err -> throwM err+ Right v -> return v
@@ -0,0 +1,196 @@+{- This code was authored by:++ Stephen Diehl+ Kwang Yul Seo <kwangyul.seo@gmail.com>++ It was made available under the MIT license. See the src/Nix/Type+ directory for more details.+-}++{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeSynonymInstances #-}++{-# OPTIONS_GHC -Wno-unused-matches #-}+{-# OPTIONS_GHC -Wno-unused-imports #-}++module Repl where++import Nix+import Nix.Convert+import Nix.Eval+import Nix.Scope+import qualified Nix.Type.Env as Env+import Nix.Type.Infer+import Nix.Utils++import qualified Data.HashMap.Lazy as M+import Data.List (isPrefixOf, foldl')+import qualified Data.Map as Map+import Data.Monoid+import Data.Text (unpack, pack)+import qualified Data.Text as Text+import qualified Data.Text.IO as Text++import Control.Monad.Identity+import Control.Monad.Reader+import Control.Monad.State.Strict++import System.Console.Haskeline.MonadException+import System.Console.Repline+import System.Environment+import System.Exit++-------------------------------------------------------------------------------+-- Types+-------------------------------------------------------------------------------++data TermEnv++data IState = IState+ { -- tyctx :: Env.Env -- Type environment+ -- ,+ tmctx :: TermEnv -- Value environment+ }++initState :: IState+initState = IState {-Env.empty-} undefined++type Repl e m a = HaskelineT (StateT IState m) a+hoistErr :: MonadIO m => Result a -> Repl e m a+hoistErr (Success val) = return val+hoistErr (Failure err) = do+ liftIO $ print err+ abort++-------------------------------------------------------------------------------+-- Execution+-------------------------------------------------------------------------------++exec :: forall e m. (MonadNix e m, MonadIO m, MonadException m)+ => Bool -> Text.Text -> Repl e m ()+exec update source = do+ -- Get the current interpreter state+ st <- get++ -- Parser ( returns AST )+ expr <- hoistErr $ parseNixTextLoc source++ -- Type Inference ( returns Typing Environment )+ -- tyctx' <- hoistErr $ inferTop (tyctx st) expr++ -- Create the new environment+ let st' = st { tmctx = tmctx st -- foldl' evalDef (tmctx st) expr+ -- , tyctx = tyctx' <> tyctx st+ }++ -- Update the interpreter state+ when update (put st')++ -- If a value is entered, print it.+ lift $ lift $ do+ -- jww (2018-04-12): Once the user is able to establish definitions in+ -- the repl, they should be passed here.+ pushScope @(NThunk m) M.empty $ catch (go expr) $ \case+ NixException frames -> do+ liftIO . print =<< renderFrames @(NThunk m) frames+ where+ go expr = do+ val <- evalExprLoc expr+ opts :: Nix.Options <- asks (view hasLens)+ if | normalize opts ->+ liftIO . print . prettyNValueNF =<< normalForm val+ | values opts ->+ liftIO . print =<< prettyNValueProv val+ | otherwise ->+ liftIO . print =<< prettyNValue val++cmd :: (MonadNix e m, MonadIO m, MonadException m) => String -> Repl e m ()+cmd source = exec True (Text.pack source)++-------------------------------------------------------------------------------+-- Commands+-------------------------------------------------------------------------------++-- :browse command+browse :: MonadNix e m => [String] -> Repl e m ()+browse _ = do+ st <- get+ undefined+ -- liftIO $ mapM_ putStrLn $ ppenv (tyctx st)++-- :load command+load :: (MonadNix e m, MonadIO m, MonadException m) => [String] -> Repl e m ()+load args = do+ contents <- liftIO $ Text.readFile (unwords args)+ exec True contents++-- :type command+-- typeof :: [String] -> Repl e m ()+-- typeof args = do+-- st <- get+-- let arg = unwords args+-- case Env.lookup (pack arg) (tyctx st) of+-- Just val -> liftIO $ putStrLn $ undefined -- ppsignature (arg, val)+-- Nothing -> exec False (Text.pack arg)++-- :quit command+quit :: (MonadNix e m, MonadIO m) => a -> Repl e m ()+quit _ = liftIO exitSuccess++-------------------------------------------------------------------------------+-- Interactive Shell+-------------------------------------------------------------------------------++-- Prefix tab completer+defaultMatcher :: MonadIO m => [(String, CompletionFunc m)]+defaultMatcher = [+ (":load" , fileCompleter)+ --, (":type" , values)+ ]++-- Default tab completer+comp :: (Monad m, MonadState IState m) => WordCompleter m+comp n = do+ let cmds = [":load", ":type", ":browse", ":quit"]+ -- Env.TypeEnv ctx <- gets tyctx+ -- let defs = map unpack $ Map.keys ctx+ return $ filter (isPrefixOf n) (cmds {-++ defs-})++options :: (MonadNix e m, MonadIO m, MonadException m)+ => [(String, [String] -> Repl e m ())]+options = [+ ("load" , load)+ , ("browse" , browse)+ , ("quit" , quit)+ -- , ("type" , Repl.typeof)+ ]++-------------------------------------------------------------------------------+-- Entry Point+-------------------------------------------------------------------------------++completer :: (MonadNix e m, MonadIO m) => CompleterStyle (StateT IState m)+completer = Prefix (wordCompleter comp) defaultMatcher++shell :: (MonadNix e m, MonadIO m, MonadException m) => Repl e m a -> m ()+shell pre = flip evalStateT initState $+ evalRepl "hnix> " cmd options completer pre++-------------------------------------------------------------------------------+-- Toplevel+-------------------------------------------------------------------------------++-- main :: IO ()+-- main = do+-- args <- getArgs+-- case args of+-- [] -> shell (return ())+-- [fname] -> shell (load [fname])+-- ["test", fname] -> shell (load [fname] >> browse [] >> quit ())+-- _ -> putStrLn "invalid arguments"
@@ -0,0 +1,151 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE ViewPatterns #-}++module Nix (module Nix.Cache,+ module Nix.Exec,+ module Nix.Expr,+ module Nix.Frames,+ module Nix.Render.Frame,+ module Nix.Normal,+ module Nix.Options,+ module Nix.Parser,+ module Nix.Pretty,+ module Nix.Reduce,+ module Nix.Thunk,+ module Nix.Value,+ module Nix.XML,+ withNixContext,+ nixEvalExpr, nixEvalExprLoc, nixTracingEvalExprLoc,+ evaluateExpression, processResult) where++import Control.Applicative+import Control.Arrow (second)+import Control.Monad.Reader+import Data.Fix+import qualified Data.HashMap.Lazy as M+import qualified Data.Text as Text+import qualified Data.Text.Read as Text+import Nix.Builtins+import Nix.Cache+import qualified Nix.Eval as Eval+import Nix.Exec+import Nix.Expr+import Nix.Frames+import Nix.Normal+import Nix.Options+import Nix.Parser+import Nix.Pretty+import Nix.Reduce+import Nix.Render.Frame+import Nix.Scope+import Nix.Thunk+import Nix.Utils+import Nix.Value+import Nix.XML++-- | Evaluate a nix expression in the default context+withNixContext :: forall e m r. (MonadNix e m, Has e Options)+ => Maybe FilePath -> m r -> m r+withNixContext mpath action = do+ base <- builtins+ opts :: Options <- asks (view hasLens)+ let i = value @(NValue m) @(NThunk m) @m $ nvList $+ map (value @(NValue m) @(NThunk m) @m+ . flip nvStr mempty . Text.pack) (include opts)+ pushScope (M.singleton "__includes" i) $+ pushScopes base $ case mpath of+ Nothing -> action+ Just path -> do+ traceM $ "Setting __cur_file = " ++ show path+ let ref = value @(NValue m) @(NThunk m) @m $ nvPath path+ pushScope (M.singleton "__cur_file" ref) action++-- | This is the entry point for all evaluations, whatever the expression tree+-- type. It sets up the common Nix environment and applies the+-- transformations, allowing them to be easily composed.+nixEval :: (MonadNix e m, Has e Options, Functor f)+ => Maybe FilePath -> Transform f (m a) -> Alg f (m a) -> Fix f -> m a+nixEval mpath xform alg = withNixContext mpath . adi alg xform++-- | Evaluate a nix expression in the default context+nixEvalExpr :: forall e m. (MonadNix e m, Has e Options)+ => Maybe FilePath -> NExpr -> m (NValue m)+nixEvalExpr mpath = nixEval mpath id Eval.eval++-- | Evaluate a nix expression in the default context+nixEvalExprLoc :: forall e m. (MonadNix e m, Has e Options)+ => Maybe FilePath -> NExprLoc -> m (NValue m)+nixEvalExprLoc mpath =+ nixEval mpath (Eval.addStackFrames @(NThunk m) . Eval.addSourcePositions)+ (Eval.eval . annotated . getCompose)++-- | Evaluate a nix expression with tracing in the default context. Note that+-- this function doesn't do any tracing itself, but 'evalExprLoc' will be+-- 'tracing' is set to 'True' in the Options structure (accessible through+-- 'MonadNix'). All this function does is provide the right type class+-- context.+nixTracingEvalExprLoc+ :: forall e m. (MonadNix e m, Has e Options, MonadIO m, Alternative m)+ => Maybe FilePath -> NExprLoc -> m (NValue m)+nixTracingEvalExprLoc mpath = withNixContext mpath . evalExprLoc++evaluateExpression+ :: (MonadNix e m, Has e Options)+ => Maybe FilePath+ -> (Maybe FilePath -> NExprLoc -> m (NValue m))+ -> (NValue m -> m a)+ -> NExprLoc+ -> m a+evaluateExpression mpath evaluator handler expr = do+ opts :: Options <- asks (view hasLens)+ args <- traverse (traverse eval') $+ map (second parseArg) (arg opts) +++ map (second mkStr) (argstr opts)+ compute evaluator expr (argmap args) handler+ where+ parseArg s = case parseNixText s of+ Success x -> x+ Failure err -> errorWithoutStackTrace (show err)++ eval' = (normalForm =<<) . nixEvalExpr mpath++ argmap args = embed $ Fix $ NVSetF (M.fromList args) mempty++ compute ev x args p = do+ f <- ev mpath x+ processResult p =<< case f of+ NVClosure _ g -> g args+ _ -> pure f++processResult :: forall e m a. (MonadNix e m, Has e Options)+ => (NValue m -> m a) -> NValue m -> m a+processResult h val = do+ opts :: Options <- asks (view hasLens)+ case attr opts of+ Nothing -> h val+ Just (Text.splitOn "." -> keys) -> go keys val+ where+ go :: [Text.Text] -> NValue m -> m a+ go [] v = h v+ go ((Text.decimal -> Right (n,"")):ks) v = case v of+ NVList xs -> case ks of+ [] -> force @(NValue m) @(NThunk m) (xs !! n) h+ _ -> force (xs !! n) (go ks)+ _ -> errorWithoutStackTrace $+ "Expected a list for selector '" ++ show n+ ++ "', but got: " ++ show v+ go (k:ks) v = case v of+ NVSet xs _ -> case M.lookup k xs of+ Nothing ->+ errorWithoutStackTrace $+ "Set does not contain key '"+ ++ Text.unpack k ++ "'"+ Just v' -> case ks of+ [] -> force v' h+ _ -> force v' (go ks)+ _ -> errorWithoutStackTrace $+ "Expected a set for selector '" ++ Text.unpack k+ ++ "', but got: " ++ show v
@@ -0,0 +1,43 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}++module Nix.Atoms where++#if MIN_VERSION_serialise(0, 2, 0)+import Codec.Serialise+#endif+import Control.DeepSeq+import Data.Data+import Data.Hashable+import Data.Text (Text, pack)+import GHC.Generics++-- | Atoms are values that evaluate to themselves. This means that+-- they appear in both the parsed AST (in the form of literals) and+-- the evaluated form.+data NAtom+ -- | An integer. The c nix implementation currently only supports+ -- integers that fit in the range of 'Int64'.+ = NInt Integer+ -- | A floating point number+ | NFloat Float+ -- | Booleans.+ | NBool Bool+ -- | Null values. There's only one of this variant.+ | NNull+ deriving (Eq, Ord, Generic, Typeable, Data, Show, Read, NFData,+ Hashable)++#if MIN_VERSION_serialise(0, 2, 0)+instance Serialise NAtom+#endif++-- | Translate an atom into its nix representation.+atomText :: NAtom -> Text+atomText (NInt i) = pack (show i)+atomText (NFloat f) = pack (show f)+atomText (NBool b) = if b then "true" else "false"+atomText NNull = "null"
@@ -0,0 +1,996 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PackageImports #-}+{-# LANGUAGE PartialTypeSignatures #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE ViewPatterns #-}++{-# OPTIONS_GHC -Wno-missing-signatures #-}+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}++module Nix.Builtins (builtins) where++import Control.Monad+import Control.Monad.Catch+import Control.Monad.ListM (sortByM)+import Control.Monad.Reader (asks)++-- Using package imports here because there is a bug in cabal2nix that forces+-- us to put the hashing package in the unconditional dependency list.+-- See https://github.com/NixOS/cabal2nix/issues/348 for more info+#if MIN_VERSION_hashing(0, 1, 0)+import Crypto.Hash+import qualified "hashing" Crypto.Hash.MD5 as MD5+import qualified "hashing" Crypto.Hash.SHA1 as SHA1+import qualified "hashing" Crypto.Hash.SHA256 as SHA256+import qualified "hashing" Crypto.Hash.SHA512 as SHA512+#else+import Data.ByteString.Base16 as Base16+import qualified "cryptohash-md5" Crypto.Hash.MD5 as MD5+import qualified "cryptohash-sha1" Crypto.Hash.SHA1 as SHA1+import qualified "cryptohash-sha256" Crypto.Hash.SHA256 as SHA256+import qualified "cryptohash-sha512" Crypto.Hash.SHA512 as SHA512+#endif+import qualified Data.Aeson as A+import qualified Data.Aeson.Encoding as A+import Data.Align (alignWith)+import Data.Array+import Data.ByteString (ByteString)+import qualified Data.ByteString as B+import qualified Data.ByteString.Lazy as LBS+import Data.Char (isDigit)+import Data.Coerce+import Data.Fix+import Data.Foldable (foldrM)+import qualified Data.HashMap.Lazy as M+import Data.List+import Data.Maybe+import Data.Semigroup+import Data.Set (Set)+import qualified Data.Set as S+import Data.Text (Text)+import qualified Data.Text as Text+import Data.Text.Encoding+import qualified Data.Text.Lazy as LazyText+import qualified Data.Text.Lazy.Builder as Builder+import Data.These (fromThese)+import qualified Data.Time.Clock.POSIX as Time+import Data.Traversable (mapM)+import Language.Haskell.TH.Syntax (addDependentFile, runIO)+import Nix.Atoms+import Nix.Convert+import Nix.Effects+import qualified Nix.Eval as Eval+import Nix.Exec+import Nix.Expr.Types+import Nix.Expr.Types.Annotated+import Nix.Frames+import Nix.Normal+import Nix.Options+import Nix.Parser+import Nix.Render+import Nix.Scope+import Nix.Thunk+import Nix.Utils+import Nix.Value+import Nix.XML+import System.FilePath+import System.Posix.Files+import Text.Regex.TDFA++builtins :: (MonadNix e m, Scoped e (NThunk m) m)+ => m (Scopes m (NThunk m))+builtins = do+ ref <- thunk $ flip nvSet M.empty <$> buildMap+ lst <- ([("builtins", ref)] ++) <$> topLevelBuiltins+ pushScope (M.fromList lst) currentScopes+ where+ buildMap = M.fromList . map mapping <$> builtinsList+ topLevelBuiltins = map mapping <$> fullBuiltinsList++ fullBuiltinsList = map go <$> builtinsList+ where+ go b@(Builtin TopLevel _) = b+ go (Builtin Normal (name, builtin)) =+ Builtin TopLevel ("__" <> name, builtin)++data BuiltinType = Normal | TopLevel+data Builtin m = Builtin+ { _kind :: BuiltinType+ , mapping :: (Text, NThunk m)+ }++valueThunk :: forall e m. MonadNix e m => NValue m -> NThunk m+valueThunk = value @_ @_ @m++force' :: forall e m. MonadNix e m => NThunk m -> m (NValue m)+force' = force ?? pure++builtinsList :: forall e m. MonadNix e m => m [ Builtin m ]+builtinsList = sequence [+ do version <- toValue ("2.0" :: Text)+ pure $ Builtin Normal ("nixVersion", version)++ , do version <- toValue (5 :: Int)+ pure $ Builtin Normal ("langVersion", version)++ , add0 Normal "nixPath" nixPath+ , add TopLevel "abort" throw_ -- for now+ , add2 Normal "add" add_+ , add2 Normal "all" all_+ , add2 Normal "any" any_+ , add Normal "attrNames" attrNames+ , add Normal "attrValues" attrValues+ , add TopLevel "baseNameOf" baseNameOf+ , add2 Normal "catAttrs" catAttrs+ , add2 Normal "compareVersions" compareVersions_+ , add Normal "concatLists" concatLists+ , add' Normal "concatStringsSep" (arity2 Text.intercalate)+ , add0 Normal "currentSystem" currentSystem+ , add0 Normal "currentTime" currentTime_+ , add2 Normal "deepSeq" deepSeq+#if MIN_VERSION_base(4, 10, 0)+ -- TODO Remove this CPP after the Lift instance for NExpr works with GHC 8.0+ , add0 TopLevel "derivation" $(do+ let f = "data/nix/corepkgs/derivation.nix"+ addDependentFile f+ Success expr <- runIO $ parseNixFile f+ [| cata Eval.eval expr |]+ )+#endif+ , add TopLevel "derivationStrict" derivationStrict_+ , add TopLevel "dirOf" dirOf+ , add2 Normal "div" div_+ , add2 Normal "elem" elem_+ , add2 Normal "elemAt" elemAt_+ , add Normal "exec" exec_+ , add0 Normal "false" (return $ nvConstant $ NBool False)+ , add Normal "fetchTarball" fetchTarball+ , add Normal "fetchurl" fetchurl+ , add2 Normal "filter" filter_+ , add3 Normal "foldl'" foldl'_+ , add Normal "fromJSON" fromJSON+ , add Normal "functionArgs" functionArgs+ , add2 Normal "genList" genList+ , add Normal "genericClosure" genericClosure+ , add2 Normal "getAttr" getAttr+ , add Normal "getEnv" getEnv_+ , add2 Normal "hasAttr" hasAttr+ , add Normal "hasContext" hasContext+ , add' Normal "hashString" hashString+ , add Normal "head" head_+ , add TopLevel "import" import_+ , add2 Normal "intersectAttrs" intersectAttrs+ , add Normal "isAttrs" isAttrs+ , add Normal "isBool" isBool+ , add Normal "isFloat" isFloat+ , add Normal "isFunction" isFunction+ , add Normal "isInt" isInt+ , add Normal "isList" isList+ , add TopLevel "isNull" isNull+ , add Normal "isString" isString+ , add Normal "length" length_+ , add2 Normal "lessThan" lessThan+ , add Normal "listToAttrs" listToAttrs+ , add2 TopLevel "map" map_+ , add2 Normal "match" match_+ , add2 Normal "mul" mul_+ , add0 Normal "null" (return $ nvConstant NNull)+ , add Normal "parseDrvName" parseDrvName+ , add2 Normal "partition" partition_+ , add Normal "pathExists" pathExists_+ , add TopLevel "placeholder" placeHolder+ , add Normal "readDir" readDir_+ , add Normal "readFile" readFile_+ , add2 TopLevel "removeAttrs" removeAttrs+ , add3 Normal "replaceStrings" replaceStrings+ , add2 TopLevel "scopedImport" scopedImport+ , add2 Normal "seq" seq_+ , add2 Normal "sort" sort_+ , add2 Normal "split" split_+ , add Normal "splitVersion" splitVersion_+ , add0 Normal "storeDir" (return $ nvPath "/nix/store")+ , add' Normal "stringLength" (arity1 Text.length)+ , add' Normal "sub" (arity2 ((-) @Integer))+ , add' Normal "substring" substring+ , add Normal "tail" tail_+ , add0 Normal "true" (return $ nvConstant $ NBool True)+ , add TopLevel "throw" throw_+ , add' Normal "toJSON"+ (arity1 $ decodeUtf8 . LBS.toStrict . A.encodingToLazyByteString+ . toEncodingSorted)+ , add Normal "toPath" toPath+ , add TopLevel "toString" toString+ , add Normal "toXML" toXML_+ , add2 TopLevel "trace" trace_+ , add Normal "tryEval" tryEval+ , add Normal "typeOf" typeOf+ , add Normal "unsafeDiscardStringContext" unsafeDiscardStringContext+ , add2 Normal "unsafeGetAttrPos" unsafeGetAttrPos+ , add Normal "valueSize" getRecursiveSize+ ]+ where+ wrap t n f = Builtin t (n, f)++ arity1 f = Prim . pure . f+ arity2 f = ((Prim . pure) .) . f++ mkThunk n = thunk . withFrame Info+ (ErrorCall $ "While calling builtin " ++ Text.unpack n ++ "\n")++ add0 t n v = wrap t n <$> mkThunk n v+ add t n v = wrap t n <$> mkThunk n (builtin (Text.unpack n) v)+ add2 t n v = wrap t n <$> mkThunk n (builtin2 (Text.unpack n) v)+ add3 t n v = wrap t n <$> mkThunk n (builtin3 (Text.unpack n) v)++ add' :: ToBuiltin m a => BuiltinType -> Text -> a -> m (Builtin m)+ add' t n v = wrap t n <$> mkThunk n (toBuiltin (Text.unpack n) v)++-- Primops++foldNixPath :: forall e m r. MonadNix e m+ => (FilePath -> Maybe String -> r -> m r) -> r -> m r+foldNixPath f z = do+ mres <- lookupVar @_ @(NThunk m) "__includes"+ dirs <- case mres of+ Nothing -> return []+ Just v -> fromNix @[Text] v+ menv <- getEnvVar "NIX_PATH"+ foldrM go z $ dirs ++ case menv of+ Nothing -> []+ Just str -> Text.splitOn ":" (Text.pack str)+ where+ go x rest = case Text.splitOn "=" x of+ [p] -> f (Text.unpack p) Nothing rest+ [n, p] -> f (Text.unpack p) (Just (Text.unpack n)) rest+ _ -> throwError $ ErrorCall $ "Unexpected entry in NIX_PATH: " ++ show x++nixPath :: MonadNix e m => m (NValue m)+nixPath = fmap nvList $ flip foldNixPath [] $ \p mn rest ->+ pure $ valueThunk+ (flip nvSet mempty $ M.fromList+ [ ("path", valueThunk $ nvPath p)+ , ("prefix", valueThunk $+ nvStr (Text.pack (fromMaybe "" mn)) mempty) ]) : rest++toString :: MonadNix e m => m (NValue m) -> m (NValue m)+toString str =+ str >>= normalForm >>= valueText False >>= toNix @(Text, DList Text)++hasAttr :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+hasAttr x y =+ fromValue @Text x >>= \key ->+ fromValue @(AttrSet (NThunk m), AttrSet SourcePos) y >>= \(aset, _) ->+ toNix $ M.member key aset++attrsetGet :: MonadNix e m => Text -> AttrSet t -> m t+attrsetGet k s = case M.lookup k s of+ Just v -> pure v+ Nothing ->+ throwError $ ErrorCall $ "Attribute '" ++ Text.unpack k ++ "' required"++hasContext :: MonadNix e m => m (NValue m) -> m (NValue m)+hasContext =+ toNix . not . null . (appEndo ?? []) . snd <=< fromValue @(Text, DList Text)++getAttr :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+getAttr x y = x >>= \x' -> y >>= \y' -> case (x', y') of+ (NVStr key _, NVSet aset _) -> attrsetGet key aset >>= force'+ (x, y) -> throwError $ ErrorCall $ "Invalid types for builtin.getAttr: "+ ++ show (x, y)++unsafeGetAttrPos :: forall e m. MonadNix e m+ => m (NValue m) -> m (NValue m) -> m (NValue m)+unsafeGetAttrPos x y = x >>= \x' -> y >>= \y' -> case (x', y') of+ (NVStr key _, NVSet _ apos) -> case M.lookup key apos of+ Nothing -> pure $ nvConstant NNull+ Just delta -> toValue delta+ (x, y) -> throwError $ ErrorCall $ "Invalid types for builtin.unsafeGetAttrPos: "+ ++ show (x, y)++-- This function is a bit special in that it doesn't care about the contents+-- of the list.+length_ :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+length_ = toValue . (length :: [NThunk m] -> Int) <=< fromValue++add_ :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+add_ x y = x >>= \x' -> y >>= \y' -> case (x', y') of+ (NVConstant (NInt x), NVConstant (NInt y)) ->+ toNix ( x + y :: Integer)+ (NVConstant (NFloat x), NVConstant (NInt y)) -> toNix (x + fromInteger y)+ (NVConstant (NInt x), NVConstant (NFloat y)) -> toNix (fromInteger x + y)+ (NVConstant (NFloat x), NVConstant (NFloat y)) -> toNix (x + y)+ (_, _) ->+ throwError $ Addition x' y'++mul_ :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+mul_ x y = x >>= \x' -> y >>= \y' -> case (x', y') of+ (NVConstant (NInt x), NVConstant (NInt y)) ->+ toNix ( x * y :: Integer)+ (NVConstant (NFloat x), NVConstant (NInt y)) -> toNix (x * fromInteger y)+ (NVConstant (NInt x), NVConstant (NFloat y)) -> toNix (fromInteger x * y)+ (NVConstant (NFloat x), NVConstant (NFloat y)) -> toNix (x * y)+ (_, _) ->+ throwError $ Multiplication x' y'++div_ :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+div_ x y = x >>= \x' -> y >>= \y' -> case (x', y') of+ (NVConstant (NInt x), NVConstant (NInt y)) ->+ toNix (floor (fromInteger x / fromInteger y :: Double) :: Integer)+ (NVConstant (NFloat x), NVConstant (NInt y)) -> toNix (x / fromInteger y)+ (NVConstant (NInt x), NVConstant (NFloat y)) -> toNix (fromInteger x / y)+ (NVConstant (NFloat x), NVConstant (NFloat y)) -> toNix (x / y)+ (_, _) ->+ throwError $ Division x' y'++anyM :: Monad m => (a -> m Bool) -> [a] -> m Bool+anyM _ [] = return False+anyM p (x:xs) = do+ q <- p x+ if q then return True+ else anyM p xs++any_ :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+any_ fun xs = fun >>= \f ->+ toNix <=< anyM fromValue <=< mapM ((f `callFunc`) . force')+ <=< fromValue $ xs++allM :: Monad m => (a -> m Bool) -> [a] -> m Bool+allM _ [] = return True+allM p (x:xs) = do+ q <- p x+ if q then allM p xs+ else return False++all_ :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+all_ fun xs = fun >>= \f ->+ toNix <=< allM fromValue <=< mapM ((f `callFunc`) . force')+ <=< fromValue $ xs++foldl'_ :: forall e m. MonadNix e m+ => m (NValue m) -> m (NValue m) -> m (NValue m) -> m (NValue m)+foldl'_ fun z xs =+ fun >>= \f -> fromValue @[NThunk m] xs >>= foldl' (go f) z+ where+ go f b a = f `callFunc` b >>= (`callFunc` force' a)++head_ :: MonadNix e m => m (NValue m) -> m (NValue m)+head_ = fromValue >=> \case+ [] -> throwError $ ErrorCall "builtins.head: empty list"+ h:_ -> force' h++tail_ :: MonadNix e m => m (NValue m) -> m (NValue m)+tail_ = fromValue >=> \case+ [] -> throwError $ ErrorCall "builtins.tail: empty list"+ _:t -> return $ nvList t++data VersionComponent+ = VersionComponent_Pre -- ^ The string "pre"+ | VersionComponent_String Text -- ^ A string other than "pre"+ | VersionComponent_Number Integer -- ^ A number+ deriving (Show, Read, Eq, Ord)++versionComponentToString :: VersionComponent -> Text+versionComponentToString = \case+ VersionComponent_Pre -> "pre"+ VersionComponent_String s -> s+ VersionComponent_Number n -> Text.pack $ show n++-- | Based on https://github.com/NixOS/nix/blob/4ee4fda521137fed6af0446948b3877e0c5db803/src/libexpr/names.cc#L44+versionComponentSeparators :: String+versionComponentSeparators = ".-"++splitVersion :: Text -> [VersionComponent]+splitVersion s = case Text.uncons s of+ Nothing -> []+ Just (h, t)+ | h `elem` versionComponentSeparators -> splitVersion t+ | isDigit h ->+ let (digits, rest) = Text.span isDigit s+ in VersionComponent_Number (read $ Text.unpack digits) : splitVersion rest+ | otherwise ->+ let (chars, rest) = Text.span (\c -> not $ isDigit c || c `elem` versionComponentSeparators) s+ thisComponent = case chars of+ "pre" -> VersionComponent_Pre+ x -> VersionComponent_String x+ in thisComponent : splitVersion rest++splitVersion_ :: MonadNix e m => m (NValue m) -> m (NValue m)+splitVersion_ = fromValue >=> \s -> do+ let vals = flip map (splitVersion s) $ \c ->+ valueThunk $ nvStr (versionComponentToString c) mempty+ return $ nvList vals++compareVersions :: Text -> Text -> Ordering+compareVersions s1 s2 =+ mconcat $ alignWith f (splitVersion s1) (splitVersion s2)+ where+ z = VersionComponent_String ""+ f = uncurry compare . fromThese z z++compareVersions_ :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+compareVersions_ t1 t2 =+ fromValue t1 >>= \s1 ->+ fromValue t2 >>= \s2 ->+ return $ nvConstant $ NInt $ case compareVersions s1 s2 of+ LT -> -1+ EQ -> 0+ GT -> 1++splitDrvName :: Text -> (Text, Text)+splitDrvName s =+ let sep = "-"+ pieces = Text.splitOn sep s+ isFirstVersionPiece p = case Text.uncons p of+ Just (h, _) | isDigit h -> True+ _ -> False+ -- Like 'break', but always puts the first item into the first result+ -- list+ breakAfterFirstItem :: (a -> Bool) -> [a] -> ([a], [a])+ breakAfterFirstItem f = \case+ h : t ->+ let (a, b) = break f t+ in (h : a, b)+ [] -> ([], [])+ (namePieces, versionPieces) =+ breakAfterFirstItem isFirstVersionPiece pieces+ in (Text.intercalate sep namePieces, Text.intercalate sep versionPieces)++parseDrvName :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+parseDrvName = fromValue >=> \(s :: Text) -> do+ let (name :: Text, version :: Text) = splitDrvName s+ -- jww (2018-04-15): There should be an easier way to write this.+ (toValue =<<) $ sequence $ M.fromList+ [ ("name" :: Text, thunk (toValue @_ @_ @(NValue m) name))+ , ("version", thunk (toValue version)) ]++match_ :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+match_ pat str =+ fromValue pat >>= \p ->+ fromValue str >>= \s -> do+ let re = makeRegex (encodeUtf8 p) :: Regex+ case matchOnceText re (encodeUtf8 s) of+ Just ("", sarr, "") -> do+ let s = map fst (elems sarr)+ nvList <$> traverse (toValue . decodeUtf8)+ (if length s > 1 then tail s else s)+ _ -> pure $ nvConstant NNull++split_ :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+split_ pat str =+ fromValue pat >>= \p ->+ fromValue str >>= \s -> do+ let re = makeRegex (encodeUtf8 p) :: Regex+ haystack = encodeUtf8 s+ return $ nvList $+ splitMatches 0 (map elems $ matchAllText re haystack) haystack++splitMatches+ :: forall e m. MonadNix e m+ => Int+ -> [[(ByteString, (Int, Int))]]+ -> ByteString+ -> [NThunk m]+splitMatches _ [] haystack = [thunkStr haystack]+splitMatches _ ([]:_) _ = error "Error in splitMatches: this should never happen!"+splitMatches numDropped (((_,(start,len)):captures):mts) haystack =+ thunkStr before : caps : splitMatches (numDropped + relStart + len) mts (B.drop len rest)+ where+ relStart = max 0 start - numDropped+ (before,rest) = B.splitAt relStart haystack+ caps = valueThunk $ nvList (map f captures)+ f (a,(s,_)) = if s < 0 then valueThunk (nvConstant NNull) else thunkStr a++thunkStr s = valueThunk (nvStr (decodeUtf8 s) mempty)++substring :: MonadNix e m => Int -> Int -> Text -> Prim m Text+substring start len str = Prim $+ if start < 0 --NOTE: negative values of 'len' are OK+ then throwError $ ErrorCall $ "builtins.substring: negative start position: " ++ show start+ else pure $ Text.take len $ Text.drop start str++attrNames :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+attrNames = fromValue @(ValueSet m) >=> toNix . sort . M.keys++attrValues :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+attrValues = fromValue @(ValueSet m) >=>+ toValue . fmap snd . sortOn (fst @Text @(NThunk m)) . M.toList++map_ :: forall e m. MonadNix e m+ => m (NValue m) -> m (NValue m) -> m (NValue m)+map_ fun xs = fun >>= \f ->+ toNix <=< traverse (thunk . withFrame Debug+ (ErrorCall "While applying f in map:\n")+ . (f `callFunc`) . force')+ <=< fromValue @[NThunk m] $ xs++filter_ :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+filter_ fun xs = fun >>= \f ->+ toNix <=< filterM (fromValue <=< callFunc f . force')+ <=< fromValue @[NThunk m] $ xs++catAttrs :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+catAttrs attrName xs =+ fromValue @Text attrName >>= \n ->+ fromValue @[NThunk m] xs >>= \l ->+ fmap (nvList . catMaybes) $+ forM l $ fmap (M.lookup n) . fromValue++baseNameOf :: MonadNix e m => m (NValue m) -> m (NValue m)+baseNameOf x = x >>= \case+ NVStr path ctx -> pure $ nvStr (Text.pack $ takeFileName $ Text.unpack path) ctx+ NVPath path -> pure $ nvPath $ takeFileName path+ v -> throwError $ ErrorCall $ "dirOf: expected string or path, got " ++ show v++dirOf :: MonadNix e m => m (NValue m) -> m (NValue m)+dirOf x = x >>= \case+ NVStr path ctx -> pure $ nvStr (Text.pack $ takeDirectory $ Text.unpack path) ctx+ NVPath path -> pure $ nvPath $ takeDirectory path+ v -> throwError $ ErrorCall $ "dirOf: expected string or path, got " ++ show v++-- jww (2018-04-28): This should only be a string argument, and not coerced?+unsafeDiscardStringContext :: MonadNix e m => m (NValue m) -> m (NValue m)+unsafeDiscardStringContext = fromValue @Text >=> toNix++seq_ :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+seq_ a b = a >> b++deepSeq :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+deepSeq a b = do+ -- We evaluate 'a' only for its effects, so data cycles are ignored.+ _ <- normalFormBy (forceEffects . coerce . _baseThunk) 0 =<< a++ -- Then we evaluate the other argument to deepseq, thus this function+ -- should always produce a result (unlike applying 'deepseq' on infinitely+ -- recursive data structures in Haskell).+ b++elem_ :: forall e m. MonadNix e m+ => m (NValue m) -> m (NValue m) -> m (NValue m)+elem_ x xs = x >>= \x' ->+ toValue <=< anyM (valueEq x' <=< force') <=< fromValue @[NThunk m] $ xs++elemAt :: [a] -> Int -> Maybe a+elemAt ls i = case drop i ls of+ [] -> Nothing+ a:_ -> Just a++elemAt_ :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+elemAt_ xs n = fromValue n >>= \n' -> fromValue xs >>= \xs' ->+ case elemAt xs' n' of+ Just a -> force' a+ Nothing -> throwError $ ErrorCall $ "builtins.elem: Index " ++ show n'+ ++ " too large for list of length " ++ show (length xs')++genList :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+genList generator = fromValue @Integer >=> \n ->+ if n >= 0+ then generator >>= \f ->+ toNix =<< forM [0 .. n - 1] (\i -> thunk $ f `callFunc` toNix i)+ else throwError $ ErrorCall $ "builtins.genList: Expected a non-negative number, got "+ ++ show n++genericClosure :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+genericClosure = fromValue @(AttrSet (NThunk m)) >=> \s ->+ case (M.lookup "startSet" s, M.lookup "operator" s) of+ (Nothing, Nothing) ->+ throwError $ ErrorCall $+ "builtins.genericClosure: "+ ++ "Attributes 'startSet' and 'operator' required"+ (Nothing, Just _) ->+ throwError $ ErrorCall $+ "builtins.genericClosure: Attribute 'startSet' required"+ (Just _, Nothing) ->+ throwError $ ErrorCall $+ "builtins.genericClosure: Attribute 'operator' required"+ (Just startSet, Just operator) ->+ fromValue @[NThunk m] startSet >>= \ss ->+ force operator $ \op ->+ toValue @[NThunk m] =<< snd <$> go op ss S.empty+ where+ go :: NValue m -> [NThunk m] -> Set (NValue m)+ -> m (Set (NValue m), [NThunk m])+ go _ [] ks = pure (ks, [])+ go op (t:ts) ks =+ force t $ \v -> fromValue @(AttrSet (NThunk m)) t >>= \s ->+ case M.lookup "key" s of+ Nothing ->+ throwError $ ErrorCall $+ "builtins.genericClosure: Attribute 'key' required"+ Just k -> force k $ \k' ->+ if S.member k' ks+ then go op ts ks+ else do+ ys <- fromValue @[NThunk m] =<< (op `callFunc` pure v)+ case S.toList ks of+ [] -> checkComparable k' k'+ j:_ -> checkComparable k' j+ fmap (t:) <$> go op (ts ++ ys) (S.insert k' ks)++replaceStrings :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m) -> m (NValue m)+replaceStrings tfrom tto ts =+ fromNix tfrom >>= \(from :: [Text]) ->+ fromNix tto >>= \(to :: [Text]) ->+ fromValue ts >>= \(s :: Text) -> do+ when (length from /= length to) $+ throwError $ ErrorCall $+ "'from' and 'to' arguments to 'replaceStrings'"+ ++ " have different lengths"+ let lookupPrefix s = do+ (prefix, replacement) <-+ find ((`Text.isPrefixOf` s) . fst) $ zip from to+ let rest = Text.drop (Text.length prefix) s+ return (prefix, replacement, rest)+ finish = LazyText.toStrict . Builder.toLazyText+ go orig result = case lookupPrefix orig of+ Nothing -> case Text.uncons orig of+ Nothing -> finish result+ Just (h, t) -> go t $ result <> Builder.singleton h+ Just (prefix, replacement, rest) -> case prefix of+ "" -> case Text.uncons rest of+ Nothing -> finish $ result <> Builder.fromText replacement+ Just (h, t) -> go t $ mconcat+ [ result+ , Builder.fromText replacement+ , Builder.singleton h+ ]+ _ -> go rest $ result <> Builder.fromText replacement+ toNix $ go s mempty++removeAttrs :: forall e m. MonadNix e m+ => m (NValue m) -> m (NValue m) -> m (NValue m)+removeAttrs set = fromNix >=> \(toRemove :: [Text]) ->+ fromValue @(AttrSet (NThunk m),+ AttrSet SourcePos) set >>= \(m, p) ->+ toNix (go m toRemove, go p toRemove)+ where+ go = foldl' (flip M.delete)++intersectAttrs :: forall e m. MonadNix e m+ => m (NValue m) -> m (NValue m) -> m (NValue m)+intersectAttrs set1 set2 =+ fromValue @(AttrSet (NThunk m),+ AttrSet SourcePos) set1 >>= \(s1, p1) ->+ fromValue @(AttrSet (NThunk m),+ AttrSet SourcePos) set2 >>= \(s2, p2) ->+ return $ nvSet (s2 `M.intersection` s1) (p2 `M.intersection` p1)++functionArgs :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+functionArgs fun = fun >>= \case+ NVClosure p _ -> toValue @(AttrSet (NThunk m)) $+ valueThunk . nvConstant . NBool <$>+ case p of+ Param name -> M.singleton name False+ ParamSet s _ _ -> isJust <$> M.fromList s+ v -> throwError $ ErrorCall $+ "builtins.functionArgs: expected function, got " ++ show v++toPath :: MonadNix e m => m (NValue m) -> m (NValue m)+toPath = fromValue @Path >=> toNix @Path++pathExists_ :: MonadNix e m => m (NValue m) -> m (NValue m)+pathExists_ path = path >>= \case+ NVPath p -> toNix =<< pathExists p+ NVStr s _ -> toNix =<< pathExists (Text.unpack s)+ v -> throwError $ ErrorCall $+ "builtins.pathExists: expected path, got " ++ show v++hasKind :: forall a e m. (MonadNix e m, FromValue a m (NValue m))+ => m (NValue m) -> m (NValue m)+hasKind = fromValueMay >=> toNix . \case Just (_ :: a) -> True; _ -> False++isAttrs :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+isAttrs = hasKind @(ValueSet m)++isList :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+isList = hasKind @[NThunk m]++isString :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+isString = hasKind @Text++isInt :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+isInt = hasKind @Int++isFloat :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+isFloat = hasKind @Float++isBool :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+isBool = hasKind @Bool++isNull :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+isNull = hasKind @()++isFunction :: MonadNix e m => m (NValue m) -> m (NValue m)+isFunction func = func >>= \case+ NVClosure {} -> toValue True+ _ -> toValue False++throw_ :: MonadNix e m => m (NValue m) -> m (NValue m)+throw_ = fromValue >=> throwError . ErrorCall . Text.unpack++import_ :: MonadNix e m => m (NValue m) -> m (NValue m)+import_ = fromValue >=> importPath M.empty . getPath++scopedImport :: forall e m. MonadNix e m+ => m (NValue m) -> m (NValue m) -> m (NValue m)+scopedImport aset path =+ fromValue aset >>= \s ->+ fromValue path >>= \p -> importPath @m s (getPath p)++getEnv_ :: MonadNix e m => m (NValue m) -> m (NValue m)+getEnv_ = fromValue >=> \s -> do+ mres <- getEnvVar (Text.unpack s)+ toNix $ case mres of+ Nothing -> ""+ Just v -> Text.pack v++sort_ :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+sort_ comparator xs = comparator >>= \comp ->+ fromValue xs >>= sortByM (cmp comp) >>= toValue+ where+ cmp f a b = do+ isLessThan <- f `callFunc` force' a >>= (`callFunc` force' b)+ fromValue isLessThan >>= \case+ True -> pure LT+ False -> do+ isGreaterThan <- f `callFunc` force' b >>= (`callFunc` force' a)+ fromValue isGreaterThan <&> \case+ True -> GT+ False -> EQ++lessThan :: MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+lessThan ta tb = ta >>= \va -> tb >>= \vb -> do+ let badType = throwError $ ErrorCall $+ "builtins.lessThan: expected two numbers or two strings, "+ ++ "got " ++ show va ++ " and " ++ show vb+ nvConstant . NBool <$> case (va, vb) of+ (NVConstant ca, NVConstant cb) -> case (ca, cb) of+ (NInt a, NInt b) -> pure $ a < b+ (NFloat a, NInt b) -> pure $ a < fromInteger b+ (NInt a, NFloat b) -> pure $ fromInteger a < b+ (NFloat a, NFloat b) -> pure $ a < b+ _ -> badType+ (NVStr a _, NVStr b _) -> pure $ a < b+ _ -> badType++concatLists :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+concatLists = fromValue @[NThunk m]+ >=> mapM (fromValue @[NThunk m] >=> pure)+ >=> toValue . concat++listToAttrs :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+listToAttrs = fromValue @[NThunk m] >=> \l ->+ fmap (flip nvSet M.empty . M.fromList . reverse) $+ forM l $ fromValue @(AttrSet (NThunk m)) >=> \s -> do+ name <- attrsetGet "name" s+ val <- attrsetGet "value" s+ fromValue name <&> (, val)++hashString :: MonadNix e m => Text -> Text -> Prim m Text+hashString algo s = Prim $ do+ case algo of+ "md5" -> pure $+#if MIN_VERSION_hashing(0, 1, 0)+ Text.pack $ show (hash (encodeUtf8 s) :: MD5.MD5)+#else+ decodeUtf8 $ Base16.encode $ MD5.hash $ encodeUtf8 s+#endif+ "sha1" -> pure $+#if MIN_VERSION_hashing(0, 1, 0)+ Text.pack $ show (hash (encodeUtf8 s) :: SHA1.SHA1)+#else+ decodeUtf8 $ Base16.encode $ SHA1.hash $ encodeUtf8 s+#endif+ "sha256" -> pure $+#if MIN_VERSION_hashing(0, 1, 0)+ Text.pack $ show (hash (encodeUtf8 s) :: SHA256.SHA256)+#else+ decodeUtf8 $ Base16.encode $ SHA256.hash $ encodeUtf8 s+#endif+ "sha512" -> pure $+#if MIN_VERSION_hashing(0, 1, 0)+ Text.pack $ show (hash (encodeUtf8 s) :: SHA512.SHA512)+#else+ decodeUtf8 $ Base16.encode $ SHA512.hash $ encodeUtf8 s+#endif+ _ -> throwError $ ErrorCall $ "builtins.hashString: "+ ++ "expected \"md5\", \"sha1\", \"sha256\", or \"sha512\", got " ++ show algo++placeHolder :: MonadNix e m => m (NValue m) -> m (NValue m)+placeHolder = fromValue @Text >=> \_ -> do+ h <- runPrim (hashString "sha256" "fdasdfas")+ toNix h++absolutePathFromValue :: MonadNix e m => NValue m -> m FilePath+absolutePathFromValue = \case+ NVStr pathText _ -> do+ let path = Text.unpack pathText+ unless (isAbsolute path) $+ throwError $ ErrorCall $ "string " ++ show path ++ " doesn't represent an absolute path"+ pure path+ NVPath path -> pure path+ v -> throwError $ ErrorCall $ "expected a path, got " ++ show v++readFile_ :: MonadNix e m => m (NValue m) -> m (NValue m)+readFile_ path =+ path >>= absolutePathFromValue >>= Nix.Render.readFile >>= toNix++data FileType+ = FileTypeRegular+ | FileTypeDirectory+ | FileTypeSymlink+ | FileTypeUnknown+ deriving (Show, Read, Eq, Ord)++instance Applicative m => ToNix FileType m (NValue m) where+ toNix = toNix . \case+ FileTypeRegular -> "regular" :: Text+ FileTypeDirectory -> "directory"+ FileTypeSymlink -> "symlink"+ FileTypeUnknown -> "unknown"++readDir_ :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+readDir_ pathThunk = do+ path <- absolutePathFromValue =<< pathThunk+ items <- listDirectory path+ itemsWithTypes <- forM items $ \item -> do+ s <- Nix.Effects.getSymbolicLinkStatus $ path </> item+ let t = if+ | isRegularFile s -> FileTypeRegular+ | isDirectory s -> FileTypeDirectory+ | isSymbolicLink s -> FileTypeSymlink+ | otherwise -> FileTypeUnknown+ pure (Text.pack item, t)+ toNix (M.fromList itemsWithTypes)++fromJSON :: MonadNix e m => m (NValue m) -> m (NValue m)+fromJSON = fromValue >=> \encoded ->+ case A.eitherDecodeStrict' @A.Value $ encodeUtf8 encoded of+ Left jsonError ->+ throwError $ ErrorCall $ "builtins.fromJSON: " ++ jsonError+ Right v -> toValue v++toXML_ :: MonadNix e m => m (NValue m) -> m (NValue m)+toXML_ v = v >>= normalForm >>= \x ->+ pure $ nvStr (Text.pack (toXML x)) mempty++typeOf :: MonadNix e m => m (NValue m) -> m (NValue m)+typeOf v = v >>= toNix @Text . \case+ NVConstant a -> case a of+ NInt _ -> "int"+ NFloat _ -> "float"+ NBool _ -> "bool"+ NNull -> "null"+ NVStr _ _ -> "string"+ NVList _ -> "list"+ NVSet _ _ -> "set"+ NVClosure {} -> "lambda"+ NVPath _ -> "path"+ NVBuiltin _ _ -> "lambda"+ _ -> error "Pattern synonyms obscure complete patterns"++tryEval :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+tryEval e = catch (onSuccess <$> e) (pure . onError)+ where+ onSuccess v = flip nvSet M.empty $ M.fromList+ [ ("success", valueThunk (nvConstant (NBool True)))+ , ("value", valueThunk v)+ ]++ onError :: SomeException -> NValue m+ onError _ = flip nvSet M.empty $ M.fromList+ [ ("success", valueThunk (nvConstant (NBool False)))+ , ("value", valueThunk (nvConstant (NBool False)))+ ]++trace_ :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m) -> m (NValue m)+trace_ msg action = do+ traceEffect . Text.unpack =<< fromValue @Text msg+ action++exec_ :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+exec_ xs = do+ ls <- fromValue @[NThunk m] xs+ xs <- traverse (fromValue @Text . force') ls+ exec (map Text.unpack xs)++fetchTarball :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+fetchTarball v = v >>= \case+ NVSet s _ -> case M.lookup "url" s of+ Nothing -> throwError $ ErrorCall+ "builtins.fetchTarball: Missing url attribute"+ Just url -> force url $ go (M.lookup "sha256" s)+ v@NVStr {} -> go Nothing v+ v -> throwError $ ErrorCall $+ "builtins.fetchTarball: Expected URI or set, got " ++ show v+ where+ go :: Maybe (NThunk m) -> NValue m -> m (NValue m)+ go msha = \case+ NVStr uri _ -> fetch uri msha+ v -> throwError $ ErrorCall $+ "builtins.fetchTarball: Expected URI or string, got " ++ show v++{- jww (2018-04-11): This should be written using pipes in another module+ fetch :: Text -> Maybe (NThunk m) -> m (NValue m)+ fetch uri msha = case takeExtension (Text.unpack uri) of+ ".tgz" -> undefined+ ".gz" -> undefined+ ".bz2" -> undefined+ ".xz" -> undefined+ ".tar" -> undefined+ ext -> throwError $ ErrorCall $ "builtins.fetchTarball: Unsupported extension '"+ ++ ext ++ "'"+-}++ fetch :: Text -> Maybe (NThunk m) -> m (NValue m)+ fetch uri Nothing =+ nixInstantiateExpr $ "builtins.fetchTarball \"" +++ Text.unpack uri ++ "\""+ fetch url (Just m) = fromValue m >>= \sha ->+ nixInstantiateExpr $ "builtins.fetchTarball { "+ ++ "url = \"" ++ Text.unpack url ++ "\"; "+ ++ "sha256 = \"" ++ Text.unpack sha ++ "\"; }"++fetchurl :: forall e m. MonadNix e m => m (NValue m) -> m (NValue m)+fetchurl v = v >>= \case+ NVSet s _ -> attrsetGet "url" s >>= force ?? (go (M.lookup "sha256" s))+ v@NVStr {} -> go Nothing v+ v -> throwError $ ErrorCall $ "builtins.fetchurl: Expected URI or set, got "+ ++ show v+ where+ go :: Maybe (NThunk m) -> NValue m -> m (NValue m)+ go _msha = \case+ NVStr uri _ -> getURL uri -- msha+ v -> throwError $ ErrorCall $+ "builtins.fetchurl: Expected URI or string, got " ++ show v++partition_ :: forall e m. MonadNix e m+ => m (NValue m) -> m (NValue m) -> m (NValue m)+partition_ fun xs = fun >>= \f ->+ fromValue @[NThunk m] xs >>= \l -> do+ let match t = f `callFunc` force' t >>= fmap (, t) . fromValue+ selection <- traverse match l+ let (right, wrong) = partition fst selection+ let makeSide = valueThunk . nvList . map snd+ toValue @(AttrSet (NThunk m)) $+ M.fromList [("right", makeSide right), ("wrong", makeSide wrong)]++currentSystem :: MonadNix e m => m (NValue m)+currentSystem = do+ os <- getCurrentSystemOS+ arch <- getCurrentSystemArch+ return $ nvStr (arch <> "-" <> os) mempty++currentTime_ :: MonadNix e m => m (NValue m)+currentTime_ = do+ opts :: Options <- asks (view hasLens)+ toNix @Integer $ round $ Time.utcTimeToPOSIXSeconds (currentTime opts)++derivationStrict_ :: MonadNix e m => m (NValue m) -> m (NValue m)+derivationStrict_ = (>>= derivationStrict)++newtype Prim m a = Prim { runPrim :: m a }++-- | Types that support conversion to nix in a particular monad+class ToBuiltin m a | a -> m where+ toBuiltin :: String -> a -> m (NValue m)++instance (MonadNix e m, ToNix a m (NValue m))+ => ToBuiltin m (Prim m a) where+ toBuiltin _ p = toNix =<< runPrim p++instance (MonadNix e m, FromNix a m (NValue m), ToBuiltin m b)+ => ToBuiltin m (a -> b) where+ toBuiltin name f = return $ nvBuiltin name (fromNix >=> toBuiltin name . f)
@@ -0,0 +1,48 @@+{-# LANGUAGE CPP #-}++module Nix.Cache where++import qualified Data.ByteString.Lazy as BS+import Nix.Expr.Types.Annotated++#if defined (__linux__) && MIN_VERSION_base(4, 10, 0)+#define USE_COMPACT 1+#endif++#ifdef USE_COMPACT+import qualified Data.Compact as C+import qualified Data.Compact.Serialize as C+#endif+#if MIN_VERSION_serialise(0, 2, 0)+import qualified Codec.Serialise as S+#endif++readCache :: FilePath -> IO NExprLoc+readCache path = do+#if USE_COMPACT+ eres <- C.unsafeReadCompact path+ case eres of+ Left err -> error $ "Error reading cache file: " ++ err+ Right expr -> return $ C.getCompact expr+#else+#if MIN_VERSION_serialise(0, 2, 0)+ eres <- S.deserialiseOrFail <$> BS.readFile path+ case eres of+ Left err -> error $ "Error reading cache file: " ++ show err+ Right expr -> return expr+#else+ error "readCache not implemented for this platform"+#endif+#endif++writeCache :: FilePath -> NExprLoc -> IO ()+writeCache path expr =+#ifdef USE_COMPACT+ C.writeCompact path =<< C.compact expr+#else+#if MIN_VERSION_serialise(0, 2, 0)+ BS.writeFile path (S.serialise expr)+#else+ error "writeCache not implemented for this platform"+#endif+#endif
@@ -0,0 +1,33 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}++module Nix.Context where++import Nix.Options+import Nix.Scope+import Nix.Frames+import Nix.Utils+import Nix.Expr.Types.Annotated (SrcSpan, nullSpan)++data Context m v = Context+ { scopes :: Scopes m v+ , source :: SrcSpan+ , frames :: Frames+ , options :: Options+ }++instance Has (Context m v) (Scopes m v) where+ hasLens f (Context x y z w) = (\x' -> Context x' y z w) <$> f x++instance Has (Context m v) SrcSpan where+ hasLens f (Context x y z w) = (\y' -> Context x y' z w) <$> f y++instance Has (Context m v) Frames where+ hasLens f (Context x y z w) = (\z' -> Context x y z' w) <$> f z++instance Has (Context m v) Options where+ hasLens f (Context x y z w) = (\w' -> Context x y z w') <$> f w++newContext :: Options -> Context m v+newContext = Context emptyScopes nullSpan []
@@ -0,0 +1,583 @@+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DefaultSignatures #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MonoLocalBinds #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE UndecidableInstances #-}++{-# OPTIONS_GHC -Wno-missing-signatures #-}+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}++-- | Although there are a lot of instances in this file, really it's just a+-- combinatorial explosion of the following combinations:+--+-- - Several Haskell types being converted to/from Nix wrappers+-- - Several types of Nix wrappers+-- - Whether to be shallow or deep while unwrapping++module Nix.Convert where++import Control.Monad+import Data.Aeson (toJSON)+import qualified Data.Aeson as A+import Data.ByteString+import Data.Fix+import Data.HashMap.Lazy (HashMap)+import qualified Data.HashMap.Lazy as M+import Data.Scientific+import Data.Text (Text)+import qualified Data.Text as Text+import Data.Text.Encoding (encodeUtf8, decodeUtf8)+import qualified Data.Vector as V+import Nix.Atoms+import Nix.Effects+import Nix.Expr.Types+import Nix.Expr.Types.Annotated+import Nix.Frames+import Nix.Normal+import Nix.Thunk+import Nix.Utils+import Nix.Value++class FromValue a m v where+ fromValue :: v -> m a+ fromValueMay :: v -> m (Maybe a)++type Convertible e m = (Framed e m, MonadVar m, Typeable m)++instance Convertible e m => FromValue () m (NValueNF m) where+ fromValueMay = \case+ Fix (NVConstantF NNull) -> pure $ Just ()+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ ExpectationNF TNull v++instance Convertible e m+ => FromValue () m (NValue m) where+ fromValueMay = \case+ NVConstant NNull -> pure $ Just ()+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TNull v++instance Convertible e m+ => FromValue Bool m (NValueNF m) where+ fromValueMay = \case+ Fix (NVConstantF (NBool b)) -> pure $ Just b+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ ExpectationNF TBool v++instance Convertible e m+ => FromValue Bool m (NValue m) where+ fromValueMay = \case+ NVConstant (NBool b) -> pure $ Just b+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TBool v++instance Convertible e m+ => FromValue Int m (NValueNF m) where+ fromValueMay = \case+ Fix (NVConstantF (NInt b)) -> pure $ Just (fromInteger b)+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ ExpectationNF TInt v++instance Convertible e m+ => FromValue Int m (NValue m) where+ fromValueMay = \case+ NVConstant (NInt b) -> pure $ Just (fromInteger b)+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TInt v++instance Convertible e m+ => FromValue Integer m (NValueNF m) where+ fromValueMay = \case+ Fix (NVConstantF (NInt b)) -> pure $ Just b+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ ExpectationNF TInt v++instance Convertible e m+ => FromValue Integer m (NValue m) where+ fromValueMay = \case+ NVConstant (NInt b) -> pure $ Just b+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TInt v++instance Convertible e m+ => FromValue Float m (NValueNF m) where+ fromValueMay = \case+ Fix (NVConstantF (NFloat b)) -> pure $ Just b+ Fix (NVConstantF (NInt i)) -> pure $ Just (fromInteger i)+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ ExpectationNF TFloat v++instance Convertible e m+ => FromValue Float m (NValue m) where+ fromValueMay = \case+ NVConstant (NFloat b) -> pure $ Just b+ NVConstant (NInt i) -> pure $ Just (fromInteger i)+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TFloat v++instance (Convertible e m, MonadEffects m)+ => FromValue Text m (NValueNF m) where+ fromValueMay = \case+ Fix (NVStrF t _) -> pure $ Just t+ Fix (NVPathF p) -> Just . Text.pack . unStorePath <$> addPath p+ Fix (NVSetF s _) -> case M.lookup "outPath" s of+ Nothing -> pure Nothing+ Just p -> fromValueMay @Text p+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ ExpectationNF TString v++instance (Convertible e m, MonadThunk (NValue m) (NThunk m) m, MonadEffects m)+ => FromValue Text m (NValue m) where+ fromValueMay = \case+ NVStr t _ -> pure $ Just t+ NVPath p -> Just . Text.pack . unStorePath <$> addPath p+ NVSet s _ -> case M.lookup "outPath" s of+ Nothing -> pure Nothing+ Just p -> fromValueMay @Text p+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TString v++instance (Convertible e m, MonadEffects m)+ => FromValue (Text, DList Text) m (NValueNF m) where+ fromValueMay = \case+ Fix (NVStrF t d) -> pure $ Just (t, d)+ Fix (NVPathF p) -> Just . (,mempty) . Text.pack . unStorePath <$> addPath p+ Fix (NVSetF s _) -> case M.lookup "outPath" s of+ Nothing -> pure Nothing+ Just p -> fmap (,mempty) <$> fromValueMay @Text p+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ ExpectationNF TString v++instance (Convertible e m, MonadThunk (NValue m) (NThunk m) m, MonadEffects m)+ => FromValue (Text, DList Text) m (NValue m) where+ fromValueMay = \case+ NVStr t d -> pure $ Just (t, d)+ NVPath p -> Just . (,mempty) . Text.pack . unStorePath <$> addPath p+ NVSet s _ -> case M.lookup "outPath" s of+ Nothing -> pure Nothing+ Just p -> fmap (,mempty) <$> fromValueMay @Text p+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TString v++instance Convertible e m+ => FromValue ByteString m (NValueNF m) where+ fromValueMay = \case+ Fix (NVStrF t _) -> pure $ Just (encodeUtf8 t)+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ ExpectationNF TString v++instance Convertible e m+ => FromValue ByteString m (NValue m) where+ fromValueMay = \case+ NVStr t _ -> pure $ Just (encodeUtf8 t)+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TString v++newtype Path = Path { getPath :: FilePath }+ deriving Show++instance Convertible e m => FromValue Path m (NValueNF m) where+ fromValueMay = \case+ Fix (NVPathF p) -> pure $ Just (Path p)+ Fix (NVStrF s _) -> pure $ Just (Path (Text.unpack s))+ Fix (NVSetF s _) -> case M.lookup "outPath" s of+ Nothing -> pure Nothing+ Just p -> fromValueMay @Path p+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ ExpectationNF TPath v++instance (Convertible e m, MonadThunk (NValue m) (NThunk m) m)+ => FromValue Path m (NValue m) where+ fromValueMay = \case+ NVPath p -> pure $ Just (Path p)+ NVStr s _ -> pure $ Just (Path (Text.unpack s))+ NVSet s _ -> case M.lookup "outPath" s of+ Nothing -> pure Nothing+ Just p -> fromValueMay @Path p+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TPath v++instance (Convertible e m, FromValue a m (NValueNF m), Show a)+ => FromValue [a] m (NValueNF m) where+ fromValueMay = \case+ Fix (NVListF l) -> sequence <$> traverse fromValueMay l+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ ExpectationNF TList v++instance Convertible e m => FromValue [NThunk m] m (NValue m) where+ fromValueMay = \case+ NVList l -> pure $ Just l+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TList v++instance Convertible e m+ => FromValue (HashMap Text (NValueNF m)) m (NValueNF m) where+ fromValueMay = \case+ Fix (NVSetF s _) -> pure $ Just s+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ ExpectationNF TSet v++instance Convertible e m+ => FromValue (HashMap Text (NThunk m)) m (NValue m) where+ fromValueMay = \case+ NVSet s _ -> pure $ Just s+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TSet v++instance Convertible e m+ => FromValue (HashMap Text (NValueNF m),+ HashMap Text SourcePos) m (NValueNF m) where+ fromValueMay = \case+ Fix (NVSetF s p) -> pure $ Just (s, p)+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ ExpectationNF TSet v++instance Convertible e m+ => FromValue (HashMap Text (NThunk m),+ HashMap Text SourcePos) m (NValue m) where+ fromValueMay = \case+ NVSet s p -> pure $ Just (s, p)+ _ -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TSet v++instance (Convertible e m, MonadThunk (NValue m) (NThunk m) m)+ => FromValue (NThunk m) m (NValue m) where+ fromValueMay = pure . Just . value @_ @_ @m+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> error "Impossible, see fromValueMay"++instance (Monad m, FromValue a m v) => FromValue a m (m v) where+ fromValueMay = (>>= fromValueMay)+ fromValue = (>>= fromValue)++instance (MonadThunk (NValue m) (NThunk m) m, FromValue a m (NValue m))+ => FromValue a m (NThunk m) where+ fromValueMay = force ?? fromValueMay+ fromValue = force ?? fromValue++instance (Convertible e m, MonadEffects m)+ => FromValue A.Value m (NValueNF m) where+ fromValueMay = \case+ Fix (NVConstantF a) -> pure $ Just $ case a of+ NInt n -> toJSON n+ NFloat n -> toJSON n+ NBool b -> toJSON b+ NNull -> A.Null+ Fix (NVStrF s _) -> pure $ Just $ toJSON s+ Fix (NVListF l) -> fmap (A.Array . V.fromList) . sequence+ <$> traverse fromValueMay l+ Fix (NVSetF m _) -> fmap A.Object . sequence <$> traverse fromValueMay m+ Fix NVClosureF {} -> pure Nothing+ Fix (NVPathF p) -> Just . toJSON . unStorePath <$> addPath p+ Fix (NVBuiltinF _ _) -> pure Nothing+ fromValue v = fromValueMay v >>= \case+ Just b -> pure b+ _ -> throwError $ CoercionToJsonNF v++class ToValue a m v where+ toValue :: a -> m v++instance Applicative m => ToValue () m (NValueNF m) where+ toValue _ = pure . Fix . NVConstantF $ NNull++instance Applicative m => ToValue () m (NValue m) where+ toValue _ = pure . nvConstant $ NNull++instance Applicative m => ToValue Bool m (NValueNF m) where+ toValue = pure . Fix . NVConstantF . NBool++instance Applicative m => ToValue Bool m (NValue m) where+ toValue = pure . nvConstant . NBool++instance Applicative m => ToValue Int m (NValueNF m) where+ toValue = pure . Fix . NVConstantF . NInt . toInteger++instance Applicative m => ToValue Int m (NValue m) where+ toValue = pure . nvConstant . NInt . toInteger++instance Applicative m => ToValue Integer m (NValueNF m) where+ toValue = pure . Fix . NVConstantF . NInt++instance Applicative m => ToValue Integer m (NValue m) where+ toValue = pure . nvConstant . NInt++instance Applicative m => ToValue Float m (NValueNF m) where+ toValue = pure . Fix . NVConstantF . NFloat++instance Applicative m => ToValue Float m (NValue m) where+ toValue = pure . nvConstant . NFloat++instance Applicative m => ToValue Text m (NValueNF m) where+ toValue = pure . Fix . flip NVStrF mempty++instance Applicative m => ToValue Text m (NValue m) where+ toValue = pure . flip nvStr mempty++instance Applicative m => ToValue (Text, DList Text) m (NValueNF m) where+ toValue = pure . Fix . uncurry NVStrF++instance Applicative m => ToValue (Text, DList Text) m (NValue m) where+ toValue = pure . uncurry nvStr++instance Applicative m => ToValue ByteString m (NValueNF m) where+ toValue = pure . Fix . flip NVStrF mempty . decodeUtf8++instance Applicative m => ToValue ByteString m (NValue m) where+ toValue = pure . flip nvStr mempty . decodeUtf8++instance Applicative m => ToValue Path m (NValueNF m) where+ toValue = pure . Fix . NVPathF . getPath++instance Applicative m => ToValue Path m (NValue m) where+ toValue = pure . nvPath . getPath++instance MonadThunk (NValue m) (NThunk m) m+ => ToValue SourcePos m (NValue m) where+ toValue (SourcePos f l c) = do+ f' <- toValue (Text.pack f)+ l' <- toValue (unPos l)+ c' <- toValue (unPos c)+ let pos = M.fromList+ [ ("file" :: Text, value @_ @_ @m f')+ , ("line", value @_ @_ @m l')+ , ("column", value @_ @_ @m c') ]+ pure $ nvSet pos mempty++instance (ToValue a m (NValueNF m), Applicative m)+ => ToValue [a] m (NValueNF m) where+ toValue = fmap (Fix . NVListF) . traverse toValue++instance Applicative m => ToValue [NThunk m] m (NValue m) where+ toValue = pure . nvList++instance Applicative m+ => ToValue (HashMap Text (NValueNF m)) m (NValueNF m) where+ toValue = pure . Fix . flip NVSetF M.empty++instance Applicative m => ToValue (HashMap Text (NThunk m)) m (NValue m) where+ toValue = pure . flip nvSet M.empty++instance Applicative m => ToValue (HashMap Text (NValueNF m),+ HashMap Text SourcePos) m (NValueNF m) where+ toValue (s, p) = pure $ Fix $ NVSetF s p++instance Applicative m => ToValue (HashMap Text (NThunk m),+ HashMap Text SourcePos) m (NValue m) where+ toValue (s, p) = pure $ nvSet s p++instance (MonadThunk (NValue m) (NThunk m) m, ToValue a m (NValue m))+ => ToValue a m (NThunk m) where+ toValue = fmap (value @(NValue m) @_ @m) . toValue++instance Applicative m => ToValue Bool m (NExprF r) where+ toValue = pure . NConstant . NBool++instance Applicative m => ToValue () m (NExprF r) where+ toValue _ = pure . NConstant $ NNull++whileForcingThunk :: forall s e m r. (Framed e m, Exception s, Typeable m)+ => s -> m r -> m r+whileForcingThunk frame =+ withFrame Debug (ForcingThunk @m) . withFrame Debug frame++instance (Convertible e m, MonadThunk (NValue m) (NThunk m) m)+ => ToValue A.Value m (NValue m) where+ toValue = \case+ A.Object m -> flip nvSet M.empty+ <$> traverse (thunk . toValue @_ @_ @(NValue m)) m+ A.Array l -> nvList <$>+ traverse (\x -> thunk . whileForcingThunk (CoercionFromJson @m x)+ . toValue $ x) (V.toList l)+ A.String s -> pure $ nvStr s mempty+ A.Number n -> pure $ nvConstant $ case floatingOrInteger n of+ Left r -> NFloat r+ Right i -> NInt i+ A.Bool b -> pure $ nvConstant $ NBool b+ A.Null -> pure $ nvConstant NNull++class FromNix a m v where+ fromNix :: v -> m a+ default fromNix :: FromValue a m v => v -> m a+ fromNix = fromValue++ fromNixMay :: v -> m (Maybe a)+ default fromNixMay :: FromValue a m v => v -> m (Maybe a)+ fromNixMay = fromValueMay++instance (Convertible e m, MonadThunk (NValue m) (NThunk m) m,+ FromNix a m (NValue m))+ => FromNix [a] m (NValue m) where+ fromNixMay = \case+ NVList l -> sequence <$> traverse (`force` fromNixMay) l+ _ -> pure Nothing+ fromNix v = fromNixMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TList v++instance (Convertible e m, MonadThunk (NValue m) (NThunk m) m,+ FromNix a m (NValue m))+ => FromNix (HashMap Text a) m (NValue m) where+ fromNixMay = \case+ NVSet s _ -> sequence <$> traverse (`force` fromNixMay) s+ _ -> pure Nothing+ fromNix v = fromNixMay v >>= \case+ Just b -> pure b+ _ -> throwError $ Expectation TSet v++instance Convertible e m => FromNix () m (NValueNF m) where+instance Convertible e m => FromNix () m (NValue m) where+instance Convertible e m => FromNix Bool m (NValueNF m) where+instance Convertible e m => FromNix Bool m (NValue m) where+instance Convertible e m => FromNix Int m (NValueNF m) where+instance Convertible e m => FromNix Int m (NValue m) where+instance Convertible e m => FromNix Integer m (NValueNF m) where+instance Convertible e m => FromNix Integer m (NValue m) where+instance Convertible e m => FromNix Float m (NValueNF m) where+instance Convertible e m => FromNix Float m (NValue m) where+instance (Convertible e m, MonadEffects m) => FromNix Text m (NValueNF m) where+instance (Convertible e m, MonadEffects m, MonadThunk (NValue m) (NThunk m) m) => FromNix Text m (NValue m) where+instance (Convertible e m, MonadEffects m) => FromNix (Text, DList Text) m (NValueNF m) where+instance (Convertible e m, MonadEffects m, MonadThunk (NValue m) (NThunk m) m) => FromNix (Text, DList Text) m (NValue m) where+instance Convertible e m => FromNix ByteString m (NValueNF m) where+instance Convertible e m => FromNix ByteString m (NValue m) where+instance Convertible e m => FromNix Path m (NValueNF m) where+instance (Convertible e m, MonadThunk (NValue m) (NThunk m) m) => FromNix Path m (NValue m) where+instance (Convertible e m, FromValue a m (NValueNF m), Show a) => FromNix [a] m (NValueNF m) where+instance Convertible e m => FromNix (HashMap Text (NValueNF m)) m (NValueNF m) where+instance Convertible e m => FromNix (HashMap Text (NValueNF m), HashMap Text SourcePos) m (NValueNF m) where+instance Convertible e m => FromNix (HashMap Text (NThunk m), HashMap Text SourcePos) m (NValue m) where+instance (Convertible e m, MonadEffects m, MonadThunk (NValue m) (NThunk m) m) => FromNix A.Value m (NValueNF m) where++instance (Convertible e m, MonadEffects m,+ MonadThunk (NValue m) (NThunk m) m) => FromNix A.Value m (NValue m) where+ fromNixMay = fromNixMay <=< normalForm+ fromNix = fromNix <=< normalForm++instance (Monad m, FromNix a m v) => FromNix a m (m v) where+ fromNixMay = (>>= fromNixMay)+ fromNix = (>>= fromNix)++instance (MonadThunk (NValue m) (NThunk m) m, FromNix a m (NValue m))+ => FromNix a m (NThunk m) where+ fromNixMay = force ?? fromNixMay+ fromNix = force ?? fromNix++instance MonadThunk (NValue m) (NThunk m) m+ => FromNix (NThunk m) m (NValue m) where+ fromNixMay = pure . Just . value+ fromNix = pure . value++class ToNix a m v where+ toNix :: a -> m v+ default toNix :: ToValue a m v => a -> m v+ toNix = toValue++instance (Convertible e m, MonadThunk (NValue m) (NThunk m) m,+ ToNix a m (NValue m))+ => ToNix [a] m (NValue m) where+ toNix = fmap nvList+ . traverse (thunk . ((\v -> whileForcingThunk (ConcerningValue v) (pure v))+ <=< toNix))++instance (Convertible e m, MonadThunk (NValue m) (NThunk m) m,+ ToNix a m (NValue m))+ => ToNix (HashMap Text a) m (NValue m) where+ toNix = fmap (flip nvSet M.empty)+ . traverse (thunk . ((\v -> whileForcingThunk (ConcerningValue v) (pure v))+ <=< toNix))++instance Applicative m => ToNix () m (NValueNF m) where+instance Applicative m => ToNix () m (NValue m) where+instance Applicative m => ToNix Bool m (NValueNF m) where+instance Applicative m => ToNix Bool m (NValue m) where+instance Applicative m => ToNix Int m (NValueNF m) where+instance Applicative m => ToNix Int m (NValue m) where+instance Applicative m => ToNix Integer m (NValueNF m) where+instance Applicative m => ToNix Integer m (NValue m) where+instance Applicative m => ToNix Float m (NValueNF m) where+instance Applicative m => ToNix Float m (NValue m) where+instance Applicative m => ToNix Text m (NValueNF m) where+instance Applicative m => ToNix Text m (NValue m) where+instance Applicative m => ToNix (Text, DList Text) m (NValueNF m) where+instance Applicative m => ToNix (Text, DList Text) m (NValue m) where+instance Applicative m => ToNix ByteString m (NValueNF m) where+instance Applicative m => ToNix ByteString m (NValue m) where+instance Applicative m => ToNix Path m (NValueNF m) where+instance Applicative m => ToNix Path m (NValue m) where+instance Applicative m => ToNix (HashMap Text (NValueNF m)) m (NValueNF m) where+instance Applicative m => ToNix (HashMap Text (NValueNF m), HashMap Text SourcePos) m (NValueNF m) where+instance Applicative m => ToNix (HashMap Text (NThunk m), HashMap Text SourcePos) m (NValue m) where+instance (Convertible e m, MonadThunk (NValue m) (NThunk m) m) => ToNix A.Value m (NValue m) where+instance Applicative m => ToNix Bool m (NExprF r) where+instance Applicative m => ToNix () m (NExprF r) where++instance (MonadThunk (NValue m) (NThunk m) m, ToNix a m (NValue m))+ => ToNix a m (NThunk m) where+ toNix = thunk . toNix++instance (Applicative m, ToNix a m (NValueNF m)) => ToNix [a] m (NValueNF m) where+ toNix = fmap (Fix . NVListF) . traverse toNix++instance MonadThunk (NValue m) (NThunk m) m => ToNix (NThunk m) m (NValue m) where+ toNix = force ?? pure++convertNix :: forall a t m v. (FromNix a m t, ToNix a m v, Monad m) => t -> m v+convertNix = fromNix @a >=> toNix
@@ -0,0 +1,40 @@+module Nix.Effects where++import Data.Text (Text)+import Nix.Render+import Nix.Utils+import Nix.Value+import System.Posix.Files++-- | A path into the nix store+newtype StorePath = StorePath { unStorePath :: FilePath }++class MonadFile m => MonadEffects m where+ -- | Import a path into the nix store, and return the resulting path+ addPath :: FilePath -> m StorePath++ -- | Determine the absolute path of relative path in the current context+ makeAbsolutePath :: FilePath -> m FilePath+ findEnvPath :: String -> m FilePath++ pathExists :: FilePath -> m Bool+ importPath :: AttrSet (NThunk m) -> FilePath -> m (NValue m)++ getEnvVar :: String -> m (Maybe String)+ getCurrentSystemOS :: m Text+ getCurrentSystemArch :: m Text++ listDirectory :: FilePath -> m [FilePath]+ getSymbolicLinkStatus :: FilePath -> m FileStatus++ derivationStrict :: NValue m -> m (NValue m)++ nixInstantiateExpr :: String -> m (NValue m)++ getURL :: Text -> m (NValue m)++ getRecursiveSize :: a -> m (NValue m)++ traceEffect :: String -> m ()++ exec :: [String] -> m (NValue m)
@@ -0,0 +1,442 @@+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE ApplicativeDo #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE PartialTypeSignatures #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}++{-# OPTIONS_GHC -fno-warn-name-shadowing #-}++module Nix.Eval where++import Control.Monad+import Control.Monad.Fix+import Control.Monad.Reader+import Control.Monad.State.Strict+import Data.Align.Key+import Data.Fix+import Data.HashMap.Lazy (HashMap)+import qualified Data.HashMap.Lazy as M+import Data.List (partition, foldl')+import Data.List.NonEmpty (NonEmpty(..))+import Data.Maybe (fromMaybe, catMaybes)+import Data.Text (Text)+import qualified Data.Text as Text+import Data.These+import Data.Traversable (for)+import Nix.Atoms+import Nix.Convert+import Nix.Expr+import Nix.Frames+import Nix.Scope+import Nix.Strings (runAntiquoted)+import Nix.Thunk+import Nix.Utils++class (Show v, Monad m) => MonadEval v m | v -> m where+ freeVariable :: Text -> m v+ attrMissing :: NonEmpty Text -> Maybe v -> m v+ evaledSym :: Text -> v -> m v++ evalCurPos :: m v+ evalConstant :: NAtom -> m v+ evalString :: NString (m v) -> m v+ evalLiteralPath :: FilePath -> m v+ evalEnvPath :: FilePath -> m v+ evalUnary :: NUnaryOp -> v -> m v+ evalBinary :: NBinaryOp -> v -> m v -> m v+ -- ^ The second argument is an action because operators such as boolean &&+ -- and || may not evaluate the second argument.+ evalWith :: m v -> m v -> m v+ evalIf :: v -> m v -> m v -> m v+ evalAssert :: v -> m v -> m v+ evalApp :: v -> m v -> m v+ evalAbs :: Params (m v)+ -> (forall a. m v -> (AttrSet (m v) -> m v -> m (a, v)) -> m (a, v))+ -> m v++{-+ evalSelect :: v -> NonEmpty Text -> Maybe (m v) -> m v+ evalHasAttr :: v -> NonEmpty Text -> m v++ -- | This and the following methods are intended to allow things like+ -- adding provenance information.+ evalListElem :: [m v] -> Int -> m v -> m v+ evalList :: [t] -> m v+ evalSetElem :: AttrSet (m v) -> Text -> m v -> m v+ evalSet :: AttrSet t -> AttrSet SourcePos -> m v+ evalRecSetElem :: AttrSet (m v) -> Text -> m v -> m v+ evalRecSet :: AttrSet t -> AttrSet SourcePos -> m v+ evalLetElem :: Text -> m v -> m v+ evalLet :: m v -> m v+-}++ evalError :: Exception s => s -> m a++type MonadNixEval e v t m =+ (MonadEval v m,+ Scoped e t m,+ MonadThunk v t m,+ MonadFix m,+ ToValue Bool m v,+ ToValue [t] m v,+ FromValue (Text, DList Text) m v,+ ToValue (AttrSet t, AttrSet SourcePos) m v,+ FromValue (AttrSet t, AttrSet SourcePos) m v)++data EvalFrame m v+ = EvaluatingExpr (Scopes m v) NExprLoc+ | ForcingExpr (Scopes m v) NExprLoc+ | Calling String SrcSpan+ deriving (Show, Typeable)++instance (Typeable m, Typeable v) => Exception (EvalFrame m v)++eval :: forall e v t m. MonadNixEval e v t m => NExprF (m v) -> m v++eval (NSym "__curPos") = evalCurPos++eval (NSym var) =+ lookupVar var >>= maybe (freeVariable var) (force ?? evaledSym var)++eval (NConstant x) = evalConstant x+eval (NStr str) = evalString str+eval (NLiteralPath p) = evalLiteralPath p+eval (NEnvPath p) = evalEnvPath p+eval (NUnary op arg) = evalUnary op =<< arg++eval (NBinary NApp fun arg) = do+ scope <- currentScopes @_ @t+ evalApp ?? withScopes scope arg =<< fun++eval (NBinary op larg rarg) = larg >>= \lval -> evalBinary op lval rarg++eval (NSelect aset attr alt) = do+ traceM "NSelect"+ mres <- evalSelect aset attr+ traceM "NSelect..2"+ case mres of+ Right v -> v+ Left (s, ks) -> fromMaybe (attrMissing ks (Just s)) alt++eval (NHasAttr aset attr) =+ toValue . either (const False) (const True) =<< evalSelect aset attr++eval (NList l) = do+ scope <- currentScopes+ toValue =<< for l (thunk . withScopes @t scope)++eval (NSet binds) = do+ traceM "NSet..1"+ (s, p) <- evalBinds True False binds+ traceM $ "NSet..2: s = " ++ show (void s)+ traceM $ "NSet..2: p = " ++ show (void p)+ toValue (s, p)++eval (NRecSet binds) = do+ traceM "NRecSet..1"+ (s, p) <- evalBinds True True (desugarBinds (eval . NRecSet) binds)+ traceM $ "NRecSet..2: s = " ++ show (void s)+ traceM $ "NRecSet..2: p = " ++ show (void p)+ toValue (s, p)++eval (NLet binds body) = do+ traceM "Let..1"+ (s, _) <- evalBinds True True binds+ traceM $ "Let..2: s = " ++ show (void s)+ pushScope s body++eval (NIf cond t f) = cond >>= \v -> evalIf v t f++eval (NWith scope body) = evalWith scope body++eval (NAssert cond body) = cond >>= evalAssert ?? body++eval (NAbs params body) = do+ -- It is the environment at the definition site, not the call site, that+ -- needs to be used when evaluating the body and default arguments, hence+ -- we defer here so the present scope is restored when the parameters and+ -- body are forced during application.+ scope <- currentScopes @_ @t+ evalAbs params $ \arg k ->+ withScopes @t scope $ do+ args <- buildArgument params arg+ pushScope args (k (M.map (`force` pure) args) body)++-- | If you know that the 'scope' action will result in an 'AttrSet t', then+-- this implementation may be used as an implementation for 'evalWith'.+evalWithAttrSet :: forall e v t m. MonadNixEval e v t m => m v -> m v -> m v+evalWithAttrSet scope body = do+ -- The scope is deliberately wrapped in a thunk here, since it is+ -- evaluated each time a name is looked up within the weak scope, and+ -- we want to be sure the action it evaluates is to force a thunk, so+ -- its value is only computed once.+ cur <- currentScopes @_ @t+ s <- thunk $ withScopes cur scope+ pushWeakScope ?? body $ force s $+ fmap fst . fromValue @(AttrSet t, AttrSet SourcePos)++attrSetAlter :: forall e v t m. MonadNixEval e v t m+ => [Text]+ -> AttrSet (m v)+ -> m v+ -> m (AttrSet (m v))+attrSetAlter [] _ _ =+ evalError @v $ ErrorCall "invalid selector with no components"+attrSetAlter (p:ps) m val = case M.lookup p m of+ Nothing+ | null ps -> go+ | otherwise -> recurse M.empty+ Just x+ | null ps -> go+ | otherwise ->+ x >>= fromValue @(AttrSet t, AttrSet SourcePos)+ >>= \(s, _) -> recurse (force ?? pure <$> s)+ where+ go = return $ M.insert p val m++ recurse s = attrSetAlter ps s val <&> \m' ->+ M.insert p (toValue @(AttrSet t, AttrSet SourcePos)+ =<< fmap (, mempty)+ (fmap (value @_ @_ @m) <$> sequence m')) m++desugarBinds :: forall r. ([Binding r] -> r) -> [Binding r] -> [Binding r]+desugarBinds embed binds = evalState (mapM (go <=< collect) binds) M.empty+ where+ collect :: Binding r+ -> State (HashMap VarName (SourcePos, [Binding r]))+ (Either VarName (Binding r))+ collect (NamedVar (StaticKey x :| y:ys) val p) = do+ m <- get+ let v = case M.lookup x m of+ Nothing -> (p, [NamedVar (y:|ys) val p])+ Just (p, v) -> (p, NamedVar (y:|ys) val p : v)+ put $ M.insert x v m+ pure $ Left x+ collect x = pure $ Right x++ go :: Either VarName (Binding r)+ -> State (HashMap VarName (SourcePos, [Binding r]))+ (Binding r)+ go (Right x) = pure x+ go (Left x) = do+ Just (p, v) <- gets $ M.lookup x+ pure $ NamedVar (StaticKey x :| []) (embed v) p++evalBinds :: forall e v t m. MonadNixEval e v t m+ => Bool+ -> Bool+ -> [Binding (m v)]+ -> m (AttrSet t, AttrSet SourcePos)+evalBinds allowDynamic recursive binds = do+ scope <- currentScopes @_ @t+ buildResult scope . concat =<< mapM (go scope) (moveOverridesLast binds)+ where+ moveOverridesLast = (\(x, y) -> y ++ x) .+ partition (\case NamedVar (StaticKey "__overrides" :| []) _ _pos -> True+ _ -> False)++ go :: Scopes m t -> Binding (m v) -> m [([Text], SourcePos, m v)]+ go _ (NamedVar (StaticKey "__overrides" :| []) finalValue pos) =+ finalValue >>= fromValue >>= \(o', p') ->+ -- jww (2018-05-09): What to do with the key position here?+ return $ map (\(k, v) -> ([k], fromMaybe pos (M.lookup k p'),+ force v pure))+ (M.toList o')++ go _ (NamedVar pathExpr finalValue pos) = do+ let go :: NAttrPath (m v) -> m ([Text], SourcePos, m v)+ go = \case+ h :| t -> evalSetterKeyName allowDynamic h >>= \case+ Nothing ->+ pure ([], nullPos,+ toValue @(AttrSet t, AttrSet SourcePos)+ (mempty, mempty))+ Just k -> case t of+ [] -> pure ([k], pos, finalValue)+ x:xs -> do+ (restOfPath, _, v) <- go (x:|xs)+ pure (k : restOfPath, pos, v)+ go pathExpr <&> \case+ -- When there are no path segments, e.g. `${null} = 5;`, we don't+ -- bind anything+ ([], _, _) -> []+ result -> [result]++ go scope (Inherit ms names pos) = fmap catMaybes $ forM names $+ evalSetterKeyName allowDynamic >=> \case+ Nothing -> return Nothing+ Just key -> return $ Just ([key], pos, do+ mv <- case ms of+ Nothing -> withScopes scope $ lookupVar key+ Just s -> s+ >>= fromValue @(AttrSet t, AttrSet SourcePos)+ >>= \(s, _) ->+ clearScopes @t $ pushScope s $ lookupVar key+ case mv of+ Nothing -> attrMissing (key :| []) Nothing+ Just v -> force v pure)++ buildResult :: Scopes m t+ -> [([Text], SourcePos, m v)]+ -> m (AttrSet t, AttrSet SourcePos)+ buildResult scope bindings = do+ s <- foldM insert M.empty bindings+ res <- if recursive+ then loebM (encapsulate <$> s)+ else traverse (thunk . withScopes scope) s+ return (res, foldl' go M.empty bindings)+ where+ go m ([k], pos, _) = M.insert k pos m+ go m _ = m++ encapsulate f attrs =+ thunk . withScopes scope . pushScope attrs $ f++ insert m (path, _, value) = attrSetAlter path m value++evalSelect :: forall e v t m. MonadNixEval e v t m+ => m v+ -> NAttrPath (m v)+ -> m (Either (v, NonEmpty Text) (m v))+evalSelect aset attr = do+ traceM "evalSelect"+ s <- aset+ traceM "evalSelect..2"+ path <- evalSelector True attr+ traceM $ "evalSelect..3: " ++ show path+ res <- extract s path+ traceM "evalSelect..4"+ return res+ where+ extract x path@(k:|ks) = fromValueMay x >>= \case+ Just (s :: AttrSet t, p :: AttrSet SourcePos) ->+ case M.lookup k s of+ Just t -> do+ traceM $ "Forcing value at selector " ++ Text.unpack k+ case ks of+ [] -> pure $ Right $ force t pure+ y:ys -> force t $ extract ?? (y:|ys)+ Nothing ->+ Left . (, path) <$> toValue (s, p)+ Nothing ->+ return $ Left (x, path)++evalSelector :: (MonadEval v m, FromValue (Text, DList Text) m v)+ => Bool -> NAttrPath (m v) -> m (NonEmpty Text)+evalSelector = traverse . evalGetterKeyName++-- | Evaluate a component of an attribute path in a context where we are+-- *retrieving* a value+evalGetterKeyName :: (MonadEval v m, FromValue (Text, DList Text) m v)+ => Bool -> NKeyName (m v) -> m Text+evalGetterKeyName canBeDynamic+ | canBeDynamic = evalKeyNameDynamicNotNull+ | otherwise = evalKeyNameStatic++evalKeyNameStatic :: forall v m. MonadEval v m => NKeyName (m v) -> m Text+evalKeyNameStatic = \case+ StaticKey k -> pure k+ _ -> evalError @v $ ErrorCall "dynamic attribute not allowed in this context"++evalKeyNameDynamicNotNull+ :: forall v m. (MonadEval v m, FromValue (Text, DList Text) m v)+ => NKeyName (m v) -> m Text+evalKeyNameDynamicNotNull = evalKeyNameDynamicNullable >=> \case+ Just k -> pure k+ Nothing -> evalError @v $ ErrorCall "value is null while a string was expected"++-- | Evaluate a component of an attribute path in a context where we are+-- *binding* a value+evalSetterKeyName :: (MonadEval v m, FromValue (Text, DList Text) m v)+ => Bool -> NKeyName (m v) -> m (Maybe Text)+evalSetterKeyName canBeDynamic+ | canBeDynamic = evalKeyNameDynamicNullable+ | otherwise = fmap Just . evalKeyNameStatic++-- | Returns Nothing iff the key value is null+evalKeyNameDynamicNullable+ :: forall v m. (MonadEval v m, FromValue (Text, DList Text) m v)+ => NKeyName (m v)+ -> m (Maybe Text)+evalKeyNameDynamicNullable = \case+ StaticKey k -> pure (Just k)+ DynamicKey k ->+ runAntiquoted "\n" assembleString (>>= fromValueMay) k+ <&> \case Just (t, _) -> Just t+ _ -> Nothing++assembleString :: forall v m. (MonadEval v m, FromValue (Text, DList Text) m v)+ => NString (m v) -> m (Maybe (Text, DList Text))+assembleString = \case+ Indented _ parts -> fromParts parts+ DoubleQuoted parts -> fromParts parts+ where+ go = runAntiquoted "\n" (pure . Just . (, mempty)) (>>= fromValueMay)++ fromParts parts = fmap mconcat . sequence <$> mapM go parts++buildArgument :: forall e v t m. MonadNixEval e v t m+ => Params (m v) -> m v -> m (AttrSet t)+buildArgument params arg = do+ scope <- currentScopes @_ @t+ case params of+ Param name -> M.singleton name+ <$> thunk (withScopes scope arg)+ ParamSet s isVariadic m ->+ arg >>= fromValue @(AttrSet t, AttrSet SourcePos)+ >>= \(args, _) -> do+ let inject = case m of+ Nothing -> id+ Just n -> M.insert n $ const $+ thunk (withScopes scope arg)+ loebM (inject $ alignWithKey (assemble scope isVariadic)+ args (M.fromList s))+ where+ assemble :: Scopes m t+ -> Bool+ -> Text+ -> These t (Maybe (m v))+ -> AttrSet t+ -> m t+ assemble scope isVariadic k = \case+ That Nothing ->+ const $ evalError @v $ ErrorCall $+ "Missing value for parameter: " ++ show k+ That (Just f) -> \args ->+ thunk $ withScopes scope $ pushScope args f+ This x | isVariadic -> const (pure x)+ | otherwise ->+ const $ evalError @v $ ErrorCall $+ "Unexpected parameter: " ++ show k+ These x _ -> const (pure x)++addSourcePositions :: (MonadReader e m, Has e SrcSpan)+ => Transform NExprLocF (m a)+addSourcePositions f v@(Fix (Compose (Ann ann _))) =+ local (set hasLens ann) (f v)++addStackFrames+ :: forall t e m a. (Scoped e t m, Framed e m, Typeable t, Typeable m)+ => Transform NExprLocF (m a)+addStackFrames f v = do+ scopes <- currentScopes @e @t+ withFrame Info (EvaluatingExpr scopes v) (f v)++framedEvalExprLoc+ :: forall t e v m.+ (MonadNixEval e v t m, Framed e m, Has e SrcSpan,+ Typeable t, Typeable m)+ => NExprLoc -> m v+framedEvalExprLoc = adi (eval . annotated . getCompose)+ (addStackFrames @t . addSourcePositions)
@@ -0,0 +1,758 @@+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE ApplicativeDo #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PartialTypeSignatures #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeSynonymInstances #-}+{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE ViewPatterns #-}++{-# OPTIONS_GHC -Wno-missing-signatures #-}+{-# OPTIONS_GHC -Wno-orphans #-}+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}++module Nix.Exec where++import Control.Applicative+import Control.Monad+import Control.Monad.Catch+import Control.Monad.Fix+import Control.Monad.IO.Class+import Control.Monad.Reader+import Control.Monad.State.Strict+import Control.Monad.Trans.Reader (ReaderT(..))+import Control.Monad.Trans.State.Strict (StateT(..))+import qualified Data.ByteString as BS+import Data.Coerce+import Data.Fix+import Data.HashMap.Lazy (HashMap)+import qualified Data.HashMap.Lazy as M+import Data.IORef+import Data.List+import qualified Data.List.NonEmpty as NE+import Data.List.Split+import Data.Text (Text)+import qualified Data.Text as Text+import Data.Typeable+import Network.HTTP.Client+import Network.HTTP.Client.TLS+import Network.HTTP.Types+import Nix.Atoms+import Nix.Context+import Nix.Convert+import Nix.Effects+import Nix.Eval as Eval+import Nix.Expr+import Nix.Frames+import Nix.Normal+import Nix.Options+import Nix.Parser+import Nix.Pretty+import Nix.Render+import Nix.Scope+import Nix.Thunk+import Nix.Utils+import Nix.Value+#if MIN_VERSION_haskeline(0, 4, 7)+import System.Console.Haskeline.MonadException hiding (catch)+#endif+import System.Directory+import System.Environment+import System.Exit (ExitCode (ExitSuccess))+import System.FilePath+import qualified System.Info+import System.Posix.Files+import System.Process (readProcessWithExitCode)+import Text.PrettyPrint.ANSI.Leijen (text)+import qualified Text.PrettyPrint.ANSI.Leijen as P++#ifdef MIN_VERSION_ghc_datasize+#if MIN_VERSION_ghc_datasize(0,2,0) && __GLASGOW_HASKELL__ >= 804+import GHC.DataSize+#endif+#endif++type MonadNix e m =+ (Scoped e (NThunk m) m, Framed e m, Has e SrcSpan, Has e Options,+ Typeable m, MonadVar m, MonadEffects m, MonadFix m, MonadCatch m,+ Alternative m)++data ExecFrame m = Assertion SrcSpan (NValue m)+ deriving (Show, Typeable)++instance Typeable m => Exception (ExecFrame m)++nverr :: forall s e m a. (MonadNix e m, Exception s) => s -> m a+nverr = evalError @(NValue m)++currentPos :: forall e m. (MonadReader e m, Has e SrcSpan) => m SrcSpan+currentPos = asks (view hasLens)++wrapExprLoc :: SrcSpan -> NExprLocF r -> NExprLoc+wrapExprLoc span x = Fix (Fix (NSym_ span "<?>") <$ x)++instance MonadNix e m => MonadThunk (NValue m) (NThunk m) m where+ thunk mv = do+ opts :: Options <- asks (view hasLens)++ if thunks opts+ then do+ frames :: Frames <- asks (view hasLens)++ -- Gather the current evaluation context at the time of thunk+ -- creation, and record it along with the thunk.+ let go (fromException ->+ Just (EvaluatingExpr scope+ (Fix (Compose (Ann span e))))) =+ let e' = Compose (Ann span (Nothing <$ e))+ in [Provenance scope e']+ go _ = []+ ps = concatMap (go . frame) frames++ fmap (NThunk ps . coerce) . buildThunk $ mv+ else+ fmap (NThunk [] . coerce) . buildThunk $ mv++ -- The ThunkLoop exception is thrown as an exception with MonadThrow,+ -- which does not capture the current stack frame information to provide+ -- it in a NixException, so we catch and re-throw it here using+ -- 'throwError' from Frames.hs.+ force (NThunk ps t) f = catch go (throwError @ThunkLoop)+ where+ go = case ps of+ [] -> forceThunk t f+ Provenance scope e@(Compose (Ann span _)):_ ->+ withFrame Info (ForcingExpr scope (wrapExprLoc span e))+ (forceThunk t f)++ value = NThunk [] . coerce . valueRef++{-+prov :: MonadNix e m+ => (NValue m -> Provenance m) -> NValue m -> m (NValue m)+prov p v = do+ opts :: Options <- asks (view hasLens)+ pure $ if values opts+ then addProvenance p v+ else v+-}++instance MonadNix e m => MonadEval (NValue m) m where+ freeVariable var =+ nverr $ ErrorCall $ "Undefined variable '" ++ Text.unpack var ++ "'"++ attrMissing ks Nothing =+ evalError @(NValue m) $ ErrorCall $+ "Inheriting unknown attribute: "+ ++ intercalate "." (map Text.unpack (NE.toList ks))++ attrMissing ks (Just s) =+ evalError @(NValue m) $ ErrorCall $ "Could not look up attribute "+ ++ intercalate "." (map Text.unpack (NE.toList ks))+ ++ " in " ++ show s++ evalCurPos = do+ scope <- currentScopes+ span@(SrcSpan delta _) <- currentPos+ addProvenance (\_ -> Provenance scope (NSym_ span "__curPos"))+ <$> toValue delta++ evaledSym name val = do+ scope <- currentScopes+ span <- currentPos+ pure $ addProvenance (const $ Provenance scope (NSym_ span name)) val++ evalConstant c = do+ scope <- currentScopes+ span <- currentPos+ pure $ nvConstantP (Provenance scope (NConstant_ span c)) c++ evalString = assembleString >=> \case+ Just (s, c) -> do+ scope <- currentScopes+ span <- currentPos+ pure $ nvStrP (Provenance scope+ (NStr_ span (DoubleQuoted [Plain s]))) s c+ Nothing -> nverr $ ErrorCall "Failed to assemble string"++ evalLiteralPath p = do+ scope <- currentScopes+ span <- currentPos+ nvPathP (Provenance scope (NLiteralPath_ span p)) <$> makeAbsolutePath p++ evalEnvPath p = do+ scope <- currentScopes+ span <- currentPos+ nvPathP (Provenance scope (NEnvPath_ span p)) <$> findEnvPath p++ evalUnary op arg = do+ scope <- currentScopes+ span <- currentPos+ execUnaryOp scope span op arg++ evalBinary op larg rarg = do+ scope <- currentScopes+ span <- currentPos+ execBinaryOp scope span op larg rarg++ evalWith c b = do+ scope <- currentScopes+ span <- currentPos+ addProvenance (\b -> Provenance scope (NWith_ span Nothing (Just b)))+ <$> evalWithAttrSet c b++ evalIf c t f = do+ scope <- currentScopes+ span <- currentPos+ fromValue c >>= \b ->+ if b+ then addProvenance (\t -> Provenance scope (NIf_ span (Just c) (Just t) Nothing)) <$> t+ else addProvenance (\f -> Provenance scope (NIf_ span (Just c) Nothing (Just f))) <$> f++ evalAssert c body = fromValue c >>= \b -> do+ span <- currentPos+ if b+ then do+ scope <- currentScopes+ addProvenance (\b -> Provenance scope (NAssert_ span (Just c) (Just b))) <$> body+ else nverr $ Assertion span c++ evalApp f x = do+ scope <- currentScopes+ span <- currentPos+ addProvenance (const $ Provenance scope (NBinary_ span NApp (Just f) Nothing))+ <$> callFunc f x++ evalAbs p k = do+ scope <- currentScopes+ span <- currentPos+ pure $ nvClosureP (Provenance scope (NAbs_ span (Nothing <$ p) Nothing))+ (void p) (\arg -> snd <$> k arg (\_ b -> ((),) <$> b))++ evalError = throwError++infixl 1 `callFunc`+callFunc :: forall e m. (MonadNix e m, Typeable m)+ => NValue m -> m (NValue m) -> m (NValue m)+callFunc fun arg = case fun of+ NVClosure params f -> do+ traceM $ "callFunc:NVFunction taking " ++ show params+ f arg+ NVBuiltin name f -> do+ span <- currentPos+ withFrame Info (Calling @m @(NThunk m) name span) $ f arg+ s@(NVSet m _) | Just f <- M.lookup "__functor" m -> do+ traceM "callFunc:__functor"+ force f $ (`callFunc` pure s) >=> (`callFunc` arg)+ x -> throwError $ ErrorCall $ "Attempt to call non-function: " ++ show x++execUnaryOp :: (Framed e m, MonadVar m)+ => Scopes m (NThunk m) -> SrcSpan -> NUnaryOp -> NValue m+ -> m (NValue m)+execUnaryOp scope span op arg = do+ traceM "NUnary"+ case arg of+ NVConstant c -> case (op, c) of+ (NNeg, NInt i) -> unaryOp $ NInt (-i)+ (NNeg, NFloat f) -> unaryOp $ NFloat (-f)+ (NNot, NBool b) -> unaryOp $ NBool (not b)+ _ -> throwError $ ErrorCall $+ "unsupported argument type for unary operator " ++ show op+ x -> throwError $ ErrorCall $ "argument to unary operator"+ ++ " must evaluate to an atomic type: " ++ show x+ where+ unaryOp = pure . nvConstantP (Provenance scope (NUnary_ span op (Just arg)))++execBinaryOp+ :: forall e m. (MonadNix e m, MonadEval (NValue m) m)+ => Scopes m (NThunk m)+ -> SrcSpan+ -> NBinaryOp+ -> NValue m+ -> m (NValue m)+ -> m (NValue m)++execBinaryOp scope span NOr larg rarg = fromNix larg >>= \l ->+ if l+ then orOp Nothing True+ else rarg >>= \rval -> fromNix @Bool rval >>= orOp (Just rval)+ where+ orOp r b = pure $+ nvConstantP (Provenance scope (NBinary_ span NOr (Just larg) r)) (NBool b)++execBinaryOp scope span NAnd larg rarg = fromNix larg >>= \l ->+ if l+ then rarg >>= \rval -> fromNix @Bool rval >>= andOp (Just rval)+ else andOp Nothing False+ where+ andOp r b = pure $+ nvConstantP (Provenance scope (NBinary_ span NAnd (Just larg) r)) (NBool b)++execBinaryOp scope span op lval rarg = do+ rval <- rarg+ let bin :: (Provenance m -> a) -> a+ bin f = f (Provenance scope (NBinary_ span op (Just lval) (Just rval)))+ toBool = pure . bin nvConstantP . NBool+ case (lval, rval) of+ (NVConstant lc, NVConstant rc) -> case (op, lc, rc) of+ (NEq, _, _) -> toBool =<< valueEq lval rval+ (NNEq, _, _) -> toBool . not =<< valueEq lval rval+ (NLt, l, r) -> toBool $ l < r+ (NLte, l, r) -> toBool $ l <= r+ (NGt, l, r) -> toBool $ l > r+ (NGte, l, r) -> toBool $ l >= r+ (NAnd, _, _) ->+ nverr $ ErrorCall "should be impossible: && is handled above"+ (NOr, _, _) ->+ nverr $ ErrorCall "should be impossible: || is handled above"+ (NPlus, l, r) -> numBinOp bin (+) l r+ (NMinus, l, r) -> numBinOp bin (-) l r+ (NMult, l, r) -> numBinOp bin (*) l r+ (NDiv, l, r) -> numBinOp' bin div (/) l r+ (NImpl,+ NBool l, NBool r) -> toBool $ not l || r+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval++ (NVStr ls lc, NVStr rs rc) -> case op of+ NPlus -> pure $ bin nvStrP (ls `mappend` rs) (lc `mappend` rc)+ NEq -> toBool =<< valueEq lval rval+ NNEq -> toBool . not =<< valueEq lval rval+ NLt -> toBool $ ls < rs+ NLte -> toBool $ ls <= rs+ NGt -> toBool $ ls > rs+ NGte -> toBool $ ls >= rs+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval++ (NVStr _ _, NVConstant NNull) -> case op of+ NEq -> toBool =<< valueEq lval (nvStr "" mempty)+ NNEq -> toBool . not =<< valueEq lval (nvStr "" mempty)+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval++ (NVConstant NNull, NVStr _ _) -> case op of+ NEq -> toBool =<< valueEq (nvStr "" mempty) rval+ NNEq -> toBool . not =<< valueEq (nvStr "" mempty) rval+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval++ (NVSet ls lp, NVSet rs rp) -> case op of+ NUpdate -> pure $ bin nvSetP (rs `M.union` ls) (rp `M.union` lp)+ NEq -> toBool =<< valueEq lval rval+ NNEq -> toBool . not =<< valueEq lval rval+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval++ (NVSet ls lp, NVConstant NNull) -> case op of+ NUpdate -> pure $ bin nvSetP ls lp+ NEq -> toBool =<< valueEq lval (nvSet M.empty M.empty)+ NNEq -> toBool . not =<< valueEq lval (nvSet M.empty M.empty)+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval++ (NVConstant NNull, NVSet rs rp) -> case op of+ NUpdate -> pure $ bin nvSetP rs rp+ NEq -> toBool =<< valueEq (nvSet M.empty M.empty) rval+ NNEq -> toBool . not =<< valueEq (nvSet M.empty M.empty) rval+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval++ (NVList ls, NVList rs) -> case op of+ NConcat -> pure $ bin nvListP $ ls ++ rs+ NEq -> toBool =<< valueEq lval rval+ NNEq -> toBool . not =<< valueEq lval rval+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval++ (NVList ls, NVConstant NNull) -> case op of+ NConcat -> pure $ bin nvListP ls+ NEq -> toBool =<< valueEq lval (nvList [])+ NNEq -> toBool . not =<< valueEq lval (nvList [])+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval++ (NVConstant NNull, NVList rs) -> case op of+ NConcat -> pure $ bin nvListP rs+ NEq -> toBool =<< valueEq (nvList []) rval+ NNEq -> toBool . not =<< valueEq (nvList []) rval+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval++ (NVPath p, NVStr s _) -> case op of+ NEq -> toBool $ p == Text.unpack s+ NNEq -> toBool $ p /= Text.unpack s+ NPlus -> bin nvPathP <$> makeAbsolutePath (p `mappend` Text.unpack s)+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval++ (NVPath ls, NVPath rs) -> case op of+ NPlus -> bin nvPathP <$> makeAbsolutePath (ls ++ rs)+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval++ _ -> case op of+ NEq -> toBool False+ NNEq -> toBool True+ _ -> nverr $ ErrorCall $ unsupportedTypes lval rval+ where+ unsupportedTypes :: Show a => a -> a -> String+ unsupportedTypes lval rval =+ "Unsupported argument types for binary operator "+ ++ show op ++ ": " ++ show lval ++ ", " ++ show rval++ numBinOp :: (forall r. (Provenance m -> r) -> r)+ -> (forall a. Num a => a -> a -> a) -> NAtom -> NAtom -> m (NValue m)+ numBinOp bin f = numBinOp' bin f f++ numBinOp' :: (forall r. (Provenance m -> r) -> r)+ -> (Integer -> Integer -> Integer)+ -> (Float -> Float -> Float)+ -> NAtom -> NAtom -> m (NValue m)+ numBinOp' bin intF floatF l r = case (l, r) of+ (NInt li, NInt ri) -> toInt $ li `intF` ri+ (NInt li, NFloat rf) -> toFloat $ fromInteger li `floatF` rf+ (NFloat lf, NInt ri) -> toFloat $ lf `floatF` fromInteger ri+ (NFloat lf, NFloat rf) -> toFloat $ lf `floatF` rf+ _ -> nverr $ ErrorCall $ unsupportedTypes l r+ where+ toInt = pure . bin nvConstantP . NInt+ toFloat = pure . bin nvConstantP . NFloat++coerceToString :: MonadNix e m => NValue m -> m String+coerceToString = \case+ NVConstant (NBool b)+ | b -> pure "1"+ | otherwise -> pure ""+ NVConstant (NInt n) -> pure $ show n+ NVConstant (NFloat n) -> pure $ show n+ NVConstant NNull -> pure ""++ NVStr t _ -> pure $ Text.unpack t+ NVPath p -> unStorePath <$> addPath p+ NVList l -> unwords <$> traverse (`force` coerceToString) l++ v@(NVSet s _) | Just p <- M.lookup "__toString" s ->+ force p $ (`callFunc` pure v) >=> coerceToString++ NVSet s _ | Just p <- M.lookup "outPath" s ->+ force p coerceToString++ v -> throwError $ ErrorCall $ "Expected a string, but saw: " ++ show v++newtype Lazy m a = Lazy+ { runLazy :: ReaderT (Context (Lazy m) (NThunk (Lazy m)))+ (StateT (HashMap FilePath NExprLoc) m) a }+ deriving (Functor, Applicative, Alternative, Monad, MonadPlus,+ MonadFix, MonadIO,+ MonadReader (Context (Lazy m) (NThunk (Lazy m))))++instance MonadIO m => MonadVar (Lazy m) where+ type Var (Lazy m) = IORef++ newVar = liftIO . newIORef+ readVar = liftIO . readIORef+ writeVar = (liftIO .) . writeIORef+ atomicModifyVar = (liftIO .) . atomicModifyIORef++instance (MonadIO m, Monad m) => MonadFile m where+ readFile = liftIO . BS.readFile++instance MonadCatch m => MonadCatch (Lazy m) where+ catch (Lazy (ReaderT m)) f = Lazy $ ReaderT $ \e ->+ catch (m e) ((`runReaderT` e) . runLazy . f)++instance MonadThrow m => MonadThrow (Lazy m) where+ throwM = Lazy . throwM++#if MIN_VERSION_haskeline(0, 4, 7)+instance MonadException m => MonadException (Lazy m) where+ controlIO f = Lazy $ controlIO $ \(RunIO run) ->+ let run' = RunIO (fmap Lazy . run . runLazy)+ in runLazy <$> f run'+#endif++instance (MonadFix m, MonadCatch m, MonadIO m, Alternative m,+ MonadPlus m, Typeable m)+ => MonadEffects (Lazy m) where+ addPath path = do+ (exitCode, out, _) <-+ liftIO $ readProcessWithExitCode "nix-store" ["--add", path] ""+ case exitCode of+ ExitSuccess -> do+ let dropTrailingLinefeed p = take (length p - 1) p+ return $ StorePath $ dropTrailingLinefeed out+ _ -> throwError $ ErrorCall $+ "addPath: failed: nix-store --add " ++ show path++ makeAbsolutePath origPath = do+ origPathExpanded <- liftIO $ expandHomePath origPath+ absPath <- if isAbsolute origPathExpanded then pure origPathExpanded else do+ cwd <- do+ mres <- lookupVar @_ @(NThunk (Lazy m)) "__cur_file"+ case mres of+ Nothing -> liftIO getCurrentDirectory+ Just v -> force v $ \case+ NVPath s -> return $ takeDirectory s+ v -> throwError $ ErrorCall $ "when resolving relative path,"+ ++ " __cur_file is in scope,"+ ++ " but is not a path; it is: "+ ++ show v+ pure $ cwd <///> origPathExpanded+ liftIO $ removeDotDotIndirections <$> canonicalizePath absPath++ findEnvPath = findEnvPathM++ pathExists = liftIO . fileExist++ importPath scope origPath = do+ path <- liftIO $ pathToDefaultNixFile origPath+ mres <- lookupVar @(Context (Lazy m) (NThunk (Lazy m)))+ "__cur_file"+ path' <- case mres of+ Nothing -> do+ traceM "No known current directory"+ return path+ Just p -> fromValue @_ @_ @(NThunk (Lazy m)) p >>= \(Path p') -> do+ traceM $ "Current file being evaluated is: " ++ show p'+ return $ takeDirectory p' </> path++ traceM $ "Importing file " ++ path'+ withFrame Info (ErrorCall $ "While importing file " ++ show path') $ do+ imports <- Lazy $ ReaderT $ const get+ expr <- case M.lookup path' imports of+ Just expr -> pure expr+ Nothing -> do+ eres <- Lazy $ parseNixFileLoc path'+ case eres of+ Failure err ->+ throwError $ ErrorCall . show $+ text "Parse during import failed:" P.</> err+ Success expr -> do+ Lazy $ ReaderT $ const $+ modify (M.insert origPath expr)+ pure expr++ let ref = value @_ @_ @(Lazy m) (nvPath path')+ -- Use this cookie so that when we evaluate the next+ -- import, we'll remember which directory its containing+ -- file was in.+ pushScope (M.singleton "__cur_file" ref) $+ pushScope scope $ evalExprLoc expr++ getEnvVar = liftIO . lookupEnv++ getCurrentSystemOS = return $ Text.pack System.Info.os++ -- Invert the conversion done by GHC_CONVERT_CPU in GHC's aclocal.m4+ getCurrentSystemArch = return $ Text.pack $ case System.Info.arch of+ "i386" -> "i686"+ arch -> arch++ listDirectory = liftIO . System.Directory.listDirectory+ getSymbolicLinkStatus = liftIO . System.Posix.Files.getSymbolicLinkStatus++ derivationStrict = fromValue @(ValueSet (Lazy m)) >=> \s -> do+ nn <- maybe (pure False) fromNix (M.lookup "__ignoreNulls" s)+ s' <- M.fromList <$> mapMaybeM (handleEntry nn) (M.toList s)+ v' <- normalForm =<< toValue @(ValueSet (Lazy m)) s'+ nixInstantiateExpr $ "derivationStrict " ++ show (prettyNValueNF v')+ where+ mapMaybeM :: (a -> Lazy m (Maybe b)) -> [a] -> Lazy m [b]+ mapMaybeM op = foldr f (return [])+ where f x xs = op x >>= \case+ Nothing -> xs+ Just x -> (x:) <$> xs++ handleEntry ignoreNulls (k, v) = fmap (k,) <$> case k of+ -- The `args' attribute is special: it supplies the command-line+ -- arguments to the builder.+ "args" -> Just <$> convertNix @[Text] v+ "__ignoreNulls" -> pure Nothing+ _ -> force v $ \case+ NVConstant NNull | ignoreNulls -> pure Nothing+ v' -> Just <$> (toNix =<< Text.pack <$> coerceToString v')++ nixInstantiateExpr expr = do+ traceM $ "Executing: "+ ++ show ["nix-instantiate", "--eval", "--expr ", expr]+ (exitCode, out, err) <-+ liftIO $ readProcessWithExitCode "nix-instantiate"+ [ "--eval", "--expr", expr] ""+ case exitCode of+ ExitSuccess -> case parseNixTextLoc (Text.pack out) of+ Failure err ->+ throwError $ ErrorCall $+ "Error parsing output of nix-instantiate: " ++ show err+ Success v -> evalExprLoc v+ status ->+ throwError $ ErrorCall $ "nix-instantiate failed: " ++ show status+ ++ ": " ++ err++ getRecursiveSize =+#ifdef MIN_VERSION_ghc_datasize+#if MIN_VERSION_ghc_datasize(0,2,0) && __GLASGOW_HASKELL__ >= 804+ toNix @Integer <=< fmap fromIntegral . liftIO . recursiveSize+#else+ const $ toNix (0 :: Integer)+#endif+#else+ const $ toNix (0 :: Integer)+#endif++ getURL url = do+ let urlstr = Text.unpack url+ traceM $ "fetching HTTP URL: " ++ urlstr+ response <- liftIO $ do+ req <- parseRequest urlstr+ manager <-+ if secure req+ then newTlsManager+ else newManager defaultManagerSettings+ -- print req+ httpLbs (req { method = "GET" }) manager+ -- return response+ let status = statusCode (responseStatus response)+ if status /= 200+ then throwError $ ErrorCall $ + "fail, got " ++ show status ++ " when fetching url:" ++ urlstr+ else -- do+ -- let bstr = responseBody response+ -- liftIO $ print bstr+ throwError $ ErrorCall $ + "success in downloading but hnix-store is not yet ready; url = " ++ urlstr++ traceEffect = liftIO . putStrLn++ exec = \case+ [] -> throwError $ ErrorCall "exec: missing program"+ (prog:args) -> do+ (exitCode, out, _) <-+ liftIO $ readProcessWithExitCode prog args ""+ let t = Text.strip (Text.pack out)+ let emsg = "program[" ++ prog ++ "] args=" ++ show args+ case exitCode of+ ExitSuccess ->+ if Text.null t+ then throwError $ ErrorCall $ "exec has no output :" ++ emsg+ else case parseNixTextLoc t of+ Failure err ->+ throwError $ ErrorCall $+ "Error parsing output of exec: " ++ show err ++ " " ++ emsg+ Success v -> evalExprLoc v+ err -> throwError $ ErrorCall $+ "exec failed: " ++ show err ++ " " ++ emsg++runLazyM :: Options -> MonadIO m => Lazy m a -> m a+runLazyM opts = (`evalStateT` M.empty)+ . (`runReaderT` newContext opts)+ . runLazy++-- | Incorrectly normalize paths by rewriting patterns like @a/b/..@ to @a@.+-- This is incorrect on POSIX systems, because if @b@ is a symlink, its+-- parent may be a different directory from @a@. See the discussion at+-- https://hackage.haskell.org/package/directory-1.3.1.5/docs/System-Directory.html#v:canonicalizePath+removeDotDotIndirections :: FilePath -> FilePath+removeDotDotIndirections = intercalate "/" . go [] . splitOn "/"+ where go s [] = reverse s+ go (_:s) ("..":rest) = go s rest+ go s (this:rest) = go (this:s) rest++expandHomePath :: FilePath -> IO FilePath+expandHomePath ('~' : xs) = flip (++) xs <$> getHomeDirectory+expandHomePath p = return p++-- Given a path, determine the nix file to load+pathToDefaultNixFile :: FilePath -> IO FilePath+pathToDefaultNixFile p = do+ isDir <- doesDirectoryExist p+ pure $ if isDir then p </> "default.nix" else p++infixr 9 <///>+(<///>) :: FilePath -> FilePath -> FilePath+x <///> y | isAbsolute y || "." `isPrefixOf` y = x </> y+ | otherwise = joinByLargestOverlap x y+ where+ joinByLargestOverlap (splitDirectories -> xs) (splitDirectories -> ys) =+ joinPath $ head [ xs ++ drop (length tx) ys+ | tx <- tails xs, tx `elem` inits ys ]++nixFilePath :: (MonadEffects m, MonadIO m) => FilePath -> m (Maybe FilePath)+nixFilePath path = do+ path <- makeAbsolutePath path+ exists <- liftIO $ doesDirectoryExist path+ path' <- if exists+ then makeAbsolutePath $ path </> "default.nix"+ else return path+ exists <- liftIO $ doesFileExist path'+ return $ if exists then Just path' else Nothing++findEnvPathM :: forall e m. (MonadNix e m, MonadIO m)+ => FilePath -> m FilePath+findEnvPathM name = do+ mres <- lookupVar @_ @(NThunk m) "__nixPath"+ mpath <- case mres of+ Nothing -> error "impossible"+ Just x -> force x $ fromValue >=> \(l :: [NThunk m]) ->+ foldM go Nothing l+ case mpath of+ Nothing ->+ throwError $ ErrorCall $ "file '" ++ name+ ++ "' was not found in the Nix search path"+ ++ " (add it using $NIX_PATH or -I)"+ Just path -> return path+ where+ go :: Maybe FilePath -> NThunk m -> m (Maybe FilePath)+ go p@(Just _) _ = pure p+ go Nothing l = force l $ fromValue >=> \(s :: HashMap Text (NThunk m)) ->+ case M.lookup "path" s of+ Just p -> force p $ fromValue >=> \(Path path) ->+ case M.lookup "prefix" s of+ Nothing -> tryPath path Nothing+ Just pf -> force pf $ fromValueMay >=> \case+ Just (pfx :: Text) | not (Text.null pfx) ->+ tryPath path (Just (Text.unpack pfx))+ _ -> tryPath path Nothing+ Nothing ->+ throwError $ ErrorCall $ "__nixPath must be a list of attr sets"+ ++ " with 'path' elements, but saw: " ++ show s++ tryPath p (Just n) | n':ns <- splitDirectories name, n == n' =+ nixFilePath $ p <///> joinPath ns+ tryPath p _ = nixFilePath $ p <///> name++addTracing :: (MonadNix e m, Has e Options, MonadIO m,+ MonadReader Int n, Alternative n)+ => Alg NExprLocF (m a) -> Alg NExprLocF (n (m a))+addTracing k v = do+ depth <- ask+ guard (depth < 2000)+ local succ $ do+ v'@(Compose (Ann span x)) <- sequence v+ return $ do+ opts :: Options <- asks (view hasLens)+ let rendered =+ if verbose opts >= Chatty+ then show (void x)+ else show (prettyNix (Fix (Fix (NSym "?") <$ x)))+ msg x = "eval: " ++ replicate depth ' ' ++ x+ loc <- renderLocation span (text (msg rendered ++ " ..."))+ liftIO $ putStr $ show loc+ res <- k v'+ liftIO $ putStrLn $ msg (rendered ++ " ...done")+ return res++evalExprLoc :: forall e m. (MonadNix e m, Has e Options, MonadIO m)+ => NExprLoc -> m (NValue m)+evalExprLoc expr = do+ opts :: Options <- asks (view hasLens)+ if tracing opts+ then join . (`runReaderT` (0 :: Int)) $+ adi (addTracing phi)+ (raise (addStackFrames @(NThunk m) . addSourcePositions))+ expr+ else adi phi (addStackFrames @(NThunk m) . addSourcePositions) expr+ where+ phi = Eval.eval @_ @(NValue m) @(NThunk m) @m . annotated . getCompose+ raise k f x = ReaderT $ \e -> k (\t -> runReaderT (f t) e) x
@@ -0,0 +1,10 @@+-- | Wraps the expression submodules.+module Nix.Expr (+ module Nix.Expr.Types,+ module Nix.Expr.Types.Annotated,+ module Nix.Expr.Shorthands+ ) where++import Nix.Expr.Types+import Nix.Expr.Shorthands+import Nix.Expr.Types.Annotated
@@ -0,0 +1,231 @@+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}++-- | A bunch of shorthands for making nix expressions.+--+-- Functions with an @F@ suffix return a more general type without the outer+-- 'Fix' wrapper.+module Nix.Expr.Shorthands where++import Data.Fix+import Data.List.NonEmpty (NonEmpty(..))+import Data.Monoid+import Data.Text (Text)+import Nix.Atoms+import Nix.Expr.Types+import Text.Megaparsec.Pos (SourcePos)++-- | Make an integer literal expression.+mkInt :: Integer -> NExpr+mkInt = Fix . mkIntF++mkIntF :: Integer -> NExprF a+mkIntF = NConstant . NInt++-- | Make an floating point literal expression.+mkFloat :: Float -> NExpr+mkFloat = Fix . mkFloatF++mkFloatF :: Float -> NExprF a+mkFloatF = NConstant . NFloat++-- | Make a regular (double-quoted) string.+mkStr :: Text -> NExpr+mkStr = Fix . NStr . DoubleQuoted . \case+ "" -> []+ x -> [Plain x]++-- | Make an indented string.+mkIndentedStr :: Int -> Text -> NExpr+mkIndentedStr w = Fix . NStr . Indented w . \case+ "" -> []+ x -> [Plain x]++-- | Make a path. Use 'True' if the path should be read from the+-- environment, else 'False'.+mkPath :: Bool -> FilePath -> NExpr+mkPath b = Fix . mkPathF b++mkPathF :: Bool -> FilePath -> NExprF a+mkPathF False = NLiteralPath+mkPathF True = NEnvPath++-- | Make a path expression which pulls from the NIX_PATH env variable.+mkEnvPath :: FilePath -> NExpr+mkEnvPath = Fix . mkEnvPathF++mkEnvPathF :: FilePath -> NExprF a+mkEnvPathF = mkPathF True++-- | Make a path expression which references a relative path.+mkRelPath :: FilePath -> NExpr+mkRelPath = Fix . mkRelPathF++mkRelPathF :: FilePath -> NExprF a+mkRelPathF = mkPathF False++-- | Make a variable (symbol)+mkSym :: Text -> NExpr+mkSym = Fix . mkSymF++mkSymF :: Text -> NExprF a+mkSymF = NSym++mkSelector :: Text -> NAttrPath NExpr+mkSelector = (:| []) . StaticKey++mkBool :: Bool -> NExpr+mkBool = Fix . mkBoolF++mkBoolF :: Bool -> NExprF a+mkBoolF = NConstant . NBool++mkNull :: NExpr+mkNull = Fix mkNullF++mkNullF :: NExprF a+mkNullF = NConstant NNull++mkOper :: NUnaryOp -> NExpr -> NExpr+mkOper op = Fix . NUnary op++mkOper2 :: NBinaryOp -> NExpr -> NExpr -> NExpr+mkOper2 op a = Fix . NBinary op a++mkParamset :: [(Text, Maybe NExpr)] -> Bool -> Params NExpr+mkParamset params variadic = ParamSet params variadic Nothing++mkRecSet :: [Binding NExpr] -> NExpr+mkRecSet = Fix . NRecSet++mkNonRecSet :: [Binding NExpr] -> NExpr+mkNonRecSet = Fix . NSet++mkLets :: [Binding NExpr] -> NExpr -> NExpr+mkLets bindings = Fix . NLet bindings++mkList :: [NExpr] -> NExpr+mkList = Fix . NList++mkWith :: NExpr -> NExpr -> NExpr+mkWith e = Fix . NWith e++mkAssert :: NExpr -> NExpr -> NExpr+mkAssert e = Fix . NWith e++mkIf :: NExpr -> NExpr -> NExpr -> NExpr+mkIf e1 e2 = Fix . NIf e1 e2++mkFunction :: Params NExpr -> NExpr -> NExpr+mkFunction params = Fix . NAbs params++{-+mkDot :: NExpr -> Text -> NExpr+mkDot e key = mkDots e [key]++-- | Create a dotted expression using only text.+mkDots :: NExpr -> [Text] -> NExpr+mkDots e [] = e+mkDots (Fix (NSelect e keys' x)) keys =+ -- Special case: if the expression in the first argument is already+ -- a dotted expression, just extend it.+ Fix (NSelect e (keys' <> map (StaticKey ?? Nothing) keys) x)+mkDots e keys = Fix $ NSelect e (map (StaticKey ?? Nothing) keys) Nothing+-}++-- | An `inherit` clause without an expression to pull from.+inherit :: [NKeyName e] -> SourcePos -> Binding e+inherit = Inherit Nothing++-- | An `inherit` clause with an expression to pull from.+inheritFrom :: e -> [NKeyName e] -> SourcePos -> Binding e+inheritFrom expr = Inherit (Just expr)++-- | Shorthand for producing a binding of a name to an expression.+bindTo :: Text -> NExpr -> Binding NExpr+bindTo name x = NamedVar (mkSelector name) x nullPos++-- | Infix version of bindTo.+($=) :: Text -> NExpr -> Binding NExpr+($=) = bindTo++infixr 2 $=++-- | Append a list of bindings to a set or let expression.+-- For example, adding `[a = 1, b = 2]` to `let c = 3; in 4` produces+-- `let a = 1; b = 2; c = 3; in 4`.+appendBindings :: [Binding NExpr] -> NExpr -> NExpr+appendBindings newBindings (Fix e) = case e of+ NLet bindings e' -> Fix $ NLet (bindings <> newBindings) e'+ NSet bindings -> Fix $ NSet (bindings <> newBindings)+ NRecSet bindings -> Fix $ NRecSet (bindings <> newBindings)+ _ -> error "Can only append bindings to a set or a let"++-- | Applies a transformation to the body of a nix function.+modifyFunctionBody :: (NExpr -> NExpr) -> NExpr -> NExpr+modifyFunctionBody f (Fix e) = case e of+ NAbs params body -> Fix $ NAbs params (f body)+ _ -> error "Not a function"++-- | A let statement with multiple assignments.+letsE :: [(Text, NExpr)] -> NExpr -> NExpr+letsE pairs = Fix . NLet (map (uncurry bindTo) pairs)++-- | Wrapper for a single-variable @let@.+letE :: Text -> NExpr -> NExpr -> NExpr+letE varName varExpr = letsE [(varName, varExpr)]++-- | Make an attribute set (non-recursive).+attrsE :: [(Text, NExpr)] -> NExpr+attrsE pairs = Fix $ NSet (map (uncurry bindTo) pairs)++-- | Make an attribute set (recursive).+recAttrsE :: [(Text, NExpr)] -> NExpr+recAttrsE pairs = Fix $ NRecSet (map (uncurry bindTo) pairs)++-- | Logical negation.+mkNot :: NExpr -> NExpr+mkNot = Fix . NUnary NNot++-- -- | Dot-reference into an attribute set.+-- (!.) :: NExpr -> Text -> NExpr+-- (!.) = mkDot+-- infixl 8 !.++mkBinop :: NBinaryOp -> NExpr -> NExpr -> NExpr+mkBinop op e1 e2 = Fix (NBinary op e1 e2)++-- | Various nix binary operators+($==), ($!=), ($<), ($<=), ($>), ($>=), ($&&), ($||), ($->),+ ($//), ($+), ($-), ($*), ($/), ($++)+ :: NExpr -> NExpr -> NExpr+e1 $== e2 = mkBinop NEq e1 e2+e1 $!= e2 = mkBinop NNEq e1 e2+e1 $< e2 = mkBinop NLt e1 e2+e1 $<= e2 = mkBinop NLte e1 e2+e1 $> e2 = mkBinop NGt e1 e2+e1 $>= e2 = mkBinop NGte e1 e2+e1 $&& e2 = mkBinop NAnd e1 e2+e1 $|| e2 = mkBinop NOr e1 e2+e1 $-> e2 = mkBinop NImpl e1 e2+e1 $// e2 = mkBinop NUpdate e1 e2+e1 $+ e2 = mkBinop NPlus e1 e2+e1 $- e2 = mkBinop NMinus e1 e2+e1 $* e2 = mkBinop NMult e1 e2+e1 $/ e2 = mkBinop NDiv e1 e2+e1 $++ e2 = mkBinop NConcat e1 e2++-- | Function application expression.+(@@) :: NExpr -> NExpr -> NExpr+f @@ arg = mkBinop NApp f arg+infixl 1 @@++-- | Lambda shorthand.+(==>) :: Params NExpr -> NExpr -> NExpr+(==>) = mkFunction++infixr 1 ==>++(@.) :: NExpr -> Text -> NExpr+obj @. name = Fix (NSelect obj (StaticKey name :| []) Nothing)+infixl 2 @.
@@ -0,0 +1,558 @@+{-# LANGUAGE BangPatterns #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}++{-# OPTIONS_GHC -Wno-orphans #-}+{-# OPTIONS_GHC -Wno-missing-signatures #-}++-- | The nix expression type and supporting types.+module Nix.Expr.Types where++#if MIN_VERSION_serialise(0, 2, 0)+import Codec.Serialise (Serialise)+import qualified Codec.Serialise as Ser+#endif+import Control.Applicative+import Control.DeepSeq+import Control.Monad+import Data.Aeson+import Data.Aeson.TH+import Data.Binary (Binary)+import qualified Data.Binary as Bin+import Data.Data+import Data.Eq.Deriving+import Data.Fix+import Data.Functor.Classes+import Data.Hashable+#if MIN_VERSION_hashable(1, 2, 5)+import Data.Hashable.Lifted+#endif+import Data.List (inits, tails)+import Data.List.NonEmpty (NonEmpty(..))+import qualified Data.List.NonEmpty as NE+import Data.Maybe (fromMaybe)+import Data.Monoid+import Data.Ord.Deriving+import Data.Text (Text, pack, unpack)+import Data.Traversable+import GHC.Exts+import GHC.Generics+import Language.Haskell.TH.Syntax+import Lens.Family2+import Lens.Family2.TH+import Nix.Atoms+import Nix.Utils+import Text.Megaparsec.Pos+import Text.Read.Deriving+import Text.Show.Deriving+#if MIN_VERSION_base(4, 10, 0)+import Type.Reflection (eqTypeRep)+import qualified Type.Reflection as Reflection+#endif++type VarName = Text++-- unfortunate orphans+#if MIN_VERSION_hashable(1, 2, 5)+instance Hashable1 NonEmpty+#endif++#if !MIN_VERSION_base(4, 10, 0)+instance Eq1 NonEmpty where+ liftEq eq (a NE.:| as) (b NE.:| bs) = eq a b && liftEq eq as bs+instance Show1 NonEmpty where+ liftShowsPrec shwP shwL p (a NE.:| as) = showParen (p > 5) $+ shwP 6 a . showString " :| " . shwL as+#endif++#if !MIN_VERSION_binary(0, 8, 4)+instance Binary a => Binary (NE.NonEmpty a) where+ get = fmap NE.fromList Bin.get+ put = Bin.put . NE.toList+#endif++-- | The main nix expression type. This is polymorphic so that it can be made+-- a functor, which allows us to traverse expressions and map functions over+-- them. The actual 'NExpr' type is a fixed point of this functor, defined+-- below.+data NExprF r+ = NConstant !NAtom+ -- ^ Constants: ints, bools, URIs, and null.+ | NStr !(NString r)+ -- ^ A string, with interpolated expressions.+ | NSym !VarName+ -- ^ A variable. For example, in the expression @f a@, @f@ is represented+ -- as @NSym "f"@ and @a@ as @NSym "a"@.+ | NList ![r]+ -- ^ A list literal.+ | NSet ![Binding r]+ -- ^ An attribute set literal, not recursive.+ | NRecSet ![Binding r]+ -- ^ An attribute set literal, recursive.+ | NLiteralPath !FilePath+ -- ^ A path expression, which is evaluated to a store path. The path here+ -- can be relative, in which case it's evaluated relative to the file in+ -- which it appears.+ | NEnvPath !FilePath+ -- ^ A path which refers to something in the Nix search path (the NIX_PATH+ -- environment variable. For example, @<nixpkgs/pkgs>@.+ | NUnary !NUnaryOp !r+ -- ^ Application of a unary operator to an expression.+ | NBinary !NBinaryOp !r !r+ -- ^ Application of a binary operator to two expressions.+ | NSelect !r !(NAttrPath r) !(Maybe r)+ -- ^ Dot-reference into an attribute set, optionally providing an+ -- alternative if the key doesn't exist.+ | NHasAttr !r !(NAttrPath r)+ -- ^ Ask if a set contains a given attribute path.+ | NAbs !(Params r) !r+ -- ^ A function literal (lambda abstraction).+ | NLet ![Binding r] !r+ -- ^ Evaluate the second argument after introducing the bindings.+ | NIf !r !r !r+ -- ^ If-then-else statement.+ | NWith !r !r+ -- ^ Evaluate an attribute set, bring its bindings into scope, and+ -- evaluate the second argument.+ | NAssert !r !r+ -- ^ Assert that the first returns true before evaluating the second.+ deriving (Ord, Eq, Generic, Generic1, Typeable, Data, Functor,+ Foldable, Traversable, Show, NFData,+ Hashable)++#if MIN_VERSION_hashable(1, 2, 5)+instance Hashable1 NExprF+#endif++#if MIN_VERSION_deepseq(1, 4, 3)+instance NFData1 NExprF+#endif++#if MIN_VERSION_serialise(0, 2, 0)+instance Serialise r => Serialise (NExprF r)+#endif++-- | We make an `IsString` for expressions, where the string is interpreted+-- as an identifier. This is the most common use-case...+instance IsString NExpr where+ fromString = Fix . NSym . fromString++#if MIN_VERSION_base(4, 10, 0)+instance Lift (Fix NExprF) where+ lift = dataToExpQ $ \b ->+ case Reflection.typeOf b `eqTypeRep` Reflection.typeRep @Text of+ Just HRefl -> Just [| pack $(liftString $ unpack b) |]+ Nothing -> Nothing+#endif++-- | The monomorphic expression type is a fixed point of the polymorphic one.+type NExpr = Fix NExprF++#if MIN_VERSION_serialise(0, 2, 0)+instance Serialise NExpr+#endif++-- | A single line of the bindings section of a let expression or of a set.+data Binding r+ = NamedVar !(NAttrPath r) !r !SourcePos+ -- ^ An explicit naming, such as @x = y@ or @x.y = z@.+ | Inherit !(Maybe r) ![NKeyName r] !SourcePos+ -- ^ Using a name already in scope, such as @inherit x;@ which is shorthand+ -- for @x = x;@ or @inherit (x) y;@ which means @y = x.y;@. The+ -- unsafeGetAttrPos for every name so inherited is the position of the+ -- first name, whether that be the first argument to this constructor, or+ -- the first member of the list in the second argument.+ deriving (Generic, Generic1, Typeable, Data, Ord, Eq, Functor,+ Foldable, Traversable, Show, NFData,+ Hashable)++#if MIN_VERSION_hashable(1, 2, 5)+instance Hashable1 Binding+#endif++#if MIN_VERSION_deepseq(1, 4, 3)+instance NFData1 Binding+#endif++#if MIN_VERSION_serialise(0, 2, 0)+instance Serialise r => Serialise (Binding r)+#endif++-- | @Params@ represents all the ways the formal parameters to a+-- function can be represented.+data Params r+ = Param !VarName+ -- ^ For functions with a single named argument, such as @x: x + 1@.+ | ParamSet !(ParamSet r) !Bool !(Maybe VarName)+ -- ^ Explicit parameters (argument must be a set). Might specify a name to+ -- bind to the set in the function body. The bool indicates whether it is+ -- variadic or not.+ deriving (Ord, Eq, Generic, Generic1, Typeable, Data, Functor, Show,+ Foldable, Traversable, NFData, Hashable)++#if MIN_VERSION_hashable(1, 2, 5)+instance Hashable1 Params+#endif++#if MIN_VERSION_deepseq(1, 4, 3)+instance NFData1 Params+#endif++#if MIN_VERSION_serialise(0, 2, 0)+instance Serialise r => Serialise (Params r)+#endif++-- This uses an association list because nix XML serialization preserves the+-- order of the param set.+type ParamSet r = [(VarName, Maybe r)]++instance IsString (Params r) where+ fromString = Param . fromString++-- | 'Antiquoted' represents an expression that is either+-- antiquoted (surrounded by ${...}) or plain (not antiquoted).+data Antiquoted (v :: *) (r :: *) = Plain !v | EscapedNewline | Antiquoted !r+ deriving (Ord, Eq, Generic, Generic1, Typeable, Data, Functor, Foldable,+ Traversable, Show, Read, NFData, Hashable)++#if MIN_VERSION_hashable(1, 2, 5)+instance Hashable v => Hashable1 (Antiquoted v)++instance Hashable2 Antiquoted where+ liftHashWithSalt2 ha _ salt (Plain a) =+ ha (salt `hashWithSalt` (0 :: Int)) a+ liftHashWithSalt2 _ _ salt EscapedNewline =+ salt `hashWithSalt` (1 :: Int)+ liftHashWithSalt2 _ hb salt (Antiquoted b) =+ hb (salt `hashWithSalt` (2 :: Int)) b+#endif++#if MIN_VERSION_deepseq(1, 4, 3)+instance NFData v => NFData1 (Antiquoted v)+#endif++#if MIN_VERSION_serialise(0, 2, 0)+instance (Serialise v, Serialise r) => Serialise (Antiquoted v r)+#endif++-- | An 'NString' is a list of things that are either a plain string+-- or an antiquoted expression. After the antiquotes have been evaluated,+-- the final string is constructed by concating all the parts.+data NString r+ = DoubleQuoted ![Antiquoted Text r]+ -- ^ Strings wrapped with double-quotes (") can contain literal newline+ -- characters, but the newlines are preserved and no indentation is stripped.+ | Indented !Int ![Antiquoted Text r]+ -- ^ Strings wrapped with two single quotes ('') can contain newlines, and+ -- their indentation will be stripped, but the amount stripped is+ -- remembered.+ deriving (Eq, Ord, Generic, Generic1, Typeable, Data, Functor, Foldable,+ Traversable, Show, Read, NFData, Hashable)++#if MIN_VERSION_hashable(1, 2, 5)+instance Hashable1 NString+#endif++#if MIN_VERSION_deepseq(1, 4, 3)+instance NFData1 NString+#endif++#if MIN_VERSION_serialise(0, 2, 0)+instance Serialise r => Serialise (NString r)+#endif++-- | For the the 'IsString' instance, we use a plain doublequoted string.+instance IsString (NString r) where+ fromString "" = DoubleQuoted []+ fromString string = DoubleQuoted [Plain $ pack string]++-- | A 'KeyName' is something that can appear on the left side of an+-- equals sign. For example, @a@ is a 'KeyName' in @{ a = 3; }@, @let a = 3;+-- in ...@, @{}.a@ or @{} ? a@.+--+-- Nix supports both static keynames (just an identifier) and dynamic+-- identifiers. Dynamic identifiers can be either a string (e.g.:+-- @{ "a" = 3; }@) or an antiquotation (e.g.: @let a = "example";+-- in { ${a} = 3; }.example@).+--+-- Note: There are some places where a dynamic keyname is not allowed.+-- In particular, those include:+--+-- * The RHS of a @binding@ inside @let@: @let ${"a"} = 3; in ...@+-- produces a syntax error.+-- * The attribute names of an 'inherit': @inherit ${"a"};@ is forbidden.+--+-- Note: In Nix, a simple string without antiquotes such as @"foo"@ is+-- allowed even if the context requires a static keyname, but the+-- parser still considers it a 'DynamicKey' for simplicity.+data NKeyName r+ = DynamicKey !(Antiquoted (NString r) r)+ | StaticKey !VarName+ deriving (Eq, Ord, Generic, Typeable, Data, Show, Read, NFData,+ Hashable)++#if MIN_VERSION_serialise(0, 2, 0)+instance Serialise r => Serialise (NKeyName r)++instance Serialise Pos where+ encode x = Ser.encode (unPos x)+ decode = mkPos <$> Ser.decode++instance Serialise SourcePos where+ encode (SourcePos f l c) = Ser.encode f <> Ser.encode l <> Ser.encode c+ decode = SourcePos <$> Ser.decode <*> Ser.decode <*> Ser.decode+#endif++instance Hashable Pos where+ hashWithSalt salt x = hashWithSalt salt (unPos x)++instance Hashable SourcePos where+ hashWithSalt salt (SourcePos f l c) =+ salt `hashWithSalt` f `hashWithSalt` l `hashWithSalt` c++instance Generic1 NKeyName where+ type Rep1 NKeyName = NKeyName+ from1 = id+ to1 = id++#if MIN_VERSION_deepseq(1, 4, 3)+instance NFData1 NKeyName where+ liftRnf _ (StaticKey !_) = ()+ liftRnf _ (DynamicKey (Plain !_)) = ()+ liftRnf _ (DynamicKey EscapedNewline) = ()+ liftRnf k (DynamicKey (Antiquoted r)) = k r+#endif++-- | Most key names are just static text, so this instance is convenient.+instance IsString (NKeyName r) where+ fromString = StaticKey . fromString++instance Eq1 NKeyName where+ liftEq eq (DynamicKey a) (DynamicKey b) = liftEq2 (liftEq eq) eq a b+ liftEq _ (StaticKey a) (StaticKey b) = a == b+ liftEq _ _ _ = False++#if MIN_VERSION_hashable(1, 2, 5)+instance Hashable1 NKeyName where+ liftHashWithSalt h salt (DynamicKey a) =+ liftHashWithSalt2 (liftHashWithSalt h) h (salt `hashWithSalt` (0 :: Int)) a+ liftHashWithSalt _ salt (StaticKey n) =+ salt `hashWithSalt` (1 :: Int) `hashWithSalt` n+#endif++-- Deriving this instance automatically is not possible because @r@+-- occurs not only as last argument in @Antiquoted (NString r) r@+instance Show1 NKeyName where+ liftShowsPrec sp sl p = \case+ DynamicKey a -> showsUnaryWith (liftShowsPrec2 (liftShowsPrec sp sl) (liftShowList sp sl) sp sl) "DynamicKey" p a+ StaticKey t -> showsUnaryWith showsPrec "StaticKey" p t++-- Deriving this instance automatically is not possible because @r@+-- occurs not only as last argument in @Antiquoted (NString r) r@+instance Functor NKeyName where+ fmap = fmapDefault++-- Deriving this instance automatically is not possible because @r@+-- occurs not only as last argument in @Antiquoted (NString r) r@+instance Foldable NKeyName where+ foldMap = foldMapDefault++-- Deriving this instance automatically is not possible because @r@+-- occurs not only as last argument in @Antiquoted (NString r) r@+instance Traversable NKeyName where+ traverse f = \case+ DynamicKey (Plain str) -> DynamicKey . Plain <$> traverse f str+ DynamicKey (Antiquoted e) -> DynamicKey . Antiquoted <$> f e+ DynamicKey EscapedNewline -> pure $ DynamicKey EscapedNewline+ StaticKey key -> pure (StaticKey key)++-- | A selector (for example in a @let@ or an attribute set) is made up+-- of strung-together key names.+type NAttrPath r = NonEmpty (NKeyName r)++-- | There are two unary operations: logical not and integer negation.+data NUnaryOp = NNeg | NNot+ deriving (Eq, Ord, Generic, Typeable, Data, Show, Read, NFData,+ Hashable)++#if MIN_VERSION_serialise(0, 2, 0)+instance Serialise NUnaryOp+#endif++-- | Binary operators expressible in the nix language.+data NBinaryOp+ = NEq -- ^ Equality (==)+ | NNEq -- ^ Inequality (!=)+ | NLt -- ^ Less than (<)+ | NLte -- ^ Less than or equal (<=)+ | NGt -- ^ Greater than (>)+ | NGte -- ^ Greater than or equal (>=)+ | NAnd -- ^ Logical and (&&)+ | NOr -- ^ Logical or (||)+ | NImpl -- ^ Logical implication (->)+ | NUpdate -- ^ Joining two attribut sets (//)+ | NPlus -- ^ Addition (+)+ | NMinus -- ^ Subtraction (-)+ | NMult -- ^ Multiplication (*)+ | NDiv -- ^ Division (/)+ | NConcat -- ^ List concatenation (++)+ | NApp -- ^ Apply a function to an argument.+ deriving (Eq, Ord, Generic, Typeable, Data, Show, Read, NFData,+ Hashable)++#if MIN_VERSION_serialise(0, 2, 0)+instance Serialise NBinaryOp+#endif++-- | Get the name out of the parameter (there might be none).+paramName :: Params r -> Maybe VarName+paramName (Param n) = Just n+paramName (ParamSet _ _ n) = n++$(deriveEq1 ''NExprF)+$(deriveEq1 ''NString)+$(deriveEq1 ''Binding)+$(deriveEq1 ''Params)+$(deriveEq1 ''Antiquoted)+$(deriveEq2 ''Antiquoted)++$(deriveOrd1 ''NString)+$(deriveOrd1 ''Params)+$(deriveOrd1 ''Antiquoted)+$(deriveOrd2 ''Antiquoted)++$(deriveRead1 ''NString)+$(deriveRead1 ''Params)+$(deriveRead1 ''Antiquoted)+$(deriveRead2 ''Antiquoted)++$(deriveShow1 ''NExprF)+$(deriveShow1 ''NString)+$(deriveShow1 ''Params)+$(deriveShow1 ''Binding)+$(deriveShow1 ''Antiquoted)+$(deriveShow2 ''Antiquoted)++-- $(deriveJSON1 defaultOptions ''NExprF)+$(deriveJSON1 defaultOptions ''NString)+$(deriveJSON1 defaultOptions ''Params)+-- $(deriveJSON1 defaultOptions ''Binding)+$(deriveJSON1 defaultOptions ''Antiquoted)+$(deriveJSON2 defaultOptions ''Antiquoted)++instance (Binary v, Binary a) => Binary (Antiquoted v a)+instance Binary a => Binary (NString a)+instance Binary a => Binary (Binding a)+instance Binary Pos where+ put x = Bin.put (unPos x)+ get = mkPos <$> Bin.get+instance Binary SourcePos+instance Binary a => Binary (NKeyName a)+instance Binary a => Binary (Params a)+instance Binary NAtom+instance Binary NUnaryOp+instance Binary NBinaryOp+instance Binary a => Binary (NExprF a)++instance (ToJSON v, ToJSON a) => ToJSON (Antiquoted v a)+instance ToJSON a => ToJSON (NString a)+instance ToJSON a => ToJSON (Binding a)+instance ToJSON Pos where+ toJSON x = toJSON (unPos x)+instance ToJSON SourcePos+instance ToJSON a => ToJSON (NKeyName a)+instance ToJSON a => ToJSON (Params a)+instance ToJSON NAtom+instance ToJSON NUnaryOp+instance ToJSON NBinaryOp+instance ToJSON a => ToJSON (NExprF a)+instance ToJSON NExpr++instance (FromJSON v, FromJSON a) => FromJSON (Antiquoted v a)+instance FromJSON a => FromJSON (NString a)+instance FromJSON a => FromJSON (Binding a)+instance FromJSON Pos where+ parseJSON = fmap mkPos . parseJSON+instance FromJSON SourcePos+instance FromJSON a => FromJSON (NKeyName a)+instance FromJSON a => FromJSON (Params a)+instance FromJSON NAtom+instance FromJSON NUnaryOp+instance FromJSON NBinaryOp+instance FromJSON a => FromJSON (NExprF a)+instance FromJSON NExpr++$(makeTraversals ''NExprF)+$(makeTraversals ''Binding)+$(makeTraversals ''Params)+$(makeTraversals ''Antiquoted)+$(makeTraversals ''NString)+$(makeTraversals ''NKeyName)+$(makeTraversals ''NUnaryOp)+$(makeTraversals ''NBinaryOp)++-- $(makeLenses ''Fix)++class NExprAnn ann g | g -> ann where+ fromNExpr :: g r -> (NExprF r, ann)+ toNExpr :: (NExprF r, ann) -> g r++ekey :: NExprAnn ann g+ => NonEmpty Text+ -> SourcePos+ -> Lens' (Fix g) (Maybe (Fix g))+ekey keys pos f e@(Fix x) | (NSet xs, ann) <- fromNExpr x =+ case go xs of+ ((v, []):_) -> fromMaybe e <$> f (Just v)+ ((v, r:rest):_) -> ekey (r :| rest) pos f v++ _ -> f Nothing <&> \case+ Nothing -> e+ Just v ->+ let entry = NamedVar (NE.map StaticKey keys) v pos+ in Fix (toNExpr (NSet (entry : xs), ann))+ where+ go xs = do+ let keys' = NE.toList keys+ (ks, rest) <- zip (inits keys') (tails keys')+ case ks of+ [] -> empty+ j:js -> do+ NamedVar ns v _p <- xs+ guard $ (j:js) == (NE.toList ns ^.. traverse._StaticKey)+ return (v, rest)++ekey _ _ f e = fromMaybe e <$> f Nothing++stripPositionInfo :: NExpr -> NExpr+stripPositionInfo = transport phi+ where+ phi (NSet binds) = NSet (map go binds)+ phi (NRecSet binds) = NRecSet (map go binds)+ phi (NLet binds body) = NLet (map go binds) body+ phi x = x++ go (NamedVar path r _pos) = NamedVar path r nullPos+ go (Inherit ms names _pos) = Inherit ms names nullPos++nullPos :: SourcePos+nullPos = SourcePos "<string>" (mkPos 1) (mkPos 1)
@@ -0,0 +1,240 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE TemplateHaskell #-}++-- | The source location annotated nix expression type and supporting types.+--+module Nix.Expr.Types.Annotated+ ( module Nix.Expr.Types.Annotated+ , module Data.Functor.Compose+ , SourcePos(..), unPos, mkPos+ )where++#if MIN_VERSION_serialise(0, 2, 0)+import Codec.Serialise+#endif+import Control.DeepSeq+import Data.Aeson (ToJSON(..), FromJSON(..))+import Data.Aeson.TH+import Data.Binary (Binary(..))+import Data.Data+import Data.Eq.Deriving+import Data.Fix+import Data.Function (on)+import Data.Functor.Compose+import Data.Hashable+#if MIN_VERSION_hashable(1, 2, 5)+import Data.Hashable.Lifted+#endif+import Data.Ord.Deriving+import Data.Semigroup+import Data.Text (Text, pack)+import GHC.Generics+import Nix.Atoms+import Nix.Expr.Types+import Text.Megaparsec (unPos, mkPos)+import Text.Megaparsec.Pos (SourcePos(..))+import Text.Read.Deriving+import Text.Show.Deriving++-- | A location in a source file+data SrcSpan = SrcSpan+ { spanBegin :: SourcePos+ , spanEnd :: SourcePos+ }+ deriving (Ord, Eq, Generic, Typeable, Data, Show, NFData,+ Hashable)++#if MIN_VERSION_serialise(0, 2, 0)+instance Serialise SrcSpan+#endif++-- | A type constructor applied to a type along with an annotation+--+-- Intended to be used with 'Fix':+-- @type MyType = Fix (Compose (Ann Annotation) F)@+data Ann ann a = Ann+ { annotation :: ann+ , annotated :: a+ }+ deriving (Ord, Eq, Data, Generic, Generic1, Typeable, Functor, Foldable,+ Traversable, Read, Show, NFData, Hashable)++#if MIN_VERSION_hashable(1, 2, 5)+instance Hashable ann => Hashable1 (Ann ann)+#endif++#if MIN_VERSION_serialise(0, 2, 0)+instance (Serialise ann, Serialise a) => Serialise (Ann ann a)+#endif++#if MIN_VERSION_deepseq(1, 4, 3)+instance NFData ann => NFData1 (Ann ann)+#endif++$(deriveEq1 ''Ann)+$(deriveEq2 ''Ann)+$(deriveOrd1 ''Ann)+$(deriveOrd2 ''Ann)+$(deriveRead1 ''Ann)+$(deriveRead2 ''Ann)+$(deriveShow1 ''Ann)+$(deriveShow2 ''Ann)+$(deriveJSON1 defaultOptions ''Ann)+$(deriveJSON2 defaultOptions ''Ann)++instance Semigroup SrcSpan where+ s1 <> s2 = SrcSpan ((min `on` spanBegin) s1 s2)+ ((max `on` spanEnd) s1 s2)++type AnnF ann f = Compose (Ann ann) f++annToAnnF :: Ann ann (f (Fix (AnnF ann f))) -> Fix (AnnF ann f)+annToAnnF (Ann ann a) = AnnE ann a++type NExprLocF = AnnF SrcSpan NExprF++-- | A nix expression with source location at each subexpression.+type NExprLoc = Fix NExprLocF++#if MIN_VERSION_hashable(1, 2, 5) && MIN_VERSION_deepseq(1, 4, 3)+-- Needs deepseq-1.4.3 because Compose requires NFData1+instance NFData NExprLoc+#endif++#if MIN_VERSION_serialise(0, 2, 0)+instance Serialise NExprLoc+#endif++#if MIN_VERSION_hashable(1, 2, 5)+instance Hashable NExprLoc+#endif++instance Binary SrcSpan+instance (Binary ann, Binary a) => Binary (Ann ann a)+instance Binary r => Binary (NExprLocF r)+instance Binary NExprLoc++instance ToJSON SrcSpan+instance FromJSON SrcSpan++#if MIN_VERSION_serialise(0, 2, 0)+instance Serialise r => Serialise (Compose (Ann SrcSpan) NExprF r) where+ encode (Compose (Ann ann a)) = encode ann <> encode a+ decode = (Compose .) . Ann <$> decode <*> decode+#endif++pattern AnnE :: forall ann (g :: * -> *). ann+ -> g (Fix (Compose (Ann ann) g)) -> Fix (Compose (Ann ann) g)+pattern AnnE ann a = Fix (Compose (Ann ann a))++stripAnnotation :: Functor f => Fix (AnnF ann f) -> Fix f+stripAnnotation = ana (annotated . getCompose . unFix)++stripAnn :: AnnF ann f r -> f r+stripAnn = annotated . getCompose++nUnary :: Ann SrcSpan NUnaryOp -> NExprLoc -> NExprLoc+nUnary (Ann s1 u) e1@(AnnE s2 _) = AnnE (s1 <> s2) (NUnary u e1)+nUnary _ _ = error "nUnary: unexpected"++nBinary :: Ann SrcSpan NBinaryOp -> NExprLoc -> NExprLoc -> NExprLoc+nBinary (Ann s1 b) e1@(AnnE s2 _) e2@(AnnE s3 _) =+ AnnE (s1 <> s2 <> s3) (NBinary b e1 e2)+nBinary _ _ _ = error "nBinary: unexpected"++nSelectLoc :: NExprLoc -> Ann SrcSpan (NAttrPath NExprLoc) -> Maybe NExprLoc+ -> NExprLoc+nSelectLoc e1@(AnnE s1 _) (Ann s2 ats) d = case d of+ Nothing -> AnnE (s1 <> s2) (NSelect e1 ats Nothing)+ Just (e2@(AnnE s3 _)) -> AnnE (s1 <> s2 <> s3) (NSelect e1 ats (Just e2))+ _ -> error "nSelectLoc: unexpected"+nSelectLoc _ _ _ = error "nSelectLoc: unexpected"++nHasAttr :: NExprLoc -> Ann SrcSpan (NAttrPath NExprLoc) -> NExprLoc+nHasAttr e1@(AnnE s1 _) (Ann s2 ats) = AnnE (s1 <> s2) (NHasAttr e1 ats)+nHasAttr _ _ = error "nHasAttr: unexpected"++nApp :: NExprLoc -> NExprLoc -> NExprLoc+nApp e1@(AnnE s1 _) e2@(AnnE s2 _) = AnnE (s1 <> s2) (NBinary NApp e1 e2)+nApp _ _ = error "nApp: unexpected"++nAbs :: Ann SrcSpan (Params NExprLoc) -> NExprLoc -> NExprLoc+nAbs (Ann s1 ps) e1@(AnnE s2 _) = AnnE (s1 <> s2) (NAbs ps e1)+nAbs _ _ = error "nAbs: unexpected"++nStr :: Ann SrcSpan (NString NExprLoc) -> NExprLoc+nStr (Ann s1 s) = AnnE s1 (NStr s)++deltaInfo :: SourcePos -> (Text, Int, Int)+deltaInfo (SourcePos fp l c) = (pack fp, unPos l, unPos c)++nNull :: NExprLoc+nNull = Fix (Compose (Ann nullSpan (NConstant NNull)))++nullSpan :: SrcSpan+nullSpan = SrcSpan nullPos nullPos++-- | Pattern systems for matching on NExprLocF constructions.++pattern NSym_ :: SrcSpan -> VarName -> NExprLocF r+pattern NSym_ ann x = Compose (Ann ann (NSym x))++pattern NConstant_ :: SrcSpan -> NAtom -> NExprLocF r+pattern NConstant_ ann x = Compose (Ann ann (NConstant x))++pattern NStr_ :: SrcSpan -> NString r -> NExprLocF r+pattern NStr_ ann x = Compose (Ann ann (NStr x))++pattern NList_ :: SrcSpan -> [r] -> NExprLocF r+pattern NList_ ann x = Compose (Ann ann (NList x))++pattern NSet_ :: SrcSpan -> [Binding r] -> NExprLocF r+pattern NSet_ ann x = Compose (Ann ann (NSet x))++pattern NRecSet_ :: SrcSpan -> [Binding r] -> NExprLocF r+pattern NRecSet_ ann x = Compose (Ann ann (NRecSet x))++pattern NLiteralPath_ :: SrcSpan -> FilePath -> NExprLocF r+pattern NLiteralPath_ ann x = Compose (Ann ann (NLiteralPath x))++pattern NEnvPath_ :: SrcSpan -> FilePath -> NExprLocF r+pattern NEnvPath_ ann x = Compose (Ann ann (NEnvPath x))++pattern NSelect_ :: SrcSpan -> r -> NAttrPath r -> Maybe r -> NExprLocF r+pattern NSelect_ ann x p v = Compose (Ann ann (NSelect x p v))++pattern NHasAttr_ :: SrcSpan -> r -> NAttrPath r -> NExprLocF r+pattern NHasAttr_ ann x p = Compose (Ann ann (NHasAttr x p))++pattern NAbs_ :: SrcSpan -> Params r-> r -> NExprLocF r+pattern NAbs_ ann x b = Compose (Ann ann (NAbs x b))++pattern NLet_ :: SrcSpan -> [Binding r] -> r -> NExprLocF r+pattern NLet_ ann x b = Compose (Ann ann (NLet x b))++pattern NIf_ :: SrcSpan -> r -> r -> r -> NExprLocF r+pattern NIf_ ann c t e = Compose (Ann ann (NIf c t e))++pattern NWith_ :: SrcSpan -> r -> r -> NExprLocF r+pattern NWith_ ann x y = Compose (Ann ann (NWith x y))++pattern NAssert_ :: SrcSpan -> r -> r -> NExprLocF r+pattern NAssert_ ann x y = Compose (Ann ann (NAssert x y))++pattern NUnary_ :: SrcSpan -> NUnaryOp -> r -> NExprLocF r+pattern NUnary_ ann op x = Compose (Ann ann (NUnary op x))++pattern NBinary_ :: SrcSpan -> NBinaryOp -> r -> r -> NExprLocF r+pattern NBinary_ ann op x y = Compose (Ann ann (NBinary op x y))
@@ -0,0 +1,46 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE ExistentialQuantification #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE ScopedTypeVariables #-}++module Nix.Frames (NixLevel(..), Frames, Framed, NixFrame(..),+ NixException(..), withFrame, throwError,+ module Data.Typeable,+ module Control.Exception) where++import Control.Exception hiding (catch, evaluate)+import Control.Monad.Catch+import Control.Monad.Reader+import Data.Typeable hiding (typeOf)+import Nix.Utils++data NixLevel = Fatal | Error | Warning | Info | Debug+ deriving (Ord, Eq, Bounded, Enum, Show)++data NixFrame = NixFrame+ { frameLevel :: NixLevel+ , frame :: SomeException+ }++instance Show NixFrame where+ show (NixFrame level f) =+ "Nix frame at level " ++ show level ++ ": "++ show f++type Frames = [NixFrame]++type Framed e m = (MonadReader e m, Has e Frames, MonadThrow m)++newtype NixException = NixException Frames+ deriving Show++instance Exception NixException++withFrame :: forall s e m a. (Framed e m, Exception s) => NixLevel -> s -> m a -> m a+withFrame level f = local (over hasLens (NixFrame level (toException f) :))++throwError :: forall s e m a. (Framed e m, Exception s, MonadThrow m) => s -> m a+throwError err = do+ context <- asks (view hasLens)+ traceM "Throwing error..."+ throwM $ NixException (NixFrame Error (toException err):context)
@@ -0,0 +1,418 @@+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE UndecidableInstances #-}++{-# OPTIONS_GHC -fno-warn-name-shadowing #-}+{-# OPTIONS_GHC -Wno-missing-methods #-}++module Nix.Lint where++import Control.Exception+import Control.Monad+import Control.Monad.Catch+import Control.Monad.Fix+import Control.Monad.Reader (MonadReader)+import Control.Monad.ST+import Control.Monad.Trans.Reader+import Data.Coerce+import Data.HashMap.Lazy (HashMap)+import qualified Data.HashMap.Lazy as M+import Data.List+import qualified Data.List.NonEmpty as NE+import Data.STRef+import Data.Text (Text)+import qualified Data.Text as Text+import Nix.Atoms+import Nix.Context+import Nix.Convert+import Nix.Eval (MonadEval(..))+import qualified Nix.Eval as Eval+import Nix.Expr+import Nix.Frames+import Nix.Options+import Nix.Scope+import Nix.Thunk+import Nix.Utils++data TAtom+ = TInt+ | TFloat+ | TBool+ | TNull+ deriving (Show, Eq, Ord)++data NTypeF (m :: * -> *) r+ = TConstant [TAtom]+ | TStr+ | TList r+ | TSet (Maybe (HashMap Text r))+ | TClosure (Params ())+ | TPath+ | TBuiltin String (SThunk m -> m (Symbolic m))+ deriving Functor++compareTypes :: NTypeF m r -> NTypeF m r -> Ordering+compareTypes (TConstant _) (TConstant _) = EQ+compareTypes (TConstant _) _ = LT+compareTypes _ (TConstant _) = GT+compareTypes TStr TStr = EQ+compareTypes TStr _ = LT+compareTypes _ TStr = GT+compareTypes (TList _) (TList _) = EQ+compareTypes (TList _) _ = LT+compareTypes _ (TList _) = GT+compareTypes (TSet _) (TSet _) = EQ+compareTypes (TSet _) _ = LT+compareTypes _ (TSet _) = GT+compareTypes TClosure {} TClosure {} = EQ+compareTypes TClosure {} _ = LT+compareTypes _ TClosure {} = GT+compareTypes TPath TPath = EQ+compareTypes TPath _ = LT+compareTypes _ TPath = GT+compareTypes (TBuiltin _ _) (TBuiltin _ _) = EQ++data NSymbolicF r+ = NAny+ | NMany [r]+ deriving (Show, Eq, Ord, Functor, Foldable, Traversable)++newtype SThunk m = SThunk { getSThunk :: Thunk m (Symbolic m) }++newtype Symbolic m =+ Symbolic { getSymbolic :: Var m (NSymbolicF (NTypeF m (SThunk m))) }++instance Show (Symbolic m) where+ show _ = "<symbolic>"++everyPossible :: MonadVar m => m (Symbolic m)+everyPossible = packSymbolic NAny++mkSymbolic :: MonadVar m => [NTypeF m (SThunk m)] -> m (Symbolic m)+mkSymbolic xs = packSymbolic (NMany xs)++packSymbolic :: MonadVar m+ => NSymbolicF (NTypeF m (SThunk m)) -> m (Symbolic m)+packSymbolic = fmap coerce . newVar++unpackSymbolic :: MonadVar m+ => Symbolic m -> m (NSymbolicF (NTypeF m (SThunk m)))+unpackSymbolic = readVar . coerce++type MonadLint e m = (Scoped e (SThunk m) m, Framed e m, MonadVar m)++symerr :: forall e m a. MonadLint e m => String -> m a+symerr = evalError @(Symbolic m) . ErrorCall++renderSymbolic :: MonadLint e m => Symbolic m -> m String+renderSymbolic = unpackSymbolic >=> \case+ NAny -> return "<any>"+ NMany xs -> fmap (intercalate ", ") $ forM xs $ \case+ TConstant ys -> fmap (intercalate ", ") $ forM ys $ \case+ TInt -> return "int"+ TFloat -> return "float"+ TBool -> return "bool"+ TNull -> return "null"+ TStr -> return "string"+ TList r -> do+ x <- force r renderSymbolic+ return $ "[" ++ x ++ "]"+ TSet Nothing -> return "<any set>"+ TSet (Just s) -> do+ x <- traverse (`force` renderSymbolic) s+ return $ "{" ++ show x ++ "}"+ f@(TClosure p) -> do+ (args, sym) <- do+ f' <- mkSymbolic [f]+ lintApp (NAbs (void p) ()) f' everyPossible+ args' <- traverse renderSymbolic args+ sym' <- renderSymbolic sym+ return $ "(" ++ show args' ++ " -> " ++ sym' ++ ")"+ TPath -> return "path"+ TBuiltin _n _f -> return "<builtin function>"++-- This function is order and uniqueness preserving (of types).+merge :: forall e m. MonadLint e m+ => NExprF () -> [NTypeF m (SThunk m)] -> [NTypeF m (SThunk m)]+ -> m [NTypeF m (SThunk m)]+merge context = go+ where+ go :: [NTypeF m (SThunk m)] -> [NTypeF m (SThunk m)]+ -> m [NTypeF m (SThunk m)]+ go [] _ = return []+ go _ [] = return []+ go (x:xs) (y:ys) = case (x, y) of+ (TStr, TStr) -> (TStr :) <$> go xs ys+ (TPath, TPath) -> (TPath :) <$> go xs ys+ (TConstant ls, TConstant rs) ->+ (TConstant (ls `intersect` rs) :) <$> go xs ys+ (TList l, TList r) -> force l $ \l' -> force r $ \r' -> do+ m <- thunk $ unify context l' r'+ (TList m :) <$> go xs ys+ (TSet x, TSet Nothing) -> (TSet x :) <$> go xs ys+ (TSet Nothing, TSet x) -> (TSet x :) <$> go xs ys+ (TSet (Just l), TSet (Just r)) -> do+ m <- sequenceA $ M.intersectionWith+ (\i j -> i >>= \i' -> j >>= \j' ->+ force i' $ \i'' -> force j' $ \j'' ->+ thunk $ unify context i'' j'')+ (return <$> l) (return <$> r)+ if M.null m+ then go xs ys+ else (TSet (Just m) :) <$> go xs ys+ (TClosure {}, TClosure {}) ->+ throwError $ ErrorCall "Cannot unify functions"+ (TBuiltin _ _, TBuiltin _ _) ->+ throwError $ ErrorCall "Cannot unify builtin functions"+ _ | compareTypes x y == LT -> go xs (y:ys)+ | compareTypes x y == GT -> go (x:xs) ys+ | otherwise -> error "impossible"++{-+ mergeFunctions pl nl fl pr fr xs ys = do+ m <- sequenceA $ M.intersectionWith+ (\i j -> i >>= \i' -> j >>= \j' -> case (i', j') of+ (Nothing, Nothing) -> return $ Just Nothing+ (_, Nothing) -> return Nothing+ (Nothing, _) -> return Nothing+ (Just i'', Just j'') ->+ Just . Just <$> unify context i'' j'')+ (return <$> pl) (return <$> pr)+ let Just m' = sequenceA $ M.filter isJust m+ if M.null m'+ then go xs ys+ else do+ g <- unify context fl fr+ (TClosure (ParamSet m' False nl) g :)+ <$> go xs ys+-}++-- | unify raises an error if the result is would be 'NMany []'.+unify :: forall e m. MonadLint e m+ => NExprF () -> Symbolic m -> Symbolic m -> m (Symbolic m)+unify context (Symbolic x) (Symbolic y) = do+ x' <- readVar x+ y' <- readVar y+ case (x', y') of+ (NAny, _) -> do+ writeVar x y'+ return $ Symbolic y+ (_, NAny) -> do+ writeVar y x'+ return $ Symbolic x+ (NMany xs, NMany ys) -> do+ m <- merge context xs ys+ if null m+ then do+ -- x' <- renderSymbolic (Symbolic x)+ -- y' <- renderSymbolic (Symbolic y)+ throwError $ ErrorCall "Cannot unify "+ -- ++ show x' ++ " with " ++ show y'+ -- ++ " in context: " ++ show context+ else do+ writeVar x (NMany m)+ writeVar y (NMany m)+ packSymbolic (NMany m)++-- These aren't worth defining yet, because once we move to Hindley-Milner,+-- we're not going to be managing Symbolic values this way anymore.++instance ToValue Bool m (Symbolic m) where++instance ToValue [SThunk m] m (Symbolic m) where++instance FromValue (Text, DList Text) m (Symbolic m) where++instance FromValue (AttrSet (SThunk m), AttrSet SourcePos) m (Symbolic m) where++instance ToValue (AttrSet (SThunk m), AttrSet SourcePos) m (Symbolic m) where++instance MonadLint e m => MonadThunk (Symbolic m) (SThunk m) m where+ thunk = fmap coerce . buildThunk+ force = forceThunk . coerce+ value = coerce . valueRef++instance MonadLint e m => MonadEval (Symbolic m) m where+ freeVariable var = symerr $+ "Undefined variable '" ++ Text.unpack var ++ "'"++ attrMissing ks Nothing =+ evalError @(Symbolic m) $ ErrorCall $+ "Inheriting unknown attribute: "+ ++ intercalate "." (map Text.unpack (NE.toList ks))++ attrMissing ks (Just s) =+ evalError @(Symbolic m) $ ErrorCall $ "Could not look up attribute "+ ++ intercalate "." (map Text.unpack (NE.toList ks))+ ++ " in " ++ show s++ evalCurPos = do+ f <- value <$> mkSymbolic [TPath]+ l <- value <$> mkSymbolic [TConstant [TInt]]+ c <- value <$> mkSymbolic [TConstant [TInt]]+ mkSymbolic [TSet (Just (M.fromList (go f l c)))]+ where+ go f l c =+ [ (Text.pack "file", f)+ , (Text.pack "line", l)+ , (Text.pack "col", c) ]++ evalConstant c = mkSymbolic [TConstant [go c]]+ where+ go = \case+ NInt _ -> TInt+ NFloat _ -> TFloat+ NBool _ -> TBool+ NNull -> TNull++ evalString = const $ mkSymbolic [TStr]+ evalLiteralPath = const $ mkSymbolic [TPath]+ evalEnvPath = const $ mkSymbolic [TPath]++ evalUnary op arg =+ unify (void (NUnary op arg)) arg+ =<< mkSymbolic [TConstant [TInt, TBool]]++ evalBinary = lintBinaryOp++ evalWith scope body = do+ -- The scope is deliberately wrapped in a thunk here, since it is+ -- evaluated each time a name is looked up within the weak scope, and+ -- we want to be sure the action it evaluates is to force a thunk, so+ -- its value is only computed once.+ s <- thunk scope+ pushWeakScope ?? body $ force s $ unpackSymbolic >=> \case+ NMany [TSet (Just s')] -> return s'+ NMany [TSet Nothing] -> error "NYI: with unknown"+ _ -> throwError $ ErrorCall "scope must be a set in with statement"++ evalIf cond t f = do+ t' <- t+ f' <- f+ let e = NIf cond t' f'+ _ <- unify (void e) cond =<< mkSymbolic [TConstant [TBool]]+ unify (void e) t' f'++ evalAssert cond body = do+ body' <- body+ let e = NAssert cond body'+ _ <- unify (void e) cond =<< mkSymbolic [TConstant [TBool]]+ pure body'++ evalApp = (fmap snd .) . lintApp (NBinary NApp () ())+ evalAbs params _ = mkSymbolic [TClosure (void params)]++ evalError = throwError++lintBinaryOp+ :: forall e m. (MonadLint e m, MonadEval (Symbolic m) m)+ => NBinaryOp -> Symbolic m -> m (Symbolic m) -> m (Symbolic m)+lintBinaryOp op lsym rarg = do+ rsym <- rarg+ y <- thunk everyPossible+ case op of+ NApp -> symerr "lintBinaryOp:NApp: should never get here"+ NEq -> check lsym rsym [ TConstant [TInt, TBool, TNull]+ , TStr+ , TList y ]+ NNEq -> check lsym rsym [ TConstant [TInt, TBool, TNull]+ , TStr+ , TList y ]++ NLt -> check lsym rsym [ TConstant [TInt, TBool, TNull] ]+ NLte -> check lsym rsym [ TConstant [TInt, TBool, TNull] ]+ NGt -> check lsym rsym [ TConstant [TInt, TBool, TNull] ]+ NGte -> check lsym rsym [ TConstant [TInt, TBool, TNull] ]++ NAnd -> check lsym rsym [ TConstant [TBool] ]+ NOr -> check lsym rsym [ TConstant [TBool] ]+ NImpl -> check lsym rsym [ TConstant [TBool] ]++ -- jww (2018-04-01): NYI: Allow Path + Str+ NPlus -> check lsym rsym [ TConstant [TInt], TStr, TPath ]+ NMinus -> check lsym rsym [ TConstant [TInt] ]+ NMult -> check lsym rsym [ TConstant [TInt] ]+ NDiv -> check lsym rsym [ TConstant [TInt] ]++ NUpdate -> check lsym rsym [ TSet Nothing ]++ NConcat -> check lsym rsym [ TList y ]+ where+ check lsym rsym xs = do+ let e = NBinary op lsym rsym+ m <- mkSymbolic xs+ _ <- unify (void e) lsym m+ _ <- unify (void e) rsym m+ unify (void e) lsym rsym++infixl 1 `lintApp`+lintApp :: forall e m. MonadLint e m+ => NExprF () -> Symbolic m -> m (Symbolic m)+ -> m (HashMap VarName (Symbolic m), Symbolic m)+lintApp context fun arg = unpackSymbolic fun >>= \case+ NAny -> throwError $ ErrorCall+ "Cannot apply something not known to be a function"+ NMany xs -> do+ (args:_, ys) <- fmap unzip $ forM xs $ \case+ TClosure _params -> arg >>= unpackSymbolic >>= \case+ NAny -> do+ error "NYI"++ NMany [TSet (Just _)] -> do+ error "NYI"++ NMany _ -> throwError $ ErrorCall "NYI: lintApp NMany not set"+ TBuiltin _ _f -> throwError $ ErrorCall "NYI: lintApp builtin"+ TSet _m -> throwError $ ErrorCall "NYI: lintApp Set"+ _x -> throwError $ ErrorCall "Attempt to call non-function"++ y <- everyPossible+ (args,) <$> foldM (unify context) y ys++newtype Lint s a = Lint+ { runLint :: ReaderT (Context (Lint s) (SThunk (Lint s))) (ST s) a }+ deriving (Functor, Applicative, Monad, MonadFix,+ MonadReader (Context (Lint s) (SThunk (Lint s))))++instance MonadVar (Lint s) where+ type Var (Lint s) = STRef s++ newVar x = Lint $ ReaderT $ \_ -> newSTRef x+ readVar x = Lint $ ReaderT $ \_ -> readSTRef x+ writeVar x y = Lint $ ReaderT $ \_ -> writeSTRef x y+ atomicModifyVar x f = Lint $ ReaderT $ \_ -> do+ res <- snd . f <$> readSTRef x+ _ <- modifySTRef x (fst . f)+ return res++instance MonadThrow (Lint s) where+ throwM e = Lint $ ReaderT $ \_ -> throw e++runLintM :: Options -> Lint s a -> ST s a+runLintM opts = flip runReaderT (newContext opts) . runLint++symbolicBaseEnv :: Monad m => m (Scopes m (SThunk m))+symbolicBaseEnv = return emptyScopes++lint :: Options -> NExprLoc -> ST s (Symbolic (Lint s))+lint opts expr = runLintM opts $+ symbolicBaseEnv+ >>= (`pushScopes`+ adi (Eval.eval . annotated . getCompose)+ Eval.addSourcePositions expr)
@@ -0,0 +1,98 @@+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}++module Nix.Normal where++import Control.Monad+import Data.Fix+import qualified Data.HashMap.Lazy as M+import Data.Text (Text)+import qualified Data.Text as Text+import Nix.Atoms+import Nix.Effects+import Nix.Frames+import Nix.Thunk+import Nix.Utils+import Nix.Value++newtype NormalLoop m = NormalLoop (NValue m)+ deriving Show++instance Typeable m => Exception (NormalLoop m)++normalFormBy+ :: forall e m. (Framed e m, MonadVar m, Typeable m)+ => (forall r. NThunk m -> (NValue m -> m r) -> m r)+ -> Int+ -> NValue m+ -> m (NValueNF m)+normalFormBy k n v = do+ when (n > 2000) $ throwError $ NormalLoop v+ case v of+ NVConstant a -> return $ Fix $ NVConstantF a+ NVStr t s -> return $ Fix $ NVStrF t s+ NVList l ->+ fmap (Fix . NVListF) $ forM (zip [0..] l) $ \(i :: Int, t) -> do+ traceM $ replicate n ' ' ++ "normalFormBy: List[" ++ show i ++ "]"+ t `k` normalFormBy k (succ n)+ NVSet s p ->+ fmap (Fix . flip NVSetF p) $ sequence $ flip M.mapWithKey s $ \ky t -> do+ traceM $ replicate n ' ' ++ "normalFormBy: Set{" ++ show ky ++ "}"+ t `k` normalFormBy k (succ n)+ NVClosure p f -> return $ Fix $ NVClosureF p f+ NVPath fp -> return $ Fix $ NVPathF fp+ NVBuiltin name f -> return $ Fix $ NVBuiltinF name f+ _ -> error "Pattern synonyms mask complete matches"++normalForm :: (Framed e m, MonadVar m, Typeable m,+ MonadThunk (NValue m) (NThunk m) m)+ => NValue m -> m (NValueNF m)+normalForm = normalFormBy force 0++embed :: forall m. (MonadThunk (NValue m) (NThunk m) m)+ => NValueNF m -> m (NValue m)+embed (Fix x) = case x of+ NVConstantF a -> return $ nvConstant a+ NVStrF t s -> return $ nvStr t s+ NVListF l -> nvList . fmap (value @_ @_ @m)+ <$> traverse embed l+ NVSetF s p -> flip nvSet p . fmap (value @_ @_ @m)+ <$> traverse embed s+ NVClosureF p f -> return $ nvClosure p f+ NVPathF fp -> return $ nvPath fp+ NVBuiltinF name f -> return $ nvBuiltin name f++valueText :: forall e m. (Framed e m, MonadEffects m, Typeable m)+ => Bool -> NValueNF m -> m (Text, DList Text)+valueText addPathsToStore = cata phi+ where+ phi :: NValueF m (m (Text, DList Text)) -> m (Text, DList Text)+ phi (NVConstantF a) = pure (atomText a, mempty)+ phi (NVStrF t c) = pure (t, c)+ phi v@(NVListF _) = coercionFailed v+ phi v@(NVSetF s _)+ | Just asString <- M.lookup "__asString" s = asString+ | otherwise = coercionFailed v+ phi v@NVClosureF {} = coercionFailed v+ phi (NVPathF originalPath)+ | addPathsToStore = do+ storePath <- addPath originalPath+ pure (Text.pack $ unStorePath storePath, mempty)+ | otherwise = pure (Text.pack originalPath, mempty)+ phi v@(NVBuiltinF _ _) = coercionFailed v++ coercionFailed v =+ throwError $ Coercion @m (valueType v) TString++valueTextNoContext :: (Framed e m, MonadEffects m, Typeable m)+ => Bool -> NValueNF m -> m Text+valueTextNoContext addPathsToStore = fmap fst . valueText addPathsToStore
@@ -0,0 +1,79 @@+module Nix.Options where++import Data.Text (Text)+import Data.Time++data Options = Options+ { verbose :: Verbosity+ , tracing :: Bool+ , thunks :: Bool+ , values :: Bool+ , reduce :: Maybe FilePath+ , reduceSets :: Bool+ , reduceLists :: Bool+ , parse :: Bool+ , parseOnly :: Bool+ , finder :: Bool+ , findFile :: Maybe FilePath+ , strict :: Bool+ , normalize :: Bool+ , evaluate :: Bool+ , json :: Bool+ , xml :: Bool+ , attr :: Maybe Text+ , include :: [FilePath]+ , check :: Bool+ , readFrom :: Maybe FilePath+ , cache :: Bool+ , repl :: Bool+ , ignoreErrors :: Bool+ , expression :: Maybe Text+ , arg :: [(Text, Text)]+ , argstr :: [(Text, Text)]+ , fromFile :: Maybe FilePath+ , currentTime :: UTCTime+ , filePaths :: [FilePath]+ }+ deriving Show++defaultOptions :: UTCTime -> Options+defaultOptions current = Options+ { verbose = ErrorsOnly+ , tracing = False+ , thunks = False+ , values = False+ , reduce = Nothing+ , reduceSets = False+ , reduceLists = False+ , parse = False+ , parseOnly = False+ , finder = False+ , findFile = Nothing+ , strict = False+ , normalize = False+ , evaluate = False+ , json = False+ , xml = False+ , attr = Nothing+ , include = []+ , check = False+ , readFrom = Nothing+ , cache = False+ , repl = False+ , ignoreErrors = False+ , expression = Nothing+ , arg = []+ , argstr = []+ , fromFile = Nothing+ , currentTime = current+ , filePaths = []+ }++data Verbosity+ = ErrorsOnly+ | Informational+ | Talkative+ | Chatty+ | DebugInfo+ | Vomit+ deriving (Eq, Ord, Enum, Bounded, Show)
@@ -0,0 +1,130 @@+module Nix.Options.Parser where++import Control.Arrow (second)+import Data.Char (isDigit)+import Data.Maybe (fromMaybe)+import Data.Text (Text)+import qualified Data.Text as Text+import Data.Time+import Nix.Options+import Options.Applicative hiding (ParserResult(..))+import Text.PrettyPrint.ANSI.Leijen hiding ((<$>))++decodeVerbosity :: Int -> Verbosity+decodeVerbosity 0 = ErrorsOnly+decodeVerbosity 1 = Informational+decodeVerbosity 2 = Talkative+decodeVerbosity 3 = Chatty+decodeVerbosity 4 = DebugInfo+decodeVerbosity _ = Vomit++argPair :: Mod OptionFields (Text, Text) -> Parser (Text, Text)+argPair = option $ str >>= \s ->+ case Text.findIndex (== '=') s of+ Nothing -> errorWithoutStackTrace+ "Format of --arg/--argstr in hnix is: name=expr"+ Just i -> return $ second Text.tail $ Text.splitAt i s++nixOptions :: UTCTime -> Parser Options+nixOptions current = Options+ <$> (fromMaybe ErrorsOnly <$>+ optional+ (option (do a <- str+ if all isDigit a+ then pure $ decodeVerbosity (read a)+ else fail "Argument to -v/--verbose must be a number")+ ( short 'v'+ <> long "verbose"+ <> help "Verbose output")))+ <*> switch+ ( long "trace"+ <> help "Enable tracing code (even more can be seen if built with --flags=tracing)")+ <*> switch+ ( long "thunks"+ <> help "Enable reporting of thunk tracing as well as regular evaluation")+ <*> switch+ ( long "values"+ <> help "Enable reporting of value provenance in error messages")+ <*> optional (strOption+ ( long "reduce"+ <> help "When done evaluating, output the evaluated part of the expression to FILE"))+ <*> switch+ ( long "reduce-sets"+ <> help "Reduce set members that aren't used; breaks if hasAttr is used")+ <*> switch+ ( long "reduce-lists"+ <> help "Reduce list members that aren't used; breaks if elemAt is used")+ <*> switch+ ( long "parse"+ <> help "Whether to parse the file (also the default right now)")+ <*> switch+ ( long "parse-only"+ <> help "Whether to parse only, no pretty printing or checking")+ <*> switch+ ( long "find"+ <> help "If selected, find paths within attr trees")+ <*> optional (strOption+ ( long "find-file"+ <> help "Look up the given files in Nix's search path"))+ <*> switch+ ( long "strict"+ <> help "When used with --eval, recursively evaluate list elements and attributes")+ <*> switch+ ( long "force"+ <> help "Whether to force the results of evaluation to normal form")+ <*> switch+ ( long "eval"+ <> help "Whether to evaluate, or just pretty-print")+ <*> switch+ ( long "json"+ <> help "Print the resulting value as an JSON representation")+ <*> switch+ ( long "xml"+ <> help "Print the resulting value as an XML representation")+ <*> optional (strOption+ ( short 'A'+ <> long "attr"+ <> help "Select an attribute from the top-level Nix expression being evaluated"))+ <*> many (strOption+ ( short 'I'+ <> long "include"+ <> help "Add a path to the Nix expression search path"))+ <*> switch+ ( long "check"+ <> help "Whether to check for syntax errors after parsing")+ <*> optional (strOption+ ( long "read"+ <> help "Read in an expression tree from a binary cache"))+ <*> switch+ ( long "cache"+ <> help "Write out the parsed expression tree to a binary cache")+ <*> switch+ ( long "repl"+ <> help "After performing any indicated actions, enter the REPL")+ <*> switch+ ( long "ignore-errors"+ <> help "Continue parsing files, even if there are errors")+ <*> optional (strOption+ ( short 'E'+ <> long "expr"+ <> help "Expression to parse or evaluate"))+ <*> many (argPair+ ( long "arg"+ <> help "Argument to pass to an evaluated lambda"))+ <*> many (argPair+ ( long "argstr"+ <> help "Argument string to pass to an evaluated lambda"))+ <*> optional (strOption+ ( short 'f'+ <> long "file"+ <> help "Parse all of the files given in FILE; - means stdin"))+ <*> option (parseTimeOrError True defaultTimeLocale "%Y/%m/%d %H:%M:%S" <$> str)+ ( long "now"+ <> value current+ <> help "Set current time for testing purposes")+ <*> many (strArgument (metavar "FILE" <> help "Path of file to parse"))++nixOptionsInfo :: UTCTime -> ParserInfo Options+nixOptionsInfo current =+ info (helper <*> nixOptions current)+ (fullDesc <> progDesc "" <> header "hnix")
@@ -0,0 +1,548 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}++{-# OPTIONS_GHC -fno-warn-name-shadowing #-}+{-# OPTIONS_GHC -Wno-missing-signatures #-}++module Nix.Parser+ ( parseNixFile+ , parseNixFileLoc+ , parseNixText+ , parseNixTextLoc+ , parseFromFileEx+ , parseFromText+ , Result(..)+ , reservedNames+ , OperatorInfo(..)+ , NSpecialOp(..)+ , NAssoc(..)+ , NOperatorDef+ , getUnaryOperator+ , getBinaryOperator+ , getSpecialOperator+ ) where++import Control.Applicative hiding (many, some)+import Control.DeepSeq+import Control.Monad+import Control.Monad.IO.Class+import Data.Char (isAlpha, isDigit, isSpace)+import Data.Data (Data(..))+import Data.Foldable (concat)+import Data.Functor+import Data.Functor.Identity+import Data.HashSet (HashSet)+import qualified Data.HashSet as HashSet+import Data.List.NonEmpty (NonEmpty(..))+import qualified Data.List.NonEmpty as NE+import qualified Data.Map as Map+import Data.Text (Text)+import Data.Text hiding (map, foldr1, concat, concatMap, zipWith)+import qualified Data.Text.IO as T+import Data.Typeable (Typeable)+import Data.Void+import GHC.Generics hiding (Prefix)+import Nix.Expr hiding (($>))+import Nix.Strings+import Text.Megaparsec+import Text.Megaparsec.Char+import qualified Text.Megaparsec.Char.Lexer as L+import Text.Megaparsec.Expr+import Text.PrettyPrint.ANSI.Leijen (Doc, text)++infixl 3 <+>+(<+>) :: MonadPlus m => m a -> m a -> m a+(<+>) = mplus++--------------------------------------------------------------------------------++nixExprLoc :: Parser NExprLoc+nixExprLoc = makeExprParser nixTerm $ map (map snd) (nixOperators nixSelector)++antiStart :: Parser Text+antiStart = symbol "${" <?> show ("${" :: String)++nixAntiquoted :: Parser a -> Parser (Antiquoted a NExprLoc)+nixAntiquoted p =+ Antiquoted <$> (antiStart *> nixToplevelForm <* symbol "}")+ <+> Plain <$> p+ <?> "anti-quotation"++selDot :: Parser ()+selDot = try (symbol "." *> notFollowedBy nixPath) <?> "."++nixSelect :: Parser NExprLoc -> Parser NExprLoc+nixSelect term = do+ res <- build+ <$> term+ <*> optional ((,) <$> (selDot *> nixSelector)+ <*> optional (reserved "or" *> nixTerm))+ continues <- optional $ lookAhead selDot+ case continues of+ Nothing -> pure res+ Just _ -> nixSelect (pure res)+ where+ build :: NExprLoc+ -> Maybe (Ann SrcSpan (NAttrPath NExprLoc), Maybe NExprLoc)+ -> NExprLoc+ build t Nothing = t+ build t (Just (s,o)) = nSelectLoc t s o++nixSelector :: Parser (Ann SrcSpan (NAttrPath NExprLoc))+nixSelector = annotateLocation $ do+ (x:xs) <- keyName `sepBy1` selDot+ return $ x :| xs++nixTerm :: Parser NExprLoc+nixTerm = do+ c <- try $ lookAhead $ satisfy $ \x ->+ pathChar x ||+ x == '(' ||+ x == '{' ||+ x == '[' ||+ x == '<' ||+ x == '/' ||+ x == '"' ||+ x == '\''+ case c of+ '(' -> nixSelect nixParens+ '{' -> nixSelect nixSet+ '[' -> nixList+ '<' -> nixSPath+ '/' -> nixPath+ '"' -> nixStringExpr+ '\'' -> nixStringExpr+ _ -> msum $+ [ nixSelect nixSet | c == 'r' ] +++ [ nixPath | pathChar c ] +++ if isDigit c+ then [ nixFloat+ , nixInt ]+ else [ nixUri | isAlpha c ] +++ [ nixBool | c == 't' || c == 'f' ] +++ [ nixNull | c == 'n' ] +++ [ nixSelect nixSym ]++nixToplevelForm :: Parser NExprLoc+nixToplevelForm = keywords <+> nixLambda <+> nixExprLoc+ where+ keywords = nixLet <+> nixIf <+> nixAssert <+> nixWith++nixSym :: Parser NExprLoc+nixSym = annotateLocation1 $ mkSymF <$> identifier++nixInt :: Parser NExprLoc+nixInt = annotateLocation1 (mkIntF <$> integer <?> "integer")++nixFloat :: Parser NExprLoc+nixFloat = annotateLocation1 (try (mkFloatF . realToFrac <$> float) <?> "float")++nixBool :: Parser NExprLoc+nixBool = annotateLocation1 (bool "true" True <+>+ bool "false" False) <?> "bool" where+ bool str b = mkBoolF b <$ reserved str++nixNull :: Parser NExprLoc+nixNull = annotateLocation1 (mkNullF <$ reserved "null" <?> "null")++nixParens :: Parser NExprLoc+nixParens = parens nixToplevelForm <?> "parens"++nixList :: Parser NExprLoc+nixList = annotateLocation1 (brackets (NList <$> many nixTerm) <?> "list")++pathChar :: Char -> Bool+pathChar x = isAlpha x || isDigit x || x == '.' || x == '_' || x == '-' || x == '+' || x == '~'++slash :: Parser Char+slash = try (char '/' <* notFollowedBy (satisfy (\x -> x == '/' || x == '*' || isSpace x)))+ <?> "slash"++-- | A path surrounded by angle brackets, indicating that it should be+-- looked up in the NIX_PATH environment variable at evaluation.+nixSPath :: Parser NExprLoc+nixSPath = annotateLocation1+ (mkPathF True <$> try (char '<' *> many (satisfy pathChar <+> slash) <* symbol ">")+ <?> "spath")++pathStr :: Parser FilePath+pathStr = lexeme $ liftM2 (++) (many (satisfy pathChar))+ (Prelude.concat <$> some (liftM2 (:) slash (some (satisfy pathChar))))++nixPath :: Parser NExprLoc+nixPath = annotateLocation1 (try (mkPathF False <$> pathStr) <?> "path")++nixLet :: Parser NExprLoc+nixLet = annotateLocation1 (reserved "let"+ *> (letBody <+> letBinders)+ <?> "let block")+ where+ letBinders = NLet+ <$> nixBinders+ <*> (reserved "in" *> nixToplevelForm)+ -- Let expressions `let {..., body = ...}' are just desugared+ -- into `(rec {..., body = ...}).body'.+ letBody = (\x -> NSelect x (StaticKey "body" :| []) Nothing) <$> aset+ aset = annotateLocation1 $ NRecSet <$> braces nixBinders++nixIf :: Parser NExprLoc+nixIf = annotateLocation1 (NIf+ <$> (reserved "if" *> nixExprLoc)+ <*> (reserved "then" *> nixToplevelForm)+ <*> (reserved "else" *> nixToplevelForm)+ <?> "if")++nixAssert :: Parser NExprLoc+nixAssert = annotateLocation1 (NAssert+ <$> (reserved "assert" *> nixExprLoc)+ <*> (semi *> nixToplevelForm)+ <?> "assert")++nixWith :: Parser NExprLoc+nixWith = annotateLocation1 (NWith+ <$> (reserved "with" *> nixToplevelForm)+ <*> (semi *> nixToplevelForm)+ <?> "with")++nixLambda :: Parser NExprLoc+nixLambda = nAbs <$> annotateLocation (try argExpr) <*> nixToplevelForm++nixStringExpr :: Parser NExprLoc+nixStringExpr = nStr <$> annotateLocation nixString++nixUri :: Parser NExprLoc+nixUri = annotateLocation1 $ lexeme $ try $ do+ start <- letterChar+ protocol <- many $ satisfy $ \x ->+ isAlpha x || isDigit x || x `elem` ("+-." :: String)+ _ <- string ":"+ address <- some $ satisfy $ \x ->+ isAlpha x || isDigit x || x `elem` ("%/?:@&=+$,-_.!~*'" :: String)+ return $ NStr $+ DoubleQuoted [Plain $ pack $ start : protocol ++ ':' : address]++nixString :: Parser (NString NExprLoc)+nixString = lexeme (doubleQuoted <+> indented <?> "string")+ where+ doubleQuoted :: Parser (NString NExprLoc)+ doubleQuoted = DoubleQuoted . removePlainEmpty . mergePlain+ <$> (doubleQ *> many (stringChar doubleQ (void $ char '\\')+ doubleEscape)+ <* doubleQ)+ <?> "double quoted string"++ doubleQ = void (char '"')+ doubleEscape = Plain . singleton <$> (char '\\' *> escapeCode)++ indented :: Parser (NString NExprLoc)+ indented = stripIndent+ <$> (indentedQ *> many (stringChar indentedQ indentedQ+ indentedEscape)+ <* indentedQ)+ <?> "indented string"++ indentedQ = void (string "''" <?> "\"''\"")+ indentedEscape = try $ do+ indentedQ+ (Plain <$> ("''" <$ char '\'' <+> "$" <$ char '$')) <+> do+ _ <- char '\\'+ c <- escapeCode+ pure $ if c == '\n'+ then EscapedNewline+ else Plain $ singleton c++ stringChar end escStart esc =+ Antiquoted <$> (antiStart *> nixToplevelForm <* char '}')+ <+> Plain . singleton <$> char '$'+ <+> esc+ <+> Plain . pack <$> some plainChar+ where+ plainChar =+ notFollowedBy (end <+> void (char '$') <+> escStart) *> anyChar++ escapeCode = msum [ c <$ char e | (c,e) <- escapeCodes ] <+> anyChar++-- | Gets all of the arguments for a function.+argExpr :: Parser (Params NExprLoc)+argExpr = msum [atLeft, onlyname, atRight] <* symbol ":" where+ -- An argument not in curly braces. There's some potential ambiguity+ -- in the case of, for example `x:y`. Is it a lambda function `x: y`, or+ -- a URI `x:y`? Nix syntax says it's the latter. So we need to fail if+ -- there's a valid URI parse here.+ onlyname = msum [nixUri >> unexpected (Label ('v' NE.:| "alid uri")),+ Param <$> identifier]++ -- Parameters named by an identifier on the left (`args @ {x, y}`)+ atLeft = try $ do+ name <- identifier <* symbol "@"+ (variadic, params) <- params+ return $ ParamSet params variadic (Just name)++ -- Parameters named by an identifier on the right, or none (`{x, y} @ args`)+ atRight = do+ (variadic, params) <- params+ name <- optional $ symbol "@" *> identifier+ return $ ParamSet params variadic name++ -- Return the parameters set.+ params = do+ (args, dotdots) <- braces getParams+ return (dotdots, args)++ -- Collects the parameters within curly braces. Returns the parameters and+ -- a boolean indicating if the parameters are variadic.+ getParams :: Parser ([(Text, Maybe NExprLoc)], Bool)+ getParams = go [] where+ -- Attempt to parse `...`. If this succeeds, stop and return True.+ -- Otherwise, attempt to parse an argument, optionally with a+ -- default. If this fails, then return what has been accumulated+ -- so far.+ go acc = ((acc, True) <$ symbol "...") <+> getMore acc+ getMore acc =+ -- Could be nothing, in which just return what we have so far.+ option (acc, False) $ do+ -- Get an argument name and an optional default.+ pair <- liftM2 (,) identifier (optional $ question *> nixToplevelForm)+ -- Either return this, or attempt to get a comma and restart.+ option (acc ++ [pair], False) $ comma >> go (acc ++ [pair])++nixBinders :: Parser [Binding NExprLoc]+nixBinders = (inherit <+> namedVar) `endBy` semi where+ inherit = do+ x <- reserved "inherit" *> optional scope+ p <- getPosition+ Inherit x <$> many keyName <*> pure p <?> "inherited binding"+ namedVar = do+ p <- getPosition+ NamedVar <$> (annotated <$> nixSelector)+ <*> (equals *> nixToplevelForm)+ <*> pure p+ <?> "variable binding"+ scope = parens nixToplevelForm <?> "inherit scope"++keyName :: Parser (NKeyName NExprLoc)+keyName = dynamicKey <+> staticKey where+ staticKey = StaticKey <$> identifier+ dynamicKey = DynamicKey <$> nixAntiquoted nixString++nixSet :: Parser NExprLoc+nixSet = annotateLocation1 ((isRec <*> braces nixBinders) <?> "set") where+ isRec = (reserved "rec" $> NRecSet <?> "recursive set")+ <+> pure NSet++parseNixFile :: MonadIO m => FilePath -> m (Result NExpr)+parseNixFile =+ parseFromFileEx $ stripAnnotation <$> (whiteSpace *> nixToplevelForm <* eof)++parseNixFileLoc :: MonadIO m => FilePath -> m (Result NExprLoc)+parseNixFileLoc = parseFromFileEx (whiteSpace *> nixToplevelForm <* eof)++parseNixText :: Text -> Result NExpr+parseNixText =+ parseFromText $ stripAnnotation <$> (whiteSpace *> nixToplevelForm <* eof)++parseNixTextLoc :: Text -> Result NExprLoc+parseNixTextLoc = parseFromText (whiteSpace *> nixToplevelForm <* eof)++{- Parser.Library -}++skipLineComment' :: Tokens Text -> Parser ()+skipLineComment' prefix =+ string prefix+ *> void (takeWhileP (Just "character") (\x -> x /= '\n' && x /= '\r'))++whiteSpace :: Parser ()+whiteSpace = L.space space1 lineCmnt blockCmnt+ where+ lineCmnt = skipLineComment' "#"+ blockCmnt = L.skipBlockComment "/*" "*/"++lexeme :: Parser a -> Parser a+lexeme p = p <* whiteSpace++symbol :: Text -> Parser Text+symbol = lexeme . string++reservedEnd :: Char -> Bool+reservedEnd x = isSpace x ||+ x == '{' || x == '(' || x == '[' ||+ x == '}' || x == ')' || x == ']' ||+ x == ';' || x == ':' || x == '.' ||+ x == '"' || x == '\'' || x == ','++reserved :: Text -> Parser ()+reserved n = lexeme $ try $+ string n *> lookAhead (void (satisfy reservedEnd) <|> eof)++identifier = lexeme $ try $ do+ ident <- cons <$> satisfy (\x -> isAlpha x || x == '_')+ <*> takeWhileP Nothing identLetter+ guard (not (ident `HashSet.member` reservedNames))+ return ident+ where+ identLetter x = isAlpha x || isDigit x || x == '_' || x == '\'' || x == '-'++parens = between (symbol "(") (symbol ")")+braces = between (symbol "{") (symbol "}")+-- angles = between (symbol "<") (symbol ">")+brackets = between (symbol "[") (symbol "]")+semi = symbol ";"+comma = symbol ","+-- colon = symbol ":"+-- dot = symbol "."+equals = symbol "="+question = symbol "?"++integer :: Parser Integer+integer = lexeme L.decimal++float :: Parser Double+float = lexeme L.float++reservedNames :: HashSet Text+reservedNames = HashSet.fromList+ [ "let", "in"+ , "if", "then", "else"+ , "assert"+ , "with"+ , "rec"+ , "inherit"+ , "true", "false" ]++type Parser = ParsecT Void Text Identity++data Result a = Success a | Failure Doc deriving Show++parseFromFileEx :: MonadIO m => Parser a -> FilePath -> m (Result a)+parseFromFileEx p path = do+ txt <- liftIO (T.readFile path)+ return $ either (Failure . text . parseErrorPretty' txt) Success+ $ parse p path txt++parseFromText :: Parser a -> Text -> Result a+parseFromText p txt =+ either (Failure . text . parseErrorPretty' txt) Success $+ parse p "<string>" txt++{- Parser.Operators -}++data NSpecialOp = NHasAttrOp | NSelectOp+ deriving (Eq, Ord, Generic, Typeable, Data, Show, NFData)++data NAssoc = NAssocNone | NAssocLeft | NAssocRight+ deriving (Eq, Ord, Generic, Typeable, Data, Show, NFData)++data NOperatorDef+ = NUnaryDef Text NUnaryOp+ | NBinaryDef Text NBinaryOp NAssoc+ | NSpecialDef Text NSpecialOp NAssoc+ deriving (Eq, Ord, Generic, Typeable, Data, Show, NFData)++annotateLocation :: Parser a -> Parser (Ann SrcSpan a)+annotateLocation p = do+ begin <- getPosition+ res <- p+ end <- getPosition+ pure $ Ann (SrcSpan begin end) res++annotateLocation1 :: Parser (NExprF NExprLoc) -> Parser NExprLoc+annotateLocation1 = fmap annToAnnF . annotateLocation++manyUnaryOp f = foldr1 (.) <$> some f++operator "-" = lexeme . try $ string "-" <* notFollowedBy (char '>')+operator "/" = lexeme . try $ string "/" <* notFollowedBy (char '/')+operator "<" = lexeme . try $ string "<" <* notFollowedBy (char '=')+operator ">" = lexeme . try $ string ">" <* notFollowedBy (char '=')+operator n = symbol n++opWithLoc :: Text -> o -> (Ann SrcSpan o -> a) -> Parser a+opWithLoc name op f = do+ Ann ann _ <- annotateLocation $ {- dbg (unpack name) $ -} operator name+ return $ f (Ann ann op)++binaryN name op = (NBinaryDef name op NAssocNone,+ InfixN (opWithLoc name op nBinary))+binaryL name op = (NBinaryDef name op NAssocLeft,+ InfixL (opWithLoc name op nBinary))+binaryR name op = (NBinaryDef name op NAssocRight,+ InfixR (opWithLoc name op nBinary))+prefix name op = (NUnaryDef name op,+ Prefix (manyUnaryOp (opWithLoc name op nUnary)))+-- postfix name op = (NUnaryDef name op,+-- Postfix (opWithLoc name op nUnary))++nixOperators+ :: Parser (Ann SrcSpan (NAttrPath NExprLoc))+ -> [[(NOperatorDef, Operator Parser NExprLoc)]]+nixOperators selector =+ [ -- This is not parsed here, even though technically it's part of the+ -- expression table. The problem is that in some cases, such as list+ -- membership, it's also a term. And since terms are effectively the+ -- highest precedence entities parsed by the expression parser, it ends up+ -- working out that we parse them as a kind of "meta-term".++ -- {- 1 -} [ (NSpecialDef "." NSelectOp NAssocLeft,+ -- Postfix $ do+ -- sel <- seldot *> selector+ -- mor <- optional (reserved "or" *> term)+ -- return $ \x -> nSelectLoc x sel mor) ]++ {- 2 -} [ (NBinaryDef " " NApp NAssocLeft,+ -- Thanks to Brent Yorgey for showing me this trick!+ InfixL $ nApp <$ symbol "") ]+ , {- 3 -} [ prefix "-" NNeg ]+ , {- 4 -} [ (NSpecialDef "?" NHasAttrOp NAssocLeft,+ Postfix $ symbol "?" *> (flip nHasAttr <$> selector)) ]+ , {- 5 -} [ binaryR "++" NConcat ]+ , {- 6 -} [ binaryL "*" NMult+ , binaryL "/" NDiv ]+ , {- 7 -} [ binaryL "+" NPlus+ , binaryL "-" NMinus ]+ , {- 8 -} [ prefix "!" NNot ]+ , {- 9 -} [ binaryR "//" NUpdate ]+ , {- 10 -} [ binaryL "<" NLt+ , binaryL ">" NGt+ , binaryL "<=" NLte+ , binaryL ">=" NGte ]+ , {- 11 -} [ binaryN "==" NEq+ , binaryN "!=" NNEq ]+ , {- 12 -} [ binaryL "&&" NAnd ]+ , {- 13 -} [ binaryL "||" NOr ]+ , {- 14 -} [ binaryN "->" NImpl ]+ ]++data OperatorInfo = OperatorInfo+ { precedence :: Int+ , associativity :: NAssoc+ , operatorName :: Text+ } deriving (Eq, Ord, Generic, Typeable, Data, Show)++getUnaryOperator :: NUnaryOp -> OperatorInfo+getUnaryOperator = (m Map.!) where+ m = Map.fromList $ concat $ zipWith buildEntry [1..]+ (nixOperators (error "unused"))+ buildEntry i = concatMap $ \case+ (NUnaryDef name op, _) -> [(op, OperatorInfo i NAssocNone name)]+ _ -> []++getBinaryOperator :: NBinaryOp -> OperatorInfo+getBinaryOperator = (m Map.!) where+ m = Map.fromList $ concat $ zipWith buildEntry [1..]+ (nixOperators (error "unused"))+ buildEntry i = concatMap $ \case+ (NBinaryDef name op assoc, _) -> [(op, OperatorInfo i assoc name)]+ _ -> []++getSpecialOperator :: NSpecialOp -> OperatorInfo+getSpecialOperator NSelectOp = OperatorInfo 1 NAssocLeft "."+getSpecialOperator o = m Map.! o where+ m = Map.fromList $ concat $ zipWith buildEntry [1..]+ (nixOperators (error "unused"))+ buildEntry i = concatMap $ \case+ (NSpecialDef name op assoc, _) -> [(op, OperatorInfo i assoc name)]+ _ -> []
@@ -0,0 +1,305 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeSynonymInstances #-}+{-# LANGUAGE ViewPatterns #-}++{-# OPTIONS_GHC -fno-warn-name-shadowing #-}+{-# OPTIONS_GHC -Wno-orphans #-}++module Nix.Pretty where++import Control.Monad+import Data.Fix+import Data.HashMap.Lazy (toList)+import qualified Data.HashMap.Lazy as M+import qualified Data.HashSet as HashSet+import Data.List (isPrefixOf, sort)+import Data.List.NonEmpty (NonEmpty(..))+import qualified Data.List.NonEmpty as NE+import Data.Maybe (isJust, fromMaybe)+import Data.Text (pack, unpack, replace, strip)+import qualified Data.Text as Text+import Nix.Atoms+import Nix.Expr+import Nix.Parser+import Nix.Strings+import Nix.Thunk+#if ENABLE_TRACING+import Nix.Utils+#else+import Nix.Utils hiding ((<$>))+#endif+import Nix.Value+import Prelude hiding ((<$>))+import Text.PrettyPrint.ANSI.Leijen++-- | This type represents a pretty printed nix expression+-- together with some information about the expression.+data NixDoc = NixDoc+ { -- | The rendered expression, without any parentheses.+ withoutParens :: Doc++ -- | The root operator is the operator at the root of+ -- the expression tree. For example, in '(a * b) + c', '+' would be the root+ -- operator. It is needed to determine if we need to wrap the expression in+ -- parentheses.+ , rootOp :: OperatorInfo+ , wasPath :: Bool -- This is needed so that when a path is used in a selector path+ -- we can add brackets appropiately+ }++mkNixDoc :: Doc -> OperatorInfo -> NixDoc+mkNixDoc d o = NixDoc { withoutParens = d, rootOp = o, wasPath = False }++-- | A simple expression is never wrapped in parentheses. The expression+-- behaves as if its root operator had a precedence higher than all+-- other operators (including function application).+simpleExpr :: Doc -> NixDoc+simpleExpr d = mkNixDoc d (OperatorInfo minBound NAssocNone "simple expr")++pathExpr :: Doc -> NixDoc+pathExpr d = (simpleExpr d) { wasPath = True }++-- | An expression that behaves as if its root operator had a precedence lower+-- than all other operators. That ensures that the expression is wrapped in+-- parantheses in almost always, but it's still rendered without parentheses+-- in cases where parentheses are never required (such as in the LHS of a+-- binding).+leastPrecedence :: Doc -> NixDoc+leastPrecedence =+ flip mkNixDoc $ OperatorInfo maxBound NAssocNone "least precedence"++appOp :: OperatorInfo+appOp = getBinaryOperator NApp++appOpNonAssoc :: OperatorInfo+appOpNonAssoc = (getBinaryOperator NApp) { associativity = NAssocNone }++selectOp :: OperatorInfo+selectOp = getSpecialOperator NSelectOp++hasAttrOp :: OperatorInfo+hasAttrOp = getSpecialOperator NHasAttrOp++wrapParens :: OperatorInfo -> NixDoc -> Doc+wrapParens op sub+ | precedence (rootOp sub) < precedence op = withoutParens sub+ | precedence (rootOp sub) == precedence op+ && associativity (rootOp sub) == associativity op+ && associativity op /= NAssocNone = withoutParens sub+ | otherwise = parens $ withoutParens sub++-- Used in the selector case to print a path in a selector as+-- "${./abc}"+wrapPath :: OperatorInfo -> NixDoc -> Doc+wrapPath op sub =+ if wasPath sub then dquotes (text "$" <> braces (withoutParens sub))+ else wrapParens op sub++prettyString :: NString NixDoc -> Doc+prettyString (DoubleQuoted parts) = dquotes . hcat . map prettyPart $ parts+ where prettyPart (Plain t) = text . concatMap escape . unpack $ t+ prettyPart EscapedNewline = text "''\\n"+ prettyPart (Antiquoted r) = text "$" <> braces (withoutParens r)+ escape '"' = "\\\""+ escape x = maybe [x] (('\\':) . (:[])) $ toEscapeCode x+prettyString (Indented _ parts)+ = group $ nest 2 (squote <> squote <$$> content) <$$> squote <> squote+ where+ content = vsep . map prettyLine . stripLastIfEmpty . splitLines $ parts+ stripLastIfEmpty = reverse . f . reverse where+ f ([Plain t] : xs) | Text.null (strip t) = xs+ f xs = xs+ prettyLine = hcat . map prettyPart+ prettyPart (Plain t) = text . unpack . replace "${" "''${" . replace "''" "'''" $ t+ prettyPart EscapedNewline = text "\\n"+ prettyPart (Antiquoted r) = text "$" <> braces (withoutParens r)++prettyParams :: Params NixDoc -> Doc+prettyParams (Param n) = text $ unpack n+prettyParams (ParamSet s v mname) = prettyParamSet s v <> case mname of+ Nothing -> empty+ Just name | Text.null name -> empty+ | otherwise -> text "@" <> text (unpack name)++prettyParamSet :: ParamSet NixDoc -> Bool -> Doc+prettyParamSet args var =+ encloseSep (lbrace <> space) (align (space <> rbrace)) sep (map prettySetArg args ++ prettyVariadic)+ where+ prettySetArg (n, maybeDef) = case maybeDef of+ Nothing -> text (unpack n)+ Just v -> text (unpack n) <+> text "?" <+> withoutParens v+ prettyVariadic = [text "..." | var]+ sep = align (comma <> space)++prettyBind :: Binding NixDoc -> Doc+prettyBind (NamedVar n v _p) =+ prettySelector n <+> equals <+> withoutParens v <> semi+prettyBind (Inherit s ns _p)+ = text "inherit" <+> scope <> align (fillSep (map prettyKeyName ns)) <> semi+ where scope = maybe empty ((<> space) . parens . withoutParens) s++prettyKeyName :: NKeyName NixDoc -> Doc+prettyKeyName (StaticKey "") = dquotes $ text ""+prettyKeyName (StaticKey key)+ | HashSet.member key reservedNames = dquotes $ text $ unpack key+prettyKeyName (StaticKey key) = text . unpack $ key+prettyKeyName (DynamicKey key) =+ runAntiquoted (DoubleQuoted [Plain "\n"])+ prettyString ((text "$" <>) . braces . withoutParens) key++prettySelector :: NAttrPath NixDoc -> Doc+prettySelector = hcat . punctuate dot . map prettyKeyName . NE.toList++prettyAtom :: NAtom -> NixDoc+prettyAtom atom = simpleExpr $ text $ unpack $ atomText atom++prettyNix :: NExpr -> Doc+prettyNix = withoutParens . cata exprFNixDoc++prettyOriginExpr :: NExprLocF (Maybe (NValue m)) -> Doc+prettyOriginExpr = withoutParens . go+ where+ go = exprFNixDoc . annotated . getCompose . fmap render++ render Nothing = simpleExpr $ text "_"+ render (Just (NValue (reverse -> p:_) _)) = go (_originExpr p)+ render (Just (NValue _ _)) = simpleExpr $ text "?"+ -- simpleExpr $ foldr ((<$>) . parens . indent 2 . withoutParens+ -- . go . originExpr)+ -- mempty (reverse ps)++exprFNixDoc :: NExprF NixDoc -> NixDoc+exprFNixDoc = \case+ NConstant atom -> prettyAtom atom+ NStr str -> simpleExpr $ prettyString str+ NList [] -> simpleExpr $ lbracket <> rbracket+ NList xs -> simpleExpr $ group $+ nest 2 (vsep $ lbracket : map (wrapParens appOpNonAssoc) xs) <$> rbracket+ NSet [] -> simpleExpr $ lbrace <> rbrace+ NSet xs -> simpleExpr $ group $+ nest 2 (vsep $ lbrace : map prettyBind xs) <$> rbrace+ NRecSet [] -> simpleExpr $ recPrefix <> lbrace <> rbrace+ NRecSet xs -> simpleExpr $ group $+ nest 2 (vsep $ recPrefix <> lbrace : map prettyBind xs) <$> rbrace+ NAbs args body -> leastPrecedence $+ nest 2 ((prettyParams args <> colon) <$> withoutParens body)+ NBinary NApp fun arg ->+ mkNixDoc (wrapParens appOp fun <+> wrapParens appOpNonAssoc arg) appOp+ NBinary op r1 r2 -> flip mkNixDoc opInfo $ hsep+ [ wrapParens (f NAssocLeft) r1+ , text $ unpack $ operatorName opInfo+ , wrapParens (f NAssocRight) r2+ ]+ where+ opInfo = getBinaryOperator op+ f x | associativity opInfo /= x = opInfo { associativity = NAssocNone }+ | otherwise = opInfo+ NUnary op r1 ->+ mkNixDoc (text (unpack (operatorName opInfo)) <> wrapParens opInfo r1) opInfo+ where opInfo = getUnaryOperator op+ NSelect r attr o ->+ (if isJust o then leastPrecedence else flip mkNixDoc selectOp) $+ wrapPath selectOp r <> dot <> prettySelector attr <> ordoc+ where ordoc = maybe empty (((space <> text "or") <+>) . wrapParens selectOp) o+ NHasAttr r attr ->+ mkNixDoc (wrapParens hasAttrOp r <+> text "?" <+> prettySelector attr) hasAttrOp+ NEnvPath p -> simpleExpr $ text ("<" ++ p ++ ">")+ NLiteralPath p -> pathExpr $ text $ case p of+ "./" -> "./."+ "../" -> "../."+ ".." -> "../."+ txt | "/" `isPrefixOf` txt -> txt+ | "~/" `isPrefixOf` txt -> txt+ | "./" `isPrefixOf` txt -> txt+ | "../" `isPrefixOf` txt -> txt+ | otherwise -> "./" ++ txt+ NSym name -> simpleExpr $ text (unpack name)+ NLet binds body -> leastPrecedence $ group $ text "let" <$> indent 2 (+ vsep (map prettyBind binds)) <$> text "in" <+> withoutParens body+ NIf cond trueBody falseBody -> leastPrecedence $+ group $ nest 2 $ (text "if" <+> withoutParens cond) <$>+ ( align (text "then" <+> withoutParens trueBody)+ <$> align (text "else" <+> withoutParens falseBody)+ )+ NWith scope body -> leastPrecedence $+ text "with" <+> withoutParens scope <> semi <$> align (withoutParens body)+ NAssert cond body -> leastPrecedence $+ text "assert" <+> withoutParens cond <> semi <$> align (withoutParens body)+ where+ recPrefix = text "rec" <> space++prettyNValueNF :: Functor m => NValueNF m -> Doc+prettyNValueNF = prettyNix . valueToExpr+ where valueToExpr :: Functor m => NValueNF m -> NExpr+ valueToExpr = transport go++ go (NVConstantF a) = NConstant a+ go (NVStrF t _) = NStr (DoubleQuoted [Plain t])+ go (NVListF l) = NList l+ go (NVSetF s p) = NSet+ [ NamedVar (StaticKey k :| []) v (fromMaybe nullPos (M.lookup k p))+ | (k, v) <- toList s ]+ go (NVClosureF _ _) = NSym . pack $ "<closure>"+ go (NVPathF p) = NLiteralPath p+ go (NVBuiltinF name _) = NSym $ Text.pack $ "builtins." ++ name++printNix :: Functor m => NValueNF m -> String+printNix = cata phi+ where phi :: NValueF m String -> String+ phi (NVConstantF a) = unpack $ atomText a+ phi (NVStrF t _) = show t+ phi (NVListF l) = "[ " ++ unwords l ++ " ]"+ phi (NVSetF s _) =+ "{ " ++ concat [ unpack k ++ " = " ++ v ++ "; "+ | (k, v) <- sort $ toList s ] ++ "}"+ phi NVClosureF {} = "<<lambda>>"+ phi (NVPathF fp) = fp+ phi (NVBuiltinF name _) = "<<builtin " ++ name ++ ">>"++removeEffects :: Functor m => NValueF m (NThunk m) -> NValueNF m+removeEffects = Fix . fmap dethunk+ where+ dethunk (NThunk _ (Value v)) = removeEffects (_baseValue v)+ dethunk (NThunk _ _) = Fix $ NVStrF "<thunk>" mempty++removeEffectsM :: MonadVar m => NValueF m (NThunk m) -> m (NValueNF m)+removeEffectsM = fmap Fix . traverse dethunk++prettyNValueF :: MonadVar m => NValueF m (NThunk m) -> m Doc+prettyNValueF = fmap prettyNValueNF . removeEffectsM++prettyNValue :: MonadVar m => NValue m -> m Doc+prettyNValue (NValue _ v) = prettyNValueF v++prettyNValueProv :: MonadVar m => NValue m -> m Doc+prettyNValueProv = \case+ NValue [] v -> prettyNValueF v+ NValue ps v -> do+ v' <- prettyNValueF v+ pure $ v' </> indent 2 (parens (mconcat+ (text "from: " : map (prettyOriginExpr . _originExpr) ps)))++prettyNThunk :: MonadVar m => NThunk m -> m Doc+prettyNThunk = \case+ t@(NThunk ps _) -> do+ v' <- fmap prettyNValueNF (dethunk t)+ pure $ v' </> indent 2 (parens (mconcat+ (text "thunk from: " : map (prettyOriginExpr . _originExpr) ps)))++dethunk :: MonadVar m => NThunk m -> m (NValueNF m)+dethunk = \case+ NThunk _ (Value v) -> removeEffectsM (_baseValue v)+ NThunk _ (Thunk _ active ref) -> do+ nowActive <- atomicModifyVar active (True,)+ if nowActive+ then pure $ Fix $ NVStrF "<thunk>" mempty+ else do+ eres <- readVar ref+ case eres of+ Computed v -> removeEffectsM (_baseValue v)+ _ -> pure $ Fix $ NVStrF "<thunk>" mempty
@@ -0,0 +1,363 @@+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE ApplicativeDo #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PartialTypeSignatures #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ViewPatterns #-}++{-# OPTIONS_GHC -fno-warn-name-shadowing #-}+{-# OPTIONS_GHC -Wno-orphans #-}++-- | This module provides a "reducing" expression evaluator, which reduces+-- away pure, non self-referential aspects of an expression tree, yielding a+-- new expression tree. It does not yet attempt to reduce everything+-- possible, and will always yield a tree with the same meaning as the+-- original. It should be seen as an opportunistic simplifier, but which+-- gives up easily if faced with any potential for ambiguity in the result.++module Nix.Reduce (reduceExpr, reducingEvalExpr) where++import Control.Applicative+import Control.Arrow (second)+import Control.Monad+import Control.Monad.Catch+import Control.Monad.Fix+import Control.Monad.IO.Class+import Control.Monad.Reader+import Control.Monad.State.Strict+import Control.Monad.Trans.Reader (ReaderT(..))+import Control.Monad.Trans.State.Strict (StateT(..))+import Data.Fix+-- import Data.Foldable+import Data.HashMap.Lazy (HashMap)+import qualified Data.HashMap.Lazy as M+-- import Data.HashSet (HashSet)+-- import qualified Data.HashSet as S+import Data.IORef+import Data.List.NonEmpty (NonEmpty(..))+import qualified Data.List.NonEmpty as NE+import Data.Maybe (fromMaybe, mapMaybe, catMaybes)+import Data.Text (Text)+import Nix.Atoms+import Nix.Exec+import Nix.Expr+import Nix.Frames+import Nix.Options (Options, reduceSets, reduceLists)+import Nix.Parser+import Nix.Scope+import Nix.Utils+import System.Directory+import System.FilePath++newtype Reducer m a = Reducer+ { runReducer :: ReaderT (Maybe FilePath, Scopes (Reducer m) NExprLoc)+ (StateT (HashMap FilePath NExprLoc) m) a }+ deriving (Functor, Applicative, Alternative, Monad, MonadPlus,+ MonadFix, MonadIO,+ MonadReader (Maybe FilePath, Scopes (Reducer m) NExprLoc),+ MonadState (HashMap FilePath NExprLoc))++staticImport+ :: forall e m.+ (MonadIO m, Scoped e NExprLoc m,+ MonadReader (Maybe FilePath, Scopes m NExprLoc) m,+ MonadState (HashMap FilePath NExprLoc) m)+ => SrcSpan -> FilePath -> m NExprLoc+staticImport pann path = do+ imports <- get+ case M.lookup path imports of+ Just expr -> pure expr+ Nothing -> go+ where+ go = do+ mfile <- asks fst+ path <- liftIO $ pathToDefaultNixFile path+ path' <- liftIO $ pathToDefaultNixFile =<< canonicalizePath+ (maybe path (\p -> takeDirectory p </> path) mfile)++ liftIO $ putStrLn $ "Importing file " ++ path'++ eres <- liftIO $ parseNixFileLoc path'+ case eres of+ Failure err -> error $ "Parse failed: " ++ show err+ Success x -> do+ let pos = SourcePos "Reduce.hs" (mkPos 1) (mkPos 1)+ span = SrcSpan pos pos+ cur = NamedVar (StaticKey "__cur_file" :| [])+ (Fix (NLiteralPath_ pann path')) pos+ x' = Fix (NLet_ span [cur] x)+ modify (M.insert path x')+ local (const (Just path',+ emptyScopes @m @NExprLoc)) $ do+ x'' <- cata reduce x'+ modify (M.insert path x'')+ return x''++-- gatherNames :: NExprLoc -> HashSet VarName+-- gatherNames = cata $ \case+-- NSym_ _ var -> S.singleton var+-- Compose (Ann _ x) -> fold x++reduceExpr :: MonadIO m => Maybe FilePath -> NExprLoc -> m NExprLoc+reduceExpr mpath expr+ = (`evalStateT` M.empty)+ . (`runReaderT` (mpath, emptyScopes))+ . runReducer+ $ cata reduce expr++reduce :: forall e m.+ (MonadIO m, Scoped e NExprLoc m,+ MonadReader (Maybe FilePath, Scopes m NExprLoc) m,+ MonadState (HashMap FilePath NExprLoc) m)+ => NExprLocF (m NExprLoc) -> m NExprLoc++reduce (NSym_ ann var) = lookupVar var <&> \case+ Nothing -> Fix (NSym_ ann var)+ Just v -> v++reduce (NUnary_ uann op arg) = arg >>= \x -> case (op, x) of+ (NNeg, Fix (NConstant_ cann (NInt n))) ->+ return $ Fix $ NConstant_ cann (NInt (negate n))+ (NNot, Fix (NConstant_ cann (NBool b))) ->+ return $ Fix $ NConstant_ cann (NBool (not b))+ _ -> return $ Fix $ NUnary_ uann op x++reduce (NBinary_ bann NApp fun arg) = fun >>= \case+ f@(Fix (NSym_ _ "import")) -> arg >>= \case+ -- Fix (NEnvPath_ pann origPath) -> staticImport pann origPath+ Fix (NLiteralPath_ pann origPath) -> staticImport pann origPath+ v -> return $ Fix $ NBinary_ bann NApp f v++ Fix (NAbs_ _ (Param name) body) -> do+ x <- arg+ pushScope (M.singleton name x) (cata reduce body)++ f -> Fix . NBinary_ bann NApp f <$> arg++reduce (NBinary_ bann op larg rarg) = do+ lval <- larg+ rval <- rarg+ case (op, lval, rval) of+ (NPlus, Fix (NConstant_ ann (NInt x)), Fix (NConstant_ _ (NInt y))) ->+ return $ Fix (NConstant_ ann (NInt (x + y)))+ _ -> pure $ Fix $ NBinary_ bann op lval rval++-- reduce (NSelect aset attr alt) = do++-- reduce (NHasAttr aset attr) =++reduce e@(NSet_ ann binds) = do+ let usesInherit = flip any binds $ \case+ Inherit {} -> True+ _ -> False+ if usesInherit+ then clearScopes @NExprLoc $+ Fix . NSet_ ann <$> traverse sequence binds+ else Fix <$> sequence e++-- Encountering a 'rec set' construction eliminates any hope of inlining+-- definitions.+reduce (NRecSet_ ann binds) =+ clearScopes @NExprLoc $ Fix . NRecSet_ ann <$> traverse sequence binds++-- Encountering a 'with' construction eliminates any hope of inlining+-- definitions.+reduce (NWith_ ann scope body) =+ clearScopes @NExprLoc $ fmap Fix $ NWith_ ann <$> scope <*> body++reduce (NLet_ ann binds body) = do+ s <- fmap (M.fromList . catMaybes) $ forM binds $ \case+ NamedVar (StaticKey name :| []) def _pos -> def >>= \case+ d@(Fix NAbs_ {}) -> pure $ Just (name, d)+ d@(Fix NConstant_ {}) -> pure $ Just (name, d)+ d@(Fix NStr_ {}) -> pure $ Just (name, d)+ _ -> pure Nothing+ _ -> pure Nothing+ body' <- pushScope s body+ binds' <- traverse sequence binds+ -- let names = gatherNames body'+ -- binds' <- traverse sequence binds <&> \b -> flip filter b $ \case+ -- NamedVar (StaticKey name _ :| []) _ ->+ -- name `S.member` names+ -- _ -> True+ pure $ Fix $ NLet_ ann binds' body'+ -- where+ -- go m [] = pure m+ -- go m (x:xs) = case x of+ -- NamedVar (StaticKey name _ :| []) def -> do+ -- v <- pushScope m def+ -- go (M.insert name v m) xs+ -- _ -> go m xs++reduce e@(NIf_ _ b t f) = b >>= \case+ Fix (NConstant_ _ (NBool b')) -> if b' then t else f+ _ -> Fix <$> sequence e++reduce e@(NAssert_ _ b body) = b >>= \case+ Fix (NConstant_ _ (NBool b')) | b' -> body+ _ -> Fix <$> sequence e++reduce (NAbs_ ann params body) = do+ params' <- sequence params+ -- Make sure that variable definitions in scope do not override function+ -- arguments.+ let args = case params' of+ Param name -> M.singleton name (Fix (NSym_ ann name))+ ParamSet pset _ _ ->+ M.fromList $ map (\(k, _) -> (k, Fix (NSym_ ann k))) pset+ Fix . NAbs_ ann params' <$> pushScope args body++reduce v = Fix <$> sequence v++-- newtype FlaggedF f r = FlaggedF { flagged :: (IORef Bool, f r) }+newtype FlaggedF f r = FlaggedF (IORef Bool, f r)+ deriving (Functor, Foldable, Traversable)++instance Show (f r) => Show (FlaggedF f r) where+ show (FlaggedF (_, x)) = show x++type Flagged f = Fix (FlaggedF f)++flagExprLoc :: (MonadIO n, Traversable f)+ => Fix f -> n (Flagged f)+flagExprLoc = cataM $ \x -> do+ flag <- liftIO $ newIORef False+ pure $ Fix $ FlaggedF (flag, x)++-- stripFlags :: Functor f => Flagged f -> Fix f+-- stripFlags = cata $ Fix . snd . flagged++pruneTree :: MonadIO n => Options -> Flagged NExprLocF -> n (Maybe NExprLoc)+pruneTree opts = cataM $ \(FlaggedF (b, Compose x)) -> do+ used <- liftIO $ readIORef b+ pure $ if used+ then Fix . Compose <$> traverse prune x+ else Nothing+ where+ prune :: NExprF (Maybe NExprLoc) -> Maybe (NExprF NExprLoc)+ prune = \case+ NStr str -> Just $ NStr (pruneString str)+ NHasAttr (Just aset) attr -> Just $ NHasAttr aset (NE.map pruneKeyName attr)+ NAbs params (Just body) -> Just $ NAbs (pruneParams params) body++ NList l | reduceLists opts -> Just $ NList (catMaybes l)+ | otherwise -> Just $ NList (map (fromMaybe nNull) l)+ NSet binds | reduceSets opts -> Just $ NSet (mapMaybe sequence binds)+ | otherwise -> Just $ NSet (map (fmap (fromMaybe nNull)) binds)+ NRecSet binds | reduceSets opts -> Just $ NRecSet (mapMaybe sequence binds)+ | otherwise -> Just $ NRecSet (map (fmap (fromMaybe nNull)) binds)++ NLet binds (Just body@(Fix (Compose (Ann _ x)))) ->+ Just $ case mapMaybe pruneBinding binds of+ [] -> x+ xs -> NLet xs body++ NSelect (Just aset) attr alt ->+ Just $ NSelect aset (NE.map pruneKeyName attr) (join alt)++ -- These are the only short-circuiting binary operators+ NBinary NAnd (Just (Fix (Compose (Ann _ larg)))) _ -> Just larg+ NBinary NOr (Just (Fix (Compose (Ann _ larg)))) _ -> Just larg++ -- If the function was never called, it means its argument was in a+ -- thunk that was forced elsewhere.+ NBinary NApp Nothing (Just _) -> Nothing++ -- The idea behind emitted a binary operator where one side may be+ -- invalid is that we're trying to emit what will reproduce whatever+ -- error the user encountered, which means providing all aspects of+ -- the evaluation path they ultimately followed.+ NBinary op Nothing (Just rarg) -> Just $ NBinary op nNull rarg+ NBinary op (Just larg) Nothing -> Just $ NBinary op larg nNull++ -- If the scope of a with was never referenced, it's not needed+ NWith Nothing (Just (Fix (Compose (Ann _ body)))) -> Just body++ NAssert Nothing _ ->+ error "How can an assert be used, but its condition not?"++ NAssert _ (Just (Fix (Compose (Ann _ body)))) -> Just body+ NAssert (Just cond) _ -> Just $ NAssert cond nNull++ NIf Nothing _ _ ->+ error "How can an if be used, but its condition not?"++ NIf _ Nothing (Just (Fix (Compose (Ann _ f)))) -> Just f+ NIf _ (Just (Fix (Compose (Ann _ t)))) Nothing -> Just t++ x -> sequence x++ pruneString :: NString (Maybe NExprLoc) -> NString NExprLoc+ pruneString (DoubleQuoted xs) =+ DoubleQuoted (mapMaybe pruneAntiquotedText xs)+ pruneString (Indented n xs) =+ Indented n (mapMaybe pruneAntiquotedText xs)++ pruneAntiquotedText+ :: Antiquoted Text (Maybe NExprLoc)+ -> Maybe (Antiquoted Text NExprLoc)+ pruneAntiquotedText (Plain v) = Just (Plain v)+ pruneAntiquotedText EscapedNewline = Just EscapedNewline+ pruneAntiquotedText (Antiquoted Nothing) = Nothing+ pruneAntiquotedText (Antiquoted (Just k)) = Just (Antiquoted k)++ pruneAntiquoted+ :: Antiquoted (NString (Maybe NExprLoc)) (Maybe NExprLoc)+ -> Maybe (Antiquoted (NString NExprLoc) NExprLoc)+ pruneAntiquoted (Plain v) = Just (Plain (pruneString v))+ pruneAntiquoted EscapedNewline = Just EscapedNewline+ pruneAntiquoted (Antiquoted Nothing) = Nothing+ pruneAntiquoted (Antiquoted (Just k)) = Just (Antiquoted k)++ pruneKeyName :: NKeyName (Maybe NExprLoc) -> NKeyName NExprLoc+ pruneKeyName (StaticKey n) = StaticKey n+ pruneKeyName (DynamicKey k)+ | Just k' <- pruneAntiquoted k = DynamicKey k'+ | otherwise = StaticKey "<unused?>"++ pruneParams :: Params (Maybe NExprLoc) -> Params NExprLoc+ pruneParams (Param n) = Param n+ pruneParams (ParamSet xs b n)+ | reduceSets opts =+ ParamSet (map (second (maybe (Just nNull) Just+ . fmap (fromMaybe nNull))) xs) b n+ | otherwise =+ ParamSet (map (second (fmap (fromMaybe nNull))) xs) b n++ pruneBinding :: Binding (Maybe NExprLoc) -> Maybe (Binding NExprLoc)+ pruneBinding (NamedVar _ Nothing _) = Nothing+ pruneBinding (NamedVar xs (Just x) pos) =+ Just (NamedVar (NE.map pruneKeyName xs) x pos)+ pruneBinding (Inherit _ [] _) = Nothing+ pruneBinding (Inherit (join -> Nothing) _ _) = Nothing+ pruneBinding (Inherit (join -> m) xs pos) =+ Just (Inherit m (map pruneKeyName xs) pos)++reducingEvalExpr+ :: (Framed e m, Has e Options, Exception r, MonadCatch m, MonadIO m)+ => (NExprLocF (m a) -> m a)+ -> Maybe FilePath+ -> NExprLoc+ -> m (NExprLoc, Either r a)+reducingEvalExpr eval mpath expr = do+ expr' <- flagExprLoc =<< liftIO (reduceExpr mpath expr)+ eres <- catch (Right <$> cata (addEvalFlags eval) expr') (pure . Left)+ opts :: Options <- asks (view hasLens)+ expr'' <- pruneTree opts expr'+ return (fromMaybe nNull expr'', eres)+ where+ addEvalFlags k (FlaggedF (b, x)) = liftIO (writeIORef b True) *> k x
@@ -0,0 +1,35 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}++module Nix.Render where++import Data.ByteString (ByteString)+import Data.List.NonEmpty (NonEmpty((:|)))+import qualified Data.Set as Set+import Data.Void+import Nix.Expr.Types.Annotated+import Text.Megaparsec.Error+import Text.Megaparsec.Pos (SourcePos(..))+import Text.PrettyPrint.ANSI.Leijen++class Monad m => MonadFile m where+ readFile :: FilePath -> m ByteString++posAndMsg :: SourcePos -> Doc -> ParseError t Void+posAndMsg beg msg =+ FancyError (beg :| [])+ (Set.fromList [ErrorFail (show msg) :: ErrorFancy Void])++renderLocation :: MonadFile m => SrcSpan -> Doc -> m Doc+renderLocation (SrcSpan beg@(SourcePos "<string>" _ _) _) msg =+ return $ text $ init $ parseErrorPretty @Char (posAndMsg beg msg)++renderLocation (SrcSpan beg@(SourcePos path _ _) _) msg = do+ contents <- Nix.Render.readFile path+ return $ text $ init $ parseErrorPretty' contents (posAndMsg beg msg)
@@ -0,0 +1,175 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}++module Nix.Render.Frame where++import Control.Monad.Reader+import Data.Fix+import Data.Typeable+import Nix.Eval+import Nix.Exec+import Nix.Expr+import Nix.Frames+import Nix.Normal+import Nix.Options+import Nix.Pretty+import Nix.Render+import Nix.Thunk+import Nix.Utils+import Nix.Value+import Text.Megaparsec.Pos+import qualified Text.PrettyPrint.ANSI.Leijen as P+import Text.PrettyPrint.ANSI.Leijen hiding ((<$>))+#if MIN_VERSION_pretty_show(1, 6, 16)+import qualified Text.Show.Pretty as PS+#endif++renderFrames :: forall v e m.+ (MonadReader e m, Has e Options,+ MonadVar m, MonadFile m, Typeable m, Typeable v)+ => Frames -> m Doc+renderFrames [] = pure mempty+renderFrames (x:xs) = do+ opts :: Options <- asks (view hasLens)+ frames <-+ if | verbose opts <= ErrorsOnly ->+ renderFrame @v x+ | verbose opts <= Informational -> do+ f <- renderFrame @v x+ pure $ concatMap go (reverse xs) ++ f+ | otherwise ->+ concat <$> mapM (renderFrame @v) (reverse (x:xs))+ pure $ case frames of+ [] -> mempty+ _ -> foldr1 (P.<$>) frames+ where+ go :: NixFrame -> [Doc]+ go f = case framePos @v @m f of+ Just pos ->+ [text "While evaluating at "+ <> text (sourcePosPretty pos)+ <> colon]+ Nothing -> []++framePos :: forall v (m :: * -> *). (Typeable m, Typeable v) => NixFrame+ -> Maybe SourcePos+framePos (NixFrame _ f)+ | Just (e :: EvalFrame m v) <- fromException f = case e of+ EvaluatingExpr _ (Fix (Compose (Ann (SrcSpan beg _) _))) ->+ Just beg+ _ -> Nothing+ | otherwise = Nothing++renderFrame :: forall v e m.+ (MonadReader e m, Has e Options, MonadVar m,+ MonadFile m, Typeable m, Typeable v)+ => NixFrame -> m [Doc]+renderFrame (NixFrame level f)+ | Just (e :: EvalFrame m v) <- fromException f = renderEvalFrame level e+ | Just (e :: ThunkLoop) <- fromException f = renderThunkLoop level e+ | Just (e :: ValueFrame m) <- fromException f = renderValueFrame level e+ | Just (_ :: NormalLoop m) <- fromException f =+ pure [text "<<loop during normalization>>"]+ | Just (e :: ExecFrame m) <- fromException f = renderExecFrame level e+ | Just (e :: ErrorCall) <- fromException f = pure [text (show e)]+ | otherwise = error $ "Unrecognized frame: " ++ show f++wrapExpr :: NExprF r -> NExpr+wrapExpr x = Fix (Fix (NSym "<?>") <$ x)++renderEvalFrame :: (MonadReader e m, Has e Options, MonadFile m)+ => NixLevel -> EvalFrame m v -> m [Doc]+renderEvalFrame level f = do+ opts :: Options <- asks (view hasLens)+ case f of+ EvaluatingExpr _scope e@(Fix (Compose (Ann ann _))) ->+ fmap (:[]) $ renderLocation ann+ =<< renderExpr level "While evaluating" "Expression" e++ ForcingExpr _scope e@(Fix (Compose (Ann ann _)))+ | thunks opts ->+ fmap (:[]) $ renderLocation ann+ =<< renderExpr level "While forcing thunk from"+ "Forcing thunk" e++ Calling name ann ->+ fmap (:[]) $ renderLocation ann $+ text "While calling builtins." <> text name++ _ -> pure []++renderExpr :: (MonadReader e m, Has e Options, MonadFile m)+ => NixLevel -> String -> String -> NExprLoc -> m Doc+renderExpr _level longLabel shortLabel e@(Fix (Compose (Ann _ x))) = do+ opts :: Options <- asks (view hasLens)+ let rendered+ | verbose opts >= DebugInfo =+#if MIN_VERSION_pretty_show(1, 6, 16)+ text (PS.ppShow (stripAnnotation e))+#else+ text (show (stripAnnotation e))+#endif+ | verbose opts >= Chatty =+ prettyNix (stripAnnotation e)+ | otherwise =+ prettyNix (Fix (Fix (NSym "<?>") <$ x))+ pure $ if verbose opts >= Chatty+ then text (longLabel ++ ":\n>>>>>>>>")+ P.<$> indent 2 rendered+ P.<$> text "<<<<<<<<"+ else text shortLabel <> text ": " </> rendered++renderValueFrame :: (MonadReader e m, Has e Options, MonadFile m)+ => NixLevel -> ValueFrame m -> m [Doc]+renderValueFrame level = pure . (:[]) . \case+ ForcingThunk -> text "ForcingThunk"+ ConcerningValue _v -> text "ConcerningValue"+ Comparison _ _ -> text "Comparing"+ Addition _ _ -> text "Adding"+ Division _ _ -> text "Dividing"+ Multiplication _ _ -> text "Multiplying"++ Coercion x y ->+ text desc <> text (describeValue x)+ <> text " to " <> text (describeValue y)+ where+ desc | level <= Error = "Cannot coerce "+ | otherwise = "While coercing "++ CoercionToJsonNF _v -> text "CoercionToJsonNF"+ CoercionFromJson _j -> text "CoercionFromJson"+ ExpectationNF _t _v -> text "ExpectationNF"+ Expectation _t _v -> text "Expectation"++renderValue :: (MonadReader e m, Has e Options, MonadFile m, MonadVar m)+ => NixLevel -> String -> String -> NValue m -> m Doc+renderValue _level _longLabel _shortLabel v = do+ opts :: Options <- asks (view hasLens)+ if values opts+ then prettyNValueProv v+ else prettyNValue v++renderExecFrame :: (MonadReader e m, Has e Options, MonadVar m, MonadFile m)+ => NixLevel -> ExecFrame m -> m [Doc]+renderExecFrame level = \case+ Assertion ann v ->+ fmap (:[]) $ renderLocation ann+ =<< ((text "Assertion failed:" </>)+ <$> renderValue level "" "" v)++renderThunkLoop :: (MonadReader e m, Has e Options, MonadFile m)+ => NixLevel -> ThunkLoop -> m [Doc]+renderThunkLoop _level = pure . (:[]) . \case+ ThunkLoop Nothing -> text "<<loop>>"+ ThunkLoop (Just n) ->+ text $ "<<loop forcing thunk #" ++ show n ++ ">>"
@@ -0,0 +1,83 @@+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeApplications #-}++module Nix.Scope where++import Control.Applicative+import Control.Monad.Reader+import qualified Data.HashMap.Lazy as M+import Data.Semigroup+import Data.Text (Text)+import Lens.Family2+import Nix.Utils++newtype Scope a = Scope { getScope :: AttrSet a }+ deriving (Functor, Foldable, Traversable)++instance Show (Scope a) where+ show (Scope m) = show (M.keys m)++newScope :: AttrSet a -> Scope a+newScope = Scope++scopeLookup :: Text -> [Scope v] -> Maybe v+scopeLookup key = foldr go Nothing+ where+ go (Scope m) rest = M.lookup key m <|> rest++data Scopes m v = Scopes+ { lexicalScopes :: [Scope v]+ , dynamicScopes :: [m (Scope v)]+ }++instance Show (Scopes m v) where+ show (Scopes m v) =+ "Scopes: " ++ show m ++ ", and "+ ++ show (length v) ++ " with-scopes"++instance Semigroup (Scopes m v) where+ Scopes ls lw <> Scopes rs rw = Scopes (ls <> rs) (lw <> rw)++instance Monoid (Scopes m v) where+ mempty = emptyScopes+ mappend = (<>)++type Scoped e v m = (MonadReader e m, Has e (Scopes m v))++emptyScopes :: Scopes m v+emptyScopes = Scopes [] []++currentScopes :: Scoped e v m => m (Scopes m v)+currentScopes = asks (view hasLens)++clearScopes :: forall v m e r. Scoped e v m => m r -> m r+clearScopes = local (set hasLens (emptyScopes @m @v))++pushScope :: forall v m e r. Scoped e v m => AttrSet v -> m r -> m r+pushScope s = pushScopes (Scopes [Scope s] [])++pushWeakScope :: forall v m e r. Scoped e v m => m (AttrSet v) -> m r -> m r+pushWeakScope s = pushScopes (Scopes [] [Scope <$> s])++pushScopes :: Scoped e v m => Scopes m v -> m r -> m r+pushScopes s = local (over hasLens (s <>))++lookupVar :: forall e v m. (Scoped e v m, Monad m) => Text -> m (Maybe v)+lookupVar k = do+ mres <- asks (scopeLookup k . lexicalScopes @m . view hasLens)+ case mres of+ Just sym -> return $ Just sym+ Nothing -> do+ ws <- asks (dynamicScopes . view hasLens)+ foldr (\x -> liftM2 (<|>) (M.lookup k . getScope <$> x))+ (return Nothing) ws++withScopes :: forall v m e a. Scoped e v m => Scopes m v -> m a -> m a+withScopes scope = clearScopes @v . pushScopes scope
@@ -0,0 +1,112 @@+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}++-- | Functions for manipulating nix strings.+module Nix.Strings where++import Data.List (intercalate, dropWhileEnd, inits)+import Data.Monoid ((<>))+import Data.Text (Text)+import qualified Data.Text as T+import Data.Tuple (swap)+import Nix.Expr++-- | Merge adjacent 'Plain' values with 'mappend'.+mergePlain :: [Antiquoted Text r] -> [Antiquoted Text r]+mergePlain [] = []+mergePlain (Plain a: EscapedNewline : Plain b: xs) =+ mergePlain (Plain (a <> "\n" <> b) : xs)+mergePlain (Plain a: Plain b: xs) = mergePlain (Plain (a <> b) : xs)+mergePlain (x:xs) = x : mergePlain xs++-- | Remove 'Plain' values equal to 'mempty', as they don't have any+-- informational content.+removePlainEmpty :: [Antiquoted Text r] -> [Antiquoted Text r]+removePlainEmpty = filter f where+ f (Plain x) = x /= mempty+ f _ = True++ -- trimEnd xs+ -- | null xs = xs+ -- | otherwise = case last xs of+ -- Plain x -> init xs ++ [Plain (T.dropWhileEnd (== ' ') x)]+ -- _ -> xs++-- | Equivalent to case splitting on 'Antiquoted' strings.+runAntiquoted :: v -> (v -> a) -> (r -> a) -> Antiquoted v r -> a+runAntiquoted _ f _ (Plain v) = f v+runAntiquoted nl f _ EscapedNewline = f nl+runAntiquoted _ _ k (Antiquoted r) = k r++-- | Split a stream representing a string with antiquotes on line breaks.+splitLines :: [Antiquoted Text r] -> [[Antiquoted Text r]]+splitLines = uncurry (flip (:)) . go where+ go (Plain t : xs) = (Plain l :) <$> foldr f (go xs) ls where+ (l : ls) = T.split (=='\n') t+ f prefix (finished, current) = ((Plain prefix : current) : finished, [])+ go (Antiquoted a : xs) = (Antiquoted a :) <$> go xs+ go (EscapedNewline : xs) = (EscapedNewline :) <$> go xs+ go [] = ([],[])++-- | Join a stream of strings containing antiquotes again. This is the inverse+-- of 'splitLines'.+unsplitLines :: [[Antiquoted Text r]] -> [Antiquoted Text r]+unsplitLines = intercalate [Plain "\n"]++-- | Form an indented string by stripping spaces equal to the minimal indent.+stripIndent :: [Antiquoted Text r] -> NString r+stripIndent [] = Indented 0 []+stripIndent xs =+ Indented minIndent+ . removePlainEmpty+ . mergePlain+ . map snd+ . dropWhileEnd cleanup+ . (\ys -> zip (map (\case [] -> Nothing+ x -> Just (last x))+ (inits ys)) ys)+ . unsplitLines $ ls'+ where+ ls = stripEmptyOpening $ splitLines xs+ ls' = map (dropSpaces minIndent) ls++ minIndent = case stripEmptyLines ls of+ [] -> 0+ nonEmptyLs -> minimum $ map (countSpaces . mergePlain) nonEmptyLs++ stripEmptyLines = filter $ \case+ [Plain t] -> not $ T.null $ T.strip t+ _ -> True++ stripEmptyOpening ([Plain t]:ts) | T.null (T.strip t) = ts+ stripEmptyOpening ts = ts++ countSpaces (Antiquoted _:_) = 0+ countSpaces (EscapedNewline:_) = 0+ countSpaces (Plain t : _) = T.length . T.takeWhile (== ' ') $ t+ countSpaces [] = 0++ dropSpaces 0 x = x+ dropSpaces n (Plain t : cs) = Plain (T.drop n t) : cs+ dropSpaces _ _ = error "stripIndent: impossible"++ cleanup (Nothing, Plain y) = T.all (== ' ') y+ cleanup (Just (Plain x), Plain y)+ | "\n" `T.isSuffixOf` x = T.all (== ' ') y+ cleanup _ = False++escapeCodes :: [(Char, Char)]+escapeCodes =+ [ ('\n', 'n' )+ , ('\r', 'r' )+ , ('\t', 't' )+ , ('\\', '\\')+ , ('$' , '$' )+ , ('"', '"')+ ]++fromEscapeCode :: Char -> Maybe Char+fromEscapeCode = (`lookup` map swap escapeCodes)++toEscapeCode :: Char -> Maybe Char+toEscapeCode = (`lookup` escapeCodes)
@@ -0,0 +1,36 @@+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}++{-# OPTIONS_GHC -Wno-missing-fields #-}++module Nix.TH where++import Data.Fix+import Data.Generics.Aliases+import Data.Set (Set)+import qualified Data.Set as Set+import qualified Data.Text as Text+import Language.Haskell.TH+import Language.Haskell.TH.Quote+import Nix.Expr+import Nix.Parser++quoteExprExp :: String -> ExpQ+quoteExprExp s = do+ expr <- case parseNixText (Text.pack s) of+ Failure err -> fail $ show err+ Success e -> return e+ dataToExpQ (const Nothing `extQ` metaExp (freeVars expr)) expr++freeVars :: NExpr -> Set VarName+freeVars = error "NYI: Implement an evaluator to find free variables"++metaExp :: Set VarName -> NExpr -> Maybe ExpQ+metaExp fvs (Fix (NSym x)) | x `Set.member` fvs =+ Just [| toExpr $(varE (mkName (Text.unpack x))) |]+metaExp _ _ = Nothing++nix :: QuasiQuoter+nix = QuasiQuoter+ { quoteExp = quoteExprExp+ }
@@ -0,0 +1,111 @@+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE CPP #-}++#if ENABLE_TRACING+{-# LANGUAGE BangPatterns #-}+#endif++{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeFamilies #-}++module Nix.Thunk where++import Control.Exception+import Control.Monad.Catch+import Data.Typeable++#if ENABLE_TRACING+import Data.IORef+import System.IO.Unsafe+import Nix.Utils++counter :: IORef Int+counter = unsafePerformIO $ newIORef 0+{-# NOINLINE counter #-}+#endif++data Deferred m v = Deferred (m v) | Computed v+ deriving (Functor, Foldable, Traversable)++class Monad m => MonadVar m where+ type Var m :: * -> *+ newVar :: a -> m (Var m a)+ readVar :: Var m a -> m a+ writeVar :: Var m a -> a -> m ()+ atomicModifyVar :: Var m a -> (a -> (a, b)) -> m b++class Monad m => MonadThunk v t m | v -> m, v -> t, t -> m, t -> v where+ thunk :: m v -> m t+ force :: t -> (v -> m r) -> m r+ value :: v -> t++data Thunk m v+ = Value v+ | Thunk Int (Var m Bool) (Var m (Deferred m v))++newtype ThunkLoop = ThunkLoop (Maybe Int)+ deriving (Show, Typeable)++instance Exception ThunkLoop++valueRef :: v -> Thunk m v+valueRef = Value++buildThunk :: MonadVar m => m v -> m (Thunk m v)+buildThunk action =+#if ENABLE_TRACING+ let !x = unsafePerformIO (atomicModifyIORef' counter (\c -> (succ c, c))) in+ Thunk x+#else+ Thunk 0+#endif+ <$> newVar False <*> newVar (Deferred action)++forceThunk :: (MonadVar m, MonadThrow m) => Thunk m v -> (v -> m a) -> m a+forceThunk (Value ref) k = k ref+#if ENABLE_TRACING+forceThunk (Thunk n active ref) k = do+#else+forceThunk (Thunk _ active ref) k = do+#endif+ eres <- readVar ref+ case eres of+ Computed v -> k v+ Deferred action -> do+ nowActive <- atomicModifyVar active (True,)+ if nowActive+ then+#if ENABLE_TRACING+ throwM $ ThunkLoop (Just n)+#else+ throwM $ ThunkLoop Nothing+#endif+ else do+#if ENABLE_TRACING+ traceM $ "Forcing " ++ show n+#endif+ v <- action+ writeVar ref (Computed v)+ _ <- atomicModifyVar active (False,)+ k v++forceEffects :: MonadVar m => Thunk m v -> (v -> m a) -> m a+forceEffects (Value ref) k = k ref+forceEffects (Thunk _ active ref) k = do+ nowActive <- atomicModifyVar active (True,)+ if nowActive+ then return $ error "forceEffects: a value was expected"+ else do+ eres <- readVar ref+ case eres of+ Computed v -> k v+ Deferred action -> do+ v <- action+ writeVar ref (Computed v)+ _ <- atomicModifyVar active (False,)+ k v
@@ -0,0 +1,44 @@+module Nix.Type.Assumption (+ Assumption(..),+ empty,+ lookup,+ remove,+ extend,+ keys,+ merge,+ mergeAssumptions,+ singleton,+) where++import Prelude hiding (lookup)++import Nix.Type.Type++import Data.Foldable++newtype Assumption = Assumption { assumptions :: [(Name, Type)] }+ deriving (Eq, Show)++empty :: Assumption+empty = Assumption []++extend :: Assumption -> (Name, Type) -> Assumption+extend (Assumption a) (x, s) = Assumption ((x, s) : a)++remove :: Assumption -> Name -> Assumption+remove (Assumption a) var = Assumption (filter (\(n, _) -> n /= var) a)++lookup :: Name -> Assumption -> [Type]+lookup key (Assumption a) = map snd (filter (\(n, _) -> n == key) a)++merge :: Assumption -> Assumption -> Assumption+merge (Assumption a) (Assumption b) = Assumption (a ++ b)++mergeAssumptions :: [Assumption] -> Assumption+mergeAssumptions = foldl' merge empty++singleton :: Name -> Type -> Assumption+singleton x y = Assumption [(x, y)]++keys :: Assumption -> [Name]+keys (Assumption a) = map fst a
@@ -0,0 +1,70 @@+module Nix.Type.Env (+ Env(..),+ empty,+ lookup,+ remove,+ extend,+ extends,+ merge,+ mergeEnvs,+ singleton,+ keys,+ fromList,+ toList,+) where++import Prelude hiding (lookup)++import Nix.Type.Type++import Data.Foldable hiding (toList)+import qualified Data.Map as Map+import Data.Semigroup++-------------------------------------------------------------------------------+-- Typing Environment+-------------------------------------------------------------------------------++newtype Env = TypeEnv { types :: Map.Map Name [Scheme] }+ deriving (Eq, Show)++empty :: Env+empty = TypeEnv Map.empty++extend :: Env -> (Name, [Scheme]) -> Env+extend env (x, s) = env { types = Map.insert x s (types env) }++remove :: Env -> Name -> Env+remove (TypeEnv env) var = TypeEnv (Map.delete var env)++extends :: Env -> [(Name, [Scheme])] -> Env+extends env xs =+ env { types = Map.union (Map.fromList xs) (types env) }++lookup :: Name -> Env -> Maybe [Scheme]+lookup key (TypeEnv tys) = Map.lookup key tys++merge :: Env -> Env -> Env+merge (TypeEnv a) (TypeEnv b) = TypeEnv (Map.union a b)++mergeEnvs :: [Env] -> Env+mergeEnvs = foldl' merge empty++singleton :: Name -> Scheme -> Env+singleton x y = TypeEnv (Map.singleton x [y])++keys :: Env -> [Name]+keys (TypeEnv env) = Map.keys env++fromList :: [(Name, [Scheme])] -> Env+fromList xs = TypeEnv (Map.fromList xs)++toList :: Env -> [(Name, [Scheme])]+toList (TypeEnv env) = Map.toList env++instance Semigroup Env where+ (<>) = merge++instance Monoid Env where+ mempty = empty+ mappend = merge
@@ -0,0 +1,612 @@+{-# LANGUAGE ExistentialQuantification #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeSynonymInstances #-}++{-# OPTIONS_GHC -Wno-name-shadowing #-}++module Nix.Type.Infer (+ Constraint(..),+ TypeError(..),+ InferError(..),+ Subst(..),+ inferTop+) where++import Control.Applicative+import Control.Arrow+import Control.Monad.Catch+import Control.Monad.Except+import Control.Monad.Logic+import Control.Monad.Reader+import Control.Monad.ST+import Control.Monad.State+import Data.Fix+import Data.Foldable+import qualified Data.HashMap.Lazy as M+import Data.List (delete, find, nub, intersect, (\\))+import Data.Map (Map)+import qualified Data.Map as Map+import Data.Maybe (fromJust)+import Data.STRef+import Data.Semigroup+import qualified Data.Set as Set+import Data.Text (Text)+import Nix.Atoms+import Nix.Convert+import Nix.Eval (MonadEval(..))+import qualified Nix.Eval as Eval+import Nix.Expr.Types+import Nix.Expr.Types.Annotated+import Nix.Scope+import Nix.Thunk+import qualified Nix.Type.Assumption as As+import Nix.Type.Env+import qualified Nix.Type.Env as Env+import Nix.Type.Type+import Nix.Utils++-------------------------------------------------------------------------------+-- Classes+-------------------------------------------------------------------------------++-- | Inference monad+newtype Infer s a = Infer+ { getInfer ::+ ReaderT (Set.Set TVar, Scopes (Infer s) (JThunk s))+ (StateT InferState (ExceptT InferError (ST s))) a+ }+ deriving (Functor, Applicative, Alternative, Monad, MonadPlus, MonadFix,+ MonadReader (Set.Set TVar, Scopes (Infer s) (JThunk s)),+ MonadState InferState, MonadError InferError)++-- | Inference state+newtype InferState = InferState { count :: Int }++-- | Initial inference state+initInfer :: InferState+initInfer = InferState { count = 0 }++data Constraint+ = EqConst Type Type+ | ExpInstConst Type Scheme+ | ImpInstConst Type (Set.Set TVar) Type+ deriving (Show, Eq, Ord)++newtype Subst = Subst (Map TVar Type)+ deriving (Eq, Ord, Show, Semigroup, Monoid)++class Substitutable a where+ apply :: Subst -> a -> a++instance Substitutable TVar where+ apply (Subst s) a = tv+ where t = TVar a+ (TVar tv) = Map.findWithDefault t a s++instance Substitutable Type where+ apply _ (TCon a) = TCon a+ apply s (TSet b a) = TSet b (M.map (apply s) a)+ apply s (TList a) = TList (map (apply s) a)+ apply (Subst s) t@(TVar a) = Map.findWithDefault t a s+ apply s (t1 `TArr` t2) = apply s t1 `TArr` apply s t2+ apply s (TMany ts) = TMany (map (apply s) ts)++instance Substitutable Scheme where+ apply (Subst s) (Forall as t) = Forall as $ apply s' t+ where s' = Subst $ foldr Map.delete s as++instance Substitutable Constraint where+ apply s (EqConst t1 t2) = EqConst (apply s t1) (apply s t2)+ apply s (ExpInstConst t sc) = ExpInstConst (apply s t) (apply s sc)+ apply s (ImpInstConst t1 ms t2) = ImpInstConst (apply s t1) (apply s ms) (apply s t2)++instance Substitutable a => Substitutable [a] where+ apply = map . apply++instance (Ord a, Substitutable a) => Substitutable (Set.Set a) where+ apply = Set.map . apply+++class FreeTypeVars a where+ ftv :: a -> Set.Set TVar++instance FreeTypeVars Type where+ ftv TCon{} = Set.empty+ ftv (TVar a) = Set.singleton a+ ftv (TSet _ a) = Set.unions (map ftv (M.elems a))+ ftv (TList a) = Set.unions (map ftv a)+ ftv (t1 `TArr` t2) = ftv t1 `Set.union` ftv t2+ ftv (TMany ts) = Set.unions (map ftv ts)++instance FreeTypeVars TVar where+ ftv = Set.singleton++instance FreeTypeVars Scheme where+ ftv (Forall as t) = ftv t `Set.difference` Set.fromList as++instance FreeTypeVars a => FreeTypeVars [a] where+ ftv = foldr (Set.union . ftv) Set.empty++instance (Ord a, FreeTypeVars a) => FreeTypeVars (Set.Set a) where+ ftv = foldr (Set.union . ftv) Set.empty+++class ActiveTypeVars a where+ atv :: a -> Set.Set TVar++instance ActiveTypeVars Constraint where+ atv (EqConst t1 t2) = ftv t1 `Set.union` ftv t2+ atv (ImpInstConst t1 ms t2) = ftv t1 `Set.union` (ftv ms `Set.intersection` ftv t2)+ atv (ExpInstConst t s) = ftv t `Set.union` ftv s++instance ActiveTypeVars a => ActiveTypeVars [a] where+ atv = foldr (Set.union . atv) Set.empty++data TypeError+ = UnificationFail Type Type+ | InfiniteType TVar Type+ | UnboundVariables [Text]+ | Ambigious [Constraint]+ | UnificationMismatch [Type] [Type]+ deriving (Eq, Show)++data InferError+ = TypeInferenceErrors [TypeError]+ | TypeInferenceAborted+ | forall s. Exception s => EvaluationError s++typeError :: MonadError InferError m => TypeError -> m ()+typeError err = throwError $ TypeInferenceErrors [err]++deriving instance Show InferError+instance Exception InferError++instance Semigroup InferError where+ x <> _ = x++instance Monoid InferError where+ mempty = TypeInferenceAborted+ mappend = (<>)++-------------------------------------------------------------------------------+-- Inference+-------------------------------------------------------------------------------++-- | Run the inference monad+runInfer' :: Infer s a -> ST s (Either InferError a)+runInfer' = runExceptT+ . (`evalStateT` initInfer)+ . (`runReaderT` (Set.empty, emptyScopes))+ . getInfer++runInfer :: (forall s. Infer s a) -> Either InferError a+runInfer m = runST (runInfer' m)++inferType :: Env -> NExpr -> Infer s [(Subst, Type)]+inferType env ex = do+ Judgment as cs t <- infer ex+ let unbounds = Set.fromList (As.keys as) `Set.difference`+ Set.fromList (Env.keys env)+ unless (Set.null unbounds) $+ typeError $ UnboundVariables (nub (Set.toList unbounds))+ let cs' = [ ExpInstConst t s+ | (x, ss) <- Env.toList env+ , s <- ss+ , t <- As.lookup x as]+ inferState <- get+ let eres = (`evalState` inferState) $ runSolver $ do+ subst <- solve (cs ++ cs')+ return (subst, subst `apply` t)+ case eres of+ Left errs -> throwError $ TypeInferenceErrors errs+ Right xs -> pure xs++-- | Solve for the toplevel type of an expression in a given environment+inferExpr :: Env -> NExpr -> Either InferError [Scheme]+inferExpr env ex = case runInfer (inferType env ex) of+ Left err -> Left err+ Right xs -> Right $ map (\(subst, ty) -> closeOver (subst `apply` ty)) xs++-- | Canonicalize and return the polymorphic toplevel type.+closeOver :: Type -> Scheme+closeOver = normalize . generalize Set.empty++extendMSet :: TVar -> Infer s a -> Infer s a+extendMSet x = Infer . local (first (Set.insert x)) . getInfer++letters :: [String]+letters = [1..] >>= flip replicateM ['a'..'z']++fresh :: MonadState InferState m => m Type+fresh = do+ s <- get+ put s{count = count s + 1}+ return $ TVar $ TV (letters !! count s)++instantiate :: MonadState InferState m => Scheme -> m Type+instantiate (Forall as t) = do+ as' <- mapM (const fresh) as+ let s = Subst $ Map.fromList $ zip as as'+ return $ apply s t++generalize :: Set.Set TVar -> Type -> Scheme+generalize free t = Forall as t+ where as = Set.toList $ ftv t `Set.difference` free++unops :: Type -> NUnaryOp -> [Constraint]+unops u1 = \case+ NNot -> [ EqConst u1 (typeFun [typeBool, typeBool]) ]+ NNeg -> [ EqConst u1 (TMany [ typeFun [typeInt, typeInt]+ , typeFun [typeFloat, typeFloat] ]) ]++binops :: Type -> NBinaryOp -> [Constraint]+binops u1 = \case+ NApp -> [] -- this is handled separately++ -- Equality tells you nothing about the types, because any two types are+ -- allowed.+ NEq -> []+ NNEq -> []++ NGt -> inequality+ NGte -> inequality+ NLt -> inequality+ NLte -> inequality++ NAnd -> [ EqConst u1 (typeFun [typeBool, typeBool, typeBool]) ]+ NOr -> [ EqConst u1 (typeFun [typeBool, typeBool, typeBool]) ]+ NImpl -> [ EqConst u1 (typeFun [typeBool, typeBool, typeBool]) ]++ NConcat -> [ EqConst u1 (TMany [ typeFun [typeList, typeList, typeList]+ , typeFun [typeList, typeNull, typeList]+ , typeFun [typeNull, typeList, typeList]+ ]) ]++ NUpdate -> [ EqConst u1 (TMany [ typeFun [typeSet, typeSet, typeSet]+ , typeFun [typeSet, typeNull, typeSet]+ , typeFun [typeNull, typeSet, typeSet]+ ]) ]++ NPlus -> [ EqConst u1 (TMany [ typeFun [typeInt, typeInt, typeInt]+ , typeFun [typeFloat, typeFloat, typeFloat]+ , typeFun [typeInt, typeFloat, typeFloat]+ , typeFun [typeFloat, typeInt, typeFloat]+ , typeFun [typeString, typeString, typeString]+ , typeFun [typePath, typePath, typePath]+ , typeFun [typeString, typeString, typePath]+ ]) ]+ NMinus -> arithmetic+ NMult -> arithmetic+ NDiv -> arithmetic+ where+ inequality =+ [ EqConst u1 (TMany [ typeFun [typeInt, typeInt, typeBool]+ , typeFun [typeFloat, typeFloat, typeBool]+ , typeFun [typeInt, typeFloat, typeBool]+ , typeFun [typeFloat, typeInt, typeBool]+ ]) ]++ arithmetic =+ [ EqConst u1 (TMany [ typeFun [typeInt, typeInt, typeInt]+ , typeFun [typeFloat, typeFloat, typeFloat]+ , typeFun [typeInt, typeFloat, typeFloat]+ , typeFun [typeFloat, typeInt, typeFloat]+ ]) ]++instance MonadVar (Infer s) where+ type Var (Infer s) = STRef s++ newVar x = Infer $ lift $ lift $ lift $ newSTRef x+ readVar x = Infer $ lift $ lift $ lift $ readSTRef x+ writeVar x y = Infer $ lift $ lift $ lift $ writeSTRef x y+ atomicModifyVar x f = Infer $ lift $ lift $ lift $ do+ res <- snd . f <$> readSTRef x+ _ <- modifySTRef x (fst . f)+ return res++newtype JThunk s = JThunk (Thunk (Infer s) (Judgment s))++instance MonadThrow (Infer s) where+ throwM = throwError . EvaluationError++instance MonadCatch (Infer s) where+ catch m h = catchError m $ \case+ EvaluationError e ->+ maybe (error $ "Exception was not an exception: " ++ show e) h+ (fromException (toException e))+ err -> error $ "Unexpected error: " ++ show err++instance MonadThunk (Judgment s) (JThunk s) (Infer s) where+ thunk = fmap JThunk . buildThunk++ force (JThunk t) f = catch (forceThunk t f) $ \(_ :: ThunkLoop) ->+ -- If we have a thunk loop, we just don't know the type.+ f =<< Judgment As.empty [] <$> fresh++ value = JThunk . valueRef++instance MonadEval (Judgment s) (Infer s) where+ freeVariable var = do+ tv <- fresh+ return $ Judgment (As.singleton var tv) [] tv++ -- If we fail to look up an attribute, we just don't know the type.+ attrMissing _ _ = Judgment As.empty [] <$> fresh++ evaledSym _ = pure++ evalCurPos =+ return $ Judgment As.empty [] $ TSet False $ M.fromList+ [ ("file", typePath)+ , ("line", typeInt)+ , ("col", typeInt) ]++ evalConstant c = return $ Judgment As.empty [] (go c)+ where+ go = \case+ NInt _ -> typeInt+ NFloat _ -> typeFloat+ NBool _ -> typeBool+ NNull -> typeNull++ evalString = const $ return $ Judgment As.empty [] typeString+ evalLiteralPath = const $ return $ Judgment As.empty [] typePath+ evalEnvPath = const $ return $ Judgment As.empty [] typePath++ evalUnary op (Judgment as1 cs1 t1) = do+ tv <- fresh+ return $ Judgment as1 (cs1 ++ unops (t1 `TArr` tv) op) tv++ evalBinary op (Judgment as1 cs1 t1) e2 = do+ Judgment as2 cs2 t2 <- e2+ tv <- fresh+ return $ Judgment+ (as1 `As.merge` as2)+ (cs1 ++ cs2 ++ binops (t1 `TArr` (t2 `TArr` tv)) op)+ tv++ evalWith = Eval.evalWithAttrSet++ evalIf (Judgment as1 cs1 t1) t f = do+ Judgment as2 cs2 t2 <- t+ Judgment as3 cs3 t3 <- f+ return $ Judgment+ (as1 `As.merge` as2 `As.merge` as3)+ (cs1 ++ cs2 ++ cs3 ++ [EqConst t1 typeBool, EqConst t2 t3])+ t2++ evalAssert (Judgment as1 cs1 t1) body = do+ Judgment as2 cs2 t2 <- body+ return $ Judgment+ (as1 `As.merge` as2)+ (cs1 ++ cs2 ++ [EqConst t1 typeBool])+ t2++ evalApp (Judgment as1 cs1 t1) e2 = do+ Judgment as2 cs2 t2 <- e2+ tv <- fresh+ return $ Judgment+ (as1 `As.merge` as2)+ (cs1 ++ cs2 ++ [EqConst t1 (t2 `TArr` tv)])+ tv++ evalAbs (Param x) k = do+ tv@(TVar a) <- fresh+ ((), Judgment as cs t) <-+ extendMSet a (k (pure (Judgment (As.singleton x tv) [] tv))+ (\_ b -> ((),) <$> b))+ return $ Judgment+ (as `As.remove` x)+ (cs ++ [EqConst t' tv | t' <- As.lookup x as])+ (tv `TArr` t)++ evalAbs (ParamSet ps variadic _mname) k = do+ js <- fmap concat $ forM ps $ \(name, _) -> do+ tv <- fresh+ pure [(name, tv)]++ let (env, tys) = (\f -> foldl' f (As.empty, M.empty) js)+ $ \(as1, t1) (k, t) ->+ (as1 `As.merge` As.singleton k t, M.insert k t t1)+ arg = pure $ Judgment env [] (TSet True tys)+ call = k arg $ \args b -> (args,) <$> b+ names = map fst js++ (args, Judgment as cs t) <-+ foldr (\(_, TVar a) -> extendMSet a) call js++ ty <- TSet variadic <$> traverse (inferredType <$>) args++ return $ Judgment+ (foldl' As.remove as names)+ (cs ++ [ EqConst t' (tys M.! x)+ | x <- names+ , t' <- As.lookup x as])+ (ty `TArr` t)++ evalError = throwError . EvaluationError++data Judgment s = Judgment+ { assumptions :: As.Assumption+ , typeConstraints :: [Constraint]+ , inferredType :: Type+ }+ deriving Show++instance FromValue (Text, DList Text) (Infer s) (Judgment s) where+ fromValueMay _ = return Nothing+ fromValue _ = error "Unused"++instance FromValue (AttrSet (JThunk s), AttrSet SourcePos) (Infer s) (Judgment s) where+ fromValueMay (Judgment _ _ (TSet _ xs)) = do+ let sing _ = Judgment As.empty []+ pure $ Just (M.mapWithKey (\k v -> value (sing k v)) xs, M.empty)+ fromValueMay _ = pure Nothing+ fromValue = fromValueMay >=> \case+ Just v -> pure v+ Nothing -> pure (M.empty, M.empty)++instance ToValue (AttrSet (JThunk s), AttrSet SourcePos) (Infer s) (Judgment s) where+ toValue (xs, _) = Judgment+ <$> foldrM go As.empty xs+ <*> (concat <$> traverse (`force` (pure . typeConstraints)) xs)+ <*> (TSet True <$> traverse (`force` (pure . inferredType)) xs)+ where+ go x rest = force x $ \x' -> pure $ As.merge (assumptions x') rest++instance ToValue [JThunk s] (Infer s) (Judgment s) where+ toValue xs = Judgment+ <$> foldrM go As.empty xs+ <*> (concat <$> traverse (`force` (pure . typeConstraints)) xs)+ <*> (TList <$> traverse (`force` (pure . inferredType)) xs)+ where+ go x rest = force x $ \x' -> pure $ As.merge (assumptions x') rest++instance ToValue Bool (Infer s) (Judgment s) where+ toValue _ = pure $ Judgment As.empty [] typeBool++infer :: NExpr -> Infer s (Judgment s)+infer = cata Eval.eval++inferTop :: Env -> [(Text, NExpr)] -> Either InferError Env+inferTop env [] = Right env+inferTop env ((name, ex):xs) = case inferExpr env ex of+ Left err -> Left err+ Right ty -> inferTop (extend env (name, ty)) xs++normalize :: Scheme -> Scheme+normalize (Forall _ body) = Forall (map snd ord) (normtype body)+ where+ ord = zip (nub $ fv body) (map TV letters)++ fv (TVar a) = [a]+ fv (TArr a b) = fv a ++ fv b+ fv (TCon _) = []+ fv (TSet _ a) = concatMap fv (M.elems a)+ fv (TList a) = concatMap fv a+ fv (TMany ts) = concatMap fv ts++ normtype (TArr a b) = TArr (normtype a) (normtype b)+ normtype (TCon a) = TCon a+ normtype (TSet b a) = TSet b (M.map normtype a)+ normtype (TList a) = TList (map normtype a)+ normtype (TMany ts) = TMany (map normtype ts)+ normtype (TVar a) =+ case Prelude.lookup a ord of+ Just x -> TVar x+ Nothing -> error "type variable not in signature"++-------------------------------------------------------------------------------+-- Constraint Solver+-------------------------------------------------------------------------------++newtype Solver m a = Solver (LogicT (StateT [TypeError] m) a)+ deriving (Functor, Applicative, Alternative, Monad, MonadPlus,+ MonadLogic, MonadState [TypeError])++instance MonadTrans Solver where+ lift = Solver . lift . lift++instance Monad m => MonadError TypeError (Solver m) where+ throwError err = Solver $ lift (modify (err:)) >> mzero+ catchError _ _ = error "This is never used"++runSolver :: Monad m => Solver m a -> m (Either [TypeError] [a])+runSolver (Solver s) = do+ res <- runStateT (observeAllT s) []+ pure $ case res of+ (x:xs, _) -> Right (x:xs)+ (_, es) -> Left (nub es)++-- | The empty substitution+emptySubst :: Subst+emptySubst = mempty++-- | Compose substitutions+compose :: Subst -> Subst -> Subst+Subst s1 `compose` Subst s2 =+ Subst $ Map.map (apply (Subst s1)) s2 `Map.union` s1++unifyMany :: Monad m => [Type] -> [Type] -> Solver m Subst+unifyMany [] [] = return emptySubst+unifyMany (t1 : ts1) (t2 : ts2) =+ do su1 <- unifies t1 t2+ su2 <- unifyMany (apply su1 ts1) (apply su1 ts2)+ return (su2 `compose` su1)+unifyMany t1 t2 = throwError $ UnificationMismatch t1 t2++allSameType :: [Type] -> Bool+allSameType [] = True+allSameType [_] = True+allSameType (x:y:ys) = x == y && allSameType (y:ys)++unifies :: Monad m => Type -> Type -> Solver m Subst+unifies t1 t2 | t1 == t2 = return emptySubst+unifies (TVar v) t = v `bind` t+unifies t (TVar v) = v `bind` t+unifies (TList xs) (TList ys)+ | allSameType xs && allSameType ys = case (xs, ys) of+ (x:_, y:_) -> unifies x y+ _ -> return emptySubst+ | length xs == length ys = unifyMany xs ys+-- We assume that lists of different lengths containing various types cannot+-- be unified.+unifies t1@(TList _) t2@(TList _) = throwError $ UnificationFail t1 t2+unifies (TSet True _) (TSet True _) = return emptySubst+unifies (TSet False b) (TSet True s)+ | M.keys b `intersect` M.keys s == M.keys s = return emptySubst+unifies (TSet True s) (TSet False b)+ | M.keys b `intersect` M.keys s == M.keys b = return emptySubst+unifies (TSet False s) (TSet False b)+ | null (M.keys b \\ M.keys s) = return emptySubst+unifies (TArr t1 t2) (TArr t3 t4) = unifyMany [t1, t2] [t3, t4]+unifies (TMany t1s) t2 = considering t1s >>- unifies ?? t2+unifies t1 (TMany t2s) = considering t2s >>- unifies t1+unifies t1 t2 = throwError $ UnificationFail t1 t2++bind :: Monad m => TVar -> Type -> Solver m Subst+bind a t | t == TVar a = return emptySubst+ | occursCheck a t = throwError $ InfiniteType a t+ | otherwise = return (Subst $ Map.singleton a t)++occursCheck :: FreeTypeVars a => TVar -> a -> Bool+occursCheck a t = a `Set.member` ftv t++nextSolvable :: [Constraint] -> (Constraint, [Constraint])+nextSolvable xs = fromJust (find solvable (chooseOne xs))+ where+ chooseOne xs = [(x, ys) | x <- xs, let ys = delete x xs]++ solvable (EqConst{}, _) = True+ solvable (ExpInstConst{}, _) = True+ solvable (ImpInstConst _t1 ms t2, cs) =+ Set.null ((ftv t2 `Set.difference` ms) `Set.intersection` atv cs)++considering :: [a] -> Solver m a+considering xs = Solver $ LogicT $ \c n -> foldr c n xs++solve :: MonadState InferState m => [Constraint] -> Solver m Subst+solve [] = return emptySubst+solve cs = solve' (nextSolvable cs)+ where+ solve' (EqConst t1 t2, cs) =+ unifies t1 t2 >>- \su1 ->+ solve (apply su1 cs) >>- \su2 ->+ return (su2 `compose` su1)++ solve' (ImpInstConst t1 ms t2, cs) =+ solve (ExpInstConst t1 (generalize ms t2) : cs)++ solve' (ExpInstConst t s, cs) = do+ s' <- lift $ instantiate s+ solve (EqConst t s' : cs)
@@ -0,0 +1,40 @@+module Nix.Type.Type where++import qualified Data.HashMap.Lazy as M+import Data.Text (Text)+import Nix.Utils++newtype TVar = TV String+ deriving (Show, Eq, Ord)++data Type+ = TVar TVar -- type variable+ | TCon String -- known type+ | TSet Bool (AttrSet Type) -- heterogenous map, bool if variadic+ | TList [Type] -- heterogenous list+ | TArr Type Type -- type -> type+ | TMany [Type] -- variant type+ deriving (Show, Eq, Ord)++data Scheme = Forall [TVar] Type -- forall a b. a -> b+ deriving (Show, Eq, Ord)++-- This models a set that unifies with any other set.+typeSet :: Type+typeSet = TSet True M.empty++typeList :: Type+typeList = TList []++typeFun :: [Type] -> Type+typeFun = foldr1 TArr++typeInt, typeFloat, typeBool, typeString, typePath, typeNull :: Type+typeInt = TCon "integer"+typeFloat = TCon "float"+typeBool = TCon "boolean"+typeString = TCon "string"+typePath = TCon "path"+typeNull = TCon "null"++type Name = Text
@@ -0,0 +1,110 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TupleSections #-}++module Nix.Utils (module Nix.Utils, module X) where++import Control.Arrow ((&&&))+import Control.Monad+import Control.Monad.Fix+import qualified Data.Aeson as A+import qualified Data.Aeson.Encoding as A+import Data.Fix+import Data.HashMap.Lazy (HashMap)+import qualified Data.HashMap.Lazy as M+import Data.List (sortOn)+import Data.Monoid (Endo)+import Data.Text (Text)+import qualified Data.Vector as V+import Lens.Family2 as X+import Lens.Family2.Stock (_1, _2)++#if ENABLE_TRACING+import Debug.Trace as X+#else+import Prelude as X+trace :: String -> a -> a+trace = const id+traceM :: Monad m => String -> m ()+traceM = const (return ())+#endif++type DList a = Endo [a]++type AttrSet = HashMap Text++-- | An f-algebra defines how to reduced the fixed-point of a functor to a+-- value.+type Alg f a = f a -> a++type AlgM f m a = f a -> m a++-- | An "transform" here is a modification of a catamorphism.+type Transform f a = (Fix f -> a) -> Fix f -> a++(<&>) :: Functor f => f a -> (a -> c) -> f c+(<&>) = flip (<$>)++(??) :: Functor f => f (a -> b) -> a -> f b+fab ?? a = fmap ($ a) fab++loeb :: Functor f => f (f a -> a) -> f a+loeb x = go where go = fmap ($ go) x++loebM :: (MonadFix m, Traversable t) => t (t a -> m a) -> m (t a)+loebM f = mfix $ \a -> mapM ($ a) f++para :: Functor f => (f (Fix f, a) -> a) -> Fix f -> a+para f = f . fmap (id &&& para f) . unFix++paraM :: (Traversable f, Monad m) => (f (Fix f, a) -> m a) -> Fix f -> m a+paraM f = f <=< traverse (\x -> (x,) <$> paraM f x) . unFix++cataP :: Functor f => (Fix f -> f a -> a) -> Fix f -> a+cataP f x = f x . fmap (cataP f) . unFix $ x++cataPM :: (Traversable f, Monad m) => (Fix f -> f a -> m a) -> Fix f -> m a+cataPM f x = f x <=< traverse (cataPM f) . unFix $ x++transport :: Functor g => (forall x. f x -> g x) -> Fix f -> Fix g+transport f (Fix x) = Fix $ fmap (transport f) (f x)++-- | adi is Abstracting Definitional Interpreters:+--+-- https://arxiv.org/abs/1707.04755+--+-- Essentially, it does for evaluation what recursion schemes do for+-- representation: allows threading layers through existing structure, only+-- in this case through behavior.+adi :: Functor f => (f a -> a) -> ((Fix f -> a) -> Fix f -> a) -> Fix f -> a+adi f g = g (f . fmap (adi f g) . unFix)++adiM :: (Traversable t, Monad m)+ => (t a -> m a) -> ((Fix t -> m a) -> Fix t -> m a) -> Fix t -> m a+adiM f g = g ((f <=< traverse (adiM f g)) . unFix)++class Has a b where+ hasLens :: Lens' a b++instance Has a a where+ hasLens f = f++instance Has (a, b) a where+ hasLens = _1++instance Has (a, b) b where+ hasLens = _2++toEncodingSorted :: A.Value -> A.Encoding+toEncodingSorted = \case+ A.Object m ->+ A.pairs . mconcat+ . fmap (\(k, v) -> A.pair k $ toEncodingSorted v)+ . sortOn fst+ $ M.toList m+ A.Array l -> A.list toEncodingSorted $ V.toList l+ v -> A.toEncoding v
@@ -0,0 +1,346 @@+{-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternSynonyms #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}++{-# OPTIONS_GHC -Wno-missing-signatures #-}+{-# OPTIONS_GHC -Wno-missing-pattern-synonym-signatures #-}++module Nix.Value where++import Control.Monad+import Control.Monad.Catch+import Control.Monad.Trans.Class+import Control.Monad.Trans.Except+import qualified Data.Aeson as A+import Data.Align+import Data.Fix+import Data.HashMap.Lazy (HashMap)+import qualified Data.HashMap.Lazy as M+import Data.Hashable+import Data.Monoid (appEndo)+import Data.Text (Text)+import Data.These+import Data.Typeable (Typeable)+import GHC.Generics+import Lens.Family2+import Lens.Family2.Stock+import Lens.Family2.TH+import Nix.Atoms+import Nix.Expr.Types+import Nix.Expr.Types.Annotated+import Nix.Frames+import Nix.Scope+import Nix.Thunk+import Nix.Utils++-- | An 'NValue' is the most reduced form of an 'NExpr' after evaluation is+-- completed. 's' is related to the type of errors that might occur during+-- construction or use of a value.+data NValueF m r+ = NVConstantF NAtom+ -- | A string has a value and a context, which can be used to record what a+ -- string has been build from+ | NVStrF Text (DList Text)+ | NVPathF FilePath+ | NVListF [r]+ | NVSetF (AttrSet r) (AttrSet SourcePos)+ | NVClosureF (Params ()) (m (NValue m) -> m (NValue m))+ -- ^ A function is a closed set of parameters representing the "call+ -- signature", used at application time to check the type of arguments+ -- passed to the function. Since it supports default values which may+ -- depend on other values within the final argument set, this+ -- dependency is represented as a set of pending evaluations. The+ -- arguments are finally normalized into a set which is passed to the+ -- function.+ --+ -- Note that 'm r' is being used here because effectively a function+ -- and its set of default arguments is "never fully evaluated". This+ -- enforces in the type that it must be re-evaluated for each call.+ | NVBuiltinF String (m (NValue m) -> m (NValue m))+ -- ^ A builtin function is itself already in normal form. Also, it may+ -- or may not choose to evaluate its argument in the production of a+ -- result.+ deriving (Generic, Typeable, Functor, Foldable, Traversable)++-- | An 'NValueNF' is a fully evaluated value in normal form. An 'NValue m' is+-- a value in head normal form, where only the "top layer" has been+-- evaluated. An action of type 'm (NValue m)' is a pending evualation that+-- has yet to be performed. An 'NThunk m' is either a pending evaluation, or+-- a value in head normal form. A 'NThunkSet' is a set of mappings from keys+-- to thunks.++type NValueNF m = Fix (NValueF m) -- normal form+type ValueSet m = AttrSet (NThunk m)++data Provenance m = Provenance+ { _lexicalScope :: Scopes m (NThunk m)+ , _originExpr :: NExprLocF (Maybe (NValue m))+ -- ^ When calling the function x: x + 2 with argument x = 3, the+ -- 'originExpr' for the resulting value will be 3 + 2, while the+ -- 'contextExpr' will be @(x: x + 2) 3@, preserving not only the+ -- result of the call, but what was called and with what arguments.+ }++data NThunk m = NThunk+ { _thunkProvenance :: [Provenance m]+ , _baseThunk :: Thunk m (NValue m)+ }++data NValue m = NValue+ { _valueProvenance :: [Provenance m]+ , _baseValue :: NValueF m (NThunk m)+ }++addProvenance :: (NValue m -> Provenance m) -> NValue m -> NValue m+addProvenance f l@(NValue p v) = NValue (f l : p) v++pattern NVConstant x <- NValue _ (NVConstantF x)++nvConstant x = NValue [] (NVConstantF x)+nvConstantP p x = NValue [p] (NVConstantF x)++pattern NVStr s d <- NValue _ (NVStrF s d)++nvStr s d = NValue [] (NVStrF s d)+nvStrP p s d = NValue [p] (NVStrF s d)++pattern NVPath x <- NValue _ (NVPathF x)++nvPath x = NValue [] (NVPathF x)+nvPathP p x = NValue [p] (NVPathF x)++pattern NVList l <- NValue _ (NVListF l)++nvList l = NValue [] (NVListF l)+nvListP p l = NValue [p] (NVListF l)++pattern NVSet s x <- NValue _ (NVSetF s x)++nvSet s x = NValue [] (NVSetF s x)+nvSetP p s x = NValue [p] (NVSetF s x)++pattern NVClosure x f <- NValue _ (NVClosureF x f)++nvClosure x f = NValue [] (NVClosureF x f)+nvClosureP p x f = NValue [p] (NVClosureF x f)++pattern NVBuiltin name f <- NValue _ (NVBuiltinF name f)++nvBuiltin name f = NValue [] (NVBuiltinF name f)+nvBuiltinP p name f = NValue [p] (NVBuiltinF name f)++instance Show (NValueF m (Fix (NValueF m))) where+ showsPrec = flip go where+ go (NVConstantF atom) = showsCon1 "NVConstant" atom+ go (NVStrF txt ctxt) = showsCon2 "NVStr" txt (appEndo ctxt [])+ go (NVListF lst) = showsCon1 "NVList" lst+ go (NVSetF attrs _) = showsCon1 "NVSet" attrs+ go (NVClosureF p _) = showsCon1 "NVClosure" p+ go (NVPathF p) = showsCon1 "NVPath" p+ go (NVBuiltinF name _) = showsCon1 "NVBuiltin" name++ showsCon1 :: Show a => String -> a -> Int -> String -> String+ showsCon1 con a d =+ showParen (d > 10) $ showString (con ++ " ") . showsPrec 11 a++ showsCon2 :: (Show a, Show b)+ => String -> a -> b -> Int -> String -> String+ showsCon2 con a b d =+ showParen (d > 10)+ $ showString (con ++ " ")+ . showsPrec 11 a+ . showString " "+ . showsPrec 11 b++instance Eq (NValue m) where+ NVConstant (NFloat x) == NVConstant (NInt y) = x == fromInteger y+ NVConstant (NInt x) == NVConstant (NFloat y) = fromInteger x == y+ NVConstant (NInt x) == NVConstant (NInt y) = x == y+ NVConstant (NFloat x) == NVConstant (NFloat y) = x == y+ NVStr x _ == NVStr y _ = x < y+ NVPath x == NVPath y = x < y+ _ == _ = False++instance Ord (NValue m) where+ NVConstant (NFloat x) <= NVConstant (NInt y) = x <= fromInteger y+ NVConstant (NInt x) <= NVConstant (NFloat y) = fromInteger x <= y+ NVConstant (NInt x) <= NVConstant (NInt y) = x <= y+ NVConstant (NFloat x) <= NVConstant (NFloat y) = x <= y+ NVStr x _ <= NVStr y _ = x < y+ NVPath x <= NVPath y = x < y+ _ <= _ = False++checkComparable :: (Framed e m, Typeable m) => NValue m -> NValue m -> m ()+checkComparable x y = case (x, y) of+ (NVConstant (NFloat _), NVConstant (NInt _)) -> pure ()+ (NVConstant (NInt _), NVConstant (NFloat _)) -> pure ()+ (NVConstant (NInt _), NVConstant (NInt _)) -> pure ()+ (NVConstant (NFloat _), NVConstant (NFloat _)) -> pure ()+ (NVStr _ _, NVStr _ _) -> pure ()+ (NVPath _, NVPath _) -> pure ()+ _ -> throwError $ Comparison x y++builtin :: Monad m+ => String -> (m (NValue m) -> m (NValue m)) -> m (NValue m)+builtin name f = return $ nvBuiltin name f++builtin2 :: Monad m+ => String -> (m (NValue m) -> m (NValue m) -> m (NValue m))+ -> m (NValue m)+builtin2 name f = builtin name (builtin name . f)++builtin3 :: Monad m+ => String+ -> (m (NValue m) -> m (NValue m) -> m (NValue m) -> m (NValue m))+ -> m (NValue m)+builtin3 name f =+ builtin name $ \a -> builtin name $ \b -> builtin name $ \c -> f a b c++isClosureNF :: Monad m => NValueNF m -> Bool+isClosureNF (Fix NVClosureF {}) = True+isClosureNF _ = False++thunkEq :: MonadThunk (NValue m) (NThunk m) m+ => NThunk m -> NThunk m -> m Bool+thunkEq lt rt = force lt $ \lv -> force rt $ \rv -> valueEq lv rv++-- | Checks whether two containers are equal, using the given item equality+-- predicate. If there are any item slots that don't match between the two+-- containers, the result will be False.+alignEqM+ :: (Align f, Traversable f, Monad m)+ => (a -> b -> m Bool)+ -> f a+ -> f b+ -> m Bool+alignEqM eq fa fb = fmap (either (const False) (const True)) $ runExceptT $ do+ pairs <- forM (Data.Align.align fa fb) $ \case+ These a b -> return (a, b)+ _ -> throwE ()+ forM_ pairs $ \(a, b) -> guard =<< lift (eq a b)++isDerivation :: MonadThunk (NValue m) (NThunk m) m+ => AttrSet (NThunk m) -> m Bool+isDerivation m = case M.lookup "type" m of+ Nothing -> pure False+ Just t -> force t $ valueEq (nvStr "derivation" mempty)++valueEq :: MonadThunk (NValue m) (NThunk m) m+ => NValue m -> NValue m -> m Bool+valueEq l r = case (l, r) of+ (NVConstant lc, NVConstant rc) -> pure $ lc == rc+ (NVStr ls _, NVStr rs _) -> pure $ ls == rs+ (NVStr ls _, NVConstant NNull) -> pure $ ls == ""+ (NVConstant NNull, NVStr rs _) -> pure $ "" == rs+ (NVList ls, NVList rs) -> alignEqM thunkEq ls rs+ (NVSet lm _, NVSet rm _) -> do+ let compareAttrs = alignEqM thunkEq lm rm+ isDerivation lm >>= \case+ True -> isDerivation rm >>= \case+ True | Just lp <- M.lookup "outPath" lm+ , Just rp <- M.lookup "outPath" rm+ -> thunkEq lp rp+ _ -> compareAttrs+ _ -> compareAttrs+ (NVPath lp, NVPath rp) -> pure $ lp == rp+ _ -> pure False++data ValueType+ = TInt+ | TFloat+ | TBool+ | TNull+ | TString+ | TList+ | TSet+ | TClosure+ | TPath+ | TBuiltin+ deriving Show++valueType :: NValueF m r -> ValueType+valueType = \case+ NVConstantF a -> case a of+ NInt _ -> TInt+ NFloat _ -> TFloat+ NBool _ -> TBool+ NNull -> TNull+ NVStrF {} -> TString+ NVListF {} -> TList+ NVSetF {} -> TSet+ NVClosureF {} -> TClosure+ NVPathF {} -> TPath+ NVBuiltinF {} -> TBuiltin++describeValue :: ValueType -> String+describeValue = \case+ TInt -> "an integer"+ TFloat -> "a float"+ TBool -> "a boolean"+ TNull -> "a null"+ TString -> "a string"+ TList -> "a list"+ TSet -> "an attr set"+ TClosure -> "a function"+ TPath -> "a path"+ TBuiltin -> "a builtin function"++instance Show (NValueF m (NThunk m)) where+ show = show . describeValue . valueType++instance Show (NValue m) where+ show (NValue _ v) = show v++instance Show (NThunk m) where+ show (NThunk _ (Value v)) = show v+ show (NThunk _ _) = "<thunk>"++data ValueFrame m+ = ForcingThunk+ | ConcerningValue (NValue m)+ | Comparison (NValue m) (NValue m)+ | Addition (NValue m) (NValue m)+ | Multiplication (NValue m) (NValue m)+ | Division (NValue m) (NValue m)+ | Coercion ValueType ValueType+ | CoercionToJsonNF (NValueNF m)+ | CoercionFromJson A.Value+ | ExpectationNF ValueType (NValueNF m)+ | Expectation ValueType (NValue m)+ deriving (Show, Typeable)++instance Typeable m => Exception (ValueFrame m)++$(makeTraversals ''NValueF)+$(makeLenses ''Provenance)+$(makeLenses ''NThunk)+$(makeLenses ''NValue)++alterF :: (Eq k, Hashable k, Functor f)+ => (Maybe v -> f (Maybe v)) -> k -> HashMap k v -> f (HashMap k v)+alterF f k m = f (M.lookup k m) <&> \case+ Nothing -> M.delete k m+ Just v -> M.insert k v m++hashAt :: VarName -> Lens' (AttrSet v) (Maybe v)+hashAt = flip alterF++key :: Applicative f => VarName -> LensLike' f (NValue m) (Maybe (NThunk m))+key k = baseValue._NVSetF._1.hashAt k
@@ -0,0 +1,54 @@+{-# LANGUAGE LambdaCase #-}++module Nix.XML where++import Data.Fix+import qualified Data.HashMap.Lazy as M+import Data.List+import Data.Ord+import qualified Data.Text as Text+import Nix.Atoms+import Nix.Expr.Types+import Nix.Value+import Text.XML.Light++toXML :: Functor m => NValueNF m -> String+toXML = (.) ((++ "\n") .+ ("<?xml version='1.0' encoding='utf-8'?>\n" ++) .+ ppElement .+ (\e -> Element (unqual "expr") [] [Elem e] Nothing))+ $ cata+ $ \case+ NVConstantF a -> case a of+ NInt n -> mkElem "int" "value" (show n)+ NFloat f -> mkElem "float" "value" (show f)+ NBool b -> mkElem "bool" "value" (if b then "true" else "false")+ NNull -> Element (unqual "null") [] [] Nothing++ NVStrF t _ -> mkElem "string" "value" (Text.unpack t)+ NVListF l -> Element (unqual "list") [] (Elem <$> l) Nothing++ NVSetF s _ -> Element (unqual "attrs") []+ (map (\(k, v) -> Elem (Element (unqual "attr")+ [Attr (unqual "name") (Text.unpack k)]+ [Elem v] Nothing))+ (sortBy (comparing fst) $ M.toList s)) Nothing++ NVClosureF p _ -> Element (unqual "function") [] (paramsXML p) Nothing+ NVPathF fp -> mkElem "path" "value" fp+ NVBuiltinF name _ -> mkElem "function" "name" name++mkElem :: String -> String -> String -> Element+mkElem n a v = Element (unqual n) [Attr (unqual a) v] [] Nothing++paramsXML :: Params r -> [Content]+paramsXML (Param name) =+ [Elem $ mkElem "varpat" "name" (Text.unpack name)]+paramsXML (ParamSet s b mname) =+ [Elem $ Element (unqual "attrspat") (battr ++ nattr) (paramSetXML s) Nothing]+ where+ battr = [ Attr (unqual "ellipsis") "1" | b ]+ nattr = maybe [] ((:[]) . Attr (unqual "name") . Text.unpack) mname++paramSetXML :: ParamSet r -> [Content]+paramSetXML = map (\(k,_) -> Elem $ mkElem "attr" "name" (Text.unpack k))
@@ -1,51 +1,291 @@-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-}-module EvalTests (tests) where+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE UndecidableInstances #-} -import Data.Fix+{-# OPTIONS_GHC -Wno-missing-signatures -Wno-orphans #-} -import Test.Tasty-import Test.Tasty.HUnit-import Test.Tasty.TH+module EvalTests (tests, genEvalCompareTests) where -import Nix.Eval-import Nix.Parser-import Nix.Expr+import Control.Monad (when)+import Control.Monad.IO.Class+import qualified Data.HashMap.Lazy as M+import Data.Maybe (isJust)+import Data.String.Interpolate.IsString+import Data.Text (Text)+import Data.Time+import Nix+import qualified System.Directory as D+import System.Environment+import System.FilePath+import Test.Tasty+import Test.Tasty.HUnit+import Test.Tasty.TH+import TestCommon -import Data.Monoid (Monoid(..))-import Prelude (String)+case_basic_sum =+ constantEqualText "2" "1 + 1" -case_basic_sum :: Assertion-case_basic_sum = constantEqualStr "2" "1 + 1"+case_basic_div =+ constantEqualText "3" "builtins.div 6 2" -case_basic_function :: Assertion-case_basic_function = constantEqualStr "2" "(a: a) 2"+case_basic_function =+ constantEqualText "2" "(a: a) 2" -case_set_attr :: Assertion-case_set_attr = constantEqualStr "2" "{ a = 2; }.a"+case_set_attr =+ constantEqualText "2" "{ a = 2; }.a" -case_function_set_arg :: Assertion-case_function_set_arg = constantEqualStr "2" "({ a }: 2) { a = 1; }"+case_function_set_arg =+ constantEqualText "2" "({ a }: 2) { a = 1; }" -case_function_set_two_arg :: Assertion-case_function_set_two_arg = constantEqualStr "2" "({ a, b ? 3 }: b - a) { a = 1; }"+case_function_set_two_arg =+ constantEqualText "2" "({ a, b ? 3 }: b - a) { a = 1; }" --- case_function_set_two_arg_default_scope :: Assertion--- case_function_set_two_arg_default_scope = constantEqualStr "2" "({ a, b ? a * 3 }: b - a) { a = 1; }"+case_function_set_two_arg_default_scope =+ constantEqualText "2" "({ x ? 1, y ? x * 3 }: y - x) {}" +case_function_default_env =+ constantEqualText "2" "let default = 2; in ({ a ? default }: a) {}"++case_function_definition_uses_environment =+ constantEqualText "3" "let f = (let a=1; in x: x+a); in f 2"++case_function_atpattern =+ -- jww (2018-05-09): This should be constantEqualText+ constantEqualText' "2" "(({a}@attrs:attrs) {a=2;}).a"++case_function_ellipsis =+ -- jww (2018-05-09): This should be constantEqualText+ constantEqualText' "2" "(({a, ...}@attrs:attrs) {a=0; b=2;}).b"++case_function_default_value_not_in_atpattern =+ constantEqualText "false" "({a ? 2}@attrs: attrs ? a) {}"++case_function_arg_shadowing =+ constantEqualText "6" "(y: y: x: x: x + y) 1 2 3 4"++case_function_recursive_args =+ constantEqualText "2" "({ x ? 1, y ? x * 3}: y - x) {}"++case_function_recursive_sets =+ constantEqualText "[ [ 6 4 100 ] 4 ]" [i|+ let x = rec {++ y = 2;+ z = { w = 4; };+ v = rec {+ u = 6;+ t = [ u z.w s ];+ };++ }; s = 100; in [ x.v.t x.z.w ]+ |]++case_nested_with =+ constantEqualText "2" "with { x = 1; }; with { x = 2; }; x"++case_match_failure_null =+ constantEqualText "null" "builtins.match \"ab\" \"abc\""++case_inherit_in_rec_set =+ constantEqualText "1" "let x = 1; in (rec { inherit x; }).x"++case_lang_version =+ constantEqualText "5" "builtins.langVersion"++case_rec_set_attr_path_simpl =+ constantEqualText "123" [i|+ let x = rec {+ foo.number = 123;+ foo.function = y: foo.number;+ }; in x.foo.function 1+ |]++case_inherit_from_set_has_no_scope =+ constantEqualText' "false" [i|+ (builtins.tryEval (+ let x = 1;+ y = { z = 2; };+ in { inherit (y) x; }.x+ )).success+ |]++case_unsafegetattrpos1 =+ constantEqualText "[ 6 21 ]" [i|+ let e = 1;+ f = 1;+ t = {};+ s = {+ inherit t e f;+ a = 1;+ "b" = 2;+ c.d = 3;+ };+ p = builtins.unsafeGetAttrPos "e" s; in+ [ p.line p.column ]+ |]++case_unsafegetattrpos2 =+ constantEqualText "[ 6 21 ]" [i|+ let e = 1;+ f = 1;+ t = {};+ s = {+ inherit t e f;+ a = 1;+ "b" = 2;+ c.d = 3;+ };+ p = builtins.unsafeGetAttrPos "f" s; in+ [ p.line p.column ]+ |]++case_unsafegetattrpos3 =+ constantEqualText "[ 7 13 ]" [i|+ let e = 1;+ f = 1;+ t = {};+ s = {+ inherit t e f;+ a = 1;+ "b" = 2;+ c.d = 3;+ };+ p = builtins.unsafeGetAttrPos "a" s; in+ [ p.line p.column ]+ |]++case_unsafegetattrpos4 =+ constantEqualText "[ 8 13 ]" [i|+ let e = 1;+ f = 1;+ t = {};+ s = {+ inherit t e f;+ a = 1;+ "b" = 2;+ c.d = 3;+ };+ p = builtins.unsafeGetAttrPos "b" s; in+ [ p.line p.column ]+ |]++-- jww (2018-05-09): These two are failing but they shouldn't be++-- case_unsafegetattrpos5 =+-- constantEqualText "[ 7 13 ]" [i|+-- let e = 1;+-- f = 1;+-- t = {};+-- s = {+-- inherit t e f;+-- a = 1;+-- "b" = 2;+-- c.d = 3;+-- };+-- p = builtins.unsafeGetAttrPos "c.d" s; in+-- [ p.line p.column ]+-- |]++-- case_unsafegetattrpos6 =+-- constantEqualText "[ 7 13 ]" [i|+-- let e = 1;+-- f = 1;+-- t = {};+-- s = {+-- inherit t e f;+-- a = 1;+-- "b" = 2;+-- c.d = 3;+-- };+-- p = builtins.unsafeGetAttrPos "d" s; in+-- [ p.line p.column ]+-- |]++case_fixed_points =+ constantEqualText [i|[+ {+ foobar = "foobar";+ foo = "foo";+ bar = "bar";+ }+ {+ foobar = "foo + bar";+ foo = "foo + ";+ bar = "bar";+ }+]|] [i|+ let+ fix = f: let x = f x; in x;+ extends = f: rattrs: self:+ let super = rattrs self; in super // f self super;+ f = self: { foo = "foo";+ bar = "bar";+ foobar = self.foo + self.bar; };+ g = self: super: { foo = super.foo + " + "; };+ in [ (fix f) (fix (extends g f)) ]+|]++case_fixed_points_and_fold =+ constantEqualText [i|[ {} {} ]|] [i|+let+ extends = f: rattrs: self:+ let super = rattrs self; in super // f self super;+ flip = f: a: b: f b a;+ toFixFold = builtins.foldl' (flip extends) (self: {}) ([(self: super: {})]);+ toFix = extends (self: super: {}) (self: {});+ fix = f: let x = f x; in x;+in [ (fix toFixFold) (fix toFix) ]+|]++-- jww (2018-05-02): This constantly changes!+-- case_placeholder =+-- constantEqualText+-- "\"/1rz4g4znpzjwh1xymhjpm42vipw92pr73vdgl6xs1hycac8kf2n9\""+-- "builtins.placeholder \"out\""++-----------------------+ tests :: TestTree tests = $testGroupGenerator ------------------------+genEvalCompareTests = do+ files <- filter ((==".nix") . takeExtension) <$> D.listDirectory testDir+ return $ testGroup "Eval comparison tests" $ map mkTestCase files+ where+ testDir = "tests/eval-compare"+ mkTestCase f = testCase f $ assertEvalFileMatchesNix (testDir </> f) -constantEqual :: NExpr -> NExpr -> Assertion+instance (Show r, Show (NValueF m r), Eq r) => Eq (NValueF m r) where+ NVConstantF x == NVConstantF y = x == y+ NVStrF x _ == NVStrF y _ = x == y+ NVListF x == NVListF y = and (zipWith (==) x y)+ NVSetF x _ == NVSetF y _ =+ M.keys x == M.keys y &&+ and (zipWith (==) (M.elems x) (M.elems y))+ x == y = error $ "Need to add comparison for values: "+ ++ show x ++ " == " ++ show y++constantEqual :: NExprLoc -> NExprLoc -> Assertion constantEqual a b = do- Fix (NVConstant a') <- evalExpr a (Fix (NVSet mempty))- Fix (NVConstant b') <- evalExpr b (Fix (NVSet mempty))+ time <- liftIO getCurrentTime+ let opts = defaultOptions time+ -- putStrLn =<< lint (stripAnnotation a)+ a' <- runLazyM opts $ normalForm =<< nixEvalExprLoc Nothing a+ -- putStrLn =<< lint (stripAnnotation b)+ b' <- runLazyM opts $ normalForm =<< nixEvalExprLoc Nothing b assertEqual "" a' b' -constantEqualStr :: String -> String -> Assertion-constantEqualStr a b =- let Success a' = parseNixString a- Success b' = parseNixString b- in constantEqual a' b'+constantEqualText' :: Text -> Text -> Assertion+constantEqualText' a b = do+ let Success a' = parseNixTextLoc a+ Success b' = parseNixTextLoc b+ constantEqual a' b'++constantEqualText :: Text -> Text -> Assertion+constantEqualText a b = do+ constantEqualText' a b+ mres <- liftIO $ lookupEnv "MATCHING_TESTS"+ when (isJust mres) $+ assertEvalMatchesNix b
@@ -1,18 +1,104 @@-module Main where+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE OverloadedStrings #-} -import Test.Tasty+module Main where -import qualified ParserTests+import Control.DeepSeq+import qualified Control.Exception as Exc+import Control.Monad+import Control.Monad.IO.Class+import Data.Fix+import Data.List (isInfixOf)+import Data.Maybe (isJust, fromMaybe)+import Data.String.Interpolate.IsString+import Data.Text (unpack)+import Data.Time import qualified EvalTests-import qualified ShorthandTests+import qualified Nix+import Nix.Exec+import Nix.Expr.Types+import Nix.Options+import Nix.Parser+import Nix.Value+import qualified NixLanguageTests+import qualified ParserTests import qualified PrettyTests+import qualified PrettyParseTests+import System.Directory+import System.Environment+import System.FilePath.Glob+import System.Posix.Files+import System.Process+import Test.Tasty+import Test.Tasty.HUnit -import Prelude (IO, ($))+cabalCorrectlyGenerated :: Assertion+cabalCorrectlyGenerated = do+ output <- readCreateProcess (shell "hpack") ""+ when ("modified manually" `isInfixOf` output) $+ errorWithoutStackTrace+ "Edit package.yaml and re-generate hnix.cabal by running \"hpack\"" +ensureLangTestsPresent :: Assertion+ensureLangTestsPresent = do+ exist <- fileExist "data/nix/tests/local.mk"+ unless exist $+ errorWithoutStackTrace $ unlines+ [ "Directory data/nix does not have any files."+ , "Did you forget to run"+ ++ " \"git submodule update --init --recursive\"?" ]++ensureNixpkgsCanParse :: Assertion+ensureNixpkgsCanParse =+ consider "default.nix" (parseNixFile "default.nix") $ \case+ Fix (NAbs (ParamSet params _ _) _) -> do+ let rev = getString "rev" params+ sha256 = getString "sha256" params+ consider "fetchTarball expression" (pure $ parseNixTextLoc [i|+ builtins.fetchTarball {+ url = "https://github.com/NixOS/nixpkgs/archive/#{rev}.tar.gz";+ sha256 = "#{sha256}";+ }|]) $ \expr -> do+ NVStr dir _ <- do+ time <- liftIO getCurrentTime+ runLazyM (defaultOptions time) $ Nix.nixEvalExprLoc Nothing expr+ files <- globDir1 (compile "**/*.nix") (unpack dir)+ forM_ files $ \file ->+ -- Parse and deepseq the resulting expression tree, to ensure the+ -- parser is fully executed.+ consider file (parseNixFileLoc file) $ Exc.evaluate . force+ v -> error $ "Unexpected parse from default.nix: " ++ show v+ where+ getExpr k m = let Just (Just r) = lookup k m in r+ getString k m =+ let Fix (NStr (DoubleQuoted [Plain str])) = getExpr k m in str++ consider path action k = action >>= \case+ Failure err -> errorWithoutStackTrace $+ "Parsing " ++ path ++ " failed: " ++ show err+ Success expr -> k expr+ main :: IO ()-main = defaultMain $ testGroup "hnix"- [ ParserTests.tests- , EvalTests.tests- , ShorthandTests.tests- , PrettyTests.tests- ]+main = do+ nixLanguageTests <- NixLanguageTests.genTests+ evalComparisonTests <- EvalTests.genEvalCompareTests+ nixpkgsTestsEnv <- lookupEnv "NIXPKGS_TESTS"+ prettyTestsEnv <- lookupEnv "PRETTY_TESTS"++ pwd <- getCurrentDirectory+ setEnv "NIX_REMOTE" ("local?root=" ++ pwd ++ "/")++ defaultMain $ testGroup "hnix" $+ [ testCase "hnix.cabal correctly generated" cabalCorrectlyGenerated ] +++ [ ParserTests.tests+ , EvalTests.tests+ , PrettyTests.tests ] +++ [ PrettyParseTests.tests (read (fromMaybe "0" prettyTestsEnv)) ] +++ [ evalComparisonTests ] +++ [ testCase "Nix language tests present" ensureLangTestsPresent+ , nixLanguageTests ] +++ [ testCase "Nixpkgs parses without errors" ensureNixpkgsCanParse+ | isJust nixpkgsTestsEnv ]+
@@ -0,0 +1,159 @@+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ScopedTypeVariables #-}++module NixLanguageTests (genTests) where++import Control.Arrow ((&&&))+import Control.Exception+import Control.Monad+import Control.Monad.IO.Class+import Control.Monad.ST+import Data.List (delete, sort)+import Data.List.Split (splitOn)+import Data.Map (Map)+import qualified Data.Map as Map+import qualified Data.Text as Text+import qualified Data.Text.IO as Text+import Data.Time+import GHC.Exts+import Nix.Lint+import Nix.Options+import Nix.Options.Parser+import Nix.Parser+import Nix.Pretty+import Nix.Utils+import Nix.XML+import qualified Options.Applicative as Opts+import System.Environment+import System.FilePath+import System.FilePath.Glob (compile, globDir1)+import Test.Tasty+import Test.Tasty.HUnit+import TestCommon++{-+From (git://nix)/tests/lang.sh we see that++ lang/parse-fail-*.nix -> parsing should fail+ lang/parse-okay-*.nix -> parsing should succeed+ lang/eval-fail-*.nix -> eval should fail++ lang/eval-okay-*.{nix,xml} -> eval should succeed,+ xml dump should be the same as the .xml+ lang/eval-okay-*.{nix,exp} -> eval should succeed,+ plain text output should be the same as the .exp+ lang/eval-okay-*.{nix,exp,flags} -> eval should succeed,+ plain text output should be the same as the .exp,+ pass the extra flags to nix-instantiate++ NIX_PATH=lang/dir3:lang/dir4 should be in the environment of all+ eval-okay-*.nix evaluations+ TEST_VAR=foo should be in all the environments # for eval-okay-getenv.nix+-}++groupBy :: Ord k => (v -> k) -> [v] -> Map k [v]+groupBy key = Map.fromListWith (++) . map (key &&& pure)++genTests :: IO TestTree+genTests = do+ testFiles <- sort+ -- jww (2018-05-07): Temporarily disable this test until #128 is fixed.+ . filter ((/= "eval-okay-path") . takeBaseName)+ . filter ((/= ".xml") . takeExtension)+ <$> globDir1 (compile "*-*-*.*") "data/nix/tests/lang"+ let testsByName = groupBy (takeFileName . dropExtensions) testFiles+ let testsByType = groupBy testType (Map.toList testsByName)+ let testGroups = map mkTestGroup (Map.toList testsByType)+ return $ localOption (mkTimeout 2000000)+ $ testGroup "Nix (upstream) language tests" testGroups+ where+ testType (fullpath, _files) =+ take 2 $ splitOn "-" $ takeFileName fullpath+ mkTestGroup (kind, tests) =+ testGroup (unwords kind) $ map (mkTestCase kind) tests+ mkTestCase kind (basename, files) =+ testCase (takeFileName basename) $ do+ time <- liftIO getCurrentTime+ let opts = defaultOptions time+ case kind of+ ["parse", "okay"] -> assertParse opts $ the files+ ["parse", "fail"] -> assertParseFail opts $ the files+ ["eval", "okay"] -> assertEval opts files+ ["eval", "fail"] -> assertEvalFail $ the files+ _ -> error $ "Unexpected: " ++ show kind++assertParse :: Options -> FilePath -> Assertion+assertParse _opts file = parseNixFileLoc file >>= \case+ Success _expr -> return () -- pure $! runST $ void $ lint opts expr+ Failure err ->+ assertFailure $ "Failed to parse " ++ file ++ ":\n" ++ show err++assertParseFail :: Options -> FilePath -> Assertion+assertParseFail opts file = do+ eres <- parseNixFileLoc file+ catch (case eres of+ Success expr -> do+ _ <- pure $! runST $ void $ lint opts expr+ assertFailure $ "Unexpected success parsing `"+ ++ file ++ ":\nParsed value: " ++ show expr+ Failure _ -> return ()) $ \(_ :: SomeException) ->+ return ()++assertLangOk :: Options -> FilePath -> Assertion+assertLangOk opts file = do+ actual <- printNix <$> hnixEvalFile opts (file ++ ".nix")+ expected <- Text.readFile $ file ++ ".exp"+ assertEqual "" expected $ Text.pack (actual ++ "\n")++assertLangOkXml :: Options -> FilePath -> Assertion+assertLangOkXml opts file = do+ actual <- toXML <$> hnixEvalFile opts (file ++ ".nix")+ expected <- Text.readFile $ file ++ ".exp.xml"+ assertEqual "" expected $ Text.pack actual++assertEval :: Options -> [FilePath] -> Assertion+assertEval _opts files = do+ time <- liftIO getCurrentTime+ let opts = defaultOptions time+ case delete ".nix" $ sort $ map takeExtensions files of+ [] -> () <$ hnixEvalFile opts (name ++ ".nix")+ [".exp"] -> assertLangOk opts name+ [".exp.xml"] -> assertLangOkXml opts name+ [".exp.disabled"] -> return ()+ [".exp-disabled"] -> return ()+ [".exp", ".flags"] -> do+ liftIO $ unsetEnv "NIX_PATH"+ flags <- Text.readFile (name ++ ".flags")+ let flags' | Text.last flags == '\n' = Text.init flags+ | otherwise = flags+ case Opts.execParserPure Opts.defaultPrefs (nixOptionsInfo time)+ (fixup (map Text.unpack (Text.splitOn " " flags'))) of+ Opts.Failure err -> errorWithoutStackTrace $+ "Error parsing flags from " ++ name ++ ".flags: "+ ++ show err+ Opts.Success opts' ->+ assertLangOk+ (opts' { include = include opts' +++ [ "nix=../../../../data/nix/corepkgs"+ , "lang/dir4"+ , "lang/dir5" ] })+ name+ Opts.CompletionInvoked _ -> error "unused"+ _ -> assertFailure $ "Unknown test type " ++ show files+ where+ name = "data/nix/tests/lang/"+ ++ the (map (takeFileName . dropExtensions) files)++ fixup ("--arg":x:y:rest) = "--arg":(x ++ "=" ++ y):fixup rest+ fixup ("--argstr":x:y:rest) = "--argstr":(x ++ "=" ++ y):fixup rest+ fixup (x:rest) = x:fixup rest+ fixup [] = []++assertEvalFail :: FilePath -> Assertion+assertEvalFail file = catch ?? (\(_ :: SomeException) -> return ()) $ do+ time <- liftIO getCurrentTime+ evalResult <- printNix <$> hnixEvalFile (defaultOptions time) file+ evalResult `seq` assertFailure $+ file ++ " should not evaluate.\nThe evaluation result was `"+ ++ evalResult ++ "`."
@@ -1,131 +1,133 @@+{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE OverloadedStrings #-}-module ParserTests (tests) where+{-# LANGUAGE RankNTypes #-} -import Data.Fix-import Data.Text (pack)-import Test.Tasty-import Test.Tasty.HUnit-import Test.Tasty.TH+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}+{-# OPTIONS_GHC -Wno-missing-signatures -Wno-orphans #-} -import qualified Data.Map as Map+module ParserTests (tests) where +import Data.Fix+import Data.List.NonEmpty (NonEmpty(..))+import Data.Semigroup+import Data.String.Interpolate.IsString+import Data.Text (Text, unpack, pack) import Nix.Atoms import Nix.Expr import Nix.Parser-import Nix.StringOperations--import Prelude+import Nix.Pretty+import Test.Tasty+import Test.Tasty.HUnit+import Test.Tasty.TH+import Text.PrettyPrint.ANSI.Leijen hiding ((<$>), (<>)) -case_constant_int :: Assertion-case_constant_int = assertParseString "234" $ mkInt 234+case_constant_int = assertParseText "234" $ mkInt 234 -case_constant_bool :: Assertion case_constant_bool = do- assertParseString "true" $ mkBool True- assertParseString "false" $ mkBool False+ assertParseText "true" $ mkBool True+ assertParseText "false" $ mkBool False -case_constant_path :: Assertion+case_constant_bool_respects_attributes = do+ assertParseText "true-foo" $ mkSym "true-foo"+ assertParseText "false-bar" $ mkSym "false-bar"+ case_constant_path = do- assertParseString "./." $ mkPath False "./."- assertParseString "./+-_/cdef/09ad+-" $ mkPath False "./+-_/cdef/09ad+-"- assertParseString "/abc" $ mkPath False "/abc"- assertParseString "../abc" $ mkPath False "../abc"- assertParseString "<abc>" $ mkPath True "abc"- assertParseString "<../cdef>" $ mkPath True "../cdef"- assertParseString "a//b" $ mkOper2 NUpdate (mkSym "a") (mkSym "b")- assertParseString "rec+def/cdef" $ mkPath False "rec+def/cdef"- assertParseString "a/b//c/def//<g> < def/d" $ mkOper2 NLt+ assertParseText "./." $ mkPath False "./."+ assertParseText "./+-_/cdef/09ad+-" $ mkPath False "./+-_/cdef/09ad+-"+ assertParseText "/abc" $ mkPath False "/abc"+ assertParseText "../abc" $ mkPath False "../abc"+ assertParseText "<abc>" $ mkPath True "abc"+ assertParseText "<../cdef>" $ mkPath True "../cdef"+ assertParseText "a//b" $ mkOper2 NUpdate (mkSym "a") (mkSym "b")+ assertParseText "rec+def/cdef" $ mkPath False "rec+def/cdef"+ assertParseText "a/b//c/def//<g> < def/d" $ mkOper2 NLt (mkOper2 NUpdate (mkPath False "a/b") $ mkOper2 NUpdate (mkPath False "c/def") (mkPath True "g")) (mkPath False "def/d")- assertParseString "a'b/c" $ Fix $ NApp (mkSym "a'b") (mkPath False "/c")+ assertParseText "a'b/c" $ Fix $ NBinary NApp (mkSym "a'b") (mkPath False "/c")+ assertParseText "a/b" $ mkPath False "a/b"+ assertParseText "4/2" $ mkPath False "4/2" assertParseFail "." assertParseFail ".." assertParseFail "/" assertParseFail "a/" assertParseFail "a/def/"+ assertParseFail "~"+ assertParseFail "~/"+ assertParseText "~/a" $ mkPath False "~/a"+ assertParseText "~/a/b" $ mkPath False "~/a/b" -case_constant_uri :: Assertion case_constant_uri = do- assertParseString "a:a" $ mkUri "a:a"- assertParseString "http://foo.bar" $ mkUri "http://foo.bar"- assertParseString "a+de+.adA+-:%%%ads%5asdk&/" $ mkUri "a+de+.adA+-:%%%ads%5asdk&/"- assertParseString "rec+def:c" $ mkUri "rec+def:c"- assertParseString "f.foo:bar" $ mkUri "f.foo:bar"+ assertParseText "a:a" $ mkStr "a:a"+ assertParseText "http://foo.bar" $ mkStr "http://foo.bar"+ assertParseText "a+de+.adA+-:%%%ads%5asdk&/" $ mkStr "a+de+.adA+-:%%%ads%5asdk&/"+ assertParseText "rec+def:c" $ mkStr "rec+def:c"+ assertParseText "f.foo:bar" $ mkStr "f.foo:bar" assertParseFail "http://foo${\"bar\"}" assertParseFail ":bcdef" assertParseFail "a%20:asda" assertParseFail ".:adasd" assertParseFail "+:acdcd" -case_simple_set :: Assertion case_simple_set = do- assertParseString "{ a = 23; b = 4; }" $ Fix $ NSet- [ NamedVar (mkSelector "a") $ mkInt 23- , NamedVar (mkSelector "b") $ mkInt 4+ assertParseText "{ a = 23; b = 4; }" $ Fix $ NSet+ [ NamedVar (mkSelector "a") (mkInt 23) nullPos+ , NamedVar (mkSelector "b") (mkInt 4) nullPos ] assertParseFail "{ a = 23 }" -case_set_inherit :: Assertion case_set_inherit = do- assertParseString "{ e = 3; inherit a b; }" $ Fix $ NSet- [ NamedVar (mkSelector "e") $ mkInt 3- , Inherit Nothing $ StaticKey <$> ["a", "b"]+ assertParseText "{ e = 3; inherit a b; }" $ Fix $ NSet+ [ NamedVar (mkSelector "e") (mkInt 3) nullPos+ , Inherit Nothing (StaticKey <$> ["a", "b"]) nullPos ]- assertParseString "{ inherit; }" $ Fix $ NSet [ Inherit Nothing [] ]+ assertParseText "{ inherit; }" $ Fix $ NSet [ Inherit Nothing [] nullPos ] -case_set_scoped_inherit :: Assertion-case_set_scoped_inherit = assertParseString "{ inherit (a) b c; e = 4; inherit(a)b c; }" $ Fix $ NSet- [ Inherit (Just (mkSym "a")) $ StaticKey <$> ["b", "c"]- , NamedVar (mkSelector "e") $ mkInt 4- , Inherit (Just (mkSym "a")) $ StaticKey <$> ["b", "c"]+case_set_scoped_inherit = assertParseText "{ inherit (a) b c; e = 4; inherit(a)b c; }" $ Fix $ NSet+ [ Inherit (Just (mkSym "a")) (StaticKey <$> ["b", "c"]) nullPos+ , NamedVar (mkSelector "e") (mkInt 4) nullPos+ , Inherit (Just (mkSym "a")) (StaticKey <$> ["b", "c"]) nullPos ] -case_set_rec :: Assertion-case_set_rec = assertParseString "rec { a = 3; b = a; }" $ Fix $ NRecSet- [ NamedVar (mkSelector "a") $ mkInt 3- , NamedVar (mkSelector "b") $ mkSym "a"+case_set_rec = assertParseText "rec { a = 3; b = a; }" $ Fix $ NRecSet+ [ NamedVar (mkSelector "a") (mkInt 3) nullPos+ , NamedVar (mkSelector "b") (mkSym "a") nullPos ] -case_set_complex_keynames :: Assertion case_set_complex_keynames = do- assertParseString "{ \"\" = null; }" $ Fix $ NSet- [ NamedVar [DynamicKey (Plain "")] mkNull ]- assertParseString "{ a.b = 3; a.c = 4; }" $ Fix $ NSet- [ NamedVar [StaticKey "a", StaticKey "b"] $ mkInt 3- , NamedVar [StaticKey "a", StaticKey "c"] $ mkInt 4+ assertParseText "{ \"\" = null; }" $ Fix $ NSet+ [ NamedVar (DynamicKey (Plain (DoubleQuoted [])) :| []) mkNull nullPos ]+ assertParseText "{ a.b = 3; a.c = 4; }" $ Fix $ NSet+ [ NamedVar (StaticKey "a" :| [StaticKey "b"]) (mkInt 3) nullPos+ , NamedVar (StaticKey "a" :| [StaticKey "c"]) (mkInt 4) nullPos ]- assertParseString "{ ${let a = \"b\"; in a} = 4; }" $ Fix $ NSet- [ NamedVar [DynamicKey (Antiquoted letExpr)] $ mkInt 4 ]- assertParseString "{ \"a${let a = \"b\"; in a}c\".e = 4; }" $ Fix $ NSet- [ NamedVar [DynamicKey (Plain str), StaticKey "e"] $ mkInt 4 ]+ assertParseText "{ ${let a = \"b\"; in a} = 4; }" $ Fix $ NSet+ [ NamedVar (DynamicKey (Antiquoted letExpr) :| []) (mkInt 4) nullPos ]+ assertParseText "{ \"a${let a = \"b\"; in a}c\".e = 4; }" $ Fix $ NSet+ [ NamedVar (DynamicKey (Plain str) :| [StaticKey "e"]) (mkInt 4) nullPos ] where- letExpr = Fix $ NLet [ NamedVar (mkSelector "a") (mkStr "b") ] (mkSym "a")+ letExpr = Fix $ NLet [NamedVar (mkSelector "a") (mkStr "b") nullPos] (mkSym "a") str = DoubleQuoted [Plain "a", Antiquoted letExpr, Plain "c"] -case_set_inherit_direct :: Assertion-case_set_inherit_direct = assertParseString "{ inherit ({a = 3;}); }" $ Fix $ NSet- [ flip Inherit [] $ Just $ Fix $ NSet [NamedVar (mkSelector "a") $ mkInt 3]+case_set_inherit_direct = assertParseText "{ inherit ({a = 3;}); }" $ Fix $ NSet+ [ Inherit (Just $ Fix $ NSet [NamedVar (mkSelector "a") (mkInt 3) nullPos]) [] nullPos ] -case_inherit_selector :: Assertion case_inherit_selector = do- assertParseString "{ inherit \"a\"; }" $ Fix $ NSet- [Inherit Nothing [DynamicKey (Plain "a")]]+ assertParseText "{ inherit \"a\"; }" $ Fix $ NSet+ [Inherit Nothing [DynamicKey (Plain (DoubleQuoted [Plain "a"]))] nullPos] assertParseFail "{ inherit a.x; }" -case_int_list :: Assertion-case_int_list = assertParseString "[1 2 3]" $ Fix $ NList+case_int_list = assertParseText "[1 2 3]" $ Fix $ NList [ mkInt i | i <- [1,2,3] ] -case_int_null_list :: Assertion-case_int_null_list = assertParseString "[1 2 3 null 4]" $ Fix (NList (map (Fix . NConstant) [NInt 1, NInt 2, NInt 3, NNull, NInt 4]))+case_int_null_list = assertParseText "[1 2 3 null 4]" $ Fix (NList (map (Fix . NConstant) [NInt 1, NInt 2, NInt 3, NNull, NInt 4])) -case_mixed_list :: Assertion case_mixed_list = do- assertParseString "[{a = 3;}.a (if true then null else false) null false 4 [] c.d or null]" $ Fix $ NList- [ Fix (NSelect (Fix (NSet [NamedVar (mkSelector "a") (mkInt 3)])) (mkSelector "a") Nothing)+ assertParseText "[{a = 3;}.a (if true then null else false) null false 4 [] c.d or null]" $ Fix $ NList+ [ Fix (NSelect (Fix (NSet [NamedVar (mkSelector "a") (mkInt 3) nullPos]))+ (mkSelector "a") Nothing) , Fix (NIf (mkBool True) mkNull (mkBool False)) , mkNull, mkBool False, mkInt 4, Fix (NList []) , Fix (NSelect (mkSym "c") (mkSelector "d") (Just mkNull))@@ -135,161 +137,156 @@ assertParseFail "[a : a]" assertParseFail "[${\"test\")]" -case_simple_lambda :: Assertion-case_simple_lambda = assertParseString "a: a" $ Fix $ NAbs (Param "a") (mkSym "a")+case_simple_lambda = assertParseText "a: a" $ Fix $ NAbs (Param "a") (mkSym "a") -case_lambda_or_uri :: Assertion case_lambda_or_uri = do- assertParseString "a :b" $ Fix $ NAbs (Param "a") (mkSym "b")- assertParseString "a c:def" $ Fix $ NApp (mkSym "a") (mkUri "c:def")- assertParseString "c:def: c" $ Fix $ NApp (mkUri "c:def:") (mkSym "c")- assertParseString "a:{}" $ Fix $ NAbs (Param "a") $ Fix $ NSet []- assertParseString "a:[a]" $ Fix $ NAbs (Param "a") $ Fix $ NList [mkSym "a"]+ assertParseText "a :b" $ Fix $ NAbs (Param "a") (mkSym "b")+ assertParseText "a c:def" $ Fix $ NBinary NApp (mkSym "a") (mkStr "c:def")+ assertParseText "c:def: c" $ Fix $ NBinary NApp (mkStr "c:def:") (mkSym "c")+ assertParseText "a:{}" $ Fix $ NAbs (Param "a") $ Fix $ NSet []+ assertParseText "a:[a]" $ Fix $ NAbs (Param "a") $ Fix $ NList [mkSym "a"] assertParseFail "def:" -case_lambda_pattern :: Assertion case_lambda_pattern = do- assertParseString "{b, c ? 1}: b" $+ assertParseText "{b, c ? 1}: b" $ Fix $ NAbs (fixed args Nothing) (mkSym "b")- assertParseString "{ b ? x: x }: b" $+ assertParseText "{ b ? x: x }: b" $ Fix $ NAbs (fixed args2 Nothing) (mkSym "b")- assertParseString "a@{b,c ? 1}: b" $+ assertParseText "a@{b,c ? 1}: b" $ Fix $ NAbs (fixed args (Just "a")) (mkSym "b")- assertParseString "{b,c?1}@a: c" $+ assertParseText "{b,c?1}@a: c" $ Fix $ NAbs (fixed args (Just "a")) (mkSym "c")- assertParseString "{b,c?1,...}@a: c" $+ assertParseText "{b,c?1,...}@a: c" $ Fix $ NAbs (variadic vargs (Just "a")) (mkSym "c")- assertParseString "{...}: 1" $+ assertParseText "{...}: 1" $ Fix $ NAbs (variadic mempty Nothing) (mkInt 1) assertParseFail "a@b: a" assertParseFail "{a}@{b}: a" where- fixed args mname = ParamSet (FixedParamSet args) mname- variadic args mname = ParamSet (VariadicParamSet args) mname- args = Map.fromList [("b", Nothing), ("c", Just $ mkInt 1)]- vargs = Map.fromList [("b", Nothing), ("c", Just $ mkInt 1)]- args2 = Map.fromList [("b", Just lam)]+ fixed args = ParamSet args False+ variadic args = ParamSet args True+ args = [("b", Nothing), ("c", Just $ mkInt 1)]+ vargs = [("b", Nothing), ("c", Just $ mkInt 1)]+ args2 = [("b", Just lam)] lam = Fix $ NAbs (Param "x") (mkSym "x") -case_lambda_app_int :: Assertion-case_lambda_app_int = assertParseString "(a: a) 3" $ Fix (NApp lam int) where+case_lambda_app_int = assertParseText "(a: a) 3" $ Fix (NBinary NApp lam int) where int = mkInt 3 lam = Fix (NAbs (Param "a") asym) asym = mkSym "a" -case_simple_let :: Assertion case_simple_let = do- assertParseString "let a = 4; in a" $ Fix (NLet binds $ mkSym "a")+ assertParseText "let a = 4; in a" $ Fix (NLet binds $ mkSym "a") assertParseFail "let a = 4 in a" where- binds = [NamedVar (mkSelector "a") $ mkInt 4]+ binds = [NamedVar (mkSelector "a") (mkInt 4) nullPos] -case_nested_let :: Assertion+case_let_body = assertParseText "let { body = 1; }" letBody+ where+ letBody = Fix $ NSelect aset (mkSelector "body") Nothing+ aset = Fix $ NRecSet [NamedVar (mkSelector "body") (mkInt 1) nullPos]+ case_nested_let = do- assertParseString "let a = 4; in let b = 5; in a" $ Fix $ NLet- [ NamedVar (mkSelector "a") $ mkInt 4 ]- (Fix $ NLet [NamedVar (mkSelector "b") $ mkInt 5] $ mkSym "a")+ assertParseText "let a = 4; in let b = 5; in a" $ Fix $ NLet+ [NamedVar (mkSelector "a") (mkInt 4) nullPos]+ (Fix $ NLet [NamedVar (mkSelector "b") (mkInt 5) nullPos] $ mkSym "a") assertParseFail "let a = 4; let b = 3; in b" -case_let_scoped_inherit :: Assertion case_let_scoped_inherit = do- assertParseString "let a = null; inherit (b) c; in c" $ Fix $ NLet- [ NamedVar (mkSelector "a") mkNull- , Inherit (Just $ mkSym "b") [StaticKey "c"] ]+ assertParseText "let a = null; inherit (b) c; in c" $ Fix $ NLet+ [ NamedVar (mkSelector "a") mkNull nullPos+ , Inherit (Just $ mkSym "b") [StaticKey "c"] nullPos ] (mkSym "c") assertParseFail "let inherit (b) c in c" -case_if :: Assertion case_if = do- assertParseString "if true then true else false" $ Fix $ NIf (mkBool True) (mkBool True) (mkBool False)+ assertParseText "if true then true else false" $+ Fix $ NIf (mkBool True) (mkBool True) (mkBool False) assertParseFail "if true then false" assertParseFail "else" assertParseFail "if true then false else" assertParseFail "if true then false else false else" assertParseFail "1 + 2 then" -case_identifier_special_chars :: Assertion case_identifier_special_chars = do- assertParseString "_a" $ mkSym "_a"- assertParseString "a_b" $ mkSym "a_b"- assertParseString "a'b" $ mkSym "a'b"- assertParseString "a''b" $ mkSym "a''b"- assertParseString "a-b" $ mkSym "a-b"- assertParseString "a--b" $ mkSym "a--b"- assertParseString "a12a" $ mkSym "a12a"+ assertParseText "_a" $ mkSym "_a"+ assertParseText "a_b" $ mkSym "a_b"+ assertParseText "a'b" $ mkSym "a'b"+ assertParseText "a''b" $ mkSym "a''b"+ assertParseText "a-b" $ mkSym "a-b"+ assertParseText "a--b" $ mkSym "a--b"+ assertParseText "a12a" $ mkSym "a12a" assertParseFail ".a" assertParseFail "'a" -case_identifier_keyword_prefix :: Assertion case_identifier_keyword_prefix = do- assertParseString "true-name" $ mkSym "true-name"- assertParseString "trueName" $ mkSym "trueName"- assertParseString "null-name" $ mkSym "null-name"- assertParseString "nullName" $ mkSym "nullName"- assertParseString "[ null-name ]" $ mkList [ mkSym "null-name" ]+ assertParseText "true-name" $ mkSym "true-name"+ assertParseText "trueName" $ mkSym "trueName"+ assertParseText "null-name" $ mkSym "null-name"+ assertParseText "nullName" $ mkSym "nullName"+ assertParseText "[ null-name ]" $ mkList [ mkSym "null-name" ] -makeStringParseTest :: String -> Assertion-makeStringParseTest str = assertParseString ("\"" ++ str ++ "\"") $ mkStr $ pack str+makeTextParseTest str = assertParseText ("\"" <> str <> "\"") $ mkStr str -case_simple_string :: Assertion-case_simple_string = mapM_ makeStringParseTest ["abcdef", "a", "A", " a a ", ""]+case_simple_string = mapM_ makeTextParseTest ["abcdef", "a", "A", " a a ", ""] -case_string_dollar :: Assertion-case_string_dollar = mapM_ makeStringParseTest ["a$b", "a$$b", "$cdef", "gh$i"]+case_string_dollar = mapM_ makeTextParseTest ["a$b", "a$$b", "$cdef", "gh$i"] -case_string_escape :: Assertion case_string_escape = do- assertParseString "\"\\$\\n\\t\\r\\\\\"" $ mkStr "$\n\t\r\\"- assertParseString "\" \\\" \\' \"" $ mkStr " \" ' "+ assertParseText "\"\\$\\n\\t\\r\\\\\"" $ mkStr "$\n\t\r\\"+ assertParseText "\" \\\" \\' \"" $ mkStr " \" ' " -case_string_antiquote :: Assertion case_string_antiquote = do- assertParseString "\"abc${ if true then \"def\" else \"abc\" } g\"" $+ assertParseText "\"abc${ if true then \"def\" else \"abc\" } g\"" $ Fix $ NStr $ DoubleQuoted [ Plain "abc" , Antiquoted $ Fix $ NIf (mkBool True) (mkStr "def") (mkStr "abc") , Plain " g" ]- assertParseString "\"\\${a}\"" $ mkStr "${a}"+ assertParseText "\"\\${a}\"" $ mkStr "${a}" assertParseFail "\"a" assertParseFail "${true}" assertParseFail "\"${true\"" -case_select :: Assertion case_select = do- assertParseString "a . e .di. f" $ Fix $ NSelect (mkSym "a")- [ StaticKey "e", StaticKey "di", StaticKey "f" ]+ assertParseText "a . e .di. f" $ Fix $ NSelect (mkSym "a")+ (StaticKey "e" :| [StaticKey "di", StaticKey "f"]) Nothing- assertParseString "a.e . d or null" $ Fix $ NSelect (mkSym "a")- [ StaticKey "e", StaticKey "d" ]+ assertParseText "a.e . d or null" $ Fix $ NSelect (mkSym "a")+ (StaticKey "e" :| [StaticKey "d"]) (Just mkNull)- assertParseString "{}.\"\"or null" $ Fix $ NSelect (Fix (NSet []))- [ DynamicKey (Plain "") ] (Just mkNull)+ assertParseText "{}.\"\"or null" $ Fix $ NSelect (Fix (NSet []))+ (DynamicKey (Plain (DoubleQuoted [])) :| []) (Just mkNull)+ assertParseText "{ a = [1]; }.a or [2] ++ [3]" $ Fix $ NBinary NConcat+ (Fix (NSelect+ (Fix (NSet [NamedVar (StaticKey "a" :| [])+ (Fix (NList [Fix (NConstant (NInt 1))]))+ nullPos]))+ (StaticKey "a" :| [])+ (Just (Fix (NList [Fix (NConstant (NInt 2))])))))+ (Fix (NList [Fix (NConstant (NInt 3))])) -case_select_path :: Assertion case_select_path = do- assertParseString "f ./." $ Fix $ NApp (mkSym "f") (mkPath False "./.")- assertParseString "f.b ../a" $ Fix $ NApp select (mkPath False "../a")- assertParseString "{}./def" $ Fix $ NApp (Fix (NSet [])) (mkPath False "./def")- assertParseString "{}.\"\"./def" $ Fix $ NApp- (Fix $ NSelect (Fix (NSet [])) [DynamicKey (Plain "")] Nothing)+ assertParseText "f ./." $ Fix $ NBinary NApp (mkSym "f") (mkPath False "./.")+ assertParseText "f.b ../a" $ Fix $ NBinary NApp select (mkPath False "../a")+ assertParseText "{}./def" $ Fix $ NBinary NApp (Fix (NSet [])) (mkPath False "./def")+ assertParseText "{}.\"\"./def" $ Fix $ NBinary NApp+ (Fix $ NSelect (Fix (NSet [])) (DynamicKey (Plain (DoubleQuoted [])) :| []) Nothing) (mkPath False "./def") where select = Fix $ NSelect (mkSym "f") (mkSelector "b") Nothing -case_fun_app :: Assertion case_fun_app = do- assertParseString "f a b" $ Fix $ NApp (Fix $ NApp (mkSym "f") (mkSym "a")) (mkSym "b")- assertParseString "f a.x or null" $ Fix $ NApp (mkSym "f") $ Fix $+ assertParseText "f a b" $ Fix $ NBinary NApp (Fix $ NBinary NApp (mkSym "f") (mkSym "a")) (mkSym "b")+ assertParseText "f a.x or null" $ Fix $ NBinary NApp (mkSym "f") $ Fix $ NSelect (mkSym "a") (mkSelector "x") (Just mkNull) assertParseFail "f if true then null else null" -case_indented_string :: Assertion case_indented_string = do- assertParseString "''a''" $ mkIndentedStr "a"- assertParseString "''\n foo\n bar''" $ mkIndentedStr "foo\nbar"- assertParseString "'' ''" $ mkIndentedStr ""- assertParseString "'''''''" $ mkIndentedStr "''"- assertParseString "'' ${null}\n a${null}''" $ Fix $ NStr $ Indented+ assertParseText "''a''" $ mkIndentedStr 0 "a"+ assertParseText "''\n foo\n bar''" $ mkIndentedStr 2 "foo\nbar"+ assertParseText "'' ''" $ mkIndentedStr 0 ""+ assertParseText "'''''''" $ mkIndentedStr 0 "''"+ assertParseText "'' ${null}\n a${null}''" $ Fix $ NStr $ Indented 3 [ Antiquoted mkNull , Plain "\na" , Antiquoted mkNull@@ -297,58 +294,106 @@ assertParseFail "'''''" assertParseFail "'' '" -case_indented_string_escape :: Assertion-case_indented_string_escape = assertParseString+case_indented_string_escape = assertParseText "'' ''\\n ''\\t ''\\\\ ''${ \\ \\n ' ''' ''" $- mkIndentedStr "\n \t \\ ${ \\ \\n ' '' "+ mkIndentedStr 1 "\n \t \\ ${ \\ \\n ' '' " -case_operator_fun_app :: Assertion case_operator_fun_app = do- assertParseString "a ++ b" $ mkOper2 NConcat (mkSym "a") (mkSym "b")- assertParseString "a ++ f b" $ mkOper2 NConcat (mkSym "a") $ Fix $ NApp+ assertParseText "a ++ b" $ mkOper2 NConcat (mkSym "a") (mkSym "b")+ assertParseText "a ++ f b" $ mkOper2 NConcat (mkSym "a") $ Fix $ NBinary NApp (mkSym "f") (mkSym "b") -case_operators :: Assertion case_operators = do- assertParseString "1 + 2 - 3" $ mkOper2 NMinus+ assertParseText "1 + 2 - 3" $ mkOper2 NMinus (mkOper2 NPlus (mkInt 1) (mkInt 2)) (mkInt 3) assertParseFail "1 + if true then 1 else 2"- assertParseString "1 + (if true then 2 else 3)" $ mkOper2 NPlus (mkInt 1) $ Fix $ NIf+ assertParseText "1 + (if true then 2 else 3)" $ mkOper2 NPlus (mkInt 1) $ Fix $ NIf (mkBool True) (mkInt 2) (mkInt 3)- assertParseString "{ a = 3; } // rec { b = 4; }" $ mkOper2 NUpdate- (Fix $ NSet [NamedVar (mkSelector "a") (mkInt 3)])- (Fix $ NRecSet [NamedVar (mkSelector "b") (mkInt 4)])- assertParseString "--a" $ mkOper NNeg $ mkOper NNeg $ mkSym "a"- assertParseString "a - b - c" $ mkOper2 NMinus+ assertParseText "{ a = 3; } // rec { b = 4; }" $ mkOper2 NUpdate+ (Fix $ NSet [NamedVar (mkSelector "a") (mkInt 3) nullPos])+ (Fix $ NRecSet [NamedVar (mkSelector "b") (mkInt 4) nullPos])+ assertParseText "--a" $ mkOper NNeg $ mkOper NNeg $ mkSym "a"+ assertParseText "a - b - c" $ mkOper2 NMinus (mkOper2 NMinus (mkSym "a") (mkSym "b")) $ mkSym "c"- assertParseString "foo<bar" $ mkOper2 NLt (mkSym "foo") (mkSym "bar")+ assertParseText "foo<bar" $ mkOper2 NLt (mkSym "foo") (mkSym "bar") assertParseFail "+ 3" assertParseFail "foo +" -case_comments :: Assertion case_comments = do Success expected <- parseNixFile "data/let.nix" assertParseFile "let-comments-multiline.nix" expected assertParseFile "let-comments.nix" expected +case_select_or_precedence =+ assertParsePrint [i|let+ matchDef = def: matcher:+ v: let+ case = builtins.head (builtins.attrNames v);+ in (matcher.case or def case) (v.case);+in null|] [i|let+ matchDef = def:+ matcher:+ v:+ let+ case = builtins.head (builtins.attrNames v);+ in (matcher.case or def) case (v.case);+in null|]++case_select_or_precedence2 =+ assertParsePrint [i|let+ matchDef = def: matcher:+ v: let+ case = builtins.head (builtins.attrNames v);+ in (matcher.case or null.foo) (v.case);+in null|] [i|let+ matchDef = def:+ matcher:+ v:+ let+ case = builtins.head (builtins.attrNames v);+ in (matcher.case or null).foo (v.case);+in null|]+ tests :: TestTree tests = $testGroupGenerator ---------------------------------------------------------------------------------assertParseString :: String -> NExpr -> Assertion-assertParseString str expected = case parseNixString str of- Success actual -> assertEqual ("When parsing " ++ str) expected actual- Failure err -> assertFailure $ "Unexpected error parsing `" ++ str ++ "':\n" ++ show err +assertParseText :: Text -> NExpr -> Assertion+assertParseText str expected = case parseNixText str of+ Success actual ->+ assertEqual ("When parsing " ++ unpack str)+ (stripPositionInfo expected) (stripPositionInfo actual)+ Failure err ->+ assertFailure $ "Unexpected error parsing `" ++ unpack str ++ "':\n" ++ show err+ assertParseFile :: FilePath -> NExpr -> Assertion assertParseFile file expected = do res <- parseNixFile $ "data/" ++ file case res of- Success actual -> assertEqual ("Parsing data file " ++ file) expected actual- Failure err -> assertFailure $ "Unexpected error parsing data file `" ++ file ++ "':\n" ++ show err+ Success actual -> assertEqual ("Parsing data file " ++ file)+ (stripPositionInfo expected) (stripPositionInfo actual)+ Failure err ->+ assertFailure $ "Unexpected error parsing data file `"+ ++ file ++ "':\n" ++ show err -assertParseFail :: String -> Assertion-assertParseFail str = case parseNixString str of+assertParseFail :: Text -> Assertion+assertParseFail str = case parseNixText str of Failure _ -> return ()- Success r -> assertFailure $ "Unexpected success parsing `" ++ str ++ ":\nParsed value: " ++ show r+ Success r ->+ assertFailure $ "Unexpected success parsing `"+ ++ unpack str ++ ":\nParsed value: " ++ show r++-- assertRoundTrip :: Text -> Assertion+-- assertRoundTrip src = assertParsePrint src src++assertParsePrint :: Text -> Text -> Assertion+assertParsePrint src expect =+ let Success expr = parseNixTextLoc src+ result = displayS+ . renderPretty 0.4 80+ . prettyNix+ . stripAnnotation+ $ expr+ in assertEqual "" expect (pack (result ""))
@@ -0,0 +1,244 @@+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MonoLocalBinds #-}+{-# LANGUAGE NoMonomorphismRestriction #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE UndecidableInstances #-}++{-# OPTIONS -Wno-orphans#-}++module PrettyParseTests where++import Control.Monad+import Data.Algorithm.Diff+import Data.Algorithm.DiffOutput+import Data.Char+import Data.Fix+import qualified Data.List.NonEmpty as NE+import Data.Text (Text, pack)+import Generic.Random+import Nix.Atoms+import Nix.Expr+import Nix.Parser+import Nix.Pretty+import Test.QuickCheck.Instances.Semigroup ()+import Test.QuickCheck.Instances.Text ()+import qualified Test.QuickCheck.Property as P+import Test.Tasty+import Test.Tasty.QuickCheck hiding (Success, Failure)+import Text.Megaparsec (Pos, SourcePos, mkPos)+import Text.PrettyPrint.ANSI.Leijen ((</>), text)+import qualified Text.PrettyPrint.ANSI.Leijen as P+import qualified Text.Show.Pretty as PS++-- Instead of using the Generic arbitrary instance (which doesn't exist anyway+-- for Text), we use a different generator which just prints sensible looking+-- variable names+custom :: GenList '[Text]+custom = asciiText :@ Nil++asciiString :: Gen String+asciiString = do+ n <- choose (1, 15)+ replicateM n (elements ['a'..'z'])++asciiText :: Gen Text+asciiText = pack <$> asciiString++pcustom :: GenList '[Pos]+pcustom = arbitrary :@ Nil++-- | This generator generates selects one of the constructors uniformly and+-- also decreases the size of the generator by dividing by the branching+-- factor. This ensures sensible termination.+genArb :: (GArbitrary (Options 'Sized '[Text]) a, GUniformWeight a) => Gen a+genArb = genericArbitraryWith (setGenerators custom sizedOpts) uniform++-- Might want to replace this instance with a constant value+instance Arbitrary Pos where+ arbitrary = mkPos <$> (getSmall <$> arbitrary `suchThat` (> 0))++instance Arbitrary (f (Fix f)) => Arbitrary (Fix f) where+ arbitrary = genArb++instance Arbitrary f => Arbitrary (NString f) where+ arbitrary = genArb++instance Arbitrary SourcePos where+ arbitrary = genericArbitraryWith (setGenerators pcustom sizedOpts) uniform++instance Arbitrary f => Arbitrary (Binding f) where+ arbitrary = genArb++instance Arbitrary f => Arbitrary (NKeyName f) where+ arbitrary = oneof [ DynamicKey <$> arbitrary+ , StaticKey <$> asciiText ]++instance Arbitrary f => Arbitrary (Params f) where+ arbitrary =+ oneof [ Param <$> asciiText+ , ParamSet <$> listOf ((,) <$> asciiText <*> arbitrary) <*> arbitrary+ <*> oneof [pure Nothing, Just <$> asciiText]+ ]++instance Arbitrary NAtom where+ arbitrary =+ oneof [ NInt <$> arbitrary `suchThat` (>= 0)+ , NFloat <$> arbitrary `suchThat` (>= 0)+ , NBool <$> arbitrary+ , pure NNull ]++instance Arbitrary NUnaryOp where+ arbitrary = genArb++instance Arbitrary NBinaryOp where+ arbitrary = genArb++instance (Arbitrary f) => Arbitrary (Antiquoted Text f) where+ arbitrary = genArb++instance (Arbitrary f) => Arbitrary (Antiquoted (NString f) f) where+ arbitrary = genArb++-- This is written by hand so we can use `fairList` rather than the normal+-- list Arbitrary instance which makes the generator terminate. The+-- distribution is not scientifically chosen.+instance Arbitrary f => Arbitrary (NExprF f) where+ arbitrary =+ sized $ \n ->+ if n < 2+ then oneof [genConstant, genStr, genSym, genLiteralPath, genEnvPath ]+ else+ frequency+ [ ( 1, genConstant)+ , ( 1, genSym)+ , ( 4, resize (n `div` 3) genIf)+ , (10, genRecSet )+ , (20, genSet )+ , ( 5, genList )+ , ( 2, genUnary )+ , ( 2, resize (n `div` 3) genBinary )+ , ( 3, resize (n `div` 3) genSelect )+ , (20, resize (n `div` 2) genAbs )+ , ( 2, resize (n `div` 2) genHasAttr )+ , (10, resize (n `div` 2) genLet )+ , (10, resize (n `div` 2) genWith )+ , ( 1, resize (n `div` 2) genAssert)+ ]+ where+ genConstant = NConstant <$> arbitrary+ genStr = NStr <$> arbitrary+ genSym = NSym <$> asciiText+ genList = NList <$> fairList arbitrary+ genSet = NSet <$> fairList arbitrary+ genRecSet = NRecSet <$> fairList arbitrary+ genLiteralPath = NLiteralPath . ("./" ++) <$> asciiString+ genEnvPath = NEnvPath <$> asciiString+ genUnary = NUnary <$> arbitrary <*> arbitrary+ genBinary = NBinary <$> arbitrary <*> arbitrary <*> arbitrary+ genSelect = NSelect <$> arbitrary <*> arbitrary <*> arbitrary+ genHasAttr = NHasAttr <$> arbitrary <*> arbitrary+ genAbs = NAbs <$> arbitrary <*> arbitrary+ genLet = NLet <$> fairList arbitrary <*> arbitrary+ genIf = NIf <$> arbitrary <*> arbitrary <*> arbitrary+ genWith = NWith <$> arbitrary <*> arbitrary+ genAssert = NAssert <$> arbitrary <*> arbitrary++-- | Useful when there are recursive positions at each element of the list as+-- it divides the size by the length of the generated list.+fairList :: Gen a -> Gen [a]+fairList g = do+ s <- getSize+ k <- choose (0, s)+ -- Use max here to avoid dividing by zero when there is the empty list+ resize (s `div` max 1 k) $ vectorOf k g++equivUpToNormalization :: NExpr -> NExpr -> Bool+equivUpToNormalization x y = normalize x == normalize y++normalize :: NExpr -> NExpr+normalize = cata $ \case+ NConstant (NInt n) | n < 0 -> Fix (NUnary NNeg (Fix (NConstant (NInt (negate n)))))+ NConstant (NFloat n) | n < 0 -> Fix (NUnary NNeg (Fix (NConstant (NFloat (negate n)))))++ NSet binds -> Fix (NSet (map normBinding binds))+ NRecSet binds -> Fix (NRecSet (map normBinding binds))+ NLet binds r -> Fix (NLet (map normBinding binds) r)++ NAbs params r -> Fix (NAbs (normParams params) r)++ r -> Fix r++ where+ normBinding (NamedVar path r pos) = NamedVar (NE.map normKey path) r pos+ normBinding (Inherit mr names pos) = Inherit mr (map normKey names) pos++ normKey (DynamicKey quoted) = DynamicKey (normAntiquotedString quoted)+ normKey (StaticKey name) = StaticKey name++ normAntiquotedString :: Antiquoted (NString NExpr) NExpr+ -> Antiquoted (NString NExpr) NExpr+ normAntiquotedString (Plain (DoubleQuoted [EscapedNewline])) =+ EscapedNewline+ normAntiquotedString (Plain (DoubleQuoted strs)) =+ let strs' = map normAntiquotedText strs+ in if strs == strs'+ then Plain (DoubleQuoted strs)+ else normAntiquotedString (Plain (DoubleQuoted strs'))+ normAntiquotedString r = r++ normAntiquotedText :: Antiquoted Text NExpr -> Antiquoted Text NExpr+ normAntiquotedText (Plain "\n") = EscapedNewline+ normAntiquotedText (Plain "''\n") = EscapedNewline+ normAntiquotedText r = r++ normParams (ParamSet binds var (Just "")) = ParamSet binds var Nothing+ normParams r = r++-- | Test that parse . pretty == id up to attribute position information.+prop_prettyparse :: NExpr -> P.Result+prop_prettyparse p =+ let prog = show (pretty p)+ in case parse (pack prog) of+ Failure s -> P.rejected+ { P.reason = show $+ text "Parse failed:" </> text (show s)+ P.<$> P.indent 2 (pretty p) }+ Success v+ | equivUpToNormalization p v -> P.succeeded+ | otherwise ->+ let pp = normalise prog+ pv = normalise (show (pretty v))+ in (P.liftBool (pp == pv))+ { P.reason = show $+ text "----------------------------------------"+ P.<$> text "Expr before:" P.<$> P.indent 2 (text (PS.ppShow p))+ P.<$> text "----------------------------------------"+ P.<$> text "Expr after:" P.<$> P.indent 2 (text (PS.ppShow v))+ P.<$> text "----------------------------------------"+ P.<$> text "Pretty before:" P.<$> P.indent 2 (text prog)+ P.<$> text "----------------------------------------"+ P.<$> text "Pretty after:" P.<$> P.indent 2 (pretty v)+ P.<$> text "----------------------------------------"+ P.<$> text "Normalised before:" P.<$> P.indent 2 (text pp)+ P.<$> text "----------------------------------------"+ P.<$> text "Normalised after:" P.<$> P.indent 2 (text pv)+ P.<$> text "========================================"+ P.<$> text "Normalised diff:"+ P.<$> text (ppDiff (diff pp pv))+ P.<$> text "========================================"+ }+ where+ pretty = prettyNix+ parse = parseNixText++ normalise = unlines . map (reverse . dropWhile isSpace . reverse) . lines++ diff :: String -> String -> [Diff [String]]+ diff s1 s2 = getDiff (map (:[]) (lines s1)) (map (:[]) (lines s2))++tests :: Int -> TestTree+tests n = testProperty "Pretty/Parse Property" $+ withMaxSuccess n prop_prettyparse
@@ -11,14 +11,23 @@ case_indented_antiquotation :: Assertion case_indented_antiquotation = do- assertPretty (mkIndentedStr "echo $foo") "''echo $foo''"- assertPretty (mkIndentedStr "echo ${foo}") "''echo ''${foo}''"+ assertPretty (mkIndentedStr 0 "echo $foo") "''echo $foo''"+ assertPretty (mkIndentedStr 0 "echo ${foo}") "''echo ''${foo}''" case_string_antiquotation :: Assertion case_string_antiquotation = do- -- TODO: plain $ doesn't need to be escaped here either assertPretty (mkStr "echo $foo") "\"echo \\$foo\"" assertPretty (mkStr "echo ${foo}") "\"echo \\${foo}\""++case_function_params :: Assertion+case_function_params =+ assertPretty (mkFunction (mkParamset [] True) (mkInt 3)) "{ ... }:\n 3"++case_paths :: Assertion+case_paths = do+ assertPretty (mkPath False "~/test.nix") "~/test.nix"+ assertPretty (mkPath False "/test.nix") "/test.nix"+ assertPretty (mkPath False "./test.nix") "./test.nix" tests :: TestTree tests = $testGroupGenerator
@@ -1,39 +0,0 @@-{-# LANGUAGE TemplateHaskell, OverloadedStrings #-}-module ShorthandTests (tests) where--import Prelude--import Test.Tasty-import Test.Tasty.HUnit-import Test.Tasty.TH--import Control.Monad (forM_)-import Data.Monoid ((<>))-import Data.Fix--import Nix.Expr---case_mkDotsSymbolEscaping :: Assertion-case_mkDotsSymbolEscaping = do- let check xs errmsg assert =- forM_ xs $ \x -> assertBool (errmsg <> ": " <> show x) $ assert x- check plain "not a plain value" $ assertIsSingle- check nonPlain "not a non-plain value" $ not . assertIsSingle- where- plain = [ "abc09", "_A_'-", "AbC" ]- nonPlain = [ "abc def", "\\", "'abc", "\"", "-foo", "a.b.c" ]- assertIsSingle = isPlainSingle . getKey . mkDot "dummy"- getKey (Fix (NSelect _ [key] _)) = key- getKey _ = error "invalid"- isPlainSingle (StaticKey _) = True- isPlainSingle (DynamicKey (Plain (DoubleQuoted [Plain _]))) = False- isPlainSingle _ = error "invalid"--------------------------------tests :: TestTree-tests = $(testGroupGenerator)--
@@ -0,0 +1,67 @@+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE TypeApplications #-}++module TestCommon where++import Control.Monad.Catch+import Control.Monad.IO.Class+import Data.Text (Text, unpack)+import Data.Time+import Nix+import System.Environment+import System.IO+import System.Posix.Files+import System.Posix.Temp+import System.Process+import Test.Tasty.HUnit++hnixEvalFile :: Options -> FilePath -> IO (NValueNF (Lazy IO))+hnixEvalFile opts file = do+ parseResult <- parseNixFileLoc file+ case parseResult of+ Failure err ->+ error $ "Parsing failed for file `" ++ file ++ "`.\n" ++ show err+ Success expr -> do+ setEnv "TEST_VAR" "foo"+ runLazyM opts $+ catch (evaluateExpression (Just file) nixEvalExprLoc+ normalForm expr) $ \case+ NixException frames ->+ errorWithoutStackTrace . show+ =<< renderFrames @(NThunk (Lazy IO)) frames++hnixEvalText :: Options -> Text -> IO (NValueNF (Lazy IO))+hnixEvalText opts src = case parseNixText src of+ Failure err ->+ error $ "Parsing failed for expressien `"+ ++ unpack src ++ "`.\n" ++ show err+ Success expr ->+ runLazyM opts $ normalForm =<< nixEvalExpr Nothing expr++nixEvalString :: String -> IO String+nixEvalString expr = do+ (fp,h) <- mkstemp "nix-test-eval"+ hPutStr h expr+ hClose h+ res <- nixEvalFile fp+ removeLink fp+ return res++nixEvalFile :: FilePath -> IO String+nixEvalFile fp = readProcess "nix-instantiate" ["--eval", "--strict", fp] ""++assertEvalFileMatchesNix :: FilePath -> Assertion+assertEvalFileMatchesNix fp = do+ time <- liftIO getCurrentTime+ hnixVal <- (++"\n") . printNix <$> hnixEvalFile (defaultOptions time) fp+ nixVal <- nixEvalFile fp+ assertEqual fp nixVal hnixVal++assertEvalMatchesNix :: Text -> Assertion+assertEvalMatchesNix expr = do+ time <- liftIO getCurrentTime+ hnixVal <- (++"\n") . printNix <$> hnixEvalText (defaultOptions time) expr+ nixVal <- nixEvalString expr'+ assertEqual expr' nixVal hnixVal+ where+ expr' = unpack expr