1
0
Fork 0

2 last months

This commit is contained in:
Avery 2024-06-28 18:15:13 +02:00
parent f845745874
commit 15b909473e
Signed by: Avery
GPG key ID: B684FD451B692E04
63 changed files with 963 additions and 1103 deletions

View file

@ -1,59 +0,0 @@
{ config, pkgs, ... }: {
imports = [
./dunst.nix
./firefox.nix
./gtk.nix
./hyprland.nix
./kitty.nix
./qt.nix
./rofi.nix
./waybar.nix
];
home = {
packages = with pkgs; [
gimp
fastfetch
inkscape
libreoffice-qt
libsForQt5.qt5ct
obs-studio
picard
protonup-qt
libsForQt5.ark
libsForQt5.dolphin
libsForQt5.dolphin-plugins
libsForQt5.kio
libsForQt5.kio-extras
libsForQt5.kimageformats
libsForQt5.qt5.qtimageformats
mpv
noto-fonts-cjk-sans
nsxiv
pamixer
playerctl
qbittorrent
r2modman
swww
wl-clipboard
element-desktop
vesktop
(import ./scripts/colorpicker.nix { inherit pkgs; })
(import ./scripts/currently-playing.nix { inherit pkgs; })
(import ./scripts/change-wallpaper.nix { inherit pkgs; })
(import ./scripts/screenshot.nix { inherit pkgs; })
(pkgs.buildEnv {
name = "desktop-scripts";
paths = [ ./scripts_legacy ];
})
];
pointerCursor = {
gtk.enable = true;
package = pkgs.phinger-cursors;
name = "phinger-cursors-dark";
size = 24;
};
};
nixpkgs.config.allowUnfree = true;
services.easyeffects.enable = true;
xdg.enable = true;
}

View file

@ -1,31 +0,0 @@
{ ... }: {
services.dunst = {
enable = true;
settings = {
global = {
timeout = 3;
corner_radius = 12;
frame_width = 2;
font = "Iosevka Nerd Font 10";
format = "<span font='Iosevka Nerd Font 12'><b>%s</b></span>\n%b";
icon_position = "left";
max_icon_size = 48;
icon_corner_radius = 4;
origin = "bottom-right";
offset = "8x8";
width = "(100, 400)";
background = "#11111b";
foreground = "#cdd6f4";
frame_color = "#cba6f7";
highlight = "#cba6f7";
separator_color = "frame";
progress_bar = true;
progress_bar_corner_radius = 4;
};
volumectl = {
appname = "volumectl";
alignment = "center";
};
};
};
}

View file

