diff --git a/configuration.nix b/configuration.nix index b08d472..ca9d6a5 100644 --- a/configuration.nix +++ b/configuration.nix @@ -119,8 +119,8 @@ virtualisation.virtualbox.host.enableKvm = true; virtualisation.virtualbox.host.addNetworkInterface = false; - # Betterlockscreen - security.pam.services.i3lock.enable = true; + # Hyprlock + security.pam.services.hyprlock = {}; # Enabling the Keyring. security.pam.services.lightdm.enableGnomeKeyring = true; diff --git a/flake.nix b/flake.nix index 785b238..2188951 100644 --- a/flake.nix +++ b/flake.nix @@ -36,6 +36,7 @@ users.elias = import ./home/default-laptop.nix; }; nixpkgs.overlays = [ + # (import ./overlays/river-status.nix) inputs.nur.overlays.default ]; } diff --git a/home/default.nix b/home/default.nix index bddd01f..b096b30 100644 --- a/home/default.nix +++ b/home/default.nix @@ -31,6 +31,19 @@ stateVersion = "23.11"; }; + + + systemd.user.services = { + idle-inhibitor = { + Unit = { + Description = "Presentation Mode"; + }; + Service = { + Type = "simple"; + ExecStart = "systemd-inhibit --what=idle --who=Caffeine --why=Caffeine --mode=block sleep inf"; + }; + }; + }; programs = { home-manager.enable = true; }; nixpkgs.config = { diff --git a/home/programs/default.nix b/home/programs/default.nix index 4836ec0..0f37a85 100644 --- a/home/programs/default.nix +++ b/home/programs/default.nix @@ -1,5 +1,6 @@ { imports = [ + ./hyprlock.nix ./river ./alacritty ./anki diff --git a/home/programs/eww/src/bar.yuck b/home/programs/eww/src/bar.yuck index 3550a11..f655821 100644 --- a/home/programs/eww/src/bar.yuck +++ b/home/programs/eww/src/bar.yuck @@ -254,6 +254,13 @@ :class "text separator" :text "|")) + (defwidget idle_inhibitor [] + (box :class "idle_inhibitor" + :space-evenly false + (button :class "icon" + :onclick "systemctl --user is-active idle-inhibitor.service && systemctl --user stop idle-inhibitor.service || systemctl --user start idle-inhibitor.service" + (label :text "${idle_inhibitor == 'start' ? '󰈈' : '󰛐' }")))) + ;; /-- Bar --> (defwindow bar [] :geometry (geometry @@ -266,6 +273,8 @@ :reserve (struts :distance "25px" :side "top") + :exclusive true + :layer "top" :windowtype "dock" (box :orientation "horizontal" @@ -277,6 +286,7 @@ (widgetLogSeperator) (widgetWindows) (box :hexpand true) + (idle_inhibitor) (widgetSpeaker) (widgetSeperator) (widgetBacklight) diff --git a/home/programs/eww/src/scripts/river_log.sh b/home/programs/eww/src/scripts/river_log.sh new file mode 100755 index 0000000..9f6de7c --- /dev/null +++ b/home/programs/eww/src/scripts/river_log.sh @@ -0,0 +1,6 @@ +socat - UNIX-CONNECT:"$XDG_RUNTIME_DIR"/river/status | while read -r line; do + workspace=$(echo "$line" | jq -r '.workspace') + layout=$(echo "$line" | jq -r '.layout') + title=$(echo "$line" | jq -r '.title') + echo "WS: $workspace | Layout: $layout | $title" +done diff --git a/home/programs/hyprlock.nix b/home/programs/hyprlock.nix new file mode 100644 index 0000000..8a52a93 --- /dev/null +++ b/home/programs/hyprlock.nix @@ -0,0 +1,33 @@ +{ ... }: + +{ + programs.hyprlock = { + enable = true; + settings = { + general = { + disable_loading_bar = true; + grace = 300; + hide_cursor = true; + no_fade_in = false; + }; + background = [{ + path = "screenshot"; + blur_passes = 3; + blur_size = 8; + }]; + input-field = [{ + size = "200, 50"; + position = "0, -80"; + monitor = ""; + dots_center = true; + fade_on_empty = false; + font_color = "rgb(202, 211, 245)"; + inner_color = "rgb(91, 96, 120)"; + outer_color = "rgb(24, 25, 38)"; + outline_thickness = 5; + placeholder_text = ''Password...''; + shadow_passes = 2; + }]; + }; + }; +} diff --git a/home/programs/river/default.nix b/home/programs/river/default.nix index 4293110..ca09a24 100644 --- a/home/programs/river/default.nix +++ b/home/programs/river/default.nix @@ -1,13 +1,13 @@ { pkgs, lib, ... }: { - home.packages = with pkgs; [ wlr-randr yad slurp grim wl-clipboard rivercarro + # river-status ]; xdg.configFile."helperscripts" = { recursive = true; @@ -33,13 +33,12 @@ systemd = { enable = true; }; xwayland.enable = true; extraConfig = '' - rivertile -view-padding 0 -outer-padding 25 & + rivertile -view-padding 0 -outer-padding 0 & ''; settings = { spawn = [ "nextcloud --background" - "~/.config/helperscriptsstartEww.sh" - "trayer --edge top --align left --widthtype request --height 25 --transparent true --alpha 0 --expand true --SetDockType true --SetPartialStrut true" + "/home/elias/.config/helperscripts/startEww.sh" ]; spawn-tagmask = "${all_but_scratch_tag}"; keyboard-layout = "de"; diff --git a/home/services/default.nix b/home/services/default.nix index cacee4e..8b4bfe8 100644 --- a/home/services/default.nix +++ b/home/services/default.nix @@ -1,5 +1,5 @@ { pkgs, ... }: { - imports = [ ./ssh-agent ./gpg-agent ]; + imports = [ ./ssh-agent ./gpg-agent ./hypridle.nix ]; } diff --git a/home/services/hypridle.nix b/home/services/hypridle.nix new file mode 100644 index 0000000..831cb51 --- /dev/null +++ b/home/services/hypridle.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: { + services.hypridle = { + enable = true; + settings = { + general = { + lock_cmd = + "/run/current-system/sw/bin/pidof hyprlock || ${pkgs.hyprlock}/bin/hyprlock"; + before_sleep_cmd = "/run/current-system/sw/bin/loginctl lock-session"; + }; + listener = [ + { + timeout = 300; + on-timeout = "${pkgs.hyprlock}/bin/hyprlock"; + } + { + timeout = 600; + on-timeout = "${pkgs.systemd}/bin/systemctl suspend"; + } + ]; + }; + }; +} + diff --git a/overlays/obsidian.nix.orig b/overlays/obsidian.nix.orig deleted file mode 100644 index 0a169e9..0000000 --- a/overlays/obsidian.nix.orig +++ /dev/null @@ -1,14 +0,0 @@ -final: prev: { - obsidian = prev.obsidian.overrideAttrs (old: { - - src = prev.fetchurl { - url = old.src.url; -<<<<<<< HEAD - hash = "sha256-bvmvzVyHrjh1Yj3JxEfry521CMX3E2GENmXddEeLwiE="; -======= - hash = "sha256-XVq0nQiyT2HvKQpzJIvhghsGgg4ye7uqZcyA1nH4O/o="; ->>>>>>> test - }; - }); -} - diff --git a/overlays/river-status.nix b/overlays/river-status.nix new file mode 100644 index 0000000..36cf31b --- /dev/null +++ b/overlays/river-status.nix @@ -0,0 +1,31 @@ +self: super: + +{ + river-status = super.rustPlatform.buildRustPackage rec { + pname = "river-status"; + version = "0.1.0"; # Replace with the actual version if known + + src = super.fetchFromGitHub { + owner = "grvn"; + repo = "river-status"; + rev = "main"; # Replace with a specific commit hash or tag if needed + sha256 = "sha256-QTHn3+8CRpm5CoTwuhoMjBG16CYcOb79cOXgcgzimkc="; # Placeholder + }; + + cargoHash = "sha256-DPsQE71sEpfVnyI6V/da5n9V9pbItPZMuu/EM/30Jyo="; # Placeholder + nativeBuildInputs = [ + super.pkg-config # If you're dealing with C libraries or dependencies + ]; + + buildInputs = [ + super.wayland-utils # Add this or other dependencies if they are required for building + ]; + + meta = with super.lib; { + description = "A client for fetching status information from the River Wayland compositor"; + homepage = "https://github.com/grvn/river-status"; + license = licenses.mit; + maintainers = with maintainers; [ "Elias Schröter" ]; + }; + }; +} diff --git a/overlays/shell.nix b/overlays/shell.nix new file mode 100644 index 0000000..7012071 --- /dev/null +++ b/overlays/shell.nix @@ -0,0 +1,5 @@ +{ pkgs ? import { overlays = [ (import ./river-status.nix) ]; } }: + +pkgs.mkShell { + buildInputs = [ pkgs.river-status ]; +}