Merge pull request #105182 from roosemberth/fixes/firejail
firejail: fix -overlay and -build functionality on NixOS
This commit is contained in:
commit
2d50a1f09e
3 changed files with 47 additions and 0 deletions
|
@ -20,6 +20,15 @@ stdenv.mkDerivation {
|
|||
name = "${s.name}.tar.bz2";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Adds the /nix directory when using an overlay.
|
||||
# Required to run any programs under this mode.
|
||||
./mount-nix-dir-on-overlay.patch
|
||||
# By default fbuilder hardcodes the firejail binary to the install path.
|
||||
# On NixOS the firejail binary is a setuid wrapper available in $PATH.
|
||||
./fbuilder-call-firejail-on-path.patch
|
||||
];
|
||||
|
||||
prePatch = ''
|
||||
# Allow whitelisting ~/.nix-profile
|
||||
substituteInPlace etc/firejail.config --replace \
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
--- a/src/fbuilder/build_profile.c
|
||||
+++ b/src/fbuilder/build_profile.c
|
||||
@@ -67,7 +67,7 @@
|
||||
errExit("asprintf");
|
||||
|
||||
char *cmdlist[] = {
|
||||
- BINDIR "/firejail",
|
||||
+ "firejail",
|
||||
"--quiet",
|
||||
"--noprofile",
|
||||
"--caps.drop=all",
|
|
@ -0,0 +1,27 @@
|
|||
--- a/src/firejail/fs.c
|
||||
+++ b/src/firejail/fs.c
|
||||
@@ -1143,6 +1143,16 @@
|
||||
errExit("mounting /dev");
|
||||
fs_logger("whitelist /dev");
|
||||
|
||||
+ // mount-bind /nix
|
||||
+ if (arg_debug)
|
||||
+ printf("Mounting /nix\n");
|
||||
+ char *nix;
|
||||
+ if (asprintf(&nix, "%s/nix", oroot) == -1)
|
||||
+ errExit("asprintf");
|
||||
+ if (mount("/nix", nix, NULL, MS_BIND|MS_REC, NULL) < 0)
|
||||
+ errExit("mounting /nix");
|
||||
+ fs_logger("whitelist /nix");
|
||||
+
|
||||
// mount-bind run directory
|
||||
if (arg_debug)
|
||||
printf("Mounting /run\n");
|
||||
@@ -1201,6 +1211,7 @@
|
||||
free(odiff);
|
||||
free(owork);
|
||||
free(dev);
|
||||
+ free(nix);
|
||||
free(run);
|
||||
free(tmp);
|
||||
}
|
Loading…
Reference in a new issue