Compare commits
2 commits
main
...
mdebray/ma
Author | SHA1 | Date | |
---|---|---|---|
|
31d31260b8 | ||
|
b129f775b2 |
8 changed files with 231 additions and 201 deletions
|
@ -135,232 +135,250 @@ rec {
|
||||||
../../modules/zyxel-dual-image
|
../../modules/zyxel-dual-image
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs.hostPlatform = system.crossSystem;
|
options = {
|
||||||
|
hardware.wlanMacAddresses = {
|
||||||
filesystem = dir {
|
wlan0 = lib.mkOption {
|
||||||
lib = dir {
|
type = lib.types.str;
|
||||||
firmware = dir {
|
description = "Mac address of wlan0 device";
|
||||||
mediatek = dir {
|
};
|
||||||
"mt7915_wa.bin" = symlink wlan_firmware;
|
wlan1 = lib.mkOption {
|
||||||
"mt7915_wm.bin" = symlink wlan_firmware';
|
type = lib.types.str;
|
||||||
"mt7915_rom_patch.bin" = symlink wlan_firmware'';
|
description = "Mac address of wlan1 device";
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
rootfsType = "ubifs";
|
config = {
|
||||||
hardware = {
|
|
||||||
# Taken from OpenWRT
|
|
||||||
# root@OpenWrt:/# ubinfo /dev/ubi0
|
|
||||||
# ubi0
|
|
||||||
# Volumes count: 2
|
|
||||||
# Logical eraseblock size: 126976 bytes, 124.0 KiB
|
|
||||||
# Total amount of logical eraseblocks: 256 (32505856 bytes, 31.0 MiB)
|
|
||||||
# Amount of available logical eraseblocks: 0 (0 bytes)
|
|
||||||
# Maximum count of volumes 128
|
|
||||||
# Count of bad physical eraseblocks: 0
|
|
||||||
# Count of reserved physical eraseblocks: 19
|
|
||||||
# Current maximum erase counter value: 2
|
|
||||||
# Minimum input/output unit size: 2048 bytes
|
|
||||||
# Character device major/minor: 250:0
|
|
||||||
# Present volumes: 0, 1
|
|
||||||
ubi = {
|
|
||||||
minIOSize = "2048";
|
|
||||||
logicalEraseBlockSize = "126976";
|
|
||||||
physicalEraseBlockSize = "128KiB";
|
|
||||||
maxLEBcount = "256";
|
|
||||||
};
|
|
||||||
|
|
||||||
flash.eraseBlockSize = 64 * 1024;
|
nixpkgs.hostPlatform = system.crossSystem;
|
||||||
|
|
||||||
# This is a FIT containing a kernel padded and
|
filesystem = dir {
|
||||||
# a UBI volume rootfs.
|
lib = dir {
|
||||||
defaultOutput = "zyxel-nwa-fit";
|
firmware = dir {
|
||||||
|
mediatek = dir {
|
||||||
loadAddress = lim.parseInt "0x80001000";
|
"mt7915_wa.bin" = symlink wlan_firmware;
|
||||||
entryPoint = lim.parseInt "0x80001000";
|
"mt7915_wm.bin" = symlink wlan_firmware';
|
||||||
# Aligned on 2kb.
|
"mt7915_rom_patch.bin" = symlink wlan_firmware'';
|
||||||
alignment = 2048;
|
};
|
||||||
|
|
||||||
rootDevice = "ubi0:rootfs";
|
|
||||||
alternativeRootDevice = "ubi1:rootfs";
|
|
||||||
|
|
||||||
# Auto-attach MTD devices: ubi_a then ubi_b.
|
|
||||||
ubi.mtds = [ "ubi_a" "ubi_b" ];
|
|
||||||
|
|
||||||
dts = {
|
|
||||||
# Strong DTB assumptions:
|
|
||||||
# ubi_a and ubi_b are two MTD devices.
|
|
||||||
# If those changes, disaster will occur.
|
|
||||||
src = ./dtb/mt7621_zyxel_nwa50ax.dtsi;
|
|
||||||
includes = [
|
|
||||||
"${./dtb}"
|
|
||||||
"${openwrt.src}/target/linux/ramips/dts"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
networkInterfaces =
|
|
||||||
let
|
|
||||||
inherit (config.system.service.network) link;
|
|
||||||
in {
|
|
||||||
eth = link.build { ifname = "eth0"; };
|
|
||||||
lan = link.build { ifname = "lan"; };
|
|
||||||
wlan0 = link.build {
|
|
||||||
ifname = "wlan0";
|
|
||||||
dependencies = [ mac80211 ];
|
|
||||||
};
|
|
||||||
wlan1 = link.build {
|
|
||||||
ifname = "wlan1";
|
|
||||||
dependencies = [ mac80211 ];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
# Critical because NWA50AX will extend your cmdline with the image number booted.
|
|
||||||
# and some bootloader version.
|
|
||||||
# You don't want to find yourself being overridden.
|
|
||||||
commandLineDtbNode = "bootargs-override";
|
|
||||||
|
|
||||||
imageFormat = "fit";
|
|
||||||
tftp = {
|
|
||||||
# 20MB is pretty good on this device as we have plenty of RAM.
|
|
||||||
freeSpaceBytes = 20 * 1024 * 1024;
|
|
||||||
appendDTB = true;
|
|
||||||
loadAddress = lim.parseInt "0x2000000";
|
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
# Dual image management service in userspace.
|
rootfsType = "ubifs";
|
||||||
services.zyxel-dual-image = config.boot.zyxel-dual-image.build {
|
hardware = {
|
||||||
ensureActiveImage = "primary";
|
# Taken from OpenWRT
|
||||||
# TODO: use mtd names rather…
|
# root@OpenWrt:/# ubinfo /dev/ubi0
|
||||||
# primary and secondary are always /dev/mtd3 by virtue of the
|
# ubi0
|
||||||
# dtb being not too wrong…
|
# Volumes count: 2
|
||||||
# TODO: remove this hack.
|
# Logical eraseblock size: 126976 bytes, 124.0 KiB
|
||||||
primaryMtdPartition = "/dev/mtd3";
|
# Total amount of logical eraseblocks: 256 (32505856 bytes, 31.0 MiB)
|
||||||
secondaryMtdPartition = "/dev/mtd3";
|
# Amount of available logical eraseblocks: 0 (0 bytes)
|
||||||
bootConfigurationMtdPartition = "/dev/mtd12";
|
# Maximum count of volumes 128
|
||||||
};
|
# Count of bad physical eraseblocks: 0
|
||||||
|
# Count of reserved physical eraseblocks: 19
|
||||||
|
# Current maximum erase counter value: 2
|
||||||
|
# Minimum input/output unit size: 2048 bytes
|
||||||
|
# Character device major/minor: 250:0
|
||||||
|
# Present volumes: 0, 1
|
||||||
|
ubi = {
|
||||||
|
minIOSize = "2048";
|
||||||
|
logicalEraseBlockSize = "126976";
|
||||||
|
physicalEraseBlockSize = "128KiB";
|
||||||
|
maxLEBcount = "256";
|
||||||
|
};
|
||||||
|
|
||||||
# DEVICE_VENDOR := ZyXEL
|
flash.eraseBlockSize = 64 * 1024;
|
||||||
# KERNEL_SIZE := 8192k
|
|
||||||
# DEVICE_PACKAGES := kmod-mt7915-firmware zyxel-bootconfig
|
|
||||||
# KERNEL := kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
|
||||||
# IMAGES += factory.bin ramboot-factory.bin
|
|
||||||
# IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | zyxel-nwa-fit
|
|
||||||
# IMAGE/ramboot-factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi
|
|
||||||
|
|
||||||
kernel = {
|
# This is a FIT containing a kernel padded and
|
||||||
src = pkgs.fetchurl {
|
# a UBI volume rootfs.
|
||||||
name = "linux.tar.gz";
|
defaultOutput = "zyxel-nwa-fit";
|
||||||
url = "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.137.tar.gz";
|
|
||||||
hash = "sha256-PkdzUKZ0IpBiWe/RS70J76JKnBFzRblWcKlaIFNxnHQ=";
|
loadAddress = lim.parseInt "0x80001000";
|
||||||
|
entryPoint = lim.parseInt "0x80001000";
|
||||||
|
# Aligned on 2kb.
|
||||||
|
alignment = 2048;
|
||||||
|
|
||||||
|
rootDevice = "ubi0:rootfs";
|
||||||
|
alternativeRootDevice = "ubi1:rootfs";
|
||||||
|
|
||||||
|
# Auto-attach MTD devices: ubi_a then ubi_b.
|
||||||
|
ubi.mtds = [ "ubi_a" "ubi_b" ];
|
||||||
|
|
||||||
|
dts = {
|
||||||
|
# Strong DTB assumptions:
|
||||||
|
# ubi_a and ubi_b are two MTD devices.
|
||||||
|
# If those changes, disaster will occur.
|
||||||
|
src = ./dtb/mt7621_zyxel_nwa50ax.dtsi;
|
||||||
|
includes = [
|
||||||
|
"${./dtb}"
|
||||||
|
"${openwrt.src}/target/linux/ramips/dts"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
networkInterfaces =
|
||||||
|
let
|
||||||
|
inherit (config.system.service.network) link;
|
||||||
|
in {
|
||||||
|
eth = link.build { ifname = "eth0"; };
|
||||||
|
lan = link.build { ifname = "lan"; };
|
||||||
|
wlan0 = link.build {
|
||||||
|
ifname = "wlan0";
|
||||||
|
dependencies = [ mac80211 ];
|
||||||
|
mac = config.hardware.wlanMacAddresses.wlan0;
|
||||||
|
};
|
||||||
|
wlan1 = link.build {
|
||||||
|
ifname = "wlan1";
|
||||||
|
dependencies = [ mac80211 ];
|
||||||
|
mac = config.hardware.wlanMacAddresses.wlan1;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
extraPatchPhase = ''
|
|
||||||
${openwrt.applyPatches.ramips}
|
|
||||||
|
|
||||||
'';
|
boot = {
|
||||||
config = {
|
# Critical because NWA50AX will extend your cmdline with the image number booted.
|
||||||
|
# and some bootloader version.
|
||||||
|
# You don't want to find yourself being overridden.
|
||||||
|
commandLineDtbNode = "bootargs-override";
|
||||||
|
|
||||||
RALINK = "y";
|
imageFormat = "fit";
|
||||||
PCI = "y";
|
tftp = {
|
||||||
PHY_MT7621_PCI = "y";
|
# 20MB is pretty good on this device as we have plenty of RAM.
|
||||||
PCIE_MT7621 = "y";
|
freeSpaceBytes = 20 * 1024 * 1024;
|
||||||
SOC_MT7621 = "y";
|
appendDTB = true;
|
||||||
CLK_MT7621 = "y";
|
loadAddress = lim.parseInt "0x2000000";
|
||||||
CLOCKSOURCE_WATCHDOG = "y";
|
};
|
||||||
|
};
|
||||||
|
|
||||||
SERIAL_8250_CONSOLE = "y";
|
# Dual image management service in userspace.
|
||||||
SERIAL_8250 = "y";
|
services.zyxel-dual-image = config.boot.zyxel-dual-image.build {
|
||||||
SERIAL_CORE_CONSOLE = "y";
|
ensureActiveImage = "primary";
|
||||||
SERIAL_OF_PLATFORM = "y";
|
# TODO: use mtd names rather…
|
||||||
SERIAL_8250_NR_UARTS = "3";
|
# primary and secondary are always /dev/mtd3 by virtue of the
|
||||||
SERIAL_8250_RUNTIME_UARTS = "3";
|
# dtb being not too wrong…
|
||||||
SERIAL_MCTRL_GPIO = "y";
|
# TODO: remove this hack.
|
||||||
|
primaryMtdPartition = "/dev/mtd3";
|
||||||
|
secondaryMtdPartition = "/dev/mtd3";
|
||||||
|
bootConfigurationMtdPartition = "/dev/mtd12";
|
||||||
|
};
|
||||||
|
|
||||||
CONSOLE_LOGLEVEL_DEFAULT = "8";
|
# DEVICE_VENDOR := ZyXEL
|
||||||
CONSOLE_LOGLEVEL_QUIET = "4";
|
# KERNEL_SIZE := 8192k
|
||||||
|
# DEVICE_PACKAGES := kmod-mt7915-firmware zyxel-bootconfig
|
||||||
|
# KERNEL := kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
||||||
|
# IMAGES += factory.bin ramboot-factory.bin
|
||||||
|
# IMAGE/factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi | zyxel-nwa-fit
|
||||||
|
# IMAGE/ramboot-factory.bin := append-kernel | pad-to $$(KERNEL_SIZE) | append-ubi
|
||||||
|
|
||||||
# MTD_UBI_BEB_LIMIT = "20";
|
kernel = {
|
||||||
# MTD_UBI_WL_THRESHOLD = "4096";
|
src = pkgs.fetchurl {
|
||||||
|
name = "linux.tar.gz";
|
||||||
|
url = "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.137.tar.gz";
|
||||||
|
hash = "sha256-PkdzUKZ0IpBiWe/RS70J76JKnBFzRblWcKlaIFNxnHQ=";
|
||||||
|
};
|
||||||
|
extraPatchPhase = ''
|
||||||
|
${openwrt.applyPatches.ramips}
|
||||||
|
|
||||||
MTD = "y";
|
'';
|
||||||
MTD_BLOCK = "y"; # fix undefined ref to register_mtd_blktrans_dev
|
config = {
|
||||||
MTD_RAW_NAND = "y";
|
|
||||||
MTD_NAND_MT7621 = "y";
|
|
||||||
MTD_NAND_MTK_BMT = "y"; # Bad-block Management Table
|
|
||||||
MTD_NAND_ECC_SW_HAMMING= "y";
|
|
||||||
MTD_SPI_NAND= "y";
|
|
||||||
MTD_OF_PARTS = "y";
|
|
||||||
MTD_NAND_CORE= "y";
|
|
||||||
MTD_SPLIT_FIRMWARE= "y";
|
|
||||||
MTD_SPLIT_FIT_FW= "y";
|
|
||||||
|
|
||||||
PINCTRL = "y";
|
RALINK = "y";
|
||||||
PINCTRL_MT7621 = "y";
|
PCI = "y";
|
||||||
|
PHY_MT7621_PCI = "y";
|
||||||
|
PCIE_MT7621 = "y";
|
||||||
|
SOC_MT7621 = "y";
|
||||||
|
CLK_MT7621 = "y";
|
||||||
|
CLOCKSOURCE_WATCHDOG = "y";
|
||||||
|
|
||||||
I2C = "y";
|
SERIAL_8250_CONSOLE = "y";
|
||||||
I2C_MT7621 = "y";
|
SERIAL_8250 = "y";
|
||||||
|
SERIAL_CORE_CONSOLE = "y";
|
||||||
|
SERIAL_OF_PLATFORM = "y";
|
||||||
|
SERIAL_8250_NR_UARTS = "3";
|
||||||
|
SERIAL_8250_RUNTIME_UARTS = "3";
|
||||||
|
SERIAL_MCTRL_GPIO = "y";
|
||||||
|
|
||||||
SPI = "y";
|
CONSOLE_LOGLEVEL_DEFAULT = "8";
|
||||||
MTD_SPI_NOR = "y";
|
CONSOLE_LOGLEVEL_QUIET = "4";
|
||||||
SPI_MT7621 = "y";
|
|
||||||
SPI_MASTER = "y";
|
|
||||||
SPI_MEM = "y";
|
|
||||||
|
|
||||||
REGULATOR = "y";
|
# MTD_UBI_BEB_LIMIT = "20";
|
||||||
REGULATOR_FIXED_VOLTAGE = "y";
|
# MTD_UBI_WL_THRESHOLD = "4096";
|
||||||
RESET_CONTROLLER = "y";
|
|
||||||
POWER_RESET = "y";
|
|
||||||
POWER_RESET_GPIO = "y";
|
|
||||||
POWER_SUPPLY = "y";
|
|
||||||
LED_TRIGGER_PHY = "y";
|
|
||||||
|
|
||||||
PCI_DISABLE_COMMON_QUIRKS = "y";
|
MTD = "y";
|
||||||
PCI_DOMAINS = "y";
|
MTD_BLOCK = "y"; # fix undefined ref to register_mtd_blktrans_dev
|
||||||
PCI_DOMAINS_GENERIC = "y";
|
MTD_RAW_NAND = "y";
|
||||||
PCI_DRIVERS_GENERIC = "y";
|
MTD_NAND_MT7621 = "y";
|
||||||
PCS_MTK_LYNXI = "y";
|
MTD_NAND_MTK_BMT = "y"; # Bad-block Management Table
|
||||||
|
MTD_NAND_ECC_SW_HAMMING= "y";
|
||||||
|
MTD_SPI_NAND= "y";
|
||||||
|
MTD_OF_PARTS = "y";
|
||||||
|
MTD_NAND_CORE= "y";
|
||||||
|
MTD_SPLIT_FIRMWARE= "y";
|
||||||
|
MTD_SPLIT_FIT_FW= "y";
|
||||||
|
|
||||||
SOC_BUS = "y";
|
PINCTRL = "y";
|
||||||
|
PINCTRL_MT7621 = "y";
|
||||||
|
|
||||||
NET = "y";
|
I2C = "y";
|
||||||
ETHERNET = "y";
|
I2C_MT7621 = "y";
|
||||||
WLAN = "y";
|
|
||||||
|
|
||||||
PHYLIB = "y";
|
SPI = "y";
|
||||||
AT803X_PHY = "y";
|
MTD_SPI_NOR = "y";
|
||||||
FIXED_PHY = "y";
|
SPI_MT7621 = "y";
|
||||||
GENERIC_PHY = "y";
|
SPI_MASTER = "y";
|
||||||
NET_DSA = "y";
|
SPI_MEM = "y";
|
||||||
NET_DSA_MT7530 = "y";
|
|
||||||
NET_DSA_MT7530_MDIO = "y";
|
|
||||||
NET_DSA_TAG_MTK = "y";
|
|
||||||
NET_MEDIATEK_SOC = "y";
|
|
||||||
NET_SWITCHDEV = "y";
|
|
||||||
NET_VENDOR_MEDIATEK = "y";
|
|
||||||
|
|
||||||
SWPHY = "y";
|
REGULATOR = "y";
|
||||||
|
REGULATOR_FIXED_VOLTAGE = "y";
|
||||||
|
RESET_CONTROLLER = "y";
|
||||||
|
POWER_RESET = "y";
|
||||||
|
POWER_RESET_GPIO = "y";
|
||||||
|
POWER_SUPPLY = "y";
|
||||||
|
LED_TRIGGER_PHY = "y";
|
||||||
|
|
||||||
GPIOLIB = "y";
|
PCI_DISABLE_COMMON_QUIRKS = "y";
|
||||||
GPIO_MT7621 = "y";
|
PCI_DOMAINS = "y";
|
||||||
OF_GPIO = "y";
|
PCI_DOMAINS_GENERIC = "y";
|
||||||
|
PCI_DRIVERS_GENERIC = "y";
|
||||||
|
PCS_MTK_LYNXI = "y";
|
||||||
|
|
||||||
EARLY_PRINTK = "y";
|
SOC_BUS = "y";
|
||||||
|
|
||||||
NEW_LEDS = "y";
|
NET = "y";
|
||||||
LEDS_TRIGGERS = "y";
|
ETHERNET = "y";
|
||||||
LEDS_CLASS = "y"; # required by rt2x00lib
|
WLAN = "y";
|
||||||
LEDS_CLASS_MULTICOLOR = "y";
|
|
||||||
LEDS_BRIGHTNESS_HW_CHANGED = "y";
|
|
||||||
|
|
||||||
PRINTK_TIME = "y";
|
PHYLIB = "y";
|
||||||
} // lib.optionalAttrs (config.system.service ? vlan) {
|
AT803X_PHY = "y";
|
||||||
SWCONFIG = "y";
|
FIXED_PHY = "y";
|
||||||
} // lib.optionalAttrs (config.system.service ? watchdog) {
|
GENERIC_PHY = "y";
|
||||||
RALINK_WDT = "y"; # watchdog
|
NET_DSA = "y";
|
||||||
MT7621_WDT = "y"; # or it might be this one
|
NET_DSA_MT7530 = "y";
|
||||||
|
NET_DSA_MT7530_MDIO = "y";
|
||||||
|
NET_DSA_TAG_MTK = "y";
|
||||||
|
NET_MEDIATEK_SOC = "y";
|
||||||
|
NET_SWITCHDEV = "y";
|
||||||
|
NET_VENDOR_MEDIATEK = "y";
|
||||||
|
|
||||||
|
SWPHY = "y";
|
||||||
|
|
||||||
|
GPIOLIB = "y";
|
||||||
|
GPIO_MT7621 = "y";
|
||||||
|
OF_GPIO = "y";
|
||||||
|
|
||||||
|
EARLY_PRINTK = "y";
|
||||||
|
|
||||||
|
NEW_LEDS = "y";
|
||||||
|
LEDS_TRIGGERS = "y";
|
||||||
|
LEDS_CLASS = "y"; # required by rt2x00lib
|
||||||
|
LEDS_CLASS_MULTICOLOR = "y";
|
||||||
|
LEDS_BRIGHTNESS_HW_CHANGED = "y";
|
||||||
|
|
||||||
|
PRINTK_TIME = "y";
|
||||||
|
} // lib.optionalAttrs (config.system.service ? vlan) {
|
||||||
|
SWCONFIG = "y";
|
||||||
|
} // lib.optionalAttrs (config.system.service ? watchdog) {
|
||||||
|
RALINK_WDT = "y"; # watchdog
|
||||||
|
MT7621_WDT = "y"; # or it might be this one
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -74,6 +74,13 @@ in {
|
||||||
device will be renamed to the name provided.
|
device will be renamed to the name provided.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
mac = mkOption {
|
||||||
|
type = types.nullOr types.str;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
MAC address of the interface.
|
||||||
|
'';
|
||||||
|
};
|
||||||
devpath = mkOption {
|
devpath = mkOption {
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
default = null;
|
default = null;
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
{
|
{
|
||||||
ifname
|
ifname
|
||||||
, devpath ? null
|
, devpath ? null
|
||||||
|
, mac ? null
|
||||||
, mtu} :
|
, mtu} :
|
||||||
# if devpath is supplied, we rename the interface at that
|
# if devpath is supplied, we rename the interface at that
|
||||||
# path to have the specified name.
|
# path to have the specified name.
|
||||||
|
@ -24,7 +25,7 @@ in oneshot {
|
||||||
inherit name;
|
inherit name;
|
||||||
up = ''
|
up = ''
|
||||||
${rename}
|
${rename}
|
||||||
${liminix.networking.ifup name ifname}
|
${liminix.networking.ifup name ifname mac}
|
||||||
'';
|
'';
|
||||||
down = "ip link set down dev ${ifname}";
|
down = "ip link set down dev ${ifname}";
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ in
|
||||||
mv out $out
|
mv out $out
|
||||||
'';
|
'';
|
||||||
systemConfiguration =
|
systemConfiguration =
|
||||||
pkgs.systemconfig config.filesystem.contents;
|
pkgs.systemconfig config.filesystem.contents config.hostname;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ in oneshot rec {
|
||||||
up = ''
|
up = ''
|
||||||
ip link add link $(output ${primary} ifname) name ${ifname} type vlan id ${vid}
|
ip link add link $(output ${primary} ifname) name ${ifname} type vlan id ${vid}
|
||||||
${optionalString untagged.egress "bridge vlan add dev ${ifname} vid ${toString untagged.vid} pvid untagged master"}
|
${optionalString untagged.egress "bridge vlan add dev ${ifname} vid ${toString untagged.vid} pvid untagged master"}
|
||||||
${liminix.networking.ifup name ifname}
|
${liminix.networking.ifup name ifname null}
|
||||||
(in_outputs ${name}
|
(in_outputs ${name}
|
||||||
echo ${ifname} > ifname
|
echo ${ifname} > ifname
|
||||||
)
|
)
|
||||||
|
|
|
@ -74,7 +74,7 @@ let
|
||||||
../../modules/s6
|
../../modules/s6
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
in systemconfig eval.config.filesystem.contents;
|
in systemconfig eval.config.filesystem.contents eval.config.hostname;
|
||||||
in writeScriptBin "levitate" ''
|
in writeScriptBin "levitate" ''
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
destdir=${newRoot}
|
destdir=${newRoot}
|
||||||
|
|
|
@ -3,9 +3,13 @@
|
||||||
, serviceFns
|
, serviceFns
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
ifup = name : ifname : ''
|
ifup = name : ifname : mac: ''
|
||||||
. ${serviceFns}
|
. ${serviceFns}
|
||||||
${ifwait}/bin/ifwait -v ${ifname} present
|
${ifwait}/bin/ifwait -v ${ifname} present
|
||||||
|
${if (mac == null) then "" else ''
|
||||||
|
ip link set down dev ${ifname}
|
||||||
|
ip link set dev ${ifname} address ${mac}
|
||||||
|
''}
|
||||||
ip link set up dev ${ifname}
|
ip link set up dev ${ifname}
|
||||||
(in_outputs ${name}
|
(in_outputs ${name}
|
||||||
echo ${ifname} > ifname
|
echo ${ifname} > ifname
|
||||||
|
|
|
@ -62,10 +62,10 @@ let
|
||||||
${(builtins.concatStringsSep "\n" (visit "." attrset))}
|
${(builtins.concatStringsSep "\n" (visit "." attrset))}
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
in attrset:
|
in attrset: hostname:
|
||||||
let makedevs = activateScript attrset;
|
let makedevs = activateScript attrset;
|
||||||
in stdenv.mkDerivation {
|
in stdenv.mkDerivation {
|
||||||
name="make-stuff";
|
name="${hostname}-system-configuration";
|
||||||
src = ./.;
|
src = ./.;
|
||||||
|
|
||||||
CFLAGS = "-Os";
|
CFLAGS = "-Os";
|
||||||
|
|
Loading…
Add table
Reference in a new issue