Merge pull request #161739 from Artturin/gsettingsfhsenv
This commit is contained in:
commit
b54e7571e2
4 changed files with 56 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.
|
||||
|
||||
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`.
|
||||
|
|
|
@ -68,6 +68,8 @@ rec {
|
|||
xdg-utils
|
||||
iana-etc
|
||||
krb5
|
||||
gsettings-desktop-schemas
|
||||
hicolor-icon-theme # dont show a gtk warning about hicolor not being installed
|
||||
];
|
||||
|
||||
# list of libraries expected in an appimage environment:
|
||||
|
|
|
@ -93,6 +93,32 @@ let
|
|||
paths = [ etcPkg ldconfig ] ++ basePkgs ++ targetPaths;
|
||||
extraOutputsToInstall = [ "out" "lib" "bin" ] ++ extraOutputsToInstall;
|
||||
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 {
|
||||
|
|
|
@ -134,6 +134,32 @@ let
|
|||
paths = [ etcPkg ] ++ basePkgs ++ targetPaths;
|
||||
extraOutputsToInstall = [ "out" "lib" "bin" ] ++ extraOutputsToInstall;
|
||||
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 {
|
||||
|
|
Loading…
Reference in a new issue