Merge pull request #20 from caperren/working-branch

Working branch
This commit is contained in:
2025-11-07 15:04:45 -08:00
committed by GitHub
14 changed files with 208 additions and 46 deletions

View File

@@ -6,5 +6,6 @@
inkscape inkscape
kdePackages.kdenlive kdePackages.kdenlive
obs-studio obs-studio
pinta
]; ];
} }

View File

@@ -33,13 +33,14 @@
kdePackages.qt6ct kdePackages.qt6ct
killall killall
kitty kitty
swappy
lf lf
minicom minicom
ncdu ncdu
networkmanager networkmanager
networkmanagerapplet networkmanagerapplet
nmap nmap
# nvtopPackages.full # <- Build failure: https://github.com/nixos/nixpkgs/issues/456928 nvtopPackages.full
openrgb-with-all-plugins openrgb-with-all-plugins
pciutils pciutils
rofi-bluetooth rofi-bluetooth

View File

@@ -1,35 +1,32 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
services.displayManager.gdm = {
enable = true;
wayland = true;
};
services.xserver = {
enable = true;
};
hardware.graphics = { hardware.graphics = {
enable = true; enable = true;
enable32Bit = true; enable32Bit = true;
}; };
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
programs.hyprlock.enable = true;
programs.waybar.enable = true;
services.displayManager.gdm = {
enable = true;
wayland = true;
};
services.hypridle.enable = true;
services.xserver.enable = true;
xdg.portal.enable = true; xdg.portal.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
programs.hyprlock.enable = true;
programs.waybar.enable = true;
services.hypridle.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
arandr arandr
bemenu
dunst dunst
flameshot
grim grim
hyprpaper hyprpaper
hyprpicker hyprpicker
@@ -43,7 +40,7 @@
swayimg swayimg
wl-clipboard wl-clipboard
wlogout wlogout
bemenu
]; ];
} }

View File

@@ -4,6 +4,7 @@
enable = true; enable = true;
extraRules = [ extraRules = [
{ {
groups = [ "wheel" ];
commands = [ commands = [
{ {
command = "${pkgs.systemd}/bin/reboot"; command = "${pkgs.systemd}/bin/reboot";
@@ -14,7 +15,16 @@
options = [ "NOPASSWD" ]; options = [ "NOPASSWD" ];
} }
]; ];
groups = [ "wheel" ]; }
{
users = [ "caperren" ];
commands = [
{
command = "${pkgs.nvtopPackages.full}/bin/nvtop";
options = [ "NOPASSWD" "SETENV" ];
}
];
} }
]; ];
}; };

View File

@@ -43,11 +43,16 @@ in
programs.bemenu.enable = true; programs.bemenu.enable = true;
programs.kitty = { programs.kitty = {
enable = true;
font.name = "JetBrains Mono"; font.name = "JetBrains Mono";
settings = {
allow_remote_control = true;
};
}; };
# Assets # Assets/scripts
home.file.".config/streamdeck-ui/icons".source = ./dotfiles/streamdeck/icons; home.file.".config/streamdeck-ui/icons".source = ./dotfiles/streamdeck/icons;
home.file.".config/hypr/scripts".source = ./dotfiles/.config/hypr/scripts;
# Application config files # Application config files
home.file.".config/glances/glances.conf".source = ./dotfiles/.config/glances/glances.conf; home.file.".config/glances/glances.conf".source = ./dotfiles/.config/glances/glances.conf;
@@ -73,16 +78,25 @@ in
home.file.".config/wlogout/layout".source = ./dotfiles/wlogout/layout; home.file.".config/wlogout/layout".source = ./dotfiles/wlogout/layout;
# Desktop entry files so bemenu can find them # Desktop entry files so bemenu can find them
home.file.".local/share/glava.desktop".source = ./dotfiles/.local/share/glava.desktop; home.file.".local/share/applications/alltop.desktop".source =
home.file.".local/share/jetbrains-toolbox.desktop".source = ./dotfiles/.local/share/applications/alltop.desktop;
./dotfiles/.local/share/jetbrains-toolbox.desktop; home.file.".local/share/applications/glava.desktop".source =
home.file.".local/share/spotify-player.desktop".source = ./dotfiles/.local/share/applications/glava.desktop;
./dotfiles/.local/share/spotify-player.desktop; home.file.".local/share/applications/phonerdp.desktop".source =
./dotfiles/.local/share/applications/phonerdp.desktop;
home.file.".local/share/applications/spotify-player.desktop".source =
./dotfiles/.local/share/applications/spotify-player.desktop;
# Custom bash aliases # Custom bash aliases
home.shellAliases = { home.shellAliases = {
# Streamdeck isn't easy to manually edit, so make a save command to copy any updates to the repo # Phone remote desktop over usb (adb), with some default flags I want
savestreamdeck = "cp ~/.streamdeck_ui.json ~/.nixos-configs/users/caperren/dotfiles/streamdeck/.streamdeck_ui.json"; phonerdp = "scrcpy --no-audio --orientation=0 --turn-screen-off --stay-awake";
# Streamdeck isn't easy to manually edit, so make a save command to copy any updates to the repo
savestreamdeck = "cp ~/.streamdeck_ui.json ~/.nixos-configs/users/caperren/dotfiles/streamdeck/.streamdeck_ui.json";
# Nice to have an alias if I ever want to launch this from cmdline, or see the dbus help string
screenshot = "~/.config/hypr/scripts/screenshot.sh";
}; };
# Theming # Theming
@@ -107,6 +121,9 @@ in
font.name = "JetBrains Mono 11"; font.name = "JetBrains Mono 11";
}; };
home.sessionPath = [
"$HOME/.local/share"
];
home.sessionVariables = { home.sessionVariables = {
GTK_THEME = "Adwaita-dark"; GTK_THEME = "Adwaita-dark";
}; };

