summary refs log tree commit diff
path: root/pkgs/build-support/build-fhs-userenv
diff options
context:
space:
mode:
authorArtturi <Artturin@artturin.com>2022-03-15 00:03:56 +0200
committerGitHub <noreply@github.com>2022-03-15 00:03:56 +0200
commitb54e7571e2c1dbad3b2a593ddf778b4447b0815b (patch)
tree7f93482eb60a7aaaca417b9fb7899c219ee9d593 /pkgs/build-support/build-fhs-userenv
parent3239fd2b8f728106491154b44625662e10259af2 (diff)
parent4330797dfb095d59f57bb65f04d4054a53089892 (diff)
downloadnixpkgs-b54e7571e2c1dbad3b2a593ddf778b4447b0815b.tar
nixpkgs-b54e7571e2c1dbad3b2a593ddf778b4447b0815b.tar.gz
nixpkgs-b54e7571e2c1dbad3b2a593ddf778b4447b0815b.tar.bz2
nixpkgs-b54e7571e2c1dbad3b2a593ddf778b4447b0815b.tar.lz
nixpkgs-b54e7571e2c1dbad3b2a593ddf778b4447b0815b.tar.xz
nixpkgs-b54e7571e2c1dbad3b2a593ddf778b4447b0815b.tar.zst
nixpkgs-b54e7571e2c1dbad3b2a593ddf778b4447b0815b.zip
Merge pull request #161739 from Artturin/gsettingsfhsenv
Diffstat (limited to 'pkgs/build-support/build-fhs-userenv')
-rw-r--r--pkgs/build-support/build-fhs-userenv/env.nix26
1 files changed, 26 insertions, 0 deletions
diff --git a/pkgs/build-support/build-fhs-userenv/env.nix b/pkgs/build-support/build-fhs-userenv/env.nix
index abf577baa2d..7251500f76c 100644
--- a/pkgs/build-support/build-fhs-userenv/env.nix
+++ b/pkgs/build-support/build-fhs-userenv/env.nix
@@ -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 {