{ lib, machine, pkgs, ... }: { imports = [ ./modules/custom-build-vm.nix ./modules/custom-sops-nix.nix ./modules/my-users.nix ./modules/sddm.nix ./modules/unfree.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; }; users.myUsers = machine.config.users; home-manager = { useUserPackages = true; useGlobalPkgs = true; users = lib.attrsets.concatMapAttrs (username: user: let hostname = machine.name; getUserConfig = pkgs.callPackage (import ./utils/user-config.nix); configPath = getUserConfig { inherit hostname username; }; in if (configPath != null) then { ${username} = { pkgs, ... }: { imports = [ configPath ]; config = { _module.args = { inherit machine; user = { name = username; } // user; }; }; }; } else {}) machine.config.users; }; # Networking networking.hostName = machine.name; # 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; }; }