diff --git a/pkgs/uvms/uvms.py b/pkgs/uvms/uvms.py index b7443b4..72d941c 100644 --- a/pkgs/uvms/uvms.py +++ b/pkgs/uvms/uvms.py @@ -678,6 +678,9 @@ def main(args, args_next, cleanup, ps): "EXTRA_PATH": [ f"{a}/bin" for a in app_paths ], # noqa: E501 + "EXTRA_XDG_DATA_DIRS": [ + f"{a}/share" for a in app_paths + ], # noqa: E501 } } ).encode("utf8") diff --git a/pkgs/uvmslib/uvmslib.py b/pkgs/uvmslib/uvmslib.py index d6279ae..9428edb 100644 --- a/pkgs/uvmslib/uvmslib.py +++ b/pkgs/uvmslib/uvmslib.py @@ -55,6 +55,16 @@ class Processes: "/run/current-system/sw/bin", ], ), + "XDG_DATA_DIRS": ":".join( + [ + *os.environ.get("XDG_DATA_DIRS", "").split(":"), + *run.get( + "EXTRA_XDG_DATA_DIRS", + [], + ), + "/run/current-system/sw/share", + ], + ), } proc = None try: @@ -116,6 +126,7 @@ def guest_main(): # IDK why but I keep getting empty messages if req == b"": print(f"Lost [{con.fileno()}]") + ps.sources = [s for s in ps.sources if s.fileno() != con.fileno()] continue try: req = json.loads(req) diff --git a/profiles/baseImage.nix b/profiles/baseImage.nix index 294c58e..66e95b8 100644 --- a/profiles/baseImage.nix +++ b/profiles/baseImage.nix @@ -212,6 +212,7 @@ in }; environment.profileRelativeSessionVariables.PATH = lib.mkForce [ "/bin\${PATH:+:}$PATH" ]; + environment.profileRelativeSessionVariables.XDG_DATA_DIRS = lib.mkForce [ "/run/current-system/sw/share/\${XDG_DATA_DIRS:+:}$XDG_DATA_DIRS" ]; environment.sessionVariables = env; environment.variables = env; systemd.globalEnvironment = env;