forked from mirrors/nixpkgs
buildFHSUserEnv{Chroot,Bubblewrap}: link gsettings-schemas to the FHS location
We shouldn't need to use wrapGAppsHook in expressions that use this builder.
This commit is contained in:
parent
800013956d
commit
3e7e6ab84a
3 changed files with 54 additions and 0 deletions
|
@ -45,3 +45,5 @@ One can create a simple environment using a `shell.nix` like that:
|
||||||
```
|
```
|
||||||
|
|
||||||
Running `nix-shell` would then drop you into a shell with these libraries and binaries available. You can use this to run closed-source applications which expect FHS structure without hassles: simply change `runScript` to the application path, e.g. `./bin/start.sh` -- relative paths are supported.
|
Running `nix-shell` would then drop you into a shell with these libraries and binaries available. You can use this to run closed-source applications which expect FHS structure without hassles: simply change `runScript` to the application path, e.g. `./bin/start.sh` -- relative paths are supported.
|
||||||
|
|
||||||
|
Additionally, the FHS builder links all relocated gsettings-schemas (the glib setup-hook moves them to `share/gsettings-schemas/${name}/glib-2.0/schemas`) to their standard FHS location. This means you don't need to wrap binaries with `wrapGAppsHook`.
|
||||||
|
|
|
@ -93,6 +93,32 @@ let
|
||||||
paths = [ etcPkg ldconfig ] ++ basePkgs ++ targetPaths;
|
paths = [ etcPkg ldconfig ] ++ basePkgs ++ targetPaths;
|
||||||
extraOutputsToInstall = [ "out" "lib" "bin" ] ++ extraOutputsToInstall;
|
extraOutputsToInstall = [ "out" "lib" "bin" ] ++ extraOutputsToInstall;
|
||||||
ignoreCollisions = true;
|
ignoreCollisions = true;
|
||||||
|
postBuild = ''
|
||||||
|
if [[ -d $out/share/gsettings-schemas/ ]]; then
|
||||||
|
# Recreate the standard schemas directory if its a symlink to make it writable
|
||||||
|
if [[ -L $out/share/glib-2.0 ]]; then
|
||||||
|
ln -s $(readlink $out/share/glib-2.0) $out/share/glib-2.0.old
|
||||||
|
rm -rf $out/share/glib-2.0
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p $out/share/glib-2.0/schemas
|
||||||
|
|
||||||
|
# symlink any schema files or overrides to the standard schema directory
|
||||||
|
if [[ -e $out/share/glib-2.0.old/schemas ]]; then
|
||||||
|
ln -fs $out/share/glib-2.0.old/schemas/*.xml $out/share/glib-2.0/schemas
|
||||||
|
ln -fs $out/share/glib-2.0.old/schemas/*.gsettings-schemas.override $out/share/glib-2.0/schemas
|
||||||
|
fi
|
||||||
|
|
||||||
|
for d in $out/share/gsettings-schemas/*; do
|
||||||
|
# Force symlink, in case there are duplicates
|
||||||
|
ln -fs $d/glib-2.0/schemas/*.xml $out/share/glib-2.0/schemas
|
||||||
|
ln -fs $d/glib-2.0/schemas/*.gschema.override $out/share/glib-2.0/schemas
|
||||||
|
done
|
||||||
|
|
||||||
|
# and compile them
|
||||||
|
${pkgs.glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas
|
||||||
|
fi
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
staticUsrProfileMulti = buildEnv {
|
staticUsrProfileMulti = buildEnv {
|
||||||
|
|
|
@ -134,6 +134,32 @@ let
|
||||||
paths = [ etcPkg ] ++ basePkgs ++ targetPaths;
|
paths = [ etcPkg ] ++ basePkgs ++ targetPaths;
|
||||||
extraOutputsToInstall = [ "out" "lib" "bin" ] ++ extraOutputsToInstall;
|
extraOutputsToInstall = [ "out" "lib" "bin" ] ++ extraOutputsToInstall;
|
||||||
ignoreCollisions = true;
|
ignoreCollisions = true;
|
||||||
|
postBuild = ''
|
||||||
|
if [[ -d $out/share/gsettings-schemas/ ]]; then
|
||||||
|
# Recreate the standard schemas directory if its a symlink to make it writable
|
||||||
|
if [[ -L $out/share/glib-2.0 ]]; then
|
||||||
|
ln -s $(readlink $out/share/glib-2.0) $out/share/glib-2.0.old
|
||||||
|
rm -rf $out/share/glib-2.0
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p $out/share/glib-2.0/schemas
|
||||||
|
|
||||||
|
# symlink any schema files or overrides to the standard schema directory
|
||||||
|
if [[ -e $out/share/glib-2.0.old/schemas ]]; then
|
||||||
|
ln -fs $out/share/glib-2.0.old/schemas/*.xml $out/share/glib-2.0/schemas
|
||||||
|
ln -fs $out/share/glib-2.0.old/schemas/*.gsettings-schemas.override $out/share/glib-2.0/schemas
|
||||||
|
fi
|
||||||
|
|
||||||
|
for d in $out/share/gsettings-schemas/*; do
|
||||||
|
# Force symlink, in case there are duplicates
|
||||||
|
ln -fs $d/glib-2.0/schemas/*.xml $out/share/glib-2.0/schemas
|
||||||
|
ln -fs $d/glib-2.0/schemas/*.gschema.override $out/share/glib-2.0/schemas
|
||||||
|
done
|
||||||
|
|
||||||
|
# and compile them
|
||||||
|
${pkgs.glib.dev}/bin/glib-compile-schemas $out/share/glib-2.0/schemas
|
||||||
|
fi
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
staticUsrProfileMulti = buildEnv {
|
staticUsrProfileMulti = buildEnv {
|
||||||
|
|
Loading…
Add table
Reference in a new issue