Compare commits

...
Author SHA1 Message Date
1cfea5a819
add nix module 2026-09-20 17:13:22 -04:00
b3023d8147
don't auto create dbus service 2026-09-20 17:00:10 -04:00
8 changed files with 143 additions and 67 deletions

View file

@ -16,67 +16,12 @@
... ...
}@inputs: }@inputs:
flake-parts.lib.mkFlake { inherit inputs; } { flake-parts.lib.mkFlake { inherit inputs; } {
imports = [ ./linux/nix ];
systems = [ systems = [
"x86_64-linux" "x86_64-linux"
"aarch64-linux" "aarch64-linux"
"aarch64-darwin" "aarch64-darwin"
"x86_64-darwin" "x86_64-darwin"
]; ];
perSystem =
{
lib,
pkgs,
system,
...
}:
{
_module.args.pkgs = import nixpkgs {
inherit system;
config = {
android_sdk.accept_license = true;
allowUnfree = true;
};
};
packages =
let
default = pkgs.callPackage ./linux/nix/pkg {
src = self;
};
in
{
inherit default;
flatpak = inputs.nix2flatpak.lib.${system}.mkFlatpak {
appName = "Nexus";
developer = "QuadRadical";
appId = "nexus.federated.nexus";
package = default;
runtime = "org.gnome.Platform/49";
permissions = {
share = [ "network" ];
sockets = [
"pulseaudio"
"fallback-x11"
"wayland"
];
talk-names = [
"org.unifiedpush.Distributor.*"
"org.freedesktop.Notifications"
];
devices = [ "dri" ];
};
};
gomuks = pkgs.callPackage ./linux/nix/pkg/gomuks.nix {
src = self;
};
};
devShells.default = pkgs.callPackage ./linux/nix/devshell.nix { };
};
}; };
} }

View file

@ -28,6 +28,7 @@ class UnifiedPushController extends AsyncNotifier<bool> {
dbusName: "nexus.federated.nexus.UnifiedPush", dbusName: "nexus.federated.nexus.UnifiedPush",
storage: UnifiedPushStorageSharedPreferences(), storage: UnifiedPushStorageSharedPreferences(),
background: isInBackground, background: isInBackground,
shouldWriteService: true,
), ),
onNewEndpoint: (endpoint, instance) async { onNewEndpoint: (endpoint, instance) async {
final pushKey = endpoint.pubKeySet!.pubKey; final pushKey = endpoint.pubKeySet!.pubKey;

View file

@ -0,0 +1,3 @@
[D-BUS Service]
Name=nexus.federated.nexus.UnifiedPush
Exec=/usr/bin/env FLUTTER_HEADLESS=1 nexus

59
linux/nix/default.nix Normal file
View file

@ -0,0 +1,59 @@
{ self, inputs, ... }: {
perSystem =
{
pkgs,
system,
lib,
...
}:
{
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
config = {
android_sdk.accept_license = true;
allowUnfree = true;
};
};
packages =
let
default = pkgs.callPackage ./pkg {
src = self;
};
in
{
inherit default;
flatpak = inputs.nix2flatpak.lib.${system}.mkFlatpak {
appName = "Nexus";
developer = "QuadRadical";
appId = "nexus.federated.nexus";
package = default;
runtime = "org.gnome.Platform/49";
permissions = {
share = [ "network" ];
sockets = [
"pulseaudio"
"fallback-x11"
"wayland"
];
talk-names = [
"org.unifiedpush.Distributor.*"
"org.freedesktop.Notifications"
];
devices = [ "dri" ];
};
};
gomuks = pkgs.callPackage ./pkg/gomuks.nix {
src = self;
};
};
devShells.default = pkgs.callPackage ./devshell.nix { };
};
flake.nixosModules.default = import ./module.nix self;
}

55
linux/nix/module.nix Normal file
View file

@ -0,0 +1,55 @@
self:
{
pkgs,
lib,
config,
...
}:
let
inherit (lib)
mkIf
mkMerge
mkOption
mkEnableOption
mkPackageOption
types
;
cfg = config.programs.nexus;
in
{
options.programs.nexus = {
enable = mkEnableOption "Nexus, a simple and user-friendly Matrix client";
package = mkPackageOption self.packages.${pkgs.stdenv.hostPlatform.system} "nexus" { };
enableNotifications = mkOption {
description = ''
Whether to enable push notifications support via UnifiedPush, installing
{manpage}`kunifiedpush` and registering its systemd and D-Bus units.
'';
type = types.bool;
default = false;
example = true;
};
};
config = mkIf cfg.enable (mkMerge [
{
environment.systemPackages = [ cfg.package ];
}
(mkIf cfg.enableNotifications {
environment.systemPackages = [
pkgs.kdePackages.kunifiedpush
];
systemd.packages = [
pkgs.kdePackages.kunifiedpush
];
services.dbus.packages = [
cfg.package
];
})
]);
}

View file

@ -37,6 +37,7 @@ flutter.buildFlutterApplication {
postInstall = '' postInstall = ''
install -D assets/bundled/icon.svg $out/share/icons/hicolor/scalable/apps/nexus.svg install -D assets/bundled/icon.svg $out/share/icons/hicolor/scalable/apps/nexus.svg
install -Dm755 linux/nexus.federated.nexus.desktop -t $out/share/applications install -Dm755 linux/nexus.federated.nexus.desktop -t $out/share/applications
install -Dm644 linux/*.service -t $out/share/dbus-1/services
wrapProgram $out/bin/nexus \ wrapProgram $out/bin/nexus \
--suffix LD_LIBRARY_PATH : $out/app/nexus/lib --suffix LD_LIBRARY_PATH : $out/app/nexus/lib
''; '';

View file

@ -1501,20 +1501,22 @@ packages:
source: hosted source: hosted
version: "3.5.0" version: "3.5.0"
unifiedpush_linux: unifiedpush_linux:
dependency: transitive dependency: "direct overridden"
description: description:
name: unifiedpush_linux path: unifiedpush_linux
sha256: c062d5eedd1cec70bcd33270cc4e01ae0ff6501f33d471167c06b34a968adfeb ref: "quad/feat/should-write-service-option"
url: "https://pub.dev" resolved-ref: "7589b07ef4280820e4adea165d3d86b219f6022c"
source: hosted url: "https://codeberg.org/Henry-Hiles/flutter-connector"
version: "1.0.0" source: git
version: "1.0.1"
unifiedpush_platform_interface: unifiedpush_platform_interface:
dependency: transitive dependency: "direct overridden"
description: description:
name: unifiedpush_platform_interface path: unifiedpush_platform_interface
sha256: "83372bc8d794b8b12ef6993b518d7be907dcfc2191bdf6de0ece5c4445d89880" ref: "quad/feat/should-write-service-option"
url: "https://pub.dev" resolved-ref: "7589b07ef4280820e4adea165d3d86b219f6022c"
source: hosted url: "https://codeberg.org/Henry-Hiles/flutter-connector"
source: git
version: "4.0.0" version: "4.0.0"
unifiedpush_storage_interface: unifiedpush_storage_interface:
dependency: transitive dependency: transitive

View file

@ -20,6 +20,16 @@ environment:
dependency_overrides: dependency_overrides:
dynamic_color: 2.1.0 dynamic_color: 2.1.0
unifiedpush_linux:
git:
url: https://codeberg.org/Henry-Hiles/flutter-connector
ref: quad/feat/should-write-service-option
path: unifiedpush_linux
unifiedpush_platform_interface:
git:
url: https://codeberg.org/Henry-Hiles/flutter-connector
ref: quad/feat/should-write-service-option
path: unifiedpush_platform_interface
path_provider_android: 2.2.23 # Pinned to avoid JNI path_provider_android: 2.2.23 # Pinned to avoid JNI
linkify: linkify:
git: git: