NixOSConfig/lib/configuration.nix

68 lines
1.7 KiB
Nix

{ hostname, lib, machineConfig, ... }: {
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 = machineConfig.users;
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
users =
lib.attrsets.concatMapAttrs (username: user:
let
getUserConfig = import ./utils/user-config.nix { inherit lib; };
configPath = getUserConfig { inherit hostname username; };
in
if (configPath != null)
then {
${username} = { pkgs, ... }@args: import configPath ({
userConfig = {
inherit hostname username;
} // user;
} // args);
}
else {})
machineConfig.users;
};
# Networking
networking.hostName = hostname;
# Set time zone
time.timeZone = machineConfig.timeZone;
# Configure keyboard layout
console.keyMap = machineConfig.keyMap;
services.xserver.xkb.layout = machineConfig.keyboardLayout;
i18n.extraLocaleSettings = machineConfig.localeSettings;
};
}