Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- type MonadInfallibleNixThunk m = (CliLog m, HasCliConfig NixThunkError m, MonadIO m, MonadMask m)
- type MonadNixThunk m = (MonadInfallibleNixThunk m, CliThrow NixThunkError m, MonadFail m)
- data NixThunkError
- prettyNixThunkError :: NixThunkError -> Text
- _NixThunkError_Unstructured :: Prism' NixThunkError Text
- _NixThunkError_ProcessFailure :: Prism' NixThunkError ProcessFailure
- data ThunkData
- data ThunkPtr = ThunkPtr {}
- type NixSha256 = Text
- data ThunkRev = ThunkRev {}
- data ThunkSource
- thunkSourceToGitSource :: ThunkSource -> GitSource
- data GitHubSource = GitHubSource {}
- newtype GitUri = GitUri {}
- gitUriToText :: GitUri -> Text
- data GitSource = GitSource {}
- newtype ThunkConfig = ThunkConfig {}
- data ThunkUpdateConfig = ThunkUpdateConfig {}
- data ThunkPackConfig = ThunkPackConfig {}
- data ThunkCreateSource
- data ThunkCreateConfig = ThunkCreateConfig {}
- forgetGithub :: Bool -> GitHubSource -> GitSource
- commitNameToRef :: Name Commit -> Ref SHA1
- getNixSha256ForUriUnpacked :: MonadNixThunk m => GitUri -> m NixSha256
- nixPrefetchGit :: MonadNixThunk m => GitUri -> Text -> Bool -> m NixSha256
- data ReadThunkError
- = ReadThunkError_UnrecognizedThunk
- | ReadThunkError_UnrecognizedPaths (Maybe ThunkSpec) (NonEmpty FilePath)
- | ReadThunkError_MissingPaths (NonEmpty FilePath)
- | ReadThunkError_UnparseablePtr FilePath String
- | ReadThunkError_FileError FilePath IOError
- | ReadThunkError_FileDoesNotMatch FilePath Text
- | ReadThunkError_AmbiguousPackedState ThunkSpec ThunkSpec
- prettyReadThunkError :: ReadThunkError -> Text
- failReadThunkErrorWhile :: MonadError NixThunkError m => Text -> ReadThunkError -> m a
- didMatchThunkSpec :: ReadThunkError -> Bool
- unpackedDirName :: FilePath
- attrCacheFileName :: FilePath
- pinnedNixpkgsPath :: FilePath
- data ThunkFileSpec
- data ThunkSpec = ThunkSpec {}
- thunkSpecTypes :: NonEmpty (NonEmpty ThunkSpec)
- matchThunkSpecToDir :: (MonadError ReadThunkError m, MonadIO m, MonadCatch m) => ThunkSpec -> FilePath -> Set FilePath -> m ThunkData
- readThunkWith :: MonadNixThunk m => NonEmpty (NonEmpty ThunkSpec) -> FilePath -> m (Either ReadThunkError ThunkData)
- readThunk :: MonadNixThunk m => FilePath -> m (Either ReadThunkError ThunkData)
- parseThunkPtr :: (Object -> Parser ThunkSource) -> Object -> Parser ThunkPtr
- parseGitHubSource :: Object -> Parser GitHubSource
- parseGitSource :: Object -> Parser GitSource
- overwriteThunk :: MonadNixThunk m => FilePath -> ThunkPtr -> m ()
- thunkPtrToSpec :: ThunkPtr -> ThunkSpec
- encodeThunkPtrData :: ThunkPtr -> ByteString
- createThunk' :: MonadNixThunk m => ThunkCreateConfig -> m ()
- createThunk :: MonadNixThunk m => FilePath -> Either ThunkSpec ThunkPtr -> m ()
- updateThunkToLatest :: MonadNixThunk m => ThunkUpdateConfig -> FilePath -> m ()
- setThunk :: MonadNixThunk m => ThunkConfig -> FilePath -> GitSource -> String -> m ()
- gitHubThunkSpecs :: NonEmpty ThunkSpec
- gitHubThunkSpecV1 :: ThunkSpec
- gitHubThunkSpecV2 :: ThunkSpec
- gitHubThunkSpecV3 :: ThunkSpec
- gitHubThunkSpecV4 :: ThunkSpec
- legacyGitHubThunkSpec :: Text -> Text -> ThunkSpec
- gitHubThunkSpecV5 :: ThunkSpec
- gitHubThunkSpecV6 :: ThunkSpec
- gitHubThunkSpecV7 :: ThunkSpec
- gitHubThunkSpecV8 :: ThunkSpec
- parseGitHubJsonBytes :: ByteString -> Either String ThunkPtr
- gitThunkSpecs :: NonEmpty ThunkSpec
- gitThunkSpecV1 :: ThunkSpec
- gitThunkSpecV2 :: ThunkSpec
- gitThunkSpecV3 :: ThunkSpec
- gitThunkSpecV4 :: ThunkSpec
- legacyGitThunkSpec :: Text -> Text -> ThunkSpec
- gitThunkSpecV5 :: ThunkSpec
- gitThunkSpecV6 :: ThunkSpec
- gitThunkSpecV7 :: ThunkSpec
- gitThunkSpecV8 :: ThunkSpec
- parseGitJsonBytes :: ByteString -> Either String ThunkPtr
- mkThunkSpec :: Text -> FilePath -> (ByteString -> Either String ThunkPtr) -> Text -> ThunkSpec
- parseJsonObject :: (Object -> Parser a) -> ByteString -> Either String a
- nixBuildThunkAttrWithCache :: (MonadIO m, MonadLog Output m, HasCliConfig NixThunkError m, MonadMask m, MonadError NixThunkError m, MonadFail m) => ThunkSpec -> FilePath -> String -> m (Maybe FilePath)
- nixBuildAttrWithCache :: (MonadLog Output m, HasCliConfig NixThunkError m, MonadIO m, MonadMask m, MonadError NixThunkError m, MonadFail m) => FilePath -> String -> m FilePath
- updateThunk :: MonadNixThunk m => FilePath -> (FilePath -> m a) -> m a
- finalMsg :: Bool -> (a -> Text) -> Maybe (a -> Text)
- checkThunkDirectory :: MonadNixThunk m => FilePath -> m ()
- unpackThunk :: MonadNixThunk m => FilePath -> m ()
- unpackThunk' :: MonadNixThunk m => Bool -> FilePath -> m ()
- gitCloneForThunkUnpack :: MonadNixThunk m => GitSource -> Ref hash -> FilePath -> m ()
- readGitProcess :: MonadNixThunk m => FilePath -> [String] -> m Text
- ignoreGitConfig :: ProcessSpec -> ProcessSpec
- packThunk :: MonadNixThunk m => ThunkPackConfig -> FilePath -> m ThunkPtr
- packThunk' :: MonadNixThunk m => Bool -> ThunkPackConfig -> FilePath -> m ThunkPtr
- modifyThunkPtrByConfig :: ThunkConfig -> ThunkPtr -> ThunkPtr
- data CheckClean
- getThunkPtr :: forall m. MonadNixThunk m => CheckClean -> FilePath -> Maybe Bool -> m ThunkPtr
- getLatestRev :: MonadNixThunk m => ThunkSource -> m ThunkRev
- uriThunkPtr :: MonadNixThunk m => GitUri -> Maybe Bool -> Maybe Text -> Maybe Text -> m ThunkPtr
- thunkCreateSourcePtr :: MonadNixThunk m => ThunkCreateSource -> Maybe Bool -> Maybe Text -> Maybe Text -> m ThunkPtr
- uriToThunkSource :: MonadNixThunk m => GitUri -> Maybe Bool -> Maybe Text -> m ThunkSource
- guessGitRepoIsPrivate :: MonadNixThunk m => GitUri -> m Bool
- githubThunkRev :: forall m. MonadNixThunk m => GitHubSource -> Text -> m ThunkRev
- gitThunkRev :: MonadNixThunk m => GitSource -> Text -> m ThunkRev
- gitGetCommitBranch :: MonadNixThunk m => GitUri -> Maybe Text -> m (Text, CommitId)
- parseGitUri :: Text -> Maybe GitUri
- parseFileURI :: Text -> Maybe URI
- parseAbsoluteURI :: Text -> Maybe URI
- parseSshShorthand :: Text -> Maybe URI
- newtype Ref hash = Ref {}
- newtype RefInvalid = RefInvalid {}
- refFromHexString :: HashAlgorithm hash => String -> Ref hash
- refFromHex :: HashAlgorithm hash => ByteString -> Ref hash
- refToHexString :: Ref hash -> String
Documentation
type MonadInfallibleNixThunk m = (CliLog m, HasCliConfig NixThunkError m, MonadIO m, MonadMask m) Source #
type MonadNixThunk m = (MonadInfallibleNixThunk m, CliThrow NixThunkError m, MonadFail m) Source #
data NixThunkError Source #
Instances
ThunkData_Packed ThunkSpec ThunkPtr | Packed thunk |
ThunkData_Checkout | Checked out thunk that was unpacked from this pointer |
A reference to the exact data that a thunk should translate into
Instances
Eq ThunkPtr Source # | |
Ord ThunkPtr Source # | |
Defined in Nix.Thunk.Internal | |
Show ThunkPtr Source # | |
A specific revision of data; it may be available from multiple sources
Instances
Eq ThunkRev Source # | |
Ord ThunkRev Source # | |
Defined in Nix.Thunk.Internal | |
Show ThunkRev Source # | |
data ThunkSource Source #
A location from which a thunk's data can be retrieved
ThunkSource_GitHub GitHubSource | A source specialized for GitHub |
ThunkSource_Git GitSource | A plain repo source |
Instances
Eq ThunkSource Source # | |
Defined in Nix.Thunk.Internal (==) :: ThunkSource -> ThunkSource -> Bool Source # (/=) :: ThunkSource -> ThunkSource -> Bool Source # | |
Ord ThunkSource Source # | |
Defined in Nix.Thunk.Internal compare :: ThunkSource -> ThunkSource -> Ordering Source # (<) :: ThunkSource -> ThunkSource -> Bool Source # (<=) :: ThunkSource -> ThunkSource -> Bool Source # (>) :: ThunkSource -> ThunkSource -> Bool Source # (>=) :: ThunkSource -> ThunkSource -> Bool Source # max :: ThunkSource -> ThunkSource -> ThunkSource Source # min :: ThunkSource -> ThunkSource -> ThunkSource Source # | |
Show ThunkSource Source # | |
Defined in Nix.Thunk.Internal |
data GitHubSource Source #
Instances
Eq GitHubSource Source # | |
Defined in Nix.Thunk.Internal (==) :: GitHubSource -> GitHubSource -> Bool Source # (/=) :: GitHubSource -> GitHubSource -> Bool Source # | |
Ord GitHubSource Source # | |
Defined in Nix.Thunk.Internal compare :: GitHubSource -> GitHubSource -> Ordering Source # (<) :: GitHubSource -> GitHubSource -> Bool Source # (<=) :: GitHubSource -> GitHubSource -> Bool Source # (>) :: GitHubSource -> GitHubSource -> Bool Source # (>=) :: GitHubSource -> GitHubSource -> Bool Source # max :: GitHubSource -> GitHubSource -> GitHubSource Source # min :: GitHubSource -> GitHubSource -> GitHubSource Source # | |
Show GitHubSource Source # | |
Defined in Nix.Thunk.Internal |
gitUriToText :: GitUri -> Text Source #
Instances
Eq GitSource Source # | |
Ord GitSource Source # | |
Defined in Nix.Thunk.Internal | |
Show GitSource Source # | |
newtype ThunkConfig Source #
Instances
Show ThunkConfig Source # | |
Defined in Nix.Thunk.Internal |
data ThunkUpdateConfig Source #
Instances
Show ThunkUpdateConfig Source # | |
Defined in Nix.Thunk.Internal |
data ThunkPackConfig Source #
Instances
Show ThunkPackConfig Source # | |
Defined in Nix.Thunk.Internal |
data ThunkCreateSource Source #
The source to be used for creating thunks.
ThunkCreateSource_Absolute GitUri | Create a thunk from an absolute reference to a Git repository:
URIs like |
ThunkCreateSource_Relative FilePath | Create a thunk from a local folder. If the folder exists, then
it is made absolute using the current working directory and
treated as a |
Instances
Show ThunkCreateSource Source # | |
Defined in Nix.Thunk.Internal |
data ThunkCreateConfig Source #
Instances
Show ThunkCreateConfig Source # | |
Defined in Nix.Thunk.Internal |
forgetGithub :: Bool -> GitHubSource -> GitSource Source #
Convert a GitHub source to a regular Git source. Assumes no submodules.
getNixSha256ForUriUnpacked :: MonadNixThunk m => GitUri -> m NixSha256 Source #
nixPrefetchGit :: MonadNixThunk m => GitUri -> Text -> Bool -> m NixSha256 Source #
data ReadThunkError Source #
ReadThunkError_UnrecognizedThunk | A generic error that can happen while reading a thunk. |
ReadThunkError_UnrecognizedPaths (Maybe ThunkSpec) (NonEmpty FilePath) | The thunk directory has extraneous paths. The |
ReadThunkError_MissingPaths (NonEmpty FilePath) | The thunk directory has missing paths. |
ReadThunkError_UnparseablePtr FilePath String | We could not parse the given file as per the thunk specification.
The |
ReadThunkError_FileError FilePath IOError | We encountered an |
ReadThunkError_FileDoesNotMatch FilePath Text | We read the given file just fine, but its contents do not match what was expected for the specification. |
ReadThunkError_AmbiguousPackedState ThunkSpec ThunkSpec | We parsed two valid thunk specs for this directory. |
prettyReadThunkError :: ReadThunkError -> Text Source #
Pretty-print a ReadThunkError
for display to the user
failReadThunkErrorWhile Source #
:: MonadError NixThunkError m | |
=> Text | String describing what we were doing. |
-> ReadThunkError | The error |
-> m a |
Fail due to a ReadThunkError
with a standardised error message.
didMatchThunkSpec :: ReadThunkError -> Bool Source #
Did we manage to match the thunk directory to one or more known thunk specs before raising this error?
pinnedNixpkgsPath :: FilePath Source #
A path from which our known-good nixpkgs can be fetched. NOTE: This path is hardcoded, and only exists so subsumed thunk specs (v7 specifically) can be parsed.
data ThunkFileSpec Source #
Specification for how a file in a thunk version works.
ThunkFileSpec_Ptr (ByteString -> Either String ThunkPtr) | This file specifies |
ThunkFileSpec_FileMatches Text | This file must match the given content exactly |
ThunkFileSpec_CheckoutIndicator | Existence of this directory indicates that the thunk is unpacked |
ThunkFileSpec_AttrCache | This directory is an attribute cache |
Specification for how a set of files in a thunk version work.
:: (MonadError ReadThunkError m, MonadIO m, MonadCatch m) | |
=> ThunkSpec |
|
-> FilePath | Path to directory |
-> Set FilePath | Set of file paths relative to the given directory |
-> m ThunkData |
Attempts to match a ThunkSpec
to a given directory.
readThunkWith :: MonadNixThunk m => NonEmpty (NonEmpty ThunkSpec) -> FilePath -> m (Either ReadThunkError ThunkData) Source #
readThunk :: MonadNixThunk m => FilePath -> m (Either ReadThunkError ThunkData) Source #
Read a packed or unpacked thunk based on predefined thunk specifications.
parseThunkPtr :: (Object -> Parser ThunkSource) -> Object -> Parser ThunkPtr Source #
overwriteThunk :: MonadNixThunk m => FilePath -> ThunkPtr -> m () Source #
thunkPtrToSpec :: ThunkPtr -> ThunkSpec Source #
createThunk' :: MonadNixThunk m => ThunkCreateConfig -> m () Source #
createThunk :: MonadNixThunk m => FilePath -> Either ThunkSpec ThunkPtr -> m () Source #
updateThunkToLatest :: MonadNixThunk m => ThunkUpdateConfig -> FilePath -> m () Source #
setThunk :: MonadNixThunk m => ThunkConfig -> FilePath -> GitSource -> String -> m () Source #
gitHubThunkSpecs :: NonEmpty ThunkSpec Source #
All recognized github standalone loaders, ordered from newest to oldest. This tool will only ever produce the newest one when it writes a thunk.
gitHubThunkSpecV6 :: ThunkSpec Source #
See gitHubThunkSpecV7
.
NOTE: v6 spec thunks are broken! They import the pinned nixpkgs in an incorrect way. GitHub thunks for public repositories with no submodules will still work, but update as soon as possible.
gitHubThunkSpecV7 :: ThunkSpec Source #
Specification for GitHub thunks which use a specific, pinned
version of nixpkgs for fetching, rather than using nixpkgs
from
NIX_PATH
. The "v7" specs ensure that thunks can be fetched even
when NIX_PATH
is unset.
gitHubThunkSpecV8 :: ThunkSpec Source #
Specification for GitHub thunks which use a specific, pinned
version of nixpkgs for fetching, rather than using nixpkgs
from
NIX_PATH
.
Unlike gitHubThunKSpecV7
, this thunk specification fetches the
nixpkgs tarball from GitHub, so it will fail on environments without
a network connection.
gitThunkSpecV6 :: ThunkSpec Source #
See gitThunkSpecV7
.
NOTE: v6 spec thunks are broken! They import the pinned nixpkgs
in an incorrect way. GitHub thunks for public repositories with no
submodules will still work, but update as soon as possible.
gitThunkSpecV7 :: ThunkSpec Source #
Specification for Git thunks which use a specific, pinned version
of nixpkgs for fetching, rather than using nixpkgs
from
NIX_PATH
. The "v7" specs ensure that thunks can be fetched even
when NIX_PATH
is unset.
gitThunkSpecV8 :: ThunkSpec Source #
Specification for Git thunks which use a specific, pinned version
version of nixpkgs for fetching, rather than using nixpkgs
from
NIX_PATH
.
Unlike gitHubThunKSpecV7
, this thunk specification fetches the
nixpkgs tarball from GitHub, so it will fail on environments without
a network connection.
mkThunkSpec :: Text -> FilePath -> (ByteString -> Either String ThunkPtr) -> Text -> ThunkSpec Source #
parseJsonObject :: (Object -> Parser a) -> ByteString -> Either String a Source #
nixBuildThunkAttrWithCache Source #
:: (MonadIO m, MonadLog Output m, HasCliConfig NixThunkError m, MonadMask m, MonadError NixThunkError m, MonadFail m) | |
=> ThunkSpec | |
-> FilePath | Path to directory containing Thunk |
-> String | Attribute to build |
-> m (Maybe FilePath) | Symlink to cached or built nix output WARNING: If the thunk uses an impure reference such as 'nixpkgs' the caching mechanism will fail as it merely measures the modification time of the cache link and the expression to build. |
Checks a cache directory to see if there is a fresh symlink to the result of building an attribute of a thunk. If no cache hit is found, nix-build is called to build the attribute and the result is symlinked into the cache.
nixBuildAttrWithCache Source #
:: (MonadLog Output m, HasCliConfig NixThunkError m, MonadIO m, MonadMask m, MonadError NixThunkError m, MonadFail m) | |
=> FilePath | Path to directory containing Thunk |
-> String | Attribute to build |
-> m FilePath | Symlink to cached or built nix output |
Build a nix attribute, and cache the result if possible
updateThunk :: MonadNixThunk m => FilePath -> (FilePath -> m a) -> m a Source #
Safely update thunk using a custom action
A temporary working space is used to do any update. When the custom action successfully completes, the resulting (packed) thunk is copied back to the original location.
checkThunkDirectory :: MonadNixThunk m => FilePath -> m () Source #
Check that we are not somewhere inside the thunk directory
unpackThunk :: MonadNixThunk m => FilePath -> m () Source #
unpackThunk' :: MonadNixThunk m => Bool -> FilePath -> m () Source #
gitCloneForThunkUnpack Source #
:: MonadNixThunk m | |
=> GitSource | Git source to use |
-> Ref hash | Commit hash to reset to |
-> FilePath | Directory to clone into |
-> m () |
readGitProcess :: MonadNixThunk m => FilePath -> [String] -> m Text Source #
Read a git process ignoring the global configuration (according to ignoreGitConfig
).
ignoreGitConfig :: ProcessSpec -> ProcessSpec Source #
Prevent the called process from reading Git configuration. This
isn't as locked-down as isolateGitProc
to make sure the Git process
can still interact with the user (e.g. ssh-askpass
), but it still
ignores enough of the configuration to ensure that thunks are
reproducible.
packThunk :: MonadNixThunk m => ThunkPackConfig -> FilePath -> m ThunkPtr Source #
packThunk' :: MonadNixThunk m => Bool -> ThunkPackConfig -> FilePath -> m ThunkPtr Source #
modifyThunkPtrByConfig :: ThunkConfig -> ThunkPtr -> ThunkPtr Source #
data CheckClean Source #
CheckClean_FullCheck | Check that the repo is clean, including .gitignored files |
CheckClean_NotIgnored | Check that the repo is clean, not including .gitignored files |
CheckClean_NoCheck | Don't check that the repo is clean |
getThunkPtr :: forall m. MonadNixThunk m => CheckClean -> FilePath -> Maybe Bool -> m ThunkPtr Source #
getLatestRev :: MonadNixThunk m => ThunkSource -> m ThunkRev Source #
Get the latest revision available from the given source
uriThunkPtr :: MonadNixThunk m => GitUri -> Maybe Bool -> Maybe Text -> Maybe Text -> m ThunkPtr Source #
Convert a URI to a thunk
If the URL is a github URL, we try to just download an archive for performance. If that doesn't work (e.g. authentication issue), we fall back on just doing things the normal way for git repos in general, and save it as a regular git thunk.
:: MonadNixThunk m | |
=> ThunkCreateSource | Where is the repository? |
-> Maybe Bool | Is it private? |
-> Maybe Text | Shall we fetch a specific branch? |
-> Maybe Text | Shall we check out a specific commit? |
-> m ThunkPtr |
Convert a ThunkCreateSource
to a ThunkPtr
.
uriToThunkSource :: MonadNixThunk m => GitUri -> Maybe Bool -> Maybe Text -> m ThunkSource Source #
N.B. Cannot infer all fields.
If the thunk is a GitHub thunk and fails, we do *not* fall back like with
uriThunkPtr
. Unlike a plain URL, a thunk src explicitly states which method
should be employed, and so we respect that.
guessGitRepoIsPrivate :: MonadNixThunk m => GitUri -> m Bool Source #
githubThunkRev :: forall m. MonadNixThunk m => GitHubSource -> Text -> m ThunkRev Source #
gitThunkRev :: MonadNixThunk m => GitSource -> Text -> m ThunkRev Source #
gitGetCommitBranch :: MonadNixThunk m => GitUri -> Maybe Text -> m (Text, CommitId) Source #
Given the URI to a git remote, and an optional branch name, return the name of the branch along with the hash of the commit at tip of that branch.
If the branch name is passed in, it is returned exactly as-is. If it is not passed it, the default branch of the repo is used instead.
Represent a git reference (SHA1)
Instances
Eq (Ref hash) Source # | |
Ord (Ref hash) Source # | |
Defined in Nix.Thunk.Internal | |
Show (Ref hash) Source # | |
newtype RefInvalid Source #
Invalid Reference exception raised when using something that is not a ref as a ref.
Instances
Eq RefInvalid Source # | |
Defined in Nix.Thunk.Internal (==) :: RefInvalid -> RefInvalid -> Bool Source # (/=) :: RefInvalid -> RefInvalid -> Bool Source # | |
Data RefInvalid Source # | |
Defined in Nix.Thunk.Internal gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RefInvalid -> c RefInvalid Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RefInvalid Source # toConstr :: RefInvalid -> Constr Source # dataTypeOf :: RefInvalid -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c RefInvalid) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RefInvalid) Source # gmapT :: (forall b. Data b => b -> b) -> RefInvalid -> RefInvalid Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RefInvalid -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RefInvalid -> r Source # gmapQ :: (forall d. Data d => d -> u) -> RefInvalid -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> RefInvalid -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RefInvalid -> m RefInvalid Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RefInvalid -> m RefInvalid Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RefInvalid -> m RefInvalid Source # | |
Show RefInvalid Source # | |
Defined in Nix.Thunk.Internal | |
Exception RefInvalid Source # | |
Defined in Nix.Thunk.Internal |
refFromHexString :: HashAlgorithm hash => String -> Ref hash Source #
refFromHex :: HashAlgorithm hash => ByteString -> Ref hash Source #
refToHexString :: Ref hash -> String Source #
transform a ref into an hexadecimal string