{ config, pkgs, nixpkgs-nixos-unstable-and-unfree, lib, ... }: { boot.kernelModules = [ "fuse" ]; services.smartd.enable = true; sound.enable = true; networking.networkmanager = { enable = true; dispatcherScripts = [{ source = pkgs.writeText "upHook" '' enable_disable_wifi () { result=$(nmcli dev | grep "ethernet" | grep -w "connected") if [ -n "$result" ]; then nmcli radio wifi off else nmcli radio wifi on fi } if [ "$2" = "up" ]; then enable_disable_wifi fi if [ "$2" = "down" ]; then enable_disable_wifi fi ''; type = "basic"; }]; }; hardware.enableRedistributableFirmware = true; hardware.cpu.intel.updateMicrocode = true; hardware.bluetooth = { enable = true; package = pkgs.bluezFull; settings = { General = { Enable = "Source,Sink,Media,Socket"; }; }; }; services.blueman.enable = true; hardware.pulseaudio.enable = false; security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; # If you want to use JACK applications, uncomment this #jack.enable = true; # use the example session manager (no others are packaged yet so this is enabled by default, # no need to redefine it in your config for now) #media-session.enable = true; }; environment.systemPackages = with pkgs; [ ghostscript poppler ]; services.printing = { enable = true; drivers = with pkgs; [ epson-escpr nixpkgs-nixos-unstable-and-unfree.samsung-unified-linux-driver gutenprint ]; extraConf = '' Option pdftops-renderer hybrid ''; }; hardware.printers.ensurePrinters = [ { description = "Epson XP-540 via bolty"; name = "epson_xp540_via_bolty"; deviceUri = "ipp://bolty:631/printers/epson_xp540"; model = "epson-inkjet-printer-escpr/Epson-XP-540_Series-epson-escpr-en.ppd"; ppdOptions = { PageSize = "A4"; Duplex = "DuplexNoTumble"; }; } { description = "Samsung SCX-4623 Series"; name = "samsung-SCX-4623"; deviceUri = "usb://Samsung/SCX-4623%20Series?serial=Z2TYBFFZC01007W&interface=1"; model = "samsung/SCX-4623FW.ppd"; ppdOptions = { PageSize = "A4"; Duplex = "DuplexNoTumble"; }; } ]; services.udev.packages = [ pkgs.utsushi ]; hardware.sane = { enable = true; snapshot = true; extraBackends = with pkgs; [ nixpkgs-nixos-unstable-and-unfree.samsung-unified-linux-driver utsushi sane-airscan gawk ]; }; powerManagement = { enable = lib.mkForce true; resumeCommands = '' ${pkgs.autorandr}/bin/autorandr -c ''; powertop.enable = true; }; }