{ 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) {}) ]; }) ]; }; }