Commit graph

66 commits

Author SHA1 Message Date
Val Packett
9911b15fb7 nix: switch to wl-cross-domain-proxy 2026-01-30 04:27:22 -03:00
Val Packett
13b2afcc14 nix: add package for wl-cross-domain-proxy 2026-01-30 03:16:39 -03:00
Val Packett
c89c9e4d9b nix: testvm: more test apps 2026-01-30 03:15:49 -03:00
Val Packett
40d82a0fd8 nix: use static userborn
as it's upstream now
2026-01-30 01:39:17 -03:00
Val Packett
c11c6c6292 nix: update inputs 2026-01-30 00:02:31 -03:00
Val Packett
447ccad362 nix: devShell: add packages for proxy development 2026-01-29 20:54:07 -03:00
Jörg Thalheim
2d7860294d switch from flake-utils to flake-parts
there is not so much of a difference in this project, but
it means adding this project to clan, one less flake input
and also more consistency with other projects in clan.
2026-01-16 15:13:00 +01:00
Jörg Thalheim
06a26e7dee munix: add -- before command args to prevent option parsing
muvm was interpreting command arguments like '-c' (from /bin/sh -c)
as its own options. Adding '--' separates muvm options from the
command and its arguments.
2026-01-15 17:10:05 +01:00
Val Packett
214d4c4500 nixos: set shell for appvm user
Surprisingly, gdb of all things uses the login shell from /etc/passwd to
launch the program under test, so I was seeing the
"This account is currently not available" message there.
2026-01-09 06:46:59 -03:00
Val Packett
612453a3bc Update sidebus 2025-12-18 04:29:48 -03:00
Val Packett
787ca12b1e Start sidebus-agent strictly before the apps
Gtk uses G_DBUS_CALL_FLAGS_NO_AUTO_START in all the (early) portal calls
so we basically get a version of https://gitlab.gnome.org/GNOME/gtk/-/issues/7379
if we try to lazily start the agent..
2025-12-18 04:24:17 -03:00
Val Packett
f336a0d5ff micro-activate: generate machine-id randomly
D-Bus is supposed to (?) use it to decide whether it can use FD passing,
shared memory, etc. and while we do a lot of cross-domain magic it's not
quite seamless :) so let's not reuse the host one.
2025-12-18 04:21:52 -03:00
Jörg Thalheim
1d864e0ded template: simplify with forAllSystems and inline module
Use the forAllSystems pattern to reduce duplication and inline the
NixOS module directly in nixosSystem call. This eliminates the need for
separate nixosModules and nixosConfigurations outputs, making the
template more concise and easier to understand.

Also use virtualisation.munix namespace for the option.
2025-12-15 16:48:58 +01:00
Jörg Thalheim
ced0559be8 nixos: add munix.defaultCommand option and system.build.munix
Add a NixOS option to configure the default command for the VM and
provide a system.build.munix output that wraps munix with the correct
toplevel and default command. This reduces boilerplate in downstream
flakes since they no longer need to manually wrap munix.

