diff --git a/plan2nix/Plan2Nix.hs b/plan2nix/Plan2Nix.hs index ce27d23..d4b284f 100644 --- a/plan2nix/Plan2Nix.hs +++ b/plan2nix/Plan2Nix.hs @@ -106,7 +106,8 @@ plan2nix args (Plan { packages, extras, compilerVersion, compilerPackages }) = d return $ fromString pkg $= mkPath False nix _ -> return [] let flags = concatMap (\case - (name, Just (Package v r flags _)) -> flags2nix name flags) $ Map.toList extras + (name, Just (Package _v _r f _)) -> flags2nix name f + _ -> []) $ Map.toList extras return $ mkNonRecSet [ "pkgs" $= ("hackage" ==> mkNonRecSet ( @@ -119,7 +120,7 @@ plan2nix args (Plan { packages, extras, compilerVersion, compilerPackages }) = d ])) , "extras" $= ("hackage" ==> mkNonRecSet [ "packages" $= extrasNix ]) , "modules" $= mkList [ - mkNonRecSet [ "packages" $= mkNonRecSet flags ] + mkParamset [("lib", Nothing)] True ==> mkNonRecSet [ "packages" $= mkNonRecSet flags ] ] ] where @@ -166,7 +167,9 @@ plan2nix args (Plan { packages, extras, compilerVersion, compilerPackages }) = d flags2nix :: Text -> HashMap Text Bool -> [Binding NExpr] flags2nix pkgName pkgFlags = [ quoted pkgName $= mkNonRecSet - [ "flags" $= mkNonRecSet [ quoted flag $= mkBool val + -- `mkOverride 900` is used here so that the default values will be replaced (they are 1000). + -- Values without a priority are treated as 100 and will replace these ones. + [ "flags" $= mkNonRecSet [ quoted flag $= ("lib" @. "mkOverride" @@ mkInt 900 @@ mkBool val) | (flag, val) <- Map.toList pkgFlags ] ] diff --git a/stack2nix/Stack2nix.hs b/stack2nix/Stack2nix.hs index 24d23d8..60f9542 100644 --- a/stack2nix/Stack2nix.hs +++ b/stack2nix/Stack2nix.hs @@ -80,7 +80,7 @@ stack2nix args stack@(Stack resolver compiler pkgs pkgFlags ghcOpts) = | (Just c) <- [compiler], let name = filter (`elem` ((['a'..'z']++['0'..'9']) :: [Char])) c])) , "resolver" $= fromString (quoted resolver) , "modules" $= mkList [ - mkNonRecSet [ "packages" $= mkNonRecSet flags ] + mkParamset [("lib", Nothing)] True ==> mkNonRecSet [ "packages" $= mkNonRecSet flags ] , mkNonRecSet [ "packages" $= mkNonRecSet ghcOptions ] ] ] ++ [ "compiler" $= fromString (quoted c) | (Just c) <- [compiler] @@ -112,7 +112,9 @@ extraDeps2nix pkgs = flags2nix :: PackageFlags -> [Binding NExpr] flags2nix pkgFlags = [ quoted pkgName $= mkNonRecSet - [ "flags" $= mkNonRecSet [ quoted flag $= mkBool val + -- `mkOverride 900` is used here so that the default values will be replaced (they are 1000). + -- Values without a priority are treated as 100 and will replace these ones. + [ "flags" $= mkNonRecSet [ quoted flag $= ("lib" @. "mkOverride" @@ mkInt 900 @@ mkBool val) | (flag, val) <- HM.toList flags ] ]