From f7e26a97931129f2e12c6d535c48980c08672cb9 Mon Sep 17 00:00:00 2001 From: mrfluffy Date: Tue, 6 Jan 2026 19:56:41 +0000 Subject: [PATCH] pain and suffering --- configuration.nix | 3 + "dots/\\" | 423 ++++++++++++++++++++++++++ dots/dankMeterialShell.nix | 14 +- dots/hyprland.nix | 94 +++--- dots/nixcord.nix | 9 +- dots/xdg.nix | 2 +- dots/zsh.nix | 2 +- flake.lock | 56 ++-- flake.nix | 14 +- "home/\\" | 303 ++++++++++++++++++ home/homePkgs.nix | 13 +- system/services.nix | 2 +- system/specialisation/main-system.nix | 5 +- system/specialisation/steam.nix | 73 +++-- 14 files changed, 891 insertions(+), 122 deletions(-) create mode 100644 "dots/\\" create mode 100644 "home/\\" diff --git a/configuration.nix b/configuration.nix index 01f2f80..65e8ee4 100755 --- a/configuration.nix +++ b/configuration.nix @@ -65,6 +65,7 @@ "libvirt" "input" "seat" +"dialout" ]; packages = with pkgs; [ ]; }; @@ -82,6 +83,7 @@ "libvirt" "input" "seat" +"dialout" ]; packages = with pkgs; [ ]; }; @@ -98,6 +100,7 @@ "input" "seat" "networkmanager" + "dialout" ]; home = "/home/game"; }; diff --git "a/dots/\\" "b/dots/\\" new file mode 100644 index 0000000..34be107 --- /dev/null +++ "b/dots/\\" @@ -0,0 +1,423 @@ +{ + config, + lib, + pkgs, + window_manager, + systemName, + inputs, + ... +}: +let + hypr-package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + hypr-portal = + inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + hypr-split = + inputs.hyprland-hyprsplit.packages.${pkgs.stdenv.hostPlatform.system}.split-monitor-workspaces; + #hyprscrolling = inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprscrolling; + mod = "Alt"; + terminal = "footclient"; + fileManager = "thunar"; + #runner = "${lib.getExe caelestia-cli} shell drawers toggle launcher"; + runner = "vicinae toggle"; + # runner = "anyrun"; + browser = "brave"; + editor = "emacsclient -c"; +in +{ + wayland.windowManager.hyprland = { + enable = window_manager == "hyprland" || window_manager == "all"; + package = hypr-package; + portalPackage = hypr-portal; + plugins = [ + #pkgs.hyprlandPlugins.hyprsplit + hypr-split + #hyprscrolling + ]; + + settings = { + ########################################################################## + # Monitors + ########################################################################## + #source = "./dms/outputs.conf"; + + # See https://wiki.hyprland.org/Configuring/Monitors/ + monitor = lib.mkMerge [ + #(lib.mkIf (systemName == "laptop") [ "eDP-1,1920x1080@59.99700,0x0,1" ]) + (lib.mkIf (systemName == "pc") [ + "HDMI-A-2, disable" + ]) + ]; + + monitorv2 = + [ ] + ++ lib.optional (systemName == "laptop") { + output = "eDP-1"; + mode = "1920x1080@59.99700"; + scale = 1; + position = "0x0"; + } + ++ lib.optional (systemName == "pc") { + output = "DP-1"; + mode = "2560x1440@239.97"; + position = "2560x0"; # "1440x750"; # Corrected from 2569x0 for seamless alignment + scale = 1; + #supports_wide_color = 1; + bitdepth = 10; + cm = "wide"; + supports_hdr = true; + supports_wide_color = true; + sdr_min_luminance = 0; # For true black on OLED + sdr_max_luminance = 275; # Matches typical SDR brightness + min_luminance = 0; + max_luminance = 1000; # HDR peak + max_avg_luminance = 400; # Average frame luminance + sdrbrightness = 1.2; # Slight boost to avoid washed out look + sdrsaturation = 1.0; + } + ++ lib.optional (systemName == "pc") { + output = "DP-2"; + mode = "2560x1440@144"; + scale = 1; + position = "0x0"; + transform = 0; + }; + + ########################################################################## + # Autostart + ########################################################################## + + # Autostart necessary processes (like notifications daemons, status bars, etc.) + # Or execute your favorite apps at launch like this: + exec-once = [ + # "waybar" + # "quickshell" + #"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" + "${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1" + "${pkgs.kdePackages.kwallet-pam}/libexec/pam_kwallet_init" + "fcitx5 -d" + "foot -s" + "systemctl --user import-environment DBUS_SESSION_BUS_ADDRESS WAYLAND_DISPLAY XDG_SESSION_TYPE XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP QT_QPA_PLATFORMTHEME GTK_THEME" + "dbus-update-activation-environment --systemd --all" + ] + ++ lib.optionals (config.home.username == "work") [ + "thunderbird" + "sleep 10 && emacsclient -c --frame-parameters='((name . \"work\"))' $HOME/Documents/work/README.org" + ]; + # ++ lib.optional (systemName == "laptop") + # "swaybg -o eDP-1 -i ${../assets/Wallpapers/138.png}" + # + # ++ lib.optional (systemName == "pc") + # "swaybg -o HDMI-A-1 -i ${../assets/Wallpapers/138.png} -o DP-1 -i ${../assets/Wallpapers/138.png}"; + + ########################################################################## + # Plugins + ########################################################################## + + plugin = { + split-monitor-workspaces = { + count = 10; + penable_persistent_workspaces = 1; + }; + hyprscrolling = { + column_width = 0.9; + follow_focus = false; + fullscreen_on_one_column = true; + }; + }; + + ########################################################################## + # Environment + ########################################################################## + + env = [ + "XCURSOR_SIZE, 24" + "HYPRCURSOR_SIZE, 24" + ]; + + ########################################################################## + # General / Render / Decoration / Animations + ########################################################################## + + # https://wiki.hyprland.org/Configuring/Variables/ + # https://wiki.hyprland.org/Configuring/Variables/#general + general = { + gaps_in = 5; + gaps_out = 10; + border_size = 2; + # "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + # "col.inactive_border" = "rgba(595959aa)"; + resize_on_border = false; # enable resizing windows by clicking and dragging on borders and gaps + allow_tearing = false; # see https://wiki.hyprland.org/Configuring/Tearing/ before enabling + layout = "master"; + }; + + render = { + cm_enabled = true; # turn on the CM pipeline (requires Hyprland restart) + cm_fs_passthrough = 2; # passthrough only for HDR content (safer than 1) + cm_auto_hdr = 1; # auto-switch monitor to HDR for fullscreen apps + send_content_type = true; # helps auto HDR on some displays + # cm_fs_passthrough = 1; # optional: keep your existing line; you can replace with 2 as above + }; + + # https://wiki.hyprland.org/Configuring/Variables/#decoration + decoration = { + rounding = 0; + rounding_power = 0; + active_opacity = 1.0; + inactive_opacity = 1.0; + + shadow = { + enabled = true; + range = 4; + render_power = 3; + # color = "rgba(1a1a1aee)"; + }; + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur = { + enabled = false; + size = 3; + passes = 1; + vibrancy = 0.1696; + }; + }; + + animations = { + enabled = "yes, please :)"; + + # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + bezier = [ + "easeOutQuint,0.23,1,0.32,1" + "easeInOutCubic,0.65,0.05,0.36,1" + "linear,0,0,1,1" + "almostLinear,0.5,0.5,0.75,1.0" + "quick,0.15,0,0.1,1" + ]; + + animation = [ + "global, 1, 10, default" + "border, 1, 5.39, easeOutQuint" + "windows, 1, 4.79, easeOutQuint" + "windowsIn, 1, 4.1, easeOutQuint, popin 87%" + "windowsOut, 1, 1.49, linear, popin 87%" + "fadeIn, 1, 1.73, almostLinear" + "fadeOut, 1, 1.46, almostLinear" + "fade, 1, 3.03, quick" + "layers, 1, 3.81, easeOutQuint" + "layersIn, 1, 4, easeOutQuint, fade" + "layersOut, 1, 1.5, linear, fade" + "fadeLayersIn, 1, 1.79, almostLinear" + "fadeLayersOut, 1, 1.39, almostLinear" + "workspaces, 1, 1.94, almostLinear, fade" + "workspacesIn, 1, 1.21, almostLinear, fade" + "workspacesOut, 1, 1.94, almostLinear, fade" + ]; + }; + + ########################################################################## + # Layouts + ########################################################################## + + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + dwindle = { + pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds + preserve_split = true; # You probably want this + force_split = 2; + }; + + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + master = { + new_status = "master"; + mfact = 0.5; + new_on_top = true; + }; + + ########################################################################## + # Misc / Input / Gestures / Devices + ########################################################################## + + # https://wiki.hyprland.org/Configuring/Variables/#misc + misc = { + force_default_wallpaper = -1; # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = true; # If true disables the random hyprland logo / anime girl background. :( + enable_swallow = true; + swallow_regex = "footclient"; + }; + + # https://wiki.hyprland.org/Configuring/Variables/#input + input = { + kb_layout = lib.mkMerge [ + (lib.mkIf (systemName == "laptop") "ie") + (lib.mkIf (systemName == "pc") "us") + ]; + repeat_rate = 40; + repeat_delay = 500; + # kb_variant = + # kb_model = + # kb_options = + # kb_rules = + follow_mouse = 1; + sensitivity = 0; # -1.0 - 1.0, 0 means no modification. + + touchpad = { + natural_scroll = false; + }; + }; + + # https://wiki.hyprland.org/Configuring/Variables/#gestures + # gestures = { + # workspace_swipe = true; + # workspace_swipe_cancel_ratio = 0.15; + # }; + + # Example per-device config + # See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs + device = { + name = "epic-mouse-v1"; + sensitivity = -0.5; + }; + + ########################################################################## + # Binds + ########################################################################## + + bind = [ + # Launcher / apps + "${mod}, Return, exec, ${terminal}" + "${mod}, B, exec, ${browser}" + "${mod}, F, exec, ${fileManager}" + "${mod}, D, exec, ${runner}" + "${mod}, E, exec, ${editor}" + + # Session / window controls + "${mod}, Q, killactive," + "${mod}, M, exit," + "${mod}, V, togglefloating," + "${mod}, T, fullscreen" + # ",Print, exec, grim -g \"$(slurp)\" - | swappy -f -" + ",Print, exec, dms screenshot" + "${mod}, f1, exec, dms ipc call keybinds toggle hyprland" + + # Dwindle + "${mod}, P, pseudo, " + + # Focus (arrows) + "${mod}, H, movefocus, l" + "${mod}, L, movefocus, r" + "${mod}, K, movefocus, u" + "${mod}, J, movefocus, d" + + # Column movement (hyprscrolling) + #"${mod}, h, layoutmsg, move -col" + #"${mod}, L, layoutmsg, move +col" + + # Move window + "${mod} SHIFT, H, movewindow, l" + "${mod} SHIFT, L, movewindow, r" + "${mod} SHIFT, K, movewindow, u" + "${mod} SHIFT, J, movewindow, d" + #"${mod} SHIFT, L, layoutmsg, movewindowto r" + #"${mod} SHIFT, H, layoutmsg, movewindowto l" + #"${mod} SHIFT, K, layoutmsg, movewindowto u" + #"${mod} SHIFT, J, layoutmsg, movewindowto d" + "${mod}, semicolon, layoutmsg, promote" + + #hyperscrolling stuff + "${mod}, period, layoutmsg, move +col" + "${mod}, comma, layoutmsg, move -col" + + # Workspaces (switch) + "${mod}, 1, split-workspace, 1 " + "${mod}, 2, split-workspace, 2 " + "${mod}, 3, split-workspace, 3 " + "${mod}, 4, split-workspace, 4 " + "${mod}, 5, split-workspace, 5 " + "${mod}, 6, split-workspace, 6 " + "${mod}, 7, split-workspace, 7 " + "${mod}, 8, split-workspace, 8 " + "${mod}, 9, split-workspace, 9 " + "${mod}, 0, split-workspace, 10" + + # Workspaces (move active window) + "${mod} SHIFT, 1, split-movetoworkspacesilent, 1 " + "${mod} SHIFT, 2, split-movetoworkspacesilent, 2 " + "${mod} SHIFT, 3, split-movetoworkspacesilent, 3 " + "${mod} SHIFT, 4, split-movetoworkspacesilent, 4 " + "${mod} SHIFT, 5, split-movetoworkspacesilent, 5 " + "${mod} SHIFT, 6, split-movetoworkspacesilent, 6 " + "${mod} SHIFT, 7, split-movetoworkspacesilent, 7 " + "${mod} SHIFT, 8, split-movetoworkspacesilent, 8 " + "${mod} SHIFT, 9, split-movetoworkspacesilent, 9 " + "${mod} SHIFT, 0, split-movetoworkspacesilent, 10" + + # Special workspace (scratchpad) + "${mod}, SLASH, togglespecialworkspace, magic" + "${mod} SHIFT, SLASH, movetoworkspace, special:magic" + + # Scroll through existing workspaces with mainMod + scroll + "${mod}, mouse_down, workspace, e+1" + "${mod}, mouse_up, workspace, e-1" + + # 8BitDo keyboard big red b Button + "${mod} SHIFT, F1, exec, scrcpy --video-source=camera -m3000 --camera-facing=back --v4l2-sink=/dev/video1 --no-video-playback --no-audio" + ]; + + bindm = [ + # Move/resize windows with mainMod + LMB/RMB and dragging + "${mod}, mouse:272, movewindow" + "${mod}, mouse:273, resizewindow" + ]; + + bindel = [ + ",XF86AudioRaiseVolume, exec, pamixer -i 5" + ",XF86AudioLowerVolume, exec, pamixer -d 5" + ",XF86AudioMute, exec, pamixer --toggle-mute" + ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + # ",XF86MonBrightnessUp, exec, light -A 5" + # ",XF86MonBrightnessDown, exec, light -U 5" + + # Brightness + ",XF86MonBrightnessUp, global, dms ipc call brightness increment 5" + ",XF86MonBrightnessDown, global, dms ipc call brightness decrement 5" + ]; + + bindl = [ + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPause, exec, playerctl play-pause" + ", XF86AudioPlay, exec, playerctl play-pause " + ", XF86AudioPrev, exec, playerctl previous " + ]; + + binds = [ ]; + + ########################################################################## + # Rules (windows / workspaces) + ########################################################################## + + # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more + # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + + # Example windowrule + # windowrule = float,class:^(kitty)$,title:^(kitty)$ + + # Smart gaps / No gaps when only + # workspace = w[tv1], gapsout:0, gapsin:0 + # workspace = f[1], gapsout:0, gapsin:0 + # windowrule = bordersize 0, floating:0, onworkspace:w[tv1] + # windowrule = rounding 0, floating:0, onworkspace:w[tv1] + # windowrule = bordersize 0, floating:0, onworkspace:f[1] + # windowrule = rounding 0, floating:0, onworkspace:f[1] + + windowrule = [ + # Ignore maximize requests from apps. You'll probably like this. + "match:class .*, suppress_event maximize" + + # Fix some dragging issues with XWayland + "match:class ^$, match:title ^$, match:xwayland 1, match:float 1, match:fullscreen 0, match:pin 0, no_focus on" + + "match:class thunderbird, workspace special:magic silent" + "match:class emacs, match:title work, workspace special:magic silent" + ]; + }; + }; +} diff --git a/dots/dankMeterialShell.nix b/dots/dankMeterialShell.nix index 6f35cd6..8f851a8 100644 --- a/dots/dankMeterialShell.nix +++ b/dots/dankMeterialShell.nix @@ -8,19 +8,19 @@ { imports = [ - inputs.dms.homeModules.dankMaterialShell.default + inputs.dms.homeModules.dank-material-shell ]; - programs.dankMaterialShell = { + programs.dank-material-shell = { enable = true; systemd = { enable = true; # if you prefer starting from your compositor }; - default.settings = { - theme = "dark"; - dynamicTheming = true; - # Add any other settings here - }; + #settings = { + # theme = "dark"; + # dynamicTheming = true; + # # Add any other settings here + #}; }; } diff --git a/dots/hyprland.nix b/dots/hyprland.nix index c78cea4..34be107 100755 --- a/dots/hyprland.nix +++ b/dots/hyprland.nix @@ -9,8 +9,10 @@ }: let hypr-package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; - hypr-portal = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; - hypr-split = inputs.hyprland-hyprsplit.packages.${pkgs.stdenv.hostPlatform.system}.split-monitor-workspaces; + hypr-portal = + inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + hypr-split = + inputs.hyprland-hyprsplit.packages.${pkgs.stdenv.hostPlatform.system}.split-monitor-workspaces; #hyprscrolling = inputs.hyprland-plugins.packages.${pkgs.stdenv.hostPlatform.system}.hyprscrolling; mod = "Alt"; terminal = "footclient"; @@ -18,7 +20,7 @@ let #runner = "${lib.getExe caelestia-cli} shell drawers toggle launcher"; runner = "vicinae toggle"; # runner = "anyrun"; - browser = "firefox"; + browser = "brave"; editor = "emacsclient -c"; in { @@ -36,50 +38,49 @@ in ########################################################################## # Monitors ########################################################################## - source = "./dms/outputs.conf"; + #source = "./dms/outputs.conf"; # See https://wiki.hyprland.org/Configuring/Monitors/ - #monitor = lib.mkMerge [ - # #(lib.mkIf (systemName == "laptop") [ "eDP-1,1920x1080@59.99700,0x0,1" ]) - # (lib.mkIf (systemName == "pc") [ - # "HDMI-A-2, disable" - # ]) - #]; + monitor = lib.mkMerge [ + #(lib.mkIf (systemName == "laptop") [ "eDP-1,1920x1080@59.99700,0x0,1" ]) + (lib.mkIf (systemName == "pc") [ + "HDMI-A-2, disable" + ]) + ]; - #monitorv2 = - # [ ] - # ++ lib.optional (systemName == "laptop") { - # output = "eDP-1"; - # mode = "1920x1080@59.99700"; - # scale = 1; - # position = "0x0"; - # } - # ++ lib.optional (systemName == "pc") { - # output = "DP-1"; - # mode = "2560x1440@239.97"; - # position = "2560x0"; # "1440x750"; # Corrected from 2569x0 for seamless alignment - # scale = 1; - # #supports_wide_color = 1; - # bitdepth = 10; - # cm = "hdr"; - # supports_hdr = true; - # supports_wide_color = true; - # sdr_min_luminance = 0; # For true black on OLED - # sdr_max_luminance = 275; # Matches typical SDR brightness - # min_luminance = 0; - # max_luminance = 1000; # HDR peak - # max_avg_luminance = 400; # Average frame luminance - # sdrbrightness = 1.2; # Slight boost to avoid washed out look - # sdrsaturation = 1.0; - # #transform = 2; # Uncomment if needed - # } - # ++ lib.optional (systemName == "pc") { - # output = "DP-2"; - # mode = "2560x1440@144"; - # scale = 1; - # position = "0x0"; - # transform = 0; - # }; + monitorv2 = + [ ] + ++ lib.optional (systemName == "laptop") { + output = "eDP-1"; + mode = "1920x1080@59.99700"; + scale = 1; + position = "0x0"; + } + ++ lib.optional (systemName == "pc") { + output = "DP-1"; + mode = "2560x1440@239.97"; + position = "2560x0"; # "1440x750"; # Corrected from 2569x0 for seamless alignment + scale = 1; + #supports_wide_color = 1; + bitdepth = 10; + cm = "wide"; + supports_hdr = true; + supports_wide_color = true; + sdr_min_luminance = 0; # For true black on OLED + sdr_max_luminance = 275; # Matches typical SDR brightness + min_luminance = 0; + max_luminance = 1000; # HDR peak + max_avg_luminance = 400; # Average frame luminance + sdrbrightness = 1.2; # Slight boost to avoid washed out look + sdrsaturation = 1.0; + } + ++ lib.optional (systemName == "pc") { + output = "DP-2"; + mode = "2560x1440@144"; + scale = 1; + position = "0x0"; + transform = 0; + }; ########################################################################## # Autostart @@ -90,7 +91,9 @@ in exec-once = [ # "waybar" # "quickshell" - "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" + #"${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" + "${pkgs.kdePackages.polkit-kde-agent-1}/libexec/polkit-kde-authentication-agent-1" + "${pkgs.kdePackages.kwallet-pam}/libexec/pam_kwallet_init" "fcitx5 -d" "foot -s" "systemctl --user import-environment DBUS_SESSION_BUS_ADDRESS WAYLAND_DISPLAY XDG_SESSION_TYPE XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP QT_QPA_PLATFORMTHEME GTK_THEME" @@ -294,7 +297,6 @@ in # ",Print, exec, grim -g \"$(slurp)\" - | swappy -f -" ",Print, exec, dms screenshot" "${mod}, f1, exec, dms ipc call keybinds toggle hyprland" - # Dwindle "${mod}, P, pseudo, " diff --git a/dots/nixcord.nix b/dots/nixcord.nix index a4d832d..1af337f 100755 --- a/dots/nixcord.nix +++ b/dots/nixcord.nix @@ -10,12 +10,12 @@ enable = true; discord = { enable = false; - package = pkgs.vencord; + #package = pkgs.vencord; }; vesktop = { enable = true; - package = pkgs.vesktop; - useSystemVencord = false; + #package = pkgs.vesktop; + #useSystemVencord = false; }; config = { plugins = { @@ -42,9 +42,6 @@ biggerStreamPreview = { enable = true; }; - clearUrLs = { - enable = true; - }; copyFileContents = { enable = true; }; diff --git a/dots/xdg.nix b/dots/xdg.nix index a863ea0..8d8cf1c 100755 --- a/dots/xdg.nix +++ b/dots/xdg.nix @@ -38,7 +38,7 @@ defaultApplications = let - browser = [ "firefox.desktop" ]; + browser = [ "brave.desktop" ]; fileManager = [ "pcmanfm.desktop" ]; editor = [ "emacs.desktop" ]; player = [ "mpv.desktop" ]; diff --git a/dots/zsh.nix b/dots/zsh.nix index eaddf22..386aba4 100755 --- a/dots/zsh.nix +++ b/dots/zsh.nix @@ -45,7 +45,7 @@ shellAliases = { ns = "nh os switch --specialisation 00-main-system"; - nu = "(cd ~/nixos-dots && nix flake update) && echo 'flake.lock updated'"; + nu = "(cd ~/nixos-dots && nix flake update --commit-lock-file) && echo 'flake.lock updated'"; ne = "emacsclient -c ~/nixos-dots/configuration.nix"; ls = "exa -lag --icons"; diff --git a/flake.lock b/flake.lock index 618d6d7..e7695d4 100644 --- a/flake.lock +++ b/flake.lock @@ -233,11 +233,11 @@ "quickshell": "quickshell_3" }, "locked": { - "lastModified": 1767536308, - "narHash": "sha256-mtIZDKf4dO6Kaflg/tzHTwZwun04oDPO+ZK/r3XrPAw=", + "lastModified": 1767649471, + "narHash": "sha256-njG0q58Xnx69/V0KCTwBsI514sO/Eq1yF74+8hLDU1A=", "owner": "AvengeMedia", "repo": "DankMaterialShell", - "rev": "2e1bed5fb5080ad1a0bd2d7f270f916e6f57dfb2", + "rev": "ab071e12aaf0c42b6e0921b94f96553c4a10bcbf", "type": "github" }, "original": { @@ -410,11 +410,11 @@ ] }, "locked": { - "lastModified": 1767525999, - "narHash": "sha256-1E9xlYlyl3EnUrwxoaJMTK7dFrC2llL/TJ+T4xIcXDY=", + "lastModified": 1767619743, + "narHash": "sha256-N0kK1JqxIjFl7hPAfhkW6C9AO7feYJUWLPyqJO2VuQQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "7d5927b63cea63deb655b3e8421ae17ebb9feac2", + "rev": "a65c04965c841eb01ba401f5162f12bc8d52014f", "type": "github" }, "original": { @@ -500,11 +500,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1767523459, - "narHash": "sha256-Z3EijMLd18cg8arhXv+A/tNiknQIYaeWQVoCNUm+c4A=", + "lastModified": 1767654014, + "narHash": "sha256-M5WVoXwlZpYcEKS23sEQKMzzdqItY/iEWoj3reIBfiE=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "0b3b012817ca381e40754cb4408e5c0cd3a2c732", + "rev": "9817553c664b0b7f6776671383a6368c74ee8dee", "type": "github" }, "original": { @@ -597,11 +597,11 @@ ] }, "locked": { - "lastModified": 1767473668, - "narHash": "sha256-KLybElvKmWkCJBVgEesy7OueJsmDhksfbDFJ3UltPlk=", + "lastModified": 1767640250, + "narHash": "sha256-502sjmbTK/W8x6DUbJAyiBOABwV1q5Wb5caCMwd6BuI=", "owner": "hyprwm", "repo": "hyprland-plugins", - "rev": "a084d66d7d1334b89a07d0022fa12049141cb119", + "rev": "0b356053fa4e6a6f5e857529654ff45eba2859d8", "type": "github" }, "original": { @@ -944,11 +944,11 @@ ] }, "locked": { - "lastModified": 1767513804, - "narHash": "sha256-EbKqZJppvhtsj17IYu8EQm1WhfBuQbmLMmsbVlzSyh0=", + "lastModified": 1767600187, + "narHash": "sha256-pnfuAPzku7uqNt7Bc0zILNrvmeHd+1/iEN5caWJb8x4=", "owner": "kaylorben", "repo": "nixcord", - "rev": "f61c17099bbec0404af0f7639c2c7390ee2752ae", + "rev": "9748d874957aef2a3f44de2c3fdfe412c62a9063", "type": "github" }, "original": { @@ -1021,11 +1021,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1767379071, - "narHash": "sha256-EgE0pxsrW9jp9YFMkHL9JMXxcqi/OoumPJYwf+Okucw=", - "owner": "nixos", + "lastModified": 1766580501, + "narHash": "sha256-bGKKceW7Sr5HsuyDrdUCdx3/NkyvASdst86yx955CCE=", + "owner": "NixOS", "repo": "nixpkgs", - "rev": "fb7944c166a3b630f177938e478f0378e64ce108", + "rev": "3bd884a63dc53ecb0bf43422f4aa4f51d87a04e9", "type": "github" }, "original": { @@ -1262,11 +1262,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1767397606, - "narHash": "sha256-QA1d/6XzxK3lsMiJ+xiJf340cpNeJs/xIM6D0/yLqs4=", + "lastModified": 1767652667, + "narHash": "sha256-zsgfockkvK0JrSvzVAb8JeUq3SDdITu6ViUf7yeIpi4=", "owner": "nix-community", "repo": "stylix", - "rev": "6850ad2e9f3f7ff6116e9e6fb73a9cca2d9b1a35", + "rev": "a4406d9799d002c41296c72378a1094a8fc9aa1b", "type": "github" }, "original": { @@ -1407,11 +1407,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1767534317, - "narHash": "sha256-22Iw3fka3S6rygdzMTKmwDVEIPRB9f238eln3QiYEdY=", + "lastModified": 1767621589, + "narHash": "sha256-L0A4daBtEuponvKr5YM4wn8btDku0Cs2Eu5b+EtTgSk=", "owner": "vicinaehq", "repo": "vicinae", - "rev": "9d30e33b14248ad2f8b8bc55f488f1f552b8fec0", + "rev": "b79669006c4e49e32f2ae889c1294cd62c8071d5", "type": "github" }, "original": { @@ -1471,11 +1471,11 @@ ] }, "locked": { - "lastModified": 1767502237, - "narHash": "sha256-rRrn9I4H692troUl5pBtE3Y5mG2msSMU/2ro7+ZQrFM=", + "lastModified": 1767568852, + "narHash": "sha256-6s8hL3YX9zAq2T7qvcwwzaEVwc9MEYbW+C2LcAAQfbk=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "e3efa5e2b53982f985044062c98426ec75d6695b", + "rev": "350c729b261e6f5529460140a5f0943dd4c5e156", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index d9ebd3b..86c60e2 100755 --- a/flake.nix +++ b/flake.nix @@ -26,8 +26,8 @@ url = "github:AvengeMedia/dgop"; inputs.nixpkgs.follows = "nixpkgs"; }; - dms = { - url = "github:AvengeMedia/DankMaterialShell"; + dms = { + url = "github:AvengeMedia/DankMaterialShell"; inputs.nixpkgs.follows = "nixpkgs"; inputs.dgop.follows = "dgop"; }; @@ -64,7 +64,7 @@ url = "github:vicinaehq/vicinae"; #inputs.nixpkgs.follows = "nixpkgs"; }; - # ... your existing inputs ... + # ... your existing inputs ... jovian = { url = "github:Jovian-Experiments/Jovian-NixOS"; inputs.nixpkgs.follows = "nixpkgs"; @@ -78,7 +78,13 @@ }@inputs: let system = "x86_64-linux"; - pkgs = nixpkgs.legacyPackages.${system}; + #pkgs = nixpkgs.legacyPackages.${system}; + pkgs = import nixpkgs { + system = "x86_64-linux"; # or your system + config = { + allowUnfree = true; + }; + }; #Avalable options are ["niri" "river" "hyprland" "all"] window_manager = "hyprland"; in diff --git "a/home/\\" "b/home/\\" new file mode 100644 index 0000000..58bf2c0 --- /dev/null +++ "b/home/\\" @@ -0,0 +1,303 @@ +{ + config, + lib, + pkgs, + inputs, + ... +}: +let + # hyprlock = pkgs.callPackage ../../universal/personalPKGS/hyprlock.nix {}; + # hypridle = pkgs.callPackage ../../universal/personalPKGS/hypridle.nix {}; + + defaultProfile = { + id = 0; + name = "default"; + isDefault = true; + }; +in +{ + imports = [ + inputs.zen-browser.homeModules.beta + inputs.caelestia.homeManagerModules.default + inputs.vicinae.homeManagerModules.default + ]; + + programs = { + zen-browser = { + enable = true; + profiles.default = defaultProfile; + }; + + firefox = { + enable = true; + profiles.default = defaultProfile; + }; + + nix-index = { + enable = true; + enableZshIntegration = true; + }; + lazygit.enable = true; + + vscode = { + enable = true; + + # Key fix: don’t let the CLI touch ~/.vscode/extensions + mutableExtensionsDir = false; + + # (Optional but nice) Use a build with a stable headless CLI: + # package = pkgs.vscodium; # or keep pkgs.vscode + + profiles.default = { + extensions = with pkgs.vscode-extensions; [ + platformio.platformio-vscode-ide + ]; + + # Optional: keep Code from trying to self-update + # userSettings = { + # "update.mode" = "none"; + # "extensions.autoUpdate" = false; + # }; + }; + + # Optional (older HM versions expose these at top-level): + # enableUpdateCheck = false; + # enableExtensionUpdateCheck = false; + }; + + }; + + services.vicinae = { + enable = true; # default: false + systemd = { + enable = true; + environment = { + USE_LAYER_SHELL = 1; + }; + }; + #package = # specify package to use here. Can be omitted. + # Installing (vicinae) extensions declaratively + #settings = { + # faviconService = "twenty"; # twenty | google | none + # font.size = 11; + # popToRootOnClose = false; + # rootSearch.searchFiles = false; + # theme.name = "vicinae-dark"; + # window = { + # csd = true; + # opacity = 0.95; + # rounding = 10; + # }; + #}; + #extensions = [ + # (inputs.vicinae.mkVicinaeExtension.${pkgs.stdenv.hostPlatform.system} { + # inherit pkgs; + # name = "extension-name"; + # src = pkgs.fetchFromGitHub { + # # You can also specify different sources other than github + # owner = "repo-owner"; + # repo = "repo-name"; + # rev = "v1.0"; # If the extension has no releases use the latest commit hash + # # You can get the sha256 by rebuilding once and then copying the output hash from the error message + # sha256 = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; + # }; # If the extension is in a subdirectory you can add ` + "/subdir"` between the brace and the semicolon here + # }) + #]; + }; + + qt.enable = true; + # qt.style = "gtk2"; + # qt.platformTheme = "qt5ct"; + + nixpkgs = { + config = { + allowUnfree = true; + permittedInsecurePackages = [ + "freeimage-unstable-2021-11-01" + "qtwebengine-5.15.19" + ]; + }; + }; + + services.kdeconnect.enable = true; + pkgs = import inputs.nixpkgs { + config = { + android_sdk.accept_license = true; # Accept Android SDK license + # allowUnfree = true; # Uncomment if you encounter unfree issues with android-studio-full + }; + }; + + home.packages = with pkgs; [ + ############################ + # Shells & Terminals + ############################ + alacritty + zsh + + ############################ + # CLI Shit + ############################ + atuin + + ############################ + # System Utilities + ############################ + app2unit + brightnessctl + ddcutil + duf + libnotify + lm_sensors + macchina + rm-improved + xarchiver + xdg-user-dirs + + ############################ + # Monitoring & TUI Apps + ############################ + btop + cava + + ############################ + # Wayland / Desktop Tools + ############################ + grim + hyprpaper + hyprpicker + mangohud + rofi + slurp + swappy + wf-recorder + + ############################ + # Audio / Media Tools + ############################ + openai-whisper + pamixer + playerctl + alsa-utils + + ############################ + # Browsers & Web + ############################ + brave + firefox + ladybird + wgnord + + ############################ + # Communication & Sharing + ############################ + #element-desktop + localsend + thunderbird + + ############################ + # Documents & Viewers + ############################ + libreoffice + libreoffice-fresh + zathura + + ############################ + # Media Players & Imaging + ############################ + imv + mpv + #upscaler + youtube-music + libsixel + + ############################ + # Development Toolchains + ############################ + gdb + nodejs_20 + platformio + rustc + rustup + zed-editor + android-studio-full + + # Language tooling from inputs + #inputs.qs-qml.packages.${pkgs.stdenv.hostPlatform.system}.qml-ts-mode + #inputs.qs-qml.packages.${pkgs.stdenv.hostPlatform.system}.tree-sitter-qmljs + + ############################ + # Game Dev / Engines / Creative + ############################ + blender-hip + godot_4 + freecad + + ############################ + # Emulation + ############################ + fuse + fuse-emulator + fuse3 + + ############################ + # Android Tools + ############################ + android-tools + scrcpy + + ############################ + # Gaming & Launchers + ############################ + dualsensectl + gamemode + goverlay + (pkgs.heroic.override { + extraPkgs = pkgs: [ pkgs.gamescope ]; # pulls in the real package + }) + prismlauncher + protonup-qt + wineWowPackages.stable + mangayomi + rink + protontricks + + abaddon + + ############################ + # KDE / File Management + ############################ + kdePackages.qt6ct + kdePackages.baloo # new + kdePackages.baloo-widgets # new + kdePackages.dolphin + kdePackages.ffmpegthumbs # new + kdePackages.kdegraphics-mobipocket # new + kdePackages.kdegraphics-thumbnailers # new + kdePackages.kdesdk-thumbnailers # new + kdePackages.kimageformats # new + kdePackages.kio + kdePackages.kio-extras + # kdePackages.breeze-icons + # kdePackages.dolphin-plugins + # kdePackages.kde-cli-tools + # resvg # new + adwaita-icon-theme + hicolor-icon-theme + qt6.qtsvg + + adw-gtk3 + pywalfox-native + + ############################ + # Experimental (inputs) + ############################ + #inputs.ladybird.packages."${pkgs.stdenv.hostPlatform.system}".ladybird + #inputs.hyprlauncher.packages.${pkgs.stdenv.hostPlatform.system}.default + + ############################ + # Blockchain (inputs) + ############################ + #inputs.caelestia-cli.packages.${pkgs.stdenv.hostPlatform.system}.caelestia-cli + #inputs.caelestia.packages.${pkgs.stdenv.hostPlatform.system}.caelestia-shell + ]; +} diff --git a/home/homePkgs.nix b/home/homePkgs.nix index a02aec2..330f774 100755 --- a/home/homePkgs.nix +++ b/home/homePkgs.nix @@ -69,8 +69,12 @@ in services.vicinae = { enable = true; # default: false - autoStart = true; # default: true - useLayerShell = false; + systemd = { + enable = true; + environment = { + USE_LAYER_SHELL = 1; + }; + }; #package = # specify package to use here. Can be omitted. # Installing (vicinae) extensions declaratively #settings = { @@ -108,6 +112,7 @@ in nixpkgs = { config = { allowUnfree = true; + android_sdk.accept_license = true; permittedInsecurePackages = [ "freeimage-unstable-2021-11-01" "qtwebengine-5.15.19" @@ -209,7 +214,7 @@ in rustc rustup zed-editor - + android-studio-full # Language tooling from inputs #inputs.qs-qml.packages.${pkgs.stdenv.hostPlatform.system}.qml-ts-mode #inputs.qs-qml.packages.${pkgs.stdenv.hostPlatform.system}.tree-sitter-qmljs @@ -250,6 +255,8 @@ in rink protontricks + abaddon + ############################ # KDE / File Management ############################ diff --git a/system/services.nix b/system/services.nix index ee1efc2..0268e35 100755 --- a/system/services.nix +++ b/system/services.nix @@ -136,7 +136,7 @@ # Sunshine (only on PC) services.sunshine = lib.mkIf (systemName == "pc") { - enable = true; + enable = false; settings = { sunshine_name = "nixos"; port = 47989; diff --git a/system/specialisation/main-system.nix b/system/specialisation/main-system.nix index 0c6cf79..57ad202 100644 --- a/system/specialisation/main-system.nix +++ b/system/specialisation/main-system.nix @@ -34,6 +34,7 @@ in compositor.name = "hyprland"; # Or "hyprland" or "sway" configHome = "${config.users.users.mrfluffy.home}"; }; + #services.displayManager.cosmic-greeter.enable = true; ############################################################################## # Desktop / WM @@ -42,7 +43,6 @@ in qt = { enable = true; - # style = "gtk2"; platformTheme = "qt5ct"; }; @@ -64,6 +64,9 @@ in enable = useHypr; package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; }; + #services.desktopManager.cosmic = { + # enable = true; + #}; # X11 base (kept enabled for keymap + DM if needed) services.xserver = { diff --git a/system/specialisation/steam.nix b/system/specialisation/steam.nix index 53caf37..02e4733 100644 --- a/system/specialisation/steam.nix +++ b/system/specialisation/steam.nix @@ -7,6 +7,9 @@ { boot = { + kernelModules = lib.mkForce [ + "cec" + ]; kernelParams = lib.mkForce [ "ipv6e=1" "quiet" @@ -25,40 +28,62 @@ services.seatd.enable = true; # A user service that runs once the graphical session (Steam/GameScope) is ready - #systemd.user.services.cec-tv-on = { - # description = "Turn on TV via HDMI-CEC when entering Steam specialisation"; - # wantedBy = [ "graphical-session.target" ]; - # after = [ "graphical-session.target" ]; - # serviceConfig = { - # Type = "oneshot"; - # RemainAfterExit = true; - # ExecStart = toString ( - # pkgs.writeShellScript "cec-tv-on.sh" '' - # # Wait a moment for the HDMI link to settle - # sleep 3 + systemd.services.cec-tv-control = { + description = "Control TV via HDMI-CEC (turn on early, turn off on shutdown)"; + wantedBy = [ "multi-user.target" ]; - # # Turn on the TV and set it as active source (most TVs understand this) - # ${pkgs.libcec}/bin/cec-client -s -d 1 <