The template now uses these new features, significantly simplifying
the apps definition.
2025-12-15 16:24:56 +01:00
Jörg Thalheim
2d721419e6 readme: move example to flake template
Replace inline flake.nix example with a proper flake template that users
can instantiate with `nix flake init`. This makes it easier to get
started and we can easier test the example.
2025-12-15 16:12:56 +01:00
Val Packett
fb53769c7a readme: add basic initial example of defining a vm (fix #8)
Starting point to simplify
2025-12-09 06:45:30 -03:00
Val Packett
ab5f412524 Add dconf to testvm
Pretty much required by GTK apps
2025-12-09 06:41:09 -03:00
Val Packett
20e7e88e07 Update sidebus (now reverse-client to a session bus in the guest) 2025-12-09 06:41:01 -03:00
Val Packett
bfb8352c55 nix: update sidebus (unhardcode user/group IDs) 2025-12-05 05:00:27 -03:00
Val Packett
cc135479ef systemd: chown XDG_RUNTIME_DIR again
This was temporarily gone due to refactorings (throwing out tmpfiles).
2025-12-05 04:09:40 -03:00
Val Packett
bfc037e615 systemd: hoist XDG_RUNTIME_DIR up to manager defaults
In some cases it might be needed in arbitrary services.. such as mpd
needing PipeWire to play sound into
2025-12-05 04:08:46 -03:00
Val Packett
73d2501781 systemd: use sockets.target
This allows using normal nix-managed services that register sockets for
lazy activation. Also brings in some red errors about starting services
that we don't have, but that will be fixed
2025-12-05 04:07:04 -03:00
Val Packett
fd771dd95f munix: make the default command overridable via env
This is convenient for app launch wrappers that would want to set their
own default command but still allow overriding it
2025-12-05 04:06:05 -03:00
Val Packett
2a98ae83af nix: update libkrun (aarch64 fixes) 2025-12-05 00:31:09 -03:00
Val Packett
d2070a1bec nix: set system.switch.enable = false
Will be required by the upstreamed static userborn, and shouldn've been
part of the initial research anyway :)
2025-12-05 00:09:03 -03:00
Val Packett
5f1783b9bb nix: update flake comment to mention --override-input 2025-12-05 00:08:30 -03:00
Jörg Thalheim
c7ec9872ca fix: disable systemd-resolved (not needed, DNS comes from host via passt) 2025-12-04 23:59:42 -03:00
Jörg Thalheim
57b8ae3424 switch from git submodules to flake inputs 2025-12-04 23:59:33 -03:00
Val Packett
6e8e4b9fda nix: replace pkgs.system with pkgs.stdenv.hostPlatform.system
evaluation warning: ‘system’ has been renamed to/replaced by ‘stdenv.hostPlatform.system’
2025-12-04 23:52:14 -03:00
Val Packett
7aa9f614da systemd: get udevd out of the critical chain
We don't need to wait for it at all
2025-12-04 23:48:17 -03:00
Val Packett
9a6cf18cc1 micro-activate: x86_64 type fix 2025-12-04 07:24:41 -03:00
Val Packett
0bd986f97f Introduce micro-activate (RIIR activate script + tiny bit of tmpfiles)
Instead of interpreting all that shell and running actual tmpfiles, use
a tiny stage before systemd that mounts a tmpfs at /run (preventing
systemd from doing the same), populates it with NixOS symlinks and
preserved resolv.conf, and mounts the immutable /etc overlay before
passing control over to systemd.
2025-12-04 07:17:31 -03:00
Val Packett
3d2f6c4732 systemd: disable generate-shutdown-ramfs 2025-12-04 06:59:40 -03:00
Val Packett
a93ab32aea Pass MESA_LOADER_DRIVER_OVERRIDE to muvm-remote
The Zink override for Venus in muvm was being eaten by systemd.. until now
2025-11-28 03:55:50 -03:00
Val Packett
f831c9d958 Update nixpkgs / dependencies (mesa-25.3.0)
Almost no need to touch mesa anymore.. except for the radeon virtio flag
2025-11-28 02:13:20 -03:00
Val Packett
9b23ae8094 gitignore testvm 2025-11-28 02:13:20 -03:00
Val Packett
93ba3d8fc4 Switch from sysusers to new "baked" userborn usage
Avoid spending ~100ms of userspace boot time on unnecessary regeneration
of entirely static /etc/{passwd,group,shadow}. This will be proposed to nixpkgs.
2025-11-28 02:13:20 -03:00
Val Packett
bd6307ded5 Symlink resolv.conf and machine-id instead of mounting
Works fine after all. Let's avoid mount calls to boot faster.
2025-11-28 02:13:20 -03:00
Val Packett
83db4d6074 Remove leftover debug env invocation 2025-11-28 02:13:20 -03:00
Val Packett
87691a5747 Do not wait for udev to settle
Relying on udev to assign permissions to the virtgpu was very "proper"
but really excessive. We have a simple static configuration, built into
the kernel, so there are no dynamic shenanigans, we can always reliably
just chmod/chown the permissions. Let's go back to faster booting.
2025-11-28 02:13:20 -03:00
Val Packett
73fdfca030 Update muvm fork (proper pwbridge fix) 2025-11-28 02:13:20 -03:00
Val Packett
23b91f1d6d Update libkrun and libkrunfw to latest upstream (merged MS_SHARED and EROFS) 2025-11-28 02:13:20 -03:00
Val Packett
59137223a9 Add fallback to our mesa package for non-NixOS hosts 2025-11-28 02:13:20 -03:00
Val Packett
c164db06c1 Fix msm driver name to msm_dpu 2025-11-27 21:58:53 -03:00
Val Packett
77028b04da Add error messages for missing muvm/passt 2025-11-27 20:33:30 -03:00
Val Packett
9f0f835fce Add sidebus integration 2025-11-14 06:20:44 -03:00
Val Packett
030503f23b Unhardcode x86_64 in virtwl package 2025-11-14 06:17:34 -03:00
Val Packett
8d2596d7cc testvm: add a couple more test tools 2025-11-14 02:11:11 -03:00
Val Packett
8d178b21ef Temporarily fork libkrun to add systemd mount propagation fix 2025-11-14 02:10:19 -03:00
Val Packett
d8d531aa00 Fix tmpfiles entry for runtime dir 2025-11-14 02:09:04 -03:00