diff --git a/modules/misc/news/2025/08/2025-08-16_03-35-44.nix b/modules/misc/news/2025/08/2025-08-16_03-35-44.nix new file mode 100644 index 000000000..d09b4e7ff --- /dev/null +++ b/modules/misc/news/2025/08/2025-08-16_03-35-44.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: +{ + time = "2025-08-16T01:35:44+00:00"; + condition = pkgs.stdenv.hostPlatform.isLinux; + message = '' + A new module is available: 'programs.hyprshot' + + Hyprshot is an utility to easily take screenshot in Hyprland using your mouse. + It allows taking screenshots of windows, regions and monitors which are saved + to a folder of your choosing and copied to your clipboard. + ''; +} diff --git a/modules/programs/hyprshot.nix b/modules/programs/hyprshot.nix new file mode 100644 index 000000000..5e9aebd16 --- /dev/null +++ b/modules/programs/hyprshot.nix @@ -0,0 +1,38 @@ +{ + config, + pkgs, + lib, + ... +}: +let + cfg = config.programs.hyprshot; +in +{ + meta.maintainers = with lib.hm.maintainers; [ + joker9944 + ]; + + options.programs.hyprshot = { + enable = lib.mkEnableOption "Hyprshot the Hyprland screenshot utility"; + package = lib.mkPackageOption pkgs "hyprshot" { nullable = true; }; + saveLocation = lib.mkOption { + type = lib.types.nullOr lib.types.str; + default = null; + example = "$HOME/Pictures/Screenshots"; + description = '' + Set the `$HYPRSHOT_DIR` environment variable to the given location. + + Hypershot will save screenshots to the first expression that resolves: + - `$HYPRSHOT_DIR` + - `$XDG_PICTURES_DIR` + - `$(xdg-user-dir PICTURES)` + ''; + }; + }; + + config.home = lib.mkIf cfg.enable { + packages = lib.mkIf (cfg.package != null) [ cfg.package ]; + + sessionVariables = lib.mkIf (cfg.saveLocation != null) { HYPRSHOT_DIR = cfg.saveLocation; }; + }; +}