diff --git a/desktop/general.nix b/desktop/general.nix index be32a2d..4108e24 100644 --- a/desktop/general.nix +++ b/desktop/general.nix @@ -138,6 +138,8 @@ in { "veracrypt" ]; + aviallon.programs.libreoffice.enable = mkIf (!generalCfg.minimal) true; + services.packagekit.enable = mkDefault (!generalCfg.minimal); security.sudo.extraConfig = '' diff --git a/desktop/plasma.nix b/desktop/plasma.nix index cc06fa7..ed7d7cf 100644 --- a/desktop/plasma.nix +++ b/desktop/plasma.nix @@ -96,13 +96,12 @@ in { krdc sddm-kcm - libreoffice-qt - myFirefox ]; aviallon.desktop.browser.firefox.overrides.enablePlasmaBrowserIntegration = true; + aviallon.programs.libreoffice.qt = true; xdg.portal.enable = mkDefault true; xdg.icons.enable = true; diff --git a/programs/default.nix b/programs/default.nix index 8a2a90b..adb8833 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -6,5 +6,6 @@ ./git.nix ./nano.nix ./nvtop.nix + ./libreoffice.nix ]; } diff --git a/programs/libreoffice.nix b/programs/libreoffice.nix new file mode 100644 index 0000000..af776ec --- /dev/null +++ b/programs/libreoffice.nix @@ -0,0 +1,68 @@ +{ config, pkgs, lib, myLib, ... }: +with lib; +let + cfg = config.aviallon.programs.libreoffice; + toStringOrFunc = x: + if isFunction x + then "" + else (builtins.toJSON x) + ; + applyOverrides = overrides: pkg: + foldl' + (prev: override: + let + r = (trace "override: ${toStringOrFunc override}" override) (trace "prev: ${toString prev}" prev); + in trace "result: ${toString r}" r + ) + pkg + overrides + ; +in { + options.aviallon.programs.libreoffice = { + enable = mkEnableOption "LibreOffice"; + variant = mkOption { + type = with types; types.enum [ "still" "fresh" ]; + default = "fresh"; + description = "Which LibreOffice variant to use"; + }; + qt = mkEnableOption "Qt support"; + gnome = mkOption { + description = "Wether to enable Gnome support"; + default = true; + type = types.bool; + internal = true; + }; + opencl = mkEnableOption "OpenCL support"; + package = mkOption { + description = "Which final LibreOffice package to use"; + type = myLib.types.package'; + }; + package' = mkOption { + internal = true; + description = "Which base (unwrapped) LibreOffice package to use"; + default = if cfg.qt then pkgs.libreoffice-qt.libreoffice else pkgs.libreoffice-unwrapped; + type = myLib.types.package'; + }; + }; + + config = mkIf cfg.enable { + aviallon.programs.libreoffice.package = + let + overridesList = [] + ++ [(pkg: pkg.override { + variant = cfg.variant; + })] + ++ optional cfg.opencl (pkg: pkg.overrideAttrs (old: { + buildInputs = old.buildInputs ++ [ pkgs.ocl-icd ]; + })) + ; + in pkgs.libreoffice.override { + libreoffice = applyOverrides overridesList cfg.package'; + }; + + + environment.systemPackages = [ + cfg.package + ]; + }; +}