@ -1,184 +0,0 @@
{ config, pkgs, ... }: {
home.packages = with pkgs; [ hyprpicker hyprlock ];
wayland.windowManager.hyprland = {
enable = true;
settings = {
monitor = "DP-1, 2560x1440@165, 0x0, 1";
env = [ "XCURSOR_SIZE, 24" "QT_QPA_PLATFORMTHEME, qt5ct" ];
exec-once = [
"hyprlock"
"hyprctl setcursor phinger-cursors-dark 24"
"waybar"
"swww init; swww img ~/.local/share/wallpapers/.current_image"
"[workspace 1 silent] firefox"
"[workspace 10 silent] qbittorrent"
];
general = {
border_size = 0;
gaps_in = 2;
gaps_out = 2;
};
decoration = {
rounding = 0;
dim_inactive = true;
dim_strength = 0.5;
drop_shadow = false;
blur = {
enabled = true;
size = 3;
passes = 2;
noise = 5.0e-2;
vibrancy = 0.25;
vibrancy_darkness = 0.3;
};
};
dwindle = {
pseudotile = true;
force_split = 2;
use_active_for_splits = true;
preserve_split = true;
};
bind = [
"SUPER SHIFT CTRL ALT, Q, exit,"
"SUPER, W, killactive"
"SUPER, F, togglefloating, "
"SUPER, C, centerwindow"
"SUPER, F11, fullscreen, 0"
"CTRL ALT, T, exec, kitty"
"SUPER, Space, exec, rofi -show drun"
"SUPER, E, exec, zsh -c dolphin"
"SUPER, k, movefocus, u"
"SUPER, j, movefocus, d"
"SUPER, h, movefocus, l"
"SUPER, l, movefocus, r"
"SUPER, 1, workspace, 1"
"SUPER, 2, workspace, 2"
"SUPER, 3, workspace, 3"
"SUPER, 4, workspace, 4"
"SUPER, 5, workspace, 5"
"SUPER, 6, workspace, 6"
"SUPER, 7, workspace, 7"
"SUPER, 8, workspace, 8"
"SUPER, 9, workspace, 9"
"SUPER, 0, workspace, 10"
"SUPER SHIFT, 1, movetoworkspace, 1"
"SUPER SHIFT, 2, movetoworkspace, 2"
"SUPER SHIFT, 3, movetoworkspace, 3"
"SUPER SHIFT, 4, movetoworkspace, 4"
"SUPER SHIFT, 5, movetoworkspace, 5"
"SUPER SHIFT, 6, movetoworkspace, 6"
"SUPER SHIFT, 7, movetoworkspace, 7"
"SUPER SHIFT, 8, movetoworkspace, 8"
"SUPER SHIFT, 9, movetoworkspace, 9"
"SUPER SHIFT, 0, movetoworkspace, 10"
"SUPER, S, exec, screenshot full"
"SUPER + SHIFT, S, exec, screenshot section"
"MOD3, C, exec, colorpicker"
"MOD3, S, exec, hyprlock"
"MOD3, 1, exec, play_to_soundboard.sh $HOME/soundboard/fireball.webm"
"MOD3, 2, exec, play_to_soundboard.sh $HOME/soundboard/turret.webm"
"MOD3, 3, exec, play_to_soundboard.sh $HOME/soundboard/elhormiguero.webm --volume=70"
"MOD3, 4, exec, play_to_soundboard.sh $HOME/soundboard/america.webm --volume=70"
"MOD3, 5, exec, play_to_soundboard.sh $HOME/soundboard/bazinga.webm"
"MOD3, 6, exec, play_to_soundboard.sh $HOME/soundboard/zasentodalaboca.m4a"
"MOD3 SHIFT, P, exec, pkill mpv"
];
bindl = [
"MOD3, m, submap, Música"
"MOD3, w, submap, Fondo de pantalla"
", XF86AudioMute, exec, volumectl.sh output toggle-mute"
"SHIFT, XF86AudioMute, exec, volumectl.sh input toggle-mute"
];
bindle = [
", XF86AudioRaiseVolume, exec, volumectl.sh output +5"
", XF86AudioLowerVolume, exec, volumectl.sh output -5"
"SHIFT, XF86AudioRaiseVolume, exec, volumectl.sh input +5"
"SHIFT, XF86AudioLowerVolume, exec, volumectl.sh input -5"
];
bindm =
[ "SUPER, mouse:272, movewindow" "SUPER, mouse:273, resizewindow" ];
animations = {
enabled = true;
animation = [
"windows, 1, 6, wind, slide"
"windowsIn, 1, 6, winIn, slide"
"windowsOut, 1, 5, winOut, slide"
"windowsMove, 1, 5, wind, slide"
"border, 1, 1, liner"
"borderangle, 1, 50, liner, loop"
"fade, 1, 8, default"
"workspaces, 1, 5, wind"
];
bezier = [
"wind, 0.05, 0.92, 0.1, 1"
"winIn, 0.1, 1.1, 0.1, 1"
"winOut, 0.3, -0.3, 0, 1"
"liner, 1, 1, 1, 1"
];
};
windowrulev2 = [
"tile, class:^(ichi Client)$"
"opacity 0.999 0.999, class: ^(org.kde.dolphin)$"
"nofocus, title:^()$,class:^(steam)$"
"minsize 1 1, title:^()$,class:^(steam)$"
];
layerrule =
[ "blur, waybar" "blur, rofi" "ignorezero, rofi" "noanim, rofi" ];
input = {
kb_layout = "es";
kb_variant = "dvorak";
kb_options = "lv5:caps_switch";
follow_mouse = 1;
sensitivity = -1;
};
misc = {
animate_manual_resizes = true;
animate_mouse_windowdragging = true;
key_press_enables_dpms = true;
};
};
extraConfig = ''
submap = Fondo de pantalla
bind = , H, exec, change-wallpaper previous
bind = , L, exec, change-wallpaper next
bind = , M, exec, change-wallpaper open-menu
bindl = , escape, submap, reset
bindl = MOD3, w, submap, reset
submap = reset
submap = Música
bindl = , h, exec, playerctl previous
bindl = , l, exec, playerctl next
bindl = , p, exec, playerctl play-pause
bindl = , escape, submap, reset
bindl = MOD3, m, submap, reset
submap = reset
'';
};
}

View file

@ -1,7 +0,0 @@
{ pkgs, ... }: {
home.packages = with pkgs; [ catppuccin-kde lightly-qt ];
qt = {
enable = true;
platformTheme.name = "qtct";
};
}

View file

