/ nix / script / exe / nix-dev.hs
nix-dev.hs
 1  #!/usr/bin/env runghc
 2  {-# LANGUAGE OverloadedStrings #-}
 3  
 4  -- \|
 5  -- nix-dev: Development-optimized Nix invocation
 6  --
 7  -- Disables eval cache and enables verbose output.
 8  -- See RFC-005 for rationale.
 9  --
10  -- Usage:
11  --   nix-dev build .#foo
12  --   nix-dev develop
13  
14  import Aleph.Script
15  import System.Environment (getArgs)
16  import System.Posix.Process (executeFile)
17  
18  main :: IO ()
19  main = do
20      args <- getArgs
21  
22      let globalOpts = ["--no-eval-cache", "--show-trace"]
23          buildOpts = ["--print-build-logs", "--keep-failed"]
24  
25          extraOpts = case args of
26              ("build" : _) -> globalOpts ++ buildOpts
27              ("develop" : _) -> globalOpts ++ buildOpts
28              ("run" : _) -> globalOpts ++ buildOpts
29              ("shell" : _) -> globalOpts ++ buildOpts
30              ("check" : _) -> globalOpts ++ buildOpts
31              _ -> globalOpts
32  
33      -- exec nix with our args prepended
34      executeFile "nix" True (args ++ extraOpts) Nothing