View File

@@ -0,0 +1,116 @@
#!/usr/bin/env bash
# Unashamedly taken from: https://www.reddit.com/r/hyprland/comments/13ivh0c/comment/jkgk65k
# Small edits made for my particular needs
# Flags:
# r: region
# s: screen
#
# c: clipboard
# f: file
# i: interactive
# p: pixel
# Example hyprland bindings
#bind = CTRL, SUPER, ALT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh
#bind = , PRINT, exec, ~/.config/hypr/scripts/screenshot.sh rc
#bind = SUPER, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh rf
#bind = CTRL, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh ri
#bind = SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh sc
#bind = SUPER SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh sf
#bind = CTRL SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh si
#bind = ALT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh p
screenshotPath=~/Pictures/screenshots
hyprpicker_launch(){
# Start hyprpicker with screen render (freeze), no fancy, no zoom
# We're just using this to lock the screen in place for grim ingest
hyprpicker -r -n -z -d >/dev/null 2>&1 &
sleep 0.5
}
hyprpicker_kill(){
killall hyprpicker >/dev/null 2>&1
}
trap hyprpicker_kill EXIT
generate_filename(){
# Make sure screenshots path exists first
if [ ! -d "$screenshotPath" ]; then
mkdir -p "$screenshotPath"
fi
echo "$screenshotPath/$(date +%Y-%m-%d_%H-%M-%S).png"
}
active_screen_grim_region(){
hyprctl -j monitors | jq -r '.[] | select(.focused) | "\(.x),\(.y) \(.width)x\(.height)"' -
}
grim_from_region() {
local filename="${1:-}"
local region="${2:-}"
hyprpicker_launch
# Get region of screen to capture, if not passed in
if [ -z "$region" ]; then
region=$(slurp -b '#000000b0' -c '#00000000') || exit 1
fi
# Start grim while screen is still frozen, kill hyprpicker, and pass through data
if [ -z "$filename" ]; then
grim -g "$region" - | {
hyprpicker_kill || true
cat
}
else
grim -g "$region" "$filename" | {
hyprpicker_kill || true
cat
}
fi
}
if [[ $1 == rc ]]; then
grim_from_region | wl-copy
notify-send 'Copied to Clipboard' Screenshot
elif [[ $1 == rf ]]; then
grim_from_region "$(generate_filename)"
notify-send 'Screenshot Taken' "$filename"
elif [[ $1 == ri ]]; then
grim_from_region | swappy -f - -o "$(generate_filename)"
elif [[ $1 == sc ]]; then
grim_from_region "" "$(active_screen_grim_region)" | wl-copy
notify-send 'Copied to Clipboard' Screenshot
elif [[ $1 == sf ]]; then
grim_from_region "$(generate_filename)" "$(active_screen_grim_region)"
notify-send 'Screenshot Taken' "$filename"
elif [[ $1 == si ]]; then
grim_from_region "" "$(active_screen_grim_region)" | swappy -f - -o "$(generate_filename)"
elif [[ $1 == p ]]; then
color=$(hyprpicker -a -r)
wl-copy "$color"
notify-send 'Copied to Clipboard' "$color"
else
notify-send 'Screenshot Shortcuts' "Print:\t\t\tRegion to clip
Super+Print:\t\tRegion to file
Ctrl+Print:\t\tRegion to editor
Shift+Print:\t\t\Screen to clip
Shift+Super+Print:\tScreen to file
Ctrl+Shift+Print:\tScreen to editor
Alt+Print:\t\tColor picker to clip" -t 20000
fi

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=All Top
Exec=bash -c "kitty --single-instance --detach bash -c 'kitten @ launch --type=window --title btop btop ; kitten @ launch --type=window --title nvtop nvtop'"
Icon=alltop
Terminal=false
Categories=Utilities;

View File

@@ -0,0 +1,7 @@
[Desktop Entry]
Type=Application
Name=Phone RDP
Exec=bash -c "scrcpy --no-audio --orientation=0 --turn-screen-off --stay-awake"
Icon=phonerdp
Terminal=false
Categories=Utilities;

View File

@@ -1,7 +0,0 @@
[Desktop Entry]
Type=Application
Name=JetBrains Toolbox
Exec=jetbrains-toolbox
Icon=jetbrains-toolbox
Terminal=false
Categories=Development;IDE;

