From ca7877a49daa636e2a800f5f1824de336d5a194a Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Sun, 29 Sep 2024 19:15:54 -0700 Subject: [PATCH 1/6] buildFlutterApplication: prevent conflicting app directories --- .../build-support/build-flutter-application.nix | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkgs/development/compilers/flutter/build-support/build-flutter-application.nix b/pkgs/development/compilers/flutter/build-support/build-flutter-application.nix index ff6c6b31006f..ae89d3720b33 100644 --- a/pkgs/development/compilers/flutter/build-support/build-flutter-application.nix +++ b/pkgs/development/compilers/flutter/build-support/build-flutter-application.nix @@ -146,21 +146,22 @@ let built=build/linux/*/$flutterMode/bundle mkdir -p $out/bin - mv $built $out/app + mkdir -p $out/app + mv $built $out/app/$pname - for f in $(find $out/app -iname "*.desktop" -type f); do + for f in $(find $out/app/$pname -iname "*.desktop" -type f); do install -D $f $out/share/applications/$(basename $f) done - for f in $(find $out/app -maxdepth 1 -type f); do + for f in $(find $out/app/$pname -maxdepth 1 -type f); do ln -s $f $out/bin/$(basename $f) done # make *.so executable - find $out/app -iname "*.so" -type f -exec chmod +x {} + + find $out/app/$pname -iname "*.so" -type f -exec chmod +x {} + # remove stuff like /build/source/packages/ubuntu_desktop_installer/linux/flutter/ephemeral - for f in $(find $out/app -executable -type f); do + for f in $(find $out/app/$pname -executable -type f); do if patchelf --print-rpath "$f" | grep /build; then # this ignores static libs (e,g. libapp.so) also echo "strip RPath of $f" newrp=$(patchelf --print-rpath $f | sed -r "s|/build.*ephemeral:||g" | sed -r "s|/build.*profile:||g") From 15c9e0e39d9010b5ecc94820e1469ff863ec51ac Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Sun, 29 Sep 2024 19:37:46 -0700 Subject: [PATCH 2/6] yubioath-flutter: use $pname for app dir --- pkgs/applications/misc/yubioath-flutter/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/applications/misc/yubioath-flutter/default.nix b/pkgs/applications/misc/yubioath-flutter/default.nix index 1bd757557132..a44d249ae3bb 100644 --- a/pkgs/applications/misc/yubioath-flutter/default.nix +++ b/pkgs/applications/misc/yubioath-flutter/default.nix @@ -46,21 +46,21 @@ flutter322.buildFlutterApplication rec { postInstall = '' # Swap the authenticator-helper symlink with the correct symlink. - ln -fs "${passthru.helper}/bin/authenticator-helper" "$out/app/helper/authenticator-helper" + ln -fs "${passthru.helper}/bin/authenticator-helper" "$out/app/$pname/helper/authenticator-helper" # Move the icon. mkdir $out/share/icons - mv $out/app/linux_support/com.yubico.yubioath.png $out/share/icons + mv $out/app/$pname/linux_support/com.yubico.yubioath.png $out/share/icons # Cleanup. rm -rf \ - "$out/app/README.adoc" \ - "$out/app/desktop_integration.sh" \ - "$out/app/linux_support" \ + "$out/app/$pname/README.adoc" \ + "$out/app/$pname/desktop_integration.sh" \ + "$out/app/$pname/linux_support" \ $out/bin/* # We will repopulate this directory later. # Symlink binary. - ln -sf "$out/app/authenticator" "$out/bin/yubioath-flutter" + ln -sf "$out/app/$pname/authenticator" "$out/bin/yubioath-flutter" # Set the correct path to the binary in desktop file. substituteInPlace "$out/share/applications/com.yubico.authenticator.desktop" \ From 734f9c705972c9ebb9935d75210af04520b7dc1c Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Sun, 29 Sep 2024 19:38:02 -0700 Subject: [PATCH 3/6] intiface-central: use $pname for app dir --- pkgs/by-name/in/intiface-central/package.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/in/intiface-central/package.nix b/pkgs/by-name/in/intiface-central/package.nix index 7353a8ed6aca..d4216c553b11 100644 --- a/pkgs/by-name/in/intiface-central/package.nix +++ b/pkgs/by-name/in/intiface-central/package.nix @@ -50,11 +50,13 @@ flutterPackages.v3_19.buildFlutterApplication rec { # without this, only the splash screen will be shown and the logs will contain the # line `Failed to load dynamic library 'lib/libintiface_engine_flutter_bridge.so'` - extraWrapProgramArgs = "--chdir $out/app"; + # Environmental variables don't quite eval outside of hooks so use pname and + # version directly. + extraWrapProgramArgs = "--chdir $out/app/${pname}"; postInstall = '' mkdir -p $out/share/pixmaps - cp $out/app/data/flutter_assets/assets/icons/intiface_central_icon.png $out/share/pixmaps/intiface-central.png + cp $out/app/$pname/data/flutter_assets/assets/icons/intiface_central_icon.png $out/share/pixmaps/intiface-central.png ''; desktopItems = [ From 8b71097c321d7fbbf86a738a635ddf8eae1fe4f0 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Sun, 29 Sep 2024 19:39:07 -0700 Subject: [PATCH 4/6] expidus.calculator: use $pname for app dir --- pkgs/desktops/expidus/calculator/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/desktops/expidus/calculator/default.nix b/pkgs/desktops/expidus/calculator/default.nix index fb2ab188922a..98328b8874c6 100644 --- a/pkgs/desktops/expidus/calculator/default.nix +++ b/pkgs/desktops/expidus/calculator/default.nix @@ -23,16 +23,16 @@ flutter.buildFlutterApplication rec { postInstall = '' rm $out/bin/calculator - ln -s $out/app/calculator $out/bin/expidus-calculator + ln -s $out/app/$pname/calculator $out/bin/expidus-calculator mkdir -p $out/share/applications - mv $out/app/data/com.expidusos.calculator.desktop $out/share/applications + mv $out/app/$pname/data/com.expidusos.calculator.desktop $out/share/applications mkdir -p $out/share/icons - mv $out/app/data/com.expidusos.calculator.png $out/share/icons + mv $out/app/$pname/data/com.expidusos.calculator.png $out/share/icons mkdir -p $out/share/metainfo - mv $out/app/data/com.expidusos.calculator.metainfo.xml $out/share/metainfo + mv $out/app/$pname/data/com.expidusos.calculator.metainfo.xml $out/share/metainfo substituteInPlace "$out/share/applications/com.expidusos.calculator.desktop" \ --replace "Exec=calculator" "Exec=$out/bin/expidus-calculator" \ From c53017ddcb024555713795b3f717bc33c590f757 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Sun, 29 Sep 2024 19:39:40 -0700 Subject: [PATCH 5/6] expidus.file-manager: use $pname for app dir --- pkgs/desktops/expidus/file-manager/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/desktops/expidus/file-manager/default.nix b/pkgs/desktops/expidus/file-manager/default.nix index fa8e50475fde..8de6262d86ba 100644 --- a/pkgs/desktops/expidus/file-manager/default.nix +++ b/pkgs/desktops/expidus/file-manager/default.nix @@ -23,16 +23,16 @@ flutter.buildFlutterApplication rec { postInstall = '' rm $out/bin/file_manager - ln -s $out/app/file_manager $out/bin/expidus-file-manager + ln -s $out/app/$pname/file_manager $out/bin/expidus-file-manager mkdir -p $out/share/applications - mv $out/app/data/com.expidusos.file_manager.desktop $out/share/applications + mv $out/app/$pname/data/com.expidusos.file_manager.desktop $out/share/applications mkdir -p $out/share/icons - mv $out/app/data/com.expidusos.file_manager.png $out/share/icons + mv $out/app/$pname/data/com.expidusos.file_manager.png $out/share/icons mkdir -p $out/share/metainfo - mv $out/app/data/com.expidusos.file_manager.metainfo.xml $out/share/metainfo + mv $out/app/$pname/data/com.expidusos.file_manager.metainfo.xml $out/share/metainfo substituteInPlace "$out/share/applications/com.expidusos.file_manager.desktop" \ --replace "Exec=file_manager" "Exec=$out/bin/expidus-file-manager" \ From 10bf5e1c0f1f9240cfa129e29a0d2fc851a61e30 Mon Sep 17 00:00:00 2001 From: Tristan Ross Date: Mon, 30 Sep 2024 10:31:22 -0700 Subject: [PATCH 6/6] finamp: use $pname for app dir --- pkgs/by-name/fi/finamp/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/fi/finamp/package.nix b/pkgs/by-name/fi/finamp/package.nix index fd7a7da55c3f..b061859ac498 100644 --- a/pkgs/by-name/fi/finamp/package.nix +++ b/pkgs/by-name/fi/finamp/package.nix @@ -33,7 +33,7 @@ flutter322.buildFlutterApplication { }; postFixup = '' - patchelf $out/app/finamp --add-needed libisar.so --add-needed libmpv.so --add-rpath ${lib.makeLibraryPath [ mpv-unwrapped ]} + patchelf $out/app/$pname/finamp --add-needed libisar.so --add-needed libmpv.so --add-rpath ${lib.makeLibraryPath [ mpv-unwrapped ]} ''; postInstall = ''