Add initial config for tower
This commit is contained in:
130
nixos/boxes/tower/default.nix
Normal file
130
nixos/boxes/tower/default.nix
Normal file
@@ -0,0 +1,130 @@
|
||||
{ lib, ... }: {
|
||||
nixos.systems.tower = {
|
||||
system = "x86_64-linux";
|
||||
nixpkgs = "mine";
|
||||
home-manager = "mine";
|
||||
|
||||
configuration = { lib, pkgs, modulesPath, config, systems, assignments, allAssignments, ... }:
|
||||
let
|
||||
inherit (lib) mkIf mkMerge mkForce;
|
||||
in
|
||||
{
|
||||
hardware = {
|
||||
enableRedistributableFirmware = true;
|
||||
cpu = {
|
||||
intel.updateMicrocode = true;
|
||||
};
|
||||
};
|
||||
|
||||
boot = {
|
||||
loader.efi.canTouchEfiVariables = true;
|
||||
kernelPackages = pkgs.linuxKernel.packages.linux_5_19;
|
||||
kernelModules = [ "kvm-intel" ];
|
||||
kernelParams = [ "intel_iommu=on" ];
|
||||
initrd = {
|
||||
availableKernelModules = [ "nvme" "xhci_pci" "usb_storage" "usbhid" "thunderbolt" ];
|
||||
luks = {
|
||||
reusePassphrases = true;
|
||||
devices = {
|
||||
persist = {
|
||||
device = "/dev/disk/by-uuid/27840c6f-445c-4b95-8c39-e69d07219f33";
|
||||
allowDiscards = true;
|
||||
preLVM = false;
|
||||
};
|
||||
home = {
|
||||
device = "/dev/disk/by-uuid/c16c5038-7883-42c3-960a-a085a99364eb";
|
||||
allowDiscards = true;
|
||||
preLVM = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fileSystems = {
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-partuuid/66bc15d3-83dd-ea47-9753-3fb88eab903f";
|
||||
fsType = "vfat";
|
||||
};
|
||||
"/nix" = {
|
||||
device = "/dev/disk/by-uuid/cd597ff0-ca72-4a13-84c8-91b9c09e0a29";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
"/persist" = {
|
||||
device = "/dev/disk/by-uuid/1e9b6a54-bd8d-4ff3-8c06-7b214a35db57";
|
||||
fsType = "ext4";
|
||||
neededForBoot = true;
|
||||
};
|
||||
"/home" = {
|
||||
device = "/dev/disk/by-uuid/5dc99dd6-0d05-45b3-acb6-03c29a9b9388";
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
|
||||
console.keyMap = "uk";
|
||||
|
||||
services = {
|
||||
lvm = {
|
||||
boot.thin.enable = true;
|
||||
dmeventd.enable = true;
|
||||
};
|
||||
fstrim.enable = true;
|
||||
|
||||
resolved = {
|
||||
enable = true;
|
||||
extraConfig = mkForce "";
|
||||
};
|
||||
};
|
||||
|
||||
networking = {
|
||||
networkmanager = {
|
||||
enable = true;
|
||||
dns = "systemd-resolved";
|
||||
wifi = {
|
||||
backend = "wpa_supplicant";
|
||||
};
|
||||
extraConfig = ''
|
||||
[main]
|
||||
no-auto-default=*
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
dhcpcd
|
||||
pciutils
|
||||
usbutils
|
||||
lm_sensors
|
||||
linuxPackages.cpupower
|
||||
brightnessctl
|
||||
];
|
||||
|
||||
systemd = {
|
||||
network = {
|
||||
links = {
|
||||
"10-wifi" = {
|
||||
matchConfig.MACAddress = "8c:f8:c5:55:96:1e";
|
||||
linkConfig.Name = "wifi";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
my = {
|
||||
user = {
|
||||
tmphome = false;
|
||||
};
|
||||
|
||||
#deploy.generate.system.mode = "boot";
|
||||
secrets = {
|
||||
key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOU+UxJh8PZoiXV+0CRumv9Xsk6Fks4YMYRZcThmaJkB";
|
||||
};
|
||||
|
||||
firewall = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@@ -86,6 +86,7 @@ in
|
||||
};
|
||||
|
||||
time.timeZone = mkDefault "Europe/Dublin";
|
||||
i18n.defaultLocale = "en_IE.UTF-8";
|
||||
|
||||
boot = {
|
||||
# Use latest LTS release by default
|
||||
|
@@ -337,6 +337,9 @@ in
|
||||
"/var/lib/cni"
|
||||
];
|
||||
})
|
||||
(mkIf config.networking.networkmanager.enable {
|
||||
my.tmproot.persistence.config.directories = [ "/var/lib/NetworkManager" ];
|
||||
})
|
||||
(mkIf config.my.build.isDevVM {
|
||||
fileSystems = mkVMOverride {
|
||||
# Hijack the "root" device for persistence in the VM
|
||||
|
@@ -11,6 +11,7 @@ in
|
||||
options.my.user = with lib.types; {
|
||||
enable = mkBoolOpt' true "Whether to create a primary user.";
|
||||
passwordSecret = mkOpt' (nullOr str) "user-passwd.txt" "Name of user password secret.";
|
||||
tmphome = mkBoolOpt' true "Whether to persist home directory files under tmproot";
|
||||
config = mkOption {
|
||||
type = options.users.users.type.nestedTypes.elemType;
|
||||
default = { };
|
||||
@@ -46,7 +47,7 @@ in
|
||||
_module.args.name = lib.mkForce user'.name;
|
||||
};
|
||||
};
|
||||
tmproot = {
|
||||
tmproot = mkIf cfg.tmphome {
|
||||
unsaved.ignore = [
|
||||
# Auto-generated (on activation?)
|
||||
"/home/${user'.name}/.nix-profile"
|
||||
|
Reference in New Issue
Block a user