wip rke2
This commit is contained in:
parent
4b59691aae
commit
b7bcb353f7
@ -43,6 +43,13 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
channels-config = {
|
||||||
|
allowUnfree = true;
|
||||||
|
permittedInsecurePackages = [
|
||||||
|
"intel-ocl-5.0-63503"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
homes.modules = with inputs; [
|
homes.modules = with inputs; [
|
||||||
sops-nix.homeManagerModules.sops
|
sops-nix.homeManagerModules.sops
|
||||||
];
|
];
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{ config, lib, pkgs, namespace, ... }:
|
{ config, lib, pkgs, namespace, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib) mkIf;
|
inherit (lib) mkIf mkForce;
|
||||||
inherit (lib.${namespace}) mkBoolOpt;
|
inherit (lib.${namespace}) mkBoolOpt;
|
||||||
|
|
||||||
cfg = config.${namespace}.hardware.opengl;
|
cfg = config.${namespace}.hardware.opengl;
|
||||||
@ -8,7 +8,7 @@ in
|
|||||||
{
|
{
|
||||||
options.${namespace}.hardware.opengl = {
|
options.${namespace}.hardware.opengl = {
|
||||||
enable = lib.mkEnableOption "support for opengl";
|
enable = lib.mkEnableOption "support for opengl";
|
||||||
enable32Bit = mkBoolOpt false "enabel 32-bit";
|
enable32Bit = mkBoolOpt false "enable 32-bit";
|
||||||
enableIntel = mkBoolOpt false "support for intel";
|
enableIntel = mkBoolOpt false "support for intel";
|
||||||
enableNvidia = mkBoolOpt false "support for nvidia";
|
enableNvidia = mkBoolOpt false "support for nvidia";
|
||||||
};
|
};
|
||||||
@ -19,8 +19,12 @@ in
|
|||||||
vdpauinfo
|
vdpauinfo
|
||||||
] ++ lib.optionals cfg.enableNvidia [
|
] ++ lib.optionals cfg.enableNvidia [
|
||||||
nvtopPackages.full
|
nvtopPackages.full
|
||||||
|
] ++ lib.optionals cfg.enableIntel [
|
||||||
|
intel-gpu-tools
|
||||||
];
|
];
|
||||||
|
|
||||||
|
# Add Intel Arc / Nvidia Drivers
|
||||||
|
hardware.enableRedistributableFirmware = cfg.enableIntel;
|
||||||
hardware.graphics = {
|
hardware.graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enable32Bit = cfg.enable32Bit;
|
enable32Bit = cfg.enable32Bit;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{ config, lib, pkgs, namespace, host, ... }:
|
{ config, lib, pkgs, namespace, host, ... }:
|
||||||
let
|
let
|
||||||
|
inherit (lib) types mkIf;
|
||||||
inherit (lib.${namespace}) mkBoolOpt mkOpt;
|
inherit (lib.${namespace}) mkBoolOpt mkOpt;
|
||||||
|
|
||||||
cfg = config.${namespace}.nix;
|
cfg = config.${namespace}.nix;
|
||||||
@ -7,10 +8,10 @@ in
|
|||||||
{
|
{
|
||||||
options.${namespace}.nix = {
|
options.${namespace}.nix = {
|
||||||
enable = mkBoolOpt true "Whether or not to manage nix configuration.";
|
enable = mkBoolOpt true "Whether or not to manage nix configuration.";
|
||||||
package = mkOpt lib.types.package pkgs.nixVersions.latest "Which nix package to use.";
|
package = mkOpt types.package pkgs.nixVersions.latest "Which nix package to use.";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
nix =
|
nix =
|
||||||
let
|
let
|
||||||
users = [
|
users = [
|
||||||
@ -23,11 +24,10 @@ in
|
|||||||
{
|
{
|
||||||
inherit (cfg) package;
|
inherit (cfg) package;
|
||||||
|
|
||||||
buildMachines = lib.optional (host != "nixos-builder") {
|
buildMachines = lib.optional (config.${namespace}.security.sops.enable && host != "nixos-builder") {
|
||||||
hostName = "10.0.50.130";
|
hostName = "10.0.50.130";
|
||||||
systems = [ "x86_64-linux" ];
|
systems = [ "x86_64-linux" ];
|
||||||
sshUser = "evanreichard";
|
sshUser = "evanreichard";
|
||||||
speedFactor = 1;
|
|
||||||
protocol = "ssh";
|
protocol = "ssh";
|
||||||
sshKey = config.sops.secrets.builder_ssh_key.path;
|
sshKey = config.sops.secrets.builder_ssh_key.path;
|
||||||
supportedFeatures = [
|
supportedFeatures = [
|
||||||
@ -46,10 +46,6 @@ in
|
|||||||
options = "--delete-older-than 7d";
|
options = "--delete-older-than 7d";
|
||||||
};
|
};
|
||||||
|
|
||||||
# This will additionally add your inputs to the system's legacy channels
|
|
||||||
# # Making legacy nix commands consistent as well
|
|
||||||
nixPath = lib.mapAttrsToList (key: _: "${key}=flake:${key}") config.nix.registry;
|
|
||||||
|
|
||||||
optimise.automatic = true;
|
optimise.automatic = true;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
|
@ -9,7 +9,7 @@ in
|
|||||||
enable = lib.mkEnableOption "sops";
|
enable = lib.mkEnableOption "sops";
|
||||||
defaultSopsFile = mkOpt lib.types.path null "Default sops file.";
|
defaultSopsFile = mkOpt lib.types.path null "Default sops file.";
|
||||||
sshKeyPaths = mkOpt (with lib.types; listOf path) [
|
sshKeyPaths = mkOpt (with lib.types; listOf path) [
|
||||||
"/etc/ssh/ssh_host_ed25519_key"
|
# "/etc/ssh/ssh_host_ed25519_key"
|
||||||
] "SSH Key paths to use.";
|
] "SSH Key paths to use.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
26
modules/nixos/services/cloud-init/default.nix
Normal file
26
modules/nixos/services/cloud-init/default.nix
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{ config, lib, namespace, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
|
cfg = config.${namespace}.services.cloud-init;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.${namespace}.services.cloud-init = {
|
||||||
|
enable = lib.mkEnableOption "Enable Cloud-Init";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.cloud-init = {
|
||||||
|
enable = true;
|
||||||
|
network.enable = true;
|
||||||
|
settings = {
|
||||||
|
datasource_list = [ "NoCloud" ];
|
||||||
|
preserve_hostname = false;
|
||||||
|
system_info = {
|
||||||
|
distro = "nixos";
|
||||||
|
network.renderers = [ "networkd" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
34
modules/nixos/services/openiscsi/default.nix
Normal file
34
modules/nixos/services/openiscsi/default.nix
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
{ config, pkgs, lib, namespace, host, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib) types mkIf;
|
||||||
|
inherit (lib.${namespace}) mkOpt;
|
||||||
|
|
||||||
|
cfg = config.${namespace}.services.openiscsi;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.${namespace}.services.openiscsi = {
|
||||||
|
enable = lib.mkEnableOption "Open iSCSI support";
|
||||||
|
name = mkOpt types.str "iqn.2025.reichard.io:${host}" "iSCSI name";
|
||||||
|
symlink = mkOpt types.bool false "Create a symlink to the iSCSI binaries";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
boot.kernelModules = [ "iscsi_tcp" "libiscsi" "scsi_transport_iscsi" ];
|
||||||
|
|
||||||
|
services.openiscsi = {
|
||||||
|
enable = true;
|
||||||
|
name = cfg.name;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
openiscsi
|
||||||
|
];
|
||||||
|
|
||||||
|
# Predominately used for RKE2 & Democratic CSI
|
||||||
|
system.activationScripts.iscsi-symlink = mkIf cfg.symlink ''
|
||||||
|
mkdir -p /usr/bin
|
||||||
|
ln -sf ${pkgs.openiscsi}/bin/iscsiadm /usr/bin/iscsiadm
|
||||||
|
ln -sf ${pkgs.openiscsi}/bin/iscsid /usr/bin/iscsid
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
{ config, format, lib, namespace, ... }:
|
{ config, lib, namespace, ... }:
|
||||||
let
|
let
|
||||||
inherit (lib)
|
inherit (lib)
|
||||||
types
|
types
|
||||||
@ -40,7 +40,7 @@ in
|
|||||||
AuthenticationMethods = "publickey";
|
AuthenticationMethods = "publickey";
|
||||||
ChallengeResponseAuthentication = "no";
|
ChallengeResponseAuthentication = "no";
|
||||||
PasswordAuthentication = false;
|
PasswordAuthentication = false;
|
||||||
PermitRootLogin = if format == "install-iso" then "yes" else "no";
|
PermitRootLogin = "prohibit-password";
|
||||||
PubkeyAuthentication = "yes";
|
PubkeyAuthentication = "yes";
|
||||||
StreamLocalBindUnlink = "yes";
|
StreamLocalBindUnlink = "yes";
|
||||||
UseDns = false;
|
UseDns = false;
|
||||||
|
20
modules/nixos/services/rke2/default.nix
Normal file
20
modules/nixos/services/rke2/default.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{ config, lib, namespace, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib) types mkIf;
|
||||||
|
inherit (lib.${namespace}) mkOpt;
|
||||||
|
|
||||||
|
cfg = config.${namespace}.services.rke2;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.${namespace}.services.rke2 = with types; {
|
||||||
|
enable = lib.mkEnableOption "Enabel RKE2";
|
||||||
|
disable = mkOpt (listOf str) [ ] "Disable services";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.rke2 = {
|
||||||
|
enable = true;
|
||||||
|
disable = cfg.disable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -43,11 +43,9 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
initrd = mkIf cfg.xenGuest {
|
initrd = mkIf cfg.xenGuest {
|
||||||
availableKernelModules = [ "xen_blkfront" "xen_netfront" ];
|
|
||||||
kernelModules = [ "xen_netfront" "xen_blkfront" ];
|
kernelModules = [ "xen_netfront" "xen_blkfront" ];
|
||||||
supportedFilesystems = [ "ext4" "xenfs" ];
|
supportedFilesystems = [ "xenfs" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
kernelModules = mkIf cfg.xenGuest [ "xen_netfront" "xen_blkfront" "xenfs" ];
|
kernelModules = mkIf cfg.xenGuest [ "xen_netfront" "xen_blkfront" "xenfs" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1,16 +1,46 @@
|
|||||||
{ pkgs, lib, modulesPath, ... }:
|
{ pkgs, namespace, lib, modulesPath, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib.${namespace}) enabled;
|
||||||
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
(modulesPath + "/profiles/qemu-guest.nix")
|
(modulesPath + "/profiles/qemu-guest.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
reichard = {
|
reichard = {
|
||||||
nix.enable = false;
|
nix = enabled;
|
||||||
|
|
||||||
|
system = {
|
||||||
|
boot = {
|
||||||
|
enable = true;
|
||||||
|
xenGuest = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
openssh = enabled;
|
||||||
|
cloud-init = enabled;
|
||||||
|
rke2 = {
|
||||||
|
enable = true;
|
||||||
|
disable = [ "rke2-ingress-nginx" ];
|
||||||
|
};
|
||||||
|
openiscsi = {
|
||||||
|
enable = true;
|
||||||
|
symlink = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware = {
|
||||||
|
opengl = {
|
||||||
|
enable = true;
|
||||||
|
enableIntel = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Basic System
|
# Basic System
|
||||||
system.stateVersion = "24.11";
|
system.stateVersion = "24.11";
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
|
||||||
time.timeZone = "UTC";
|
time.timeZone = "UTC";
|
||||||
|
|
||||||
fileSystems."/" = {
|
fileSystems."/" = {
|
||||||
@ -19,41 +49,6 @@
|
|||||||
autoResize = true;
|
autoResize = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
boot = {
|
|
||||||
initrd = {
|
|
||||||
availableKernelModules = [
|
|
||||||
# Xen
|
|
||||||
"xen_blkfront"
|
|
||||||
"xen_netfront"
|
|
||||||
];
|
|
||||||
kernelModules = [ "xen_netfront" "xen_blkfront" ];
|
|
||||||
supportedFilesystems = [ "ext4" "xenfs" ];
|
|
||||||
};
|
|
||||||
kernelModules = [
|
|
||||||
# Xen VM Requirements
|
|
||||||
"xen_netfront"
|
|
||||||
"xen_blkfront"
|
|
||||||
"xenfs"
|
|
||||||
|
|
||||||
# iSCSI
|
|
||||||
"iscsi_tcp"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Add Intel Arc A310 GPU Drivers
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
|
||||||
hardware.graphics = {
|
|
||||||
enable = true;
|
|
||||||
extraPackages = with pkgs; [
|
|
||||||
libvdpau-va-gl
|
|
||||||
intel-vaapi-driver
|
|
||||||
intel-media-driver
|
|
||||||
intel-compute-runtime
|
|
||||||
intel-ocl
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# Network Configuration
|
# Network Configuration
|
||||||
networking = {
|
networking = {
|
||||||
hostName = lib.mkForce "";
|
hostName = lib.mkForce "";
|
||||||
@ -88,44 +83,6 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services = {
|
|
||||||
# Enable Xen Guest Utilities
|
|
||||||
xe-guest-utilities.enable = true;
|
|
||||||
|
|
||||||
# Enable iSCSI
|
|
||||||
openiscsi = {
|
|
||||||
enable = true;
|
|
||||||
name = "iqn.2025.placeholder:initiator"; # Overridden @ Runtime
|
|
||||||
};
|
|
||||||
|
|
||||||
# Cloud Init
|
|
||||||
cloud-init = {
|
|
||||||
enable = true;
|
|
||||||
network.enable = true;
|
|
||||||
settings = {
|
|
||||||
datasource_list = [ "NoCloud" ];
|
|
||||||
preserve_hostname = false;
|
|
||||||
system_info.distro = "nixos";
|
|
||||||
system_info.network.renderers = [ "networkd" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable SSH
|
|
||||||
openssh = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
PasswordAuthentication = false;
|
|
||||||
PermitRootLogin = "prohibit-password";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable RKE2
|
|
||||||
rke2 = {
|
|
||||||
enable = true;
|
|
||||||
disable = [ "rke2-ingress-nginx" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services = {
|
systemd.services = {
|
||||||
# RKE2 - Wait Cloud Init
|
# RKE2 - Wait Cloud Init
|
||||||
rke2-server = {
|
rke2-server = {
|
||||||
@ -155,33 +112,11 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# User Authorized Keys
|
|
||||||
users.users.root = {
|
|
||||||
openssh.authorizedKeys.keys = [
|
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIe1n9l9pVF5+kjWJCOt3AvBVf1HOSZkEDZxCWVPSIkr evan@reichard"
|
|
||||||
];
|
|
||||||
hashedPassword = null;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Add Symlinks Expected by Democratic
|
|
||||||
system.activationScripts = {
|
|
||||||
iscsi-initiator = ''
|
|
||||||
mkdir -p /usr/bin
|
|
||||||
ln -sf ${pkgs.openiscsi}/bin/iscsiadm /usr/bin/iscsiadm
|
|
||||||
ln -sf ${pkgs.openiscsi}/bin/iscsid /usr/bin/iscsid
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# System Packages
|
# System Packages
|
||||||
environment = {
|
environment = {
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
htop
|
htop
|
||||||
intel-gpu-tools
|
|
||||||
k9s
|
|
||||||
kubectl
|
|
||||||
kubernetes-helm
|
|
||||||
nfs-utils
|
nfs-utils
|
||||||
openiscsi
|
|
||||||
tmux
|
tmux
|
||||||
vim
|
vim
|
||||||
];
|
];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user