mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-22 12:04:40 +00:00
Merge pull request #71092 from roberth/arion-init
arion: init at 0.1.0.0
This commit is contained in:
commit
becfba9512
83
pkgs/applications/virtualization/arion/default.nix
Normal file
83
pkgs/applications/virtualization/arion/default.nix
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
{ pkgs
|
||||||
|
, lib
|
||||||
|
, haskellPackages
|
||||||
|
, haskell
|
||||||
|
, runCommand
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
/* This derivation builds the arion tool.
|
||||||
|
|
||||||
|
It is based on the arion-compose Haskell package, but adapted and extended to
|
||||||
|
- have the correct name
|
||||||
|
- have a smaller closure size
|
||||||
|
- have functions to use Arion from inside Nix: arion.eval and arion.build
|
||||||
|
- make it self-contained by including docker-compose
|
||||||
|
*/
|
||||||
|
arion =
|
||||||
|
justStaticExecutables (
|
||||||
|
overrideCabal
|
||||||
|
arion-compose
|
||||||
|
cabalOverrides
|
||||||
|
);
|
||||||
|
|
||||||
|
inherit (haskell.lib) justStaticExecutables overrideCabal;
|
||||||
|
|
||||||
|
inherit (haskellPackages) arion-compose;
|
||||||
|
|
||||||
|
cabalOverrides = o: {
|
||||||
|
buildTools = (o.buildTools or []) ++ [pkgs.makeWrapper];
|
||||||
|
passthru = (o.passthru or {}) // {
|
||||||
|
inherit eval build;
|
||||||
|
};
|
||||||
|
# Patch away the arion-compose name. Unlike the Haskell library, the program
|
||||||
|
# is called arion (arion was already taken on hackage).
|
||||||
|
pname = "arion";
|
||||||
|
src = arion-compose.src;
|
||||||
|
|
||||||
|
# PYTHONPATH
|
||||||
|
#
|
||||||
|
# We close off the python module search path!
|
||||||
|
#
|
||||||
|
# Accepting directories from the environment into the search path
|
||||||
|
# tends to break things. Docker Compose does not have a plugin
|
||||||
|
# system as far as I can tell, so I don't expect this to break a
|
||||||
|
# feature, but rather to make the program more robustly self-
|
||||||
|
# contained.
|
||||||
|
|
||||||
|
postInstall = ''${o.postInstall or ""}
|
||||||
|
mkdir -p $out/libexec
|
||||||
|
mv $out/bin/arion $out/libexec
|
||||||
|
makeWrapper $out/libexec/arion $out/bin/arion \
|
||||||
|
--unset PYTHONPATH \
|
||||||
|
--prefix PATH : ${lib.makeBinPath [ pkgs.docker-compose ]} \
|
||||||
|
;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Unpacked sources for evaluation by `eval`
|
||||||
|
srcUnpacked = runCommand "arion-src" {}
|
||||||
|
"mkdir $out; tar -C $out --strip-components=1 -xf ${arion-compose.src}";
|
||||||
|
|
||||||
|
/* Function for evaluating a composition
|
||||||
|
|
||||||
|
Re-uses this Nixpkgs evaluation instead of `arion-pkgs.nix`.
|
||||||
|
|
||||||
|
Returns the module system's `config` and `options` variables.
|
||||||
|
*/
|
||||||
|
eval = args@{...}:
|
||||||
|
import (srcUnpacked + "/src/nix/eval-composition.nix")
|
||||||
|
({ inherit pkgs; } // args);
|
||||||
|
|
||||||
|
/* Function to derivation of the docker compose yaml file
|
||||||
|
NOTE: The output will change: https://github.com/hercules-ci/arion/issues/82
|
||||||
|
|
||||||
|
This function is particularly useful on CI, although the references
|
||||||
|
to image tarballs may not always be desirable.
|
||||||
|
*/
|
||||||
|
build = args@{...}:
|
||||||
|
let composition = eval args;
|
||||||
|
in composition.config.out.dockerComposeYaml;
|
||||||
|
|
||||||
|
in arion
|
@ -17575,6 +17575,8 @@ in
|
|||||||
|
|
||||||
ario = callPackage ../applications/audio/ario { };
|
ario = callPackage ../applications/audio/ario { };
|
||||||
|
|
||||||
|
arion = callPackage ../applications/virtualization/arion { };
|
||||||
|
|
||||||
arora = callPackage ../applications/networking/browsers/arora { };
|
arora = callPackage ../applications/networking/browsers/arora { };
|
||||||
|
|
||||||
artha = callPackage ../applications/misc/artha { };
|
artha = callPackage ../applications/misc/artha { };
|
||||||
|
Loading…
Reference in New Issue
Block a user