nix-config/modules/system.nix

120 lines
2.2 KiB
Nix
Raw Normal View History

{ nix-config, pkgs, lib, config, ... }:
let
2024-04-04 15:41:32 +02:00
inherit (lib) mkOption;
inherit (lib.types) str listOf;
inherit (pkgs.nixVersions) nix_2_19;
inherit (cfg) username;
inherit (builtins) attrValues;
2024-04-04 15:41:32 +02:00
cfg = config.modules.system;
in
2023-06-22 17:54:12 +02:00
{
imports = attrValues {
inherit (nix-config.inputs.home-manager.nixosModules) home-manager;
};
2024-04-04 15:41:32 +02:00
options.modules.system = {
username = mkOption {
type = str;
default = "user";
};
2024-04-04 15:41:32 +02:00
timeZone = mkOption {
type = str;
default = "America/New_York";
};
2024-04-04 15:41:32 +02:00
defaultLocale = mkOption {
type = str;
default = "ja_JP.UTF-8";
};
2024-04-04 15:41:32 +02:00
supportedLocales = mkOption {
type = listOf str;
default = [ "ja_JP.UTF-8/UTF-8" "en_US.UTF-8/UTF-8" "fr_FR.UTF-8/UTF-8" ];
};
stateVersion = mkOption {
type = str;
default = "22.11";
};
};
2024-04-04 15:41:32 +02:00
config = {
boot = {
tmp.cleanOnBoot = true;
2024-04-04 15:41:32 +02:00
loader = {
systemd-boot = {
enable = true;
editor = false;
configurationLimit = 10;
};
timeout = 0;
efi.canTouchEfiVariables = true;
};
};
2024-04-04 15:41:32 +02:00
systemd = {
extraConfig = "DefaultTimeoutStopSec=10s";
services.NetworkManager-wait-online.enable = false;
};
2024-04-04 15:41:32 +02:00
nix = {
package = nix_2_19;
2024-04-04 15:41:32 +02:00
settings = {
experimental-features = [ "nix-command" "flakes" "repl-flake" ];
auto-optimise-store = true;
warn-dirty = false;
};
};
zramSwap = {
enable = true;
memoryPercent = 100;
};
2024-04-04 15:41:32 +02:00
time = {
inherit (cfg) timeZone;
};
i18n = {
inherit (cfg) defaultLocale supportedLocales;
};
system = {
inherit (cfg) stateVersion;
};
users = {
mutableUsers = false;
users.${username} = {
isNormalUser = true;
uid = 1000;
password = "user";
extraGroups = [ "wheel" "networkmanager" ];
};
};
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
sharedModules = [{
home.stateVersion = "22.11";
programs.man.generateCaches = true;
}];
users.${username}.home = {
inherit username;
homeDirectory = "/home/${username}";
};
};
};
2023-06-22 17:54:12 +02:00
}