patos/flake.nix

79 lines
2.4 KiB
Nix

{
description = "PatOS is a minimal, immutable Linux distribution specialized for the Patagia Platform.";
inputs = {
flake-utils.url = "github:numtide/flake-utils";
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
};
outputs =
{
self,
flake-utils,
nixpkgs,
}:
flake-utils.lib.eachDefaultSystem (
system:
let
buildParams = {
revision = self.shortRev or self.dirtyShortRev or "dirty";
updateUrl = builtins.getEnv "PATOS_UPDATE_URL";
secureBoot = builtins.getEnv "PATOS_ENABLE_SECURE_BOOT";
version = "0.0.1";
};
overlay = import ./overlays (buildParams // { });
pkgs = import nixpkgs {
inherit system;
overlays = [ overlay ];
};
pkgsCross = import nixpkgs {
inherit system;
overlays = [ overlay ];
crossSystem = {
config = "aarch64-unknown-linux-gnu";
};
};
in
{
packages = {
default = self.packages.${system}.image;
image = pkgs.callPackage ./pkgs/image (buildParams // { microcode = "intel"; });
image-aarch64 = pkgsCross.callPackage ./pkgs/image (buildParams // { });
qemu-uefi-tpm = pkgs.callPackage ./utils/qemu-uefi-tpm.nix { };
qemu-aarch64-uefi-tpm = pkgs.callPackage ./utils/qemu-aarch64-uefi-tpm.nix { };
# systemd sysext packages
debug-tools = pkgs.callPackage ./pkgs/sysext/debug-tools.nix (buildParams // { });
debug-tools-aarch64 = pkgsCross.callPackage ./pkgs/sysext/debug-tools.nix (buildParams // { });
firewall-tools = pkgs.callPackage ./pkgs/sysext/firewall-tools.nix (buildParams // { });
firewall-tools-aarch64 = pkgsCross.callPackage ./pkgs/sysext/firewall-tools.nix (buildParams // { });
linux-firmware = pkgs.callPackage ./pkgs/linux-firmware { };
};
checks = {
simple-test = pkgs.runCommand "simple-test" { } ''
${self.packages.${system}.default}/bin/my-program
touch $out
'';
};
formatter = pkgs.nixpkgs-fmt;
devShells.default = pkgs.mkShell {
buildInputs = with pkgs; [
just
nixd
nixfmt-rfc-style
self.packages.${system}.qemu-uefi-tpm
];
};
}
);
}