From 95701b57c45e3e5ecb5ac010cbd09283f2c34846 Mon Sep 17 00:00:00 2001 From: PerchunPak Date: Thu, 26 Dec 2024 14:24:47 +0100 Subject: [PATCH] astal: init at 0-unstable-2025-01-12 --- .../libraries/astal/buildAstalModule.nix | 88 +++++++++++++++++++ pkgs/development/libraries/astal/default.nix | 23 +++++ .../libraries/astal/modules/apps.nix | 9 ++ .../libraries/astal/modules/astal3.nix | 16 ++++ .../libraries/astal/modules/astal4.nix | 16 ++++ .../libraries/astal/modules/auth.nix | 9 ++ .../libraries/astal/modules/battery.nix | 9 ++ .../libraries/astal/modules/bluetooth.nix | 5 ++ .../libraries/astal/modules/cava.nix | 6 ++ .../libraries/astal/modules/gjs.nix | 27 ++++++ .../libraries/astal/modules/greet.nix | 6 ++ .../libraries/astal/modules/hyprland.nix | 6 ++ .../libraries/astal/modules/io.nix | 11 +++ .../libraries/astal/modules/mpris.nix | 13 +++ .../libraries/astal/modules/network.nix | 6 ++ .../libraries/astal/modules/notifd.nix | 13 +++ .../libraries/astal/modules/powerprofiles.nix | 6 ++ .../libraries/astal/modules/river.nix | 12 +++ .../libraries/astal/modules/tray.nix | 10 +++ .../libraries/astal/modules/wireplumber.nix | 6 ++ pkgs/top-level/all-packages.nix | 2 + 21 files changed, 299 insertions(+) create mode 100644 pkgs/development/libraries/astal/buildAstalModule.nix create mode 100644 pkgs/development/libraries/astal/default.nix create mode 100644 pkgs/development/libraries/astal/modules/apps.nix create mode 100644 pkgs/development/libraries/astal/modules/astal3.nix create mode 100644 pkgs/development/libraries/astal/modules/astal4.nix create mode 100644 pkgs/development/libraries/astal/modules/auth.nix create mode 100644 pkgs/development/libraries/astal/modules/battery.nix create mode 100644 pkgs/development/libraries/astal/modules/bluetooth.nix create mode 100644 pkgs/development/libraries/astal/modules/cava.nix create mode 100644 pkgs/development/libraries/astal/modules/gjs.nix create mode 100644 pkgs/development/libraries/astal/modules/greet.nix create mode 100644 pkgs/development/libraries/astal/modules/hyprland.nix create mode 100644 pkgs/development/libraries/astal/modules/io.nix create mode 100644 pkgs/development/libraries/astal/modules/mpris.nix create mode 100644 pkgs/development/libraries/astal/modules/network.nix create mode 100644 pkgs/development/libraries/astal/modules/notifd.nix create mode 100644 pkgs/development/libraries/astal/modules/powerprofiles.nix create mode 100644 pkgs/development/libraries/astal/modules/river.nix create mode 100644 pkgs/development/libraries/astal/modules/tray.nix create mode 100644 pkgs/development/libraries/astal/modules/wireplumber.nix diff --git a/pkgs/development/libraries/astal/buildAstalModule.nix b/pkgs/development/libraries/astal/buildAstalModule.nix new file mode 100644 index 000000000000..a29c5905db3b --- /dev/null +++ b/pkgs/development/libraries/astal/buildAstalModule.nix @@ -0,0 +1,88 @@ +{ + lib, + stdenv, + fetchFromGitHub, + + glib, + wrapGAppsHook3, + gobject-introspection, + meson, + pkg-config, + ninja, + vala, + wayland, + wayland-scanner, + python3, +}: +let + cleanArgs = lib.flip builtins.removeAttrs [ + "name" + "sourceRoot" + "nativeBuildInputs" + "buildInputs" + "website-path" + "meta" + ]; + + buildAstalModule = + { + name, + sourceRoot ? "lib/${name}", + nativeBuildInputs ? [ ], + buildInputs ? [ ], + website-path ? name, + meta ? { }, + ... + }@args: + stdenv.mkDerivation ( + finalAttrs: + cleanArgs args + // { + pname = "astal-${name}"; + version = "0-unstable-2025-01-12"; + + __structuredAttrs = true; + strictDeps = true; + + src = fetchFromGitHub { + owner = "Aylur"; + repo = "astal"; + rev = "6fd7ae514af36ff9baf1209a2eeebd3a26cf94ce"; + hash = "sha256-IjLW96gjrCAjx/QZOvYyNpoeb53bkOJ6dDQt8ubaMMY="; + }; + + sourceRoot = "${finalAttrs.src.name}/${sourceRoot}"; + + nativeBuildInputs = nativeBuildInputs ++ [ + wrapGAppsHook3 + gobject-introspection + meson + pkg-config + ninja + vala + wayland + wayland-scanner + python3 + ]; + + buildInputs = [ glib ] ++ buildInputs; + + meta = { + homepage = "https://aylur.github.io/astal/guide/libraries/${website-path}"; + license = lib.licenses.lgpl21; + maintainers = with lib.maintainers; [ perchun ]; + platforms = [ + "aarch64-linux" + "x86_64-linux" + ]; + } // meta; + } + ); +in + +args: +# to support (finalAttrs: {...}) +if builtins.typeOf args == "function" then + buildAstalModule (lib.fix args) +else + buildAstalModule args diff --git a/pkgs/development/libraries/astal/default.nix b/pkgs/development/libraries/astal/default.nix new file mode 100644 index 000000000000..9edaebb2a92e --- /dev/null +++ b/pkgs/development/libraries/astal/default.nix @@ -0,0 +1,23 @@ +{ wireplumber }: +self: { + buildAstalModule = self.callPackage ./buildAstalModule.nix { }; + + apps = self.callPackage ./modules/apps.nix { }; + astal3 = self.callPackage ./modules/astal3.nix { }; + astal4 = self.callPackage ./modules/astal4.nix { }; + auth = self.callPackage ./modules/auth.nix { }; + battery = self.callPackage ./modules/battery.nix { }; + bluetooth = self.callPackage ./modules/bluetooth.nix { }; + cava = self.callPackage ./modules/cava.nix { }; + gjs = self.callPackage ./modules/gjs.nix { }; + greet = self.callPackage ./modules/greet.nix { }; + hyprland = self.callPackage ./modules/hyprland.nix { }; + io = self.callPackage ./modules/io.nix { }; + mpris = self.callPackage ./modules/mpris.nix { }; + network = self.callPackage ./modules/network.nix { }; + notifd = self.callPackage ./modules/notifd.nix { }; + powerprofiles = self.callPackage ./modules/powerprofiles.nix { }; + river = self.callPackage ./modules/river.nix { }; + tray = self.callPackage ./modules/tray.nix { }; + wireplumber = self.callPackage ./modules/wireplumber.nix { inherit wireplumber; }; +} diff --git a/pkgs/development/libraries/astal/modules/apps.nix b/pkgs/development/libraries/astal/modules/apps.nix new file mode 100644 index 000000000000..b6f45ff9a655 --- /dev/null +++ b/pkgs/development/libraries/astal/modules/apps.nix @@ -0,0 +1,9 @@ +{ + buildAstalModule, + json-glib, +}: +buildAstalModule { + name = "apps"; + buildInputs = [ json-glib ]; + meta.description = "Astal module for application query"; +} diff --git a/pkgs/development/libraries/astal/modules/astal3.nix b/pkgs/development/libraries/astal/modules/astal3.nix new file mode 100644 index 000000000000..85c6168885d5 --- /dev/null +++ b/pkgs/development/libraries/astal/modules/astal3.nix @@ -0,0 +1,16 @@ +{ + buildAstalModule, + gtk3, + gtk-layer-shell, + io, +}: +buildAstalModule { + name = "astal3"; + sourceRoot = "lib/astal/gtk3"; + buildInputs = [ io ]; + propagatedBuildInputs = [ + gtk3 + gtk-layer-shell + ]; + meta.description = "Astal module for GTK3 widgets"; +} diff --git a/pkgs/development/libraries/astal/modules/astal4.nix b/pkgs/development/libraries/astal/modules/astal4.nix new file mode 100644 index 000000000000..7bdb7c67e5f2 --- /dev/null +++ b/pkgs/development/libraries/astal/modules/astal4.nix @@ -0,0 +1,16 @@ +{ + buildAstalModule, + gtk4, + gtk4-layer-shell, + io, +}: +buildAstalModule { + name = "astal4"; + sourceRoot = "lib/astal/gtk4"; + buildInputs = [ + io + gtk4 + gtk4-layer-shell + ]; + meta.description = "Astal module for GTK4 widgets"; +} diff --git a/pkgs/development/libraries/astal/modules/auth.nix b/pkgs/development/libraries/astal/modules/auth.nix new file mode 100644 index 000000000000..027cd3a198a7 --- /dev/null +++ b/pkgs/development/libraries/astal/modules/auth.nix @@ -0,0 +1,9 @@ +{ + buildAstalModule, + pam, +}: +buildAstalModule { + name = "auth"; + buildInputs = [ pam ]; + meta.description = "Astal module for authentication using pam"; +} diff --git a/pkgs/development/libraries/astal/modules/battery.nix b/pkgs/development/libraries/astal/modules/battery.nix new file mode 100644 index 000000000000..e2fc3474a046 --- /dev/null +++ b/pkgs/development/libraries/astal/modules/battery.nix @@ -0,0 +1,9 @@ +{ + buildAstalModule, + json-glib, +}: +buildAstalModule { + name = "battery"; + buildInputs = [ json-glib ]; + meta.description = "Astal module for upowerd devices (DBus proxy)"; +} diff --git a/pkgs/development/libraries/astal/modules/bluetooth.nix b/pkgs/development/libraries/astal/modules/bluetooth.nix new file mode 100644 index 000000000000..64467f4a120c --- /dev/null +++ b/pkgs/development/libraries/astal/modules/bluetooth.nix @@ -0,0 +1,5 @@ +{ buildAstalModule }: +buildAstalModule { + name = "bluetooth"; + meta.description = "Astal module for bluez using DBus"; +} diff --git a/pkgs/development/libraries/astal/modules/cava.nix b/pkgs/development/libraries/astal/modules/cava.nix new file mode 100644 index 000000000000..f22ec48d033b --- /dev/null +++ b/pkgs/development/libraries/astal/modules/cava.nix @@ -0,0 +1,6 @@ +{ buildAstalModule }: +buildAstalModule { + name = "cava"; + meta.description = "Astal module for audio visualization using cava"; + meta.broken = true; # https://github.com/NixOS/nixpkgs/pull/368312 +} diff --git a/pkgs/development/libraries/astal/modules/gjs.nix b/pkgs/development/libraries/astal/modules/gjs.nix new file mode 100644 index 000000000000..00e57c54417c --- /dev/null +++ b/pkgs/development/libraries/astal/modules/gjs.nix @@ -0,0 +1,27 @@ +{ + buildAstalModule, + astal3, + io, + + meson, + ninja, + pkg-config, +}: +(buildAstalModule { + name = "gjs"; + sourceRoot = "lang/gjs"; + meta.description = "Astal module for GJS"; +}).overrideAttrs + { + # Remove all unused here inputs + nativeBuildInputs = [ + meson + ninja + pkg-config + ]; + buildInputs = [ + astal3 + io + ]; + propagatedBuildInputs = [ ]; + } diff --git a/pkgs/development/libraries/astal/modules/greet.nix b/pkgs/development/libraries/astal/modules/greet.nix new file mode 100644 index 000000000000..20be11464cba --- /dev/null +++ b/pkgs/development/libraries/astal/modules/greet.nix @@ -0,0 +1,6 @@ +{ buildAstalModule, json-glib }: +buildAstalModule { + name = "greet"; + buildInputs = [ json-glib ]; + meta.description = "Astal module for greetd using IPC"; +} diff --git a/pkgs/development/libraries/astal/modules/hyprland.nix b/pkgs/development/libraries/astal/modules/hyprland.nix new file mode 100644 index 000000000000..a5c5038342f7 --- /dev/null +++ b/pkgs/development/libraries/astal/modules/hyprland.nix @@ -0,0 +1,6 @@ +{ buildAstalModule, json-glib }: +buildAstalModule { + name = "hyprland"; + buildInputs = [ json-glib ]; + meta.description = "Astal module for Hyprland using IPC"; +} diff --git a/pkgs/development/libraries/astal/modules/io.nix b/pkgs/development/libraries/astal/modules/io.nix new file mode 100644 index 000000000000..716430bdf5a1 --- /dev/null +++ b/pkgs/development/libraries/astal/modules/io.nix @@ -0,0 +1,11 @@ +{ buildAstalModule, nix-update-script }: +(buildAstalModule { + name = "io"; + sourceRoot = "lib/astal/io"; + meta.description = "Astal core library"; +}).overrideAttrs + { + # add an update script only in one place, + # so r-ryantm won't run it multiple times + passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; }; + } diff --git a/pkgs/development/libraries/astal/modules/mpris.nix b/pkgs/development/libraries/astal/modules/mpris.nix new file mode 100644 index 000000000000..02fa7c072265 --- /dev/null +++ b/pkgs/development/libraries/astal/modules/mpris.nix @@ -0,0 +1,13 @@ +{ + buildAstalModule, + gvfs, + json-glib, +}: +buildAstalModule { + name = "mpris"; + buildInputs = [ + gvfs + json-glib + ]; + meta.description = "Astal module for mpris players"; +} diff --git a/pkgs/development/libraries/astal/modules/network.nix b/pkgs/development/libraries/astal/modules/network.nix new file mode 100644 index 000000000000..efd84459c9f8 --- /dev/null +++ b/pkgs/development/libraries/astal/modules/network.nix @@ -0,0 +1,6 @@ +{ buildAstalModule, networkmanager }: +buildAstalModule { + name = "network"; + buildInputs = [ networkmanager ]; + meta.description = "Astal module for NetworkManager"; +} diff --git a/pkgs/development/libraries/astal/modules/notifd.nix b/pkgs/development/libraries/astal/modules/notifd.nix new file mode 100644 index 000000000000..a40e5c54091d --- /dev/null +++ b/pkgs/development/libraries/astal/modules/notifd.nix @@ -0,0 +1,13 @@ +{ + buildAstalModule, + json-glib, + gdk-pixbuf, +}: +buildAstalModule { + name = "notifd"; + buildInputs = [ + json-glib + gdk-pixbuf + ]; + meta.description = "Astal module for notification daemon"; +} diff --git a/pkgs/development/libraries/astal/modules/powerprofiles.nix b/pkgs/development/libraries/astal/modules/powerprofiles.nix new file mode 100644 index 000000000000..6eee36c2b6cf --- /dev/null +++ b/pkgs/development/libraries/astal/modules/powerprofiles.nix @@ -0,0 +1,6 @@ +{ buildAstalModule, json-glib }: +buildAstalModule { + name = "powerprofiles"; + buildInputs = [ json-glib ]; + meta.description = "Astal module for upowerd profiles using DBus"; +} diff --git a/pkgs/development/libraries/astal/modules/river.nix b/pkgs/development/libraries/astal/modules/river.nix new file mode 100644 index 000000000000..bed2492189fe --- /dev/null +++ b/pkgs/development/libraries/astal/modules/river.nix @@ -0,0 +1,12 @@ +{ buildAstalModule, json-glib }: +buildAstalModule { + name = "river"; + buildInputs = [ json-glib ]; + meta.description = "Astal module for River using IPC"; + + postUnpack = '' + rm -rf $sourceRoot/subprojects + mkdir -p $sourceRoot/subprojects + cp -r --remove-destination $src/lib/wayland-glib $sourceRoot/subprojects/wayland-glib + ''; +} diff --git a/pkgs/development/libraries/astal/modules/tray.nix b/pkgs/development/libraries/astal/modules/tray.nix new file mode 100644 index 000000000000..6ccf216fc029 --- /dev/null +++ b/pkgs/development/libraries/astal/modules/tray.nix @@ -0,0 +1,10 @@ +{ + buildAstalModule, + json-glib, +}: +buildAstalModule { + name = "tray"; + buildInputs = [ json-glib ]; + meta.description = "Astal module for StatusNotifierItem"; + meta.broken = true; # https://github.com/NixOS/nixpkgs/issues/337630 +} diff --git a/pkgs/development/libraries/astal/modules/wireplumber.nix b/pkgs/development/libraries/astal/modules/wireplumber.nix new file mode 100644 index 000000000000..1180bad621ed --- /dev/null +++ b/pkgs/development/libraries/astal/modules/wireplumber.nix @@ -0,0 +1,6 @@ +{ buildAstalModule, wireplumber }: +buildAstalModule { + name = "wireplumber"; + buildInputs = [ wireplumber ]; + meta.description = "Astal module for wireplumber"; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index eeea7fedfac0..0f8b34298890 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8569,6 +8569,8 @@ with pkgs; aspell = aspell.override { searchNixProfiles = false; }; }; + astal = recurseIntoAttrs (lib.makeScope newScope (callPackage ../development/libraries/astal { })); + attr = callPackage ../development/libraries/attr { }; # Not moved to aliases while we decide if we should split the package again.