From a4bdda5d86e7b60ce35be75f089bf4f2bfed678c Mon Sep 17 00:00:00 2001 From: datsudo <76833632+datsudo@users.noreply.github.com> Date: Thu, 5 Jun 2025 00:28:43 +0800 Subject: [PATCH] massive --- bin/hypr-custom-kill | 7 + bin/wl-toggle-keyboard | 25 ++ bin/wl-toggle-touchpad | 25 ++ config/foot-dracula | 19 ++ config/hypr/hyprlock.conf | 53 ++++ config/hypr/hyprpaper.conf | 2 + config/hypr/hyprswitch.css | 4 + config/hypr/plugins.conf | 44 +++ config/waybar/scripts/launch.sh | 2 +- flake.lock | 480 +++++++++++++++++++++++++++++- flake.nix | 4 + system/configuration.nix | 13 +- system/de-twm.nix | 4 +- system/hardware-configuration.nix | 6 +- user/home.nix | 3 +- user/hyprland.nix | 252 ++++++++++++++++ user/subs/foot.nix | 16 +- user/subs/waybar.nix | 12 +- user/terminals.nix | 5 - user/theming.nix | 7 +- user/utils.nix | 1 + 21 files changed, 961 insertions(+), 23 deletions(-) create mode 100755 bin/hypr-custom-kill create mode 100755 bin/wl-toggle-keyboard create mode 100755 bin/wl-toggle-touchpad create mode 100644 config/foot-dracula create mode 100644 config/hypr/hyprlock.conf create mode 100644 config/hypr/hyprpaper.conf create mode 100644 config/hypr/hyprswitch.css create mode 100644 config/hypr/plugins.conf create mode 100644 user/hyprland.nix diff --git a/bin/hypr-custom-kill b/bin/hypr-custom-kill new file mode 100755 index 0000000..16c37e6 --- /dev/null +++ b/bin/hypr-custom-kill @@ -0,0 +1,7 @@ +#!/usr/bin/env bash + +if [ "$(hyprctl activewindow -j | jq -r ".class")" = "Steam" ]; then + xdotool getactivewindow windowunmap +else + hyprctl dispatch killactive "" +fi \ No newline at end of file diff --git a/bin/wl-toggle-keyboard b/bin/wl-toggle-keyboard new file mode 100755 index 0000000..216df8d --- /dev/null +++ b/bin/wl-toggle-keyboard @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +export STATUS_FILE="$XDG_RUNTIME_DIR/keyboard.status" + +enable_keyboard() { + printf "true" > "$STATUS_FILE" + notify-send -u normal "Enabling Keyboard" + hyprctl keyword '$LAPTOP_KB_ENABLED' "true" -r +} + +disable_keyboard() { + printf "false" > "$STATUS_FILE" + notify-send -u normal "Disabling Keyboard" + hyprctl keyword '$LAPTOP_KB_ENABLED' "false" -r +} + +if ! [ -f "$STATUS_FILE" ]; then + disable_keyboard +else + if [ $(cat "$STATUS_FILE") = "true" ]; then + disable_keyboard + elif [ $(cat "$STATUS_FILE") = "false" ]; then + enable_keyboard + fi +fi diff --git a/bin/wl-toggle-touchpad b/bin/wl-toggle-touchpad new file mode 100755 index 0000000..00eea12 --- /dev/null +++ b/bin/wl-toggle-touchpad @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +export STATUS_FILE="$XDG_RUNTIME_DIR/touchpad.status" + +enable_touchpad() { + printf "true" >"$STATUS_FILE" + notify-send -u normal "Enabling touchpad" + hyprctl keyword '$TOUCHPAD_ENABLED' "true" -r +} + +disable_touchpad() { + printf "false" >"$STATUS_FILE" + notify-send -u normal "Disabling Touchpad" + hyprctl keyword '$TOUCHPAD_ENABLED' "false" -r +} + +if ! [ -f "$STATUS_FILE" ]; then + disable_touchpad +else + if [ $(cat "$STATUS_FILE") = "true" ]; then + disable_touchpad + elif [ $(cat "$STATUS_FILE") = "false" ]; then + enable_touchpad + fi +fi diff --git a/config/foot-dracula b/config/foot-dracula new file mode 100644 index 0000000..ccaaa24 --- /dev/null +++ b/config/foot-dracula @@ -0,0 +1,19 @@ +[colors] +foreground=f8f8f2 +background=282a36 +regular0=000000 +regular1=ff5555 +regular2=50fa7b +regular3=f1fa8c +regular4=bd93f9 +regular5=ff79c6 +regular6=8be9fd +regular7=bfbfbf +bright0=4d4d4d +bright1=ff6e67 +bright2=5af78e +bright3=f4f99d +bright4=caa9fa +bright5=ff92d0 +bright6=9aedfe +bright7=e6e6e6 diff --git a/config/hypr/hyprlock.conf b/config/hypr/hyprlock.conf new file mode 100644 index 0000000..6b0e49e --- /dev/null +++ b/config/hypr/hyprlock.conf @@ -0,0 +1,53 @@ +general { + hide_cursor = true + no_fade_in = true + no_fade_out = true + grace = 0 + ignore_empty_input = true +} + +background { + path = /ar1/Wallpapers/WP-000010.png +} + +input-field { + monitor = + size = 250, 60 + outline_thickness = 2 + dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8 + dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0 + dots_center = true + outer_color = rgba(0, 0, 0, 0) + inner_color = rgba(0, 0, 0, 0.2) + font_color = rgba(82aaffaa) + fade_on_empty = false + rounding = 20 + check_color = rgb(204, 136, 34) + placeholder_text = Input Password... + hide_input = false + position = 0, -200 + halign = center + valign = center +} + +label { + monitor = + text = cmd[update:1000] echo "$(date +"%-I:%M")" + color = rgba(242, 243, 244, 0.75) + font_size = 95 + font_family = Host Grotesk Bold + position = 0, 200 + halign = center + valign = center +} + +label { + monitor = + text = cmd[update:1000] echo "$(date +"%A, %B %d, %Y")" + color = rgba(242, 243, 244, 0.75) + font_size = 22 + font_family = Host Grotesk SemiBold + position = 0, 300 + halign = center + valign = center +} diff --git a/config/hypr/hyprpaper.conf b/config/hypr/hyprpaper.conf new file mode 100644 index 0000000..637c5f8 --- /dev/null +++ b/config/hypr/hyprpaper.conf @@ -0,0 +1,2 @@ +preload = /ar1/Wallpapers/WP-000016.png +wallpaper = , /ar1/Wallpapers/WP-000016.png diff --git a/config/hypr/hyprswitch.css b/config/hypr/hyprswitch.css new file mode 100644 index 0000000..9dcb19f --- /dev/null +++ b/config/hypr/hyprswitch.css @@ -0,0 +1,4 @@ +* { + color: white; + font-family: Host Grotesk, sans-serif; +} diff --git a/config/hypr/plugins.conf b/config/hypr/plugins.conf new file mode 100644 index 0000000..cd81d38 --- /dev/null +++ b/config/hypr/plugins.conf @@ -0,0 +1,44 @@ +plugin { + ### https://github.com/outfoxxed/hy3 + hy3 { + no_gaps_when_only = 1 + node_collapse_policy = 0 + group_inset = 5 + tab_first_window = false + + tabs { + border_width = 0 + height = 15 + padding = 0 + from_top = false + radius = 0 + rounding = 0 + render_text = true # default: true + text_center = true # default: false + text_font = Host Grotesk Bold + text_height = 8 + + col.active = rgba(646464ff) + col.active.text = rgba(ffffffff) + col.active.border = rgba(4f3f86ff) + + col.inactive = rgba(010f1dff) + col.inactive.text = rgba(8ba2b6ff) + col.inactive.border = rgba(1d374bff) + + col.urgent = rgba(dc2e29ff) + col.urgent.text = rgba(ffffffff) + col.urgent.border = rgba(d76443ff) + + opacity = 1.0 + } + + autotile { + enable = false + ephemeral_groups = true + trigger_width = 800 # default: 0 + trigger_height = 500 # default: 0 + workspaces = all # default: all + } + } +} diff --git a/config/waybar/scripts/launch.sh b/config/waybar/scripts/launch.sh index 42969dc..6a58f61 100755 --- a/config/waybar/scripts/launch.sh +++ b/config/waybar/scripts/launch.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env fish +#!/usr/bin/env bash killall waybar waybar -c ~/.config/waybar/topbar.jsonc -s ~/.config/waybar/topbar.css & diff --git a/flake.lock b/flake.lock index 2f973ae..5227df4 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,76 @@ { "nodes": { + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1747864449, + "narHash": "sha256-PIjVAWghZhr3L0EFM2UObhX84UQxIACbON0IC0zzSKA=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "389372c5f4dc1ac0e7645ed29a35fd6d71672ef5", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -41,7 +112,332 @@ "type": "github" } }, + "hy3": { + "inputs": { + "hyprland": [ + "hyprland" + ] + }, + "locked": { + "lastModified": 1747077256, + "narHash": "sha256-ryaXKevnISRiJb93QIAv7tGc6ZJqSkwETKm4oGh8HWI=", + "owner": "outfoxxed", + "repo": "hy3", + "rev": "567dc9dd20e15d95a56a81c516a70dba30bc2c9c", + "type": "github" + }, + "original": { + "owner": "outfoxxed", + "repo": "hy3", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1745948457, + "narHash": "sha256-lzTV10FJTCGNtMdgW5YAhCAqezeAzKOd/97HbQK8GTU=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "ac903e80b33ba6a88df83d02232483d99f327573", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1745015490, + "narHash": "sha256-apEJ9zoSzmslhJ2vOKFcXTMZLUFYzh1ghfB6Rbw3Low=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "60754910946b4e2dc1377b967b7156cb989c5873", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-protocols": "hyprland-protocols", + "hyprland-qtutils": "hyprland-qtutils", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1748976536, + "narHash": "sha256-57NNHTFCAZOMNilYRS33JiDswrfUgBIINNMYAjeC+2g=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "b5c0d0b8aa8bb095ac447bf6c73486cb1c172b6e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-plugins": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nixpkgs": [ + "hyprland-plugins", + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland-plugins", + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1748526041, + "narHash": "sha256-QyUACXhQJ2+K0YxwEuAfpyCXqbdCCHj1jNAWJy+vUxw=", + "owner": "hyprwm", + "repo": "hyprland-plugins", + "rev": "2eee96fe52fa0923c0aae647eb7901b5b51df3db", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-plugins", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1743714874, + "narHash": "sha256-yt8F7NhMFCFHUHy/lNjH/pjZyIDFNk52Q4tivQ31WFo=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "3a5c2bda1c1a4e55cc1330c782547695a93f05b2", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprland-qt-support": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprland-qtutils", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "hyprland-qtutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-qtutils", + "systems" + ] + }, + "locked": { + "lastModified": 1737634706, + "narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=", + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "rev": "8810df502cdee755993cb803eba7b23f189db795", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qt-support", + "type": "github" + } + }, + "hyprland-qtutils": { + "inputs": { + "hyprland-qt-support": "hyprland-qt-support", + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-qtutils", + "hyprlang", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1745951494, + "narHash": "sha256-2dModE32doiyQMmd6EDAQeZnz+5LOs6KXyE0qX76WIg=", + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "rev": "4be1d324faf8d6e82c2be9f8510d299984dfdd2e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-qtutils", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1747484975, + "narHash": "sha256-+LAQ81HBwG0lwshHlWe0kfWg4KcChIPpnwtnwqmnoEU=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "163c83b3db48a17c113729c220a60b94596c9291", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1746635225, + "narHash": "sha256-W9G9bb0zRYDBRseHbVez0J8qVpD5QbizX67H/vsudhM=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "674ea57373f08b7609ce93baff131117a0dfe70d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1747584298, + "narHash": "sha256-PH9qZqWLHvSBQiUnA0NzAyQA3tu2no2z8kz0ZeHWj4w=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "e511882b9c2e1d7a75d45d8fddd2160daeafcbc3", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, "nixpkgs": { + "locked": { + "lastModified": 1748460289, + "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { "locked": { "lastModified": 1747542820, "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", @@ -57,13 +453,95 @@ "type": "github" } }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1747372754, + "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, "root": { "inputs": { "home-manager": "home-manager", - "nixpkgs": "nixpkgs", + "hy3": "hy3", + "hyprland": "hyprland", + "hyprland-plugins": "hyprland-plugins", + "nixpkgs": "nixpkgs_2", "zen-browser": "zen-browser" } }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1745871725, + "narHash": "sha256-M24SNc2flblWGXFkGQfqSlEOzAGZnMc9QG3GH4K/KbE=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "76bbf1a6b1378e4ab5230bad00ad04bc287c969e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + }, "zen-browser": { "inputs": { "home-manager": "home-manager_2", diff --git a/flake.nix b/flake.nix index 427ec14..8add24e 100644 --- a/flake.nix +++ b/flake.nix @@ -8,6 +8,10 @@ url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; }; + hy3 = { + url = "github:outfoxxed/hy3"; + inputs.hyprland.follows = "hyprland"; + }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/system/configuration.nix b/system/configuration.nix index 541d119..adc66ef 100644 --- a/system/configuration.nix +++ b/system/configuration.nix @@ -62,6 +62,7 @@ enable = true; extraPackages = with pkgs; [ intel-media-driver ]; }; + bluetooth.enable = true; }; ### SECURITY @@ -74,7 +75,7 @@ users.dpv = { isNormalUser = true; description = "dpv"; - extraGroups = [ "networkmanager" "wheel" "libvirtd" ]; + extraGroups = [ "networkmanager" "wheel" "libvirtd" "input" ]; shell = pkgs.zsh; packages = [ ]; }; @@ -102,6 +103,9 @@ ### UNFREE PACKAGES nixpkgs.config.allowUnfree = true; + nixpkgs.config.permittedInsecurePackages = [ + "openssl-1.1.1w" + ]; ### PACKAGES TO INSTALL IN A SYSTEM environment.systemPackages = with pkgs; [ @@ -112,7 +116,8 @@ keepassxc rustup gcc gnumake clang-tools nodejs pnpm imagemagick pandoc nixd dbeaver-bin gdu sl pavucontrol ffmpeg ffmpegthumbnailer p7zip rar unrar zip unzip dig nix-du - nh graphviz libnotify drawing wmctrl android-tools + nh graphviz libnotify drawing wmctrl android-tools libinput + alsa-utils libsForQt5.qt5ct sublime4 simplescreenrecorder gpick # stuff that will ONLY work in X @@ -120,6 +125,10 @@ ]; ### ENV + environment.sessionVariables = { + QT_QPA_PLATFORMTHEME = "qt5ct"; + QT_STYLE_OVERRIDE = "adwaita-dark"; + }; environment.variables = { EDITOR = "nvim"; }; diff --git a/system/de-twm.nix b/system/de-twm.nix index 11b7c61..a106544 100644 --- a/system/de-twm.nix +++ b/system/de-twm.nix @@ -11,11 +11,11 @@ in options.deWm = { cinnamon.enable = mkOption { - default = true; ## at least one of them has to be enabled + default = false; ## at least one of them has to be enabled type = types.bool; }; xfce.enable = mkOption { - default = true; + default = false; type = types.bool; }; hyprland.enable = mkOption { diff --git a/system/hardware-configuration.nix b/system/hardware-configuration.nix index 844b9ae..50ab739 100644 --- a/system/hardware-configuration.nix +++ b/system/hardware-configuration.nix @@ -8,7 +8,7 @@ [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "nvme" "usbhid" "sd_mod" "rtsx_usb_sdmmc" ]; + boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_usb_sdmmc" ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; @@ -19,13 +19,13 @@ }; fileSystems."/boot" = - { device = "/dev/disk/by-uuid/A717-5D98"; + { device = "/dev/disk/by-uuid/098E-6AB1"; fsType = "vfat"; options = [ "fmask=0077" "dmask=0077" ]; }; swapDevices = - [ { device = "/dev/disk/by-uuid/33b020e2-7859-49d2-85e4-b0c8a778ab1d"; } + [ { device = "/dev/disk/by-uuid/45e17bbc-04e7-423e-a1e8-62381dfd3e77"; } ]; # Enables DHCP on each ethernet and wireless interface. In case of scripted networking diff --git a/user/home.nix b/user/home.nix index 281a1db..53319bd 100644 --- a/user/home.nix +++ b/user/home.nix @@ -1,4 +1,4 @@ -{ config, pkgs, lib, ... }: +{ inputs, config, pkgs, lib, ... }: { imports = [ @@ -12,6 +12,7 @@ ./utils.nix ./subs/mpv.nix ./subs/git.nix + ./hyprland.nix ]; nixpkgs.config.allowUnfree = true; diff --git a/user/hyprland.nix b/user/hyprland.nix new file mode 100644 index 0000000..de60806 --- /dev/null +++ b/user/hyprland.nix @@ -0,0 +1,252 @@ +{ config, lib, pkgs, ... }: +{ + imports = [ + ../shared/hyprland.nix + ./subs/waybar.nix + ]; + + config = lib.mkIf config.shared.hyprland.enable { + + wayland.windowManager.hyprland = { + enable = true; + + package = null; + + settings = { + "$mod" = "SUPER"; + "$clipboard" = "rofi -modi Clipboard:~/.config/rofi/scripts/cliphist-rofi -show Clipboard -theme ~/.config/rofi/menu.rasi"; + "$browser" = "zen-beta"; + "$fileManager" = "thunar"; + "$terminal" = "foot"; + "$LAPTOP_KB_ENABLED" = true; + "$TOUCHPAD_ENABLED" = true; + + monitor = [",preferred,auto,auto"]; + + misc = { + disable_hyprland_logo = true; + disable_splash_rendering = true; + force_default_wallpaper = "-1"; + }; + + general = { + gaps_in = 0; + gaps_out = 0; + border_size = 1; + resize_on_border = false; + allow_tearing = false; + layout = "master"; + }; + + exec-once = [ + "waybar -c ~/.config/waybar/topbar.jsonc -s ~/.config/waybar/topbar.css" + "wl-paste --watch cliphist store" + "hyprswitch init --show-title &" + "hyprpaper" + ]; + + exec-shutdown = "cliphist wipe"; + + decoration = { + rounding = 0; + rounding_power = 0; + dim_inactive = false; + active_opacity = "1.0"; + inactive_opacity = "1.0"; + shadow = { + enabled = false; + }; + blur = { + enabled = false; + }; + }; + + animations = { + enabled = false; + }; + + dwindle = { + pseudotile = true; + preserve_split = true; + }; + + master = { + new_status = "master"; + }; + + input = { + kb_layout = "us"; + kb_options = "caps:escape"; + follow_mouse = 1; + sensitivity = 0; + touchpad = { + natural_scroll = true; + }; + }; + + gestures = { + workspace_swipe = true; + }; + + device = [ + { + name = "at-translated-set-2-keyboard"; + enabled = "$LAPTOP_KB_ENABLED"; + } + { + name = "elan1301:00-04f3:30c6-touchpad"; + enabled = "$TOUCHPAD_ENABLED"; + } + ]; + + group = { + "col.border_active" = "rgba(172729FF)"; + "col.border_inactive" = "rgba(111111FF)"; + + groupbar = { + enabled = true; + font_family = "SF Pro Display"; + font_size = 10; + indicator_height = 15; + render_titles = false; + rounding = 0; + round_only_edges = false; + gradients = false; + "col.active" = "rgba(172729FF)"; + "col.inactive" = "rgba(111111FF)"; + gaps_in = 0; + gaps_out = 0; + keep_upper_gap = false; + }; + }; + + unbind = [ "$mod, W" ]; + + bind = [ + "$mod, Q, exec, ~/.local/bin/hypr-custom-kill" + "$mod, X, exec, hyprlock" + "$mod Shift, Space, togglefloating," + "$mod, Return, exec, $terminal" + "$mod, C, exec, speedcrunch" + "$mod, B, exec, $browser" + "$mod, F, exec, $fileManager" + "$mod, T, exec, flatpak run eu.betterbird.Betterbird" + "$mod, M, exec, emacsclient -ca ''" + "$mod Shift, P, exec, hyprshot -z -m region -o ~/Pictures" + "$mod Shift, W, exec, hyprshot -z -m window -o ~/Pictures/" + ", PRINT, exec, hyprshot -z -m output -o ~/Pictures" + "$mod Ctrl, C, exec, hyprpicker --autocopy --format=hex" + "$mod Ctrl, W, exec, killall hyprpaper && hyprpaper" + "$mod Ctrl, 1, exec, ~/.local/bin/books" + "$mod Shift, D, exec, ~/.local/bin/define" + "Alt, Space, exec, ~/.config/rofi/scripts/launcher.sh" + "Ctrl Alt, N, exec, ~/.config/rofi/scripts/powermenu.sh" + "$mod Ctrl Shift, 7, exec, ~/.local/bin/wl-toggle-keyboard && ~/.local/bin/wl-toggle-touchpad" + "$mod Ctrl, B, exec, ~/.config/waybar/scripts/launch.sh" + "$mod, Z, exec, $clipboard" + "ALT, Tab, exec, hyprswitch simple -w --switch-type client" + "ALT Shift, Tab, exec, hyprswitch simple -r -w --switch-type client" + "$mod, Tab, exec, hyprswitch simple --switch-type workspace" + "$mod Shift, Tab, exec, hyprswitch simple -r --switch-type workspace" + "$mod, w, togglegroup" + "$mod, left, movefocus, l" + "$mod, right, movefocus, r" + "$mod, up, movefocus, u" + "$mod, down, movefocus, d" + "$mod, H, movefocus, l" + "$mod, L, movefocus, r" + "$mod, K, movefocus, u" + "$mod, J, movefocus, d" + "$mod Shift, H, movewindow, l" + "$mod Shift, L, movewindow, r" + "$mod Shift, K, movewindow, u" + "$mod Shift, J, movewindow, d" + "$mod, 1, workspace, 1" + "$mod, 2, workspace, 2" + "$mod, 3, workspace, 3" + "$mod, 4, workspace, 4" + "$mod, 5, workspace, 5" + "$mod, 6, workspace, 6" + "$mod, 7, workspace, 7" + "$mod, 8, workspace, 8" + "$mod, 9, workspace, 9" + "$mod, 0, workspace, 10" + "$mod SHIFT, 1, movetoworkspace, 1" + "$mod SHIFT, 2, movetoworkspace, 2" + "$mod SHIFT, 3, movetoworkspace, 3" + "$mod SHIFT, 4, movetoworkspace, 4" + "$mod SHIFT, 5, movetoworkspace, 5" + "$mod SHIFT, 6, movetoworkspace, 6" + "$mod SHIFT, 7, movetoworkspace, 7" + "$mod SHIFT, 8, movetoworkspace, 8" + "$mod SHIFT, 9, movetoworkspace, 9" + "$mod SHIFT, 0, movetoworkspace, 10" + "$mod, mouse_down, workspace, e+1" + "$mod, mouse_up, workspace, e-1" + ]; + + bindel = [ + "$mod Ctrl, H, resizeactive, -30 0" + "$mod Ctrl, L, resizeactive, 30 0" + "$mod Ctrl, K, resizeactive, 0 -30" + "$mod Ctrl, J, resizeactive, 0 30" + ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" + ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ",XF86MonBrightnessUp, exec, brightnessctl s 10%+" + ",XF86MonBrightnessDown, exec, brightnessctl s 10%-" + ]; + + bindm = [ + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + + bindl = [ + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPause, exec, playerctl play-pause" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioPrev, exec, playerctl previous" + ]; + + windowrule = [ + "suppressevent maximize, class:.*" + "nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0" + "workspace 2,class:(zen)" + "workspace 2,class:(google-chrome)" + "workspace 3,class:(vesktop)" + "float,class:(blueman-manager)" + "float,title:(Dictionary)" + "float,title:(SpeedCrunch)" + ]; + + workspace = [ + "1,persistent:true" + "2,persistent:true" + "3,persistent:true" + "4,persistent:true" + "5,persistent:true" + ]; + }; + + systemd.variables = [ "--all" ]; + }; + + home.packages = with pkgs; [ + hyprpaper cliphist hyprswitch wl-clipboard wireplumber + playerctl hyprpicker hyprshot hyprlock evtest nwg-look + blueman + ]; + + home.file = { + ".local/bin/hypr-custom-kill".source = ../bin/hypr-custom-kill; + ".local/bin/wl-toggle-keyboard".source = ../bin/wl-toggle-keyboard; + ".local/bin/wl-toggle-touchpad".source = ../bin/wl-toggle-touchpad; + ".config/hypr/hyprlock.conf".source = ../config/hypr/hyprlock.conf; + ".config/hypr/hyprpaper.conf".source = ../config/hypr/hyprpaper.conf; + ".config/hypr/hyprswitch.css".source = ../config/hypr/hyprswitch.css; + }; + + }; +} diff --git a/user/subs/foot.nix b/user/subs/foot.nix index 4203f4e..e1d0bc0 100644 --- a/user/subs/foot.nix +++ b/user/subs/foot.nix @@ -1,12 +1,16 @@ -{ config, lib, pkgs, ... }: +{ config, lib, ... }: let cfg = config.subs.foot; in { + imports = [ + ../../shared/hyprland.nix + ]; + options = { subs.foot.enable = lib.mkOption { - default = false; + default = config.shared.hyprland.enable; type = lib.types.bool; }; }; @@ -17,9 +21,9 @@ in server.enable = true; settings = { main = { - include = "${pkgs.foot}/share/foot/themes/dracula"; + include = "~/.config/foot/themes/dracula"; term = "xterm-256color"; - font = "Iosevka Nerd Font:size=15"; + font = "Iosevka NF Medium:size=13"; dpi-aware = "yes"; }; bell = { @@ -30,6 +34,10 @@ in }; }; }; + + home.file = { + ".config/foot/themes/dracula".source = ../../config/foot-dracula; + }; }; } diff --git a/user/subs/waybar.nix b/user/subs/waybar.nix index ebe5ea9..ec93df8 100644 --- a/user/subs/waybar.nix +++ b/user/subs/waybar.nix @@ -6,7 +6,7 @@ in { options = { subs.waybar.enable = lib.mkOption { - default = false; + default = true; type = lib.types.bool; }; }; @@ -14,8 +14,14 @@ in config = lib.mkIf cfg.enable { programs.waybar = { enable = true; - settings = { - }; + }; + + home.file = { + ".local/bin/waybar-module-pomodoro".source =../../bin/waybar-module-pomodoro; + ".config/waybar/scripts/launch.sh".source = ../../config/waybar/scripts/launch.sh; + ".config/waybar/topbar.css".source = ../../config/waybar/topbar.css; + ".config/waybar/topbar.jsonc".source = ../../config/waybar/topbar.jsonc; + ".config/waybar/power_menu.xml".source = ../../config/waybar/power_menu.xml; }; }; } diff --git a/user/terminals.nix b/user/terminals.nix index a677bc8..bf703a9 100644 --- a/user/terminals.nix +++ b/user/terminals.nix @@ -21,10 +21,6 @@ in type = types.bool; }; xfceTerminal.enable = mkOption { - default = true; - type = types.bool; - }; - foot.enable = mkOption { default = false; type = types.bool; }; @@ -33,7 +29,6 @@ in config = { subs.ghostty.enable = cfg.ghostty.enable; subs.alacritty.enable = cfg.alacritty.enable; - subs.foot.enable = cfg.foot.enable; home.packages = mkIf cfg.xfceTerminal.enable [ pkgs.xfce.xfce4-terminal ]; diff --git a/user/theming.nix b/user/theming.nix index 894dad4..3ed216e 100644 --- a/user/theming.nix +++ b/user/theming.nix @@ -29,6 +29,10 @@ in gtk = { enable = true; + theme = { + name = "Adwaita-dark"; + package = pkgs.gnome-themes-extra; + }; cursorTheme = { name = "Bibata-Modern-Classic"; package = pkgs.bibata-cursors; @@ -48,7 +52,8 @@ in qt = { enable = true; - platformTheme.name = "gtk"; + platformTheme.name = "qtct"; + style.package = pkgs.adwaita-qt; style.name = "adwaita-dark"; }; diff --git a/user/utils.nix b/user/utils.nix index 6ef0c3e..f200abf 100644 --- a/user/utils.nix +++ b/user/utils.nix @@ -45,6 +45,7 @@ in services.flameshot = { enable = cfg.flameshot.enable; + package = pkgs.flameshot.override { enableWlrSupport = true; }; settings = { General = { savePathFixed = false;