{ config, pkgs, lib, ... }: let in { imports = [ ../sway/sway.nix ../sway/launcher-cleanup.nix ./social.nix ./signal-work.nix ./thunderbird.nix ./bitwarden.nix ./rustdesk.nix ./rustdesk-epicenter.nix ./flatpak-packages.nix ]; environment.systemPackages = with pkgs; [ alacritty apache-directory-studio cryptomator fontforge freecad firefox openscad orca-slicer (where-is-my-sddm-theme.override { themeConfig.General = { showUsersByDefault = true; background = "/nix/persist/system/wallpaper.png"; backgroundFill = "#252525"; backgroundFillMode="Image.Pad"; passwordInputWidth = 0.25; passwordInputBackground = "#60ffffff"; passwordFontSize = 28; showSessionsByDefault = true; sessionsFontSize=24; usersFontSize=32; }; variants = ["qt5"]; }) dracula-theme foot fractal gimp seahorse adwaita-icon-theme grim hunspell hunspellDicts.de_DE hunspellDicts.en_US libreoffice libsForQt5.qtgraphicaleffects mako moonlight-qt nautilus netflix networkmanagerapplet nextcloud-client onlyoffice-bin obs-studio pavucontrol pinentry rbw rofi-rbw swayimg thunderbird vlc wl-clipboard wtype xfce.thunar xfce.thunar-volman xfce.thunar-archive-plugin xorg.libX11 xorg.libXcursor xorg.libXi xorg.libXrandr yubioath-flutter ]; environment.variables.XCURSOR_SIZE = "24"; services.displayManager.defaultSession = "sway"; services.displayManager.sddm = { enable = true; wayland.enable = true; theme = "where_is_my_sddm_theme_qt5"; }; xdg.portal = { enable = true; wlr.enable = true; extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; }; services.gnome.gnome-keyring.enable = true; services.gvfs.enable = true; # VirtualBox disabled by default to save battery - enable manually if needed # virtualisation.virtualbox.host.enable = true; users.extraGroups.vboxusers.members = [ "dominik" ]; fonts.packages = with pkgs; [ noto-fonts noto-fonts-cjk-sans noto-fonts-emoji nerd-fonts._0xproto nerd-fonts.droid-sans-mono open-sans ]; programs.light.enable = true; hardware.bluetooth.enable = true; hardware.bluetooth.powerOnBoot = false; # Save battery - enable manually when needed hardware.bluetooth.settings = { General = { ControllerMode = "bredr"; }; }; services.blueman.enable = true; services.tlp.enable = true; services.tlp.settings = { CPU_SCALING_GOVERNOR_ON_AC = "performance"; CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; CPU_BOOST_ON_AC = 1; CPU_BOOST_ON_BAT = 0; CPU_MIN_PERF_ON_AC = 0; CPU_MAX_PERF_ON_AC = 100; CPU_MIN_PERF_ON_BAT = 0; CPU_MAX_PERF_ON_BAT = 30; RUNTIME_PM_ON_AC = "auto"; RUNTIME_PM_ON_BAT = "auto"; # WiFi power saving WIFI_PWR_ON_AC = "off"; WIFI_PWR_ON_BAT = "on"; # Disable wake on LAN on battery WOL_DISABLE = "Y"; # SATA aggressive link power management SATA_LINKPWR_ON_AC = "med_power_with_dipm"; SATA_LINKPWR_ON_BAT = "min_power"; # PCIe Active State Power Management PCIE_ASPM_ON_AC = "default"; PCIE_ASPM_ON_BAT = "powersupersave"; # USB autosuspend USB_AUTOSUSPEND = 1; USB_EXCLUDE_AUDIO = 1; USB_EXCLUDE_BTUSB = 0; USB_EXCLUDE_PHONE = 0; USB_EXCLUDE_PRINTER = 1; USB_EXCLUDE_WWAN = 0; USB_EXCLUDE_INPUT = 1; # Exclude keyboard/touchpad to prevent suspend issues # Audio power saving SOUND_POWER_SAVE_ON_AC = 0; SOUND_POWER_SAVE_ON_BAT = 1; SOUND_POWER_SAVE_CONTROLLER = "Y"; # Disk idle timeout DISK_IDLE_SECS_ON_AC = 0; DISK_IDLE_SECS_ON_BAT = 2; # Battery charge thresholds (Framework 13 recommendation) START_CHARGE_THRESH_BAT0 = 60; STOP_CHARGE_THRESH_BAT0 = 80; }; boot.plymouth = { enable = true; theme = "spin"; themePackages = with pkgs; [ (adi1090x-plymouth-themes.override { selected_themes = [ "spin" ]; }) ]; }; security.polkit.enable = true; systemd.user.services.polkit-gnome-authentication-agent-1 = { description = "polkit-gnome-authentication-agent-1"; wantedBy = [ "graphical-session.target" ]; wants = [ "graphical-session.target" ]; after = [ "graphical-session.target" ]; serviceConfig = { Type = "simple"; ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; Restart = "on-failure"; RestartSec = 1; TimeoutStopSec = 10; }; }; environment.variables.TERMINAL_COMMAND = "alacritty"; }