dotfiles/nix-conf/system/configuration.nix

72 lines
1.8 KiB
Nix
Executable File

{
lib,
pkgs,
config,
modulesPath,
specialArgs,
...
}: let
hostname = specialArgs.hostname;
enableSSH = specialArgs.enableSSH or true;
_networking = lib.recursiveUpdate {hostName = hostname;} (specialArgs._networking or {});
_boot = specialArgs._boot or {};
_services = specialArgs._services or {};
includeHardware = specialArgs.includeHardware or true;
proj_root = builtins.toString ./../..;
in
with lib; {
imports =
(
if includeHardware
then [
"${proj_root}/hosts/${hostname}/hardware-configuration.nix"
]
else []
)
++ [
"${modulesPath}/profiles/minimal.nix"
"${proj_root}/modules/tailscale.sys.nix"
"${proj_root}/modules/mosh.sys.nix"
];
boot = _boot;
# prune old builds
nix.settings.auto-optimise-store = true;
# Enable nix flakes
nix.package = pkgs.nixFlakes;
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
users.users.hungtr = {
isNormalUser = true;
home = "/home/hungtr";
description = "pegasust/hungtr";
extraGroups = ["wheel" "networkmanager" "audio"];
};
users.users.root = {
# openssh runs in root, no? This is because port < 1024 requires root.
openssh.authorizedKeys.keys = lib.strings.splitString "\n" (builtins.readFile "${proj_root}/native_configs/ssh/authorized_keys");
};
# Some basic programs
programs.neovim = {
enable = true;
defaultEditor = true;
};
programs.git = {
enable = true;
# more information should be configured under user level
# See other config at @/home-nix
};
environment.systemPackages = [
pkgs.gnumake
pkgs.wget
pkgs.inetutils # network diag
pkgs.mtr # network diag
pkgs.sysstat # sys diag
];
}