View File

@@ -4,7 +4,7 @@ monitor=,preferred,auto,1
# Set programs that you use # Set programs that you use
$terminal = kitty $terminal = kitty
$fileManager = thunar $fileManager = thunar
$menu = bemenu-run --line-height 22 --hf "##10AC25" --ff "##10AC25" --tf "##10AC25" $menu = j4-dmenu-desktop --dmenu='bemenu --ignorecase --line-height 22 --hf "##10AC25" --ff "##10AC25" --tf "##10AC25"' --term='kitty'
# Some default env vars # Some default env vars
env = XCURSOR_SIZE,24 env = XCURSOR_SIZE,24
@@ -83,14 +83,13 @@ windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
$mainMod = SUPER $mainMod = SUPER
bind = $mainMod, T, exec, $terminal
bind = $mainMod, C, killactive,
# Launch terminal # Launch terminal
bind = $mainMod, T, exec, $terminal
bind = SHIFT_SUPER, Return, exec, $terminal bind = SHIFT_SUPER, Return, exec, $terminal
# Close active window # Close active window
bind = $mainMod, Shift+q, killactive, bind = $mainMod, Shift+q, killactive,
bind = $mainMod, C, killactive,
bind = $mainMod, M, exit, bind = $mainMod, M, exit,
bind = $mainMod, E, exec, $fileManager bind = $mainMod, E, exec, $fileManager
@@ -157,6 +156,20 @@ bindl=, XF86AudioNext, exec, playerctl next
bind = ,XF86MonBrightnessDown, exec, brightnessctl s 1%- bind = ,XF86MonBrightnessDown, exec, brightnessctl s 1%-
bind = ,XF86MonBrightnessUp, exec, brightnessctl s +1% bind = ,XF86MonBrightnessUp, exec, brightnessctl s +1%
# Screenshots
bind = , PRINT, exec, ~/.config/hypr/scripts/screenshot.sh rc
bind = SUPER, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh rf
bind = CTRL, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh ri
bind = SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh sc
bind = SUPER_SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh sf
bind = CTRL_SHIFT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh si
bind = ALT, PRINT, exec, ~/.config/hypr/scripts/screenshot.sh p
# Jetbrains window rules
# Prevent initial focus for JetBrains popups
windowrulev2 = noinitialfocus, class:^jetbrains-.*$, floating:1, title:^$|^\s$|^win\d+$
# Application launch # Application launch
exec-once = kanshi # Automatically handles display configurations exec-once = kanshi # Automatically handles display configurations
exec-once = ydotoold # Autoclicker/autokeyboard for automation exec-once = ydotoold # Autoclicker/autokeyboard for automation

View File

@@ -176,14 +176,14 @@
"states": { "states": {
"0": { "0": {
"text": "", "text": "",
"icon": "/home/caperren/.config/streamdeck-ui/icons/glances-logo.png", "icon": "/home/caperren/.config/streamdeck-ui/icons/btop-logo.png",
"keys": "", "keys": "",
"write": "", "write": "",
"command": "kitty -e glances", "command": "bash -c \"kitty --single-instance --detach bash -c 'kitten @ launch --type=window --title btop btop ; kitten @ launch --type=window --title nvtop nvtop'\"",
"brightness_change": 0, "brightness_change": 0,
"switch_page": 0, "switch_page": 0,
"switch_state": 0, "switch_state": 0,
"text_vertical_align": "middle", "text_vertical_align": "top",
"text_horizontal_align": "", "text_horizontal_align": "",
"font": "", "font": "",
"font_color": "", "font_color": "",
@@ -263,7 +263,7 @@
"icon": "/home/caperren/.config/streamdeck-ui/icons/spotify-logo.png", "icon": "/home/caperren/.config/streamdeck-ui/icons/spotify-logo.png",
"keys": "", "keys": "",
"write": "", "write": "",
"command": "spotify", "command": "kitty -e spotify_player",
"brightness_change": 0, "brightness_change": 0,
"switch_page": 0, "switch_page": 0,
"switch_state": 0, "switch_state": 0,
@@ -582,7 +582,7 @@
"write": "", "write": "",
"command": "kitty -e bash -i -c nrs", "command": "kitty -e bash -i -c nrs",
"brightness_change": 0, "brightness_change": 0,
"switch_page": 0, "switch_page": 1,
"switch_state": 0, "switch_state": 0,
"text_vertical_align": "middle", "text_vertical_align": "middle",
"text_horizontal_align": "", "text_horizontal_align": "",
@@ -603,7 +603,7 @@
"write": "", "write": "",
"command": "kitty -e bash -i -c nus", "command": "kitty -e bash -i -c nus",
"brightness_change": 0, "brightness_change": 0,
"switch_page": 0, "switch_page": 1,
"switch_state": 0, "switch_state": 0,
"text_vertical_align": "middle", "text_vertical_align": "middle",
"text_horizontal_align": "", "text_horizontal_align": "",

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB