Merge #103: Release 0.4

Rendered core ChangeLog https://github.com/sorki/hnix-store/blob/release0.4/ChangeLog.md
This commit is contained in:
Anton Latukha 2020-12-30 19:36:38 +02:00 committed by GitHub
commit fd09d29b8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 53 additions and 33 deletions

View File

@ -1,12 +1,10 @@
hnix-store
===========
# hnix-store
A Haskell interface to the [Nix] store.
[Nix]: https://nixos.org/nix
Rationale
-----------
## Rationale
`Nix` can conceptually be broken up into two layers, both (perhaps
unfortunately) named "Nix": The expression language and the store.
@ -33,36 +31,33 @@ implementations planned:
store, or reading a file) but performs mutating effects in-memory
only (for example, computing the store path a given directory would
live at if added to the store, without actually modifying anything).
* A `daemon` store, which implements the client side of the `Nix`
* A `remote` store, which implements the client side of the `Nix`
daemon Unix domain socket protocol, allowing full interaction with
the store on a system with the C++ daemon installed.
While this project is in the early stages of development, the `daemon`
store can be seen as something of a road map: We want to express and
implement all of (and only) the useful functionality available to a
client of the existing daemon protocol.
Note that there are currently no plans for hnix-store to include an
implementation which directly mutates the filesystem and database of
the `Nix` store.
[hnix]: https://github.com/haskell-nix/hnix
Packages
----------
## Packages
In the interest of separating concerns, this project is split into
several Haskell packages. The current expectation is at least one
package, [hnix-store-core], containing the core effect types and
several Haskell packages.
### [hnix-store-core]
Contains the core effect types and
fundamental operations combining them, agnostic to any particular
effectful implementation (e.g. in-memory, talking to the Nix daemon in
IO, etc.), with the actual implementations in a different package.
Whether each implementation gets its own package or not remains to be
seen.
The intent is that core business logic for a project that needs to
interact with the `Nix` store can simply depend on `hnix-store-core`,
and only at the very edges of the system would it be necessary to
bring in a specific implementation.
### [hnix-store-remote]
[Nix] worker protocol implementation for interacting with remote Nix store
via `nix-daemon`.
[hnix-store-core]: ./hnix-store-core
[hnix-store-remote]: ./hnix-store-remote

View File

@ -1,5 +1,5 @@
{ pkgs ? import <nixpkgs> {} }: let
overlay = import ./overlay.nix pkgs.haskell.lib;
overlay = import ./overlay.nix pkgs pkgs.haskell.lib;
overrideHaskellPackages = orig: {
buildHaskellPackages =
orig.buildHaskellPackages.override overrideHaskellPackages;

View File

@ -1,5 +1,16 @@
# Revision history for hnix-store-core
## [next](https://github.com/haskell-nix/hnix-store/compare/0.4.0.0...master) 2021-MM-DD
* No changes yet
## [0.4.0.0](https://github.com/haskell-nix/hnix-store/compare/0.3.0.0...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](https://github.com/haskell-nix/hnix-store/pull/87)
* Support `base16-bytestring >= 1` [#86](https://github.com/haskell-nix/hnix-store/pull/86) [#100](https://github.com/haskell-nix/hnix-store/pull/100)
## 0.3.0.0 -- 2020-11-29
* `System.Nix.Nar` changes API to support NAR format streaming:

View File

@ -1,5 +1,4 @@
hnix-store-core
=================
# hnix-store-core
Core effects for interacting with the Nix store.
@ -10,7 +9,6 @@ on the store.
[System.Nix.StorePath]: ./src/System/Nix/StorePath.hs
Tests
======
# Tests
- `ghcid --command "cabal repl test-suite:format-tests" --test="Main.main"`

View File

@ -1,5 +1,5 @@
name: hnix-store-core
version: 0.3.0.1
version: 0.4.0.0
synopsis: Core effects for interacting with the Nix store.
description:
This package contains types and functions needed to describe

View File

@ -1,5 +1,13 @@
# Revision history for hnix-store-remote
## [next](https://github.com/haskell-nix/hnix-store/compare/0.4.0.0...master) 2021-MM-DD
* No changes yet
## [0.4.0.0](https://github.com/haskell-nix/hnix-store/compare/0.3.0.0...0.4.0.0) 2020-12-30
* `hnix-store-core` compatibility
## 0.3.0.0 -- 2020-11-29
* Restored most store API functions except `addToStoreNar`

View File

@ -1,9 +1,10 @@
hnix-store-remote
=================
# hnix-store-remote
Nix worker protocol implementation for interacting with remote Nix store
[Nix] worker protocol implementation for interacting with remote Nix store
via `nix-daemon`.
[Nix]: https://nixos.org/nix
## API
[System.Nix.Store.Remote]: ./src/System/Nix/Store/Remote.hs

View File

@ -1,5 +1,5 @@
name: hnix-store-remote
version: 0.3.0.0
version: 0.4.0.0
synopsis: Remote hnix store
description: Implementation of the nix store using the daemon protocol.
homepage: https://github.com/haskell-nix/hnix-store
@ -45,7 +45,7 @@ library
, unordered-containers
, filepath
, time
, hnix-store-core
, hnix-store-core >= 0.4 && <0.5
, vector
hs-source-dirs: src
default-language: Haskell2010

View File

@ -1,8 +1,15 @@
hlib: helf: huper: {
pkgs: hlib: helf: huper: {
hnix-store-core =
helf.callCabal2nix "hnix-store-core" ./hnix-store-core {};
hnix-store-remote =
helf.callCabal2nixWithOptions "hnix-store-remote" ./hnix-store-remote "-fio-testsuite" {};
(helf.callCabal2nixWithOptions
"hnix-store-remote"
./hnix-store-remote
"-fio-testsuite"
{}
).overrideAttrs (attrs: {
buildInputs = attrs.buildInputs ++ [ pkgs.nix pkgs.which ];
});
# 2020-12-30: NOTE: Remove after switch from cryptohash
cryptohash-sha512 =
hlib.unmarkBroken ( hlib.doJailbreak huper.cryptohash-sha512 );