{ cfg, config, lib, pkgs, inputs, ... }: { imports = [ ./hardware-configuration.nix ../graphical/configuration.nix inputs.home-manager.nixosModules.default ]; networking.hostName = "darp8"; time.timeZone = "Europe/Dublin"; # time.timeZone = "America/New_York"; hardware = { bluetooth.enable = true; graphics = { enable = true; extraPackages = with pkgs;[ intel-compute-runtime intel-media-driver ]; }; system76.enableAll = true; }; swapDevices = [ { device = "/var/swapfile"; size = 24 * 1024; } ]; boot.resumeDevice = "/dev/disk/by-uuid/c7704142-d0b9-4a85-af1c-ce776b895c0f"; boot.kernelParams = [ "resume_offset=13629440" "mem_sleep_default=s2idle" ]; boot.initrd.postMountCommands = lib.mkAfter '' swapon /mnt-root/var/swapfile ''; boot.kernelPackages = pkgs.linuxPackages_latest; services.system76-scheduler.enable = true; services.tailscale.enable = false; services.power-profiles-daemon.enable = false; services.thermald.enable = true; systemd.services.charge-thresholds = { description = "Set System76 battery charge thresholds"; wantedBy = [ "multi-user.target" "post-resume.target" ]; after = [ "network.target" "suspend.target" "hibernate.target" "hybrid-sleep.target" ]; # Ensures it runs post-resume serviceConfig = { Type = "oneshot"; ExecStart = "${pkgs.system76-power}/bin/system76-power charge-thresholds --profile balanced"; RemainAfterExit = true; }; }; systemd.services.thunderbolt-suspend = { description = "Disable Thunderbolt on suspend"; wantedBy = [ "suspend.target" "hibernate.target" "hybrid-sleep.target" ]; serviceConfig = { Type = "oneshot"; ExecStart = "${pkgs.bolt}/bin/boltctl forget --all"; # Or echo 1 > /sys/bus/thunderbolt/devices/*/authorized if no bolt }; }; systemd.services.thunderbolt-resume = { description = "Re-enable Thunderbolt on resume"; wantedBy = [ "post-resume.target" ]; serviceConfig = { Type = "oneshot"; ExecStart = "${pkgs.bolt}/bin/boltctl authorize --all"; # Adjust as needed }; }; systemd.sleep.extraConfig = '' HibernateDelaySec=20m SuspendState=mem ''; services.logind.lidSwitch = "suspend-then-hibernate"; services.hardware.bolt.enable = true; home-manager = { useGlobalPkgs = true; extraSpecialArgs = { inherit inputs; inherit cfg; }; users = { "${cfg.username}" = import ./home.nix; }; backupFileExtension = ".bak"; }; # This option defines the first version of NixOS you have installed on this particular machine # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, # and migrated your data accordingly. # # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . system.stateVersion = "23.11"; # Did you read the comment? }