105 lines
4.3 KiB
Nix
105 lines
4.3 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
|
|
pkgs = import nixpkgs { inherit system; };
|
|
patosPkgs = self.packages.${system};
|
|
version = "0.0.1";
|
|
secureBoot = "false";
|
|
cpuArch = "intel";
|
|
updateUrl = "http://10.0.2.2:8000/";
|
|
in
|
|
{
|
|
packages = {
|
|
default = patosPkgs.image;
|
|
image = pkgs.callPackage ./pkgs/image { inherit patosPkgs version updateUrl cpuArch secureBoot; };
|
|
rootfs = pkgs.callPackage ./pkgs/rootfs/mkrootfs.nix { inherit patosPkgs version; };
|
|
initrd = pkgs.callPackage ./pkgs/rootfs/mkinitrd.nix { inherit patosPkgs version; };
|
|
kernel = pkgs.callPackage ./pkgs/kernel { };
|
|
glibc = pkgs.callPackage ./pkgs/glibc { };
|
|
busybox = pkgs.callPackage ./pkgs/busybox { };
|
|
openssl = pkgs.callPackage ./pkgs/openssl { };
|
|
cert = pkgs.callPackage ./pkgs/cert { };
|
|
kexec = pkgs.callPackage ./pkgs/kexec-tools { };
|
|
lvm2 = pkgs.callPackage ./pkgs/lvm2 { };
|
|
tpm2-tools = pkgs.callPackage ./pkgs/tpm2-tools { inherit patosPkgs; };
|
|
tpm2-tss = pkgs.callPackage ./pkgs/tpm2-tss { };
|
|
systemd = pkgs.callPackage ./pkgs/systemd { };
|
|
dbus-broker = pkgs.callPackage ./pkgs/dbus-broker { };
|
|
|
|
qemu-uefi-tpm = pkgs.callPackage ./utils/qemu-uefi-tpm.nix { };
|
|
|
|
debug-tools-sysext = pkgs.callPackage ./lib/make-sysext.nix {
|
|
name = "debug-tools";
|
|
version = "0.0.1";
|
|
packages = [
|
|
{ drv = pkgs.curl; path = "bin/curl"; }
|
|
{ drv = pkgs.bash; path = "bin/bash"; }
|
|
{ drv = patosPkgs.glibc; path = "bin/ldd"; }
|
|
{ drv = pkgs.keyutils; path = "bin/keyctl"; }
|
|
{ drv = pkgs.gnutar; path = "bin/tar"; }
|
|
{ drv = pkgs.binutils-unwrapped; path = "bin/strings"; }
|
|
{ drv = pkgs.strace; path = "bin/strace"; }
|
|
{ drv = patosPkgs.tpm2-tools; path = "bin/tpm2"; }
|
|
{ drv = patosPkgs.openssl; path = "bin/openssl"; }
|
|
{ drv = pkgs.cryptsetup; path = "bin/cryptsetup"; }
|
|
{ drv = pkgs.cryptsetup; path = "bin/veritysetup"; }
|
|
{ drv = pkgs.erofs-utils; path = "bin/mkfs.erofs"; }
|
|
# shared lib required for cryptsetup
|
|
{ drv = pkgs.popt; path = "lib/libpopt.so.0.0.2"; }
|
|
{ drv = pkgs.popt; path = "lib/libpopt.so.0"; }
|
|
{ drv = pkgs.popt; path = "lib/libpopt.so"; }
|
|
# shared lib required for mkfs.erofs
|
|
{ drv = pkgs.lz4.lib; path = "lib/liblz4.so.1.10.0"; }
|
|
{ drv = pkgs.lz4.lib; path = "lib/liblz4.so.1"; }
|
|
{ drv = pkgs.lz4.lib; path = "lib/liblz4.so"; }
|
|
# shared lib required for binutils
|
|
{ drv = pkgs.binutils-unwrapped.lib; path = "lib/libsframe.so.1.0.0"; }
|
|
{ drv = pkgs.binutils-unwrapped.lib; path = "lib/libsframe.so.1"; }
|
|
{ drv = pkgs.binutils-unwrapped.lib; path = "lib/libbfd-2.43.1.so"; }
|
|
{ drv = pkgs.binutils-unwrapped.lib; path = "lib/libbfd.so"; }
|
|
# shared lib required for strace
|
|
{ drv = pkgs.elfutils.out; path = "lib/libdw-0.192.so"; }
|
|
{ drv = pkgs.elfutils.out; path = "lib/libdw.so.1"; }
|
|
{ drv = pkgs.elfutils.out; path = "lib/libdw.so"; }
|
|
{ drv = pkgs.elfutils.out; path = "lib/libelf-0.192.so"; }
|
|
{ drv = pkgs.elfutils.out; path = "lib/libelf.so.1"; }
|
|
{ drv = pkgs.elfutils.out; path = "lib/libelf.so"; }
|
|
];
|
|
};
|
|
};
|
|
|
|
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
|
|
patosPkgs.qemu-uefi-tpm
|
|
];
|
|
};
|
|
|
|
}
|
|
);
|
|
}
|