95 lines
2.3 KiB
Nix
95 lines
2.3 KiB
Nix
|
{ config, lib, inputs, outputs, pkgs, timeZone, system, ... }:
|
||
|
let
|
||
|
supportedDesktops = [ "kde" ];
|
||
|
supportedDesktopsStr = lib.strings.concatStringsSep ", " supportedDesktops;
|
||
|
deskCfg = config.deskCfg;
|
||
|
in
|
||
|
{
|
||
|
options.deskCfg = {
|
||
|
de = lib.mkOption {
|
||
|
default = "kde";
|
||
|
type = lib.types.str;
|
||
|
description = "Desktop Environment";
|
||
|
};
|
||
|
userName = lib.mkOption {
|
||
|
type = lib.types.str;
|
||
|
description = "Main username for system";
|
||
|
};
|
||
|
hostName = lib.mkOption {
|
||
|
type = lib.types.str;
|
||
|
description = "Hostname for system";
|
||
|
};
|
||
|
installGaming = lib.mkOption {
|
||
|
type = lib.types.bool;
|
||
|
default = true;
|
||
|
description = "Whether to install gaming software or not";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
imports = [
|
||
|
modules/user/main_user.nix
|
||
|
modules/kde/kde_conf.nix
|
||
|
];
|
||
|
|
||
|
config = {
|
||
|
assertions = [
|
||
|
{
|
||
|
assertion = builtins.elem deskCfg.de supportedDesktops;
|
||
|
message = "Unsupported desktop environment: ${deskCfg.de}\nSupported DE's: ${supportedDesktopsStr}";
|
||
|
}
|
||
|
];
|
||
|
|
||
|
nixpkgs.overlays = [
|
||
|
inputs.nur.overlay
|
||
|
];
|
||
|
|
||
|
# Enable flakes feature
|
||
|
nix.settings.experimental-features = [
|
||
|
"nix-command" "flakes"
|
||
|
];
|
||
|
|
||
|
# Use the systemd-boot EFI boot loader.
|
||
|
boot.loader.systemd-boot.enable = true;
|
||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||
|
boot.plymouth.enable = true;
|
||
|
|
||
|
networking.hostName = deskCfg.hostName; # Define your hostname.
|
||
|
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
|
||
|
|
||
|
time.timeZone = timeZone;
|
||
|
|
||
|
|
||
|
users.users.${deskCfg.userName} = {
|
||
|
isNormalUser = true;
|
||
|
initialPassword = "password";
|
||
|
description = "main user";
|
||
|
shell = pkgs.zsh;
|
||
|
extraGroups = [
|
||
|
"wheel"
|
||
|
"networkmanager"
|
||
|
"corectrl"
|
||
|
deskCfg.userName
|
||
|
"video"
|
||
|
"audio"
|
||
|
];
|
||
|
};
|
||
|
# main_user = {
|
||
|
# enable = true;
|
||
|
# userName = deskCfg.userName;
|
||
|
# isDesktopUser = true;
|
||
|
# };
|
||
|
|
||
|
kde = {
|
||
|
enable = true;
|
||
|
useNonFree = true;
|
||
|
installGaming = deskCfg.installGaming;
|
||
|
systemPackages = with pkgs; [
|
||
|
libreoffice
|
||
|
];
|
||
|
};
|
||
|
|
||
|
system.stateVersion = "23.11"; # Did you read the comment?
|
||
|
};
|
||
|
}
|
||
|
|