@ -1,176 +0,0 @@
{ config, pkgs, ... }:
let inherit (config.lib.formats.rasi) mkLiteral;
in {
programs.rofi = {
enable = true;
extraConfig = {
drun-display-format = "{name}";
display-drun = " ";
show-icons = true;
icon-theme = "kora";
steal-focus = true;
};
package = pkgs.rofi-wayland;
font = "Iosevka Nerd Font 11";
terminal = "kitty";
theme = {
"*" = {
background = mkLiteral "#1e1d2f";
background-alt = mkLiteral "#282839";
foreground = mkLiteral "#d9e0ee";
selected = mkLiteral "#7aa2f7";
active = mkLiteral "#abe9b3";
urgent = mkLiteral "#f28fad";
};
window = {
transparency = "real";
location = mkLiteral "center";
anchor = mkLiteral "center";
fullscreen = false;
width = mkLiteral "500px";
x-offset = mkLiteral "0px";
y-offset = mkLiteral "0px";
enabled = true;
margin = mkLiteral "0px";
padding = mkLiteral "0px";
border = mkLiteral "0px solid";
border-radius = mkLiteral "12px";
border-color = mkLiteral "@selected";
background-color = mkLiteral "#1e1e2e99";
cursor = "default";
};
mainbox = {
enabled = true;
spacing = mkLiteral "20px";
margin = mkLiteral "0px";
padding = mkLiteral "12px";
border = mkLiteral "0px solid";
border-radius = mkLiteral "0px 0px 0px 0px";
border-color = mkLiteral "@selected";
background-color = mkLiteral "transparent";
children = map mkLiteral [ "inputbar" "listview" ];
};
inputbar = {
enabled = true;
spacing = mkLiteral "8px";
margin = mkLiteral "0px";
padding = mkLiteral "4px 8px";
border = mkLiteral "0px solid";
border-radius = mkLiteral "12px";
border-color = mkLiteral "@selected";
background-color = mkLiteral "transparent";
text-color = mkLiteral "@foreground";
children = map mkLiteral [ "prompt" "entry" ];
};
prompt = {
enabled = true;
background-color = mkLiteral "transparent";
text-color = mkLiteral "inherit";
};
textbox-prompt-colon = {
enabled = true;
expand = false;
str = "::";
background-color = mkLiteral "transparent";
text-color = mkLiteral "inherit";
};
entry = {
enabled = true;
background-color = mkLiteral "transparent";
text-color = mkLiteral "inherit";
cursor = mkLiteral "text";
placeholder = "";
placeholder-color = mkLiteral "inherit";
};
listview = {
enabled = true;
columns = 1;
lines = 18;
cycle = true;
dynamic = true;
scrollbar = false;
layout = "vertical";
reverse = false;
fixed-height = false;
fixed-columns = true;
spacing = mkLiteral "0px";
margin = mkLiteral "0px";
padding = mkLiteral "0px";
border = mkLiteral "0px solid";
border-radius = mkLiteral "0px";
border-color = mkLiteral "@selected";
background-color = mkLiteral "transparent";
text-color = mkLiteral "@foreground";
cursor = mkLiteral "default";
};
scrollbar = {
handle-width = mkLiteral "5px";
handle-color = mkLiteral "@selected";
border-radius = mkLiteral "0px";
background-color = mkLiteral "@background-alt";
};
element = {
enabled = true;
spacing = mkLiteral "4px";
margin = mkLiteral "0px";
padding = mkLiteral "4px 8px";
border = mkLiteral "0px solid";
border-radius = mkLiteral "12px";
border-color = mkLiteral "@selected";
background-color = mkLiteral "transparent";
text-color = mkLiteral "@foreground";
orientation = mkLiteral "horizontal";
cursor = mkLiteral "pointer";
};
"element normal.normal" = {
background-color = mkLiteral "transparent";
text-color = mkLiteral "@foreground";
};
"element selected.normal" = {
background-color = mkLiteral "#cdd6f422";
text-color = mkLiteral "@foreground";
};
element-icon = {
background-color = mkLiteral "transparent";
text-color = mkLiteral "inherit";
size = mkLiteral "24px";
cursor = mkLiteral "inherit";
};
element-text = {
background-color = mkLiteral "transparent";
text-color = mkLiteral "inherit";
highlight = mkLiteral "inherit";
cursor = mkLiteral "inherit";
vertical-align = mkLiteral "0.5";
horizontal-align = 0;
};
error-message = {
padding = mkLiteral "15px";
border = mkLiteral "2px solid";
border-radius = mkLiteral "10px";
border-color = mkLiteral "@selected";
background-color = mkLiteral "black / 10%";
text-color = mkLiteral "@foreground";
};
textbox = {
background-color = mkLiteral "transparent";
text-color = mkLiteral "@foreground";
vertical-align = mkLiteral "0.5";
horizontal-align = 0;
highlight = mkLiteral "none";
};
};
};
}

View file

