diff --git a/home/dunst/default.nix b/home/dunst/default.nix index da62386..bd35247 100644 --- a/home/dunst/default.nix +++ b/home/dunst/default.nix @@ -37,9 +37,14 @@ corner_radius = config.theme.rounding; follow = "mouse"; font = config.theme.font; - format = - "%s\\n%b"; # format = "%s %p\n%b" + format = "%s\\n%b"; + progress_bar_corner_radius = config.theme.rounding - 10; + #format = '' + # %s %p + # %b''; frame_color = "#" + config.theme.colors.bg; + highlight = "#" + config.theme.colors.primary-bg; + foreground = "#" + config.theme.colors.fg; frame_width = 1; offset = "0x10"; horizontal_padding = 10; diff --git a/home/home.nix b/home/home.nix index fd13467..87e588c 100644 --- a/home/home.nix +++ b/home/home.nix @@ -18,6 +18,7 @@ ./spicetify ./variables/theme ./wallpaper + ./lf ]; home.username = "hadi"; # CHANGEME @@ -26,9 +27,9 @@ home.packages = with pkgs; [ swappy imv + bc discord obsidian - ranger fd btop go diff --git a/home/hyprland/default.nix b/home/hyprland/default.nix index 721fbf3..11a95fc 100644 --- a/home/hyprland/default.nix +++ b/home/hyprland/default.nix @@ -64,15 +64,15 @@ bindm = [ "$mod, mouse:272, movewindow" "$mod, R, resizewindow" ]; bindl = [ - ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_SINK@ toggle" + ",XF86AudioMute, exec, sound-toggle" ",switch:Lid Switch, exec, ${pkgs.hyprlock}/bin/hyprlock" ]; bindle = [ - ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" - ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" - ", XF86MonBrightnessUp, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 10%+" - ", XF86MonBrightnessDown, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 10%-" + ", XF86AudioRaiseVolume, exec, sound-up" + ", XF86AudioLowerVolume, exec, sound-down" + ", XF86MonBrightnessUp, exec, brightness-up" + ", XF86MonBrightnessDown, exec, brightness-down" ]; env = [ diff --git a/home/lf/default.nix b/home/lf/default.nix new file mode 100644 index 0000000..ab6f114 --- /dev/null +++ b/home/lf/default.nix @@ -0,0 +1,24 @@ +{ pkgs, config, ... }: { + home.packages = with pkgs; [ pistol ]; + + programs.lf = { + enable = true; + keybindings = { + # I find x to be a better cut, and save d for delete + d = "delete"; + x = "cut"; + "" = "open"; + "" = "quit"; + "" = "quit"; + }; + + previewer.source = "${pkgs.pistol}/bin/pistol"; + + extraConfig = '' + set hidden + set nodirfirst + set incsearch + ''; + + }; +} diff --git a/home/scripts/brightness.nix b/home/scripts/brightness.nix new file mode 100644 index 0000000..33c813e --- /dev/null +++ b/home/scripts/brightness.nix @@ -0,0 +1,42 @@ +{ pkgs, config, ... }: + +let + homedir = config.home.homeDirectory; + increments = "5"; + + brightness-change = pkgs.writeShellScriptBin "brightness-change" '' + sleep 0.05 + + [[ $1 == "up" ]] && ${pkgs.brightnessctl}/bin/brightnessctl set ${increments}%+ + [[ $1 == "down" ]] && ${pkgs.brightnessctl}/bin/brightnessctl set ${increments}%- + + brightness_level=$(${pkgs.brightnessctl}/bin/brightnessctl get) + + message=" Brightness: $brightness_level%" + + ID=$(cat /tmp/brightness-notification 2>/dev/null) + [[ $ID -eq "" ]] && ID=0 + + ${pkgs.libnotify}/bin/notify-send "$message" \ + --replace-id="$ID" \ + --print-id \ + -t 2000 \ + -h int:value:"$brightness_level" \ + -h string:synchronous:brightness-change > /tmp/brightness-notification + ''; + + brightness-up = pkgs.writeShellScriptBin "brightness-up" '' + brightness-change up ${increments} + ''; + + brightness-down = pkgs.writeShellScriptBin "brightness-down" '' + brightness-change down ${increments} + ''; + +in { + home.packages = with pkgs; [ + brightness-change + brightness-up + brightness-down + ]; +} diff --git a/home/scripts/default.nix b/home/scripts/default.nix index 2dbb600..d34fffe 100644 --- a/home/scripts/default.nix +++ b/home/scripts/default.nix @@ -1 +1,4 @@ -{ imports = [ ./scripts.nix ./nerdfetch.nix ]; } +{ + imports = + [ ./scripts.nix ./nerdfetch.nix ./nixy.nix ./sounds.nix ./brightness.nix ]; +} diff --git a/home/scripts/nixy.nix b/home/scripts/nixy.nix new file mode 100644 index 0000000..2ac36c7 --- /dev/null +++ b/home/scripts/nixy.nix @@ -0,0 +1,23 @@ +{ pkgs, config, ... }: + +let + homedir = config.home.homeDirectory; + + nixy-rebuild = pkgs.writeShellScriptBin "nixy-rebuild" '' + sudo nixos-rebuild switch --flake ${homedir}/.config/nixos#nixy + ''; + nixy-edit = pkgs.writeShellScriptBin "nixy-edit" '' + $EDITOR ${homedir}/.config/nixos/ + ''; + + nixy-update = pkgs.writeShellScriptBin "nixy-update" '' + cd ${homedir}/.config/nixos && sudo nix flake update + ''; + + nixy-gc = pkgs.writeShellScriptBin "nixy-gc" '' + cd ${homedir}/.config/nixos && sudo nix-collect-garbage -d + ''; + +in { + home.packages = with pkgs; [ nixy-rebuild nixy-edit nixy-update nixy-gc ]; +} diff --git a/home/scripts/scripts.nix b/home/scripts/scripts.nix index 891bb87..36a3bf5 100644 --- a/home/scripts/scripts.nix +++ b/home/scripts/scripts.nix @@ -34,51 +34,4 @@ let nmcli connection import type wireguard file "$0" ''; - choose-output = pkgs.writeShellScriptBin "choose-output" '' - function parse_sinks(){ - output=$(wpctl status) - sinks=($(echo "$output" | sed 's/ │ //' | awk '/Sinks:/ {flag=1; next} /^$/ {flag=0} flag' | sed 's/ /-/g')) - - for sink in "''${sinks[@]}"; do - - id="" - default=false - sink=$(echo "$sink" | sed 's/-/ /g') - sink_name=$(echo "$sink" | sed 's/\[vol:.*$//') - - if [[ $sink_name == "*"* ]]; then - sink_name=$(echo "$sink_name" | sed 's/*//') - default=true - fi - - id=$(echo "$sink_name" | cut -d'.' -f1) - sink_name=$(echo "$sink_name" | sed 's/^[ ]*//;s/[ ]*$//' ) - sink_name=$(echo "$sink_name" | cut -d'.' -f2 ) - - if [[ $default == true ]];then - printf "*%s (%d)" "$sink_name" "$id" - else - printf " %s (%d)" "$sink_name" "$id" - fi - printf "\n" - done - } - - - choosed_sink=$(echo "$(parse_sinks)" | fzf \ - --border-label "Choose sound output" ) || exit 1 - - choosed_sink_id=$(echo "$choosed_sink" | sed 's/.*(\(.*\))/\1/') - - wpctl set-default $choosed_sink_id - ''; - -in { - home.packages = with pkgs; [ - wallpaper - menu - wireguard-import - choose-output - powermenu - ]; -} +in { home.packages = with pkgs; [ wallpaper menu wireguard-import powermenu ]; } diff --git a/home/scripts/sounds.nix b/home/scripts/sounds.nix new file mode 100644 index 0000000..463b020 --- /dev/null +++ b/home/scripts/sounds.nix @@ -0,0 +1,99 @@ +{ pkgs, config, ... }: + +let + homedir = config.home.homeDirectory; + increments = "5"; + + sound-change = pkgs.writeShellScriptBin "sound-change" '' + sleep 0.05 + + [[ $1 == "mute" ]] && wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle + [[ $1 == "up" ]] && wpctl set-volume @DEFAULT_AUDIO_SINK@ "$2%+" + [[ $1 == "down" ]] && wpctl set-volume @DEFAULT_AUDIO_SINK@ "$2%-" + + sink_info=$(wpctl get-volume @DEFAULT_AUDIO_SINK@) + + volume=$(echo "$(echo "$sink_info" | awk '{print $2}' | sed 's/%//')*100" | bc -l | xargs printf "%.0f") + muted=false + if [[ $sink_info == *"MUTED"* ]]; then + muted=true + fi + + message="" + if [ $muted = true ]; then + message=" Muted" + else + message=" Volume: $volume%" + fi + + ID=$(cat /tmp/audio-notification 2>/dev/null) + [[ $ID -eq "" ]] && ID=0 + + ${pkgs.libnotify}/bin/notify-send "$message" \ + --replace-id="$ID" \ + --print-id \ + -t 2000 \ + -h int:value:"$volume" \ + -h string:synchronous:volume-change > /tmp/audio-notification + ''; + + sound-up = pkgs.writeShellScriptBin "sound-up" '' + sound-change up ${increments} + ''; + + sound-down = pkgs.writeShellScriptBin "sound-down" '' + sound-change down ${increments} + ''; + + sound-toggle = pkgs.writeShellScriptBin "sound-toggle" '' + sound-change mute + ''; + + sound-output = pkgs.writeShellScriptBin "sound-output" '' + function parse_sinks(){ + output=$(wpctl status) + sinks=($(echo "$output" | sed 's/ │ //' | awk '/Sinks:/ {flag=1; next} /^$/ {flag=0} flag' | sed 's/ /-/g')) + + for sink in "''${sinks[@]}"; do + + id="" + default=false + sink=$(echo "$sink" | sed 's/-/ /g') + sink_name=$(echo "$sink" | sed 's/\[vol:.*$//') + + if [[ $sink_name == "*"* ]]; then + sink_name=$(echo "$sink_name" | sed 's/*//') + default=true + fi + + id=$(echo "$sink_name" | cut -d'.' -f1) + sink_name=$(echo "$sink_name" | sed 's/^[ ]*//;s/[ ]*$//' ) + sink_name=$(echo "$sink_name" | cut -d'.' -f2 ) + + if [[ $default == true ]];then + printf "*%s (%d)" "$sink_name" "$id" + else + printf " %s (%d)" "$sink_name" "$id" + fi + printf "\n" + done + } + + + choosed_sink=$(echo "$(parse_sinks)" | fzf \ + --border-label "Choose sound output" ) || exit 1 + + choosed_sink_id=$(echo "$choosed_sink" | sed 's/.*(\(.*\))/\1/') + + wpctl set-default $choosed_sink_id + ''; + +in { + home.packages = with pkgs; [ + sound-output + sound-change + sound-up + sound-down + sound-toggle + ]; +}