From 4d48676072d7cf388196a01ab4bc91be110267b1 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Fri, 27 Sep 2024 11:35:50 -0700 Subject: [PATCH 1/3] Support different host systems --- flake.nix | 15 ++++++++++----- pkgs/default.nix | 6 +++--- template/flake.nix | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/flake.nix b/flake.nix index 84b2676e..83a3f115 100644 --- a/flake.nix +++ b/flake.nix @@ -11,11 +11,12 @@ }; outputs = { self, nixpkgs, nixpkgs-unstable, androidPkgs, flake-compat, ... }@inputs: let - pkgs = import ./pkgs/default.nix { inherit inputs; }; + getPkgs = system: import ./pkgs/default.nix { inherit inputs system; }; in { # robotnixSystem evaluates a robotnix configuration - lib.robotnixSystem = configuration: import ./default.nix { - inherit configuration pkgs; + lib.robotnixSystem = system: configuration: import ./default.nix { + inherit configuration; + pkgs = getPkgs system; }; defaultTemplate = { @@ -26,12 +27,16 @@ nixosModule = import ./nixos; # Contains all robotnix nixos modules nixosModules.attestation-server = import ./nixos/attestation-server/module.nix; - packages.x86_64-linux = { + packages.x86_64-linux = let + pkgs = getPkgs "x86_64-linux"; + in { manual = (import ./docs { inherit pkgs; }).manual; gitRepo = pkgs.gitRepo; }; - devShell.x86_64-linux = pkgs.mkShell { + devShell.x86_64-linux = let + pkgs = getPkgs "x86_64-linux"; + in pkgs.mkShell { name = "robotnix-scripts"; nativeBuildInputs = with pkgs; [ # For android updater scripts diff --git a/pkgs/default.nix b/pkgs/default.nix index d43ecb93..3f48c314 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -9,10 +9,10 @@ let inherit (inputs) nixpkgs androidPkgs; -in nixpkgs.legacyPackages.x86_64-linux.appendOverlays [ +in nixpkgs.legacyPackages."${system}".appendOverlays [ (self: super: { - androidPkgs.packages = androidPkgs.packages.x86_64-linux; - androidPkgs.sdk = androidPkgs.sdk.x86_64-linux; + androidPkgs.packages = androidPkgs.packages."${system}"; + androidPkgs.sdk = androidPkgs.sdk."${system}"; }) (import ./overlay.nix { inherit inputs; }) ] diff --git a/template/flake.nix b/template/flake.nix index 3009f0c0..87f56daa 100644 --- a/template/flake.nix +++ b/template/flake.nix @@ -7,7 +7,7 @@ # "dailydriver" is an arbitrary user-chosen name for this particular # configuration. Change it to something meaningful for you, perhaps just # the device name if you only have one of this kind of device. - robotnixConfigurations."dailydriver" = robotnix.lib.robotnixSystem ({ config, pkgs, ... }: { + robotnixConfigurations."dailydriver" = robotnix.lib.robotnixSystem "x86_64-linux" ({ config, pkgs, ... }: { # These two are required options device = "crosshatch"; flavor = "vanilla"; # "grapheneos" is another option From 6ca648fa0580bd71295b8ea8a9c9cfbd09b2e92e Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Fri, 27 Sep 2024 11:39:56 -0700 Subject: [PATCH 2/3] android-emulator: replace xlibs with xorg --- pkgs/android-emulator/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/android-emulator/default.nix b/pkgs/android-emulator/default.nix index a2a1de26..87cba7a9 100644 --- a/pkgs/android-emulator/default.nix +++ b/pkgs/android-emulator/default.nix @@ -3,7 +3,7 @@ { stdenv, lib, fetchurl, runCommand, writeText, writeShellScript, autoPatchelfHook, makeWrapper, glibc, libGL, libpulseaudio, zlib, ncurses5, - nspr, fontconfig, nss, unzip, alsa-lib, libuuid, xlibs, dbus, xkeyboard_config, + nspr, fontconfig, nss, unzip, alsa-lib, libuuid, dbus, xkeyboard_config, xorg, androidPkgs }: From 1a89fa87fc92cb1fc9a2c45a0c135001bb9c6118 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Fri, 27 Sep 2024 12:02:55 -0700 Subject: [PATCH 3/3] Fix eval for aarch64-linux --- apks/chromium/buildenv.nix | 3 +-- apks/chromium/default.nix | 5 ++++- default.nix | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/apks/chromium/buildenv.nix b/apks/chromium/buildenv.nix index 0298863a..411211ee 100644 --- a/apks/chromium/buildenv.nix +++ b/apks/chromium/buildenv.nix @@ -10,12 +10,11 @@ buildFHSUserEnv { targetPkgs = pkgs: with pkgs; [ # Stuff verified to be needed in chromium jdk8 - glibc_multi.dev # Needs unistd.h libkrb5.dev # Needs headers libkrb5 ncurses5 libxml2 - ]; + ] ++ lib.optional (buildPlatform.isx86) glibc_multi.dev; multiPkgs = pkgs: with pkgs; [ zlib ncurses5 diff --git a/apks/chromium/default.nix b/apks/chromium/default.nix index e8228430..1f1a1cd8 100644 --- a/apks/chromium/default.nix +++ b/apks/chromium/default.nix @@ -96,7 +96,10 @@ let deps = import (./vendor- + version + ".nix") { inherit fetchgit fetchcipd fetchurl runCommand symlinkJoin; - platform = "linux-amd64"; # TODO: Figure out mapping for cipd platform + platform = { + x86_64-linux = "linux-amd64"; + aarch64-linux = "linux-arm64"; + }.${stdenv.buildPlatform.system}; } // depsOverrides; src = runCommand "chromium-${version}-src" {} # TODO: changed from mkDerivation since it needs passAsFile or else this can get too big for the derivation: nixos "while setting up the build environment" "argument list too long" diff --git a/default.nix b/default.nix index 57be17ea..aae14112 100644 --- a/default.nix +++ b/default.nix @@ -81,8 +81,9 @@ let else lib.showWarnings eval.config.warnings eval.config; in { - inherit (eval) pkgs options; + inherit (eval) options; inherit config; + inherit (eval._module.args) pkgs; # Things that are nice to have at the top-level, since they might get moved # in the future: