{ config, lib, machine, pkgs, ... }: { imports = [ ./modules/custom-build-vm.nix ./modules/custom-sops-nix.nix ./modules/my-users.nix ./modules/sddm.nix ./modules/unfree.nix ./modules/xone.nix ]; config = { system.stateVersion = "23.11"; # Map host keys into VM and launch vm using `virt-viewer` virtualisation = let vmConfig = { virtualisation = { sharedHostKeys = true; sharedUserKeys = true; usb-redirect = true; virt-viewer = true; cores = 4; memorySize = 4 * 1024; }; }; in { vmVariant = vmConfig; vmVariantWithBootLoader = vmConfig; }; sops = { defaultSopsFile = ../secrets/global.yaml; age = { sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; }; secrets.default_password.neededForUsers = true; }; boot.loader = { efi = { canTouchEfiVariables = true; efiSysMountPoint = "/boot/efi"; }; grub = { efiSupport = true; device = "nodev"; useOSProber = true; }; }; users.myUsers = machine.config.users; home-manager = { useUserPackages = true; useGlobalPkgs = true; users = lib.attrsets.concatMapAttrs (username: user: let getUserModule = pkgs.callPackage (import ./utils/user-module.nix); in { ${username} = (getUserModule { inherit machine; user = { name = username; } // user; }); }) machine.config.users; }; # Networking networking = { hostName = machine.name; networkmanager.enable = true; }; # Set time zone time.timeZone = machine.config.timeZone; # Configure keyboard layout console.keyMap = machine.config.keyMap; services.xserver.xkb.layout = machine.config.keyboardLayout; i18n.extraLocaleSettings = machine.config.localeSettings; # Graphics hardware.opengl = { enable = true; driSupport = true; driSupport32Bit = true; }; services.xserver.videoDrivers = lib.optional machine.config.nvidia "nvidia"; hardware.nvidia = lib.optionalAttrs machine.config.nvidia { modesetting.enable = true; powerManagement.finegrained = false; nvidiaSettings = true; package = config.boot.kernelPackages.nvidiaPackages.stable; }; # Drivers hardware.xone.enable = (lib.mkIf machine.config.xone true); # Enable KDE Plasma services.displayManager.sddm = { enable = true; wayland.enable = true; }; services.desktopManager.plasma6.enable = true; # Programs programs.git.enable = true; programs.fish.enable = true; # Fonts fonts.packages = with pkgs; [ (nerdfonts.override { fonts = [ "CascadiaCode" ]; }) ]; }; }