nixos/shared/modules/desktop/base.nix

85 lines
1.8 KiB
Nix

{
config,
lib,
inputs,
pkgs,
timeZone,
...
}:
let
cfg = config.deskCfg;
in
{
options.deskCfg = {
de = lib.mkOption {
default = "niri";
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";
};
fullName = lib.mkOption {
type = lib.types.str;
default = "User";
description = "Full display name for the user";
};
installGaming = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Whether to install gaming software or not";
};
flakePath = lib.mkOption {
type = lib.types.str;
default = "/home/${cfg.userName}/nixos";
description = "Absolute path to the NixOS flake configuration directory";
};
};
imports = [
../user/main_user.nix
../system/power_manager.nix
../system/noctalia-system.nix
];
config = {
nixpkgs.overlays = [
inputs.nur.overlays.default
];
# Enable flakes
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
# Boot loader defaults
boot.loader.systemd-boot.enable = lib.mkDefault true;
boot.loader.efi.canTouchEfiVariables = lib.mkDefault true;
networking.hostName = cfg.hostName;
networking.networkmanager.enable = lib.mkDefault true;
time.timeZone = timeZone;
main_user = {
enable = true;
userName = cfg.userName;
fullName = cfg.fullName;
isDesktopUser = true;
};
power_manager = {
enable = lib.mkDefault true;
backend = lib.mkDefault "power-profiles-daemon";
};
noctaliaSystem.enable = lib.mkDefault true;
};
}