diff --git a/hosts/familypc/config.nix b/hosts/familypc/config.nix index 0723378..d4d58c8 100644 --- a/hosts/familypc/config.nix +++ b/hosts/familypc/config.nix @@ -16,8 +16,10 @@ in ./users.nix ../../modules/amd-drivers.nix ../../modules/nvidia-drivers.nix + ../../modules/nvidia-prime-drivers.nix ../../modules/intel-drivers.nix ../../modules/vm-guest-services.nix + ../../modules/local-hardware-clock.nix ]; # Bootloader. @@ -41,14 +43,14 @@ in boot.kernelModules = [ "v4l2loopback" ]; boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; - networking.hostName = "${host}"; - # Configure network proxy if necessary # networking.proxy.default = "http://user:password@proxy:port/"; # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; # Enable networking networking.networkmanager.enable = true; + networking.hostName = "${host}"; + networking.timeServers = options.networking.timeServers.default ++ [ "pool.ntp.org" ]; # Set your time zone. time.timeZone = "America/Chicago"; @@ -150,6 +152,7 @@ in rofi-wayland imv transmission-gtk + distrobox mpv gimp obs-studio @@ -164,50 +167,71 @@ in (nerdfonts.override { fonts = [ "JetBrainsMono" ]; }) ]; + environment.systemPackages = + let + sugar = pkgs.callPackage ../../pkgs/sddm-sugar-dark.nix {}; + tokyo-night = pkgs.libsForQt5.callPackage ../../pkgs/sddm-tokyo-night.nix {}; + in [ + sugar.sddm-sugar-dark # Name: sugar-dark + tokyo-night # Name: tokyo-night-sddm + pkgs.libsForQt5.qt5.qtgraphicaleffects + ]; + environment.variables = { ZANEYOS_VERSION = "2.0"; }; # Services to start - services.xserver = { - enable = true; - displayManager.lightdm.enable = true; - desktopManager.cinnamon.enable = true; - xkb = { - layout = "us"; - variant = ""; + services = { + xserver = { + enable = true; + displayManager.sddm = { + enable = true; + autoNumlock = true; + wayland.enable = true; + theme = "sugar-dark"; + }; + desktopManager.cinnamon.enable = true; + xkb = { + layout = "us"; + variant = ""; + }; }; - }; - services.libinput.enable = true; - services.openssh.enable = true; - services.printing.enable = true; - services.avahi = { - enable = true; - nssmdns4 = true; - openFirewall = true; - }; - services.ipp-usb.enable = true; - services.syncthing = { - enable = false; - user = "${username}"; - dataDir = "/home/${username}"; - configDir = "/home/${username}/.config/syncthing"; + libinput.enable = true; + openssh.enable = true; + printing.enable = true; + avahi = { + enable = true; + nssmdns4 = true; + openFirewall = true; + }; + ipp-usb.enable = true; + syncthing = { + enable = false; + user = "${username}"; + dataDir = "/home/${username}"; + configDir = "/home/${username}/.config/syncthing"; + }; + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + rpcbind.enable = true; + nfs.server.enable = true; }; hardware.sane = { enable = true; extraBackends = [ pkgs.sane-airscan ]; disabledDefaultBackends = [ "escl" ]; }; + hardware.logitech.wireless.enable = true; + hardware.logitech.wireless.enableGraphical = true; # Enable sound with pipewire. sound.enable = true; hardware.pulseaudio.enable = false; security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; # Security / Polkit security.polkit.enable = true; @@ -246,7 +270,13 @@ in }; }; + # Virtualization / Containers virtualisation.libvirtd.enable = true; + virtualisation.podman = { + enable = true; + dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; + }; # OpenGL hardware.opengl = { @@ -258,8 +288,14 @@ in # Extra Module Options drivers.amdgpu.enable = true; drivers.nvidia.enable = false; + drivers.nvidia-prime = { + enable = false; + intelBusID = ""; + nvidiaBusID = ""; + }; drivers.intel.enable = false; vm.guest-services.enable = false; + local.hardware-clock.enable = false; # Open ports in the firewall. # networking.firewall.allowedTCPPorts = [ ... ]; diff --git a/modules/local-hardware-clock.nix b/modules/local-hardware-clock.nix new file mode 100644 index 0000000..cf2c42b --- /dev/null +++ b/modules/local-hardware-clock.nix @@ -0,0 +1,19 @@ +{ + lib, + pkgs, + config, + ... +}: +with lib; +let + cfg = config.local.hardware-clock; +in +{ + options.local.hardware-clock = { + enable = mkEnableOption "Change Hardware Clock To Local Time"; + }; + + config = mkIf cfg.enable { + time.hardwareClockInLocalTime = true; + }; +} diff --git a/modules/nvidia-prime-drivers.nix b/modules/nvidia-prime-drivers.nix new file mode 100644 index 0000000..d2a6ace --- /dev/null +++ b/modules/nvidia-prime-drivers.nix @@ -0,0 +1,37 @@ +{ + lib, + pkgs, + config, + ... +}: +with lib; +let + cfg = config.drivers.nvidia-prime; +in +{ + options.drivers.nvidia-prime = { + enable = mkEnableOption "Enable Nvidia Prime Hybrid GPU Offload"; + intelBusID = mkOption { + type = types.str; + default = "PCI:1:0:0"; + }; + nvidiaBusID = mkOption { + type = types.str; + default = "PCI:0:2:0"; + }; + }; + + config = mkIf cfg.enable { + hardware.nvidia = { + prime = { + offload = { + enable = true; + enableOffloadCmd = true; + }; + # Make sure to use the correct Bus ID values for your system! + intelBusId = "${cfg.intelBusID}"; + nvidiaBusId = "${cfg.nvidiaBusID}"; + }; + }; + }; +} diff --git a/pkgs/sddm-sugar-dark.nix b/pkgs/sddm-sugar-dark.nix new file mode 100644 index 0000000..e82fb00 --- /dev/null +++ b/pkgs/sddm-sugar-dark.nix @@ -0,0 +1,18 @@ +{ stdenv, fetchFromGitHub }: +{ + sddm-sugar-dark = stdenv.mkDerivation rec { + pname = "sddm-sugar-dark-theme"; + version = "1.2"; + dontBuild = true; + installPhase = '' + mkdir -p $out/share/sddm/themes + cp -aR $src $out/share/sddm/themes/sugar-dark + ''; + src = fetchFromGitHub { + owner = "MarianArlt"; + repo = "sddm-sugar-dark"; + rev = "v${version}"; + sha256 = "0gx0am7vq1ywaw2rm1p015x90b75ccqxnb1sz3wy8yjl27v82yhb"; + }; + }; +} diff --git a/pkgs/sddm-tokyo-night.nix b/pkgs/sddm-tokyo-night.nix new file mode 100644 index 0000000..af61d51 --- /dev/null +++ b/pkgs/sddm-tokyo-night.nix @@ -0,0 +1,33 @@ +{ lib, qtbase, qtsvg +, qtgraphicaleffects +, qtquickcontrols2 +, wrapQtAppsHook +, stdenvNoCC +, fetchFromGitHub +}: +stdenvNoCC.mkDerivation rec { + pname = "tokyo-night-sddm"; + version = "1..0"; + dontBuild = true; + src = fetchFromGitHub { + owner = "rototrash"; + repo = "tokyo-night-sddm"; + rev = "320c8e74ade1e94f640708eee0b9a75a395697c6"; + sha256 = "sha256-JRVVzyefqR2L3UrEK2iWyhUKfPMUNUnfRZmwdz05wL0="; + }; + nativeBuildInputs = [ + wrapQtAppsHook + ]; + + propagatedUserEnvPkgs = [ + qtbase + qtsvg + qtgraphicaleffects + qtquickcontrols2 + ]; + + installPhase = '' + mkdir -p $out/share/sddm/themes + cp -aR $src $out/share/sddm/themes/tokyo-night-sddm + ''; +}