srx-platform-nix/nix/packages.nix

41 lines
1.4 KiB
Nix
Raw Permalink Normal View History

2024-07-04 13:47:18 +02:00
{ self, inputs, config, ... }:
{
flake.hydraJobs = {
inherit (self) checks packages;
};
perSystem = { pkgs, self', system, ... }:
let
inherit (config) flake;
inherit (pkgs) lib linkFarm;
nixosDrvs = lib.mapAttrs (_: nixos: nixos.config.system.build.toplevel) flake.nixosConfigurations;
homeDrvs = lib.mapAttrs (_: home: home.activationPackage) flake.homeConfigurations;
hostDrvs = nixosDrvs // homeDrvs;
compatHosts = lib.filterAttrs (_: host: host.hostPlatform == system) flake.hosts;
compatHostDrvs = lib.mapAttrs (name: _: hostDrvs.${name}) compatHosts;
compatHostsFarm = linkFarm "hosts-${system}" (lib.mapAttrsToList (name: path: { inherit name path; }) compatHostDrvs);
packagesAdditional = { inherit (pkgs) nix-fast-build; };
packagesBlacklist = [ ];
packages = lib.mapAttrs' (name: lib.nameValuePair "package-${name}") (
lib.filterAttrs (name: _v: !(builtins.elem name packagesBlacklist)) self'.packages);
in
{
_module.args = {
pkgs = import inputs.nixpkgs {
inherit system;
overlays = [ self.overlays.default ];
config = {
allowUnfree = true;
allowAliases = true;
};
};
};
packages = (
lib.optionalAttrs (compatHosts != { }) { default = compatHostsFarm; }
) // compatHostDrvs // packagesAdditional;
checks = packages;
};
}