Files
nix-flake/modules/features/applications/gui/fluxer.nix
T
greyweather 81e85743de
Build docs with nix and Material for mkDocs / build-docs (push) Successful in 1m33s
move options to separate modules, set up mkDocs generation
2026-09-01 03:08:10 +01:00

94 lines
3.4 KiB
Nix

{ inputs, self, lib, ... }: let
fluxer-package = { appimageTools, fetchurl, lib, pkgs, ... }:
let
pname = "fluxer";
version = "0.0.8";
src = fetchurl {
url = "https://api.fluxer.app/dl/desktop/stable/linux/x64/latest/appimage";
sha256 = "sha256-GdoBK+Z/d2quEIY8INM4IQy5tzzIBBM+3CgJXQn0qAw=";
};
appimageContents = appimageTools.extract { inherit pname version src; };
in
appimageTools.wrapType2 rec {
inherit pname version src;
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop
install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/512x512/apps/${pname}.png
substituteInPlace $out/share/applications/${pname}.desktop \
--replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname} %U'
'';
meta = with lib; {
description = "Open-source, self-hosted alternative to Discord";
homepage = "https://fluxer.app/";
license = licenses.agpl3Only;
maintainers = [ ];
platforms = [ "x86_64-linux" ];
};
};
fluxer-canary-package = { appimageTools, fetchurl, lib, pkgs, ... }:
let
pname = "fluxer-canary";
version = "2026.827.132039";
src = fetchurl {
url = "https://api.canary.fluxer.app/dl/desktop/canary/linux/x64/latest/appimage";
sha256 = "sha256-eRR9JZa4LPuUtjdDO+JvzaOLxQeDgVziLrFr5iIgr1Q=";
};
appimageContents = appimageTools.extract { inherit pname version src; };
in
appimageTools.wrapType2 rec {
inherit pname version src;
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop
install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/512x512/apps/${pname}.png
substituteInPlace $out/share/applications/${pname}.desktop \
--replace 'Exec=AppRun %U' 'Exec=${pname} %U'
'';
meta = with lib; {
description = "Open-source, self-hosted alternative to Discord";
homepage = "https://fluxer.app/";
license = licenses.agpl3Only;
maintainers = [ ];
platforms = [ "x86_64-linux" ];
};
};
in {
flake.nixosModules.graphics = { pkgs, config, lib, ... }: {
config = lib.mkIf (config.features.applications.gui.fluxer.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) {
home-manager.users.grey.features.applications.gui.fluxer.enable = lib.mkDefault true;
} {
environment.systemPackages = [
(pkgs.callPackage (fluxer-package) {})
];
}) // lib.mkIf (config.features.applications.gui.fluxer-canary.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) {
home-manager.users.grey.features.applications.gui.fluxer-canary.enable = lib.mkDefault true;
} {
environment.systemPackages = [
(pkgs.callPackage (fluxer-canary-package) {})
];
});
};
flake.homeModules.graphics = { pkgs, config, lib, ... }: {
config = lib.mkIf (config.features.applications.gui.fluxer.enable) {
home.packages = [
(pkgs.callPackage (fluxer-package) {})
];
} // lib.mkIf (config.features.applications.gui.fluxer-canary.enable) {
home.packages = [
(pkgs.callPackage (fluxer-canary-package) {})
];
};
};
}