diff --git a/README.md b/README.md index bb16951..d7ce3b7 100755 --- a/README.md +++ b/README.md @@ -18,10 +18,11 @@ each host should have these files: ## todo - multi architecture configuration ([nix-systems](https://github.com/nix-systems/nix-systems)?) - - divide steam and gamemode? - hidpi option ? mostly auto these days though - better theming for hyprlock, rofi, dunst (accent for hyprlock & dunst, variants for rofi) - some way for border radius, border, tranparency theme options - tags for pip and popups in hyprland config - - make wl-clip-persist, polkit agent, and networkmanager applet systemd services? + - make wl-clip-persist and networkmanager applet systemd services? - gtk cursors are MESSED UP. top priority rn + - niri.. yum + - do lockscreen better somehow diff --git a/assets/lockscreen.jpg b/assets/lockscreen.jpg new file mode 100644 index 0000000..615e807 Binary files /dev/null and b/assets/lockscreen.jpg differ diff --git a/assets/lockscreen.png b/assets/lockscreen.png deleted file mode 100644 index c42735e..0000000 Binary files a/assets/lockscreen.png and /dev/null differ diff --git a/flake.lock b/flake.lock index 9cde65d..927b5ab 100644 --- a/flake.lock +++ b/flake.lock @@ -86,11 +86,11 @@ "flake-compat_2": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1732722421, + "narHash": "sha256-HRJ/18p+WoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "9ed2ac151eada2306ca8c418ebd97807bb08f6ac", "type": "github" }, "original": { @@ -706,11 +706,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1720957393, - "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", + "lastModified": 1732837521, + "narHash": "sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", + "rev": "970e93b9f82e2a0f3675757eb0bfc73297cc6370", "type": "github" }, "original": { @@ -810,11 +810,11 @@ "nixpkgs": "nixpkgs_6" }, "locked": { - "lastModified": 1721250245, - "narHash": "sha256-/JW3WnRLpfz8j+9Zc9YkK63i8DjHrKwv9PWKIMz3MVI=", + "lastModified": 1733561910, + "narHash": "sha256-TkyWMLnLd5QhAlfAGtuU3n8Gtl2Gp4+8Ye/rE4hs46A=", "owner": "Alexays", "repo": "Waybar", - "rev": "15e1547661bfc5fe9b3d45bb0d9cea11cf07db7f", + "rev": "e959f1d2300c5f7fcc818630c9eae59d834024ce", "type": "github" }, "original": { diff --git a/hosts/goopnet-interface/default.nix b/hosts/goopnet-interface/default.nix index d18264d..6a28625 100755 --- a/hosts/goopnet-interface/default.nix +++ b/hosts/goopnet-interface/default.nix @@ -53,6 +53,7 @@ swww.enable = true; gnome-keyring.enable = true; + mate-polkit.enable = true; dunst.enable = true; rofi.enable = true; nwg-drawer.enable = true; @@ -76,6 +77,7 @@ system.fish.enable = true; system.syncthing.enable = true; system.flatpak.enable = true; + system.mpv.enable = true; # editors editors.micro.enable = true; editors.vscode.enable = true; @@ -84,12 +86,11 @@ # distractions distractions.discord.enable = true; distractions.discord.vesktop = true; + distractions.gamemode.enable = true; distractions.steam.enable = true; # tools tools.gpg.enable = true; - tools.mpv.enable = true; tools.rbw.enable = true; - tools.noisetorch.enable = true; }; }; } diff --git a/modules/desktop/dunst.nix b/modules/desktop/dunst.nix index 1bef859..9620440 100644 --- a/modules/desktop/dunst.nix +++ b/modules/desktop/dunst.nix @@ -70,17 +70,17 @@ in { }; urgency_low = { - background = "#${base00}cc"; + background = "#${base00}FF"; foreground = "#${base05}"; }; urgency_normal = { - background = "#${base00}cc"; + background = "#${base00}FF"; foreground = "#${base05}"; }; urgency_critical = { - background = "#${base00}cc"; + background = "#${base00}FF"; foreground = "#${base05}"; frame_color = "#${base08}"; # base16 spec says red }; diff --git a/modules/desktop/hypridle.nix b/modules/desktop/hypridle.nix index 100ae68..49ed686 100644 --- a/modules/desktop/hypridle.nix +++ b/modules/desktop/hypridle.nix @@ -15,9 +15,7 @@ in { config = mkIf cfg.enable { hm.home.packages = [ cfg.package ]; - hm.services.hypridle = let - hyprctl = "${config.modules.desktop.hyprland.package}/bin/hyprctl"; - in { + hm.services.hypridle = { enable = true; package = cfg.package; @@ -27,7 +25,6 @@ in { unlock_cmd = "${pkgs.procps}/bin/pkill -USR1 hyprlock"; before_sleep_cmd = "${pkgs.systemd}/bin/loginctl lock-session"; # lock the screen before sleeping - after_sleep_cmd = "${hyprctl} dispatch dpms on"; # turn on the screen to avoid moving mouse/pressing key }; listener = [ @@ -41,11 +38,6 @@ in { on-timeout = "${lib.getExe pkgs.brightnessctl} -d '*:kbd_backlight' -s set 0"; # turn off keyboard backlight, save state on-resume = "${lib.getExe pkgs.brightnessctl} -d '*:kbd_backlight' -r"; # restore previous keyboard backlight state } - { - timeout = 90; # 1.5 min - on-timeout = "${hyprctl} dispatch dpms off"; # turn off screen - on-resume = "${hyprctl} dispatch dpms on"; # turn it back on - } { timeout = 60 * 2; # 2 min on-timeout = "${pkgs.systemd}/bin/loginctl lock-session"; # lock computer @@ -54,7 +46,13 @@ in { timeout = 60 * 15; # 15 min on-timeout = "${pkgs.systemd}/bin/systemctl suspend"; # sleep/suspend } - ]; + ] ++ optional config.modules.desktop.hyprland.enable (let + hyprctl = "${config.modules.desktop.hyprland.package}/bin/hyprctl"; + in { + timeout = 90; # 1.5 min + on-timeout = "${hyprctl} dispatch dpms off"; # turn off screen + on-resume = "${hyprctl} dispatch dpms on"; # turn it back on + }); }; }; }; diff --git a/modules/desktop/hyprland.nix b/modules/desktop/hyprland.nix index 0ae38ad..a6c140a 100644 --- a/modules/desktop/hyprland.nix +++ b/modules/desktop/hyprland.nix @@ -97,14 +97,17 @@ in { mode="$1" case "$mode" in - fullscreen) + screen) mode="output" ;; area) mode="area" ;; + window) + mode="active" + ;; *) - echo "usage: $0 [fullscreen|area]" >&2 + echo "usage: $0 [screen|area|window]" >&2 exit 2 ;; esac @@ -126,17 +129,26 @@ in { ;; esac ''; + pickerScript = pkgs.writeShellScript "color-picker" '' + ${lib.getExe pkgs.zenity} --color-selection --color $(${lib.getExe pkgs.hyprpicker}) + ''; in [ "$mod, Q, killactive, " "$mod, F, togglefloating, " "$mod, P, pseudo, " # dwindle "$mod, J, togglesplit, " # dwindle + "$mod SHIFT, F, fullscreen, " # move focus with mod + arrow keys "$mod, left, movefocus, l" "$mod, right, movefocus, r" "$mod, up, movefocus, u" "$mod, down, movefocus, d" + # move windows with mod + shift + arrow keys + "$mod SHIFT, left, movewindow, l" + "$mod SHIFT, right, movewindow, r" + "$mod SHIFT, up, movewindow, u" + "$mod SHIFT, down, movewindow, d" # example special workspace (scratchpad) "$mod, grave, togglespecialworkspace, magic" @@ -158,9 +170,14 @@ in { # area ", Print, exec, ${screenshotScript} area" "$mod SHIFT, S, exec, ${screenshotScript} area" - # fullscreen - ", Print, exec, ${screenshotScript} fullscreen" - "$mod SHIFT CTRL, S, exec, ${screenshotScript} fullscreen" + # screen + "CTRL, Print, exec, ${screenshotScript} screen" + "$mod SHIFT CTRL, S, exec, ${screenshotScript} screen" + # window + "ALT, Print, exec, ${screenshotScript} window" + "$mod SHIFT ALT, S, exec, ${screenshotScript} window" + # pick color + "$mod SHIFT, C, exec, ${pickerScript}" ", XF86LaunchA, exec, ${screenshotScript} area" ", XF86LaunchB, exec, ${lib.getExe pkgs.rofi-rbw-wayland} -a copy -t password --clear-after 20" @@ -200,7 +217,6 @@ in { exec-once = [ "${lib.getExe pkgs.networkmanagerapplet}" # network applet - "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" # polkit agent "${lib.getExe pkgs.wl-clip-persist} --clipboard regular" # to fix wl clipboards disappearing ]; @@ -343,14 +359,10 @@ in { }; dwindle = { - pseudotile = "yes"; # master swtich for pseudotiling. enabling is mod + P in the keybinds section + pseudotile = "yes"; # master switch for pseudotiling. enabling is mod + P in the keybinds section preserve_split = "yes"; }; - master = { - new_status = "master"; - }; - gestures = { workspace_swipe = true; workspace_swipe_min_speed_to_force = 0; @@ -358,11 +370,17 @@ in { }; misc = { + # disable default eye candy force_default_wallpaper = 0; disable_splash_rendering = true; disable_hyprland_logo = true; + # there is zero reason to have this enabled + # what were they thinking initial_workspace_tracking = 0; + + vfr = true; + vrr = 2; }; }; }; diff --git a/modules/desktop/hyprlock.nix b/modules/desktop/hyprlock.nix index 60e4373..39fe9c8 100644 --- a/modules/desktop/hyprlock.nix +++ b/modules/desktop/hyprlock.nix @@ -33,7 +33,7 @@ in { }; background = [ { - path = toString ../../assets/lockscreen.png; + path = toString ../../assets/lockscreen.jpg; color = "rgb(${base00})"; blur_passes = 3; blur_size = 6; diff --git a/modules/desktop/mate-polkit.nix b/modules/desktop/mate-polkit.nix new file mode 100644 index 0000000..c677c75 --- /dev/null +++ b/modules/desktop/mate-polkit.nix @@ -0,0 +1,31 @@ +{ lib, config, pkgs, ... }: + +with lib; +let + cfg = config.modules.desktop.mate-polkit; +in { + options.modules.desktop.mate-polkit = { + enable = mkEnableOption "Enable the MATE desktop environment polkit authentication agent"; + }; + + config = mkIf cfg.enable { + hm.systemd.user.services.mate-polkit = { + Unit = { + Description = "the MATE desktop environment polkit authentication agent"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; + + Install = { + WantedBy = [ "graphical-session.target" ]; + }; + + Service = { + Type = "simple"; + ExecStart = "${pkgs.mate.mate-polkit}/libexec/polkit-mate-authentication-agent-1"; + Restart = "on-failure"; + RestartSec = 5; + }; + }; + }; +} diff --git a/modules/desktop/themes/catppuccin/default.nix b/modules/desktop/themes/catppuccin/default.nix index e614dd0..1c10baf 100644 --- a/modules/desktop/themes/catppuccin/default.nix +++ b/modules/desktop/themes/catppuccin/default.nix @@ -49,7 +49,7 @@ in { flavor = variant; font = config.modules.desktop.fonts.fonts.sansSerif.family; fontSize = toString config.modules.desktop.fonts.fonts.sansSerif.size; - background = ../../../../assets/lockscreen.png; + background = ../../../../assets/lockscreen.jpg; loginBackground = true; }); }; diff --git a/modules/software/distractions/gamemode.nix b/modules/software/distractions/gamemode.nix new file mode 100644 index 0000000..93ca2d6 --- /dev/null +++ b/modules/software/distractions/gamemode.nix @@ -0,0 +1,26 @@ +{ lib, config, pkgs, ... }: + +with lib; +let + cfg = config.modules.software.distractions.gamemode; +in { + options.modules.software.distractions.gamemode = { + enable = mkEnableOption "Enable Gamemode, a program to optimize your system performance on demand"; + }; + + config = mkIf cfg.enable { + # optimize linux system performance on demand + # https://github.com/FeralInteractive/gamemode + user.extraGroups = [ "gamemode" ]; + programs.gamemode = { + enable = true; + enableRenice = true; + settings = { + general = { + softrealtime = "auto"; + renice = 10; + }; + }; + }; + }; +} diff --git a/modules/software/distractions/steam.nix b/modules/software/distractions/steam.nix index 9164f6c..c0bacdd 100644 --- a/modules/software/distractions/steam.nix +++ b/modules/software/distractions/steam.nix @@ -11,29 +11,6 @@ in { config = mkIf cfg.enable { programs.steam.enable = true; - # optimize linux system performance on demand - # https://github.com/FeralInteractive/gamemode - user.extraGroups = [ "gamemode" ]; - programs.gamemode = { - enable = true; - enableRenice = true; - settings = { - custom = { - start = "${pkgs.libnotify}/bin/notify-send --app-name GameMode 'GameMode started'"; - end = "${pkgs.libnotify}/bin/notify-send --app-name GameMode 'GameMode ended'"; - }; - }; - }; - - programs.gamescope = { - enable = true; - capSysNice = true; - }; - programs.steam.gamescopeSession = { - enable = true; - args = [ "-W 1920" "-H 1080" "-r 60" "--expose-wayland" "-e" ]; - }; - user.packages = [ pkgs.protontricks pkgs.steam-run ]; }; } diff --git a/modules/software/system/fish.nix b/modules/software/system/fish.nix index 1f033d8..847b9e7 100644 --- a/modules/software/system/fish.nix +++ b/modules/software/system/fish.nix @@ -22,8 +22,8 @@ in { libnotify ]; - users.defaultUserShell = pkgs.fish; programs.fish.enable = true; + users.defaultUserShell = pkgs.fish; hm.programs.fish = let colorScript = nix-colors-lib.shellThemeFromScheme { scheme = config.colorScheme; }; in { @@ -33,7 +33,6 @@ in { { name = "grc"; src = grc.src; } { name = "tide"; src = tide.src; } { name = "done"; src = done.src; } - { name = "autopair"; src = autopair.src; } ]; interactiveShellInit = '' diff --git a/modules/software/tools/mpv.nix b/modules/software/system/mpv.nix similarity index 85% rename from modules/software/tools/mpv.nix rename to modules/software/system/mpv.nix index ee45fc7..53bb6b3 100644 --- a/modules/software/tools/mpv.nix +++ b/modules/software/system/mpv.nix @@ -2,9 +2,9 @@ with lib; let - cfg = config.modules.software.tools.mpv; + cfg = config.modules.software.system.mpv; in { - options.modules.software.tools.mpv = { + options.modules.software.system.mpv = { enable = mkEnableOption "Enable mpv, a lightweight video player"; }; diff --git a/modules/software/system/wezterm.nix b/modules/software/system/wezterm.nix index 6242f3f..8a84ee7 100644 --- a/modules/software/system/wezterm.nix +++ b/modules/software/system/wezterm.nix @@ -23,6 +23,7 @@ in { fonts = config.modules.desktop.fonts.fonts; in '' local wezterm = require 'wezterm' + local act = wezterm.action local config = {} @@ -43,6 +44,29 @@ in { font_size = ${toString fonts.sansSerif.size} } + config.mouse_bindings = { + -- Change the default click behavior so that it only selects + -- text and doesn't open hyperlinks + { + event = { Up = { streak = 1, button = 'Left' } }, + mods = 'NONE', + action = act.CompleteSelection 'ClipboardAndPrimarySelection' + }, + -- and make CTRL-Click open hyperlinks + { + event = { Up = { streak = 1, button = 'Left' } }, + mods = 'CTRL', + action = act.OpenLinkAtMouseCursor + }, + -- Disable the 'Down' event of CTRL-Click to avoid weird program behaviors + -- https://wezfurlong.org/wezterm/config/mouse.html#gotcha-on-binding-an-up-event-only + { + event = { Down = { streak = 1, button = 'Left' } }, + mods = 'CTRL', + action = act.Nop + } + } + return config ''; }; diff --git a/modules/software/tools/noisetorch.nix b/modules/software/tools/noisetorch.nix deleted file mode 100644 index 4479532..0000000 --- a/modules/software/tools/noisetorch.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ config, lib, ... }: - -with lib; -let - cfg = config.modules.software.tools.noisetorch; -in { - options.modules.software.tools.noisetorch = { - enable = mkEnableOption "Enable noisetorch, a microphone noise supression tool"; - }; - - config = mkIf cfg.enable { - programs.noisetorch.enable = true; - }; -} diff --git a/packages/wallpapers/img/os_prophets.png b/packages/wallpapers/img/os_prophets.png deleted file mode 100644 index 60de391..0000000 Binary files a/packages/wallpapers/img/os_prophets.png and /dev/null differ diff --git a/packages/wallpapers/img/rw_chimney_canopy.jpg b/packages/wallpapers/img/rw_chimney_canopy.jpg new file mode 100644 index 0000000..615e807 Binary files /dev/null and b/packages/wallpapers/img/rw_chimney_canopy.jpg differ diff --git a/packages/wallpapers/img/rw_garbage_wastes.jpg b/packages/wallpapers/img/rw_garbage_wastes.jpg new file mode 100644 index 0000000..7b61f8d Binary files /dev/null and b/packages/wallpapers/img/rw_garbage_wastes.jpg differ