mirror of
https://github.com/caperren/nixos-configs.git
synced 2025-11-08 19:51:14 +00:00
Compare commits
8 Commits
62a324a746
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| b1376e1cea | |||
| 3f83fc9d57 | |||
| f536cea5c3 | |||
| 3d5c6a443b | |||
| 283f9ad213 | |||
| 513cf526d8 | |||
| 069de41562 | |||
| 5bf0216460 |
@@ -6,5 +6,6 @@
|
|||||||
inkscape
|
inkscape
|
||||||
kdePackages.kdenlive
|
kdePackages.kdenlive
|
||||||
obs-studio
|
obs-studio
|
||||||
|
pinta
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
|
||||||
];
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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" ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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 = {
|
||||||
|
# Phone remote desktop over usb (adb), with some default flags I want
|
||||||
|
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
|
# 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";
|
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";
|
||||||
};
|
};
|
||||||
|
|||||||
116
users/caperren/dotfiles/.config/hypr/scripts/screenshot.sh
Executable file
116
users/caperren/dotfiles/.config/hypr/scripts/screenshot.sh
Executable 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
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Type=Application
|
|
||||||
Name=JetBrains Toolbox
|
|
||||||
Exec=jetbrains-toolbox
|
|
||||||
Icon=jetbrains-toolbox
|
|
||||||
Terminal=false
|
|
||||||
Categories=Development;IDE;
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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": "",
|
||||||
|
|||||||
BIN
users/caperren/dotfiles/streamdeck/icons/btop-logo.png
Normal file
BIN
users/caperren/dotfiles/streamdeck/icons/btop-logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
Reference in New Issue
Block a user