diff --git a/assets/wallpapers/neonwoman.png b/assets/wallpapers/neonwoman.png deleted file mode 100644 index 5f035be..0000000 Binary files a/assets/wallpapers/neonwoman.png and /dev/null differ diff --git a/modules/features/hyprland/hyprland-noctalia/default.nix b/modules/features/hyprland/hyprland-noctalia/default.nix new file mode 100644 index 0000000..e02c1bd --- /dev/null +++ b/modules/features/hyprland/hyprland-noctalia/default.nix @@ -0,0 +1,68 @@ +{ self, inputs, ... }: +{ + flake.nixosModules.hyprland-noctalia = + { + pkgs, + lib, + config, + ... + }: + { + imports = [ + self.nixosModules.cursors + self.nixosModules.waybar + self.nixosModules.wallpapers + ]; + + config = { + wallpaper-destinations = [ "Pictures/Wallpapers" ]; + # System-level configuration + programs.hyprland.enable = true; + + environment.systemPackages = with pkgs; [ + waybar + hyprpaper + hyprshot + wofi + kitty + firefox + wl-clipboard + brightnessctl + playerctl + xdg-desktop-portal-hyprland + xdg-desktop-portal-gtk + gnome-keyring + grim + seahorse + flameshot + self.packages."${pkgs.stdenv.hostPlatform.system}".myNoctalia + ]; + + services.gnome.gnome-keyring.enable = true; + services.dbus.packages = [ + pkgs.gnome-keyring + pkgs.gcr + ]; + programs.seahorse.enable = true; + + xdg.portal = { + enable = true; + extraPortals = [ + pkgs.xdg-desktop-portal-gtk + pkgs.xdg-desktop-portal-hyprland + ]; + configPackages = [ pkgs.xdg-desktop-portal-gnome ]; + }; + + # Configure hjem for specified users + hjem.users."${config.username}" = { + enable = true; + files = let + confContents = pkgs.writeText "hyprland.conf" ("exec-once = noctalia-shell\n" + (builtins.readFile ./hyprland.conf)); + in { + ".config/hypr/hyprland.conf".source = confContents; + }; + }; + }; + }; +} diff --git a/modules/features/hyprland/hyprland-noctalia/hyprland.conf b/modules/features/hyprland/hyprland-noctalia/hyprland.conf new file mode 100644 index 0000000..8d344e4 --- /dev/null +++ b/modules/features/hyprland/hyprland-noctalia/hyprland.conf @@ -0,0 +1,333 @@ +################# +### AUTOSTART ### +################# + +# Autostart necessary processes (like notifications daemons, status bars, etc.) +# Or execute your favorite apps at launch like this: + +exec-once = flameshot +exec-once = noctalia-shell +exec-once = steam +exec-once = hyprctl setcursor Bibata-Modern-Ice 24 +# This exports the necessary variables for Electron to find the Keyring +exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +# This starts the daemon and makes it the "Secret Service" provider +exec-once = gnome-keyring-daemon --start --components=secrets + +################ +### MONITORS ### +################ + +# See https://wiki.hyprland.org/Configuring/Monitors/ +monitor=,preferred,auto,1 + +# set the cursor theme +env = HYPRCURSOR_THEME,Bibata-Modern-Ice + + +################### +### MY PROGRAMS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ + +# Set programs that you use +$terminal = kitty +$browser = librewolf +$fileManager = nautilus +$menu = noctalia-shell ipc call launcher toggle + + + +############################# +### ENVIRONMENT VARIABLES ### +############################# + +# See https://wiki.hyprland.org/Configuring/Environment-variables/ + +env = XCURSOR_SIZE,24 +env = HYPRCURSOR_SIZE,24 + + +################### +### PERMISSIONS ### +################### + +# See https://wiki.hyprland.org/Configuring/Permissions/ +# Please note permission changes here require a Hyprland restart and are not applied on-the-fly +# for security reasons + +ecosystem { + # enforce_permissions = 1 + no_update_news = true +} + +# permission = /usr/(bin|local/bin)/grim, screencopy, allow +# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow +# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow + + +##################### +### LOOK AND FEEL ### +##################### + +# Refer to https://wiki.hyprland.org/Configuring/Variables/ + +# https://wiki.hyprland.org/Configuring/Variables/#general +general { + gaps_in = 5 + gaps_out = 20 + + border_size = 2 + + # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors + col.active_border = rgb(f9e2af) + col.inactive_border = rgba(595959aa) + + # Set to true enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = false + + # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on + allow_tearing = true + + layout = scrolling +} + +# https://wiki.hyprland.org/Configuring/Variables/#decoration +decoration { + rounding = 0 + # rounding_power = 2 + + # Change transparency of focused and unfocused windows + active_opacity = 1.0 + inactive_opacity = 1.0 + + shadow { + enabled = true + range = 4 + render_power = 3 + color = rgba(1a1a1aee) + } + + # https://wiki.hyprland.org/Configuring/Variables/#blur + blur { + enabled = true + size = 3 + passes = 1 + + vibrancy = 0.1696 + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#animations +animations { + enabled = yes, please :) + + # Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = easeOutQuint,0.23,1,0.32,1 + bezier = easeInOutCubic,0.65,0.05,0.36,1 + bezier = linear,0,0,1,1 + bezier = almostLinear,0.5,0.5,0.75,1.0 + bezier = quick,0.15,0,0.1,1 + + animation = global, 1, 10, default + animation = border, 1, 5.39, easeOutQuint + animation = windows, 1, 4.79, easeOutQuint + animation = windowsIn, 1, 4.1, easeOutQuint, popin 87% + animation = windowsOut, 1, 1.49, linear, popin 87% + animation = fadeIn, 1, 1.73, almostLinear + animation = fadeOut, 1, 1.46, almostLinear + animation = fade, 1, 3.03, quick + animation = layers, 1, 3.81, easeOutQuint + animation = layersIn, 1, 4, easeOutQuint, fade + animation = layersOut, 1, 1.5, linear, fade + animation = fadeLayersIn, 1, 1.79, almostLinear + animation = fadeLayersOut, 1, 1.39, almostLinear + animation = workspaces, 1, 1.94, almostLinear, fade + animation = workspacesIn, 1, 1.21, almostLinear, fade + animation = workspacesOut, 1, 1.94, almostLinear, fade +} + +# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/ +# "Smart gaps" / "No gaps when only" +# uncomment all if you wish to use that. +# workspace = w[tv1], gapsout:0, gapsin:0 +# workspace = f[1], gapsout:0, gapsin:0 +# windowrule = bordersize 0, floating:0, onworkspace:w[tv1] +# windowrule = rounding 0, floating:0, onworkspace:w[tv1] +# windowrule = bordersize 0, floating:0, onworkspace:f[1] +# windowrule = rounding 0, floating:0, onworkspace:f[1] + +# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more +dwindle { + pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # You probably want this +} + +# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more +master { + new_status = master +} + +# https://wiki.hyprland.org/Configuring/Variables/#misc +misc { + force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :( +} + + +############# +### INPUT ### +############# + +# https://wiki.hyprland.org/Configuring/Variables/#input +input { + kb_options = caps:escape, compose:ralt + kb_variant = + kb_model = + kb_rules = + + follow_mouse = 1 + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. + + touchpad { + natural_scroll = true + } +} + +# https://wiki.hyprland.org/Configuring/Variables/#gestures +# gestures { +# workspace_swipe = false +# } + +# Example per-device config +# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more +device { + name = epic-mouse-v1 + sensitivity = -0.5 +} + + +################### +### KEYBINDINGS ### +################### + +# See https://wiki.hyprland.org/Configuring/Keywords/ +$mainMod = SUPER # Sets "Windows" key as main modifier + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainMod, RETURN, exec, $terminal +bind = $mainMod SHIFT, W, exec, $browser +bind = $mainMod SHIFT, C, killactive, +bind = $mainMod, M, exit, +bind = $mainMod, E, exec, $fileManager +bind = $mainMod, V, togglefloating, +bind = $mainMod, R, exec, $menu +bind = $mainMod, P, pseudo, # dwindle +bind = $mainMod, J, togglesplit, # dwindle +bind = $mainMod SHIFT, F, fullscreen, + +# Move focus with mainMod + arrow keys +bind = $mainMod, left, movefocus, l +bind = $mainMod, right, movefocus, r +bind = $mainMod, up, movefocus, u +bind = $mainMod, down, movefocus, d + +# Switch workspaces with mainMod + [0-9] +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 +bind = $mainMod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 +bind = $mainMod SHIFT, 0, movetoworkspace, 10 + +# Example special workspace (scratchpad) +bind = $mainMod, S, togglespecialworkspace, magic +bind = $mainMod SHIFT, S, movetoworkspace, special:magic + +# Cycle focus through windows with SUPER + scroll wheel +bind = SUPER, mouse_up, cyclenext, prev +bind = SUPER, mouse_down, cyclenext + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod SHIFt, mouse:272, resizewindow + +# Laptop multimedia keys for volume and LCD brightness +bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ +bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+ +bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%- + +# Requires playerctl +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPause, exec, playerctl play-pause +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioPrev, exec, playerctl previous + +############################## +### WINDOWS AND WORKSPACES ### +############################## + +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules + +# Example windowrule +windowrule { + name = librewolf-on-w2 + match:class = ^(librewolf)$ + workspace = 2 +} +windowrule { + name = vesktop-on-w4 + match:class = ^(vesktop)$ + workspace = 4 +} +windowrule { + name = full_screen_games + match:class = ^steam_app_\d+$ + fullscreen = true + immediate = true +} + +windowrule { + # Ignore maximize requests from all apps. You'll probably like this. + name = suppress-maximize-events + match:class = .* + + suppress_event = maximize +} + +# Fix some dragging issues with XWayland +windowrule { + # Fix some dragging issues with XWayland + name = fix-xwayland-drags + match:class = ^$ + match:title = ^$ + match:xwayland = true + match:float = true + match:fullscreen = false + match:pin = false + + no_focus = true +} diff --git a/modules/features/hyprland/default.nix b/modules/features/hyprland/hyprland-waybar/default.nix similarity index 100% rename from modules/features/hyprland/default.nix rename to modules/features/hyprland/hyprland-waybar/default.nix diff --git a/modules/features/hyprland/hyprland.conf b/modules/features/hyprland/hyprland-waybar/hyprland.conf similarity index 99% rename from modules/features/hyprland/hyprland.conf rename to modules/features/hyprland/hyprland-waybar/hyprland.conf index 79c60a0..0781a8a 100644 --- a/modules/features/hyprland/hyprland.conf +++ b/modules/features/hyprland/hyprland-waybar/hyprland.conf @@ -57,9 +57,10 @@ env = HYPRCURSOR_SIZE,24 # Please note permission changes here require a Hyprland restart and are not applied on-the-fly # for security reasons -# ecosystem { -# enforce_permissions = 1 -# } +ecosystem { + # enforce_permissions = 1 + no_update_news = true +} # permission = /usr/(bin|local/bin)/grim, screencopy, allow # permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow diff --git a/modules/features/hyprland/hyprpaper.conf b/modules/features/hyprland/hyprland-waybar/hyprpaper.conf similarity index 87% rename from modules/features/hyprland/hyprpaper.conf rename to modules/features/hyprland/hyprland-waybar/hyprpaper.conf index a854f66..fb641aa 100644 --- a/modules/features/hyprland/hyprpaper.conf +++ b/modules/features/hyprland/hyprland-waybar/hyprpaper.conf @@ -1,5 +1,5 @@ wallpaper { - monitor = eDP-1 + monitor = path = ~/Pictures/wallpapers/Augustine-catppuccin-mocha.png fit_mode = cover } diff --git a/modules/features/librewolf.nix b/modules/features/librewolf.nix index 4b2262f..29abbb5 100644 --- a/modules/features/librewolf.nix +++ b/modules/features/librewolf.nix @@ -29,10 +29,6 @@ "privacy.trackingprotection.socialtracking.enabled" = true; }; ExtensionSettings = { - "jid1-ZAdIEUB7XOzOJw@jetpack" = { - install_url = "https://addons.mozilla.org/firefox/downloads/latest/duckduckgo-for-firefox/latest.xpi"; - installation_mode = "force_installed"; - }; "uBlock0@raymondhill.net" = { install_url = "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; installation_mode = "force_installed"; diff --git a/modules/hosts/desktop/configuration.nix b/modules/hosts/desktop/configuration.nix index 03d0aea..2a44289 100644 --- a/modules/hosts/desktop/configuration.nix +++ b/modules/hosts/desktop/configuration.nix @@ -10,7 +10,8 @@ self.nixosModules.gaming self.nixosModules.development self.nixosModules.desktopHardware - self.nixosModules.niri + # self.nixosModules.niri + self.nixosModules.hyprland-noctalia self.nixosModules.librewolf self.nixosModules.user ]; diff --git a/modules/features/noctalia.nix b/modules/packages/noctalia/default.nix similarity index 100% rename from modules/features/noctalia.nix rename to modules/packages/noctalia/default.nix diff --git a/modules/features/noctalia.json b/modules/packages/noctalia/noctalia.json similarity index 100% rename from modules/features/noctalia.json rename to modules/packages/noctalia/noctalia.json