From e85f77b1ab197e6bb4f7c8861305a02db2ea38df Mon Sep 17 00:00:00 2001 From: Mihai Fufezan Date: Thu, 22 Feb 2024 21:37:49 +0200 Subject: [PATCH] sway{idle,lock} -> hypr{idle,lock} --- flake.lock | 110 ++++++++++++++++-- flake.nix | 10 ++ home/default.nix | 2 + home/profiles/io/default.nix | 2 +- home/programs/wayland/default.nix | 2 +- home/programs/wayland/hyprland/default.nix | 4 - home/programs/wayland/hyprland/settings.nix | 2 +- home/programs/wayland/hyprlock.nix | 60 ++++++++++ home/programs/wayland/swaylock.nix | 39 ------- .../wayland/{swayidle.nix => hypridle.nix} | 26 ++--- system/core/security.nix | 2 +- 11 files changed, 186 insertions(+), 73 deletions(-) create mode 100644 home/programs/wayland/hyprlock.nix delete mode 100644 home/programs/wayland/swaylock.nix rename home/services/wayland/{swayidle.nix => hypridle.nix} (51%) diff --git a/flake.lock b/flake.lock index a4cc6ca2..0329b023 100644 --- a/flake.lock +++ b/flake.lock @@ -654,21 +654,42 @@ "url": "https://flakehub.com/f/nix-community/home-manager/0.1.%2A.tar.gz" } }, + "hypridle": { + "inputs": { + "hyprlang": "hyprlang", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708597999, + "narHash": "sha256-Glwi2jMjT/fCMbRGun+zoZOE6nQ053XfFfFuqi23+ds=", + "owner": "hyprwm", + "repo": "hypridle", + "rev": "b85722e41aeb9925f248e9b3fe8427475cb1eb6b", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hypridle", + "type": "github" + } + }, "hyprland": { "inputs": { "hyprland-protocols": "hyprland-protocols", - "hyprlang": "hyprlang", + "hyprlang": "hyprlang_2", "nixpkgs": "nixpkgs_4", "systems": "systems_5", "wlroots": "wlroots", "xdph": "xdph" }, "locked": { - "lastModified": 1708272248, - "narHash": "sha256-EMGPzNg9422NEoFJUfidRHPokX2+UWErX9qSghpfS/g=", + "lastModified": 1708623203, + "narHash": "sha256-4/q2/O+A8o/UO1D9fOU8Q/c+JacZkFJb2noFjN6K66c=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "301b48b74087cc59753ffa144b215540e6f82831", + "rev": "d9757b61bfb7dcfaf3d903092435a1aaff52b7ed", "type": "github" }, "original": { @@ -743,6 +764,27 @@ } }, "hyprlang": { + "inputs": { + "nixpkgs": [ + "hypridle", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708212860, + "narHash": "sha256-nW3Zrhh9RJcMTvOcXAaKADnJM/g6tDf3121lJtTHnYo=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "11d5ccda071c153dfdc18ef65338956a51cef96a", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprlang_2": { "inputs": { "nixpkgs": [ "hyprland", @@ -763,7 +805,7 @@ "type": "github" } }, - "hyprlang_2": { + "hyprlang_3": { "inputs": { "nixpkgs": [ "hyprland", @@ -785,7 +827,28 @@ "type": "github" } }, - "hyprlang_3": { + "hyprlang_4": { + "inputs": { + "nixpkgs": [ + "hyprlock", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708212860, + "narHash": "sha256-nW3Zrhh9RJcMTvOcXAaKADnJM/g6tDf3121lJtTHnYo=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "11d5ccda071c153dfdc18ef65338956a51cef96a", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprlang_5": { "inputs": { "nixpkgs": "nixpkgs_5" }, @@ -803,9 +866,30 @@ "type": "github" } }, + "hyprlock": { + "inputs": { + "hyprlang": "hyprlang_4", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708592847, + "narHash": "sha256-dUyFOfMFfH1KproGJcGjOASLF6t2UkkcmTbj49lpauM=", + "owner": "hyprwm", + "repo": "hyprlock", + "rev": "f411d9d632182fe7b23a2796698e6f857badf0af", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlock", + "type": "github" + } + }, "hyprpaper": { "inputs": { - "hyprlang": "hyprlang_3", + "hyprlang": "hyprlang_5", "nixpkgs": "nixpkgs_6" }, "locked": { @@ -1363,9 +1447,11 @@ "gross": "gross", "helix": "helix", "hm": "hm", + "hypridle": "hypridle", "hyprland": "hyprland", "hyprland-contrib": "hyprland-contrib", "hyprland-plugins": "hyprland-plugins", + "hyprlock": "hyprlock", "hyprpaper": "hyprpaper", "kmonad": "kmonad", "lanzaboote": "lanzaboote", @@ -1644,18 +1730,18 @@ "flake": false, "locked": { "host": "gitlab.freedesktop.org", - "lastModified": 1706359063, - "narHash": "sha256-5HUTG0p+nCJv3cn73AmFHRZdfRV5AD5N43g8xAePSKM=", + "lastModified": 1708558866, + "narHash": "sha256-Mz6hCtommq7RQfcPnxLINigO4RYSNt23HeJHC6mVmWI=", "owner": "wlroots", "repo": "wlroots", - "rev": "00b869c1a96f300a8f25da95d624524895e0ddf2", + "rev": "0cb091f1a2d345f37d2ee445f4ffd04f7f4ec9e5", "type": "gitlab" }, "original": { "host": "gitlab.freedesktop.org", "owner": "wlroots", "repo": "wlroots", - "rev": "00b869c1a96f300a8f25da95d624524895e0ddf2", + "rev": "0cb091f1a2d345f37d2ee445f4ffd04f7f4ec9e5", "type": "gitlab" } }, @@ -1665,7 +1751,7 @@ "hyprland", "hyprland-protocols" ], - "hyprlang": "hyprlang_2", + "hyprlang": "hyprlang_3", "nixpkgs": [ "hyprland", "nixpkgs" diff --git a/flake.nix b/flake.nix index 24ca5ee6..91a4fe81 100644 --- a/flake.nix +++ b/flake.nix @@ -76,6 +76,11 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + hypridle = { + url = "github:hyprwm/hypridle"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + hyprland.url = "github:hyprwm/Hyprland"; hyprland-contrib = { @@ -88,6 +93,11 @@ inputs.hyprland.follows = "hyprland"; }; + hyprlock = { + url = "github:hyprwm/hyprlock"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + hyprpaper.url = "github:hyprwm/hyprpaper"; kmonad = { diff --git a/home/default.nix b/home/default.nix index 92282d74..d44cba48 100644 --- a/home/default.nix +++ b/home/default.nix @@ -9,6 +9,8 @@ ./terminal inputs.matugen.nixosModules.default inputs.nix-index-db.hmModules.nix-index + inputs.hyprlock.homeManagerModules.default + inputs.hypridle.homeManagerModules.default self.nixosModules.theme ]; diff --git a/home/profiles/io/default.nix b/home/profiles/io/default.nix index 5ab9895a..d3c3a1e1 100644 --- a/home/profiles/io/default.nix +++ b/home/profiles/io/default.nix @@ -27,7 +27,7 @@ # wayland-specific ../../services/wayland/hyprpaper.nix - ../../services/wayland/swayidle.nix + ../../services/wayland/hypridle.nix # terminal emulators ../../terminal/emulators/foot.nix diff --git a/home/programs/wayland/default.nix b/home/programs/wayland/default.nix index 2f5e1883..484d35aa 100644 --- a/home/programs/wayland/default.nix +++ b/home/programs/wayland/default.nix @@ -7,7 +7,7 @@ { imports = [ ./hyprland - ./swaylock.nix + ./hyprlock.nix ./wlogout.nix ]; diff --git a/home/programs/wayland/hyprland/default.nix b/home/programs/wayland/hyprland/default.nix index d5f92660..628a88e7 100644 --- a/home/programs/wayland/hyprland/default.nix +++ b/home/programs/wayland/hyprland/default.nix @@ -1,6 +1,5 @@ { inputs, - lib, pkgs, ... }: { @@ -15,9 +14,6 @@ inputs.hyprland-contrib.packages.${pkgs.system}.grimblast ]; - # start swayidle as part of hyprland, not sway - systemd.user.services.swayidle.Install.WantedBy = lib.mkForce ["hyprland-session.target"]; - # enable hyprland wayland.windowManager.hyprland = { enable = true; diff --git a/home/programs/wayland/hyprland/settings.nix b/home/programs/wayland/hyprland/settings.nix index 9d18ee1c..db7066fc 100644 --- a/home/programs/wayland/hyprland/settings.nix +++ b/home/programs/wayland/hyprland/settings.nix @@ -13,7 +13,7 @@ in { # set cursor for HL itself "hyprctl setcursor ${pointer.name} ${toString pointer.size}" "systemctl --user start clight" - "swaylock" + "hyprlock" ]; general = { diff --git a/home/programs/wayland/hyprlock.nix b/home/programs/wayland/hyprlock.nix new file mode 100644 index 00000000..ea0c44a6 --- /dev/null +++ b/home/programs/wayland/hyprlock.nix @@ -0,0 +1,60 @@ +{config, ...}: let + variant = config.theme.name; + c = config.programs.matugen.theme.colors.colors.${variant}; + + font_family = "Inter"; +in { + programs.hyprlock = { + enable = true; + + general.hide_cursor = false; + + backgrounds = [ + { + monitor = ""; + path = "${config.home.homeDirectory}/wall.png"; + } + ]; + + input-fields = [ + { + monitor = "eDP-1"; + + size = { + width = 300; + height = 50; + }; + + outline_thickness = 2; + + outer_color = "rgb(${c.primary})"; + inner_color = "rgb(${c.on_primary_container})"; + font_color = "rgb(${c.primary_container})"; + + fade_on_empty = false; + placeholder_text = ''Password...''; + + dots_spacing = 0.3; + dots_center = true; + } + ]; + + labels = [ + { + monitor = ""; + text = "$TIME"; + inherit font_family; + font_size = 50; + color = "rgb(${c.primary})"; + + position = { + x = 0; + y = 80; + }; + + valign = "center"; + halign = "center"; + } + ]; + }; +} diff --git a/home/programs/wayland/swaylock.nix b/home/programs/wayland/swaylock.nix deleted file mode 100644 index 46a1e79a..00000000 --- a/home/programs/wayland/swaylock.nix +++ /dev/null @@ -1,39 +0,0 @@ -{ - config, - pkgs, - ... -}: { - programs.swaylock = { - enable = true; - package = pkgs.swaylock-effects; - settings = let - c = config.programs.matugen.theme.colors.colors.${config.theme.name}; - in { - clock = true; - font = "Inter"; - image = config.theme.wallpaper; - indicator = true; - - bs-hl-color = c.error; - key-hl-color = c.tertiary; - separator-color = c.on_primary; - text-color = c.on_primary; - - inside-color = c.primary; - line-color = c.primary; - ring-color = c.on_primary; - - inside-clear-color = c.secondary; - line-clear-color = c.secondary; - ring-clear-color = c.on_primary; - - inside-ver-color = c.primary; - line-ver-color = c.primary; - ring-ver-color = c.on_primary; - - inside-wrong-color = c.error; - line-wrong-color = c.error; - ring-wrong-color = c.on_primary; - }; - }; -} diff --git a/home/services/wayland/swayidle.nix b/home/services/wayland/hypridle.nix similarity index 51% rename from home/services/wayland/swayidle.nix rename to home/services/wayland/hypridle.nix index f11dc8d0..7bb1b714 100644 --- a/home/services/wayland/swayidle.nix +++ b/home/services/wayland/hypridle.nix @@ -1,4 +1,9 @@ -{pkgs, ...}: let +{ + pkgs, + lib, + config, + ... +}: let suspendScript = pkgs.writeShellScript "suspend-script" '' ${pkgs.pipewire}/bin/pw-cli i all | ${pkgs.ripgrep}/bin/rg running # only suspend if audio isn't running @@ -8,22 +13,15 @@ ''; in { # screen idle - services.swayidle = { + services.hypridle = { enable = true; - events = [ - { - event = "before-sleep"; - command = "${pkgs.systemd}/bin/loginctl lock-session"; - } - { - event = "lock"; - command = "${pkgs.swaylock-effects}/bin/swaylock"; - } - ]; - timeouts = [ + beforeSleepCmd = "${pkgs.systemd}/bin/loginctl lock-session"; + lockCmd = lib.getExe config.programs.hyprlock.package; + + listeners = [ { timeout = 330; - command = suspendScript.outPath; + onTimeout = suspendScript.outPath; } ]; }; diff --git a/system/core/security.nix b/system/core/security.nix index c60c3173..b6aba039 100644 --- a/system/core/security.nix +++ b/system/core/security.nix @@ -45,7 +45,7 @@ security = { # allow wayland lockers to unlock the screen - pam.services.swaylock.text = "auth include login"; + pam.services.hyprlock.text = "auth include login"; # userland niceness rtkit.enable = true;