diff --git a/home/qenya/dconf/appearance.nix b/home/qenya/dconf/appearance.nix deleted file mode 100644 index d6f1fab..0000000 --- a/home/qenya/dconf/appearance.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ config, lib, pkgs, ... }: - -let inherit (lib) mkIf; -in { - dconf = { - settings = - let - backgroundOptions = { - color-shading-type = "solid"; - picture-options = "zoom"; - picture-uri = "${config.home.homeDirectory}/.background-image"; - primary-color = "#3a4ba0"; - secondary-color = "#2f302f"; - }; - in - { - "org/gnome/desktop/background" = backgroundOptions // { - picture-uri-dark = backgroundOptions.picture-uri; - }; - "org/gnome/desktop/screensaver" = backgroundOptions; - "org/gnome/desktop/interface".color-scheme = "prefer-dark"; - }; - }; - home.file.".background-image" = mkIf config.dconf.enable { - source = ./background-image.jpg; - }; -} diff --git a/home/qenya/dconf/default.nix b/home/qenya/dconf/default.nix index 66f82cd..912efb1 100644 --- a/home/qenya/dconf/default.nix +++ b/home/qenya/dconf/default.nix @@ -1,19 +1,23 @@ -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, osConfig, ... }: # 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. So, we override the -# default to false. +let + isGnome = osConfig.services.xserver.desktopManager.gnome.enable; +in +{ + dconf.enable = isGnome; -let inherit (lib) mkDefault; -in { - dconf.enable = mkDefault false; + dconf.settings = { + "org/gnome/settings-daemon/plugins/color".night-light-enabled = true; + "org/gnome/desktop/sound".event-sounds = false; + }; imports = [ - # TODO: nix-ify other parts of GNOME config - ./appearance.nix + ./desktop.nix ./keyboard.nix + ./mouse-touchpad.nix + ./multitasking.nix + ./shell.nix ]; } diff --git a/home/qenya/dconf/desktop.nix b/home/qenya/dconf/desktop.nix new file mode 100644 index 0000000..4cfbaa7 --- /dev/null +++ b/home/qenya/dconf/desktop.nix @@ -0,0 +1,23 @@ +{ config, lib, pkgs, ... }: + +let inherit (lib) mkIf; +in { + dconf.settings = { + "org/gnome/desktop/background" = { + picture-options = "zoom"; + picture-uri = "${config.home.homeDirectory}/.background-image"; + picture-uri-dark = "${config.home.homeDirectory}/.background-image"; + }; + "org/gnome/desktop/screensaver" = { + picture-options = "zoom"; + picture-uri = "${config.home.homeDirectory}/.background-image"; + }; + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + enable-hot-corners = false; + }; + }; + home.file.".background-image" = mkIf config.dconf.enable { + source = ./background-image.jpg; + }; +} diff --git a/home/qenya/dconf/keyboard.nix b/home/qenya/dconf/keyboard.nix index e96a6f2..5271bae 100644 --- a/home/qenya/dconf/keyboard.nix +++ b/home/qenya/dconf/keyboard.nix @@ -1,14 +1,12 @@ # { config, lib, pkgs, ... }: { - dconf = { - settings = { - "org/gnome/desktop/wm/keybindings" = { - # These are largely useless on most normal systems - # and conflict with VS Code's default keybinds for "Copy Line Up/Down" - move-to-workspace-up = [ ]; - move-to-workspace-down = [ ]; - }; + dconf.settings = { + "org/gnome/desktop/wm/keybindings" = { + # These are largely useless on most normal systems + # and conflict with VS Code's default keybinds for "Copy Line Up/Down" + move-to-workspace-up = [ ]; + move-to-workspace-down = [ ]; }; }; } diff --git a/home/qenya/dconf/mouse-touchpad.nix b/home/qenya/dconf/mouse-touchpad.nix new file mode 100644 index 0000000..f3fd932 --- /dev/null +++ b/home/qenya/dconf/mouse-touchpad.nix @@ -0,0 +1,16 @@ +{ config, lib, pkgs, ... }: + +{ + dconf.settings = { + "org/gnome/desktop/peripherals/mouse" = { + natural-scroll = false; + }; + "org/gnome/desktop/peripherals/touchpad" = { + click-method = "fingers"; + disable-while-typing = false; + natural-scroll = true; # the correct option, whatever Janet says + tap-to-click = true; + two-finger-scrolling-enabled = true; + }; + }; +} diff --git a/home/qenya/dconf/multitasking.nix b/home/qenya/dconf/multitasking.nix new file mode 100644 index 0000000..1d93972 --- /dev/null +++ b/home/qenya/dconf/multitasking.nix @@ -0,0 +1,11 @@ +{ config, lib, pkgs, ... }: + +{ + dconf.settings = { + "org/gnome/mutter" = { + edge-tiling = true; + dynamic-workspaces = true; + workspaces-only-on-primary = true; + }; + }; +} diff --git a/home/qenya/dconf/shell.nix b/home/qenya/dconf/shell.nix new file mode 100644 index 0000000..73672fd --- /dev/null +++ b/home/qenya/dconf/shell.nix @@ -0,0 +1,26 @@ +{ config, lib, pkgs, ... }: +{ + dconf.settings = { + "org/gnome/shell" = { + disable-user-extensions = true; + + # TODO: this is fine for now on tohru (the only GNOME system I use) but shouldn't depend on certain apps being installed + favorite-apps = [ + "discord.desktop" + "org.gnome.Evolution.desktop" + "firefox.desktop" + "torbrowser.desktop" + "steam.desktop" + "codium.desktop" + "org.gnome.Console.desktop" + "org.gnome.Nautilus.desktop" + "org.gnome.SystemMonitor.desktop" + ]; + + # TODO: fill this out (needs preinstalled stuff removing first) + # app-picker-layout = [ + # ... + # ]; + }; + }; +} diff --git a/hosts/tohru/home.nix b/hosts/tohru/home.nix index 2ebda52..ef30554 100644 --- a/hosts/tohru/home.nix +++ b/hosts/tohru/home.nix @@ -1,12 +1,8 @@ { config, lib, pkgs, ... }: { - dconf.enable = true; - - programs = { - firefox.enable = true; - vscode.enable = true; - }; + programs.firefox.enable = true; + programs.vscode.enable = true; home.packages = with pkgs; [ bitwarden