Apache-2.0 licensed by Shea Levy
Maintained by [email protected]
This version can be pinned in stack with:hnix-store-core-0.8.0.0@sha256:c94fe476a9166b23b9bb593b583b30157cb7ab90c4f6b04a5a3a6dc075a21d9d,2950

hnix-store-core

Core types and functions for interacting with the Nix store.

Changes

0.8.0.0 2024-07-31

  • Changes:

    • System.Nix.StorePath.makeStorePathName renamed to System.Nix.StorePath.mkStorePathName
    • System.Nix.ReadOnlyStore moved to hnix-store-readonly package and renamed to System.Nix.Store.ReadOnly #247
    • System.Nix.Nar* moved to hnix-store-nar package #247
    • Arbitrary instances moved to hnix-store-tests package #241
    • System.Nix.Internal namespace was removed #236
    • StorePathMetadata converted to Metadata a #231
      • Moved to System.Nix.StorePath.Metadata #236
    • Constructors of StorePathName and StorePathHashPart are no longer exported. Use respective mkStorePath.. functions. #230
    • StorePath constructor is no longer exported. Prefer parsePath or parsePathFromText. If needed to construct a path directly, use unsafeMakeStorePath #247
    • StorePathSet type alias is no more, use HashSet StorePath #230
    • makeStorePath and parsePath now returns Either InvalidPathError StorePath #231
    • BuildResults timesBuild field changes type from Integer to Int #231
  • Additions:

    • System.Nix.Store.Types with FileIngestionMethod, PathFilter, RepairMode types #247 FileIngestionMethod was previously called NarHashMode
    • System.Nix.StorePath.parsePathFromText #236
    • Default StoreDir instance #231
    • System.Nix.StorePath.storePathHashPartToText #231
    • Added Generic and Show instances for Signature and NarSignature #231
    • Added Eq and Ord instances for SomeNamedDigest #231
    • BuildStatus grows NoSubstituters and ResolvesToAlreadyValid constructors #231
    • InvalidPathError replacing previous stringy error #231
    • Added Arbitrary instances for (exported by default) #230
      • StorePath
      • StorePathName
      • StorePathHashPart
      • StoreDir
    • Added Arbitrary instances for #231
      • BuildMode
      • BuildStatus
      • BuildResult
      • Derivation StorePath Text
      • DerivationOutput StorePath Text

0.7.0.0 2023-11-15

  • Changes:

    • StorePath no longer carries storePathRoot field and we have a stand-alone StoreDir type instead to be used instead of FilePath when store root directory is needed as a context #216
  • Fixes:

    • NAR encoding and decoding now supports case-insensitive filesystems #218
      • The “case hack” replicates the behavior of the use-case-hack option in Nix, which adds a suffix to conflicting filenames. This feature is enabled by default on macOS (darwin).
  • Additions: * data NarOptions has been added to configure NAR encoding and decoding. The optUseCaseHack field can be used to enable or disable the case hack #218 * New streamNarIOWithOptions and runParserWithOptions functions have been added to System.Nix.Nar to support the new configurable options #218

0.6.1.0 2023-01-02

  • Fixes:

    • NAR serialization compatibility (symlinks, directory symlinks, UTF-8 handling) #201 #203

0.6.0.0 2022-06-06

  • Breaking:

    • streamNarIO changes type and returns NarSource m #177
      • FilePath can turn to NarSource m using dumpPath
      • ByteString can turn to NarSource m using dumpString

