1+ {-# LANGUAGE CPP #-}
12{-# LANGUAGE OverloadedStrings #-}
23{-# LANGUAGE NamedFieldPuns #-}
34{-# LANGUAGE LambdaCase #-}
@@ -6,10 +7,14 @@ module Main (main) where
67
78import Cabal2Nix
89import Cabal2Nix.Util ( quoted )
10+ #if !MIN_VERSION_base(4, 17, 0)
11+ import Control.Applicative ( liftA2 )
12+ #endif
913import Control.Monad.Trans.State.Strict
1014import Crypto.Hash.SHA256 ( hash )
1115import qualified Data.ByteString.Base16 as Base16
1216import qualified Data.ByteString.Char8 as BS
17+ import Data.Char ( isUpper )
1318import Data.Foldable ( toList
1419 , for_
1520 )
@@ -49,7 +54,6 @@ import System.Environment ( getArgs )
4954import System.FilePath ( (</>)
5055 , (<.>)
5156 )
52- import Data.Char (isUpper )
5357
5458-- Avoid issues with case insensitive file systems by escaping upper case
5559-- characters with a leading _ character.
@@ -74,17 +78,20 @@ main = do
7478 let (nixFiles, cabalFiles) =
7579 runState (fmap (toList . (Seq. sortOn fst )) $ foldMapWithKeyA package2nix db) mempty
7680 createDirectoryIfMissing False out
77- writeFile (out </> " default.nix" ) $
78- " with builtins; mapAttrs (_: mapAttrs (_: data: rec {\n \
79- \ inherit (data) sha256;\n \
80- \ revisions = data.revisions // {\n \
81- \ default = revisions.\" ${data.revisions.default}\" ;\n \
82- \ };\n \
83- \})) {\n "
84- -- Import all the per package nix files
85- <> mconcat (map (\ (pname, _) ->
86- " " <> quoted pname <> " = import ./nix/" <> escapeUpperCase pname <> " .nix;\n " ) nixFiles)
87- <> " }\n "
81+ writeFile (out </> " default.nix" ) $ unlines [
82+ " with builtins; mapAttrs (_: mapAttrs (_: data: rec {" ,
83+ " inherit (data) sha256;" ,
84+ " revisions = data.revisions // {" ,
85+ " default = revisions.\" ${data.revisions.default}\" ;" ,
86+ " };" ,
87+ " })) {" ,
88+ -- Import all the per package nix files
89+ unlines [
90+ " " <> quoted pname <> " = import ./nix/" <> escapeUpperCase pname <> " .nix;"
91+ | (pname, _) <- nixFiles
92+ ],
93+ " }"
94+ ]
8895
8996 createDirectoryIfMissing False (out </> " nix" )
9097 for_ nixFiles $ \ (pname, nix) ->
0 commit comments