biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / development / tools / continuous-integration / hercules-ci-agent / default.nix
blob8d4805341d55b7370521bdad74713330c2cb39ce
2   crun,
3   git,
4   gnutar,
5   gzip,
6   haskell,
7   haskellPackages,
8   lib,
9   makeBinaryWrapper,
10   nixos,
11   openssh,
12   stdenv,
13   testers,
15 let
16   inherit (haskell.lib.compose) overrideCabal addBuildTools justStaticExecutables;
17   inherit (lib) makeBinPath;
18   bundledBins = [ gnutar gzip git openssh ] ++ lib.optional stdenv.isLinux crun;
20   pkg =
21     # justStaticExecutables is needed due to https://github.com/NixOS/nix/issues/2990
22     overrideCabal
23       (o: {
24         postInstall = ''
25           ${o.postInstall or ""}
26           mkdir -p $out/libexec
27           mv $out/bin/hercules-ci-agent $out/libexec
28           makeWrapper $out/libexec/hercules-ci-agent $out/bin/hercules-ci-agent --prefix PATH : ${lib.escapeShellArg (makeBinPath bundledBins)}
29         '';
30       })
31       (addBuildTools [ makeBinaryWrapper ] (justStaticExecutables haskellPackages.hercules-ci-agent));
32 in pkg.overrideAttrs (finalAttrs: o: {
33     meta = o.meta // {
34       position = toString ./default.nix + ":1";
35     };
36     passthru = o.passthru // {
37       tests = {
38         version = testers.testVersion {
39           package = finalAttrs.finalPackage;
40           command = "hercules-ci-agent --help";
41         };
42       } // lib.optionalAttrs (stdenv.isLinux) {
43         # Does not test the package, but evaluation of the related NixOS module.
44         nixos-simple-config = (nixos {
45           boot.loader.grub.enable = false;
46           fileSystems."/".device = "bogus";
47           services.hercules-ci-agent.enable = true;
48           # Dummy value for testing only.
49           system.stateVersion = lib.trivial.release; # TEST ONLY
50         }).config.system.build.toplevel;
52         nixos-many-options-config = (nixos ({ pkgs, ... }: {
53           boot.loader.grub.enable = false;
54           fileSystems."/".device = "bogus";
55           services.hercules-ci-agent = {
56             enable = true;
57             package = pkgs.hercules-ci-agent;
58             settings = {
59               workDirectory = "/var/tmp/hci";
60               binaryCachesPath = "/var/keys/binary-caches.json";
61               labels.foo.bar.baz = "qux";
62               labels.qux = ["q" "u"];
63               apiBaseUrl = "https://hci.dev.biz.example.com";
64               concurrentTasks = 42;
65             };
66           };
67           # Dummy value for testing only.
68           system.stateVersion = lib.trivial.release; # TEST ONLY
69         })).config.system.build.toplevel;
70       };
71     };
72   })