2021-11-25 11:55:30 +00:00
|
|
|
{ config, options, lib, pkgs, ... }:
|
|
|
|
|
|
|
|
let
|
2021-12-04 15:27:10 +00:00
|
|
|
name = "a-happy-gnome";
|
2022-01-09 05:38:59 +00:00
|
|
|
cfg = config.themes.themes.a-happy-gnome;
|
2022-01-09 05:41:07 +00:00
|
|
|
dconfConfig = pkgs.runCommand "install-a-happy-gnome-dconf-keyfiles" {} ''
|
2022-02-04 08:38:52 +00:00
|
|
|
install -Dm644 ${./config/dconf}/*.conf -t $out/etc/dconf/db/${name}-conf.d
|
2022-01-09 05:41:07 +00:00
|
|
|
'';
|
2021-11-25 11:55:30 +00:00
|
|
|
in
|
|
|
|
{
|
2022-01-09 05:38:59 +00:00
|
|
|
options.themes.themes.a-happy-gnome.enable = lib.mkEnableOption "'A happy GNOME', foo-dogsquared's configuration of GNOME desktop environment";
|
2021-11-25 11:55:30 +00:00
|
|
|
|
|
|
|
config = lib.mkIf cfg.enable {
|
2022-01-20 08:17:15 +00:00
|
|
|
# Enable GNOME and GDM.
|
|
|
|
services.xserver = {
|
|
|
|
enable = true;
|
|
|
|
displayManager.gdm.enable = true;
|
|
|
|
desktopManager.gnome.enable = true;
|
|
|
|
};
|
2021-11-25 11:55:30 +00:00
|
|
|
|
2021-12-08 04:18:37 +00:00
|
|
|
# Since we're using KDE Connect, we'll have to use gsconnect.
|
|
|
|
programs.kdeconnect = {
|
|
|
|
enable = true;
|
|
|
|
package = pkgs.gnomeExtensions.gsconnect;
|
|
|
|
};
|
|
|
|
|
2021-12-04 15:27:10 +00:00
|
|
|
# Don't need most of the GNOME's offering so...
|
|
|
|
environment.gnome.excludePackages = with pkgs.gnome; [
|
|
|
|
gedit
|
|
|
|
eog
|
|
|
|
geary
|
|
|
|
totem
|
|
|
|
epiphany
|
|
|
|
gnome-terminal
|
|
|
|
gnome-music
|
|
|
|
yelp
|
2021-12-05 02:18:50 +00:00
|
|
|
] ++ (with pkgs; [
|
2021-12-04 15:27:10 +00:00
|
|
|
gnome-user-docs
|
|
|
|
gnome-tour
|
2021-12-05 02:18:50 +00:00
|
|
|
]);
|
2021-12-04 15:27:10 +00:00
|
|
|
|
2021-11-25 13:45:48 +00:00
|
|
|
# I'm pretty sure this is already done but just to make sure.
|
|
|
|
services.gnome.chrome-gnome-shell.enable = true;
|
2021-11-25 11:55:30 +00:00
|
|
|
|
2022-01-20 08:17:15 +00:00
|
|
|
# Bring all of the dconf keyfiles in there.
|
|
|
|
programs.dconf = {
|
|
|
|
enable = true;
|
|
|
|
packages = [ dconfConfig ];
|
2022-02-04 08:38:52 +00:00
|
|
|
|
|
|
|
# The `user` profile needed to set custom system-wide settings in GNOME.
|
|
|
|
profiles.user = pkgs.writeTextFile {
|
|
|
|
name = "a-happy-gnome";
|
|
|
|
text = ''
|
|
|
|
user-db:user
|
|
|
|
system-db:${name}-conf
|
|
|
|
'';
|
|
|
|
};
|
2022-01-20 08:17:15 +00:00
|
|
|
};
|
2022-01-09 05:41:07 +00:00
|
|
|
|
2022-01-20 08:17:15 +00:00
|
|
|
environment.systemPackages = with pkgs; [
|
2022-02-24 03:46:50 +00:00
|
|
|
|
|
|
|
# The application menu.
|
|
|
|
junction
|
|
|
|
|
2021-11-27 08:04:01 +00:00
|
|
|
# It is required for custom menus in extensions.
|
|
|
|
gnome-menus
|
|
|
|
|
2021-12-13 07:20:34 +00:00
|
|
|
# Good ol' unofficial preferences tool.
|
|
|
|
gnome.gnome-tweaks
|
|
|
|
|
2022-02-24 03:46:50 +00:00
|
|
|
# A third-party extension manager.
|
|
|
|
gnome-extension-manager
|
|
|
|
|
2021-12-02 13:45:49 +00:00
|
|
|
# My preferred extensions.
|
2021-11-25 11:55:30 +00:00
|
|
|
gnomeExtensions.arcmenu
|
2022-02-02 04:32:08 +00:00
|
|
|
gnomeExtensions.appindicator
|
2021-12-02 13:45:49 +00:00
|
|
|
gnomeExtensions.gsconnect
|
2021-11-25 11:55:30 +00:00
|
|
|
gnomeExtensions.x11-gestures
|
2021-12-13 07:20:34 +00:00
|
|
|
gnomeExtensions.kimpanel
|
|
|
|
gnomeExtensions.runcat
|
|
|
|
gnomeExtensions.just-perfection
|
2022-01-09 05:41:07 +00:00
|
|
|
gnomeExtensions.mpris-indicator-button
|
2021-12-13 07:20:34 +00:00
|
|
|
|
|
|
|
# TODO: Use from nixpkgs once fly-pie is fixed.
|
|
|
|
gnome-shell-extension-fly-pie
|
2021-12-02 13:45:49 +00:00
|
|
|
|
2022-01-09 05:41:07 +00:00
|
|
|
# TODO: Also these two...
|
|
|
|
gnome-shell-extension-burn-my-windows
|
|
|
|
gnome-shell-extension-desktop-cube
|
|
|
|
|
2022-02-02 04:32:08 +00:00
|
|
|
# GNOME search providers.
|
|
|
|
gnome-search-provider-recoll
|
|
|
|
|
|
|
|
gnome-search-provider-browser-tabs.gnome-shell-extension
|
|
|
|
gnome-search-provider-browser-tabs.web-extension
|
|
|
|
gnome-search-provider-browser-tabs.connector
|
2021-11-25 11:55:30 +00:00
|
|
|
];
|
|
|
|
};
|
|
|
|
}
|