From b27c751d62a3440e778687df40723897c54adce3 Mon Sep 17 00:00:00 2001 From: joshuaelm Date: Sun, 23 Mar 2025 08:11:47 -0500 Subject: [PATCH] im high --- configuration.nix | 149 ++++++++++++++++++++----- flake.lock | 220 ++++++------------------------------- gs.sh | 28 +++++ modules/hypr/hyprland.conf | 3 +- 4 files changed, 185 insertions(+), 215 deletions(-) create mode 100644 gs.sh diff --git a/configuration.nix b/configuration.nix index c17a257..c955d28 100644 --- a/configuration.nix +++ b/configuration.nix @@ -17,13 +17,48 @@ boot.loader.grub.efiSupport = true; boot.initrd.systemd.enable = true; boot.loader.efi.canTouchEfiVariables = true; - boot.kernelParams = ["quiet"]; + boot.loader.grub.timeoutStyle = "hidden"; services.avahi = { enable = true; nssmdns4 = true; openFirewall = true; }; + +boot = { + + plymouth = { + enable = true; + theme = "square_hud"; + themePackages = with pkgs; [ + # By default we would install all themes + (adi1090x-plymouth-themes.override { + selected_themes = [ "square_hud" ]; + }) + ]; + }; + + # Enable "Silent Boot" + consoleLogLevel = 0; + initrd.verbose = false; + kernelParams = [ + "quiet" + "splash" + "boot.shell_on_fail" + "loglevel=3" + "rd.systemd.show_status=false" + "rd.udev.log_level=3" + "udev.log_priority=3" + ]; + # Hide the OS choice for bootloaders. + # It's still possible to open the bootloader list by pressing any key + # It will just not appear on screen unless a key is pressed + loader.timeout = 0; + + }; + + boot.extraModulePackages = with config.boot.kernelPackages; [ hid-tmff2 ]; + networking.hostName = "nixos"; # Define your hostname. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. @@ -33,9 +68,9 @@ # Enable networking networking.networkmanager.enable = true; - hardware.graphics.extraPackages = with pkgs; [ - amdvlk - ]; + + hardware.bluetooth.enable = true; + hardware.bluetooth.package = pkgs.bluez; nixpkgs.config.permittedInsecurePackages = [ "electron-31.7.7" @@ -64,18 +99,14 @@ # Enable the X11 windowing sytem. services.xserver.enable = true; - # Enable Plymouth - boot.plymouth = { - enable = true; - }; # Enable the GNOME Desktop Environment. - programs.hyprland.enable = true; - services.desktopManager.plasma6.enable = false; - services.displayManager.sddm.enable = false; + programs.hyprland.enable = false; + services.desktopManager.plasma6.enable = true; + services.displayManager.sddm.enable = true; services.displayManager.cosmic-greeter.enable = false; - services.desktopManager.cosmic.enable = false; - #security.pam.services.hyprlock = {}; + services.desktopManager.cosmic.enable = true; + /*security.pam.services.hyprlock = {}; services.greetd = { enable = true; @@ -86,12 +117,18 @@ }; default_session = initial_session; }; - }; - + };*/ + + # Steam Deck Gamemode + programs.steam.gamescopeSession.enable = true; + services.getty.autologinUser = "joshuaelm"; + environment.loginShellInit = ''[[ "$(tty)" = "/dev/tty1" ]] && ~/NixOS-Config gs.sh''; + # Polkit security.polkit.enable = true; + services.udisks2.enable = true; # Configure keymap in X11 @@ -119,6 +156,7 @@ alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; + wireplumber.enable = true; # If you want to use JACK applications, uncomment this #jack.enable = true; @@ -126,15 +164,50 @@ # no need to redefine it in your config for now) #media-session.enable = true; }; + hardware.pulseaudio.configFile = pkgs.runCommand "default.pa" {} '' + sed 's/module-udev-detect$/module-udev-detect tsched=0/' \ + ${pkgs.pulseaudio}/etc/pulse/default.pa > $out +''; + environment.etc."wireplumber/main.lua.d/90-suspend-timeout.lua" = { + text = '' + session.suspend-timeout-seconds = 0 + ''; + }; + + services.pipewire.extraConfig.pipewire-pulse."92-low-latency" = { + context.modules = [ + { + name = "libpipewire-module-protocol-pulse"; + args = { + pulse.min.req = "32/48000"; + pulse.default.req = "32/48000"; + pulse.max.req = "32/48000"; + pulse.min.quantum = "32/48000"; + pulse.max.quantum = "32/48000"; + }; + } + ]; + stream.properties = { + node.latency = "32/48000"; + resample.quality = 1; + }; +}; +hardware.pulseaudio.extraConfig = '' + .nofail + unload-module module-suspend-on-idle + .fail +''; + # Enable touchpad support (enabled default in most desktopManager). # services.xserver.libinput.enable = true; # Define a user account. Don't forget to set a password with ‘passwd’. + programs.adb.enable = true; users.users.joshuaelm = { isNormalUser = true; description = "Joshua Elmasri"; - extraGroups = [ "networkmanager" "wheel" ]; + extraGroups = [ "networkmanager" "wheel" "adbusers" ]; packages = with pkgs; [ # thunderbird ]; @@ -176,11 +249,27 @@ # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ + (pkgs.buildFHSEnv { + name = "fhs"; + targetPkgs = pkgs: with pkgs; [ + alsa-lib atk cairo cups curl dbus expat file fish fontconfig freetype + fuse glib gtk3 libGL libnotify libxml2 libxslt netcat nspr nss openjdk8 + openssl.dev pango pkg-config strace udev vulkan-loader watch wget which + xorg.libX11 xorg.libxcb xorg.libXcomposite xorg.libXcursor + xorg.libXdamage xorg.libXext xorg.libXfixes xorg.libXi xorg.libXrandr + xorg.libXrender xorg.libXScrnSaver xorg.libxshmfence xorg.libXtst + xorg.xcbutilkeysyms zlib fontconfig.lib libuuid xorg.libXft + ]; + profile = ''export FHS=1''; + runScript = "fish"; + }) git - feishin bibata-cursors - blender - rustc + killall + mangohud + teamspeak3 + teamspeak6-client + unetbootin winetricks cowsay pfetch @@ -192,29 +281,27 @@ pkgs.hyprpanel cider gnomeExtensions.open-bar - just steamtinkerlaunch grub2 - lunar-client cargo btop - kdePackages.kalk inputs.zen-browser.packages."${system}".default + qalculate-qt kdePackages.kdenlive + blueman fuse linux-wallpaperengine ntfs3g lapce prismlauncher - kdePackages.elisa - glaxnimate librewolf protonup-qt mlt + nspr + nss_latest + nssTools qt5.full dconf - sublime-music - spacedrive openjdk heroic protontricks @@ -256,7 +343,12 @@ enable = true; remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server -}; + }; + + programs.gamescope = { + enable = true; + capSysNice = true; + }; programs.nix-ld.enable = true; @@ -272,9 +364,10 @@ # Enable the OpenSSH daemon. services.openssh.enable = true; + services.openssh.allowSFTP = true; # Open ports in the firewall. - networking.firewall.allowedTCPPorts = [ 7860 3042 47990 ]; + networking.firewall.allowedTCPPorts = [ 7860 3042 47990 5001 ]; networking.firewall.allowedUDPPorts = [ 7860 3042 47990 ]; # Or disable the firewall altogether. # networking.firewall.enable = false; diff --git a/flake.lock b/flake.lock index 603c97b..53cbc59 100644 --- a/flake.lock +++ b/flake.lock @@ -44,27 +44,6 @@ "type": "github" } }, - "devshell": { - "inputs": { - "nixpkgs": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1735644329, - "narHash": "sha256-tO3HrHriyLvipc4xr+Ewtdlo7wM1OjXNjlWRgmM7peY=", - "owner": "numtide", - "repo": "devshell", - "rev": "f7795ede5b02664b57035b3b757876703e2c3eac", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "devshell", - "type": "github" - } - }, "flake-compat": { "flake": false, "locked": { @@ -81,20 +60,6 @@ "type": "github" } }, - "flake-compat_2": { - "locked": { - "lastModified": 1733328505, - "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", - "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", - "revCount": 69, - "type": "tarball", - "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" - }, - "original": { - "type": "tarball", - "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" - } - }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -103,11 +68,11 @@ ] }, "locked": { - "lastModified": 1738453229, - "narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=", + "lastModified": 1741352980, + "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd", + "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", "type": "github" }, "original": { @@ -134,54 +99,6 @@ "type": "github" } }, - "git-hooks": { - "inputs": { - "flake-compat": [ - "nixvim", - "flake-compat" - ], - "gitignore": "gitignore", - "nixpkgs": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1737465171, - "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "git-hooks.nix", - "type": "github" - } - }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "nixvim", - "git-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -189,32 +106,11 @@ ] }, "locked": { - "lastModified": 1738878603, - "narHash": "sha256-fmhq8B3MvQLawLbMO+LWLcdC2ftLMmwSk+P29icJ3tE=", + "lastModified": 1742588233, + "narHash": "sha256-Fi5g8H5FXMSRqy+mU6gPG0v+C9pzjYbkkiePtz8+PpA=", "owner": "nix-community", "repo": "home-manager", - "rev": "433799271274c9f2ab520a49527ebfe2992dcfbd", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_2": { - "inputs": { - "nixpkgs": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1738841109, - "narHash": "sha256-sEgE3nifaRU5gfAx33ds0tx/j+qM0/5/bHopv/w6c0c=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "f99c704fe3a4cf8d72b2d568ec80bc38be1a9407", + "rev": "296ddc64627f4a6a4eb447852d7346b9dd16197d", "type": "github" }, "original": { @@ -229,11 +125,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1738836920, - "narHash": "sha256-1zCjMuRrxrsFgl8FH/pjwyM9dxoiQDc3SgrjGqOGv/c=", + "lastModified": 1742402033, + "narHash": "sha256-aaBdTUJIAo9LBPpjNX96AoAi0H+O/oW8o+7SCVBAzXI=", "owner": "Jas-SinghFSU", "repo": "HyprPanel", - "rev": "6b846b97097ba6cae627630ead88774b15af887e", + "rev": "3a5ad2a1db420f0238895f2cb1ff64acd0d2cc54", "type": "github" }, "original": { @@ -272,11 +168,11 @@ }, "master": { "locked": { - "lastModified": 1738886059, - "narHash": "sha256-DYkVeNwjNtcZfx37AfvDUQVtwfS98ES27iTI76LnG8A=", + "lastModified": 1742667061, + "narHash": "sha256-gxEMqQ3faiBhzxyRKJWw0zaePAE7zJPxwGvtKDIap5A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "12a098d8424a90f882687f08d5c1b0be46249699", + "rev": "0830a0bb3aa85c88c01f8a01238856d884273e25", "type": "github" }, "original": { @@ -286,27 +182,6 @@ "type": "github" } }, - "nix-darwin": { - "inputs": { - "nixpkgs": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1738743987, - "narHash": "sha256-O3bnAfsObto6l2tQOmQlrO6Z2kD6yKwOWfs7pA0CpOc=", - "owner": "lnl7", - "repo": "nix-darwin", - "rev": "ae406c04577ff9a64087018c79b4fdc02468c87c", - "type": "github" - }, - "original": { - "owner": "lnl7", - "repo": "nix-darwin", - "type": "github" - } - }, "nixos-cosmic": { "inputs": { "flake-compat": "flake-compat", @@ -316,11 +191,11 @@ "nixpkgs-stable": "nixpkgs-stable" }, "locked": { - "lastModified": 1738876009, - "narHash": "sha256-NWOsGZshqmErypjw62LnzOfZZ3kiclMisF1f1JaKpgc=", + "lastModified": 1742641703, + "narHash": "sha256-hoN8blvJco8OSZmPj8izwQaQUdydVi+5FO4/nWd1MNU=", "owner": "lilyinstarlight", "repo": "nixos-cosmic", - "rev": "af0ad2ecf0a6229f07cd29f1e083243ff3f7fc55", + "rev": "216557e6cd229dbe7d73a497c227824a3c579cd7", "type": "github" }, "original": { @@ -347,11 +222,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1738702386, - "narHash": "sha256-nJj8f78AYAxl/zqLiFGXn5Im1qjFKU8yBPKoWEeZN5M=", + "lastModified": 1742512142, + "narHash": "sha256-8XfURTDxOm6+33swQJu/hx6xw1Tznl8vJJN5HwVqckg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "030ba1976b7c0e1a67d9716b17308ccdab5b381e", + "rev": "7105ae3957700a9646cc4b766f5815b23ed0c682", "type": "github" }, "original": { @@ -363,11 +238,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1738680400, - "narHash": "sha256-ooLh+XW8jfa+91F1nhf9OF7qhuA/y1ChLx6lXDNeY5U=", + "lastModified": 1742422364, + "narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "799ba5bffed04ced7067a91798353d360788b30d", + "rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc", "type": "github" }, "original": { @@ -378,11 +253,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1735471104, - "narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=", + "lastModified": 1742288794, + "narHash": "sha256-Txwa5uO+qpQXrNG4eumPSD+hHzzYi/CdaM80M9XRLCo=", "owner": "nixos", "repo": "nixpkgs", - "rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4", + "rev": "b6eaf97c6960d97350c584de1b6dcff03c9daf42", "type": "github" }, "original": { @@ -394,24 +269,18 @@ }, "nixvim": { "inputs": { - "devshell": "devshell", - "flake-compat": "flake-compat_2", "flake-parts": "flake-parts", - "git-hooks": "git-hooks", - "home-manager": "home-manager_2", - "nix-darwin": "nix-darwin", "nixpkgs": [ "nixpkgs" ], - "nuschtosSearch": "nuschtosSearch", - "treefmt-nix": "treefmt-nix" + "nuschtosSearch": "nuschtosSearch" }, "locked": { - "lastModified": 1738844060, - "narHash": "sha256-N5aqp83tNnX6X+28CYhieUTHJjNTWyXCMUB4xyvMSO8=", + "lastModified": 1742559284, + "narHash": "sha256-PSSjCCqpJPkCagkkdLODBVVonGxgwU5dN2CYlFPNVNw=", "owner": "nix-community", "repo": "nixvim", - "rev": "5024ef216f0e5d84adf1da703445de4ca1f8f9fb", + "rev": "c980271267ef146a6c30394c611a97e077471cf2", "type": "github" }, "original": { @@ -430,11 +299,11 @@ ] }, "locked": { - "lastModified": 1738508923, - "narHash": "sha256-4DaDrQDAIxlWhTjH6h/+xfG05jt3qDZrZE/7zDLQaS4=", + "lastModified": 1741886583, + "narHash": "sha256-sScfYKtxp3CYv5fJcHQDvQjqBL+tPNQqS9yf9Putd+s=", "owner": "NuschtOS", "repo": "search", - "rev": "86e2038290859006e05ca7201425ea5b5de4aecb", + "rev": "2974bc5fa3441a319fba943f3ca41f7dcd1a1467", "type": "github" }, "original": { @@ -469,37 +338,16 @@ "type": "github" } }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "nixvim", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1738680491, - "narHash": "sha256-8X7tR3kFGkE7WEF5EXVkt4apgaN85oHZdoTGutCFs6I=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "64dbb922d51a42c0ced6a7668ca008dded61c483", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, "zen-browser": { "inputs": { "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1738880187, - "narHash": "sha256-1RieTOf8k5WQDMUpk2y24jmCUGS5Z8vyVb1xOaZu6cc=", + "lastModified": 1742614294, + "narHash": "sha256-bZbYlP/xqGyW2aVle742dFbc0npFnwJBzcEnXNywJgY=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "6449d5cd3ddd3e21650ed2b80c59acfbb196fb2b", + "rev": "7fa9ec4e14d89e568ebaac302049980df7cf0cc9", "type": "github" }, "original": { diff --git a/gs.sh b/gs.sh new file mode 100644 index 0000000..29f31df --- /dev/null +++ b/gs.sh @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +set -xeuo pipefail + +gamescopeArgs=( + --adaptive-sync # VRR support + --hdr-enabled + --mangoapp # performance overlay + --rt + --steam +) +steamArgs=( + -pipewire-dmabuf + -tenfoot +) +mangoConfig=( + cpu_temp + gpu_temp + ram + vram +) +mangoVars=( + MANGOHUD=1 + MANGOHUD_CONFIG="$(IFS=,; echo "${mangoConfig[*]}")" +) + +export "${mangoVars[@]}" +exec gamescope "${gamescopeArgs[@]}" -- steam "${steamArgs[@]}" + diff --git a/modules/hypr/hyprland.conf b/modules/hypr/hyprland.conf index eff6d11..066aaaa 100644 --- a/modules/hypr/hyprland.conf +++ b/modules/hypr/hyprland.conf @@ -3,7 +3,7 @@ autogenerated = 0 # remove this line to remove the warning source=~/.config/hypr/rose-pine.conf # See https://wiki.hyprland.org/Configuring/Monitors/ -monitor = HDMI-A-1, 2560x1440@60, 0x0, 1 +monitor = HDMI-A-1, 3840x2160@60, 0x0, 1.5 #monitor = HDMI-A-1, disable #monitor = sunshine, highres@highrr, 0x0, 1 exec-once = hyprctl dispatch workspace 1 @@ -117,6 +117,7 @@ misc { force_default_wallpaper = 0 # Set to 0 to disable the anime mascot wallpapers } + # Example per-device config # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more