cabal2nix-1.11: src/Distribution/NixOS/Derivation/License.hs
module Distribution.NixOS.Derivation.License
( License(..)
, fromCabalLicense
)
where
import qualified Distribution.License as Cabal ( License(..) )
import Data.Version ( Version(..) )
import Distribution.Text
import Text.PrettyPrint
data License
= GPL2
| GPL3
| LGPL21
| LGPL3
| BSD3
| BSD4
| MIT
| PublicDomain
| Proprietary
| Unknown (Maybe String)
deriving (Eq, Ord)
instance Show License where
show GPL2 = "self.stdenv.lib.licenses.gpl2"
show GPL3 = "self.stdenv.lib.licenses.gpl3"
show LGPL21 = "self.stdenv.lib.licenses.lgpl21"
show LGPL3 = "self.stdenv.lib.licenses.gpl3"
show BSD3 = "self.stdenv.lib.licenses.bsd3"
show BSD4 = "self.stdenv.lib.licenses.bsd4"
show MIT = "self.stdenv.lib.licenses.mit"
show PublicDomain = "self.stdenv.lib.licenses.publicDomain"
show Proprietary = "self.stdenv.lib.licenses.proprietary"
show (Unknown lic) = show (maybe "unknown" id lic)
instance Text License where
disp = text . show
parse = error "parsing Distribution.NixOS.Derivation.License is not supported yet"
fromCabalLicense :: Cabal.License -> License
fromCabalLicense (Cabal.GPL Nothing) = Unknown (Just "GPL")
fromCabalLicense (Cabal.GPL (Just (Version [2] []))) = GPL2
fromCabalLicense (Cabal.GPL (Just (Version [3] []))) = GPL3
fromCabalLicense (Cabal.LGPL Nothing) = Unknown (Just "LGPL")
fromCabalLicense (Cabal.LGPL (Just (Version [2,1] []))) = LGPL21
fromCabalLicense (Cabal.LGPL (Just (Version [3] []))) = LGPL3
fromCabalLicense Cabal.BSD3 = BSD3
fromCabalLicense Cabal.BSD4 = BSD4
fromCabalLicense Cabal.MIT = MIT
fromCabalLicense Cabal.PublicDomain = PublicDomain
fromCabalLicense Cabal.AllRightsReserved = Proprietary
fromCabalLicense Cabal.OtherLicense = Unknown Nothing
fromCabalLicense l = error $ "Distribution.NixOS.Derivation.License.fromCabalLicense: unknown license " ++ show l