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