@ -1,81 +0,0 @@
{ pkgs }:
pkgs.writeShellApplication {
name = "change-wallpaper";
runtimeInputs = with pkgs; [ dunst rofi swww ];
text = ''
shopt -s nullglob
WALLPAPER_PATH="$HOME/.local/share/wallpapers"
WALLPAPERS=("$WALLPAPER_PATH"/*)
if [ ! -f "$WALLPAPER_PATH/.current_path" ]; then
# Current wallpaper file does not exist, create it
echo "''${WALLPAPERS[0]}" > "$WALLPAPER_PATH/.current_path"
fi
CURRENT_WALLPAPER=$(cat "$WALLPAPER_PATH/.current_path")
CURRENT_WP_INDEX=-1
# Get the current wallpaper's index
for index in "''${!WALLPAPERS[@]}"; do
if [ "''${WALLPAPERS[$index]}" = "$CURRENT_WALLPAPER" ]; then
CURRENT_WP_INDEX=$index
fi
done
if [ "$CURRENT_WP_INDEX" -eq -1 ]; then
CURRENT_WP_INDEX=0
fi
if [ "$1" = "previous" ]; then
WALLPAPER="''${WALLPAPERS[$CURRENT_WP_INDEX - 1]}"
TRANSITION_ANGLE=300
elif [ "$1" = "next" ]; then
NEXT_INDEX=$((CURRENT_WP_INDEX + 1))
if [ "$NEXT_INDEX" = "''${#WALLPAPERS[@]}" ]; then
NEXT_INDEX=0
fi
WALLPAPER=''${WALLPAPERS[$NEXT_INDEX]}
TRANSITION_ANGLE=120
elif [ "$1" = "open-menu" ]; then
INPUT=""
for index in "''${!WALLPAPERS[@]}"; do
if [ "$index" = "$CURRENT_WP_INDEX" ]; then
continue
fi
_WALLPAPER=''${WALLPAPERS[$index]}
_WALLPAPER_NAME=$(basename "$_WALLPAPER")
INPUT+="$_WALLPAPER_NAME\0icon\x1f$_WALLPAPER"
if [ ! $((index + 1)) -eq ''${#WALLPAPERS[@]} ]; then
INPUT+=$'\n'
fi
done
if ! WALLPAPER=$(echo -en "$INPUT" | rofi -dmenu -mesg "Cambiar fondo de pantalla" -p "" -i -theme ~/.config/rofi/wallpaper_selector.rasi); then
exit 1
fi
WALLPAPER="$WALLPAPER_PATH/$WALLPAPER"
TRANSITION_ANGLE=270
else
echo "Unknown first argument: $1"
exit 1
fi
if [ -z "$WALLPAPER" ]; then
exit 1
fi
WALLPAPER_NAME=$(basename "$WALLPAPER")
echo "Setting wallpaper to $WALLPAPER"
echo "$WALLPAPER" > "$WALLPAPER_PATH/.current_path"
ln -sf "$WALLPAPER" "$WALLPAPER_PATH/.current_image"
dunstify -i "$WALLPAPER" -t 2800 "Cambiando fondo de pantalla" "Cambiando a $WALLPAPER_NAME"
swww img\
--transition-type wipe\
--transition-angle $TRANSITION_ANGLE\
--transition-step 90\
--transition-duration 1\
--transition-fps 165\
"$WALLPAPER"
'';
}

View file

@ -1,12 +0,0 @@
{ pkgs }:
pkgs.writeShellApplication {
name = "colorpicker";
runtimeInputs = with pkgs; [ dunst hyprpicker imagemagick wl-clipboard ];
text = ''
COLOR=$(hyprpicker --no-fancy --autocopy)
convert -size 1x1 xc:"$COLOR" "$HOME/.cache/.tmp_colorpicker.jpg"
dunstify -i "$HOME/.cache/.tmp_colorpicker.jpg" "Color copiado" "$COLOR"
rm "$HOME/.cache/.tmp_colorpicker.jpg"
'';
}

View file

@ -1,29 +0,0 @@
{ pkgs }:
pkgs.writeShellApplication {
name = "get_fancy_currently_playing";
runtimeInputs = [ pkgs.playerctl ];
text = ''
STRING=""
case $(playerctl status 2> /dev/stdout) in
"Playing")
STRING+=" "
;;
"Paused")
STRING+=" "
;;
"No players found")
exit 1
;;
esac
ARTIST=$(playerctl metadata xesam:artist)
if [[ -n $ARTIST ]]; then
STRING+="$ARTIST // "
fi
TITLE=$(playerctl metadata xesam:title)
if [[ -n $TITLE ]]; then
STRING+="$TITLE"
fi
echo -e "$STRING"
'';
}

View file

@ -1,36 +0,0 @@
{ pkgs }:
pkgs.writeShellApplication {
name = "screenshot";
runtimeInputs = with pkgs; [
dunst
grim
libjxl
slurp
wl-clipboard
xdg-user-dirs
];
text = ''
usage() {
echo "Usage: screenshot { full | section }"
exit 1
}
test -n 1 || usage
FILE_NAME=$(date +'Screenshot_%Y%m%d_%H%M%S')
TEMPORARY_PATH="/tmp/$FILE_NAME.png"
SCREENSHOT_PATH="$(xdg-user-dir PICTURES)/$FILE_NAME.jxl"
if [ "$1" == "full" ]; then
grim "$TEMPORARY_PATH"
elif [ "$1" == "section" ]; then
grim -g "$(slurp -b '#000000aa' -w 0)" "$TEMPORARY_PATH"
else
usage
fi
wl-copy < "$TEMPORARY_PATH"
cjxl "$TEMPORARY_PATH" "$SCREENSHOT_PATH"
dunstify --raw_icon="$TEMPORARY_PATH" "Captura de pantalla realizada" "Guardada como $FILE_NAME.jxl"
rm "$TEMPORARY_PATH"
'';
}

View file

@ -1,18 +0,0 @@
#!/bin/bash
RPC_HOST=http://localhost:6680/mopidy/rpc
TRACK=$(curl -s -X POST -H Content-Type:application/json -d '{ "method": "core.playback.get_current_track", "jsonrpc": "2.0", "params": {}, "id": 1 }' $RPC_HOST)
TRACK_URI=$(echo $TRACK | jq -r '.result.uri')
IMAGES=$(curl -s -X POST -H Content-Type:application/json -d '{ "method": "core.library.get_images", "jsonrpc": "2.0", "params": { "uris": ["'"$TRACK_URI"'"] }, "id": 1}' $RPC_HOST)
IMAGE_URI=$(echo $IMAGES | jq -r 'first(.result[] | sort_by(.width) | reverse | .[].uri)')
if [[ -n "$IMAGE_URI" ]]; then
if [[ "$IMAGE_URI" == *"local/"* ]]; then
# Image is local
IMAGE="$HOME/.local/share/mopidy/local/images${IMAGE_URI/local\//}"
else
curl -o /tmp/cover.png $IMAGE_URI &> /dev/null
IMAGE="/tmp/cover.png"
fi
fi
dunstify -r 99902 -I $IMAGE "Reproduciendo" "$(mpc --format '<b>%artist% - %album%</b>\n%title%' current 2> /dev/null)"

View file

@ -1,5 +0,0 @@
#!/usr/bin/env sh
while true; do
waybar
done

View file

@ -1,3 +0,0 @@
#!/bin/sh
mpv --no-video --audio-device=pipewire/Soundboard --audio-client-name="Soundboard" $@

View file

@ -1,7 +0,0 @@
#!/bin/sh
pw-cli create-node adapter '{ factory.name=support.null-audio-sink node.name="Soundboard" node.description="Soundboard" media.class=Audio/Sink object.linger=true audio.position=[FL FR] }'
pw-link Soundboard:monitor_FL easyeffects_source:input_FL
pw-link Soundboard:monitor_FR easyeffects_source:input_FR
pw-link Soundboard:monitor_FL easyeffects_sink:playback_FL
pw-link Soundboard:monitor_FR easyeffects_sink:playback_FR

View file

@ -1,72 +0,0 @@
#!/bin/sh
VOLUME_REGEX="^(-*|\+*)[0-9]+$"
if [ "$1" == "output" ]; then
if [[ $2 =~ $VOLUME_REGEX ]]; then
if [ $(pamixer --get-mute) == "true" ]; then
pamixer --unmute > /dev/null
fi
if [ "${2:0:1}" == "-" ]; then
pamixer --allow-boost -d "${2:1}" > /dev/null
elif [ "${2:0:1}" == "+" ]; then
pamixer --allow-boost -i "${2:1}" > /dev/null
fi
volume="$(pamixer --get-volume-human)"
message="$volume"
elif [ $2 == "toggle-mute" ]; then
if [ $(pamixer --get-mute) == "true" ]; then
pamixer --unmute > /dev/null
volume="$(pamixer --get-volume-human)"
message="$volume"
else
pamixer --mute > /dev/null
message="󰖁 Silenciado"
fi
else
message="volumectl error: Unknown second argument"
fi
elif [ "$1" == "input" ]; then
if [[ $2 =~ $VOLUME_REGEX ]]; then
if [ $(pamixer --default-source --get-mute) == "true" ]; then
pamixer --default-source --unmute > /dev/null
fi
if [ "${2:0:1}" == "-" ];then
pamixer --default-source --allow-boost -d "${2:1}" > /dev/null
elif [ "${2:0:1}" == "+" ]; then
pamixer --default-source --allow-boost -i "${2:1}" > /dev/null
fi
volume="$(pamixer --default-source --get-volume-human)"
message="$volume"
elif [ $2 == "toggle-mute" ]; then
if [ $(pamixer --default-source --get-mute) == "true" ]; then
pamixer --default-source --unmute > /dev/null
volume="$(pamixer --default-source --get-volume-human)"
message="$volume"
else
pamixer --default-source --mute > /dev/null
message=" Silenciado"
fi
else
message="volumectl error: Unknown second argument"
fi
elif [ "$1" == "mpd" ]; then
if [[ $2 =~ $VOLUME_REGEX ]]; then
mpc volume $2 > /dev/null
icon="󰝚"
volume="$(perl -e "print ('$(mpc 2>/dev/null)' =~ /volume:[ ]*([0-9]*%)/);")"
if [ "$volume" == "0%" ]; then
icon="󰝛"
volume="Silenciado"
fi
message="$icon $volume"
else
message="volumectl error: Unknown second argument"
fi
else
message="volumectl error: Unknown first argument"
fi
volume=$(echo $volume | tr -d "%")
dunstify --appname "volumectl" --replace 9001 --urgency low --timeout 1250 --hints int:value:$volume "$message"

View file

@ -1,197 +0,0 @@
{ pkgs, ... }: {
programs.waybar = {
enable = true;
settings = {
primary = {
layer = "top";
spacing = 0;
position = "bottom";
mode = "dock";
modules-left = [
"clock"
"pulseaudio"
"cpu"
"temperature"
"custom/gpu"
"temperature#gpu"
"memory"
];
modules-center = [ "hyprland/workspaces" "hyprland/submap" ];
modules-right = [ "mpris" ];
"hyprland/workspaces" = {
format = "{icon}";
format-icons = {
"1" = "󰈹 ";
"2" = " ";
"3" = " ";
"8" = " ";
"9" = " ";
"10" = " ";
default = " ";
};
persistent-workspaces = { "*" = 10; };
sort-by-number = true;
};
"hyprland/submap" = { format = " {}"; };
temperature = {
hwmon-path-abs = "/sys/devices/pci0000:00/0000:00:18.3/hwmon";
input-filename = "temp1_input";
};
"temperature#gpu" = {
hwmon-path-abs =
"/sys/devices/pci0000:00/0000:00:03.1/0000:05:00.0/0000:06:00.0/0000:07:00.0/hwmon";
input-filename = "temp1_input";
};
"custom/gpu" = {
exec = "cat /sys/class/drm/card*/device/gpu_busy_percent";
format = "GPU {}%";
restart-interval = 2;
};
mpris = {
format = "{player_icon}{status_icon} {artist} // {title}";
interval = 0.2;
player-icons = {
default = "";
firefox = "󰈹 ";
};
status-icons = {
paused = "";
playing = "";
};
};
clock = {
tooltip-format = "<tt><small>{calendar}</small></tt>";
format = " {:%Y-%m-%d %H:%M:%S}";
interval = 1;
calendar = {
mode = "year";
mode-mon-col = 2;
weeks-pos = "right";
on-scroll = 1;
on-click-right = "mode";
format = {
days = "<span color='#e0def4'>{}</span>";
today = "<span color='#eb6f92'><b><u>{}</u></b></span>";
weeks = "";
weekdays = "<span color='#9ccfd8'><b>{}</b></span>";
months = "<span color='#31748f'><b>{}</b></span>";
};
};
};
cpu = {
format = "CPU {usage}%";
tooltip = false;
interval = 2;
on-click = "kitty htop";
};
memory = {
format = "MEM {used}GB";
interval = 1;
tooltip-format = "{percentage}%";
};
pulseaudio = {
scroll-step = 5;
format = "{icon} {volume}% {format_source}";
format-muted = "󰖁 {format_source}";
format-source = " {volume}%";
format-source-muted = "";
format-icons = { default = [ "" "" ]; };
ignored-sinks = [ "Easy Effects Sink" ];
};
};
};
style = ''
* {
border: none;
background-color: transparent;
font-family: Iosevka Nerd Font;
font-weight: bold;
font-size: 14px;
}
window#waybar {
background: rgba(30, 30, 46, 0.9);
color: #cdd6f4;
margin: 4px;
}
tooltip {
background: #1e1e2e;
border: 2px solid #313244;
}
#mpris {
color: #f5c2e7;
padding-right: 20px;
}
#workspaces button {
padding: 1px;
color: #cdd6f4;
margin-right: 6px;
}
#workspaces button.persistent {
color: #cdd6f4;
}
#workspaces button.focused {
border: 0;
}
#workspaces button.urgent {
color: #f38ba8;
}
#workspaces button.empty {
color: #313244;
}
#workspaces button.active {
color: #cba6f7;
}
#submap {
color: #cba6f7;
margin-left: 4px;
padding: 0 8px;
}
#cpu {
color: #f9e2af;
padding-right: 6px;
}
#temperature {
color: #f9e2af;
padding-right: 12px;
}
#custom-gpu {
color: #94e2d5;
padding-right: 6px;
}
#temperature.gpu {
color: #94e2d5;
padding-right: 12px;
}
#memory {
color: #a6e3a1;
padding-right: 12px;
}
#pulseaudio {
color: #fab387;
padding-right: 12px;
}
#clock {
color: #f38ba8;
padding-left: 20px;
padding-right: 12px;
}
'';
};
}

