# Local hardware/session integration. Shared by the laptop and graphical VM, # not the headless EC2 host; all application/user settings live in common.nix. { config, lib, pkgs, ... }: let font = builtins.head config.fonts.fontconfig.defaultFonts.monospace; greeterTheme = import ./greeter-theme.nix { inherit pkgs font; }; managedHyprlandSession = pkgs.runCommand "hyprland-managed-session" { passthru.providedSessions = [ "hyprland-uwsm" ]; } '' mkdir -p "$out/share/wayland-sessions" ln -s ${config.programs.hyprland.package}/share/wayland-sessions/hyprland-uwsm.desktop \ "$out/share/wayland-sessions/hyprland-uwsm.desktop" ''; in { networking.networkmanager = { enable = true; plugins = [ pkgs.networkmanager-openvpn ]; }; networking.dhcpcd.enable = false; users.users.dev.extraGroups = [ "networkmanager" ]; services.xserver.enable = true; services.displayManager = { sddm = { enable = true; package = pkgs.kdePackages.sddm; # Qt6 runtime, not the Plasma desktop. theme = "sddm-astronaut-theme"; extraPackages = [ greeterTheme ]; # Carries the theme's Qt6 QML dependencies. settings.Theme = { Font = font; CursorTheme = "Bibata-Modern-Ice"; CursorSize = 24; }; }; defaultSession = "hyprland-uwsm"; # Plain Hyprland bypasses the UWSM-owned bar/idle/polkit services. sessionPackages = lib.mkForce [ managedHyprlandSession ]; }; services.printing.enable = true; services.udisks2.enable = true; services.gvfs.enable = true; services.fwupd.enable = true; home-manager.users.dev.services.udiskie.enable = true; environment.systemPackages = [ pkgs.networkmanagerapplet greeterTheme pkgs.bibata-cursors ]; hardware.bluetooth = { enable = true; powerOnBoot = false; }; services.blueman.enable = true; services.upower.enable = true; services.power-profiles-daemon.enable = true; # Retain Blueman's manager without a second tray applet next to ashell. home-manager.users.dev.xdg.configFile."autostart/blueman.desktop".text = '' [Desktop Entry] Type=Application Name=Blueman Hidden=true ''; }