programs: remove audio from the sandbox by default
This commit is contained in:
@@ -223,6 +223,7 @@ in
|
|||||||
# INDIVIDUAL PACKAGE DEFINITIONS
|
# INDIVIDUAL PACKAGE DEFINITIONS
|
||||||
blanket.sandbox.method = "bwrap";
|
blanket.sandbox.method = "bwrap";
|
||||||
blanket.sandbox.wrapperType = "wrappedDerivation";
|
blanket.sandbox.wrapperType = "wrappedDerivation";
|
||||||
|
blanket.sandbox.whitelistAudio = true;
|
||||||
|
|
||||||
brightnessctl.sandbox.method = "bwrap";
|
brightnessctl.sandbox.method = "bwrap";
|
||||||
brightnessctl.sandbox.wrapperType = "wrappedDerivation";
|
brightnessctl.sandbox.wrapperType = "wrappedDerivation";
|
||||||
@@ -239,6 +240,7 @@ in
|
|||||||
# auth token, preferences
|
# auth token, preferences
|
||||||
delfin.sandbox.method = "bwrap";
|
delfin.sandbox.method = "bwrap";
|
||||||
delfin.sandbox.wrapperType = "wrappedDerivation";
|
delfin.sandbox.wrapperType = "wrappedDerivation";
|
||||||
|
delfin.sandbox.whitelistAudio = true;
|
||||||
delfin.sandbox.whitelistDri = true;
|
delfin.sandbox.whitelistDri = true;
|
||||||
delfin.sandbox.net = "clearnet";
|
delfin.sandbox.net = "clearnet";
|
||||||
delfin.persist.byStore.private = [ ".config/delfin" ];
|
delfin.persist.byStore.private = [ ".config/delfin" ];
|
||||||
@@ -246,6 +248,7 @@ in
|
|||||||
# creds, but also 200 MB of node modules, etc
|
# creds, but also 200 MB of node modules, etc
|
||||||
discord.sandbox.method = "bwrap";
|
discord.sandbox.method = "bwrap";
|
||||||
discord.sandbox.wrapperType = "inplace"; #< /opt-style packaging
|
discord.sandbox.wrapperType = "inplace"; #< /opt-style packaging
|
||||||
|
discord.sandbox.whitelistAudio = true;
|
||||||
discord.sandbox.net = "clearnet";
|
discord.sandbox.net = "clearnet";
|
||||||
discord.persist.byStore.private = [ ".config/discord" ];
|
discord.persist.byStore.private = [ ".config/discord" ];
|
||||||
|
|
||||||
@@ -424,6 +427,7 @@ in
|
|||||||
|
|
||||||
superTux.sandbox.method = "bwrap";
|
superTux.sandbox.method = "bwrap";
|
||||||
superTux.sandbox.wrapperType = "wrappedDerivation";
|
superTux.sandbox.wrapperType = "wrappedDerivation";
|
||||||
|
superTux.sandbox.whitelistAudio = true;
|
||||||
superTux.sandbox.whitelistDri = true;
|
superTux.sandbox.whitelistDri = true;
|
||||||
superTux.persist.byStore.plaintext = [ ".local/share/supertux2" ];
|
superTux.persist.byStore.plaintext = [ ".local/share/supertux2" ];
|
||||||
|
|
||||||
@@ -454,6 +458,7 @@ in
|
|||||||
|
|
||||||
vvvvvv.sandbox.method = "bwrap";
|
vvvvvv.sandbox.method = "bwrap";
|
||||||
vvvvvv.sandbox.wrapperType = "wrappedDerivation";
|
vvvvvv.sandbox.wrapperType = "wrappedDerivation";
|
||||||
|
vvvvvv.sandbox.whitelistAudio = true;
|
||||||
vvvvvv.sandbox.whitelistDri = true; #< playable without, but burns noticably more CPU
|
vvvvvv.sandbox.whitelistDri = true; #< playable without, but burns noticably more CPU
|
||||||
vvvvvv.persist.byStore.plaintext = [ ".local/share/VVVVVV" ];
|
vvvvvv.persist.byStore.plaintext = [ ".local/share/VVVVVV" ];
|
||||||
|
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
sandbox.autodetectCliPaths = true;
|
sandbox.autodetectCliPaths = true;
|
||||||
sandbox.extraHomePaths = [
|
sandbox.extraHomePaths = [
|
||||||
# support media imports via file->open dir to some common media directories
|
# support media imports via file->open dir to some common media directories
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
"dev" # for developing anything web-related
|
"dev" # for developing anything web-related
|
||||||
"tmp"
|
"tmp"
|
||||||
];
|
];
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
sandbox.whitelistDri = true;
|
sandbox.whitelistDri = true;
|
||||||
persist.byStore.cryptClearOnBoot = [
|
persist.byStore.cryptClearOnBoot = [
|
||||||
".cache/BraveSoftware"
|
".cache/BraveSoftware"
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
sane.programs.cozy = {
|
sane.programs.cozy = {
|
||||||
sandbox.method = "bwrap"; # landlock gives: _multiprocessing.SemLock: Permission Denied
|
sandbox.method = "bwrap"; # landlock gives: _multiprocessing.SemLock: Permission Denied
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
sandbox.extraHomePaths = [
|
sandbox.extraHomePaths = [
|
||||||
"Books"
|
"Books"
|
||||||
"Books/servo"
|
"Books/servo"
|
||||||
|
@@ -48,6 +48,8 @@ in
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
sandbox.net = "clearnet";
|
sandbox.net = "clearnet";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
|
sandbox.whitelistDri = true; #< not strictly necessary, but we need all the perf we can get on moby
|
||||||
|
|
||||||
persist.byStore.private = [ ".local/share/dino" ];
|
persist.byStore.private = [ ".local/share/dino" ];
|
||||||
|
|
||||||
|
@@ -10,6 +10,8 @@
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
sandbox.net = "clearnet";
|
sandbox.net = "clearnet";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
|
sandbox.whitelistDri = true;
|
||||||
packageUnwrapped = pkgs.element-desktop.override {
|
packageUnwrapped = pkgs.element-desktop.override {
|
||||||
# use pre-build electron because otherwise it takes 4 hrs to build from source.
|
# use pre-build electron because otherwise it takes 4 hrs to build from source.
|
||||||
electron = pkgs.electron-bin;
|
electron = pkgs.electron-bin;
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "inplace"; # /share/epiphany/default-bookmarks.rdf refers back to /share; dbus files to /libexec
|
sandbox.wrapperType = "inplace"; # /share/epiphany/default-bookmarks.rdf refers back to /share; dbus files to /libexec
|
||||||
sandbox.net = "clearnet";
|
sandbox.net = "clearnet";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
# default sandboxing breaks rendering in weird ways. sites are super zoomed in / not scaled.
|
# default sandboxing breaks rendering in weird ways. sites are super zoomed in / not scaled.
|
||||||
# enabling DRI/DRM (as below) seems to fix that.
|
# enabling DRI/DRM (as below) seems to fix that.
|
||||||
sandbox.whitelistDri = true;
|
sandbox.whitelistDri = true;
|
||||||
|
@@ -236,6 +236,7 @@ in
|
|||||||
sandbox.method = "bwrap"; # landlock works, but requires all of /proc to be linked
|
sandbox.method = "bwrap"; # landlock works, but requires all of /proc to be linked
|
||||||
sandbox.wrapperType = "inplace"; # probably wrappedDerivation could work too.
|
sandbox.wrapperType = "inplace"; # probably wrappedDerivation could work too.
|
||||||
sandbox.net = "all";
|
sandbox.net = "all";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
sandbox.extraHomePaths = [
|
sandbox.extraHomePaths = [
|
||||||
"dev" # for developing anything web-related
|
"dev" # for developing anything web-related
|
||||||
"tmp"
|
"tmp"
|
||||||
|
@@ -30,6 +30,7 @@ in
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
sandbox.net = "clearnet";
|
sandbox.net = "clearnet";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
sandbox.whitelistDri = true; # otherwise video playback buuuuurns CPU
|
sandbox.whitelistDri = true; # otherwise video playback buuuuurns CPU
|
||||||
|
|
||||||
configOption = with lib; mkOption {
|
configOption = with lib; mkOption {
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
sandbox.net = "clearnet"; # net play
|
sandbox.net = "clearnet"; # net play
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
packageUnwrapped = pkgs.frozen-bubble.overrideAttrs (upstream: {
|
packageUnwrapped = pkgs.frozen-bubble.overrideAttrs (upstream: {
|
||||||
# patch so it stores its dot-files not in root ~.
|
# patch so it stores its dot-files not in root ~.
|
||||||
postPatch = (upstream.postPatch or "") + ''
|
postPatch = (upstream.postPatch or "") + ''
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
sane.programs.g4music = {
|
sane.programs.g4music = {
|
||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
sandbox.extraHomePaths = [
|
sandbox.extraHomePaths = [
|
||||||
"Music"
|
"Music"
|
||||||
];
|
];
|
||||||
|
@@ -34,6 +34,8 @@ in
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
sandbox.net = "clearnet";
|
sandbox.net = "clearnet";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
|
sandbox.whitelistDri = true;
|
||||||
|
|
||||||
persist.byStore.private = [
|
persist.byStore.private = [
|
||||||
".cache/gtkcord4"
|
".cache/gtkcord4"
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
"Videos/servo"
|
"Videos/servo"
|
||||||
"tmp"
|
"tmp"
|
||||||
];
|
];
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
sandbox.whitelistDri = true;
|
sandbox.whitelistDri = true;
|
||||||
packageUnwrapped = pkgs.kdenlive.override {
|
packageUnwrapped = pkgs.kdenlive.override {
|
||||||
ffmpeg-full = pkgs.ffmpeg-full.override {
|
ffmpeg-full = pkgs.ffmpeg-full.override {
|
||||||
|
@@ -25,6 +25,7 @@ in
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
sandbox.net = "clearnet";
|
sandbox.net = "clearnet";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
|
|
||||||
# creds, media
|
# creds, media
|
||||||
persist.byStore.private = [
|
persist.byStore.private = [
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
sandbox.net = "clearnet";
|
sandbox.net = "clearnet";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
secrets.".cache/spot/librespot/credentials/credentials.json" = ../../../secrets/common/spot_credentials.json.bin;
|
secrets.".cache/spot/librespot/credentials/credentials.json" = ../../../secrets/common/spot_credentials.json.bin;
|
||||||
persist.byStore.plaintext = [
|
persist.byStore.plaintext = [
|
||||||
".cache/spot/img" # album art
|
".cache/spot/img" # album art
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "inplace"; # nontraditional package structure, where binaries live in /share/spotify
|
sandbox.wrapperType = "inplace"; # nontraditional package structure, where binaries live in /share/spotify
|
||||||
sandbox.net = "clearnet";
|
sandbox.net = "clearnet";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
sandbox.extraConfig = [
|
sandbox.extraConfig = [
|
||||||
"--sane-sandbox-firejail-arg"
|
"--sane-sandbox-firejail-arg"
|
||||||
"--keep-dev-shm"
|
"--keep-dev-shm"
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
sandbox.net = "clearnet"; # net play
|
sandbox.net = "clearnet"; # net play
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
sandbox.whitelistDri = true;
|
sandbox.whitelistDri = true;
|
||||||
persist.byStore.plaintext = [
|
persist.byStore.plaintext = [
|
||||||
".cache/supertuxkart"
|
".cache/supertuxkart"
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
sandbox.net = "clearnet"; # tor over VPN wouldn't make sense
|
sandbox.net = "clearnet"; # tor over VPN wouldn't make sense
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
persist.byStore.cryptClearOnBoot = [
|
persist.byStore.cryptClearOnBoot = [
|
||||||
".local/share/tor-browser"
|
".local/share/tor-browser"
|
||||||
];
|
];
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
sandbox.net = "clearnet";
|
sandbox.net = "clearnet";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
suggestedPrograms = [ "gnome-keyring" ];
|
suggestedPrograms = [ "gnome-keyring" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@@ -18,6 +18,7 @@ in
|
|||||||
sandbox.wrapperType = "wrappedDerivation";
|
sandbox.wrapperType = "wrappedDerivation";
|
||||||
sandbox.net = "clearnet";
|
sandbox.net = "clearnet";
|
||||||
sandbox.autodetectCliPaths = true;
|
sandbox.autodetectCliPaths = true;
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
persist.byStore.private = [
|
persist.byStore.private = [
|
||||||
# vlc remembers play position in ~/.config/vlc/vlc-qt-interface.conf
|
# vlc remembers play position in ~/.config/vlc/vlc-qt-interface.conf
|
||||||
# filenames are stored in plaintext (unlike mpv, which i think hashes them)
|
# filenames are stored in plaintext (unlike mpv, which i think hashes them)
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
sandbox.method = "bwrap";
|
sandbox.method = "bwrap";
|
||||||
sandbox.wrapperType = "inplace"; # share/wike/wike-sp refers back to the binaries and share
|
sandbox.wrapperType = "inplace"; # share/wike/wike-sp refers back to the binaries and share
|
||||||
sandbox.net = "clearnet";
|
sandbox.net = "clearnet";
|
||||||
|
sandbox.whitelistAudio = true;
|
||||||
sandbox.extraPaths = [
|
sandbox.extraPaths = [
|
||||||
# wike sandboxes *itself* with bwrap, and dbus-proxy which, confusingly, causes it to *require* these paths.
|
# wike sandboxes *itself* with bwrap, and dbus-proxy which, confusingly, causes it to *require* these paths.
|
||||||
# TODO: these could maybe be mounted empty.
|
# TODO: these could maybe be mounted empty.
|
||||||
|
@@ -357,7 +357,7 @@ let
|
|||||||
};
|
};
|
||||||
sandbox.whitelistAudio = mkOption {
|
sandbox.whitelistAudio = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true; #< TODO: harden default!
|
default = false;
|
||||||
description = ''
|
description = ''
|
||||||
allow sandbox to freely interact with pulse/pipewire.
|
allow sandbox to freely interact with pulse/pipewire.
|
||||||
'';
|
'';
|
||||||
|
Reference in New Issue
Block a user