Compare commits

...

2 Commits

Author SHA1 Message Date
9e7d1f4db0 cleanup, hyprland and hyprlock 2025-01-25 18:36:08 +01:00
662c47fba5 cleanup 2025-01-25 17:51:01 +01:00
9 changed files with 347 additions and 26 deletions

View File

@ -3,6 +3,7 @@
pkgs,
pkgs-stable,
userSettings,
system,
...
}: {
imports = [
@ -16,7 +17,7 @@
# Home manager
home-manager = {
extraSpecialArgs = {inherit inputs pkgs pkgs-stable userSettings;};
extraSpecialArgs = {inherit inputs system pkgs pkgs-stable userSettings;};
backupFileExtension = "backup";
users = {
${userSettings.username} = import ./home.nix;

View File

@ -3,6 +3,7 @@
pkgs,
pkgs-stable,
userSettings,
system,
...
}: {
imports = [
@ -17,7 +18,7 @@
# Home manager
home-manager = {
extraSpecialArgs = {inherit inputs pkgs pkgs-stable userSettings;};
extraSpecialArgs = {inherit inputs system pkgs pkgs-stable userSettings;};
backupFileExtension = "backup";
users = {
${userSettings.username} = import ./home.nix;
@ -80,8 +81,8 @@
};
environment.systemPackages = [
inputs.install-script.packages.x86_64-linux.default
inputs.shinya-nvf.packages.x86_64-linux.nvf
inputs.install-script.packages.${system}.default
inputs.shinya-nvf.packages.${system}.nvf
];
#services.twingate.enable = true;

View File

@ -1,5 +1,6 @@
{
userSettings,
pkgs,
...
}: {
# Home manager configuration

View File

@ -10,6 +10,8 @@
};
config = lib.mkIf config.app_list.applications.enable {
services.arrpc.enable = true;
home.packages =
(with pkgs; [
librewolf-wayland

View File

@ -3,6 +3,7 @@
lib,
config,
inputs,
system,
...
}: {
options = {
@ -24,7 +25,7 @@
lazygit
])
++ (
with inputs.ghostty.packages.x86_64-linux; [
with inputs.ghostty.packages.${system}; [
default
]
);

View File

@ -29,13 +29,15 @@
};
# XDG Portals configuration
xdg.portal.enable = true;
xdg.portal.config = {
common = {
default = ["hyprland"];
xdg.portal = {
enable = true;
config = {
common = {
default = ["hyprland"];
};
};
extraPortals = [pkgs.xdg-desktop-portal-hyprland];
};
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-hyprland];
# Services for the Hyprland module
services.network-manager-applet.enable = true;
@ -325,7 +327,7 @@
"opacity 0.80 0.80,class:^(qt6ct)$"
"opacity 0.80 0.80,class:^(kvantummanager)$"
"opacity 0.80 0.70,class:^(org.pulseaudio.pavucontrol)$"
"opacity 0.80 0.70,class:^(blueman-manager)$"
"opacity 0.80 0.70,class:^(.blueman-manager-wrapped)$"
"opacity 0.80 0.70,class:^(nm-applet)$"
"opacity 0.80 0.70,class:^(nm-connection-editor)$"
"opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$"
@ -371,7 +373,7 @@
"float,class:^(nwg-look)$"
"float,class:^(org.kde.ark)$"
"float,class:^(org.pulseaudio.pavucontrol)$"
"float,class:^(blueman-manager)$"
"float,class:^(.blueman-manager-wrapped)$"
"float,class:^(nm-applet)$"
"float,class:^(nm-connection-editor)$"
"float,class:^(org.kde.polkit-kde-authentication-agent-1)$"
@ -403,6 +405,7 @@
"workspace special,title:^(Spotify)$"
"float,class:^(post_processing_gui.py)$"
"float,title:^(Picture-in-Picture)$"
"pin,title:^(Picture-in-Picture)$"
"move 1280 680,title:^(Picture-in-Picture)$"
"float,title:^(KDE Connect)$"

View File

@ -1,6 +1,7 @@
{
lib,
config,
pkgs,
...
}: {
options = {
@ -8,6 +9,160 @@
};
config = lib.mkIf config.desktop.hyprland.hyprlock.enable {
home.packages = with pkgs; [
(writeShellScriptBin "battery-hyprlock"
''
# Get the current battery percentage
battery_percentage=$(${pkgs.toybox}/bin/cat /sys/class/power_supply/BAT1/capacity)
# Get the battery status (Charging or Discharging)
battery_status=$(${pkgs.toybox}/bin/cat /sys/class/power_supply/BAT1/status)
# Define the battery icons for each 10% segment
battery_icons=("󰂃" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰁹")
# Define the charging icon
charging_icon="󰂄"
# Calculate the index for the icon array
# Ensure the index is within bounds (0 to 9) for battery percentages 0 to 100
icon_index=$((battery_percentage / 10))
# If the battery is 100%, use the last icon (index 9)
if [ "$battery_percentage" -eq 100 ]; then
icon_index=9
fi
# Get the corresponding icon
battery_icon=''${battery_icons[$icon_index]}
# Check if the battery is charging
if [ "$battery_status" = "Charging" ]; then
battery_icon="$charging_icon"
fi
# Output the battery percentage and icon
echo "$battery_percentage% $battery_icon"
'')
(writeShellScriptBin "playerctl-hyprlock"
''
if [ $# -eq 0 ]; then
echo "Usage: $0 --title | --artist | --album | --source | --source-symbol"
exit 1
fi
# Function to get metadata using playerctl
get_metadata() {
key=$1
playerctl metadata --player=%any,chromium,firefox --format "{{ $key }}" 2>/dev/null
}
# Check for arguments
# Function to determine the source and return an icon and text
get_source_info_symbol() {
trackid=$(get_metadata "mpris:trackid")
if [[ "$trackid" == *"firefox"* ]]; then
echo -e "󰈹"
elif [[ "$trackid" == *"spotify"* ]]; then
echo -e ""
elif [[ "$trackid" == *"chromium"* ]]; then
echo -e ""
else
echo ""
fi
}
get_source_info() {
trackid=$(get_metadata "mpris:trackid")
if [[ "$trackid" == *"firefox"* ]]; then
echo -e "Firefox"
elif [[ "$trackid" == *"spotify"* ]]; then
echo -e "Spotify"
elif [[ "$trackid" == *"chromium"* ]]; then
echo -e "Chrome"
else
echo ""
fi
}
# Function to truncate text with ellipsis if necessary
truncate_with_ellipsis() {
text=$1
max_length=$2
if [ ''${#text} -gt $max_length ]; then
echo "''${text:0:$((max_length - 3))}..."
else
echo "$text"
fi
}
# Parse the argument
case "$1" in
--title)
title=$(get_metadata "xesam:title")
if [ -z "$title" ]; then
echo ""
else
truncate_with_ellipsis "$title" 28 # Limit the output to 50 characters
fi
;;
--artist)
artist=$(get_metadata "xesam:artist")
if [ -z "$artist" ]; then
echo ""
else
truncate_with_ellipsis "$artist" 28 # Limit the output to 50 characters
fi
;;
--status-symbol)
status=$(playerctl status 2>/dev/null)
if [[ $status == "Playing" ]]; then
echo "󰎆"
elif [[ $status == "Paused" ]]; then
echo "󰏥"
else
echo ""
fi
;;
--status)
status=$(playerctl status 2>/dev/null)
if [[ $status == "Playing" ]]; then
echo "Playing Now"
elif [[ $status == "Paused" ]]; then
echo "Paused"
else
echo ""
fi
;;
--album)
album=$(playerctl metadata --player=%any,chromium,firefox --format "{{ xesam:album }}" 2>/dev/null)
if [[ -n $album ]]; then
echo "$album"
else
status=$(playerctl status 2>/dev/null)
if [[ -n $status ]]; then
echo "Not album"
else
truncate_with_ellipsis "$album" 28 # Limit the output to 50 characters
fi
fi
;;
--source-symbol)
get_source_info_symbol
;;
--source)
get_source_info
;;
*)
echo "Invalid option: $1"
echo "Usage: $0 --title | --artist | --album | --source | --source-symbol"
exit 1
;;
esac'')
];
programs.hyprlock = {
enable = true;
@ -71,17 +226,173 @@
valign = "center";
};
label = {
monitor = "";
text = "$TIME $LAYOUT[!, cz, ru]";
color = "$text";
font_size = 40;
#font_family = "Monaspace Xenon";
label = [
{
monitor = "";
text = "$TIME";
color = "$text";
font_size = 40;
#font_family = "Monaspace Xenon";
position = "0, 80";
halign = "center";
valign = "center";
};
position = "0, 80";
halign = "center";
valign = "center";
}
# Battery percentage
{
monitor = "";
text = "cmd[update:1000] echo $(battery-hyprlock)";
color = "$accent";
font_size = 12;
position = "-37, 29";
halign = "right";
valign = "bottom";
zindex = 5;
}
{
# PLAYER TITTLE
monitor = "";
text = "cmd[update:1000] echo $(playerctl-hyprlock --title)";
color = "$fg0";
font_size = 14;
font_family = "$font-text";
position = "0, -400";
halign = "center";
valign = "center";
zindex = 5;
}
# PLAYER ARTIST
{
monitor = "";
text = "cmd[update:1000] echo $(playerctl-hyprlock --artist)";
color = "$fg0";
font_size = 11;
font_family = "$font-text";
position = "0, -420";
halign = "center";
valign = "center";
zindex = 5;
}
# PLAYER ALBUM
{
monitor = "";
text = "cmd[update:1000] echo $(playerctl-hyprlock --album)";
color = "$fg0";
font_size = 11;
font_family = "$font-text0";
position = "0, -445";
halign = "center";
valign = "center";
zindex = 5;
}
# PLAYER STATUS SYMBOL
{
monitor = "";
text = "cmd[update:1000] echo (playerctl-hyprlock --status-symbol)";
color = "$fg0";
font_size = 16;
font_family = "$font-symbol";
position = "700, -370";
halign = "left";
valign = "center";
zindex = 5;
}
# PLAYER STATUS
{
monitor = "";
text = "cmd[update:1000] echo $(playerctl-hyprlock --status)";
color = "$fg0";
font_size = 10;
font_family = "$font-text";
position = "720, -370";
halign = "left";
valign = "center";
zindex = 5;
}
# PLAYER SOURCE SYMBOL
{
monitor = "";
text = "cmd[update:1000] echo $(playerctl-hyprlock --source-symbol)";
color = "rgba(255, 255, 255, 0.6)";
font_size = 16;
font_family = "$font-symbol";
position = "-720, -370";
halign = "right";
valign = "center";
zindex = 5;
}
# PLAYER SOURCE
{
monitor = "";
text = "cmd[update:1000] echo $(playerctl-hyprlock --source)";
color = "rgba(255, 255, 255, 0.6)";
font_size = 10;
font_family = "$font-text";
position = "-740, -370";
halign = "right";
valign = "center";
zindex = 5;
}
];
shape = [
{
monitor = "";
size = "90, 40";
shadow_passes = "$text-shadow-pass";
shadow_boost = "$text-shadow-boost";
color = "$shape-col0";
rounding = "$shape-rd";
border_size = "";
border_color = "";
position = "-20, 20";
halign = "right";
valign = "bottom";
zindex = 1;
}
{
monitor = "";
size = "550, 120";
shadow_passes = "$text-shadow-pass";
shadow_boost = "$text-shadow-boost";
color = "$shape-col1";
rounding = "$rounding";
border_size = "";
border_color = "";
position = "0, 70";
halign = "center";
valign = "bottom";
zindex = 1;
}
];
};
};
};

View File

@ -12,6 +12,7 @@
open = "rifle";
ip = "ip -c";
s = "kitten ssh";
icat = "kitten icat";
diff = "diff --color";
respawn = "clear; ${pkgs.pfetch}/bin/pfetch";
mkdir = "mkdir -p";

View File

@ -22,9 +22,6 @@
FLAKE = "/home/${userSettings.username}/.dotfiles";
};
# Default applications configuration
xdg.mime.enable = true;
xdg.da.browser =
if userSettings.browser == "qutebrowser"
then "org.qutebrowser.qutebrowser"
@ -35,7 +32,9 @@
else "firefox"
);
xdg.mime.defaultApplications = {
xdg.mime = {
enable = true;
defaultApplications = {
"text/html" = "${config.xdg.da.browser}.desktop";
"x-scheme-handler/http" = "${config.xdg.da.browser}.desktop";
"x-scheme-handler/https" = "${config.xdg.da.browser}.desktop";
@ -50,6 +49,7 @@
"inode/directory" = "org.gnome.Nautilus.desktop";
"video/mp4" = "mpv.desktop";
};
};
programs.zsh.enable =
if userSettings.shell == "zsh"