jbi-0.1.0.0: lib/System/JBI/Commands/Nix.hs
{-# LANGUAGE DeriveAnyClass, DeriveGeneric, OverloadedStrings #-}
{- |
Module : System.JBI.Commands.Nix
Description : Nix tooling support
Copyright : (c) Ivan Lazar Miljenovic
License : MIT
Maintainer : Ivan.Miljenovic@gmail.com
-}
module System.JBI.Commands.Nix where
import System.JBI.Commands.Tool
import System.JBI.Tagged
import Control.Applicative (liftA2)
import Data.Aeson (ToJSON)
import Data.Char (isSpace)
import GHC.Generics (Generic)
--------------------------------------------------------------------------------
data NixSupport = NixSupport
{ nixShell :: !(Maybe (Installed NixShell))
, cabal2Nix :: !(Maybe (Installed Cabal2Nix))
} deriving (Eq, Ord, Show, Read, Generic, ToJSON)
findNixSupport :: IO NixSupport
findNixSupport = liftA2 NixSupport commandInformation
commandInformation
data NixShell
instance Tool NixShell where
commandName = "nix-shell"
data Cabal2Nix
instance Tool Cabal2Nix where
commandName = "cabal2nix"
commandVersion = withTaggedF (tryFindVersionBy getVer)
where
-- There's a digit in the command name, so the naive approach
-- doesn't work.
getVer = takeVersion . drop 1 . dropWhile (not . isSpace)