|
345 | 345 | stdenv.cc.cc.lib |
346 | 346 | zlib |
347 | 347 | ]); |
| 348 | + gsettingsSchemaPackages = with pkgs; [ |
| 349 | + gsettings-desktop-schemas |
| 350 | + gtk3 |
| 351 | + ]; |
| 352 | + gsettingsSchemaRoot = pkg: |
| 353 | + pkgs.lib.removeSuffix "/glib-2.0/schemas" (pkgs.glib.getSchemaPath pkg); |
| 354 | + gsettingsSchemaDataDirs = |
| 355 | + pkgs.lib.concatMapStringsSep ":" gsettingsSchemaRoot gsettingsSchemaPackages; |
| 356 | + xdgDefaultDataDirs = "/usr/local/share:/usr/share"; |
348 | 357 | launcherPath = pkgs.lib.makeBinPath (with pkgs; [ |
349 | 358 | bash |
350 | 359 | coreutils |
|
688 | 697 |
|
689 | 698 | makeWrapper "$out/opt/codex-desktop/start.sh" "$out/bin/codex-desktop" \ |
690 | 699 | --prefix PATH : "${payloadLauncherPath}" \ |
| 700 | + --run 'export XDG_DATA_DIRS="''${XDG_DATA_DIRS:-${xdgDefaultDataDirs}}"' \ |
| 701 | + --prefix XDG_DATA_DIRS : "${gsettingsSchemaDataDirs}" \ |
691 | 702 | --prefix PATH : "/run/current-system/sw/bin" \ |
692 | 703 | --prefix PATH : "/etc/profiles/per-user/$(whoami)/bin" |
693 | 704 |
|
|
787 | 798 | grep -F 'CODEX_NOTIFICATION_ACTIONS_SOURCE=' ${installer}/bin/codex-desktop-installer >/dev/null |
788 | 799 | touch "$out" |
789 | 800 | ''; |
| 801 | + nix-gsettings-schema-wrapper = pkgs.runCommand "codex-desktop-nix-gsettings-schema-wrapper-check" { } '' |
| 802 | + schema_data_dirs=${pkgs.lib.escapeShellArg gsettingsSchemaDataDirs} |
| 803 | + default_data_dirs=${pkgs.lib.escapeShellArg xdgDefaultDataDirs} |
| 804 | + explicit_data_dirs=/custom/share:/other/share |
| 805 | +
|
| 806 | + run_wrapper() { |
| 807 | + case "$1" in |
| 808 | + unset) unset XDG_DATA_DIRS ;; |
| 809 | + empty) export XDG_DATA_DIRS= ;; |
| 810 | + populated) export XDG_DATA_DIRS="$explicit_data_dirs" ;; |
| 811 | + *) echo "unknown test case: $1" >&2; return 1 ;; |
| 812 | + esac |
| 813 | +
|
| 814 | + exec() { |
| 815 | + printf '%s\n' "$XDG_DATA_DIRS" |
| 816 | + } |
| 817 | +
|
| 818 | + source ${codexDesktop}/bin/codex-desktop |
| 819 | + } |
| 820 | +
|
| 821 | + assert_data_dirs() { |
| 822 | + test_case="$1" |
| 823 | + expected="$2" |
| 824 | + actual="$(run_wrapper "$test_case")" |
| 825 | + if [ "$actual" != "$expected" ]; then |
| 826 | + printf '%s: expected <%s>, got <%s>\n' \ |
| 827 | + "$test_case" "$expected" "$actual" >&2 |
| 828 | + return 1 |
| 829 | + fi |
| 830 | + } |
| 831 | +
|
| 832 | + expected_defaults="$schema_data_dirs:$default_data_dirs" |
| 833 | + assert_data_dirs unset "$expected_defaults" |
| 834 | + assert_data_dirs empty "$expected_defaults" |
| 835 | + assert_data_dirs populated "$schema_data_dirs:$explicit_data_dirs" |
| 836 | + touch "$out" |
| 837 | + ''; |
790 | 838 | nix-linux-features-evaluation = import ./nix/linux-features-test.nix { |
791 | 839 | inherit pkgs self system; |
792 | 840 | }; |
|
0 commit comments