These services evolve as munix evolves, so they should not be part of the system closures themselves. Mount them into /run/systemd instead. (Yes, making /run/systemd/system a symlink to RO files is unfortunate, that could be changed in the future. FS prep code is annoying too..)
36 lines
1.2 KiB
Nix
36 lines
1.2 KiB
Nix
{ stdenv, writeScriptBin, symlinkJoin, makeWrapper, muvm, passt, bubblewrap, sidebus-broker, wl-cross-domain-proxy, mesa, rustc }:
|
|
|
|
let
|
|
munixScript = (writeScriptBin "munix" (builtins.readFile ../../munix)).overrideAttrs(old: {
|
|
buildCommand = "${old.buildCommand}\n patchShebangs $out";
|
|
});
|
|
munixSystemd = stdenv.mkDerivation {
|
|
name = "munix-systemd";
|
|
src = ../../systemd;
|
|
dontUnpack = true;
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
cp -aR $src/* $out
|
|
'';
|
|
};
|
|
microActivate = stdenv.mkDerivation {
|
|
name = "micro-activate";
|
|
src = ../../micro-activate.rs;
|
|
dontUnpack = true;
|
|
nativeBuildInputs = [ rustc ];
|
|
buildPhase = ''
|
|
rustc -C opt-level=s -C panic=abort --edition 2024 -o micro-activate $src
|
|
'';
|
|
installPhase = ''
|
|
mkdir -p $out/bin
|
|
mv micro-activate $out/bin
|
|
'';
|
|
};
|
|
in symlinkJoin {
|
|
name = "munix";
|
|
paths = [ munixScript microActivate muvm passt bubblewrap sidebus-broker wl-cross-domain-proxy ];
|
|
buildInputs = [ makeWrapper ];
|
|
postBuild = ''
|
|
wrapProgram $out/bin/munix --prefix PATH : $out/bin --set FALLBACK_OPENGL_DRIVER ${mesa} --set MUNIX_SYSTEMD_UNITS ${munixSystemd}
|
|
'';
|
|
}
|