diff --git a/flake.nix b/flake.nix index b9c8e93..c1246c4 100644 --- a/flake.nix +++ b/flake.nix @@ -133,5 +133,6 @@ nixosModules = { automapaper = ./modules/automapaper; }; + packages = import ./packages { inherit nixpkgs; }; }; } diff --git a/modules/hyprland.nix b/modules/hyprland.nix index c7c6625..cca3f0f 100644 --- a/modules/hyprland.nix +++ b/modules/hyprland.nix @@ -202,47 +202,14 @@ in "$mod" = "SUPER"; bind = let - wofi-power = ( - pkgs.writeShellScriptBin "wofi-power" '' - lock="Lock" - poweroff="Poweroff" - reboot="Reboot" - sleep="Suspend" - logout="Log out" - selected_option=$(echo -e "$lock\n$sleep\n$reboot\n$logout\n$poweroff" | ${pkgs.wofi}/bin/wofi --dmenu -i -p "Powermenu") - - if [ "$selected_option" == "$lock" ] - then - echo "lock" - swaylock - elif [ "$selected_option" == "$poweroff" ] - then - echo "poweroff" - poweroff - elif [ "$selected_option" == "$reboot" ] - then - echo "reboot" - reboot - elif [ "$selected_option" == "$sleep" ] - then - echo "sleep" - suspend - elif [ "$selected_option" == "$logout" ] - then - echo "logout" - hyprctl dispatch exit - else - echo "No match" - fi - '' - ); + wpkgs = inputs.self.packages.${pkgs.system}; in [ "$mod,Return,exec,${cfg.terminal}/bin/${cfg.terminal.pname}" "$mod,tab,cyclenext" "SUPERSHIFT,Q,killactive" - "$mod,SPACE,exec,${pkgs.wofi}/bin/wofi --show drun" - "$mod,P,exec,${wofi-power}/wofi-power" + "$mod,SPACE,exec,${wpkgs.wofi-launch}/bin/wofi-launch" + "$mod,P,exec,${wpkgs.wofi-power}/bin/wofi-power" "SUPERSHIFT,m,exit" "$mod,H,movefocus,l" "$mod,J,movefocus,u" diff --git a/modules/wofi.nix b/modules/wofi.nix index bf21efc..5a35fe5 100644 --- a/modules/wofi.nix +++ b/modules/wofi.nix @@ -16,43 +16,14 @@ in ../common/colors.nix ]; config = lib.mkIf cfg.enable { - home.packages = with pkgs; [ - (writeShellScriptBin "wofi-launch" '' - ${wofi}/bin/wofi --show drun - '') - (writeShellScriptBin "wofi-power" '' - lock="Lock" - poweroff="Poweroff" - reboot="Reboot" - sleep="Suspend" - logout="Log out" - selected_option=$(echo -e "$lock\n$sleep\n$reboot\n$logout\n$poweroff" | wofi --dmenu -i -p "Powermenu") - - if [ "$selected_option" == "$lock" ] - then - echo "lock" - swaylock - elif [ "$selected_option" == "$poweroff" ] - then - echo "poweroff" - poweroff - elif [ "$selected_option" == "$reboot" ] - then - echo "reboot" - reboot - elif [ "$selected_option" == "$sleep" ] - then - echo "sleep" - suspend - elif [ "$selected_option" == "$logout" ] - then - echo "logout" - hyprctl dispatch exit - else - echo "No match" - fi - '') - ]; + home.packages = + let + wpkgs = inputs.self.packages.${pkgs.system}; + in + [ + wpkgs.wofi-launch + wpkgs.wofi-power + ]; programs.wofi = { enable = true; settings = { }; diff --git a/packages/default.nix b/packages/default.nix new file mode 100644 index 0000000..b69cb5c --- /dev/null +++ b/packages/default.nix @@ -0,0 +1,28 @@ +{ nixpkgs }: +let + allSystems = [ + "x86_64-linux" # 64-bit Intel/AMD Linux + "aarch64-linux" # 64-bit ARM Linux + "x86_64-darwin" # 64-bit Intel macOS + "aarch64-darwin" # 64-bit ARM macOS + ]; + forAllSystems = + f: + nixpkgs.lib.genAttrs allSystems ( + system: + f { + inherit system; + pkgs = import nixpkgs { inherit system; }; + } + ); +in +forAllSystems ( + { pkgs, system }: + let + call = path: import path { inherit pkgs system; }; + in + { + wofi-launch = call ./wofi-launch.nix; + wofi-power = call ./wofi-power.nix; + } +) diff --git a/packages/wofi-launch.nix b/packages/wofi-launch.nix new file mode 100644 index 0000000..9a210c2 --- /dev/null +++ b/packages/wofi-launch.nix @@ -0,0 +1,4 @@ +{ pkgs, ... }: +pkgs.writeShellScriptBin "wofi-launch" '' + ${pkgs.wofi}/bin/wofi --show drun +'' diff --git a/packages/wofi-power.nix b/packages/wofi-power.nix new file mode 100644 index 0000000..315f2cd --- /dev/null +++ b/packages/wofi-power.nix @@ -0,0 +1,33 @@ +{ pkgs, ... }: +pkgs.writeShellScriptBin "wofi-power" '' + lock="Lock" + poweroff="Poweroff" + reboot="Reboot" + sleep="Suspend" + logout="Log out" + selected_option=$(echo -e "$lock\n$sleep\n$reboot\n$logout\n$poweroff" | ${pkgs.wofi}/bin/wofi --dmenu -i -p "Powermenu") + + if [ "$selected_option" == "$lock" ] + then + echo "lock" + swaylock + elif [ "$selected_option" == "$poweroff" ] + then + echo "poweroff" + poweroff + elif [ "$selected_option" == "$reboot" ] + then + echo "reboot" + reboot + elif [ "$selected_option" == "$sleep" ] + then + echo "sleep" + suspend + elif [ "$selected_option" == "$logout" ] + then + echo "logout" + hyprctl dispatch exit + else + echo "No match" + fi +''