Files

103 lines
3.5 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" ];
};
};
optionName = "features.applications.gui.fluxer.enable";
optionNameCanary = "features.applications.gui.fluxer-canary.enable";
in {
imports = [
(inputs.helpers.mkStandardFeature.flakeModule "graphics" optionName "Fluxer")
(inputs.helpers.mkStandardFeature.flakeModule "graphics" optionNameCanary "Fluxer Canary")
];
flake.nixosModules.graphics = { pkgs, config, lib, ... }: {
imports = [
(inputs.helpers.mkStandardFeature.nixosModule { inherit config optionName; } {
environment.systemPackages = [
(pkgs.callPackage (fluxer-package) {})
];
})
(inputs.helpers.mkStandardFeature.nixosModule { inherit config; optionName = optionNameCanary; } {
environment.systemPackages = [
(pkgs.callPackage (fluxer-canary-package) {})
];
})
];
};
flake.homeModules.graphics = { pkgs, config, lib, ... }: {
imports = [
(inputs.helpers.mkStandardFeature.homeModule { inherit config optionName; } {
home.packages = [
(pkgs.callPackage (fluxer-package) {})
];
})
(inputs.helpers.mkStandardFeature.homeModule { inherit config; optionName = optionNameCanary; } {
home.packages = [
(pkgs.callPackage (fluxer-canary-package) {})
];
})
];
};
}