0.5.0.0 2021-06-10

  • Breaking:

    • System.Nix.Hash:
      • Migration from packages cryptohash- -> cryptonite #157
        • rm newtype Digest in favour of cryptonite: newtype Digest
        • rm data HashAlgorithm in favour of cryptonite: class HashAlgorithm
        • rm class ValidAlgo in favour of cryptonite: class HashAlgorithm.
        • class NamedAlgo removed hashSize in favour of cryptonite: class HashAlgorithm: hashDigestSize. Former became a subclass of the latter.
        • rm hash in favour of cryptonite: hash
        • rm hashLazy in favour of cryptonite: hashlazy
      • Base encoding/decoding function for hashes (digests) changed (due to changes in type system & separation of specially truncated Nix Store hasing) #157
        • encode(InBase -> DigestWith)
        • decode(Base -> DigestWith)
    • System.Nix.StorePath #157
      • rm type StorePathHashAlgo = 'Truncated 20 'SHA256 in favour of StorePathHashPart & mkStorePathHashPart.
      • rm unStorePathName, please use GHC: coerce for StorePathName <-> Text, StorePathName data constructor is provided.
    • Internal modules now have export lists, if something, please contact.
  • Additional:

    • Support of GHC 9.0 #157
    • System.Nix.StorePath #157
      • exposed StorePathName data constructor to API.
      • added newtype StorePathHashPart = StorePathHashPart ByteString.
        • added builder mkStorePathHashPart :: ByteString -> StorePathHashPart
    • System.Nix.Hash #157
      • Nix store (which are specially truncated) hashes are now handled separately from other hashes:
        • add mkStorePathHash - a function to create a content into Nix storepath-style hash: mkStorePathHash :: HashAlgorithm a => ByteString -> ByteString but recommend to at once use mkStorePathHashPart.

0.4.3.0 2021-05-30

  • Additional:
    • System.Nix.ReadonlyStore: add a readonly computeStorePathForPath b85f7c8
    • System.Nix.ReadonlyStore: computeStorePathForPath: force SHA256 as it’s the only valid choice db71ece
    • makeTextPath: order the references 5fddf3c

0.4.2.0 2021-03-12

  • Additional:
    • Cabal now properly states tasty-discover as build-tool-depends 5d03ffc
    • Added explicit hie.yml cradle description for cabal to help Haskell Language Server to work with monorepo 5bad385
    • Removed vacuous Setup.hs, it was throwing-off HLS, and anyway file is vacuous and gets deprecated by Cabal itself a5b7a61
    • Nix dev env: removed GHC 8.6.5 support, afaik it is not even in Nixpkgs anymore cf04083
    • Test suite: fixed nar test for the envs without /proc (test suite now works on macOS) 2a897ab

0.4.1.0 2021-01-16

  • Big clean-up of dependencies.

0.4.0.0 2020-12-30

  • System.Nix.Hash no longer exports encodeBase16, decodeBase16 and their Base32 counterparts. These were replaced by encodeInBase and decodeBase functions accepting BaseEncoding data type #87
  • Support base16-bytestring >= 1 #86 #100

0.3.0.0 – 2020-11-29

  • System.Nix.Nar changes API to support NAR format streaming:
    • buildNarIO :: FilePath -> Handle -> IO () - Create a NAR from a regular filesystem object, stream it out on the Handle
    • unpackNarIO :: Handle -> FilePath -> IO () - Recreate filesystem object from a NAR file accessed by the Handle
  • StorePath type changed to simple variant without type level symbolic store path root.
  • Added makeFixedOutputPath to System.Nix.ReadonlyStore
  • Added decodeBase16 and decodeBase32 to System.Nix.Hash
  • System.Nix.StorePath module now provides
    • storePathToFilePath and storePathToText helpers
    • storePathToNarInfo for converting paths to narinfo URLs
    • parsePath function
    • pathParser Attoparsec parser
  • Added System.Nix.Build module
  • Added System.Nix.Derivation module
  • Removed System.Nix.Util module, moved to hnix-store-remote
  • Added base64 and SHA512 hash support

0.2.0.0 – 2020-03-12

Removed System.Nix.Store. We may reintroduce it later when multiple backends exist and we can tell what common effects they should share.

0.1.0.0 – 2019-03-18

  • First version.

hnix-store-core uses PVP Versioning.