{ config, lib, pkgs, ... }: with lib; let cfg = config.grimmShared; in { options.grimmShared = { enable = mkEnableOption "grimm-shared-common"; 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"; }; }; sway = { enable = mkEnableOption "grimm-sway"; definitions = mkOption { type = types.attrsOf types.str; default = {}; description = "set of definitions assigning variable to value"; }; keybinds = mkOption { type = types.attrsOf types.str; default = {}; description = "set of keybinds assigning key combo to action"; }; autolaunch = mkOption { type = types.listOf types.str; default = []; description = "set of commands to be run at sway startup"; }; extraConfig = mkOption { type = types.str; default = ""; description = "additional sway config to be included"; }; populateDefaultConfig = mkOption { type = types.bool; default = false; description = "puts my personal config in place using above methods"; }; }; }; imports = [ ./common/localisation.nix ./common/printing.nix ./common/portals.nix ./common/networking.nix ./common/toolchains.nix ./common/sound.nix ./common/opengl.nix ./common/gaming.nix ./common/firefox.nix ./common/pass.nix ./common/sway.nix ./common/sway-defaults.nix ]; }