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:
|
||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||
imports = [ ./linux/nix ];
|
||||
systems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
"aarch64-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",
|
||||
storage: UnifiedPushStorageSharedPreferences(),
|
||||
background: isInBackground,
|
||||
shouldWriteService: false,
|
||||
shouldWriteService: true,
|
||||
),
|
||||
onNewEndpoint: (endpoint, instance) async {
|
||||
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 = ''
|
||||
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 -Dm644 linux/*.service -t $out/share/dbus-1/services
|
||||
wrapProgram $out/bin/nexus \
|
||||
--suffix LD_LIBRARY_PATH : $out/app/nexus/lib
|
||||
'';
|
||||
|
|
|
|||
Loading…
Reference in a new issue