git.iko.soy/typeable/stackage2nix
on master help sign in
Add: stack2nix executable skeleton
commit7eeb0a69d404924e4c9f98ac501f845bb8d0a3c2 authorDmitry Bushev <bushevdv@gmail.com> dateSun 23 Apr 2017, 18:07 (9 years ago) parent1504d89
4 files changed+55−10
app/Main.hs+29−2 src/Distribution/Nixpkgs/Haskell/Stack.hs+22 src/Lib.hs−6 stack2nix.cabal+4−2
app/Main.hs+29−2
@@ -1,6 +1,33 @@
1+{-# LANGUAGE RecordWildCards #-}
2+
13module Main where
24
3−import Lib
5+import Data.Monoid ( (<>) )
6+import Options.Applicative
7+import Distribution.Nixpkgs.Haskell.Stack
8+
9+data Options = Options
10+ { optStackYaml :: Maybe FilePath
11+ , optStackResolver :: Maybe String
12+ , optOutDir :: FilePath
13+ , optHackageDb :: Maybe FilePath
14+ } deriving (Show)
15+
16+options :: Parser Options
17+options = Options
18+ <$> optional (strArgument $ metavar "STACK_YAML")
19+ <*> optional (strOption $ long "resolver" <> metavar "RESOLVER" <> help "override stack resolver")
20+ <*> strOption (long "out" <> metavar "OUT" <> value "nix" <> showDefaultWith id <> help "output directory")
21+ <*> optional (strOption $ long "hackage-db" <> metavar "HACKAGE_DB" <> help "path to the local hackage db in tar format")
22+
23+pinfo :: ParserInfo Options
24+pinfo = info
25+ ( helper
26+ <*> options )
27+ ( fullDesc
28+ <> header "stack2nix converts Stack files into build instructions for Nix." )
429
530main :: IO ()
6−main = someFunc
31+main = do
32+ Options {..} <- execParser pinfo
33+ print nixpkgsOverride
src/Distribution/Nixpkgs/Haskell/Stack.hsnew file+22
@@ -0,0 +1,22 @@
1+module Distribution.Nixpkgs.Haskell.Stack where
2+
3+import Text.PrettyPrint
4+
5+nixpkgsOverride :: Doc
6+nixpkgsOverride = vcat
7+ [ text "{ nixpkgs ? import <nixpkgs> {}, compiler ? \"default\" }: "
8+ , text ""
9+ , text "let"
10+ , text " inherit (nixpkgs.stdenv.lib) extends;"
11+ , text " packageOverrides = super: let self = super.pkgs; in"
12+ , text " {"
13+ , text " pkgs = super.pkgs // {"
14+ , text " haskell = super.pkgs.haskell // {"
15+ , text " packages = super.pkgs.haskell.packages // {"
16+ , text " ${compiler} = super.pkgs.haskell.packages.ghc7103.override {};"
17+ , text " };"
18+ , text " };"
19+ , text " };"
20+ , text " };"
21+ , text "in packageOverrides nixpkgs"
22+ ]
src/Lib.hsdeleted−6
@@ -1,6 +0,0 @@
1−module Lib
2− ( someFunc
3− ) where
4−
5−someFunc :: IO ()
6−someFunc = putStrLn "someFunc"
stack2nix.cabal+4−2
@@ -13,8 +13,9 @@ cabal-version: >=1.10
1313
1414library
1515 hs-source-dirs: src
16− exposed-modules: Lib
17− build-depends: base >= 4.7 && < 5
16+ exposed-modules: Distribution.Nixpkgs.Haskell.Stack
17+ build-depends: base > 4.7 && < 5
18+ , pretty > 1.1 && < 2
1819 default-language: Haskell2010
1920
2021executable stack2nix
@@ -22,6 +23,7 @@ executable stack2nix
2223 main-is: Main.hs
2324 ghc-options: -threaded -rtsopts -with-rtsopts=-N
2425 build-depends: base
26+ , optparse-applicative > 0.13 && < 1
2527 , stack2nix
2628 default-language: Haskell2010
2729