{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable"; nixng = { url = "github:nix-community/NixNG"; inputs.nixpkgs.follows = "nixpkgs"; }; website = { url = "git+https://gitea.redalder.org/Magic_RB/website"; inputs.nixpkgs.follows = "nixpkgs"; }; camptules = { url = "git+https://gitea.redalder.org/ThyW/camptules"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, nixng, ... }@inputs: with nixpkgs.lib; let supportedSystems = [ "x86_64-linux" "i686-linux" "aarch64-linux" ]; forAllSystems' = systems: fun: nixpkgs.lib.genAttrs systems fun; forAllSystems = forAllSystems' supportedSystems; containers = let base = { nglib = nixng.nglib nixpkgs.lib; inherit nixpkgs; }; in { hydra = (import ./containers/hydra.nix base).hydra; hydraPostgresql = (import ./containers/hydra.nix base).postgresql; ingressToothpick = import ./containers/ingress-toothpick.nix base; ingressBlowhole = import ./containers/ingress-blowhole.nix base; website = import ./containers/website.nix (base // { inherit (inputs.website) website; }); jmusicbot = import ./containers/jmusicbot.nix base; camptules = (import ./containers/camptules.nix (base // { inherit (inputs) camptules; })); gitea = import ./containers/gitea.nix base; minecraft = import ./containers/minecraft.nix base; mosquitto = import ./containers/mosquitto.nix base; dovecot = import ./containers/dovecot.nix base; getmail = import ./containers/getmail base; syncthing = import ./containers/syncthing.nix base; zigbee2mqtt = import ./containers/zigbee2mqtt.nix base; home-assistant = import ./containers/home-assistant.nix base; reicio = import ./containers/reicio.nix base; }; in { ociImages = mapAttrs (n: v: v.config.system.build.ociImage) containers; nixngSystems = containers; hydraJobs = let pkgs = import nixpkgs { system = "x86_64-linux"; }; makeJob = container: pkgs.stdenv.mkDerivation { name = "${container.stream.imageName}-hydra-job"; buildPhase = '' _workdir=$(mktemp -d) mkdir -p $out/nix-support $out/layers ${container.stream} | tar -xf - -C $_workdir for img in $_workdir/*/*.tar ; do _hash=$(basename $(dirname $img)) cp $img $out/layers/$_hash.tar done _config=$(basename $(find $_workdir -name '*.json' ! -name 'manifest.json' -type f)) cp $_workdir/manifest.json $out/manifest.json cp $_workdir/$_config $out/$_config ln -s ${container.stream} $out/stream cat > $out/nix-support/hydra-build-products <