{ config, pkgs, lib, inputs, ... }: { imports = [ ./hardware-configuration.nix inputs.home-manager.nixosModules.default inputs.sops-nix.nixosModules.sops ]; config = { services.desktopManager.cosmic = { enable = true; xwayland.enable = true; }; nixpkgs.config = { allowUnfree = true; }; # Bootloader. boot = { kernelPackages = pkgs.linuxKernel.packages.linux_6_16; loader = { systemd-boot.enable = true; efi.canTouchEfiVariables = true; timeout = null; }; kernelParams = [ "snd-intel-dspcfg.dsp_driver=1" ]; }; systemd.extraConfig = "DefaultLimitNOFILE=2048"; specialisation = { docked.configuration = { hardware.nvidia.prime.sync.enable = true; home-manager.users.nathan.wayland.windowManager.hyprland.extraConfig = '' monitor=eDP-1,1920x1080@300,0x0,1 ''; }; }; home-manager.users.nathan.wayland.windowManager.hyprland.extraConfig = lib.mkIf (config.specialisation != {}) '' monitor=eDP-1,1920x1080@60,0x0,1 ''; hardware = { graphics.enable = true; firmware = with pkgs; [ sof-firmware ]; nvidia = { modesetting.enable = true; powerManagement.enable = true; powerManagement.finegrained = false; open = false; nvidiaSettings = true; package = config.boot.kernelPackages.nvidiaPackages.stable; prime = { # Make sure to use the correct Bus ID values for your system! intelBusId = "PCI:0:2:0"; nvidiaBusId = "PCI:1:0:0"; # WARNING: sync and offload are mutually exclusive. # You can only pick one!! #sync.enable = true; offload = lib.mkIf (config.specialisation != {}) { enable = true; enableOffloadCmd = true; }; }; }; #enable bluetooth bluetooth.enable = true; }; services.pulseaudio.enable = false; environment.systemPackages = with pkgs; [ alsa-utils ]; sysconfig = { remoteBuildClient = true; host = "laptop"; graphical = true; users = { nathan = { extraGroups = [ "wheel" "networkmanager" ]; hashedPasswordFile = config.sops.secrets."nathan/pass".path; shell = pkgs.zsh; home-manager = { enable = true; standalone = false; extraModules = [ { homeconfig = { minimal = false; hyprland.enable = true; hyprlock.enable = true; wal.enable = true; mpd.enable = true; hyprpanel.enable = true; calcurse.enable = true; rofi.enable = true; firefox.enable = true; git.enable = true; nh.enable = true; }; } ]; }; }; }; services = { sddm.enable = true; openssh.enable = false; pipewire.enable = true; kdePlasma6.enable = true; netbird.enable = true; ollama.enable = true; }; programs = { steam.enable = true; hyprpanel.enable = true; hyprland.enable = true; }; virtualization = { wyoming = { enable = false; }; homeassistant = { enable = false; }; }; }; # Enable the X11 windowing system. services.xserver = { enable = true; videoDrivers = ["nvidia"]; }; services.displayManager.enable = true; services.avahi = { enable = true; ipv4 = true; ipv6 = true; openFirewall = true; nssmdns4 = true; wideArea = true; }; environment.shells = with pkgs; [ zsh bashInteractive ]; # Enable CUPS to print documents. services.printing.enable = true; programs.adb.enable = true; programs.zsh.enable = true; system.stateVersion = "23.05"; # Did you read the comment? networking = { nameservers = [ "1.1.1.1" "1.0.0.1" ]; networkmanager.enable = true; }; sops = { age.keyFile = "/var/lib/sops/age/keys.txt"; defaultSopsFile = ./secrets.yaml; defaultSopsFormat = "yaml"; secrets."nathan/pass".neededForUsers = true; }; fonts.packages = with pkgs; [ nerd-fonts.fira-code ]; }; }