diff --git a/settings/gnome.nix b/settings/gnome.nix index d8d6df0..57b44df 100644 --- a/settings/gnome.nix +++ b/settings/gnome.nix @@ -21,8 +21,6 @@ papirus-icon-theme # Add Papirus icon theme ]; - - # Set cursor theme environment.sessionVariables = { XCURSOR_THEME = "Adwaita"; @@ -47,4 +45,112 @@ programs.xwayland.enable = true; programs.dconf.enable = true; }; + + # Download wallpaper from GitHub repo and symlink it + home.file.".local/share/backgrounds/wallpaper.png".source = + let + wallpaperRepo = builtins.fetchGit { + url = "https://github.com/ediblerope/nixos-config"; + ref = "main"; + }; + in "${wallpaperRepo}/walls/wallpaper.png"; + + # GNOME dconf + dconf.settings = { + # Interface / theme + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + gtk-theme = "Adwaita-dark"; + enable-hot-corners = false; + accent-color = "purple"; + cursor-theme = "Adwaita"; + cursor-size = 24; + }; + + # Wallpaper settings + "org/gnome/desktop/background" = { + picture-uri = "file://${config.home.homeDirectory}/.local/share/backgrounds/wallpaper.png"; + picture-uri-dark = "file://${config.home.homeDirectory}/.local/share/backgrounds/wallpaper.png"; + picture-options = "zoom"; + }; + + # Keyboard input sources + "org/gnome/desktop/input-sources" = { + sources = [ + (lib.hm.gvariant.mkTuple [ "xkb" "gb" ]) + (lib.hm.gvariant.mkTuple [ "xkb" "no" ]) + ]; + }; + + # Window manager keybindings + "org/gnome/desktop/wm/keybindings" = { + close = ["q"]; + toggle-fullscreen = ["f"]; + }; + + # Shell keybindings + "org/gnome/shell/keybindings" = { + show-screenshot-ui = ["s"]; + }; + + # Custom keybindings + "org/gnome/settings-daemon/plugins/media-keys" = { + home = ["e"]; + control-center = ["i"]; + custom-keybindings = [ + "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" + ]; + }; + + "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = { + name = "Terminal"; + command = "kgx"; + binding = "t"; + }; + + # Mouse acceleration + "org/gnome/desktop/peripherals/mouse" = { + accel-profile = "flat"; + }; + + # Just Perfection extension + "org/gnome/shell/extensions/just-perfection" = { + window-demands-attention-focus = true; + }; + + # Rounded Window Corners extension + "org/gnome/shell/extensions/rounded-window-corners-reborn" = let + # Helpers to keep the config clean + mkUint32 = lib.hm.gvariant.mkUint32; + mkVariant = lib.hm.gvariant.mkVariant; + mkTuple = lib.hm.gvariant.mkTuple; + + # Helper to create a Dictionary Entry from a key and value + mkEntry = name: value: lib.hm.gvariant.mkDictionaryEntry [name value]; + + # Helper to create a Variant containing a Dictionary (a{sv} or similar) + # Usage: mkDict { key = value; key2 = value2; } + mkDict = attrs: mkVariant ( + lib.mapAttrsToList (name: value: mkEntry name value) attrs + ); + + in { + global-rounded-corner-settings = [ + (mkEntry "padding" (mkDict { + left = mkUint32 4; + right = mkUint32 4; + top = mkUint32 4; + bottom = mkUint32 4; + })) + (mkEntry "keepRoundedCorners" (mkDict { + maximized = true; + fullscreen = true; + })) + (mkEntry "borderRadius" (mkVariant (mkUint32 7))) + (mkEntry "smoothing" (mkVariant 0.0)) + (mkEntry "borderColor" (mkVariant (mkTuple [ 0.5 0.5 0.5 1.0 ]))) + (mkEntry "enabled" (mkVariant true)) + ]; + }; + }; }