{ config, lib, pkgs, ... }: with lib; let cfg = config.grimmShared; in { options.grimmShared = { enable = mkEnableOption "grimm-shared-modules"; locale = mkOption { type = types.bool; default = true; description = "Sets german units but english language"; }; printing = mkOption { type = types.bool; default = false; description = "Enables print and scan related options"; }; portals = mkOption { type = types.bool; default = false; description = "Enables portals for wlr, gtk and kde as well as fixes fonts"; }; network = mkOption { type = types.bool; default = false; description = "Enables network manager, wifi and bluetooth"; }; tooling = { enable = mkEnableOption "grimm-tooling"; pass = mkOption { type = types.bool; default = true; description = "Enables password-store, gnupg and such secret handling"; }; git_user = mkOption { type = types.str; default = "Grimmauld"; description = "Username for git to use"; }; git_email = mkOption { type = types.str; default = "${config.grimmShared.tooling.git_user}@grimmauld.de"; description = "Email for git to use"; }; }; sound = mkOption { type = types.bool; default = false; description = "whether to enable sound"; }; graphical = mkOption { type = types.bool; default = false; description = "whether to enable graphical components"; }; gaming = mkOption { type = types.bool; default = false; description = "enables steam, heroic, prism and gamemoded"; }; firefox = { enable = mkEnableOption "grimm-firefox"; plugins = mkOption { type = types.attrsOf types.str; default = {}; description = "set of plugins to install. Format: guid = short-id"; }; disableUserPlugins = mkOption { type = types.bool; default = false; description = "disables user controlled plugins"; }; }; }; imports = [ ./modules/localisation.nix ./modules/printing.nix ./modules/portals.nix ./modules/networking.nix ./modules/toolchains.nix ./modules/sound.nix ./modules/opengl.nix ./modules/gaming.nix ./modules/firefox.nix ./modules/pass.nix ]; }