View file

@ -0,0 +1 @@
{ ... }: { imports = [ ./desktop ./development ./scripts ]; }

View file

@ -0,0 +1,36 @@
{ config, pkgs, ... }: {
imports = [ ./plasma ./firefox.nix ./gtk.nix ./kitty.nix ];
home = {
packages = with pkgs; [
gimp
fastfetch
inkscape
libreoffice-qt
obs-studio
picard
protonup-qt
kdePackages.ark
kdePackages.dolphin
kdePackages.dolphin-plugins
kdePackages.kio
kdePackages.kio-extras
kdePackages.kimageformats
kdePackages.qtimageformats
kdePackages.sddm-kcm
mpv
noto-fonts-cjk-sans
nsxiv
osu-lazer-bin
playerctl
prismlauncher
qbittorrent
r2modman
wl-clipboard
element-desktop
vesktop
];
};
nixpkgs.config.allowUnfree = true;
services.easyeffects.enable = true;
xdg.enable = true;
}

View file

@ -3,7 +3,7 @@
enable = true;
font = {
name = "Iosevka Nerd Font";
size = 14;
size = 12;
};
keybindings = {
"ctrl+alt+1" = "goto_tab 1";

View file

@ -0,0 +1,16 @@
{ ... }: {
imports = [ ./input.nix ./hotkeys.nix ./krohnkite.nix ./theme.nix ];
programs.plasma = {
enable = true;
overrideConfig = true;
workspace.clickItemTo = "open";
kwin = {
virtualDesktops = {
rows = 1;
number = 10;
};
effects.desktopSwitching.animation = "slide";
};
configFile = { "kded5rc" = { Module-gtkconfig.autoload = false; }; };
};
}

View file

@ -0,0 +1,27 @@
{ ... }: {
programs.plasma.shortcuts = {
kwin = {
"Switch to Desktop 1" = "Meta+1";
"Window to Desktop 1" = "Meta+!";
"Switch to Desktop 2" = "Meta+2";
"Window to Desktop 2" = ''Meta+"'';
"Switch to Desktop 3" = "Meta+3";
"Window to Desktop 3" = "Meta+·";
"Switch to Desktop 4" = "Meta+4";
"Window to Desktop 4" = "Meta+$";
"Switch to Desktop 5" = "Meta+5";
"Window to Desktop 5" = "Meta+%";
"Switch to Desktop 6" = "Meta+6";
"Window to Desktop 6" = "Meta+&";
"Switch to Desktop 7" = "Meta+7";
"Window to Desktop 7" = "Meta+/";
"Switch to Desktop 8" = "Meta+8";
"Window to Desktop 8" = "Meta+(";
"Switch to Desktop 9" = "Meta+9";
"Window to Desktop 9" = "Meta+)";
"Switch to Desktop 10" = "Meta+0";
"Window to Desktop 10" = "Meta+=";
};
"services/kitty.desktop"."_launch" = "Ctrl+Alt+T";
};
}

View file

@ -0,0 +1,15 @@
{ ... }: {
programs.plasma.configFile = {
kcminputrc."Libinput/9610/54/Glorious Model O" = {
PointerAcceleration = -0.4;
PointerAccelerationProfile = 1;
};
kxkbrc.Layout = {
LayoutList = "es";
Use = true;
VariantList = "dvorak";
Options = "caps:menu";
ResetOldOptions = true;
};
};
}

View file

@ -0,0 +1,23 @@
# TODO: find a way to automatically install krohnkite
{ ... }: {
programs.plasma.configFile.kwinrc = {
Plugins.krohnkiteEnabled = true;
Script-krohnkite = {
enableMonocleLayout = false;
enableSpreadLayout = false;
enableStairLayout = false;
enableThreeColumnLayout = false;
enableTileLayout = false;
ignoreClass = "krunner,yakuake,spectacle,kded5,plasmashell";
layoutPerActivity = false;
layoutPerDesktop = false;
limitTileWidthRatio = 0.6;
noTileBorder = true;
screenGapBottom = 20;
screenGapLeft = 8;
screenGapRight = 8;
screenGapTop = 8;
tileLayoutGap = 2;
};
};
}

View file

@ -0,0 +1,59 @@
{ pkgs, ... }:
let cursorThemeName = "catppuccin-mocha-mauve-cursors";
in {
home = {
packages = with pkgs; [
(catppuccin-kde.override {
flavour = [ "mocha" ];
accents = [ "mauve" ];
})
catppuccin-cursors.mochaMauve
];
pointerCursor = {
gtk.enable = true;
package = pkgs.catppuccin-cursors.mochaMauve;
name = cursorThemeName;
size = 32;
};
};
programs.plasma = {
fonts = {
general = {
family = "Inter Display";
pointSize = 11;
weight = "medium";
};
fixedWidth = {
family = "Iosevka Nerd Font";
pointSize = 12;
};
small = {
family = "Inter Display";
pointSize = 8;
};
toolbar = {
family = "Inter Display";
pointSize = 11;
weight = "medium";
};
menu = {
family = "Inter Display";
pointSize = 11;
weight = "medium";
};
windowTitle = {
family = "Inter Display";
pointSize = 11;
weight = "medium";
};
};
workspace = {
colorScheme = "CatppuccinMochaMauve";
lookAndFeel = "Catppuccin-Mocha-Mauve";
cursor = {
theme = cursorThemeName;
size = 32;
};
};
};
}

View file

@ -5,7 +5,8 @@
git-credential-manager
gnupg
pass
dotnet-sdk_7
# dotnet-sdk_7
dotnet-sdk_8 # tModLoader
unityhub
];
};

