From 31bf48154cb77e891a3695e6c155ebd9f81e4df8 Mon Sep 17 00:00:00 2001 From: Katherina Walshe-Grey Date: Tue, 30 Jul 2024 13:02:11 +0100 Subject: [PATCH] consolidate home-manager config to a module with one entrypoint --- common/users/qenya.nix | 13 +++------ home/{gnome => dconf}/appearance.nix | 8 +++--- home/{gnome => dconf}/background-image.jpg | Bin home/dconf/default.nix | 30 +++++++++++++++++++++ home/{gnome => dconf}/keyboard.nix | 1 - home/default.nix | 12 +++++++++ home/firefox.nix | 6 ----- home/git.nix | 2 ++ home/gnome/default.nix | 9 ------- home/vscode.nix | 1 - hosts/orm/configuration.nix | 1 - hosts/orm/home.nix | 13 --------- hosts/tohru/home.nix | 16 +++++------ hosts/yevaud/configuration.nix | 1 - hosts/yevaud/home.nix | 14 ---------- 15 files changed, 59 insertions(+), 68 deletions(-) rename home/{gnome => dconf}/appearance.nix (82%) rename home/{gnome => dconf}/background-image.jpg (100%) create mode 100644 home/dconf/default.nix rename home/{gnome => dconf}/keyboard.nix (94%) create mode 100644 home/default.nix delete mode 100644 home/firefox.nix delete mode 100644 home/gnome/default.nix delete mode 100644 hosts/orm/home.nix delete mode 100644 hosts/yevaud/home.nix diff --git a/common/users/qenya.nix b/common/users/qenya.nix index 5974069..00f35af 100644 --- a/common/users/qenya.nix +++ b/common/users/qenya.nix @@ -1,8 +1,7 @@ { config, lib, pkgs, ... }: let keys = import ../../keys.nix; -in -{ +in { users.users.qenya = { isNormalUser = true; home = "/home/qenya"; @@ -19,12 +18,8 @@ in home-manager.users.qenya = { config, lib, pkgs, osConfig, ... }: { home.homeDirectory = osConfig.users.users.qenya.home; - programs.git = { - enable = true; - userName = "Katherina Walshe-Grey"; - userEmail = "git@qenya.tel"; - }; - - home.stateVersion = "23.11"; + imports = [ + ../../home + ]; }; } diff --git a/home/gnome/appearance.nix b/home/dconf/appearance.nix similarity index 82% rename from home/gnome/appearance.nix rename to home/dconf/appearance.nix index 129aa1a..d6f1fab 100644 --- a/home/gnome/appearance.nix +++ b/home/dconf/appearance.nix @@ -1,8 +1,8 @@ { config, lib, pkgs, ... }: -{ +let inherit (lib) mkIf; +in { dconf = { - enable = true; settings = let backgroundOptions = { @@ -21,5 +21,7 @@ "org/gnome/desktop/interface".color-scheme = "prefer-dark"; }; }; - home.file.".background-image".source = ./background-image.jpg; + home.file.".background-image" = mkIf config.dconf.enable { + source = ./background-image.jpg; + }; } diff --git a/home/gnome/background-image.jpg b/home/dconf/background-image.jpg similarity index 100% rename from home/gnome/background-image.jpg rename to home/dconf/background-image.jpg diff --git a/home/dconf/default.nix b/home/dconf/default.nix new file mode 100644 index 0000000..4924e3e --- /dev/null +++ b/home/dconf/default.nix @@ -0,0 +1,30 @@ +{ config, lib, pkgs, ... }: + +# dconf is the configuration manager for GNOME. + +# home-manager, in its infinite wisdom, sets `dconf.enable` to true by default. +# This is a problem because we don't want it to attempt to apply our settings on +# a system that doesn't actually have GNOME installed. + +# To work around it, we create our own option `qenya.dconf.enable`, which +# defaults to false, and pass it to `dconf.enable`. + +let + inherit (lib) mkIf mkEnableOption; + cfg = config.qenya.dconf; +in +{ + options.qenya.dconf = { + enable = mkEnableOption "dconf"; + }; + + config = { + dconf.enable = config.qenya.dconf.enable; + }; + + imports = [ + # TODO: nix-ify other parts of GNOME config + ./appearance.nix + ./keyboard.nix + ]; +} diff --git a/home/gnome/keyboard.nix b/home/dconf/keyboard.nix similarity index 94% rename from home/gnome/keyboard.nix rename to home/dconf/keyboard.nix index 7950cb8..e96a6f2 100644 --- a/home/gnome/keyboard.nix +++ b/home/dconf/keyboard.nix @@ -2,7 +2,6 @@ { dconf = { - enable = true; settings = { "org/gnome/desktop/wm/keybindings" = { # These are largely useless on most normal systems diff --git a/home/default.nix b/home/default.nix new file mode 100644 index 0000000..e3197ef --- /dev/null +++ b/home/default.nix @@ -0,0 +1,12 @@ +{ + imports = [ + ./dconf + ./cli.nix + ./git.nix + ./tmux.nix + ./vscode.nix + ./zsh.nix + ]; + + home.stateVersion = "23.11"; +} diff --git a/home/firefox.nix b/home/firefox.nix deleted file mode 100644 index 95e399e..0000000 --- a/home/firefox.nix +++ /dev/null @@ -1,6 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - # TODO: nix-ify Firefox config - programs.firefox.enable = true; -} diff --git a/home/git.nix b/home/git.nix index 0a9f7c7..cc13d4a 100644 --- a/home/git.nix +++ b/home/git.nix @@ -3,6 +3,8 @@ { programs.git = { enable = true; + userName = "Katherina Walshe-Grey"; + userEmail = "git@qenya.tel"; extraConfig = { init = { defaultBranch = "main"; diff --git a/home/gnome/default.nix b/home/gnome/default.nix deleted file mode 100644 index 160be51..0000000 --- a/home/gnome/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - imports = [ - # TODO: nix-ify other parts of GNOME config - ./appearance.nix - ./keyboard.nix - ]; -} diff --git a/home/vscode.nix b/home/vscode.nix index 480581f..d8ded74 100644 --- a/home/vscode.nix +++ b/home/vscode.nix @@ -2,7 +2,6 @@ { programs.vscode = { - enable = true; enableExtensionUpdateCheck = false; enableUpdateCheck = false; package = pkgs.vscodium; diff --git a/hosts/orm/configuration.nix b/hosts/orm/configuration.nix index f0553fd..1403b3d 100644 --- a/hosts/orm/configuration.nix +++ b/hosts/orm/configuration.nix @@ -3,7 +3,6 @@ { imports = [ ./hardware-configuration.nix - ./home.nix ]; boot.loader.systemd-boot.enable = true; diff --git a/hosts/orm/home.nix b/hosts/orm/home.nix deleted file mode 100644 index e5267c7..0000000 --- a/hosts/orm/home.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - home-manager.users.qenya = { pkgs, ... }: { - imports = [ - ../../home/cli.nix - ../../home/git.nix - ../../home/zsh.nix - ]; - - home.stateVersion = "23.11"; - }; -} diff --git a/hosts/tohru/home.nix b/hosts/tohru/home.nix index 023f444..226ed1a 100644 --- a/hosts/tohru/home.nix +++ b/hosts/tohru/home.nix @@ -2,14 +2,12 @@ { home-manager.users.qenya = { pkgs, ... }: { - imports = [ - ../../home/cli.nix - ../../home/firefox.nix - ../../home/git.nix - ../../home/gnome - ../../home/vscode.nix - ../../home/zsh.nix - ]; + qenya.dconf.enable = true; + + programs = { + firefox.enable = true; # TODO: config is not yet nix-ified + vscode.enable = true; + }; home.packages = (with pkgs; [ bitwarden @@ -31,7 +29,5 @@ nur.repos.qenya.digital-a-love-story nur.repos.qenya.dont-take-it-personally-babe ]); - - home.stateVersion = "23.11"; }; } diff --git a/hosts/yevaud/configuration.nix b/hosts/yevaud/configuration.nix index d06c5cf..0c21462 100644 --- a/hosts/yevaud/configuration.nix +++ b/hosts/yevaud/configuration.nix @@ -3,7 +3,6 @@ { imports = [ ./hardware-configuration.nix - ./home.nix ]; boot.loader.systemd-boot.enable = true; diff --git a/hosts/yevaud/home.nix b/hosts/yevaud/home.nix deleted file mode 100644 index e8a18e9..0000000 --- a/hosts/yevaud/home.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, lib, pkgs, ... }: - -{ - home-manager.users.qenya = { pkgs, ... }: { - imports = [ - ../../home/cli.nix - ../../home/git.nix - ../../home/tmux.nix - ../../home/zsh.nix - ]; - - home.stateVersion = "23.11"; - }; -}