1
+ {-# LANGUAGE CPP #-}
1
2
{-# LANGUAGE OverloadedStrings #-}
2
3
{-# LANGUAGE NamedFieldPuns #-}
3
4
{-# LANGUAGE LambdaCase #-}
@@ -6,10 +7,14 @@ module Main (main) where
6
7
7
8
import Cabal2Nix
8
9
import Cabal2Nix.Util ( quoted )
10
+ #if !MIN_VERSION_base(4, 17, 0)
11
+ import Control.Applicative ( liftA2 )
12
+ #endif
9
13
import Control.Monad.Trans.State.Strict
10
14
import Crypto.Hash.SHA256 ( hash )
11
15
import qualified Data.ByteString.Base16 as Base16
12
16
import qualified Data.ByteString.Char8 as BS
17
+ import Data.Char ( isUpper )
13
18
import Data.Foldable ( toList
14
19
, for_
15
20
)
@@ -49,7 +54,6 @@ import System.Environment ( getArgs )
49
54
import System.FilePath ( (</>)
50
55
, (<.>)
51
56
)
52
- import Data.Char (isUpper )
53
57
54
58
-- Avoid issues with case insensitive file systems by escaping upper case
55
59
-- characters with a leading _ character.
@@ -74,17 +78,20 @@ main = do
74
78
let (nixFiles, cabalFiles) =
75
79
runState (fmap (toList . (Seq. sortOn fst )) $ foldMapWithKeyA package2nix db) mempty
76
80
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
+ ]
88
95
89
96
createDirectoryIfMissing False (out </> " nix" )
90
97
for_ nixFiles $ \ (pname, nix) ->
0 commit comments