summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--maintainers/maintainer-list.nix6
-rw-r--r--pkgs/applications/misc/pop-launcher/default.nix60
-rw-r--r--pkgs/top-level/all-packages.nix2
3 files changed, 68 insertions, 0 deletions
diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index 0fc7587677e..411e9637779 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -12880,6 +12880,12 @@
     githubId = 6022042;
     name = "Sam Parkinson";
   };
+  samhug = {
+    email = "s@m-h.ug";
+    github = "samhug";
+    githubId = 171470;
+    name = "Sam Hug";
+  };
   samlich = {
     email = "nixos@samli.ch";
     github = "samlich";
diff --git a/pkgs/applications/misc/pop-launcher/default.nix b/pkgs/applications/misc/pop-launcher/default.nix
new file mode 100644
index 00000000000..ca4a1742e1e
--- /dev/null
+++ b/pkgs/applications/misc/pop-launcher/default.nix
@@ -0,0 +1,60 @@
+{ rustPlatform
+, fetchFromGitHub
+, lib
+, fd
+, libqalculate
+}:
+
+rustPlatform.buildRustPackage rec {
+  pname = "pop-launcher";
+  version = "1.2.1";
+
+  src = fetchFromGitHub {
+    owner = "pop-os";
+    repo = "launcher";
+    rev = version;
+    sha256 = "sha256-BQAO9IodZxGgV8iBmUaOF0yDbAMVDFslKCqlh3pBnb0=";
+  };
+
+  postPatch = ''
+    substituteInPlace src/lib.rs \
+        --replace '/usr/lib/pop-launcher' "$out/share/pop-launcher"
+    substituteInPlace plugins/src/scripts/mod.rs \
+        --replace '/usr/lib/pop-launcher' "$out/share/pop-launcher"
+    substituteInPlace plugins/src/calc/mod.rs \
+        --replace 'Command::new("qalc")' 'Command::new("${libqalculate}/bin/qalc")'
+    substituteInPlace plugins/src/find/mod.rs \
+        --replace 'spawn("fd")' 'spawn("${fd}/bin/fd")'
+    substituteInPlace plugins/src/terminal/mod.rs \
+        --replace '/usr/bin/gnome-terminal' 'gnome-terminal'
+  '';
+
+  cargoSha256 = "sha256-cTvrq0fH057UIx/O9u8zHMsg+psMGg1q9klV5OMxtok=";
+
+  cargoBuildFlags = [ "--package" "pop-launcher-bin" ];
+
+  postInstall = ''
+    mv $out/bin/pop-launcher{-bin,}
+
+    plugins_dir=$out/share/pop-launcher/plugins
+    scripts_dir=$out/share/pop-launcher/scripts
+    mkdir -p $plugins_dir $scripts_dir
+
+    for plugin in $(find plugins/src -mindepth 1 -maxdepth 1 -type d -printf '%f\n'); do
+      mkdir $plugins_dir/$plugin
+      cp plugins/src/$plugin/*.ron $plugins_dir/$plugin
+      ln -sf $out/bin/pop-launcher $plugins_dir/$plugin/$(echo $plugin | sed 's/_/-/')
+    done
+
+    for script in scripts/*; do
+      cp -r $script $scripts_dir
+    done
+  '';
+
+  meta = with lib; {
+    description = "Modular IPC-based desktop launcher service";
+    homepage = "https://github.com/pop-os/launcher";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ samhug ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 81dcaf9a9c9..3cd0ec97907 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -32228,6 +32228,8 @@ with pkgs;
 
   ponymix = callPackage ../applications/audio/ponymix { };
 
+  pop-launcher = callPackage ../applications/misc/pop-launcher { };
+
   popcorntime = callPackage ../applications/video/popcorntime {};
 
   pothos = libsForQt5.callPackage ../applications/radio/pothos { };