diff --git a/systems/artemision/desktop.nix b/systems/artemision/desktop.nix
index 6094994..a8e4065 100644
--- a/systems/artemision/desktop.nix
+++ b/systems/artemision/desktop.nix
@@ -8,6 +8,7 @@
enable = true;
xwayland.enable = true;
};
+ hyprlock.enable = true;
gnupg.agent = {
enable = true;
#pinentryPackage = pkgs.pinentry-rofi;
@@ -54,6 +55,13 @@
};
};
+ powerManagement = {
+ enable = true;
+ resumeCommands = ''
+ ${pkgs.hyprlock}/bin/hyprlock -c /home/alice/.config/hypr/hyprlock.conf
+ '';
+ };
+
environment.systemPackages = with pkgs; [
libsForQt5.qt5.qtwayland
qt6.qtwayland
diff --git a/users/alice/home/doom/custom.el b/users/alice/home/doom/custom.el
index 358c338..12a953b 100644
--- a/users/alice/home/doom/custom.el
+++ b/users/alice/home/doom/custom.el
@@ -19,3 +19,6 @@
(setq! lsp-enable-suggest-server-download nil)
;; (keychain-refresh-environment)
+
+(setq! lsp-nix-nil-max-mem 20000)
+(setq! lsp-nix-nil-formatter ["nixfmt"])
diff --git a/users/alice/home/hypr/default.nix b/users/alice/home/hypr/default.nix
index 09f1d5d..04280e6 100644
--- a/users/alice/home/hypr/default.nix
+++ b/users/alice/home/hypr/default.nix
@@ -9,4 +9,9 @@
xdg.configFile = {
"hypr/hyprland.conf".source = ./hyprland.conf;
};
+
+ imports = [
+ ./hyprlock.nix
+ ./hypridle.nix
+ ];
}
diff --git a/users/alice/home/hypr/hypridle.nix b/users/alice/home/hypr/hypridle.nix
new file mode 100644
index 0000000..1d6341f
--- /dev/null
+++ b/users/alice/home/hypr/hypridle.nix
@@ -0,0 +1,47 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+
+{
+ services.hypridle = {
+ enable = true;
+ settings = {
+ general = {
+ lock_cmd = "pidof hyprlock || hyprlock --immediate --immediate-render"; # avoid starting multiple hyprlock instances.
+ before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
+ after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
+ };
+
+ listener = [
+ {
+ timeout = 150; # 2.5min.
+ on-timeout = "brightnessctl -s set 1"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
+ on-resume = "brightnessctl -r"; # monitor backlight restore.
+ }
+ # turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
+ {
+ timeout = 150; # 2.5min.
+ on-timeout = "brightnessctl -sd rgb:kbd_backlight set 0"; # turn off keyboard backlight.
+ on-resume = "brightnessctl -rd rgb:kbd_backlight"; # turn on keyboard backlight.
+ }
+ {
+ timeout = 300; # 5min
+ on-timeout = "loginctl lock-session"; # lock screen when timeout has passed
+
+ }
+ {
+ timeout = 330; # 5.5min
+ on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
+ on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
+ }
+ {
+ timeout = 1800; # 30min
+ on-timeout = "systemctl suspend"; # suspend pc
+ }
+ ];
+ };
+ };
+}
diff --git a/users/alice/home/hypr/hyprlock.nix b/users/alice/home/hypr/hyprlock.nix
new file mode 100644
index 0000000..b90b2e6
--- /dev/null
+++ b/users/alice/home/hypr/hyprlock.nix
@@ -0,0 +1,84 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+
+{
+ programs.hyprlock = {
+ enable = true;
+ settings = {
+ general = {
+ immediate_render = true;
+ no_fade_in = true;
+ };
+ background = {
+ monitor = "";
+ #path = /home/me/someImage.png # supports png, jpg, webp (no animations, though)
+ path = "screenshot";
+ color = "rgba(25, 20, 20, 1.0)";
+
+ # all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
+ blur_passes = 3; # 0 disables blurring
+ blur_size = 7;
+ noise = 1.17e-2;
+ contrast = 0.8916;
+ brightness = 0.8172;
+ vibrancy = 0.1696;
+ vibrancy_darkness = 0.0;
+ };
+
+ image = {
+ monitor = "";
+ path = "/home/alice/Pictures/PXL_20240408_192537608-EDIT.jpg";
+ size = 350; # lesser side if not 1:1 ratio
+ rounding = -1; # negative values mean circle
+ border_size = 4;
+ border_color = "rgb(221, 221, 221)";
+ rotate = 0; # degrees, counter-clockwise
+ reload_time = -1; # seconds between reloading, 0 to reload with SIGUSR2
+ reload_cmd = ""; # command to get new path. if empty, old path will be used. don't run "follow" commands like tail -F
+
+ position = "0, 100";
+ halign = "center";
+ valign = "center";
+ };
+
+ input-field = {
+ monitor = "";
+ size = "400, 50";
+ outline_thickness = 3;
+ dots_size = 0.33; # Scale of input-field height, 0.2 - 0.8
+ dots_spacing = 0.15; # Scale of dots' absolute size, -1.0 - 1.0
+ dots_center = false;
+ dots_rounding = -1; # -1 default circle, -2 follow input-field rounding
+ dots_fade_time = 200; # Milliseconds until a dot fully fades in
+ dots_text_format = ""; # Text character used for the input indicator. Leave empty for a rectangle that will be rounded via dots_rounding (default).
+ outer_color = "rgb(151515)";
+ inner_color = "rgb(200, 200, 200)";
+ font_color = "rgb(10, 10, 10)";
+ font_family = "Noto Sans"; # Font used for placeholder_text, fail_text and dots_text_format.
+ fade_on_empty = false;
+ fade_timeout = 1000; # Milliseconds before fade_on_empty is triggered.
+ placeholder_text = "Input Password..."; # Text rendered in the input box when it's empty.
+ hide_input = false;
+ rounding = -1; # -1 means complete rounding (circle/oval)
+ check_color = "rgb(204, 136, 34)";
+ fail_color = "rgb(204, 34, 34)"; # if authentication failed, changes outer_color and fail message color
+ fail_text = "$FAIL ($ATTEMPTS)"; # can be set to empty
+ fail_timeout = 2000; # milliseconds before fail_text and fail_color disappears
+ fail_transition = 300; # transition time in ms between normal outer_color and fail_color
+ capslock_color = -1;
+ numlock_color = -1;
+ bothlock_color = -1; # when both locks are active. -1 means don't change outer color (same for above)
+ invert_numlock = false; # change color if numlock is off
+ swap_font_color = false; # see below
+
+ position = "0, -200";
+ halign = "center";
+ valign = "center";
+ };
+ };
+ };
+}