Compare commits

...

4 Commits

Author SHA1 Message Date
Daniel Barlow e94bf62ec1 remove dead code (run deadnix) 2024-06-29 22:59:27 +01:00
Daniel Barlow 16a2499d74 avoid makeWrapper on host, it requires bash 2024-06-29 22:36:05 +01:00
Daniel Barlow d4d8093f97 working l2tp-over-wwan stick example 2024-06-20 10:15:54 +01:00
Daniel Barlow 7c9c801afc rename isTrigger to restart-on-upgrade
we're moving away from "trigger" services to "controller" services,
and "restart-on-upgrade" is the name used by s6-rc
2024-06-16 12:58:06 +01:00
114 changed files with 173 additions and 276 deletions

7
ci.nix
View File

@ -4,7 +4,6 @@
, liminix
, ... }:
let
inherit (builtins) map;
pkgs = (import nixpkgs {});
borderVmConf = ./bordervm.conf-example.nix;
inherit (pkgs.lib.attrsets) genAttrs;
@ -44,12 +43,6 @@ let
imports = [ ./modules/all-modules.nix ];
};
}).outputs.optionsJson;
installers = map (f: "system.outputs.${f}") [
"vmroot"
"mtdimage"
"ubimage"
];
inherit (pkgs.lib) concatStringsSep;
in pkgs.stdenv.mkDerivation {
name = "liminix-doc";
nativeBuildInputs = with pkgs; [

View File

@ -213,7 +213,6 @@
networkInterfaces =
let
inherit (config.system.service.network) link;
inherit (config.system.service) bridge;
in rec {
wan = link.build { ifname = "wan"; };
lan1 = link.build { ifname = "lan1"; };

View File

@ -92,7 +92,6 @@
'';
};
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs.liminix.networking) interface;
in {
imports = [
../../modules/network

View File

@ -45,7 +45,6 @@
module = { pkgs, config, lib, lim, ...}:
let
inherit (pkgs.liminix.networking) interface;
inherit (pkgs) openwrt;
mac80211 = pkgs.kmodloader.override {
targets = ["rt2800soc"];
@ -90,19 +89,6 @@
let
inherit (config.system.service.network) link;
inherit (config.system.service) vlan;
inherit (pkgs.liminix.services) oneshot;
swconfig = oneshot {
name = "swconfig";
up = ''
PATH=${pkgs.swconfig}/bin:$PATH
swconfig dev switch0 set reset
swconfig dev switch0 set enable_vlan 1
swconfig dev switch0 vlan 1 set ports '1 2 3 4 6t'
swconfig dev switch0 vlan 2 set ports '0 6t'
swconfig dev switch0 set apply
'';
down = "${pkgs.swconfig}/bin/swconfig dev switch0 set reset";
};
in rec {
eth = link.build { ifname = "eth0"; };
# lan and wan ports are both behind a switch on eth0

View File

@ -38,7 +38,6 @@
module = { pkgs, config, lib, lim, ...}:
let
inherit (pkgs.liminix.networking) interface;
inherit (pkgs.liminix.services) oneshot;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs) openwrt;

View File

@ -26,7 +26,7 @@
# this device is described by the "qemu" device
installer = "vmroot";
module = {pkgs, config, lim, ... }: {
module = { config, lim, ... }: {
imports = [
../../modules/arch/aarch64.nix
../families/qemu.nix

View File

@ -24,7 +24,7 @@
'';
installer = "vmroot";
module = {pkgs, config, lim, ... }: {
module = { config, lim, ... }: {
imports = [
../../modules/arch/arm.nix
../families/qemu.nix

View File

@ -36,7 +36,7 @@
in the Development manual.
'';
module = {pkgs, config, lib, lim, ... }: {
module = { config, lib, lim, ... }: {
imports = [
../../modules/arch/mipseb.nix
../families/qemu.nix

View File

@ -419,7 +419,6 @@
networkInterfaces =
let
inherit (config.system.service.network) link;
inherit (config.system.service) bridge;
in rec {
lan1 = link.build { ifname = "lan1"; };
lan2 = link.build { ifname = "lan2"; };

View File

@ -155,8 +155,6 @@
module = {pkgs, config, lib, lim, ... }:
let
openwrt = pkgs.openwrt;
inherit (lib) mkOption types;
inherit (pkgs.liminix.services) oneshot;
inherit (pkgs) liminix;
mtd_by_name_links = pkgs.liminix.services.oneshot rec {
@ -358,7 +356,6 @@
networkInterfaces =
let
inherit (config.system.service.network) link;
inherit (config.system.service) bridge;
in rec {
en70000 = link.build {
# in armada-38x.dtsi this is eth0.

View File

@ -103,8 +103,6 @@
module = { pkgs, config, lib, lim, ...}:
let
inherit (pkgs.liminix.networking) interface;
inherit (pkgs.liminix.services) oneshot;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs) openwrt;

View File

@ -1,6 +1,5 @@
{ eval, lib, pkgs }:
let
inherit (lib) types;
conf = eval.config;
rootDir = builtins.toPath ./..;
stripAnyPrefixes = lib.flip (lib.fold lib.removePrefix)

View File

@ -9,14 +9,6 @@ let
d' = {
description = "${n}\n${substring 0 (stringLength n) "********************************"}\n";
} // d;
installer =
if d ? description && d ? installer
then ''
The default installation route for this device is
:ref:`system-outputs-${d.installer}`
''
else "";
in d'.description)
devices;
in

View File

@ -11,9 +11,9 @@
...
}: let
secrets = import ./extneder-secrets.nix;
inherit (pkgs.liminix.services) oneshot longrun bundle target;
inherit (pkgs.liminix.services) oneshot longrun target;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs) writeText dropbear ifwait serviceFns;
inherit (pkgs) writeText serviceFns;
svc = config.system.service;
in rec {
boot = {

View File

@ -5,9 +5,9 @@
# wherever the text "EDIT" appears - please consult the tutorial
# documentation for details.
{ config, pkgs, lib, ... } :
{ config, pkgs, ... } :
let
inherit (pkgs.liminix.services) bundle oneshot longrun;
inherit (pkgs.liminix.services) bundle oneshot;
inherit (pkgs) serviceFns;
# EDIT: you can pick your preferred RFC1918 address space
# for NATted connections, if you don't like this one.

View File

@ -1,6 +1,5 @@
{ config, pkgs, lib, ... } :
{ config, pkgs, ... } :
let
inherit (pkgs) serviceFns;
svc = config.system.service;
in rec {

View File

@ -1,6 +1,5 @@
{ config, pkgs, lib, ... } :
{ config, pkgs, ... } :
let
inherit (pkgs) serviceFns;
svc = config.system.service;
in rec {

View File

@ -6,10 +6,29 @@
}: let
secrets = import ./extneder-secrets.nix;
rsecrets = import ./rotuer-secrets.nix;
lns = "l2tp.aaisp.net.uk";
inherit (pkgs.liminix.services) oneshot longrun bundle target;
# https://support.aa.net.uk/Category:Incoming_L2TP says:
# "Please use the DNS name (l2tp.aa.net.uk) instead of hardcoding an
# IP address; IP addresses can and do change. If you have to use an
# IP, use 194.4.172.12, but do check the DNS for l2tp.aa.net.uk in
# case it changes."
# but (1) we don't want to use the wwan stick's dns as our main
# resolver: it's provided by some mobile ISP and they aren't
# necessarily the best at providing unfettered services without
# deciding to do something weird; (2) it's not simple to arrange
# that xl2tpd gets a different resolver than every other process;
# (3) there's no way to specify an lns address to xl2tpd at runtime
# except by rewriting its config file. So what we will do is lookup
# the lns hostname using the mobile ISP's dns server and then refuse
# to start l2tp unless the expected lns address is one of the
# addresses returned. I think this satisfies "do check the DNS"
lns = { hostname = "l2tp.aaisp.net.uk"; address = "194.4.172.12"; };
inherit (pkgs.liminix.services) oneshot target;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs) writeText dropbear ifwait serviceFns;
inherit (pkgs) serviceFns;
svc = config.system.service;
in rec {
boot = {
@ -46,46 +65,75 @@ in rec {
services.sshd = svc.ssh.build { };
services.resolvconf = oneshot rec {
dependencies = [ services.dhcpc ];
dependencies = [ services.l2tp ];
name = "resolvconf";
up = ''
. ${serviceFns}
( in_outputs ${name}
for i in $(output ${services.dhcpc} dns); do
echo "nameserver $i" > resolv.conf
done
)
( in_outputs ${name}
for i in ns1 ns2 ; do
ns=$(output ${services.l2tp} $i)
echo "nameserver $ns" >> resolv.conf
done
)
'';
};
filesystem = dir {
etc = dir {
"resolv.conf" = symlink "${services.resolvconf}/.outputs/resolv.conf";
};
srv = dir {};
};
services.lnsroute = svc.network.route.build {
via = "$(output ${services.dhcpc} router)";
target = lns;
dependencies = [services.dhcpc];
services.lns-address = let
ns = "$(output_word ${services.dhcpc} dns 1)";
route-to-bootstrap-nameserver = svc.network.route.build {
via = "$(output ${services.dhcpc} router)";
target = ns;
dependencies = [services.dhcpc];
};
in oneshot rec {
name = "resolve-l2tp-server";
dependencies = [ services.dhcpc route-to-bootstrap-nameserver ];
up = ''
(in_outputs ${name}
DNSCACHEIP="${ns}" ${pkgs.s6-dns}/bin/s6-dnsip4 ${lns.hostname} \
> addresses
)
'';
};
services.l2tp = svc.l2tp.build {
inherit lns;
ppp-options = [
"debug" "+ipv6" "noauth"
"name" rsecrets.l2tp.name
"password" rsecrets.l2tp.password
];
dependencies = [ services.lnsroute ];
services.l2tp =
let
check-address = oneshot rec {
name = "check-lns-address";
up = ''
grep -Fx ${lns.address} $(output_path ${services.lns-address} addresses)
'';
dependencies = [ services.lns-address ];
};
route = svc.network.route.build {
via = "$(output ${services.dhcpc} router)";
target = lns.address;
dependencies = [services.dhcpc check-address];
};
in svc.l2tp.build {
lns = lns.address;
ppp-options = [
"debug" "+ipv6" "noauth"
"name" rsecrets.l2tp.name
"connect-delay" "5000"
"password" rsecrets.l2tp.password
];
dependencies = [config.services.lns-address route check-address];
};
services.defaultroute4 = svc.network.route.build {
via = "$(output ${services.l2tp} router)";
via = "$(output ${services.l2tp} peer-address)";
target = "default";
dependencies = [services.l2tp];
};
# defaultProfile.packages = [ pkgs.go-l2tp ];
users.root = {
passwd = lib.mkForce secrets.root.passwd;
openssh.authorizedKeys.keys = secrets.root.keys;

View File

@ -1,7 +1,6 @@
{ config, pkgs, ... } :
let
inherit (pkgs.liminix.services) oneshot longrun bundle target;
inherit (pkgs) writeText;
inherit (pkgs.liminix.services) target;
svc = config.system.service;
secrets-1 = {
ssid = "Zyxel 2G (N)";

View File

@ -3,7 +3,7 @@ let
inherit (pkgs) serviceFns;
svc = config.system.service;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs.liminix.services) oneshot longrun bundle target;
inherit (pkgs.liminix.services) oneshot target;
some-util-linux = pkgs.runCommand "some-util-linux" {} ''
mkdir -p $out/bin
cd ${pkgs.util-linux-small}/bin

View File

@ -12,8 +12,6 @@ let
domainName = "fake.liminix.org";
firewallRules = {};
} // (import ./rotuer-secrets.nix);
inherit (pkgs.liminix.services) oneshot bundle;
inherit (pkgs) serviceFns;
svc = config.system.service;
wirelessConfig = {
country_code = "GB";

View File

@ -1,6 +1,5 @@
{ config, pkgs, lib, lim, ... } :
{ config, pkgs, lim, ... } :
let
inherit (pkgs) serviceFns;
svc = config.system.service;
in rec {

View File

@ -1,4 +1,4 @@
{ lib, lim, pkgs, config, ...}:
{ lim, pkgs, config, ...}:
{
config = {
kernel.config = {

View File

@ -1,4 +1,4 @@
{ lib, lim, pkgs, config, ...}:
{ lim, pkgs, config, ...}:
{
config = {
kernel.config = {

View File

@ -1,4 +1,4 @@
{ lib, pkgs, config, lim, ...}:
{ config, lim, ...}:
{
config = {
kernel.config = {

View File

@ -1,4 +1,4 @@
{ lib, pkgs, config, ...}:
{ pkgs, config, ...}:
{
imports = [ ./mips.nix ];
config = {

View File

@ -1,4 +1,4 @@
{ lib, pkgs, config, ...}:
{ config, ...}:
{
imports = [ ./mips.nix ];
config = {

View File

@ -4,10 +4,8 @@
{ lib, pkgs, config, ...}:
let
inherit (lib) mkEnableOption mkOption types isDerivation hasAttr ;
inherit (lib) mkOption types ;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs.liminix.networking) address interface;
inherit (pkgs.liminix.services) bundle;
type_service = pkgs.liminix.lib.types.service;

View File

@ -10,7 +10,6 @@
{ lib, pkgs, config, ...}:
let
inherit (lib) mkOption types;
inherit (pkgs.liminix.services) oneshot;
inherit (pkgs) liminix;
in
{

View File

@ -1,7 +1,6 @@
{
liminix
, ifwait
, lib
, svc
}:
{ members, primary } :
@ -9,7 +8,6 @@
let
inherit (liminix.networking) interface;
inherit (liminix.services) bundle oneshot;
inherit (lib) mkOption types;
addif = member :
# how do we get sight of services from here? maybe we need to
# implement ifwait as a regualr derivation instead of a

View File

@ -1,12 +1,10 @@
{
liminix
, ifwait
, lib
}:
{ ifname } :
let
inherit (liminix.services) bundle oneshot;
inherit (lib) mkOption types;
inherit (liminix.services) oneshot;
in oneshot rec {
name = "${ifname}.link";
up = ''

View File

@ -8,7 +8,7 @@
{ lib, pkgs, config, ...}:
let
inherit (lib) mkOption mkEnableOption types mapAttrsToList;
inherit (lib) mkOption types mapAttrsToList;
inherit (pkgs.pseudofile) dir symlink;
inherit (lib.strings) toUpper;

View File

@ -2,7 +2,6 @@
let
inherit (pkgs) liminix;
inherit (lib) mkOption types;
svc = config.system.service;
in {
imports = [
../service-trigger

View File

@ -8,7 +8,7 @@
}:
{ apn, username, password, authType }:
let
inherit (liminix.services) bundle longrun oneshot;
inherit (liminix.services) oneshot;
authTypeNum = if authType == "pap" then "1" else "2";
chat = lib.escapeShellArgs [
# Your usb modem thing might present as a tty that you run PPP

View File

@ -2,7 +2,6 @@
writeFennel
, linotify
, anoia
, lua
, lualinux
}:
writeFennel "acquire-delegated-prefix" {

View File

@ -1,12 +1,10 @@
{
liminix
, lib
, callPackage
}:
{ client, interface } :
let
inherit (liminix.services) longrun;
inherit (lib) mkOption types;
name = "dhcp6c.addr.${client.name}.${interface.name}";
script = callPackage ./acquire-wan-address.nix { };
in longrun {

View File

@ -1,13 +1,11 @@
{
liminix
, lib
, odhcp6c
, odhcp-script
}:
{ interface } :
let
inherit (liminix.services) longrun;
inherit (lib) mkOption types;
name = "dhcp6c.${interface.name}";
in longrun {
inherit name;

View File

@ -12,7 +12,6 @@
{ lib, pkgs, config, ...}:
let
inherit (lib) mkOption types;
inherit (pkgs.liminix.services) oneshot;
inherit (pkgs) liminix;
in
{

View File

@ -1,12 +1,10 @@
{
liminix
, lib
, callPackage
}:
{ client, interface } :
let
inherit (liminix.services) longrun;
inherit (lib) mkOption types;
name = "dhcp6c.prefix.${client.name}.${interface.name}";
script = callPackage ./acquire-delegated-prefix.nix { };
in longrun {

View File

@ -18,7 +18,7 @@ let
name = "${interface.name}.dnsmasq";
inherit (liminix.services) longrun;
inherit (lib) concatStrings concatStringsSep mapAttrsToList;
hostOpt = name : { mac, v4, v6, leasetime } @ attrs:
hostOpt = name : { mac, v4, v6, leasetime }:
let v6s = concatStrings (map (a : ",[${a}]") v6);
in "--dhcp-host=${mac},${v4}${v6s},${name},${builtins.toString leasetime}";
in

View File

@ -8,7 +8,6 @@
let
inherit (lib) mkOption types;
inherit (pkgs) liminix;
inherit (pkgs.liminix.services) oneshot;
kmodules = pkgs.kmodloader.override {
inherit (config.system.outputs) kernel;

View File

@ -7,8 +7,6 @@
{ rules, extraRules }:
let
inherit (liminix.services) oneshot;
inherit (liminix.lib) typeChecked;
inherit (lib) mkOption types;
script = firewallgen "firewall.nft" (lib.recursiveUpdate rules extraRules);
in oneshot {
name = "firewall";

View File

@ -6,9 +6,9 @@
## :file:`devices/manuf-model/default.nix`
{ lib, pkgs, config, ...}:
{ lib, ...}:
let
inherit (lib) mkEnableOption mkOption types isDerivation hasAttr ;
inherit (lib) mkOption types ;
in {
options = {
boot = {

View File

@ -8,8 +8,6 @@
let
inherit (liminix.services) longrun;
inherit (lib) concatStringsSep mapAttrsToList;
inherit (liminix.lib) typeChecked;
inherit (lib) mkOption types;
# This is not a friendly interface to configuring a wireless AP: it
# just passes everything straight through to the hostapd config.

View File

@ -9,7 +9,7 @@ let
in longrun {
name = "ifwait.${interface.name}";
buildInputs = [ service ];
isTrigger = true;
restart-on-upgrade = true;
run = ''
${ifwait}/bin/ifwait -s ${service.name} $(output ${interface} ifname) ${state}
'';

View File

@ -5,14 +5,9 @@
{ lib, pkgs, config, ...}:
let
inherit (lib) mkEnableOption mkOption types isDerivation hasAttr ;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs.liminix.networking) address interface;
inherit (pkgs.liminix.services) bundle;
inherit (lib) mkOption types ;
inherit (pkgs) liminix;
type_service = pkgs.liminix.lib.types.service;
mergeConditionals = conf : conditions :
# for each key in conditions, if it is present in conf
# then merge the associated value into conf

View File

@ -1,4 +1,4 @@
{ config, pkgs, lib, ...} :
{ config, pkgs, ...} :
let inherit (pkgs.liminix.services) oneshot longrun;
in {
config = {

View File

@ -7,11 +7,6 @@
let
inherit (lib) mkOption types;
inherit (pkgs) liminix;
mkBoolOption = description : mkOption {
type = types.bool;
inherit description;
default = true;
};
in {
options = {

View File

@ -5,7 +5,7 @@
}:
{ partlabel, mountpoint, options, fstype }:
let
inherit (liminix.services) longrun oneshot;
inherit (liminix.services) oneshot;
device = "/dev/disk/by-partlabel/${partlabel}";
name = "mount.${lib.strings.sanitizeDerivationName (lib.escapeURL mountpoint)}";
options_string =

View File

@ -1,6 +1,5 @@
{
liminix
, ifwait
, serviceFns
, lib
}:

View File

@ -1,7 +1,5 @@
{
liminix
, ifwait
, serviceFns
, lib
}:
{ enableIPv4, enableIPv6 }:

View File

@ -1,7 +1,5 @@
{
liminix
, ifwait
, serviceFns
, lib
}:
{
@ -11,8 +9,7 @@
# if devpath is supplied, we rename the interface at that
# path to have the specified name.
let
inherit (liminix.services) longrun oneshot;
inherit (lib) concatStringsSep;
inherit (liminix.services) oneshot;
name = "${ifname}.link";
rename = if devpath != null
then ''

View File

@ -1,15 +1,15 @@
{
liminix
, ifwait
, serviceFns
, lib
}:
{ target, via, interface ? null, metric }:
let
inherit (liminix.services) oneshot;
with_dev = if interface != null then "dev $(output ${interface} ifname)" else "";
target_hash = builtins.substring 0 12 (builtins.hashString "sha256" target);
via_hash = builtins.substring 0 12 (builtins.hashString "sha256" via);
in oneshot {
name = "route-${target}-${builtins.substring 0 12 (builtins.hashString "sha256" "${via}-${if interface!=null then interface.name else ""}")}";
name = "route-${target_hash}-${builtins.substring 0 12 (builtins.hashString "sha256" "${via_hash}-${if interface!=null then interface.name else ""}")}";
up = ''
ip route add ${target} via ${via} metric ${toString metric} ${with_dev}
'';

View File

@ -1,7 +1,6 @@
{
liminix
, chrony
, serviceFns
, lib
, writeText
}:
@ -9,10 +8,6 @@ params:
let
inherit (liminix.services) longrun;
inherit (lib) concatStringsSep mapAttrsToList;
inherit (liminix.lib) typeChecked;
inherit (lib) mkOption types;
serverOpts = types.listOf types.str;
configFile = p:
(mapAttrsToList (name: opts: "server ${name} ${concatStringsSep "" opts}")
p.servers)

View File

@ -6,7 +6,7 @@
}:
let
inherit (lib) mkOption types concatStringsSep;
inherit (pkgs) liminix callPackage writeText;
inherit (pkgs) liminix writeText;
o = config.system.outputs;
in
{

View File

@ -5,7 +5,7 @@
, ...
}:
let
inherit (lib) mkIf mkOption types;
inherit (lib) mkIf;
o = config.system.outputs;
in
{

View File

@ -5,7 +5,7 @@
, ...
}:
let
inherit (lib) mkIf mkOption types;
inherit (lib) mkIf;
o = config.system.outputs;
in
{

View File

@ -6,7 +6,7 @@
}:
let
inherit (lib) mkEnableOption mkOption mkIf types;
inherit (pkgs) runCommand callPackage writeText;
inherit (pkgs) runCommand;
in
{
options = {

View File

@ -5,7 +5,7 @@
, ...
}:
let
inherit (lib) mkIf mkOption types;
inherit (lib) mkIf;
o = config.system.outputs;
in
{

View File

@ -5,7 +5,7 @@
, ...
}:
let
inherit (lib) mkOption mkForce types concatStringsSep;
inherit (lib) mkOption types concatStringsSep;
in {
imports = [ ../ramdisk.nix ];
options.system.outputs = {
@ -42,8 +42,7 @@ in {
boot-sh =
let
inherit (pkgs.lib.trivial) toHexString;
inherit (config.system.outputs) rootfs kernel;
inherit (config.system.outputs) rootfs;
cmdline = concatStringsSep " " config.boot.commandLine;
in
pkgs.buildPackages.runCommand "boot.sh.sh" {

View File

@ -5,7 +5,7 @@
, ...
}:
let
inherit (lib) mkOption types concatStringsSep;
inherit (lib) mkOption types;
o = config.system.outputs;
phram_address = lib.toHexString (config.hardware.ram.startAddress + 256 * 1024 * 1024);
in {

View File

@ -58,7 +58,6 @@ in {
system.outputs = rec {
tftpboot =
let
inherit (pkgs.lib.trivial) toHexString;
o = config.system.outputs;
image = let choices = {
uimage = o.uimage;

View File

@ -5,7 +5,7 @@
, ...
}:
let
inherit (lib) mkOption types concatStringsSep;
inherit (lib) mkOption types;
o = config.system.outputs;
cfg = config.tplink-safeloader;
in {

View File

@ -5,7 +5,7 @@
, ...
}:
let
inherit (lib) mkIf mkEnableOption mkOption types concatStringsSep;
inherit (lib) mkIf mkOption types;
cfg = config.boot.tftp;
instructions = pkgs.writeText "env.scr" ''
setenv serverip ${cfg.serverip}

View File

@ -5,7 +5,6 @@
, ...
}:
let
inherit (pkgs) liminix;
inherit (lib) mkIf mkOption types concatStringsSep optionalString;
in
{

View File

@ -5,7 +5,7 @@
, ...
}:
let
inherit (lib) mkIf mkEnableOption mkOption types concatStringsSep;
inherit (lib) mkIf mkOption types;
models = "6b e1 6f e1 ff ff ff ff ff ff";
in {
options.system.outputs = {

View File

@ -1,8 +1,5 @@
{
liminix
, lib
, ppp
, pppoe
, writeAshScript
, writeText
, serviceFns

View File

@ -2,7 +2,7 @@
let
svc = config.system.service;
cfg = config.profile.gateway;
inherit (lib) mkOption mkEnableOption mkIf mdDoc types optional optionals;
inherit (lib) mkOption mkEnableOption mkIf types;
inherit (pkgs) liminix serviceFns;
inherit (liminix.services) bundle oneshot;
hostaps =

View File

@ -5,9 +5,9 @@
...
}: let
inherit (pkgs) liminix;
inherit (lib) mkEnableOption mkOption types isDerivation hasAttr ;
inherit (lib) mkOption types ;
inherit (pkgs.liminix.services) oneshot longrun bundle target;
inherit (pkgs.liminix.services) oneshot target;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs) serviceFns;
svc = config.system.service;

View File

@ -1,11 +1,10 @@
{
config
, pkgs
, lib
, ...
}:
let
inherit (lib) mkIf mkEnableOption mkOption; # types concatStringsSep;
inherit (lib) mkIf mkEnableOption; # types concatStringsSep;
in {
options = {
boot = {

View File

@ -1,4 +1,4 @@
{ config, pkgs, lib, ... } :
{ config, pkgs, ... } :
{
config = {
programs.busybox = {

View File

@ -1,7 +1,6 @@
{
liminix
, uevent-watch
, serviceFns
, lib }:
{
serviceName, terms, symlink
@ -19,6 +18,6 @@ let
termsString = stringify terms;
in longrun {
name = "watch-for-${serviceName}";
isTrigger = true;
restart-on-upgrade = true;
run = "${uevent-watch}/bin/uevent-watch ${if symlink != null then "-n ${symlink}" else ""} -s ${serviceName} ${termsString}";
}

View File

@ -1,7 +1,6 @@
{
liminix
, dropbear
, serviceFns
, lib
}:
p :

View File

@ -1,7 +1,7 @@
# support for USB block devices and the common filesystems
# they're likely to provide
{lib, config, ... }:
{ config, ... }:
{
kernel = {
config = {

View File

@ -16,7 +16,7 @@ let
inherit (lib)
concatStrings concatStringsSep mapAttrsToList mkOption types;
inherit (builtins) toString;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs.pseudofile) dir;
passwd-file =
let lines = mapAttrsToList (name: u: "${name}:${if u ? passwd then u.passwd else "!!"}:${toString u.uid}:${toString u.gid}:${u.gecos}:${u.dir}:${u.shell}\n" )
config.users;

View File

@ -13,7 +13,6 @@
{ lib, pkgs, config, ...}:
let
inherit (lib) mkOption types;
inherit (pkgs.liminix.services) oneshot;
inherit (pkgs) liminix;
in
{

View File

@ -1,6 +1,5 @@
{ lib, pkgs, config, ...}:
let
inherit (lib) mkEnableOption mkOption types isDerivation hasAttr ;
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs) stdenv wireless-regdb;
regulatory = stdenv.mkDerivation {

View File

@ -3,7 +3,7 @@
, lib
, zyxel-bootconfig
}:
{ ensureActiveImage, primaryMtdPartition, secondaryMtdPartition, bootConfigurationMtdPartition, kernelCommandLineSource }:
{ ensureActiveImage, bootConfigurationMtdPartition, kernelCommandLineSource }:
let
inherit (liminix.services) oneshot;
activeImageIndex = if ensureActiveImage == "primary" then 0 else 1;

View File

@ -1,6 +1,4 @@
{
lua
, nellie
{ nellie
, writeFennel
, anoia
, fennel

View File

@ -1,9 +1,4 @@
{
runCommand
, runtimeShell
, fetchurl
, lib
, luaPackages
{ lib
, lua
, lualinux
, writeScriptBin

View File

@ -7,8 +7,8 @@ name : ruleset :
let
inherit (lib.strings) concatStringsSep splitString hasInfix substring;
inherit (lib.lists) groupBy;
inherit (lib.attrsets) mapAttrsToList nameValuePair;
inherit (builtins) map listToAttrs replaceStrings head tail;
inherit (lib.attrsets) mapAttrsToList;
inherit (builtins) map head tail;
indentLines = offset : lines :
if lines == []
@ -31,7 +31,7 @@ let
indent = text : indentLines 0 (splitString "\n" text);
dochain = { name, type, family, rules,
dochain = { name, type, rules,
policy ? null,
priority ? "filter",
hook ? null } : ''

View File

@ -1,6 +1,4 @@
{
lua
, netlink-lua
{ netlink-lua
, writeFennelScript
, runCommand
, anoia

View File

@ -3,9 +3,7 @@
, python2
, which
, fetchgit
, fetchpatch
, fetchFromGitHub
, autoreconfHook
, coccinelle
}:
let

View File

@ -1,6 +1,5 @@
{ stdenv
, buildPackages
, runCommand
, writeText
, lib

View File

@ -1,7 +1,4 @@
{
stdenv
, busybox
, buildPackages
{ buildPackages
, callPackage
, pseudofile
, runCommand

View File

@ -1,14 +1,11 @@
{
stdenvNoCC
, s6-rc
, s6
, lib
, callPackage
, writeScript
, serviceFns
}:
let
inherit (builtins) concatStringsSep any map;
prefix = "/run/services/outputs";
output = service: name: "${prefix}/${service.name}/${name}";
serviceScript = commands : ''
@ -28,7 +25,6 @@ let
, up ? null
, down ? null
, finish ? null
, outputs ? []
, notification-fd ? null
, producer-for ? null
, consumer-for ? null
@ -38,15 +34,15 @@ let
, dependencies ? []
, contents ? []
, buildInputs ? []
, isTrigger ? false
, restart-on-upgrade ? false
, controller ? null
} @ args:
}:
stdenvNoCC.mkDerivation {
# we use stdenvNoCC to avoid generating derivations with names
# like foo.service-mips-linux-musl
inherit name serviceType up down run finish notification-fd
producer-for consumer-for pipeline-name timeout-up timeout-down;
restart-on-upgrade = isTrigger;
producer-for consumer-for pipeline-name timeout-up timeout-down
restart-on-upgrade;
buildInputs = buildInputs ++ dependencies ++ contents ++ lib.optional (controller != null) controller;
inherit controller dependencies contents;
builder = ./builder.sh;
@ -55,9 +51,7 @@ let
longrun = {
name
, run
, outputs ? []
, notification-fd ? null
, dependencies ? []
, buildInputs ? []
, ...
} @ args:
@ -81,8 +75,6 @@ let
name
, up
, down ? ""
, outputs ? []
, dependencies ? []
, ...
} @ args : service (args // {
serviceType = "oneshot";
@ -91,9 +83,7 @@ let
"${name}-down"
"${serviceScript down}\n${cleanupScript name}";
});
bundle = {
name
, contents ? []
bundle = { contents ? []
, dependencies ? []
, ...
} @ args: service (args // {

View File

@ -1,4 +1,4 @@
{ lua, lib, fetchFromGitHub }:
{ lua, fetchFromGitHub }:
let pname = "linotify";
in lua.pkgs.buildLuaPackage {
inherit pname;

View File

@ -1,4 +1,4 @@
{ lua, lib, fetchFromGitHub }:
{ lua, fetchFromGitHub }:
let
pname = "lualinux";
src = fetchFromGitHub {

View File

@ -22,7 +22,7 @@ let
rev = "a5265497a4f6da158e95d6a450cb2cb6dc085cab";
hash = "sha256-YYi4gkpLjbOK7bM2MGQjAyEBuXJ9JNXoz/JEmYf8xE8=";
};
inherit (liminix.services) oneshot longrun;
inherit (liminix.services) oneshot;
inherit (lib.lists) foldl;
configs = {
ath9k.kconfig = {

View File

@ -1,12 +1,8 @@
{
stdenv
, nix
, cpio
, openssh
}: stdenv.mkDerivation {
name = "min-collect-garbage";
buildInputs = [ ];
# propagatedBuildInputs = [ openssh ];
src = ./.;
makeFlags = [ "min-list-garbage" ];
installPhase = ''

View File

@ -1,4 +1,4 @@
{ lua, lib, fetchFromGitHub }:
{ lua, fetchFromGitHub }:
let
pname = "minisock";
src = fetchFromGitHub {

View File

@ -1,4 +1,4 @@
{ lua, lib, fetchpatch, fetchFromGitHub, stdenv }:
{ lua, stdenv }:
let pname = "nellie";
in lua.pkgs.buildLuaPackage {

View File

@ -1,4 +1,4 @@
{ lua, lib, fetchpatch, fetchFromGitHub, libmnl }:
{ lua, fetchFromGitHub, libmnl }:
let pname = "netlink";
in lua.pkgs.buildLuaPackage {
inherit pname;

View File

@ -1,7 +1,6 @@
{
writeFennelScript
, anoia
, lua
, lualinux
}:
writeFennelScript "odhcpc-script" [anoia lualinux] ./odhcp6-script.fnl

View File

@ -1,5 +1,4 @@
{ stdenv
, buildPackages
, cmake
, fetchFromGitHub
, ...} :

View File

@ -1,6 +1,5 @@
{
fetchFromGitHub
, writeShellScript
, pkgsBuildBuild
}:
let

View File

@ -2,8 +2,6 @@
, stdenv
, fetchFromGitHub
, ppp } :
let
in
stdenv.mkDerivation rec {
pname = "rp-pppoe";
version = "3.15";

View File

@ -1,14 +1,7 @@
{
stdenv
, fetchzip
, gdb
}:
let kernel = fetchzip {
name = "linux";
url = "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.71.tar.gz";
hash = "sha256-pq6QNa0PJVeheaZkuvAPD0rLuEeKrViKk65dz+y4kqo=";
};
in
stdenv.mkDerivation {
name = "preinit";
src = ./.;

View File

@ -1,6 +1,18 @@
{writeText}:
writeText "service-fns.sh" ''
output() { cat $1/.outputs/$2; }
output_word() {
set -f
local i=1
for var in $(cat $1/.outputs/$2); do
if test "$i" == "$3" ; then
echo $var
fi
i=$(expr $i + 1)
done
set +f
}
output_path() { echo $(realpath $1/.outputs)/$2; }
SERVICE_OUTPUTS=/run/services/outputs
SERVICE_STATE=/run/services/state

View File

@ -1,7 +1,6 @@
{
lua5_3
, stdenv
, fetchFromGitHub
, makeWrapper
} :
let

Some files were not shown because too many files have changed in this diff Show More