parent
3d7778f5cf
commit
5413d6ab6b
6 changed files with 240 additions and 42 deletions
95
flake.nix
95
flake.nix
|
@ -2,23 +2,42 @@
|
|||
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?ref=nixos-unstable";
|
||||
patagia-agent.url = "git+ssh://git@patagia.dev/patagia/patagia-agent?ref=main";
|
||||
patagia-agent.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{ self, nixpkgs }:
|
||||
{
|
||||
lib = {
|
||||
self,
|
||||
flake-utils,
|
||||
nixpkgs,
|
||||
patagia-agent,
|
||||
}:
|
||||
flake-utils.lib.eachDefaultSystem (
|
||||
system:
|
||||
let
|
||||
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
overlays = [
|
||||
(import ./overlays)
|
||||
];
|
||||
};
|
||||
|
||||
# Prepare an update package for the system.
|
||||
mkUpdate =
|
||||
nixos:
|
||||
let
|
||||
config = nixos.config;
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux.pkgs;
|
||||
in
|
||||
nixos.pkgs.runCommand "update-${config.system.image.version}"
|
||||
pkgs.runCommand "update-${config.system.image.version}"
|
||||
{
|
||||
nativeBuildInputs = with pkgs; [ xz ];
|
||||
nativeBuildInputs = with pkgs; [
|
||||
erofs-utils
|
||||
xz
|
||||
];
|
||||
}
|
||||
''
|
||||
mkdir -p $out
|
||||
|
@ -33,40 +52,36 @@
|
|||
nixos:
|
||||
let
|
||||
config = nixos.config;
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux.pkgs;
|
||||
in
|
||||
nixos.pkgs.runCommand "update-${config.system.image.version}"
|
||||
pkgs.runCommand "update-${config.system.image.version}"
|
||||
{
|
||||
nativeBuildInputs = with pkgs; [ qemu ];
|
||||
nativeBuildInputs = with pkgs; [
|
||||
erofs-utils
|
||||
qemu
|
||||
];
|
||||
}
|
||||
''
|
||||
mkdir -p $out
|
||||
qemu-img convert -f raw -O qcow2 -C ${config.system.build.image}/${config.boot.uki.name}_${config.system.image.version}.raw $out/disk.qcow2
|
||||
'';
|
||||
};
|
||||
|
||||
devShells.x86_64-linux.default =
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
in
|
||||
pkgs.mkShell {
|
||||
in
|
||||
{
|
||||
devShell = pkgs.mkShell {
|
||||
packages = [
|
||||
pkgs.erofs-utils
|
||||
pkgs.just
|
||||
self.packages.x86_64-linux.qemu-efi
|
||||
self.packages.${system}.qemu-efi
|
||||
];
|
||||
};
|
||||
|
||||
packages.x86_64-linux = {
|
||||
default = self.packages.x86_64-linux.patos_image;
|
||||
patos_image = self.lib.mkInstallImage self.nixosConfigurations.patos;
|
||||
patos_update = self.lib.mkUpdate self.nixosConfigurations.patos;
|
||||
packages = {
|
||||
default = self.packages.${system}.patos_image;
|
||||
patos_image = mkInstallImage self.nixosConfigurations.${system}.patos;
|
||||
patos_update = mkUpdate self.nixosConfigurations.${system}.patos;
|
||||
|
||||
# A helper script to run the disk images above.
|
||||
qemu-efi =
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
in
|
||||
pkgs.writeShellApplication {
|
||||
# FIXME: only do for x86_64
|
||||
# A helper script to run the disk images above.
|
||||
qemu-efi = pkgs.writeShellApplication {
|
||||
name = "qemu-efi";
|
||||
|
||||
runtimeInputs = [ pkgs.qemu_kvm ];
|
||||
|
@ -80,16 +95,24 @@
|
|||
-serial stdio "$@"
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
nixosConfigurations = {
|
||||
patos = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [
|
||||
./base.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
nixosConfigurations = rec {
|
||||
patos = nixpkgs.lib.nixosSystem {
|
||||
specialArgs.pkgs = pkgs;
|
||||
system = system;
|
||||
modules = [
|
||||
{
|
||||
_module.args = {
|
||||
inherit patagia-agent;
|
||||
};
|
||||
}
|
||||
./base.nix
|
||||
# ./modules/patagia-agent.nix
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue