add nix module
This commit is contained in:
parent
b3023d8147
commit
1cfea5a819
6 changed files with 120 additions and 57 deletions
57
flake.nix
57
flake.nix
|
|
@ -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 { };
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,7 +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: false,
|
shouldWriteService: true,
|
||||||
),
|
),
|
||||||
onNewEndpoint: (endpoint, instance) async {
|
onNewEndpoint: (endpoint, instance) async {
|
||||||
final pushKey = endpoint.pubKeySet!.pubKey;
|
final pushKey = endpoint.pubKeySet!.pubKey;
|
||||||
|
|
|
||||||
3
linux/nexus.federated.nexus.UnifiedPush.service
Normal file
3
linux/nexus.federated.nexus.UnifiedPush.service
Normal 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
59
linux/nix/default.nix
Normal 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
55
linux/nix/module.nix
Normal 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
|
||||||
|
];
|
||||||
|
})
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
'';
|
'';
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue