283 lines
8.9 KiB
Nix
283 lines
8.9 KiB
Nix
{
|
|
osConfig,
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
with lib; let
|
|
cfg = config.desktop.gnome;
|
|
inherit (config.lib.stylix) colors;
|
|
|
|
getColorCh = colorName: channel: config.lib.stylix.colors."${colorName}-rgb-${channel}";
|
|
rgb = color: ''rgb(${getColorCh color "r"}, ${getColorCh color "g"}, ${getColorCh color "b"})'';
|
|
in {
|
|
options = {
|
|
desktop.gnome.enable =
|
|
mkEnableOption "enable gnome desktop";
|
|
};
|
|
config = mkIf cfg.enable {
|
|
home.packages =
|
|
(with pkgs.gnomeExtensions; [
|
|
alphabetical-app-grid
|
|
app-icons-taskbar
|
|
appindicator
|
|
caffeine
|
|
# gnome-bedtime
|
|
quick-lang-switch
|
|
removable-drive-menu
|
|
space-bar
|
|
tactile
|
|
vicinae
|
|
window-is-ready-remover
|
|
])
|
|
++ (with pkgs; [
|
|
# regular packages
|
|
junction
|
|
celluloid
|
|
mission-center
|
|
dconf
|
|
pwvucontrol
|
|
wl-clipboard
|
|
]);
|
|
programs.gnome-shell.extensions = [
|
|
{package = pkgs.gnomeExtensions.alphabetical-app-grid;}
|
|
{package = pkgs.gnomeExtensions.app-icons-taskbar;}
|
|
{package = pkgs.gnomeExtensions.appindicator;}
|
|
{package = pkgs.gnomeExtensions.caffeine;}
|
|
# {package = pkgs.gnomeExtensions.gnome-bedtime;}
|
|
{package = pkgs.gnomeExtensions.quick-lang-switch;}
|
|
{package = pkgs.gnomeExtensions.removable-drive-menu;}
|
|
{package = pkgs.gnomeExtensions.space-bar;}
|
|
{package = pkgs.gnomeExtensions.tactile;}
|
|
{package = pkgs.gnomeExtensions.vicinae;}
|
|
{package = pkgs.gnomeExtensions.window-is-ready-remover;}
|
|
];
|
|
gtk = {
|
|
enable = true;
|
|
iconTheme = let
|
|
name =
|
|
if (lib.strings.hasPrefix "gruvbox" osConfig.module.stylix.theme)
|
|
then "Gruvbox-Plus-Dark"
|
|
else if config.stylix.polarity == "dark"
|
|
then "Papirus-Dark"
|
|
else "Papirus-Light";
|
|
package =
|
|
if (lib.strings.hasPrefix "gruvbox" osConfig.module.stylix.theme)
|
|
then pkgs.gruvbox-plus-icons
|
|
else if (lib.strings.hasPrefix "rose-pine" osConfig.module.stylix.theme)
|
|
then pkgs.papirus-icon-theme.override {color = "indigo";}
|
|
else if (lib.strings.hasPrefix "nord" osConfig.module.stylix.theme)
|
|
then pkgs.papirus-icon-theme.override {color = "nordic";}
|
|
else pkgs.papirus-icon-theme;
|
|
in {inherit name package;};
|
|
};
|
|
qt = {
|
|
enable = true;
|
|
platformTheme.name = lib.mkForce "gtk3";
|
|
};
|
|
|
|
dconf.settings = with lib.hm.gvariant; {
|
|
"org/gnome/desktop/a11y/applications" = {
|
|
screen-reader-enabled = false;
|
|
};
|
|
|
|
"org/gnome/desktop/input-sources" = {
|
|
mru-sources = [(mkTuple ["xkb" "us"])];
|
|
# sources = [(mkTuple ["xkb" "us"]) (mkTuple ["xkb" "ua"]) (mkTuple ["xkb" "us+colemak_dh"])];
|
|
xkb-options = ["terminate:ctrl_alt_bksp"];
|
|
};
|
|
|
|
"org/gnome/desktop/interface" = {
|
|
clock-show-seconds = true;
|
|
# color-scheme = "prefer-dark";
|
|
enable-animations = false;
|
|
gtk-enable-primary-paste = false;
|
|
scaling-factor = mkUint32 1;
|
|
toolbar-style = "text";
|
|
toolkit-accessibility = false;
|
|
};
|
|
|
|
"org/gnome/desktop/peripherals/mouse" = {
|
|
accel-profile = "flat";
|
|
};
|
|
|
|
"org/gnome/desktop/peripherals/keyboard" = {
|
|
delay = 200;
|
|
repeat-interval = 50;
|
|
};
|
|
|
|
"org/gnome/desktop/peripherals/touchpad" = {
|
|
two-finger-scrolling-enabled = true;
|
|
};
|
|
|
|
"org/gnome/desktop/search-providers" = {
|
|
disabled = ["org.gnome.Epiphany.desktop"];
|
|
};
|
|
|
|
"org/gnome/desktop/wm/keybindings" = {
|
|
close = ["<Super>q"];
|
|
move-to-monitor-down = ["<Shift><Control><Super>Down"];
|
|
move-to-monitor-left = ["<Shift><Control><Super>Left"];
|
|
move-to-monitor-right = ["<Shift><Control><Super>Right"];
|
|
move-to-monitor-up = ["<Shift><Control><Super>Up"];
|
|
move-to-workspace-1 = ["<Control><Super>1"];
|
|
move-to-workspace-2 = ["<Control><Super>2"];
|
|
move-to-workspace-3 = ["<Control><Super>3"];
|
|
move-to-workspace-4 = ["<Control><Super>4"];
|
|
move-to-workspace-5 = ["<Control><Super>5"];
|
|
move-to-workspace-last = ["<Shift><Control><Super>End"];
|
|
move-to-workspace-left = ["<Control><Super>Left"];
|
|
move-to-workspace-right = ["<Control><Super>Right"];
|
|
switch-input-source = ["<Super>Space"];
|
|
switch-input-source-backward = ["<Shift><Super>Space"];
|
|
switch-to-workspace-1 = ["<Super>1"];
|
|
switch-to-workspace-2 = ["<Super>2"];
|
|
switch-to-workspace-3 = ["<Super>3"];
|
|
switch-to-workspace-4 = ["<Super>4"];
|
|
switch-to-workspace-left = ["<Shift><Super>Left"];
|
|
switch-to-workspace-right = ["<Shift><Super>Right"];
|
|
};
|
|
|
|
"org/gnome/desktop/wm/preferences" = {
|
|
auto-raise = true;
|
|
button-layout = "icon:close";
|
|
};
|
|
|
|
"org/gnome/epiphany" = {
|
|
ask-for-default = false;
|
|
};
|
|
|
|
"org/gnome/mutter" = {
|
|
dynamic-workspaces = true;
|
|
experimental-features = ["scale-monitor-framebuffer" "xwayland-native-scaling"];
|
|
workspaces-only-on-primary = true;
|
|
};
|
|
|
|
"org/gnome/nm-applet" = {
|
|
disable-connected-notifications = true;
|
|
};
|
|
|
|
"org/gnome/settings-daemon/plugins/color" = {
|
|
night-light-enabled = true;
|
|
night-light-schedule-automatic = false;
|
|
};
|
|
|
|
"org/gnome/shell" = {
|
|
enabled-extensions = [
|
|
"AlphabeticalAppGrid@stuarthayhurst"
|
|
"appindicatorsupport@rgcjonas.gmail.com"
|
|
"aztaskbar@aztaskbar.gitlab.com"
|
|
"caffeine@patapon.info"
|
|
"drive-menu@gnome-shell-extensions.gcampax.github.com"
|
|
"focuscontrol@itsfernn"
|
|
"gnomebedtime@ionutbortis.gmail.com"
|
|
"just-perfection-desktop@just-perfection"
|
|
"quick-lang-switch@ankostis.gmail.com"
|
|
"space-bar@luchrioh"
|
|
"switcher@landau.fi"
|
|
"tactile@lundal.io"
|
|
"user-theme@gnome-shell-extensions.gcampax.github.com"
|
|
"vicinae@dagimg-dot"
|
|
];
|
|
};
|
|
|
|
"org/gnome/shell/extensions/aztaskbar" = with lib.hm.gvariant; {
|
|
favorites = true;
|
|
icon-size = 20;
|
|
icon-style = "REGULAR";
|
|
# intellihide = true;
|
|
indicator-color-focused = rgb "base0D";
|
|
indicator-color-running = rgb "base05";
|
|
main-panel-height = mkTuple [true 32];
|
|
position-offset = 4;
|
|
prefs-visible-page = "";
|
|
show-apps-button = mkTuple [false 0];
|
|
show-panel-activities-button = true;
|
|
show-weather-by-clock = "LEFT";
|
|
taskbar-spacing = 2;
|
|
};
|
|
|
|
"org/gnome/shell/extensions/caffeine" = {
|
|
indicator-position-max = 1;
|
|
};
|
|
|
|
# "org/gnome/shell/extensions/bedtime-mode" = {
|
|
# bedtime-mode-active = false;
|
|
# color-tone-preset = "grayscale";
|
|
# ondemand-button-location = "'menu'";
|
|
# };
|
|
|
|
"org/gnome/shell/extensions/focuscontrol" = {
|
|
border-color = "'rgba(0,0,0,0)'";
|
|
border-width = 1;
|
|
corner-radius = 0;
|
|
focus-down = "['<Super>Down']";
|
|
focus-left = "['<Super>Left']";
|
|
focus-right = "['<Super>Right']";
|
|
focus-up = "['<Super>Up']";
|
|
highlight-duration = 1;
|
|
};
|
|
|
|
"org/gnome/shell/extensions/space-bar/appearance" = {
|
|
active-workspace-background-color = "rgba(0,0,0,0)";
|
|
inactive-workspace-background-color = "rgba(0,0,0,0)";
|
|
active-workspace-text-color = rgb "base05";
|
|
inactive-workspace-text-color = rgb "base03";
|
|
};
|
|
|
|
"org/gnome/shell/extensions/space-bar/behavior" = {
|
|
always-show-numbers = false;
|
|
custom-label-named = "{{number}}";
|
|
custom-label-unnamed = "{{number}}";
|
|
enable-custom-label = true;
|
|
indicator-style = "workspaces-bar";
|
|
position = "right";
|
|
position-index = 0;
|
|
show-empty-workspaces = false;
|
|
smart-workspace-names = false;
|
|
system-workspace-indicator = false;
|
|
};
|
|
|
|
"org/gnome/shell/extensions/tactile" = {
|
|
background-color = "#${colors.base00}";
|
|
border-color = "#${colors.base0D}";
|
|
text-color = "#${colors.base05}";
|
|
border-size = 3;
|
|
col-3 = 0;
|
|
gap-size = 6;
|
|
layout-2-col-1 = 1;
|
|
layout-2-row-2 = 0;
|
|
layout-3-col-1 = 2;
|
|
layout-3-col-2 = 1;
|
|
layout-3-col-3 = 0;
|
|
layout-3-row-2 = 0;
|
|
monitor-1-layout = 3;
|
|
tile-0-2 = ["z"];
|
|
tile-1-1 = ["r"];
|
|
tile-1-2 = ["x"];
|
|
tile-2-0 = ["f"];
|
|
tile-2-1 = ["s"];
|
|
tile-2-2 = ["c"];
|
|
tile-3-0 = ["p"];
|
|
tile-3-1 = ["t"];
|
|
tile-3-2 = ["d"];
|
|
};
|
|
|
|
"org/gnome/shell/extensions/vicinae" = {
|
|
show-status-indicator = false;
|
|
};
|
|
|
|
"org/gnome/software" = {
|
|
download-updates = false;
|
|
download-updates-notify = false;
|
|
first-run = false;
|
|
};
|
|
|
|
"org/gnome/tweaks" = {
|
|
show-extensions-notice = false;
|
|
};
|
|
};
|
|
};
|
|
}
|