diff --git a/flake.nix b/flake.nix index 5552b91..44a6070 100755 --- a/flake.nix +++ b/flake.nix @@ -69,7 +69,6 @@ nixosConfigurations = { desktop = mkHost "desktop" [ ./modules/system/nvidia.nix - ./modules/system/nfs.nix ./modules/system/display-manager/sddm.nix ./modules/system/gaming.nix ]; diff --git a/hosts/desktop/default.nix b/hosts/desktop/default.nix index 74a5ca3..e2c7056 100755 --- a/hosts/desktop/default.nix +++ b/hosts/desktop/default.nix @@ -12,17 +12,35 @@ ../../modules/system/nix-valet.nix ../../modules/system/device-management/logitech.nix ./hardware-configuration.nix + ../../modules/system/gaming.nix ]; - + # Set primary monitor for SDDM login screen + services.xserver.displayManager.sddm.settings = { + General = { + DisplayServer = "wayland"; + }; + Wayland = { + CompositorCommand = "Hyprland"; + }; + }; + + # Alternative: Set primary monitor via environment variable + environment.variables = { + WLR_DRM_PRIMARY = "DP-2"; # Main HP OMEN monitor + }; + + #Polkit for gparted + security.polkit.enable = true; + # Desktop Specific Hyprland Monitor Config - home-manager.users.${config.users.users.cartier.name or "cartier"} = { + home-manager.users.${config.users.users.cartier.name or "cartier"} = { wayland.windowManager.hyprland.settings.monitor = [ # Main monitor (HP OMEN, right side, horizontal, 1440p @ 240Hz) "DP-2, 2560x1440@240, 1080x0, 1" # Secondary monitor (Samsung, left side, vertical, 1080p @ 239.76Hz) "DP-1, 1920x1080@239.76, 0x0, 1, transform, 1" ]; - }; + }; # Mount second hard drive boot = { @@ -31,25 +49,36 @@ ]; }; - fileSystems."/mnt/working-files" = { - device = "/dev/disk/by-uuid/BE8EBBDA8EBB8A03"; - fsType = "ntfs"; + fileSystems."/home/cartier/gamer-drive" = { + device = "/dev/disk/by-label/linux"; + fsType = "ext4"; options = [ - "uid=1000" # your user ID (check with `id -u`) - "gid=100" # your primary group ID (check with `id -g`) - "dmask=022" # dir permissions - "fmask=133" # file permissions - "nofail" - - # make Nautilus show it with a friendly name/icon - "x-gvfs-show" - "x-gvfs-name=Working Files" + "defaults" + # "noatime" + # "user" ]; }; + fileSystems."/home/cartier/windows-drive" = { + device = "/dev/disk/by-label/windows"; + fsType = "ntfs"; + options = [ + "defaults" + "uid=1000" + "gid=100" + "umask=022" + "fmask=133" + "dmask=022" + ]; + }; + systemd.tmpfiles.rules = [ + "d /home/cartier/gamer-drive 0755 cartier users -" + ]; environment = { systemPackages = with pkgs; [ pkgs.ntfs3g + gparted + xorg.xrandr ]; }; } diff --git a/modules/home/common/vscode.nix b/modules/home/common/vscode.nix new file mode 100644 index 0000000..602ffee --- /dev/null +++ b/modules/home/common/vscode.nix @@ -0,0 +1,364 @@ +{ + config, + pkgs, + lib, + ... +}: + +{ + programs.vscode = { + enable = true; + package = pkgs.vscode; # or pkgs.vscodium for the open-source version + + # Extensions + extensions = + with pkgs.vscode-extensions; + [ + # adpyke.vscode-sql-formatter + # adrianwilczynski.alpine-js-intellisense + # anthropic.claude-code + bmewburn.vscode-intelephense-client + bradlc.vscode-tailwindcss + catppuccin.catppuccin-vsc-icons + christian-kohler.path-intellisense + # cierra.livewire-vscode + # delgan.qml-format + eamodio.gitlens + formulahendry.auto-close-tag + formulahendry.auto-rename-tag + foxundermoon.shell-format + golang.go + gruntfuggly.todo-tree + # isudox.vscode-jetbrains-keybindings + jdinhlife.gruvbox + jnoortheen.nix-ide + # kennylong.kubernetes-yaml-formatter + mikestead.dotenv + ms-python.debugpy + ms-python.python + ms-python.vscode-pylance + # ms-python.vscode-python-envs + # ms-vsliveshare.vsliveshare + # neilbrayfield.php-docblocker + # onecentlin.laravel-blade + # phiter.phpstorm-snippets + pkief.material-icon-theme + redhat.ansible + redhat.vscode-yaml + shd101wyy.markdown-preview-enhanced + svelte.svelte-vscode + tamasfe.even-better-toml + # theqtcompany.qt-core + # theqtcompany.qt-qml + vscodevim.vim + vue.volar + # zignd.html-css-class-completion + + ] + ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ + # # Extensions not in nixpkgs + # { + # name = "copilot"; + # publisher = "github"; + # version = "1.86.82"; + # sha256 = "sha256-example-hash-here"; + # } + ]; + + # User settings + userSettings = { + # Disable the fucking copilot chat + "github.copilot.chat.showChatPanel" = false; + "github.copilot.enable" = false; + "window.titleBarStyle" = "custom"; + "window.customTitleBarVisibility" = "auto"; + "workbench.colorTheme" = lib.mkForce "Gruvbox Dark Hard"; + "git.autofetch" = true; + "editor.fontSize" = lib.mkForce 18; + "editor.snippetSuggestions" = "top"; + "editor.formatOnPaste" = true; + "editor.formatOnSave" = true; + "qt-qml.qmlls.useQmlImportPathEnvVar" = true; + "[qml]" = { + "editor.defaultFormatter" = "Delgan.qml-format"; + "editor.formatOnSave" = true; + }; + "[yaml]" = { + "editor.formatOnSave" = false; + }; + "[astro]" = { + "editor.formatOnSave" = false; + }; + "[dockerfile]" = { + "editor.formatOnSave" = false; + "editor.formatOnPaste" = false; + "editor.formatOnType" = false; + "editor.defaultFormatter" = "ms-azuretools.vscode-containers"; + }; + "tailwindCSS.includeLanguages" = { + "templ" = "html"; + }; + "emmet.triggerExpansionOnTab" = true; + "editor.autoIndent" = "full"; + "files.eol" = "\n"; + "emmet.excludeLanguages" = [ ]; + "emmet.includeLanguages" = { + "blade" = "html"; + "templ" = "html"; + "markdown" = "html"; + }; + "explorer.openEditors.visible" = 0; + "editor.tabCompletion" = "on"; + "workbench.editor.highlightModifiedTabs" = true; + "git.enableSmartCommit" = true; + "extensions.ignoreRecommendations" = true; + "blade.format.enable" = true; + "editor.autoClosingBrackets" = "always"; + "material-icon-theme.folders.theme" = "specific"; + "security.workspace.trust.untrustedFiles" = "open"; + "editor.unusualLineTerminators" = "auto"; + "files.associations" = { }; + "intelephense.environment.phpVersion" = "8.1.0"; + "git.useEditorAsCommitInput" = false; + "editor.inlineSuggest.enabled" = true; + "[xml]" = { + "editor.defaultFormatter" = "redhat.vscode-xml"; + }; + "terminal.integrated.fontSize" = lib.mkForce 18; + "explorer.confirmDragAndDrop" = false; + "editor.unicodeHighlight.nonBasicASCII" = false; + "markdown-preview-enhanced.previewTheme" = "github-dark.css"; + "window.commandCenter" = false; + "workbench.editor.editorActionsLocation" = "hidden"; + "workbench.layoutControl.enabled" = false; + "editor.minimap.enabled" = false; + "workbench.activityBar.location" = "hidden"; + "editor.fontFamily" = lib.mkForce "'Fira Code Retina'"; + "editor.fontLigatures" = true; + "keyboard.dispatch" = "keyCode"; + "workbench.iconTheme" = "catppuccin-frappe"; + "search.useIgnoreFiles" = false; + "search.exclude" = { + # Hide everything in /vendor; except the "laravel" and "livewire" folder. + "**/vendor/{[^l];?[^ai]}*" = true; + # Hide everything in /public; except "index.php" + "**/public/{[^i];?[^n]}*" = true; + "**/node_modules" = true; + "**/dist" = true; + "**/_ide_helper.php" = true; + "**/composer.lock" = true; + "**/package-lock.json" = true; + "storage" = true; + ".phpunit.result.cache" = true; + }; + "scm.diffDecorations" = "none"; + "editor.hover.enabled" = false; + "editor.matchBrackets" = "never"; + "workbench.tips.enabled" = false; + "editor.colorDecorators" = false; + "git.decorations.enabled" = false; + "workbench.startupEditor" = "none"; + "editor.lightbulb.enabled" = "off"; + "editor.selectionHighlight" = false; + "editor.overviewRulerBorder" = false; + "editor.renderLineHighlight" = "none"; + "editor.occurrencesHighlight" = "off"; + "problems.decorations.enabled" = false; + "editor.renderControlCharacters" = false; + "editor.hideCursorInOverviewRuler" = true; + "editor.gotoLocation.multipleReferences" = "goto"; + "editor.gotoLocation.multipleDefinitions" = "goto"; + "editor.gotoLocation.multipleDeclarations" = "goto"; + "workbench.editor.enablePreviewFromQuickOpen" = false; + "editor.gotoLocation.multipleImplementations" = "goto"; + "editor.gotoLocation.multipleTypeDefinitions" = "goto"; + "editor.cursorSurroundingLines" = 16; + "workbench.editor.pinnedTabsOnSeparateRow" = true; + "window.menuBarVisibility" = "compact"; + "vim.leader" = ""; + "vim.normalModeKeyBindings" = [ + { + "before" = [ + "g" + "r" + ]; + "commands" = [ "editor.action.goToReferences" ]; + } + { + "before" = [ + "g" + "v" + ]; + "commands" = [ "editor.action.revealDefinitionAside" ]; + } + { + "before" = [ + "" + "o" + ]; + "commands" = [ "workbench.action.quickOpen" ]; + } + { + "before" = [ + "" + "p" + ]; + "commands" = [ "workbench.action.showCommands" ]; + } + { + "before" = [ + "" + "i" + ]; + "commands" = [ "workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup" ]; + } + ]; + "vim.insertModeKeyBindings" = [ + { + "before" = [ + "j" + "j" + ]; + "after" = [ "" ]; + } + ]; + "vim.visualModeKeyBindings" = [ + { + "before" = [ "" ]; + "after" = [ "" ]; + } + ]; + "workbench.editor.showTabs" = "none"; + "ansible.lightspeed.enabled" = false; + "ansible.lightspeed.suggestions.enabled" = false; + "[sql]" = { + "editor.formatOnSave" = false; + }; + "svelte.enable-ts-plugin" = true; + "workbench.sideBar.location" = "left"; + "workbench.panel.defaultLocation" = "right"; + }; + + # Keybindings + keybindings = [ + { + "key" = "ctrl+k"; + "command" = "git.commitAll"; + "when" = "!inDebugMode && !terminalFocus"; + } + { + "key" = "ctrl+shift+k"; + "command" = "git.pushTo"; + "when" = "!inDebugMode && !terminalFocus"; + } + { + "key" = "ctrl+shift+n"; + "command" = "workbench.action.quickOpen"; + } + { + "key" = "shift+escape"; + "command" = "workbench.action.terminal.toggleTerminal"; + } + { + "key" = "ctrl+shift+`"; + "command" = "workbench.action.closeAllEditors"; + } + { + "key" = "ctrl+shift+1"; + "command" = "workbench.files.action.collapseExplorerFolders"; + } + { + "key" = "ctrl+shift+e"; + "command" = "workbench.view.explorer"; + } + { + "key" = "ctrl+shift+e"; + "command" = "workbench.action.toggleSidebarVisibility"; + "when" = "!editorFocus"; + } + { + "key" = "ctrl+1"; + "command" = "workbench.action.toggleSidebarVisibility"; + } + { + "key" = "ctrl+a"; + "command" = "explorer.newFile"; + "when" = "explorerViewletVisible && filesExplorerFocus && !inputFocus"; + } + { + "key" = "ctrl+shift+a"; + "command" = "explorer.newFolder"; + "when" = "explorerViewletVisible && filesExplorerFocus && !inputFocus"; + } + { + "key" = "ctrl+d"; + "command" = "deleteFile"; + "when" = "explorerViewletVisible && filesExplorerFocus && !inputFocus"; + } + { + "key" = "ctrl+\\"; + "command" = "workbench.action.splitEditorRight"; + "when" = "editorFocus"; + } + { + "key" = "ctrl+h"; + "command" = "workbench.action.navigateLeft"; + "when" = "editorFocus"; + } + { + "key" = "ctrl+l"; + "command" = "workbench.action.navigateRight"; + "when" = "editorFocus"; + } + { + "key" = "ctrl+*"; + "command" = "workbench.action.increaseViewSize"; + "when" = "editorFocus"; + } + { + "key" = "ctrl+/"; + "command" = "workbench.action.decreaseViewSize"; + "when" = "editorFocus"; + } + { + "key" = "ctrl+shift+w"; + "command" = "workbench.action.joinAllGroups"; + "when" = "editorFocus"; + } + { + "key" = "ctrl+shift+alt+p"; + "command" = "editor.emmet.action.wrapWithAbbreviation"; + "when" = "editorTextFocus"; + } + { + "key" = "ctrl+shift+alt+i"; + "command" = "editor.emmet.action.balanceIn"; + "when" = "editorTextFocus"; + } + { + "key" = "ctrl+shift+alt+o"; + "command" = "editor.emmet.action.balanceOut"; + "when" = "editorTextFocus"; + } + { + "key" = "alt+n"; + "command" = "workbench.action.quickOpenSelectNext"; + "when" = "inQuickOpen"; + } + { + "key" = "alt+p"; + "command" = "workbench.action.quickOpenSelectPrevious"; + "when" = "inQuickOpen"; + } + { + "key" = "alt+0"; + "command" = "workbench.action.closeQuickOpen"; + "when" = "inQuickOpen"; + } + { + "key" = "ctrl+shift+\\"; + "command" = "workbench.action.toggleAuxiliaryBar"; + } + ]; + }; +} diff --git a/modules/home/home.nix b/modules/home/home.nix index 39060f3..580c138 100755 --- a/modules/home/home.nix +++ b/modules/home/home.nix @@ -15,6 +15,7 @@ ./common/yazi.nix ./common/fzf.nix ./hyprland + ./common/vscode.nix ]; nixpkgs.config.allowUnfree = true; @@ -88,6 +89,7 @@ services.udiskie = { XDG_CONFIG_HOME = "${config.home.homeDirectory}/.config"; XDG_DATA_HOME = "${config.home.homeDirectory}/.local/share"; XDG_STATE_HOME = "${config.home.homeDirectory}/.local/state"; + QT_QPA_PLATFORM = "wayland"; }; }; diff --git a/modules/home/hyprland/binds.nix b/modules/home/hyprland/binds.nix index afee1a2..5e1628c 100755 --- a/modules/home/hyprland/binds.nix +++ b/modules/home/hyprland/binds.nix @@ -23,7 +23,7 @@ ]; # Media Keys - + bindle = [ ", XF86AudioRaiseVolume, exec, wpctl set-volume 54 1%+" ", XF86AudioLowerVolume, exec, wpctl set-volume 54 1%-" @@ -32,6 +32,8 @@ ]; bind = [ # Start programs + "$mod, a, exec, discord" + "$mod, z, exec, obsidian" "$mod, t, exec, $terminal" "$mod CTRL, 1, exec, $browser" "$mod SHIFT, p, exec, $browser --incognito" @@ -43,7 +45,6 @@ "$mod ALT, p, exec, eza -ld $HOME/projects/* --color=never | awk '{print $7}' | wofi --dmenu --prompt \"Open project:\" | xargs -I{} code {} -n && exit" "$mod, RETURN, exec, $webapphttps://claude.ai" - # Window and workspace navigation # Move between windows with vim keys "$mod, h, movefocus, l" @@ -54,11 +55,18 @@ # Move between workspaces "$mod ALT, l, movetoworkspace, r+1" "$mod ALT, h, movetoworkspace, r-1" - "$mod SHIFT, l, workspace, r+1" - "$mod SHIFT, h, workspace, r-1" + # "$mod SHIFT, l, workspace, r+1" + # "$mod SHIFT, h, workspace, r-1" # Window management "$mod, 0, layoutmsg, rollnext" + # Switch between Monitors + "$mod SHIFT, l, movewindow, mon:-1" + "$mod SHIFT, h, movewindow, mon:+1" + + # Grimblast Screenshots + "$mod, Print, exec, grimblast copy area" + "$mod, f, fullscreen, 0" "$mod, v, togglefloating, active" "$mod, SPACE, exec, wofi --show drun" diff --git a/modules/home/hyprland/default.nix b/modules/home/hyprland/default.nix index bc8229b..92affa5 100755 --- a/modules/home/hyprland/default.nix +++ b/modules/home/hyprland/default.nix @@ -5,8 +5,6 @@ ... }: - - { imports = [ ./binds.nix @@ -14,6 +12,8 @@ ./hyprpanel.nix ./wofi.nix ./desktop-env.nix + ./screenshots.nix + #./hyprpanel2.nix ]; home = { @@ -26,10 +26,8 @@ libnotify # Screenshots - grim - slurp + wl-clipboard - hyprshot # Desktop env hyprpanel @@ -80,17 +78,23 @@ }; workspace = [ - "1, persistent:true" - "2, persistent:true" - "3, persistent:true" - "4, persistent:true" - "5, persistent:true" - "6, persistent:true" + "1, persistent:true, monitor:DP-2" + "2, persistent:true, monitor:DP-2" + "3, persistent:true, monitor:DP-2" + "4, persistent:true, monitor:DP-2" + "5, persistent:true, monitor:DP-2" + "6, persistent:true, monitor:DP-2" ]; # Window rules + windowrulev2 = [ "opacity 0.85, class:^(Code)$" + "move 0 0,class:(flameshot),title:(flameshot)" + "pin,class:(flameshot),title:(flameshot)" + "fullscreenstate,class:(flameshot),title:(flameshot)" + "float,class:(flameshot),title:(flameshot)" + "monitor DP-2, class:^(flameshot)$" ]; decoration = { diff --git a/modules/home/hyprland/hyprpanel.nix b/modules/home/hyprland/hyprpanel.nix index a88ccde..52efd08 100755 --- a/modules/home/hyprland/hyprpanel.nix +++ b/modules/home/hyprland/hyprpanel.nix @@ -1,12 +1,19 @@ -{ inputs, pkgs, ... }: +{ + inputs, + pkgs, + assets, + ... +}: { + home.file.".face.icon".source = "${assets}/user-icon.png"; programs.hyprpanel = { enable = true; settings = { bar = { layouts = { - "0" = { + # main monitor + "1" = { left = [ "dashboard" "workspaces" @@ -25,6 +32,18 @@ ]; }; + # second monitor + "0" = { + left = [ + "dashboard" + "workspaces" + "systray" + ]; + middle = [ + "clock" + ]; + + }; }; }; diff --git a/modules/home/hyprland/hyprpanel2.nix b/modules/home/hyprland/hyprpanel2.nix new file mode 100644 index 0000000..4d3fce3 --- /dev/null +++ b/modules/home/hyprland/hyprpanel2.nix @@ -0,0 +1,208 @@ +{ lib, ... }: +let + tokyo = lib.importJSON ( + builtins.fetchurl { + url = "https://raw.githubusercontent.com/Jas-SinghFSU/HyprPanel/master/themes/tokyo_night.json"; + sha256 = "0fpl12109cim5nfm9kx5zcd50i3avzvh2sl4syb40q12k2wi7ibj"; # nix-prefetch-url + } + ); + tokyo-moon = lib.importJSON ( + builtins.fetchurl { + url = "https://raw.githubusercontent.com/Jas-SinghFSU/HyprPanel/master/themes/tokyo_night_moon.json"; + sha256 = "14wmf4zv28zkkjswr5iy56imxfjyyp9aw624m19aigx9qckqi2p9"; # nix-prefetch-url + } + ); + cyberpunk = lib.importJSON ( + builtins.fetchurl { + url = "https://raw.githubusercontent.com/Jas-SinghFSU/HyprPanel/refs/heads/master/themes/cyberpunk_vivid.json"; + sha256 = "0wvx49zyka84wwzi8mxnvgjb5zbb41z1lw0asbj15yyi6k4d38ws"; # nix-prefetch-url + } + ); + nord = lib.importJSON ( + builtins.fetchurl { + url = "https://raw.githubusercontent.com/Jas-SinghFSU/HyprPanel/refs/heads/master/themes/nord.json"; + sha256 = "1gm1lbjrmah4ji8zvfz5dpsbfk0la2a1r431fynnafbnwb3mwxj8"; # nix-prefetch-url + } + ); + nord-vivid = lib.importJSON ( + builtins.fetchurl { + url = "https://raw.githubusercontent.com/Jas-SinghFSU/HyprPanel/refs/heads/master/themes/nord_vivid.json"; + sha256 = "05qdkvkqf58bgnibc54sfvmw210adi7h2hczjz6b1vx043wxgxan"; # nix-prefetch-url + } + ); + tokyo-vivid = lib.importJSON ( + builtins.fetchurl { + url = "https://raw.githubusercontent.com/Jas-SinghFSU/HyprPanel/refs/heads/master/themes/tokyo_night_vivid.json"; + sha256 = "09mhl9lkqya5lf306h6ynmfaxqngv9f1q1c27lmrwx0vriv97vkq"; # nix-prefetch-url + } + ); + one_dark = lib.importJSON ( + builtins.fetchurl { + url = "https://raw.githubusercontent.com/Jas-SinghFSU/HyprPanel/refs/heads/master/themes/one_dark.json"; + sha256 = "0034jb14fxfhm7669kp0ik0jgn7j7glyimsyvksxb88y6lpgqjw9"; # nix-prefetch-url + } + ); + + mySettings = { + bar = { + autoHide = "never"; + + customModules = { + hypridle = { + isActiveCommand = "systemctl --user status hypridle.service | grep -q 'Active: active (running)' && echo 'yes' || echo 'no'"; + startCommand = "systemctl --user start hypridle.service"; + stopCommand = "systemctl --user stop hypridle.service"; + }; + storage.paths = [ "/" ]; + hyprsunset = { + temperature = "4000K"; + }; + hypridle = { + }; + netstat = { + networkInterface = "enp6s0f0"; + label = true; + leftClick = "nm-applet"; + }; + }; + + launcher.autoDetectIcon = true; + + layouts = { + "0" = { + left = [ ]; + middle = [ ]; + right = [ ]; + }; + "1" = { + left = [ ]; + middle = [ ]; + right = [ ]; + }; + "2" = { + left = [ + "dashboard" + "workspaces" + "media" + "volume" + ]; + middle = [ + "clock" + ]; + right = [ + "systray" + "netstat" + "hyprsunset" + "hypridle" + # "updates" + "notifications" + ]; + }; + }; + + network = { + label = true; + showWifiInfo = true; + truncation_size = 6; + truncation = true; + }; + + workspaces = { + showAllActive = true; + showApplicationIcons = true; + showWsIcons = true; + show_icons = true; + identifier = true; + show_numbered = false; + workspaceMask = false; + }; + + clock.format = "%a %b %d %I:%M:%S %p"; + }; + + menus = { + clock.time = { + hideSeconds = false; + military = true; + }; + dashboard.controls.enabled = true; + media = { + displayTimeTooltip = true; + noMediaText = "Nathan rn"; + }; + }; + + theme = { + matugen = false; + + font = { + name = "Monaspace Krypton"; + label = "Monaspace Krypton Medium"; + }; + + osd.enable = true; + + bar = { + floating = false; + location = "bottom"; + opacity = 90; + transparent = false; + + border = { + location = "none"; + width = "0.15em"; + }; + + buttons = { + style = "wave"; + borderSize = "0.02em"; + enableBorders = false; + monochrome = false; + + network.enableBorder = true; + systray.enableBorder = false; + clock.enableBorder = false; + + windowtitle = { + icon = "#00ff19"; + text = "#00d0d0"; + }; + + workspaces = { + active = "#05ff00"; + numbered_active_underline_color = "#00d0d0"; + occupied = "#00d0d0"; + }; + + modules = { + hypridle.enableBorder = true; + cava.enableBorder = true; + netstat = { + enableBorder = false; + spacing = "0.45em"; + }; + }; + }; + + menus.menu.media = { + artist = "#50ff00"; + slider.primary = "#00e2c5"; + }; + }; + }; + }; + + myOverrides = mySettings // { + "theme.bar.buttons.workspaces.numbered_active_highlighted_text_color" = "#21252b"; + "theme.bar.buttons.style" = "wave"; + "theme.bar.opacity" = "95"; + "theme.bar.transparent" = "false"; + # transparent = false; + }; + + merged = lib.recursiveUpdate nord-vivid myOverrides; +in +{ + programs.hyprpanel.enable = true; + programs.hyprpanel.settings = merged; +} diff --git a/modules/home/hyprland/screenshots.nix b/modules/home/hyprland/screenshots.nix new file mode 100644 index 0000000..686a21e --- /dev/null +++ b/modules/home/hyprland/screenshots.nix @@ -0,0 +1,15 @@ +{ + config, + pkgs, + inputs, + ... +}: + +{ + + home.packages = with pkgs; [ + grimblast + grim + slurp + ]; +} diff --git a/modules/system/display-manager/sddm.nix b/modules/system/display-manager/sddm.nix index 0fb573e..9bf73cf 100755 --- a/modules/system/display-manager/sddm.nix +++ b/modules/system/display-manager/sddm.nix @@ -59,5 +59,33 @@ in qtsvg qtdeclarative # QtQuick core ]; + settings = { + X11 = { + DisplayCommand = "/etc/sddm/Xsetup"; + }; + }; + }; + + # Script for login screen to only show on primary monitor + environment.etc."sddm/Xsetup" = { + text = '' + #!/bin/sh + sleep 1 + # Log to see if script runs + echo "SDDM Xsetup script running at $(date)" >> /tmp/sddm-setup.log + + # List available displays + xrandr --query >> /tmp/sddm-setup.log 2>&1 + + # Configure monitors + echo "Setting DP-2 as primary" >> /tmp/sddm-setup.log + xrandr --output DP-2 --primary --auto >> /tmp/sddm-setup.log 2>&1 + + echo "Turning off DP-1" >> /tmp/sddm-setup.log + xrandr --output DP-1 --off >> /tmp/sddm-setup.log 2>&1 + + echo "Xsetup script completed" >> /tmp/sddm-setup.log + ''; + mode = "0755"; }; } diff --git a/modules/system/gaming.nix b/modules/system/gaming.nix index 433687f..7b60891 100755 --- a/modules/system/gaming.nix +++ b/modules/system/gaming.nix @@ -1,4 +1,4 @@ -{ ... }: +{ pkgs, ... }: { # Install Steam @@ -8,4 +8,8 @@ dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers }; + + environment.systemPackages = with pkgs; [ + gamemode + ]; }