nix-files/hosts/common/cross.nix

162 lines
4.9 KiB
Nix

{ config, lib, pkgs, ... }:
let
# these are the overlays which we *also* pass through to the cross and emulated package sets.
# TODO: refactor to not specify same overlay in multiple places (here and flake.nix).
overlays = [
(import ./../../overlays/pkgs.nix)
(import ./../../overlays/pins.nix)
];
mkCrossFrom = localSystem: pkgs:
import pkgs.path {
inherit localSystem; # localSystem is equivalent to buildPlatform
crossSystem = pkgs.stdenv.hostPlatform.system;
inherit (config.nixpkgs) config;
inherit overlays;
};
mkEmulated = pkgs:
import pkgs.path {
localSystem = pkgs.stdenv.hostPlatform.system;
inherit (config.nixpkgs) config;
inherit overlays;
};
in
{
# options = {
# perlPackageOverrides = lib.mkOption {
# };
# };
config = {
# the configuration of which specific package set `pkgs.cross` refers to happens elsewhere;
# here we just define them all.
nixpkgs.overlays = [
(next: prev: rec {
# non-emulated packages build *from* local *for* target.
# for large packages like the linux kernel which are expensive to build under emulation,
# the config can explicitly pull such packages from `pkgs.cross` to do more efficient cross-compilation.
crossFrom."x86_64-linux" = mkCrossFrom "x86_64-linux" prev;
crossFrom."aarch64-linux" = mkCrossFrom "aarch64-linux" prev;
emulated = mkEmulated prev;
})
(next: prev:
let
emulated = prev.emulated;
in {
# packages which don't cross compile
inherit (emulated)
# adwaita-qt # psqlodbc
apacheHttpd # TODO: not properly patched
appstream
blueman
brltty
cantarell-fonts # python3.10-skia-pathops
colord
duplicity # python3.10-s3transfer
evince
flakpak
fuzzel
fwupd-efi
fwupd
gcr
gmime
# gnome-keyring
# gnome-remote-desktop
gnome-tour
# gnustep-base # (used by unar)
gocryptfs # gocryptfs-2.3-go-modules
# grpc
gst_all_1 # gst_all_1.gst-editing-services
gupnp
gupnp_1_6
gvfs
flatpak
hdf5
http2
ibus
kitty
iio-sensor-proxy
libHX
libgweather
librest
librest_1_0
libsForQt5 # qtbase
mod_dnssd
ncftp
obex_data_server
openfortivpn
ostree
pam_mount
perl # perl5.36.0-Test-utf8
pipewire
psqlodbc
pulseaudio # python3.10-defcon
# qgnomeplatform
# qtbase
qt6 # psqlodbc
rmlint
sequoia
# splatmoji
squeekboard
sysprof
tracker-miners # it just can't run tests
twitter-color-emoji # python3.10-defcon
unar # python3.10-psycopg2
visidata # python3.10-psycopg2
vpnc
webp-pixbuf-loader
xdg-utils # perl5.36.0-File-BaseDir
;
# pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [
# (py-next: py-prev: {
# defcon = py-prev.defcon.override { inherit prev.emulated.stdenv; };
# # psycopg2 = py-prev.psycopg2.override { inherit prev.emulated.stdenv; };
# })
# ];
gnome = prev.gnome.overrideScope' (self: super: {
inherit (emulated.gnome)
gnome-color-manager
gnome-keyring
gnome-remote-desktop # TODO: figure out what's asking for this and remove it
gnome-user-share
mutter
;
});
# gst_all_1.gst-editing-services = emulated.gst_all_1.gst-editing-services;
# gst_all_1 = prev.gst_all_1.overrideScope' (self: super: {
# inherit (emulated.gst_all_1)
# gst-editing-services
# ;
# });
# libsForQt5 = prev.libsForQt5.overrideScope' (self: super: {
# inherit (emulated.libsForQt5)
# qtbase
# ;
# });
# apacheHttpdPackagesFor = apacheHttpd: self:
# let
# prevHttpdPkgs = lib.fix (emulated.apacheHttpdPackagesFor apacheHttpd);
# in
# (prev.apacheHttpdPackagesFor apacheHttpd self) // {
# # inherit (prevHttpdPkgs) mod_dnssd;
# mod_dnssd = prevHttpdPkgs.mod_dnssd.override {
# inherit (self) apacheHttpd;
# };
# };
})
];
# perlPackageOverrides = _perl: {
# inherit (pkgs.emulated.perl.pkgs)
# Testutf8
# ;
# };
};
}