Description
Utility functions for using funflow with nix.
Description
This library provides functions to create flows which run commands in environments created by nix commands. It is designed to be like the docker integration but the environments are created by nix rather than in a container.
README.md
funflow-nix
provides functions for creating flows which run in a nix environment.
The library exposes the NixConfig
data type which allows you to specify the environment and command to run. This is then turned into a flow using nix
.
A complete example can be seen in examples/Simple.hs
.
We can pin the version of nixpkgs we want to use by specifying a tarball to use as the source.
tarballSource :: NixpkgsSource
tarballSource = NixpkgsTarball [uri|https://github.com/NixOS/nixpkgs/archive/a19357241973538212b5cb435dde84ad25cbe337.tar.gz|]
nixConfig :: Environment -> NixConfig
nixConfig senv =
NixShellConfig {
environment = senv
, command = "jq"
, args = [ParamText "--version"]
, env = []
, stdout = StdOutCapture
, nixpkgsSource = tarballSource
}
Once the config has been specified. It can be turned into a flow by using the nix
function.
jqVersionPkg :: SimpleFlow () String
jqVersionPkg = readString_ <<< nix (\() -> nixConfig (PackageList ["jq"]))