dotfiles
My PC Dotfiles & Websitegit clone https://github.com/maydayv7/dotfiles
commit c2697c92d955a8866162fcaee0cd8aec4af71ef4 parent c010dba9a7a2e4fba2b93d6793c364745c14940a Author: maydayv7 <maydayv7@gmail.com> Date: Sun, 4 Feb 2024 16:20:20 +0530 feat: Hyprland QOL Fixes Also fix Kvantum QT Theming
Diffstat:
| M | README.md | | | 9 | +++------ |
| M | files/README.md | | | 3 | ++- |
| M | files/flake.nix | | | 3 | +++ |
| M | files/images/desktop/hyprland.png | | | 0 | |
| A | files/waybar/style.css | | | 81 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| M | flake.lock | | | 69 | +++++++++++++++++++++++++++++++++++++++++++++------------------------ |
| M | flake.nix | | | 4 | ++-- |
| M | modules/apps/office.nix | | | 5 | +++-- |
| M | modules/gui/desktop/hyprland/apps/bar.nix | | | 137 | +++++++++++++++++++++++++++++++++++-------------------------------------------- |
| M | modules/gui/desktop/hyprland/apps/default.nix | | | 60 | ++++++++++++++++++++++++++++++++++++++++++++++++------------ |
| M | modules/gui/desktop/hyprland/default.nix | | | 12 | ++++++------ |
| M | modules/gui/desktop/hyprland/settings/default.nix | | | 13 | +++++++++---- |
| M | modules/gui/desktop/hyprland/settings/rules.nix | | | 7 | +++++++ |
| M | modules/gui/fonts.nix | | | 2 | +- |
| M | modules/gui/qt.nix | | | 22 | ++++++++++++++++++---- |
| M | modules/gui/wayland.nix | | | 10 | +++++----- |
| M | modules/shell/default.nix | | | 2 | +- |
| M | modules/user/home.nix | | | 9 | +++++---- |
| M | scripts/nixos.nix | | | 8 | ++++++-- |
| M | users/default.nix | | | 14 | ++++++++++++-- |
20 files changed, 317 insertions(+), 153 deletions(-)
diff --git a/README.md b/README.md @@ -15,13 +15,10 @@ This [repository](https://github.com/maydayv7/dotfiles) contains the configurati | :----------------------------------------------: | | _Hyprland_ | -|  | -| :--------------------------------------------------------: | -| _GNOME Desktop_ | - -|  | +|  + | | :----------------------------------------------------------: | -| _GNOME Overview_ | +| _GNOME Desktop_ | | [](https://www.reddit.com/r/unixporn/comments/19efxry/xfce_functional_and_beautiful/)  diff --git a/files/README.md b/files/README.md @@ -19,8 +19,9 @@ The `files` directory is used to store all my plain-text program configuration f - [`repl.nix`](./repl.nix): Interactive Nix Shell to explore syntax and configuration - [`templates`](./templates) - Document Templates - [`touchegg`](./touchegg) - Touchegg X11 Touchpad Gestures -- [`ulauncher`](./ulauncher) - ULauncher Application Launcher +- [`ulauncher`](./ulauncher) - ULauncher Application Launcher Settings & Plugins - [`vscode`](./vscode) - Visual Studio Code Editor Configuration +- [`waybar`](./waybar) - Waybar Configuration - [`wine`](./wine) - Configuration and Theming for `wine` applications - [`xdg`](./xdg) - XDG Desktop Utilities Configuration - [`xfce`](./xfce) - Configuration Files for XFCE Desktop diff --git a/files/flake.nix b/files/flake.nix @@ -126,6 +126,9 @@ extension = ".json"; }; + # Waybar + waybar.style = readFile ./waybar/style.css; + # XDG Settings xdg.mime = import ./xdg/mime.nix; diff --git a/files/images/desktop/hyprland.png b/files/images/desktop/hyprland.png Binary files differ. diff --git a/files/waybar/style.css b/files/waybar/style.css @@ -0,0 +1,81 @@ +* { + font-size: 16px; + font-weight: 500; + border-radius: 10px; +} + +#waybar.empty #window { + background: none; +} + +#taskbar button.active { + background: @base03; +} + +@keyframes blink { + to { + background-color: #ffffff; + } +} + +.modules-right #battery.critical:not(.charging) { + background-color: @base08; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#tray { + background-color: @base08; +} + +.modules-right #clock { + background-color: @base0A; +} + +#mpris { + color: @base00; + background-color: @base05; +} + +.modules-left #user { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; +} + +.modules-left image { + padding-left: 6px; + background-color: @base0F; + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} + +#custom-logo { + color: @base00; + background-color: @base06; +} + +#custom-weather { + color: @base00; + background-color: @base06; +} + +#backlight, +#battery, +#bluetooth, +#clock, +#custom-logo, +#custom-weather, +#keyboard-state, +#mpris, +#network, +#taskbar, +#tray, +#user, +#window, +#wireplumber, +#workspaces { + padding: 3px 6px 3px 6px; +} diff --git a/flake.lock b/flake.lock @@ -526,16 +526,15 @@ ] }, "locked": { - "lastModified": 1705659542, - "narHash": "sha256-WA3xVfAk1AYmFdwghT7mt/erYpsU6JPu9mdTEP/e9HQ=", + "lastModified": 1706985585, + "narHash": "sha256-ptshv4qXiC6V0GCfpABz88UGGPNwqs5tAxaRUKbk1Qo=", "owner": "nix-community", "repo": "home-manager", - "rev": "10cd9c53115061aa6a0a90aad0b0dde6a999cdb9", + "rev": "1ca210648a6ca9b957efde5da957f3de6b1f0c45", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-23.11", "repo": "home-manager", "type": "github" } @@ -547,11 +546,11 @@ ] }, "locked": { - "lastModified": 1706697179, - "narHash": "sha256-PmjBRO+yi63O4geyaGj88Q3Vsryxr7kuu3U/kYSfyd8=", + "lastModified": 1706930481, + "narHash": "sha256-9r8ZBevwA3O6Ysgo/6hBLTninDgSykk9qPa6pW8bWeY=", "owner": "DreamMaoMao", "repo": "hycov", - "rev": "171800deb10b568aa8a01b58a1677c3d0dd6ffa7", + "rev": "c778aedf0ab678ce7c2ba077caf148cc3c1cbfc5", "type": "github" }, "original": { @@ -571,16 +570,15 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1704110595, - "narHash": "sha256-WSrjBI3k2dM/kGF20At0E6NlrJSB4+pE+WGJ6dFzWEs=", + "lastModified": 1706485369, + "narHash": "sha256-FHojTmzX3SrAC+VXu+xdmTPwZtlSQ8KzRfq89c7DrN0=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "03ebbe18ed8517ee22591eac82cd54322f42cb7d", + "rev": "4b4bd90b1450cbfc01d9ac429363cc7cecd6be8b", "type": "github" }, "original": { "owner": "hyprwm", - "ref": "v0.34.0", "repo": "Hyprland", "type": "github" } @@ -630,6 +628,28 @@ "type": "github" } }, + "hyprlang": { + "inputs": { + "nixpkgs": [ + "hyprland", + "xdph", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1704287638, + "narHash": "sha256-TuRXJGwtK440AXQNl5eiqmQqY4LZ/9+z/R7xC0ie3iA=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "6624f2bb66d4d27975766e81f77174adbe58ec97", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, "impermanence": { "locked": { "lastModified": 1706639736, @@ -699,11 +719,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1703438236, - "narHash": "sha256-aqVBq1u09yFhL7bj1/xyUeJjzr92fXVvQSSEx6AdB1M=", + "lastModified": 1706191920, + "narHash": "sha256-eLihrZAPZX0R6RyM5fYAWeKVNuQPYjAkCUBr+JNvtdE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5f64a12a728902226210bf01d25ec6cbb9d9265b", + "rev": "ae5c332cbb5827f6b1f02572496b141021de335f", "type": "github" }, "original": { @@ -783,11 +803,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1706351967, - "narHash": "sha256-XYlemN1Icppx88mx9OC458GKGe8Biy7c9yfZmmU3pTk=", + "lastModified": 1706956182, + "narHash": "sha256-kxAuGT+zZ2dXxhppFCGhcgwF1qRKvQGVX15CAVC/o74=", "owner": "maydayv7", "repo": "proprietary", - "rev": "5126f8e99d61ce698566759c1493b9e8d4fada4f", + "rev": "a8b02fd790ee33a1e705e833f8eb4dde5e8bf2d8", "type": "github" }, "original": { @@ -1093,18 +1113,18 @@ "flake": false, "locked": { "host": "gitlab.freedesktop.org", - "lastModified": 1701368958, - "narHash": "sha256-7kvyoA91etzVEl9mkA/EJfB6z/PltxX7Xc4gcr7/xlo=", + "lastModified": 1706359063, + "narHash": "sha256-5HUTG0p+nCJv3cn73AmFHRZdfRV5AD5N43g8xAePSKM=", "owner": "wlroots", "repo": "wlroots", - "rev": "5d639394f3e83b01596dcd166a44a9a1a2583350", + "rev": "00b869c1a96f300a8f25da95d624524895e0ddf2", "type": "gitlab" }, "original": { "host": "gitlab.freedesktop.org", "owner": "wlroots", "repo": "wlroots", - "rev": "5d639394f3e83b01596dcd166a44a9a1a2583350", + "rev": "00b869c1a96f300a8f25da95d624524895e0ddf2", "type": "gitlab" } }, @@ -1114,6 +1134,7 @@ "hyprland", "hyprland-protocols" ], + "hyprlang": "hyprlang", "nixpkgs": [ "hyprland", "nixpkgs" @@ -1124,11 +1145,11 @@ ] }, "locked": { - "lastModified": 1703514399, - "narHash": "sha256-VRr5Xc4S/VPr/gU3fiOD3vSIL2+GJ+LUrmFTWTwnTz4=", + "lastModified": 1706145785, + "narHash": "sha256-j9MP4fv2U/vdRKAXXc2gyMTmYwVnHP6kHx1/y6jprrU=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "0a318a7a217a6402b0b705837cd5b50b0e94b31b", + "rev": "5a592647587cd20b9692a347df6939b6d371b3bb", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix @@ -100,7 +100,7 @@ ## Feature Modules # User Home Manager home-manager = { - url = "github:nix-community/home-manager?ref=release-23.11"; + url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -155,7 +155,7 @@ # Hyprland hyprland = { - url = "github:hyprwm/Hyprland?ref=v0.34.0"; + url = "github:hyprwm/Hyprland"; inputs.systems.follows = "systems"; }; diff --git a/modules/apps/office.nix b/modules/apps/office.nix @@ -10,7 +10,6 @@ in { ## Office Environment Configuration ## imports = [inputs.windows.nixosModules.onlyoffice]; - config = lib.mkIf enable { # Applications environment.systemPackages = with pkgs; [ @@ -23,6 +22,7 @@ in { hunspellDicts.en_US-large hyphen libreoffice + obs-studio # Internet google-chrome @@ -39,7 +39,7 @@ in { # Dictionaries environment = { pathsToLink = ["/share/hunspell" "/share/myspell" "/share/hyphen"]; - variables.DICPATH = "/run/current-system/sw/share/hunspell:/run/current-system/sw/share/hyphen"; + variables."DICPATH" = "/run/current-system/sw/share/hunspell:/run/current-system/sw/share/hyphen"; }; user = { @@ -51,6 +51,7 @@ in { ".config/GIMP" ".config/google-chrome" ".config/libreoffice" + ".config/obs-studio" ".config/onlyoffice" ".local/share/data" ".local/share/onlyoffice" diff --git a/modules/gui/desktop/hyprland/apps/bar.nix b/modules/gui/desktop/hyprland/apps/bar.nix @@ -16,7 +16,7 @@ in rec { }; # Environment Setup - home.packages = with pkgs; [font-awesome wttrbar]; + home.packages = [pkgs.wttrbar]; systemd.user = { # nix-community/home-manager/4099 services.waybar.Service.ExecStart = lib.mkForce (pkgs.writeShellScript "waybar-wrapper.sh" '' @@ -36,6 +36,7 @@ in rec { programs.waybar = { enable = true; systemd.enable = true; + inherit (files.waybar) style; package = pkgs.waybar.overrideAttrs (old: { version = "hypr"; @@ -53,7 +54,6 @@ in rec { { layer = "top"; position = "top"; - output = ["eDP-1"]; spacing = 3; margin-top = 3; @@ -61,18 +61,19 @@ in rec { margin-right = 5; margin-bottom = 5; - modules-left = ["custom/logo" "hyprland/workspaces" "hyprland/window"]; + modules-left = ["custom/logo" "user" "hyprland/workspaces" "hyprland/window"]; modules-center = ["wlr/taskbar"]; modules-right = [ "tray" "bluetooth" "network" "keyboard-state" - "backlight" + "mpris" "wireplumber" + "backlight" "battery" - "clock" "custom/weather" + "clock" ]; "custom/logo" = { @@ -81,30 +82,34 @@ in rec { on-click = "wlogout -p layer-shell"; }; + user = { + format = "{user}"; + icon = true; + height = 30; + width = 30; + }; + "hyprland/workspaces" = { all-outputs = true; show-special = true; format = "{icon}"; on-scroll-up = "hyprctl dispatch workspace e+1"; on-scroll-down = "hyprctl dispatch workspace e-1"; + persistent-workspaces."*" = 3; format-icons = { default = "๏"; "1" = "๏ก"; "2" = "๏ "; - "3" = "๏ผ"; - "4" = "๐ง"; + "3" = "๏ฌ"; + "4" = "๏ผ"; "5" = "๏ "; "6" = "๏ต"; "7" = "๏"; "8" = "๏"; - "9" = "๎ฏ"; + "9" = "๏ฒ"; "10" = "๏"; special = "๏"; }; - - persistent-workspaces = { - "*" = 3; - }; }; "hyprland/window" = { @@ -116,6 +121,8 @@ in rec { "zsh" = "Terminal"; "(.*) - kitty" = "Terminal"; "Ulauncher(.*)" = "Launcher"; + "(.*) - Geany" = "Text Editor"; + "(.*) - Thunar" = "File Manager"; }; }; @@ -151,39 +158,52 @@ in rec { format-wifi = "{icon}"; format-icons = ["๓ฐคฏ" "๓ฐค" "๓ฐคข" "๓ฐคฅ" "๓ฐคจ"]; format-linked = "๓ฐ {ifname}"; - tooltip-format = "Network= <big><b>{essid}</b></big>\nStrength= <b>{signaldBm}dBm ({signalStrength}%)</b>\nFrequency= <b>{frequency}MHz</b>\nInterface= <b>{ifname}</b>\nIP= <b>{ipaddr}/{cidr}</b>\nGateway= <b>{gwaddr}</b>\nNetmask= <b>{netmask}</b>"; + tooltip-format = "Network: <big><b>{essid}</b></big>\nStrength: <b>{signaldBm}dBm ({signalStrength}%)</b>\nFrequency: <b>{frequency}MHz</b>\nInterface: <b>{ifname}</b>\nIP: <b>{ipaddr}/{cidr}</b>\nGateway: <b>{gwaddr}</b>\nNetmask: <b>{netmask}</b>"; tooltip-format-disconnected = "๓ฐ Disconnected"; on-click = "kitty nmtui"; }; keyboard-state = { numlock = true; - capslock = false; - format.numlock = "NUM {icon}"; + capslock = true; + format = { + numlock = " N {icon}"; + capslock = "๓ฐช {icon}"; + }; format-icons = { - locked = ""; - unlocked = "*"; + locked = "๏ฃ"; + unlocked = "๏"; }; }; - backlight = { - format = "{icon}"; - tooltip-format = "Backlight {percent}%"; - format-icons = ["๎" "๎" "๎" "๎" "๎" "๎" "๎" "๎" "๎"]; - on-scroll-down = "${pkgs.brillo}/bin/brillo -u 300000 -A 5"; - on-scroll-up = "${pkgs.brillo}/bin/brillo -u 300000 -U 5"; + mpris = { + dynamic-len = 20; + dynamic-importance-order = ["title" "position" "length" "artist"]; + dynamic-separator = "๎"; + format = "๏ {player} {dynamic}"; + format-paused = "๓ฐค <i>{player}</i>"; }; wireplumber = { max-volume = 150; scroll-step = 1; + reverse-scrolling = 1; format = "{icon} {volume}%"; format-muted = "๏ฆ Mute"; format-icons = ["๏ฆ" "๏ง" "๓ฐพ" "๏จ"]; + on-click = "pavucontrol"; + }; + + backlight = { + format = "{icon}"; + tooltip-format = "Backlight {percent}%"; + format-icons = ["๎" "๎" "๎" "๎" "๎" "๎" "๎" "๎" "๎"]; + on-scroll-down = "${pkgs.brillo}/bin/brillo -u 300000 -A 5"; + on-scroll-up = "${pkgs.brillo}/bin/brillo -u 300000 -U 5"; }; battery = { - interval = 10; + interval = 5; align = 0; rotate = 0; format = "{icon}"; @@ -197,6 +217,14 @@ in rec { }; }; + "custom/weather" = { + format = "{}ยฐ"; + tooltip = true; + interval = 3600; + exec = "wttrbar"; + return-type = "json"; + }; + clock = { interval = 1; format = "๏ {:%H:%M:%S}"; @@ -207,12 +235,12 @@ in rec { mode-mon-col = 3; weeks-pos = "left"; on-scroll = 1; - format = { - months = "<span color='#FFEAD3'><b>{}</b></span>"; - days = "<span color='#ECC6D9'><b>{}</b></span>"; - weeks = "<span color='#99FFDD'><b>W{}</b></span>"; - weekdays = "<span color='#FFCC66'><b>{}</b></span>"; - today = "<span color='#FF6699'><b><u>{}</u></b></span>"; + format = with sys.lib.stylix.colors; { + months = "<span color='#${base06}'><b>{}</b></span>"; + days = "<span color='#${base05}'><b>{}</b></span>"; + weeks = "<span color='#${base0C}'><b>W{}</b></span>"; + weekdays = "<span color='#${base0A}'><b>{}</b></span>"; + today = "<span color='#${base08}'><b><u>{}</u></b></span>"; }; }; @@ -220,56 +248,11 @@ in rec { on-click-right = "mode"; on-click-forward = "tz_up"; on-click-backward = "tz_down"; - on-scroll-up = "shift_up"; - on-scroll-down = "shift_down"; + on-scroll-up = "shift_down"; + on-scroll-down = "shift_up"; }; }; - - "custom/weather" = { - format = "{}ยฐ"; - tooltip = true; - interval = 3600; - exec = "wttrbar"; - return-type = "json"; - }; } ]; - - style = '' - * { - font-family: ${sys.stylix.fonts.sansSerif.name}, "Font Awesome 6 Free"; - font-size: 16px; - font-weight: 500; - border-radius: 10px; - } - - #waybar.empty #window { background: none; } - #taskbar button.active { background: @base03; } - .modules-right #clock { background-color: @base0A; } - - #custom-logo { - color: @base00; - background-color: @base06; - } - - #custom-weather { - color: @base00; - background-color: @base08; - } - - #backlight, - #battery, - #bluetooth, - #clock, - #custom-weather, - #keyboard-state, - #taskbar, - #tray, - #window, - #wireplumber, - #workspaces { padding: 3px 6px 3px 6px; } - #network, - #custom-logo { padding: 3px 11px 3px 6px; } - ''; }; } diff --git a/modules/gui/desktop/hyprland/apps/default.nix b/modules/gui/desktop/hyprland/apps/default.nix @@ -14,22 +14,40 @@ with files; let in { apps.list = ["firefox"]; gui.launcher.terminal = "kitty"; + + # File Manager + services.tumbler.enable = true; + programs = { + xfconf.enable = true; + thunar = { + enable = true; + plugins = with pkgs.xfce; [ + thunar-archive-plugin + thunar-dropbox-plugin + thunar-volman + ]; + }; + }; + environment.systemPackages = with pkgs; [ # Apps + font-manager geany - gthumb + gnome.file-roller lollypop mate.atril mission-center + nwg-displays playerctl qalculate-gtk + shotwell transmission-gtk - xfce.thunar # Utilities blueberry grim grimblast + pavucontrol slurp wev wl-clipboard @@ -42,8 +60,12 @@ in { persist.directories = [ ".config/geany" ".config/mpv" + ".config/nwg-displays" + ".config/shotwell" ".config/Thunar" ".local/share/lollypop" + ".local/share/shotwell" + ".cache/shotwell" ]; homeConfig = { @@ -53,7 +75,7 @@ in { xdg.mimeApps.defaultApplications = util.build.mime files.xdg.mime { audio = ["org.gnome.Lollypop.desktop"]; directory = ["thunar.desktop"]; - image = ["org.gnome.gThumb.desktop"]; + image = ["org.gnome.Shotwell-Viewer.desktop"]; magnet = ["transmission-gtk.desktop"]; pdf = ["atril.desktop"]; text = ["geany.desktop"]; @@ -62,10 +84,12 @@ in { # Shortcuts wayland.windowManager.hyprland.settings.bind = [ + "$mod, D, exec, nwg-displays" "$mod, F, exec, thunar" "$mod, T, exec, kitty" "$mod, W, exec, firefox" "$mod, Return, exec, missioncenter" + "$mod, N, exec, dunstctl history-pop" "$mod, slash, exec, ulauncher-toggle" ", XF86Calculator, exec, qalculate-gtk" "$mod, Escape, exec, wlogout -p layer-shell" @@ -148,17 +172,29 @@ in { }; }; - # Wallpaper Daemon - systemd.user.services.hyprpaper = { - Install.WantedBy = ["graphical-session.target"]; - Unit = { - Description = "Hyprland Wallpaper Daemon"; - PartOf = ["graphical-session.target"]; + systemd.user.services = { + # Wallpaper Daemon + hyprpaper = { + Install.WantedBy = ["graphical-session.target"]; + Unit = { + Description = "Hyprland Wallpaper Daemon"; + PartOf = ["graphical-session.target"]; + }; + + Service = { + ExecStart = getExe pkgs.hyprpaper; + Restart = "on-failure"; + }; }; - Service = { - ExecStart = "${getExe pkgs.hyprpaper}"; - Restart = "on-failure"; + # Screen Share + xwaylandvideobridge = { + Unit.Description = "Stream Wayland windows to apps running under Xwayland"; + Install.wantedBy = ["graphical-session.target"]; + Service = { + ExecStart = getExe pkgs.xwaylandvideobridge; + Restart = "on-failure"; + }; }; }; diff --git a/modules/gui/desktop/hyprland/default.nix b/modules/gui/desktop/hyprland/default.nix @@ -16,6 +16,10 @@ in { gui = { xorg.enable = false; wayland.enable = true; + launcher = { + enable = true; + shadow = false; + }; }; programs = { @@ -48,6 +52,7 @@ in { }; # Settings + user.persist.directories = [".config/hypr"]; user.homeConfig.imports = [./settings]; # Desktop Integration @@ -55,6 +60,7 @@ in { gui = with theme; { fonts.enable = true; inherit (theme) icons; + launcher.theme = theme.name; gtk = { enable = true; @@ -65,12 +71,6 @@ in { enable = true; theme = qt; }; - - launcher = { - enable = true; - shadow = false; - theme = theme.name; - }; }; ## Essential Utilities diff --git a/modules/gui/desktop/hyprland/settings/default.nix b/modules/gui/desktop/hyprland/settings/default.nix @@ -13,6 +13,12 @@ inherit (sys.programs.hyprland) enable package; plugins = with pkgs.hyprworld; [hycov]; + # Use 'nwg-displays' to configure monitors + extraConfig = '' + source = ~/.config/hypr/monitors.conf + source = ~/.config/hypr/workspaces.conf + ''; + settings = { debug.disable_logs = false; env = ["QT_WAYLAND_DISABLE_WINDOWDECORATION,1"]; @@ -50,16 +56,15 @@ }; misc = { + disable_autoreload = false; + + # Window Swallowing enable_swallow = true; # Interfere with wallpaper daemons force_default_wallpaper = 0; disable_hyprland_logo = true; - # Prevent checking for configuration changes - # Use 'hyprctl reload' if required - disable_autoreload = true; - # Graphics vrr = 1; no_direct_scanout = false; diff --git a/modules/gui/desktop/hyprland/settings/rules.nix b/modules/gui/desktop/hyprland/settings/rules.nix @@ -26,6 +26,13 @@ _: { "dimaround, class:^(gcr-prompter)$" "dimaround, class:^(xdg-desktop-portal-gtk)$" "dimaround, class:^(polkit-gnome-authentication-agent-1)$" + + # Screen Share + "maxsize 1 1, class:^(xwaylandvideobridge)$" + "noanim, class:^(xwaylandvideobridge)$" + "noblur, class:^(xwaylandvideobridge)$" + "noinitialfocus, class:^(xwaylandvideobridge)$" + "opacity 0.0 override 0.0 override, class:^(xwaylandvideobridge)$" ]; }; } diff --git a/modules/gui/fonts.nix b/modules/gui/fonts.nix @@ -47,7 +47,7 @@ sansSerif = { package = pkgs.custom.fonts; - name = "Product Sans"; + name = "ProductSans Nerd Font"; }; monospace = { diff --git a/modules/gui/qt.nix b/modules/gui/qt.nix @@ -6,6 +6,10 @@ }: let inherit (lib) mkEnableOption mkIf mkOption types; cfg = config.gui.qt; + kvconfig = '' + [General] + theme=${cfg.theme.name} + ''; in { options.gui.qt = { enable = mkEnableOption "Enable QT Configuration"; @@ -27,10 +31,20 @@ in { environment = { systemPackages = [pkgs.libsForQt5.qtstyleplugin-kvantum cfg.theme.package]; variables."QT_STYLE_OVERRIDE" = "kvantum"; - etc."xdg/Kvantum/kvantum.kvconfig".text = '' - [General] - Theme=${cfg.theme.name} - ''; + etc."xdg/Kvantum/kvantum.kvconfig".text = kvconfig; + }; + + user.homeConfig = { + qt = { + enable = true; + platformTheme = "qtct"; + style.name = "kvantum"; + }; + + xdg.configFile = with cfg.theme; { + "Kvantum/${name}".source = "${package}/share/Kvantum/${name}"; + "Kvantum/kvantum.kvconfig".text = kvconfig; + }; }; }; } diff --git a/modules/gui/wayland.nix b/modules/gui/wayland.nix @@ -9,11 +9,11 @@ config = lib.mkIf config.gui.wayland.enable { # Environment Setup environment.sessionVariables = { - NIXOS_OZONE_WL = "1"; - MOZ_ENABLE_WAYLAND = "1"; - QT_QPA_PLATFORM = "wayland;xcb"; - GDK_BACKEND = "wayland,x11"; - CLUTTER_BACKEND = "wayland"; + "NIXOS_OZONE_WL" = "1"; + "MOZ_ENABLE_WAYLAND" = "1"; + "QT_QPA_PLATFORM" = "wayland;xcb"; + "GDK_BACKEND" = "wayland,x11"; + "CLUTTER_BACKEND" = "wayland"; }; # Programs Support diff --git a/modules/shell/default.nix b/modules/shell/default.nix @@ -23,7 +23,7 @@ in { systemPackages = [pkgs.nano]; # Default Editor - variables.EDITOR = "nano"; + variables."EDITOR" = "nano"; etc.nanorc.text = files.nano; }; } diff --git a/modules/user/home.nix b/modules/user/home.nix @@ -3,10 +3,10 @@ config = { # Environment Settings environment.sessionVariables = { - XDG_CACHE_HOME = "$HOME/.cache"; - XDG_CONFIG_HOME = "$HOME/.config"; - XDG_DATA_HOME = "$HOME/.local/share"; - XDG_BIN_HOME = "$HOME/.local/bin"; + "XDG_CACHE_HOME" = "$HOME/.cache"; + "XDG_CONFIG_HOME" = "$HOME/.config"; + "XDG_DATA_HOME" = "$HOME/.local/share"; + "XDG_BIN_HOME" = "$HOME/.local/bin"; }; user.homeConfig = { @@ -16,6 +16,7 @@ # Package Configuration home = { inherit (config.system) stateVersion; + enableNixpkgsReleaseCheck = false; file = { ".config/nixpkgs/config.nix".source = ../nix/config.nix; ".config/nix/nix.conf".source = diff --git a/scripts/nixos.nix b/scripts/nixos.nix @@ -133,8 +133,12 @@ in ;; "--boot") echo "Applying Configuration..." - sudo nixos-rebuild boot --flake ${path.system}# - restart + if sudo nixos-rebuild boot --flake ${path.system}# + then + restart + else + error "Couldn't build generation successfully" + fi ;; "--delta") temp diff --git a/users/default.nix b/users/default.nix @@ -39,8 +39,18 @@ in { ## Home Configuration ## config = { - # Wallpapers - home.file.".local/share/backgrounds".source = files.wallpapers.path; + home.file = let + dir = config.home.homeDirectory; + in { + # Wallpapers + ".local/share/backgrounds".source = files.wallpapers.path; + + # GTK+ Bookmarks + ".config/gtk-3.0/bookmarks".text = lib.mkBefore '' + file://${dir}/Downloads Downloads + file://${dir}/Pictures Pictures + ''; + }; # GPG Settings programs.gpg = {