diff --git a/flake.nix b/flake.nix index 92bbdc6..fca20df 100644 --- a/flake.nix +++ b/flake.nix @@ -1,102 +1,19 @@ { - inputs = { - nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05"; - }; + inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-23.05"; outputs = { self, nixpkgs }: let system = "x86_64-linux"; crossSystem = "aarch64-linux"; + pkgs = import nixpkgs { inherit system; - - overlays = [ - (self: super: { - systemd = super.systemd.override { - pname = "systemd-minimal"; - withAcl = false; - withAnalyze = false; - withApparmor = false; - withAudit = false; - withCompression = false; - withCoredump = false; - withCryptsetup = false; - withDocumentation = false; - withEfi = false; - withFido2 = false; - withHostnamed = false; - withHomed = false; - withImportd = false; - withLibBPF = false; - withLibidn2 = false; - withLocaled = false; - withMachined = false; - withNetworkd = false; - withNss = false; - withOomd = false; - withPCRE2 = false; - withPolkit = false; - withPortabled = false; - withRemote = false; - withResolved = false; - withShellCompletions = false; - withTimedated = false; - withTimesyncd = false; - withTpm2Tss = false; - withUserDb = false; - # This is necessary for any installation - # withPam = false; - # withHwdb = false; - # withLogind = false; - }; - - libaom = super.libaom.override { - enableButteraugli = false; - }; - - pin_control = self.callPackage ./pin_control { }; - }) - ]; - - crossSystem = { - gcc.cpu = "cortex-a53"; - config = "aarch64-unknown-linux-gnu"; - linux-kernel = { - DTB = true; - autoModules = true; - baseConfig = "defconfig"; - - extraConfig = '' - # Raspberry Pi 3 stuff. Not needed for s >= 4.10. - ARCH_BCM2835 y - BCM2835_MBOX y - BCM2835_WDT y - RASPBERRYPI_FIRMWARE y - RASPBERRYPI_POWER y - SERIAL_8250_BCM2835AUX y - SERIAL_8250_EXTENDED y - SERIAL_8250_SHARE_IRQ y - - # Cavium ThunderX stuff. - PCI_HOST_THUNDER_ECAM y - - # Nvidia Tegra stuff. - PCI_TEGRA y - - # The default (=y) forces us to have the XHCI firmware available in initrd, - # which our initrd builder can't currently do easily. - USB_XHCI_TEGRA m - ''; - - name = "aarch64-multiplatform"; - preferBuiltin = true; - target = "Image"; - }; - }; + crossSystem = import ./triviOS/cross.nix; + overlays = [ (import ./triviOS/overlay.nix) ]; }; in { - packages.${crossSystem} = pkgs; + formatter.${system} = pkgs.pkgsBuildBuild.nixpkgs-fmt; nixosConfigurations.triviOS = nixpkgs.lib.nixosSystem { inherit pkgs; @@ -104,6 +21,6 @@ modules = [ ./triviOS ]; }; - formatter.${system} = pkgs.pkgsBuildBuild.nixpkgs-fmt; + packages.${crossSystem} = pkgs; }; } diff --git a/triviOS/cross.nix b/triviOS/cross.nix new file mode 100644 index 0000000..0e95a42 --- /dev/null +++ b/triviOS/cross.nix @@ -0,0 +1,36 @@ +{ + config = "aarch64-unknown-linux-gnu"; + gcc.cpu = "cortex-a53"; + + linux-kernel = { + DTB = true; + autoModules = true; + baseConfig = "defconfig"; + + extraConfig = '' + # Raspberry Pi 3 stuff. Not needed for s >= 4.10. + ARCH_BCM2835 y + BCM2835_MBOX y + BCM2835_WDT y + RASPBERRYPI_FIRMWARE y + RASPBERRYPI_POWER y + SERIAL_8250_BCM2835AUX y + SERIAL_8250_EXTENDED y + SERIAL_8250_SHARE_IRQ y + + # Cavium ThunderX stuff. + PCI_HOST_THUNDER_ECAM y + + # Nvidia Tegra stuff. + PCI_TEGRA y + + # The default (=y) forces us to have the XHCI firmware available in initrd, + # which our initrd builder can't currently do easily. + USB_XHCI_TEGRA m + ''; + + name = "aarch64-multiplatform"; + preferBuiltin = true; + target = "Image"; + }; +} diff --git a/triviOS/overlay.nix b/triviOS/overlay.nix new file mode 100644 index 0000000..7f3821f --- /dev/null +++ b/triviOS/overlay.nix @@ -0,0 +1,46 @@ +self: super: { + systemd = super.systemd.override { + pname = "systemd-minimal"; + withAcl = false; + withAnalyze = false; + withApparmor = false; + withAudit = false; + withCompression = false; + withCoredump = false; + withCryptsetup = false; + withDocumentation = false; + withEfi = false; + withFido2 = false; + withHostnamed = false; + withHomed = false; + withImportd = false; + withLibBPF = false; + withLibidn2 = false; + withLocaled = false; + withMachined = false; + withNetworkd = false; + withNss = false; + withOomd = false; + withPCRE2 = false; + withPolkit = false; + withPortabled = false; + withRemote = false; + withResolved = false; + withShellCompletions = false; + withTimedated = false; + withTimesyncd = false; + withTpm2Tss = false; + withUserDb = false; + + # Se implican y son necesarios: + # withPam = true; + # withHwdb = true; + # withLogind = true; + }; + + libaom = super.libaom.override { + enableButteraugli = false; + }; + + pin_control = self.callPackage ../pin_control { }; +}