From b138866194c5d8f1cc74fb3f17b7e39962a23cc2 Mon Sep 17 00:00:00 2001 From: Corwin Perren Date: Tue, 1 Jul 2025 23:50:29 -0700 Subject: [PATCH 1/2] Add desktop file for spotify-player, jetbrains-toolbox, autostart hypridle, dotfiles for hypridle, idle_inhibitor configs, gtk app dark theme --- modules/application-groups/media.nix | 40 +++++++++++++------ modules/application-groups/programming.nix | 33 ++++++++++----- users/caperren/caperren.nix | 28 ++++++++++++- .../caperren/dotfiles/hypridle/hypridle.conf | 33 +++++++++++++++ .../dotfiles/hyprland/hyprland-common.conf | 10 +++-- .../dotfiles/waybar/cap-nr200p/config | 4 +- .../caperren/dotfiles/waybar/cap-slim7/config | 4 +- 7 files changed, 124 insertions(+), 28 deletions(-) create mode 100644 users/caperren/dotfiles/hypridle/hypridle.conf diff --git a/modules/application-groups/media.nix b/modules/application-groups/media.nix index e15ce8a..57263c7 100644 --- a/modules/application-groups/media.nix +++ b/modules/application-groups/media.nix @@ -1,5 +1,19 @@ { config, pkgs, ... }: -{ +let + spotifyPlayerDesktopEntry = pkgs.writeTextFile { + name = "spotify-player-desktop"; + destination = "/share/applications/spotify-player.desktop"; + text = '' + [Desktop Entry] + Type=Application + Name=Spotify Player + Exec=kitty -e spotify_player + Icon=spotify_player + Terminal=false + Categories=Media; + ''; + }; +in { boot = { # Make v4l2loopback kernel module available to NixOS. extraModulePackages = with config.boot.kernelPackages; [ @@ -26,18 +40,20 @@ }; environment.systemPackages = with pkgs; [ - deadbeef - vlc - sox - audacity - glava - spotify-player - projectm_3 - obs-studio - darktable - # Encountering build failures - # plex-desktop + audacity + darktable + deadbeef + glava + obs-studio + # plex-desktop --> Encountering build failures + projectm_3 + sox + spotify-player + spotifyPlayerDesktopEntry + vlc ]; + + } diff --git a/modules/application-groups/programming.nix b/modules/application-groups/programming.nix index b194bf3..963052a 100644 --- a/modules/application-groups/programming.nix +++ b/modules/application-groups/programming.nix @@ -1,20 +1,35 @@ { config, pkgs, ... }: -{ +let + jetbrainsToolboxDesktopEntry = pkgs.writeTextFile { + name = "jetbrains-toolbox-desktop"; + destination = "/share/applications/jetbrains-toolbox.desktop"; + text = '' + [Desktop Entry] + Type=Application + Name=JetBrains Toolbox + Exec=jetbrains-toolbox + Icon=jetbrains-toolbox + Terminal=false + Categories=Development;IDE; + ''; + }; +in { environment.systemPackages = with pkgs; [ - vscode-with-extensions - nixfmt-rfc-style - platformio - jetbrains-toolbox arduino-ide - python311Full gcc + jetbrains-toolbox + jetbrainsToolboxDesktopEntry + nix-update + nixfmt-rfc-style + nixos-generators nodejs + platformio + python311Full + python3Full stm32cubemx stm32flash - python3Full - nix-update - nixos-generators teensy-udev-rules + vscode-with-extensions ]; services.udev.extraRules = '' diff --git a/users/caperren/caperren.nix b/users/caperren/caperren.nix index b60935f..677c9c0 100644 --- a/users/caperren/caperren.nix +++ b/users/caperren/caperren.nix @@ -3,7 +3,9 @@ let hyprlandConfigPath = ./. + "/dotfiles/hyprland/${config.networking.hostName}"; kanshiConfigPath = ./. + "/dotfiles/kanshi/${config.networking.hostName}"; spotifyPlayerAppTomlTextTemplate = builtins.readFile ./dotfiles/spotify-player/app.toml; - spotifyPlayerAppTomlText = builtins.replaceStrings [ "{{hostname}}" ] [ config.networking.hostName ] spotifyPlayerAppTomlTextTemplate; + spotifyPlayerAppTomlText = + builtins.replaceStrings [ "{{hostname}}" ] [ config.networking.hostName ] + spotifyPlayerAppTomlTextTemplate; waybarConfigPath = ./. + "/dotfiles/waybar/${config.networking.hostName}"; in { @@ -35,11 +37,35 @@ in userEmail = "caperren@gmail.com"; }; + home.file.".config/hypr/hypridle.conf".source = ./dotfiles/hypridle/hypridle.conf; home.file.".config/hypr/hyprland-common.conf".source = ./dotfiles/hyprland/hyprland-common.conf; home.file.".config/hypr/hyprland.conf".source = hyprlandConfigPath + "/hyprland.conf"; home.file.".config/kanshi/config".source = kanshiConfigPath + "/config"; home.file.".config/spotify-player/app.toml".text = spotifyPlayerAppTomlText; home.file.".config/waybar/config".source = waybarConfigPath + "/config"; home.file.".config/wlogout/layout".source = ./dotfiles/wlogout/layout; + + gtk = { + enable = true; + + theme = { + name = "Adwaita-dark"; # Or another dark theme + package = pkgs.gnome-themes-extra; + }; + + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; + }; + + cursorTheme = { + name = "Bibata-Modern-Ice"; + package = pkgs.bibata-cursors; + }; + }; + + home.sessionVariables = { + GTK_THEME = "Adwaita-dark"; + }; }; } diff --git a/users/caperren/dotfiles/hypridle/hypridle.conf b/users/caperren/dotfiles/hypridle/hypridle.conf new file mode 100644 index 0000000..f4dd2c8 --- /dev/null +++ b/users/caperren/dotfiles/hypridle/hypridle.conf @@ -0,0 +1,33 @@ +general { + lock_cmd = pidof hyprlock || hyprlock # Avoid starting multiple hyprlock instances + before_sleep_cmd = loginctl lock-session # Lock before suspend + after_sleep_cmd = hyprctl dispatch dpms on # To avoid having to press a key twice to turn on the display +} + +listener { + timeout = 60 # 1 minute + on-timeout = brightnessctl -sd platform::kbd_backlight set 0 # Turn off keyboard backlight + on-resume = brightnessctl -rd platform::kbd_backlight # Turn on keyboard backlight +} + +listener { + timeout = 180 # 3 minutes + on-timeout = brightnessctl -s set 1% # Set monitor backlight to minimum + on-resume = brightnessctl -r # monitor backlight restore +} + +listener { + timeout = 600 # 10 minutes + on-timeout = loginctl lock-session # Lock screen when timeout has passed +} + +listener { + timeout = 610 # 10 minutes, 10 seconds + on-timeout = hyprctl dispatch dpms off # Screen off when timeout has passed + on-resume = hyprctl dispatch dpms on # Screen on when activity is detected after timeout has fired +} + +# listener { +# timeout = 1200 # 20 minutes +# on-timeout = systemctl suspend # Suspend pc +# } diff --git a/users/caperren/dotfiles/hyprland/hyprland-common.conf b/users/caperren/dotfiles/hyprland/hyprland-common.conf index f315bc1..659ea1c 100644 --- a/users/caperren/dotfiles/hyprland/hyprland-common.conf +++ b/users/caperren/dotfiles/hyprland/hyprland-common.conf @@ -162,12 +162,14 @@ bind = ,XF86MonBrightnessDown, exec, brightnessctl s 1%- bind = ,XF86MonBrightnessUp, exec, brightnessctl s +1% # Application launch -exec-once = kanshi & -exec-once = ydotoold & +exec-once = kanshi +exec-once = ydotoold +exec-once = hypridle -exec-once = sleep 3 && waybar +# Loop needed until waybar gtk icon crash fixed +exec-once = bash -c "while true; do waybar; sleep 3; done" exec-once = sleep 5 && nm-applet exec-once = sleep 5 && blueman-applet exec-once = sleep 5 && streamdeck -n -exec-once = sleep 5 & telegram-desktop -startintray \ No newline at end of file +exec-once = sleep 5 && Telegram -startintray \ No newline at end of file diff --git a/users/caperren/dotfiles/waybar/cap-nr200p/config b/users/caperren/dotfiles/waybar/cap-nr200p/config index 5388a83..cf95c60 100644 --- a/users/caperren/dotfiles/waybar/cap-nr200p/config +++ b/users/caperren/dotfiles/waybar/cap-nr200p/config @@ -43,7 +43,9 @@ "format-icons": { "activated": "󰈈", "deactivated": "󰈉" - } + }, + "tooltip-format-activated": "idle-inhibitor on", + "tooltip-format-deactivated": "idle-inhibitor off" }, "clock": { "format": "{:%I:%M:%S %p | %a | %F}", diff --git a/users/caperren/dotfiles/waybar/cap-slim7/config b/users/caperren/dotfiles/waybar/cap-slim7/config index dedaf9c..075b96c 100644 --- a/users/caperren/dotfiles/waybar/cap-slim7/config +++ b/users/caperren/dotfiles/waybar/cap-slim7/config @@ -70,7 +70,9 @@ "format-icons": { "activated": "󰈈", "deactivated": "󰈉" - } + }, + "tooltip-format-activated": "idle-inhibitor on", + "tooltip-format-deactivated": "idle-inhibitor off" }, "clock": { "format": "{:%I:%M:%S %p | %a | %F}", From 17495207aa351e1cd572d866f33ca423bf8ead99 Mon Sep 17 00:00:00 2001 From: Corwin Perren Date: Tue, 1 Jul 2025 23:57:51 -0700 Subject: [PATCH 2/2] Default brightness for screen and keyboard on laptop, default audio volume level for all systems --- users/caperren/dotfiles/hyprland/cap-slim7/hyprland.conf | 6 +++++- users/caperren/dotfiles/hyprland/hyprland-common.conf | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/users/caperren/dotfiles/hyprland/cap-slim7/hyprland.conf b/users/caperren/dotfiles/hyprland/cap-slim7/hyprland.conf index 567014c..92ebdeb 100644 --- a/users/caperren/dotfiles/hyprland/cap-slim7/hyprland.conf +++ b/users/caperren/dotfiles/hyprland/cap-slim7/hyprland.conf @@ -2,4 +2,8 @@ monitor=eDP-2,2560x1600@165,auto,1,vrr,1 # Source configs -source = ~/.config/hypr/hyprland-common.conf \ No newline at end of file +source = ~/.config/hypr/hyprland-common.conf + +# Application launch +exec-once = brightnessctl -sd platform::kbd_backlight set 1 +exec-once = brightnessctl -s set 30% \ No newline at end of file diff --git a/users/caperren/dotfiles/hyprland/hyprland-common.conf b/users/caperren/dotfiles/hyprland/hyprland-common.conf index 659ea1c..516e3e0 100644 --- a/users/caperren/dotfiles/hyprland/hyprland-common.conf +++ b/users/caperren/dotfiles/hyprland/hyprland-common.conf @@ -166,6 +166,8 @@ exec-once = kanshi exec-once = ydotoold exec-once = hypridle +exec-once = wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 10% + # Loop needed until waybar gtk icon crash fixed exec-once = bash -c "while true; do waybar; sleep 3; done"