View file

@ -0,0 +1,6 @@
{ pkgs, ... }: {
home.packages = with pkgs; [
(import ./play-on-soundboard.nix { inherit pkgs; })
(import ./setup-soundboard.nix { inherit pkgs; })
];
}

View file

@ -0,0 +1,16 @@
{ pkgs }:
pkgs.writeShellApplication {
name = "play-on-soundboard";
runtimeInputs = with pkgs; [ mpv ];
text = ''
if [ ! -f "/run/user/$UID/soundboard.init" ]; then
setup-soundboard
fi
mpv \
--no-video\
--audio-device=pipewire/Soundboard\
--audio-client-name="Soundboard"\
"$@"
'';
}

View file

@ -0,0 +1,13 @@
{ pkgs }:
pkgs.writeShellApplication {
name = "setup-soundboard";
text = ''
touch "/run/user/$UID/soundboard.init"
pw-cli create-node adapter '{ factory.name=support.null-audio-sink node.name="Soundboard" node.description="Soundboard" media.class=Audio/Sink object.linger=true audio.position=[FL FR] }'
pw-link Soundboard:monitor_FL easyeffects_source:input_FL
pw-link Soundboard:monitor_FR easyeffects_source:input_FR
pw-link Soundboard:monitor_FL easyeffects_sink:playback_FL
pw-link Soundboard:monitor_FR easyeffects_sink:playback_FR
'';
}

View file

@ -1,4 +1,7 @@
{ config, lib, pkgs, ... }: {
imports = [ ./filesystems.nix ./plasma.nix ./steam.nix ];
boot = {
kernelModules = [ "kvm-amd" ];
kernelPackages = pkgs.linuxKernel.packages.linux_zen;
@ -18,35 +21,10 @@
};
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/144857c7-877b-46c7-94d9-30a6d6d27cf0";
fsType = "btrfs";
options = [ "compress=zstd:15" ];
};
"/boot" = {
device = "/dev/disk/by-uuid/8084-F762";
fsType = "vfat";
};
"/home" = {
device = "/dev/disk/by-uuid/4bbd6139-7caa-4617-a94f-b185c5f6ca45";
fsType = "btrfs";
options = [ "compress=zstd:15" ];
};
"/mnt/Datos" = {
device = "/dev/disk/by-uuid/994ef2bd-a9fb-4414-9a0a-19b150ffa452";
fsType = "btrfs";
options = [ "compress=zstd:15" "user" "x-systemd.automount" "exec" ];
};
};
networking = {
firewall = {
enable = true;
allowedTCPPorts = [ 1111 42595 ];
allowedTCPPorts = [ 8000 42595 ];
allowedUDPPorts = [ 24642 ];
};
hostName = "totsugeki";
@ -79,25 +57,19 @@
};
programs = {
hyprland.enable = true;
steam.enable = true;
corectrl = {
enable = true;
gpuOverclock.enable = true;
};
nix-ld.enable = true;
};
xdg.portal = {
enable = true;
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
};
xdg.portal.enable = true;
services = {
greetd = {
jellyfin = {
enable = true;
settings = rec {
initial_session = {
command = "${pkgs.hyprland}/bin/Hyprland";
user = "avery";
};
default_session = initial_session;
};
openFirewall = true;
};
pipewire = {
enable = true;
@ -108,6 +80,16 @@
pulse.enable = true;
};
udisks2.enable = true;
udev.extraRules = ''
SUBSYSTEM=="usb", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="3000", MODE="0666"
'';
displayManager = {
defaultSession = "plasma";
sddm = {
enable = true;
wayland.enable = true;
};
};
};
systemd = { services = { NetworkManager-wait-online.enable = false; }; };
@ -117,4 +99,6 @@
};
system.stateVersion = "24.05";
users.users.avery.extraGroups = [ "corectrl" ];
}

View file

@ -0,0 +1,26 @@
{ ... }: {
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/144857c7-877b-46c7-94d9-30a6d6d27cf0";
fsType = "btrfs";
options = [ "compress=zstd:15" ];
};
"/boot" = {
device = "/dev/disk/by-uuid/8084-F762";
fsType = "vfat";
};
"/home" = {
device = "/dev/disk/by-uuid/4bbd6139-7caa-4617-a94f-b185c5f6ca45";
fsType = "btrfs";
options = [ "compress=zstd:15" ];
};
"/mnt/Datos" = {
device = "/dev/disk/by-uuid/994ef2bd-a9fb-4414-9a0a-19b150ffa452";
fsType = "btrfs";
options = [ "compress=zstd:15" "user" "x-systemd.automount" "exec" ];
};
};
}

View file

@ -0,0 +1,10 @@
{ pkgs, ... }: {
services.desktopManager.plasma6.enable = true;
environment.plasma6.excludePackages = with pkgs.kdePackages; [
konsole
oxygen
elisa
kate
okular
];
}

View file

@ -0,0 +1,7 @@
{ pkgs, ... }: {
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
gamescopeSession.enable = true;
};
}