profiles/vmapp-demo: init MVE
...moving bits and pieces from .dotfiles
This commit is contained in:
parent
b2b9628ed6
commit
a25e51e7da
4 changed files with 336 additions and 5 deletions
65
pkgs/desktopAdapters.nix
Normal file
65
pkgs/desktopAdapters.nix
Normal file
|
@ -0,0 +1,65 @@
|
|||
{
|
||||
lib,
|
||||
newScope,
|
||||
makeDesktopItem,
|
||||
writeShellScriptBin,
|
||||
}:
|
||||
|
||||
lib.makeScope newScope (self: {
|
||||
# Scope-level configuration for adapters
|
||||
useSessionUnits = true; # use --user units, instead of system units
|
||||
vmUnitPrefix = "uvm@";
|
||||
vmSshPrefix = if self.useSessionUnits then "uuvm/" else "uvm/";
|
||||
vmUser = "user";
|
||||
waylandProxyUnit = "wayland-proxy.service"; # could be sommelier
|
||||
oomScoreAdjust = -200;
|
||||
|
||||
# Helper scripts
|
||||
mkRunInVM = vmName: lib.getExe (self.mkRunInVMPkg vmName);
|
||||
mkRunInVMPkg =
|
||||
vmName:
|
||||
writeShellScriptBin "run-in-${vmName}" ''
|
||||
localArgs=(
|
||||
${lib.optionalString self.useSessionUnits "--user"}
|
||||
--property=Requires=${self.vmUnitPrefix}${vmName}.service
|
||||
--property=After=${self.vmUnitPrefix}${vmName}.service
|
||||
--property=SyslogIdentifier="$1 (${vmName})"
|
||||
)
|
||||
remoteArgs=(
|
||||
systemd-run
|
||||
--user
|
||||
--property=StandardError="journal+console"
|
||||
--property=StandardOutput="journal+console"
|
||||
--property=OOMScoreAdjust=${toString self.oomScoreAdjust}
|
||||
${lib.optionalString (self.waylandProxyUnit != null) ''
|
||||
--property=Requires=${self.waylandProxyUnit}
|
||||
--property=After=${self.waylandProxyUnit}
|
||||
''}
|
||||
)
|
||||
systemd-run \
|
||||
"''${localArgs[@]}" \
|
||||
ssh ${self.vmUser}@${self.vmSshPrefix}${vmName} \
|
||||
"''${remoteArgs[@]}" $@
|
||||
'';
|
||||
|
||||
# Actual .desktop item adapters
|
||||
toVM =
|
||||
vmName: attrs:
|
||||
attrs
|
||||
// {
|
||||
exec = "${self.mkRunInVM vmName} ${attrs.exec}";
|
||||
};
|
||||
toBrowser =
|
||||
attrs:
|
||||
attrs
|
||||
// {
|
||||
categories = attrs.categories or [ ] ++ [
|
||||
"WebBrowser"
|
||||
"Network"
|
||||
];
|
||||
mimeTypes = attrs.mimeTypes or [ ] ++ [
|
||||
"x-scheme-handler/http"
|
||||
"x-scheme-handler/https"
|
||||
];
|
||||
};
|
||||
})
|
Loading…
Add table
Add a link
Reference in a new issue