server: add linode profile init
This commit is contained in:
parent
db7b83037f
commit
3c0188a701
10 changed files with 170 additions and 22 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./options
|
./options.nix
|
||||||
./profiles
|
|
||||||
./services
|
./services
|
||||||
|
./profiles
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./server.nix
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
@ -1,14 +1,16 @@
|
||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
config,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (builtins) attrValues;
|
inherit (builtins) attrValues;
|
||||||
inherit (lib) mkForce mkIf;
|
inherit (lib) mkForce getExe' mkIf;
|
||||||
inherit (config.ooknet.server) profile;
|
inherit (config.ooknet.server) profile;
|
||||||
in {
|
in {
|
||||||
config = mkIf (profile == "linode") {
|
config = mkIf (profile == "linode") {
|
||||||
|
services.qemuGuest.enable = true;
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
tempAddresses = "disabled";
|
tempAddresses = "disabled";
|
||||||
usePredictableInterfaceNames = mkForce false;
|
usePredictableInterfaceNames = mkForce false;
|
||||||
|
|
@ -17,36 +19,68 @@ in {
|
||||||
useDHCP = true;
|
useDHCP = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/sda";
|
||||||
|
fsType = "ext4";
|
||||||
|
autoResize = true;
|
||||||
|
};
|
||||||
|
swapDevices = [{device = "/dev/sdb";}];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
kernelModules = [];
|
kernelModules = [];
|
||||||
# LISH console support
|
# LISH console support
|
||||||
kernelParams = ["console=ttys0,19200n8"];
|
kernelParams = ["console=ttyS0,19200n8"];
|
||||||
extraModulePackages = [];
|
extraModulePackages = [];
|
||||||
|
growPartition = true;
|
||||||
initrd = {
|
initrd = {
|
||||||
availableKernelModules = ["virtio_pci" "virtio_scsi" "ahci" "sd_mod"];
|
availableKernelModules = [
|
||||||
kernelModules = [];
|
# modules generated by nixos-generate-config
|
||||||
|
"virtio_pci"
|
||||||
|
"virtio_scsi"
|
||||||
|
"ahci"
|
||||||
|
"sd_mod"
|
||||||
|
|
||||||
|
# qemu guest modules
|
||||||
|
"virtio_net"
|
||||||
|
"virtio_mmio"
|
||||||
|
"virtio_blk"
|
||||||
|
"virtio_scsi"
|
||||||
|
"9p"
|
||||||
|
"9pnet_virtio"
|
||||||
|
];
|
||||||
|
kernelModules = [
|
||||||
|
"virtio_balloon"
|
||||||
|
"virtio_console"
|
||||||
|
"virtio_rng"
|
||||||
|
"virtio_gpu"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
loader = {
|
loader = {
|
||||||
grub = {
|
grub = {
|
||||||
enable = true;
|
enable = true;
|
||||||
device = "/dev/sda";
|
device = "nodev";
|
||||||
forceInstall = true;
|
forceInstall = true;
|
||||||
copyKernels = true;
|
copyKernels = true;
|
||||||
fsIdentifier = "provided";
|
fsIdentifier = "label";
|
||||||
|
splashImage = null;
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1;
|
serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1;
|
||||||
terminal_input serial;
|
terminal_input serial;
|
||||||
terminal_output serial
|
terminal_output serial
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
extraInstallCommands = "${getExe' pkgs.coreutils "ln"} -fs /boot/grub /boot/grub2";
|
||||||
};
|
};
|
||||||
|
timeout = mkForce 10;
|
||||||
# disable base settings
|
# disable base settings
|
||||||
efi.canTouchEfiVariables = mkForce false;
|
efi.canTouchEfiVariables = mkForce false;
|
||||||
systemd-boot.enable = mkForce false;
|
systemd-boot.enable = mkForce false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = attrValues {
|
environment = {
|
||||||
|
systemPackages = attrValues {
|
||||||
inherit
|
inherit
|
||||||
(pkgs)
|
(pkgs)
|
||||||
inetutils
|
inetutils
|
||||||
|
|
@ -56,4 +90,5 @@ in {
|
||||||
;
|
;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
60
modules/nixos/server/profiles/linode/base/boot.nix
Normal file
60
modules/nixos/server/profiles/linode/base/boot.nix
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkForce getExe';
|
||||||
|
in {
|
||||||
|
boot = {
|
||||||
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
kernelModules = [];
|
||||||
|
# LISH console support
|
||||||
|
kernelParams = ["console=ttyS0,19200n8"];
|
||||||
|
extraModulePackages = [];
|
||||||
|
growPartition = true;
|
||||||
|
initrd = {
|
||||||
|
availableKernelModules = [
|
||||||
|
# modules generated by nixos-generate-config
|
||||||
|
"virtio_pci"
|
||||||
|
"virtio_scsi"
|
||||||
|
"ahci"
|
||||||
|
"sd_mod"
|
||||||
|
|
||||||
|
# qemu guest modules
|
||||||
|
"virtio_net"
|
||||||
|
"virtio_mmio"
|
||||||
|
"virtio_blk"
|
||||||
|
"virtio_scsi"
|
||||||
|
"9p"
|
||||||
|
"9pnet_virtio"
|
||||||
|
];
|
||||||
|
kernelModules = [
|
||||||
|
"virtio_balloon"
|
||||||
|
"virtio_console"
|
||||||
|
"virtio_rng"
|
||||||
|
"virtio_gpu"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
loader = {
|
||||||
|
grub = {
|
||||||
|
enable = true;
|
||||||
|
device = "nodev";
|
||||||
|
forceInstall = true;
|
||||||
|
copyKernels = true;
|
||||||
|
fsIdentifier = "label";
|
||||||
|
splashImage = null;
|
||||||
|
extraConfig = ''
|
||||||
|
serial --speed=19200 --unit=0 --word=8 --parity=no --stop=1;
|
||||||
|
terminal_input serial;
|
||||||
|
terminal_output serial
|
||||||
|
'';
|
||||||
|
|
||||||
|
extraInstallCommands = "${getExe' pkgs.coreutils "ln"} -fs /boot/grub /boot/grub2";
|
||||||
|
};
|
||||||
|
timeout = mkForce 10;
|
||||||
|
# disable base settings
|
||||||
|
efi.canTouchEfiVariables = mkForce false;
|
||||||
|
systemd-boot.enable = mkForce false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
7
modules/nixos/server/profiles/linode/base/default.nix
Normal file
7
modules/nixos/server/profiles/linode/base/default.nix
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./boot.nix
|
||||||
|
./networking.nix
|
||||||
|
./file-system.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/sda";
|
||||||
|
fsType = "ext4";
|
||||||
|
autoResize = true;
|
||||||
|
};
|
||||||
|
swapDevices = [{device = "/dev/sdb";}];
|
||||||
|
}
|
||||||
12
modules/nixos/server/profiles/linode/base/networking.nix
Normal file
12
modules/nixos/server/profiles/linode/base/networking.nix
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
{lib, ...}: let
|
||||||
|
inherit (lib) mkForce;
|
||||||
|
in {
|
||||||
|
networking = {
|
||||||
|
tempAddresses = "disabled";
|
||||||
|
usePredictableInterfaceNames = mkForce false;
|
||||||
|
interfaces.eth0 = {
|
||||||
|
tempAddress = "disabled";
|
||||||
|
useDHCP = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
8
modules/nixos/server/profiles/linode/default.nix
Normal file
8
modules/nixos/server/profiles/linode/default.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./image.nix
|
||||||
|
./base
|
||||||
|
];
|
||||||
|
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
}
|
||||||
23
modules/nixos/server/profiles/linode/image.nix
Normal file
23
modules/nixos/server/profiles/linode/image.nix
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
make-disk-image = import "${inputs.nixpkgs}/nixos/lib/make-disk-image.nix";
|
||||||
|
in {
|
||||||
|
system.build.image = make-disk-image {
|
||||||
|
inherit lib pkgs config;
|
||||||
|
partitionTableType = "none";
|
||||||
|
name = "linode-image";
|
||||||
|
format = "raw";
|
||||||
|
# Linode requires the image to be gzip'd
|
||||||
|
# unzipped image cannot exceed 6gb
|
||||||
|
postVM = ''
|
||||||
|
${pkgs.gzip}/bin/gzip -6 -c -- $diskImage > \
|
||||||
|
$out/nixos-image-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.img.gz
|
||||||
|
rm $diskImage
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue