From 6d33406492d8efa8aeeb610757f6948ac6fd6db4 Mon Sep 17 00:00:00 2001 From: foo-dogsquared Date: Sat, 25 Dec 2021 20:32:52 +0800 Subject: [PATCH] Update themes module Setting themes should be in `modules.themes.themes` for namespacing and the module itself is gaining options. --- hosts/ni/default.nix | 5 +++- .../nixos/themes/a-happy-gnome/default.nix | 19 ++---------- modules/nixos/themes/default.nix | 30 +++++++++++++------ 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/hosts/ni/default.nix b/hosts/ni/default.nix index 16232d09..7063d49e 100644 --- a/hosts/ni/default.nix +++ b/hosts/ni/default.nix @@ -27,8 +27,11 @@ virtualization.enable = true; }; editors.neovim.enable = true; - themes.a-happy-gnome.enable = true; users.users.foo-dogsquared = {}; + themes = { + disableLimit = true; + themes.a-happy-gnome.enable = true; + }; hardware-setup.backup-archive.enable = true; }; diff --git a/modules/nixos/themes/a-happy-gnome/default.nix b/modules/nixos/themes/a-happy-gnome/default.nix index d9eef2b3..3efd1b0e 100644 --- a/modules/nixos/themes/a-happy-gnome/default.nix +++ b/modules/nixos/themes/a-happy-gnome/default.nix @@ -4,7 +4,7 @@ # See https://github.com/NixOS/nixpkgs/issues/54150 for more details. let name = "a-happy-gnome"; - cfg = config.modules.themes.a-happy-gnome; + cfg = config.modules.themes.themes.a-happy-gnome; dconf = pkgs.gnome3.dconf; customDconfDb = pkgs.stdenv.mkDerivation { name = "${name}-dconf-db"; @@ -12,7 +12,7 @@ let }; in { - options.modules.themes.a-happy-gnome.enable = lib.mkEnableOption "'A happy GNOME', foo-dogsquared's configuration of GNOME desktop environment"; + options.modules.themes.themes.a-happy-gnome.enable = lib.mkEnableOption "'A happy GNOME', foo-dogsquared's configuration of GNOME desktop environment"; config = lib.mkIf cfg.enable { services.xserver.enable = true; @@ -41,21 +41,6 @@ in gnome-tour ]); - programs.dconf = { - enable = true; - - # This is an internal function which is subject to change. - # However, this seems to be in for some time but still, be wary. - # The function is found on `nixos/programs/dconf.nix` from nixpkgs. - profiles.customGnomeConfig = pkgs.writeTextFile { - name = "${name}-dconf-profile"; - text = '' - user-db:user - file-db:${customDconfDb} - ''; - }; - }; - # I'm pretty sure this is already done but just to make sure. services.gnome.chrome-gnome-shell.enable = true; diff --git a/modules/nixos/themes/default.nix b/modules/nixos/themes/default.nix index 49ea8c84..8113a447 100644 --- a/modules/nixos/themes/default.nix +++ b/modules/nixos/themes/default.nix @@ -3,14 +3,26 @@ # You can also show your desktop being modularized like this. { config, options, lib, pkgs, ... }: -let - cfg = config.modules.themes; -in -{ - assertions = [{ - assertion = (lib.countAttrs (_: theme: theme.enable) cfg) < 2; - message = "Can't have more than one theme enabled at any given time."; - }]; +let cfg = config.modules.themes; +in { + options.modules.themes.disableLimit = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Whether to unlock the limit for themes. Since themes may overlap with + packages and configurations, this should be enabled at your own risk. + ''; + }; - imports = lib.mapAttrsToList (n: v: import v) (lib.filterAttrs (n: v: n != "default") (lib.filesToAttr ./.)); + imports = lib.mapAttrsToList (n: v: import v) + (lib.filterAttrs (n: v: n != "default") (lib.filesToAttr ./.)); + + config = { + assertions = [{ + assertion = + let enabledThemes = lib.countAttrs (_: theme: theme.enable) cfg.themes; + in cfg.disableLimit && (enabledThemes < 2); + message = "Can't have more than one theme enabled at any given time."; + }]; + }; }