feat!: prepare homelab

This commit is contained in:
2025-12-22 14:52:27 -08:00
parent 2a54f011c8
commit 01294f3b8c
4 changed files with 17 additions and 18 deletions

View File

@@ -0,0 +1,70 @@
{
config,
lib,
pkgs,
meta,
...
}:
{
imports = [
];
boot.loader.grub = {
enable = true;
efiSupport = true;
efiInstallAsRemovable = true;
device = "/dev/nvme0n1";
};
networking.hostName = meta.hostname;
networking.networkmanager.enable = true;
time.timeZone = "America/Vancouver";
systemd.tmpfiles.rules = [
"L+ /usr/local/bin - - - - /run/current-system/sw/bin"
];
services.k3s = {
enable = true;
role = "server";
tokenFile = /var/lib/rancher/k3s/server/token;
clusterInit = true;
extraFlags = toString ([
"--write-kubeconfig-mode \"0644\""
"--disable local-storage"
]);
};
services.openiscsi = {
enable = true;
name = "iqn.2020-08.org.linux-iscsi.initiatorhost:${meta.hostname}";
};
security.sudo.wheelNeedsPassword = false;
users.users.luca = {
isNormalUser = true;
extraGroups = [ "wheel" ];
packages = with pkgs; [
tree
];
hashedPassword = config.hashedPassword;
};
environment.systemPackages = with pkgs; [
neovim
wget
curl
k3s
git
helmfile
kubernetes-helm
];
services.openssh.enable = true;
system.stateVersion = "25.11";
}

View File

@@ -0,0 +1,46 @@
{
disko.devices = {
disk = {
disk1 = {
device = "/dev/nvme0n1";
type = "disk";
content = {
type = "gpt";
partitions = {
ESP = {
type = "EF00";
size = "1G";
content = {
type = "filesystem";
mountpoint = "/boot";
format = "vfat";
};
};
primary = {
size = "100%";
content = {
type = "lvm_pv";
vg = "pool";
};
};
};
};
};
};
lvm_vg = {
pool = {
type = "lvm_vg";
lvs = {
root = {
size = "100%FREE";
content = {
type = "filesystem";
format = "btrfs";
mountpoint = "/";
};
};
};
};
};
};
}

View File

@@ -0,0 +1,34 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [ ];
boot.initrd.availableKernelModules = [
"ata_piix"
"uhci_hcd"
"ehci_pci"
"nvme"
"sr_mod"
];
boot.initrd.kernelModules = [ "dm-snapshot" ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.ens33.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}