add iso, change networking for fw

This commit is contained in:
2023-11-28 15:44:54 +01:00
parent d1437de4b1
commit c45fb4d230
6 changed files with 177 additions and 15 deletions

View File

@@ -1,9 +1,19 @@
{ modulesPath, ... }:
{
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
boot.loader.grub.device = "/dev/sda";
boot.loader.systemd-boot.enable = true;
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "vmw_pvscsi" "xen_blkfront" ];
boot.initrd.kernelModules = [ "nvme" ];
fileSystems."/" = { device = "/dev/sda1"; fsType = "ext4"; };
fileSystems."/boot" = {
device = "/dev/disk/by-label/boot";
fsType = "vfat";
};
fileSystems."/" = {
device = "/dev/disk/by-partlabel/NIXOS";
fsType = "ext4";
};
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -1,41 +1,41 @@
{ ... }: {
systemd.network.links."10-wan" = {
matchConfig.PermanentMACAddress = "a8:b8:e0:00:43:c1";
linkConfig.Name = "wan";
};
networking = {
useDHCP = false;
nameservers = [ "9.9.9.9" "149.112.112.112" ];
# Define VLANS
vlans = {
wan = {
id = 10;
interface = "enp1s0";
};
lan = {
id = 1;
interface = "enp2s0";
interface = "enp3s0";
};
server = {
id = 2;
interface = "enp3s0";
interface = "enp4s0";
};
multimedia = {
id = 3;
interface = "enp4s0";
interface = "enp5s0";
};
smart = {
id = 4094;
interface = "enp4s0";
interface = "enp5s0";
};
guest = {
id = 100;
interface = "enp4s0";
interface = "enp5s0";
};
};
interfaces = {
# Don't request DHCP on the physical interfaces
enp1s0.useDHCP = false;
enp2s0.useDHCP = false;
enp3s0.useDHCP = false;
enp4s0.useDHCP = false;
enp5s0.useDHCP = false;
# Handle the VLANs
wan.useDHCP = true;

54
iso/configuration.nix Normal file
View File

@@ -0,0 +1,54 @@
{ config, lib, pkgs, ... }: {
imports = [
<nixpkgs/nixos/modules/profiles/all-hardware.nix>
<nixpkgs/nixos/modules/profiles/base.nix>
#installer-only ./hardware-configuration.nix
];
nixpkgs.config.allowUnfree = true;
zramSwap.enable = true;
services.logind.lidSwitch = "ignore";
security.sudo.wheelNeedsPassword = false;
networking.hostName = "install";
services.openssh.enable = true;
services.openssh.settings.PermitRootLogin = "yes";
users.mutableUsers = false;
users.users.root = {
# Password is "linux"
hashedPassword = lib.mkForce "$6$7IKExnDde920x.YH$ggegnnKJYdmg1Wt33fxuPpM.MmIaX32LXVyjL8ed7ohT385lKotFGzRpitncQ3pd9Lci1QCFGRn2tVJGxkFAm0";
};
services.avahi = {
enable = true;
ipv4 = true;
ipv6 = true;
nssmdns = true;
publish = { enable = true; domain = true; addresses = true; };
};
environment.systemPackages = with pkgs; [
coreutils
curl
file
git
htop
lsof
nano
openssl
pciutils
pv
tmux
tree
unar
vim_configurable
wget
zip
];
system.stateVersion = "23.05"; # Did you read the comment?
}

84
iso/default.nix Normal file
View File

@@ -0,0 +1,84 @@
{
system ? "x86_64-linux",
}:
(import <nixpkgs/nixos/lib/eval-config.nix> {
inherit system;
modules = [
<nixpkgs/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix>
./configuration.nix
({ config, pkgs, lib, ... }: {
systemd.services.install = {
description = "Bootstrap a NixOS installation";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "polkit.service" ];
path = [ "/run/current-system/sw/" ];
script = with pkgs; ''
echo 'journalctl -fb -n100 -uinstall' >>~nixos/.bash_history
set -eux
wait-for() {
for _ in seq 10; do
if $@; then
break
fi
sleep 1
done
}
dev=/dev/sda
[ -b /dev/nvme0n1 ] && dev=/dev/nvme0n1
[ -b /dev/vda ] && dev=/dev/vda
${utillinux}/bin/sfdisk --wipe=always $dev <<-END
label: gpt
name=BOOT, size=512MiB, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B
name=NIXOS
END
mkfs.fat -F 32 -n boot /dev/disk/by-partlabel/BOOT
sync
wait-for [ -b /dev/disk/by-partlabel/BOOT ]
wait-for mkfs.fat -F 32 -n boot /dev/disk/by-partlabel/BOOT
wait-for [ -b /dev/disk/by-partlabel/NIXOS ]
mkfs.ext4 -L nixos /dev/disk/by-partlabel/NIXOS
sync
mount /dev/disk/by-partlabel/NIXOS /mnt
mkdir /mnt/boot
wait-for mount /dev/disk/by-label/boot /mnt/boot
install -D ${./configuration.nix} /mnt/etc/nixos/configuration.nix
install -D ${./hardware-configuration.nix} /mnt/etc/nixos/hardware-configuration.nix
sed -i -E 's/(\w*)#installer-only /\1/' /mnt/etc/nixos/*
${config.system.build.nixos-install}/bin/nixos-install \
--system ${(import <nixpkgs/nixos/lib/eval-config.nix> {
inherit system;
modules = [
./configuration.nix
./hardware-configuration.nix
];
}).config.system.build.toplevel} \
--no-root-passwd \
--cores 0
echo 'Shutting off in 1min'
${systemd}/bin/shutdown +1
'';
environment = config.nix.envVars // {
inherit (config.environment.sessionVariables) NIX_PATH;
HOME = "/root";
};
serviceConfig = {
Type = "oneshot";
};
};
})
];
}).config.system.build.isoImage

View File

@@ -0,0 +1,13 @@
{ config, pkgs, ... }: {
boot.loader.systemd-boot.enable = true;
fileSystems."/boot" = {
device = "/dev/disk/by-label/boot";
fsType = "vfat";
};
fileSystems."/" = {
device = "/dev/disk/by-partlabel/NIXOS";
fsType = "ext4";
};
}

1
iso/result Symbolic link
View File

@@ -0,0 +1 @@
/nix/store/awr76nk2v9gambbksl4lj2z1f30b595i-nixos-23.05.4974.d2e4de209881-x86_64-linux.iso