packages feed

horizon-gen-nix 0.5 → 0.6

raw patch · 6 files changed

+38/−18 lines, 6 filesdep ~horizon-spec

Dependency ranges changed: horizon-spec

Files

ChangeLog.md view
@@ -1,5 +1,10 @@ # Changelog for horizon-gen-nix +## 0.6++* Support horizon-spec 0.6+* Compiler flag now correctly preprocesses cabal files.+ ## v0.5  * Support horizon-spec 0.5
horizon-gen-nix.cabal view
@@ -1,6 +1,6 @@ cabal-version:      3.0 name:               horizon-gen-nix-version:            0.5+version:            0.6 synopsis:           Generate nix expressions from horizon-spec definitions description:        Generate nix expressions from horizon-spec definitions category:           Package Management, Nix@@ -49,7 +49,7 @@     , directory     , distribution-nixpkgs     , either-    , horizon-spec          >=0.4  && <0.6+    , horizon-spec          >=0.6  && <0.7     , language-nix     , lens     , optparse-applicative
src/Horizon/Gen/Nix.hs view
@@ -6,7 +6,9 @@   , makeOverlay   ) where +import qualified Data.Text               as T (unpack) import           Dhall                   (auto, inputFile)+import           Distribution.Parsec     (eitherParsec) import           Horizon.Gen.Nix.Options (HorizonOptions (MkHorizonOptions),                                           fromInputFile, horizonGenNixOptsInfo,                                           optInputFile)@@ -15,7 +17,8 @@ import           Horizon.Spec            (HorizonExport (MakeOverlay, MakePackageSet),                                           OverlayExportSettings (MkOverlayExportSettings),                                           PackageSetExportSettings (MkPackageSetExportSettings),-                                          fromOverlay, packages)+                                          compiler, fromCompiler, fromOverlay,+                                          packages) import           Options.Applicative     (execParser) import           Path                    (toFilePath) import           Path.Dhall              ()@@ -23,13 +26,21 @@  makeMakePackageSet :: PackageSetExportSettings -> IO () makeMakePackageSet (MkPackageSetExportSettings d f xs) = do-  writeHaskellPackages d (packages xs)-  writeMakePackageSet d f xs+  case eitherParsec (T.unpack $ fromCompiler $ compiler xs) of+    Left e -> putStrLn e+    Right x -> do+      writeHaskellPackages d x (packages xs)+      writeMakePackageSet d f xs  makeOverlay :: OverlayExportSettings -> IO ()-makeOverlay (MkOverlayExportSettings d f xs) = do-  writeHaskellPackages d (fromOverlay xs)-  writeOverlay d f xs+makeOverlay (MkOverlayExportSettings d f xs) = let+  xs' = fromOverlay xs+  in+  case eitherParsec (T.unpack $ fromCompiler $ compiler xs') of+    Left e -> putStrLn e+    Right x -> do+      writeHaskellPackages d x (packages xs')+      writeOverlay d f xs  processHorizonExport :: HorizonExport -> IO () processHorizonExport (MakePackageSet settings) = makeMakePackageSet settings
src/Horizon/Gen/Nix/Cabal2Nix/Options.hs view
@@ -32,7 +32,8 @@                                                                  optUrl) import           Control.Lens                                   ((#)) import qualified Data.Text                                      as T-import           Distribution.Compiler                          (buildCompilerId)+import           Distribution.Compiler                          (CompilerId,+                                                                 buildCompilerId) import           Distribution.Nixpkgs.Fetch                     (FetchSubmodules (FetchSubmodules)) import           Distribution.Nixpkgs.Haskell.PackageSourceSpec (HpackUse (NoHpack)) import           Distribution.System                            (buildPlatform)@@ -85,15 +86,15 @@   , optFetchSubmodules = FetchSubmodules   } -haskellPackageToCabal2NixOptions :: HaskellPackage -> Options-haskellPackageToCabal2NixOptions (MkHaskellPackage x ms _) =+haskellPackageToCabal2NixOptions :: CompilerId -> HaskellPackage -> Options+haskellPackageToCabal2NixOptions c (MkHaskellPackage x ms _) =   applyModifiersToCabal2NixOptions ms $ (     case x of       FromHackage z -> applyHackageSourceToCabal2NixOptions z       FromGit z     -> applyGitSourceToCabal2NixOptions z       FromLocal z   -> applyLocalSourceToCabal2NixOptions z       FromTarball z -> applyTarballSourceToCabal2NixOptions z-    ) mkDefaultCabal2NixOptions+    ) mkDefaultCabal2NixOptions { optCompiler = c }  applyGitSourceToCabal2NixOptions   :: GitSource
src/Horizon/Gen/Nix/Writers.hs view
@@ -13,6 +13,7 @@ import           Control.Monad                           (forM_, unless) import           Data.Map                                (keys, toList) import qualified Data.Text                               as T+import           Distribution.Compiler                   (CompilerId) import           Distribution.Nixpkgs.Haskell.Derivation (Derivation,                                                           benchmarkDepends,                                                           testDepends)@@ -46,7 +47,7 @@   writeOverlay :: PackagesDir -> OverlayFile -> Overlay -> IO ()-writeOverlay (MkPackagesDir d) (MkOverlayFile f) (MkOverlay (MkPackageList xs)) = withFile (toFilePath f) WriteMode $ \h -> do+writeOverlay (MkPackagesDir d) (MkOverlayFile f) (MkOverlay (MkPackageSet _ (MkPackageList xs))) = withFile (toFilePath f) WriteMode $ \h -> do   hPutStrLn h "{ pkgs, ... }:"   hPutStrLn h ""   hPutStrLn h "final: prev: with pkgs.haskell.lib; {"@@ -80,14 +81,14 @@ writeDerivation :: Path b File -> Derivation -> IO () writeDerivation f = writeFile (toFilePath f) . show . prettyDerivation -writeHaskellPackage :: PackagesDir -> Name -> HaskellPackage -> IO ()-writeHaskellPackage (MkPackagesDir d) (MkName f) y = do-  let o = haskellPackageToCabal2NixOptions y+writeHaskellPackage :: PackagesDir -> CompilerId -> Name -> HaskellPackage -> IO ()+writeHaskellPackage (MkPackagesDir d) c (MkName f) y = do+  let o = haskellPackageToCabal2NixOptions c y   createDirectoryIfMissing True (toFilePath d)   f' <- parseRelFile  $ T.unpack (f <> ".nix")   let j = d </> f'   q  <- doesFileExist $ toFilePath j   unless q $ writeCabal2Nix j (modifiers y) o -writeHaskellPackages :: PackagesDir -> PackageList -> IO ()-writeHaskellPackages d = mapM_ (uncurry $ writeHaskellPackage d) . toList . fromPackageList+writeHaskellPackages :: PackagesDir -> CompilerId -> PackageList -> IO ()+writeHaskellPackages d c = mapM_ (uncurry $ writeHaskellPackage d c) . toList . fromPackageList
test/Spec.hs view
@@ -19,6 +19,7 @@ outputFilesOverlayRel =   [ $(mkRelFile "overlay.nix")   , $(mkRelFile "pkgs/lens.nix")+  , $(mkRelFile "pkgs/hashable.nix")   , $(mkRelFile "pkgs/Cabal-syntax.nix")   , $(mkRelFile "pkgs/network-mux.nix")   ]@@ -27,6 +28,7 @@ outputFilesPackageSetRel =   [ $(mkRelFile "initial-packages.nix")   , $(mkRelFile "pkgs/lens.nix")+  , $(mkRelFile "pkgs/hashable.nix")   , $(mkRelFile "pkgs/Cabal-syntax.nix")   , $(mkRelFile "pkgs/network-mux.nix")   ]