diff --git a/hosts/FredOS-Macbook.nix b/hosts/FredOS-Macbook.nix index 1314c2f..5b2fb8b 100644 --- a/hosts/FredOS-Macbook.nix +++ b/hosts/FredOS-Macbook.nix @@ -1,77 +1,61 @@ -# hosts/FredOS-Gaming.nix { config, pkgs, lib, ... }: + { - config = lib.mkIf (config.networking.hostName == "FredOS-Gaming") { - environment.systemPackages = with pkgs; [ - lutris - heroic - ]; - - programs.steam = { - enable = true; - remotePlay.openFirewall = true; - package = pkgs.steam.override { - extraPkgs = pkgs: with pkgs; [ - adwaita-icon-theme - ]; - }; - }; - - # Steam icon fix script - systemd.user.services.steam-icon-fix = { - description = "Fix Steam Proton game icons"; + config = lib.mkMerge [ + { + nixpkgs.config.allowInsecurePredicate = pkg: + (lib.hasPrefix "broadcom-sta" (lib.getName pkg)); + } + + (lib.mkIf (config.networking.hostName == "FredOS-Macbook") { + # ... all your other settings (tlp, boot, firmware) ... + environment.systemPackages = with pkgs; [ tlp ]; + services.tlp.enable = false; + services.power-profiles-daemon.enable = true; + + hardware.facetimehd.enable = true; - serviceConfig = { - Type = "oneshot"; - RemainAfterExit = false; + boot = { + loader = { + systemd-boot.enable = true; + efi.canTouchEfiVariables = true; + }; + extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ]; + blacklistedKernelModules = [ "b43" "bcma" "ssb" ]; + }; + hardware.enableRedistributableFirmware = true; + +# Enable Bluetooth + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + settings = { + General = { + Enable = "Source,Sink,Media,Socket"; + Experimental = true; }; - - script = '' - STEAM_DIR="$HOME/.local/share/Steam" - DESKTOP_DIR="$HOME/.local/share/applications" - ICON_DIR="$HOME/.local/share/icons" - - # Search all desktop files for steam_icon references - ${pkgs.gnugrep}/bin/grep -l "Icon=steam_icon_" "$DESKTOP_DIR"/*.desktop 2>/dev/null | while read desktop_file; do - # Extract the app_id from the Icon line - app_id=$(${pkgs.gnugrep}/bin/grep "Icon=steam_icon_" "$desktop_file" | ${pkgs.gnused}/bin/sed 's/Icon=steam_icon_//') - - # Check if icon already exists - if [ -f "$ICON_DIR/hicolor/256x256/apps/steam_icon_$app_id.png" ]; then - continue - fi - - # Find the actual icon file - icon_file=$(find "$STEAM_DIR/appcache/librarycache/$app_id" -name "*.jpg" 2>/dev/null | head -n 1) - - if [ -f "$icon_file" ]; then - # Copy icon to multiple sizes - for size in 48x48 64x64 128x128 256x256; do - mkdir -p "$ICON_DIR/hicolor/$size/apps/" - cp "$icon_file" "$ICON_DIR/hicolor/$size/apps/steam_icon_$app_id.png" - done - - echo "Fixed icon for $(basename "$desktop_file"): App ID $app_id" - fi - done - ''; - }; - - # Bootloader - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - boot.loader.timeout = 1; - - system.autoUpgrade = { - enable = true; - dates = "daily"; - persistent = true; - allowReboot = false; - channel = "https://nixos.org/channels/nixos-unstable"; - flags = [ - "--upgrade" - "--option" "tarball-ttl" "0" - ]; }; }; + + # PipeWire with Bluetooth support + services.pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + + # Add Bluetooth codec config + wireplumber.configPackages = [ + (pkgs.writeTextDir "share/wireplumber/bluetooth.lua.d/51-bluez-config.lua" '' + bluez_monitor.properties = { + ["bluez5.enable-sbc-xq"] = true, + ["bluez5.enable-msbc"] = true, + ["bluez5.enable-hw-volume"] = true, + ["bluez5.headset-roles"] = "[ hsp_hs hsp_ag hfp_hf hfp_ag ]" + } + '') + ]; + }; + + }) + ]; }