Hello all,
I just made my first PR to nixpkgs (issue update: now merged)! It’s patching libvirt to be able to use EFI VM images on aarch64-darwin machines.
I’m confused as to why this patch doesn’t do anything when I place it in my nix-darwin
config under nixpkgs.config.packageOverrides
:
nixpkgs = {
config = {
packageOverrides = pkgs: {
libvirt = unstable.libvirt.overrideAttrs (old: {
mesonFlags = old.mesonFlags ++ [ "-Dqemu_datadir=${unstable.qemu}/share/qemu" ];
postPatch = old.postPatch + ''
sed -i '/domaincapstest/d' tests/meson.build
sed -i '/qemufirmwaretest/d' tests/meson.build
sed -i '/qemuvhostusertest/d' tests/meson.build
'';
});
};
};
};
...
environment.systemPackages = with unstable; [ pkgs.libvirt ];
Other package overrides have seemed work when placed there, but with this setup the extra build flag isn’t set:
$ nix show-derivation $(which virsh) | grep qemu_datadir
$ echo $?
1
However, if I put the override into environment.systemPackages
directly, it works as expected:
environment.systemPackages = with unstable; [
(libvirt.overrideAttrs
(old: {
mesonFlags = old.mesonFlags ++ [ "-Dqemu_datadir=${unstable.qemu}/share/qemu" ];
postPatch = old.postPatch + ''
sed -i '/domaincapstest/d' tests/meson.build
sed -i '/qemufirmwaretest/d' tests/meson.build
sed -i '/qemuvhostusertest/d' tests/meson.build
'';
}))
];
$ nix show-derivation $(which virsh) | grep qemu_datadir
"mesonFlags": "--sysconfdir=/var/lib -Dinstall_prefix=/1rz4g4znpzjwh1xymhjpm42vipw92pr73vdgl6xs1hycac8kf2n9 -Dlocalstatedir=/var -Drunstatedir=/run -Dinit_script=none -Dapparmor=disabled -Dattr=disabled -Daudit=disabled -Dbash_completion=enabled -Dblkid=disabled -Dcapng=disabled -Dcurl=enabled -Ddocs=enabled -Dexpensive_tests=enabled -Dfirewalld=disabled -Dfirewalld_zone=disabled -Dfuse=disabled -Dglusterfs=disabled -Dhost_validate=enabled -Dlibiscsi=disabled -Dlibnl=disabled -Dlibpcap=enabled -Dlibssh2=enabled -Dlogin_shell=disabled -Dnss=disabled -Dnumactl=disabled -Dnumad=disabled -Dpciaccess=disabled -Dpolkit=disabled -Dreadline=enabled -Dsecdriver_apparmor=disabled -Dtests=enabled -Dudev=disabled -Dyajl=enabled -Ddriver_ch=disabled -Ddriver_esx=enabled -Ddriver_interface=disabled -Ddriver_libvirtd=enabled -Ddriver_libxl=disabled -Ddriver_lxc=disabled -Ddriver_network=enabled -Ddriver_openvz=disabled -Ddriver_qemu=enabled -Ddriver_remote=enabled -Ddriver_secrets=enabled -Ddriver_test=enabled -Ddriver_vbox=enabled -Ddriver_vmware=enabled -Dstorage_dir=enabled -Dstorage_disk=disabled -Dstorage_fs=disabled -Dstorage_gluster=disabled -Dstorage_iscsi=disabled -Dstorage_iscsi_direct=disabled -Dstorage_lvm=disabled -Dstorage_mpath=disabled -Dstorage_rbd=disabled -Dstorage_scsi=enabled -Dstorage_vstorage=disabled -Dstorage_zfs=disabled -Dqemu_datadir=/nix/store/dyzfcnf6r3zh5qhbx1blf2vw2r301cjb-qemu-7.1.0/share/qemu",
Reading other issues, is my override being applied early but then overridden somewhere else? If so, how might I have figured that out on my own?
Thanks as always for all the help!