Daniel Barlow
c8b2d58dd3
exit 0 on service down even if no outputs to delete
2023-11-21 17:25:50 +00:00
Daniel Barlow
f9f4d97bb8
convert flash params to int
2023-11-12 20:39:06 +00:00
Daniel Barlow
abfb35a231
and entryPoint
2023-11-12 18:50:47 +00:00
Daniel Barlow
315907de98
convert hardware loadAddress to int
2023-11-12 18:47:31 +00:00
Daniel Barlow
6489a39424
qemu armv7
2023-11-05 23:19:11 +00:00
Daniel Barlow
c40eef25d6
qemu: use phram instead of block2mtd
2023-11-05 19:13:51 +00:00
Daniel Barlow
c5c5f1687a
patch qemu to load uncompressed ARM kernels at correct offset
2023-11-05 11:32:47 +00:00
Daniel Barlow
824536f9b3
in uimage FIT, honour ${arch}
2023-11-05 11:31:28 +00:00
Daniel Barlow
c3ccee6506
preinit: print errno (in hex, it's easier) for failures
2023-11-05 11:27:57 +00:00
Daniel Barlow
6db982f25f
preinit: pause before exiting
...
as explained in the comment, this is to give us a
chance to see error messages before the kernel panics
2023-11-05 11:27:57 +00:00
Daniel Barlow
86a5224f3c
preinit: fix compiler warnings
2023-11-05 11:27:43 +00:00
Daniel Barlow
155a29d9b3
preinit: strip trailing newline(s) on /proc/cmdline
2023-11-05 11:27:34 +00:00
Daniel Barlow
d2f517a4e9
preinit.c: reindent
2023-10-19 21:02:18 +01:00
Daniel Barlow
0f38ee0e9c
remove PREINIT_USE_LIBC option as it is now the only option
2023-10-19 18:59:02 +01:00
Daniel Barlow
61dc5beca8
preinit: parse rootfstype from kernel command line
2023-10-19 18:56:09 +01:00
Daniel Barlow
8798ee9830
partial fix for timeout handling
...
1) "Unknown transfer id" message was because the local variable "tid"
is not a transfer id, it is a sequence number - so the check was
actually comparing expected vs actual acknowledged sequence number,
not TID. It's still a problem if we get the wrong one, but it
indicates a lost packet (so we should resend) not a packet that was
sent from somewhere else.
2) if the ACK packet has not been received, our retry should involve
_resending_ it, not just trying to wait for it again.
3) I have removed the timeout condition for terminating the resend
loop, because in practice (assuming both ends have the same timeout
setting) all it did was ensure that the loop only ran once. The
timeout is supposed to regulate how long we wait for before retrying
(it doesn't do this, we wait indefinitely), not how long we wait for
before giving up.
2023-10-18 23:35:23 +01:00
Daniel Barlow
629914f65e
initial support for ubifs
2023-10-16 19:55:17 +01:00
Daniel Barlow
0693cf23d8
preinit: improve error logging for fork_exec
2023-10-12 19:00:57 +01:00
Daniel Barlow
c341eb46b6
use hostPlatform.linuxArch in kernel derivation
2023-10-12 18:59:45 +01:00
Daniel Barlow
1a369ff3bf
preinit: remove no-longer-used mips assembly
2023-10-12 18:57:54 +01:00
Daniel Barlow
bd20f3e419
uimage: make fit optional
2023-10-09 19:47:57 +01:00
Daniel Barlow
c18f07f02f
aarch64: make tftpboot work
...
- patch dtb to add reserved-memory stanza for the phram device to use
(aarch64 does not accept memmap= command line option)
- patch phram driver to use memremap() instead of ioremap() as
ioremap can't be used for system ram on arm devices
2023-10-09 19:47:57 +01:00
Daniel Barlow
269e972970
use FIT images not appended DTB for aarch64 uimage
2023-10-07 22:52:09 +01:00
Daniel Barlow
2a5669c2cd
enable openwrt mediatek family patches
2023-10-07 22:42:31 +01:00
Daniel Barlow
b01840fa7f
add support for mt7915, mt7615 in mac80211 package
...
mt7915 additionally requires working MTD, so that it can
read calibration data from flash
2023-10-07 22:29:38 +01:00
Daniel Barlow
abd01a7809
apply mtdpslit patch only for openwrt kernel
...
it doesn't apply to mainline because there's no mtdsplit
in mainline
2023-09-26 18:40:22 +01:00
Daniel Barlow
dfe7228b99
fix jffs2 mtd partition splitting on little-endian CPU
2023-09-26 16:43:03 +01:00
Daniel Barlow
3205a38ac9
mac80211 use correct arch
2023-09-24 00:17:32 +01:00
Daniel Barlow
119d6ad379
pkgconfig is now pkg-config
2023-09-21 12:25:35 +01:00
Daniel Barlow
be22fbbb0a
bootable aarch64 liminux with qemu
...
I may have broken the run-liminix-vm command a bit for MIPS due to
necessary changes in how we pass the command line. If CI isn't green
for this commit and youre trying the worked examples, I suggest
reverting to the commit before this one.
2023-09-20 22:55:51 +01:00
Daniel Barlow
57eb55de58
found another mips-vm to rename
2023-09-20 19:13:04 +01:00
Daniel Barlow
4389fa15f7
rename mips-vm as run-liminix-vm
2023-09-20 18:33:20 +01:00
Daniel Barlow
4f29bdd3ed
detect arch in kernel and uimage
...
also move kernel builder to pkgs/
FIXME we need to straighten out the mess in calling
dtb.nix/uimage.nix
2023-09-20 18:26:33 +01:00
Daniel Barlow
f7b30939b5
remove service-state when service exits
2023-09-13 22:49:00 +01:00
Daniel Barlow
106a429b3d
odhcp-script only write addresses if there are any
2023-09-13 17:51:07 +01:00
Daniel Barlow
b3e505abf4
anoia.system print command if it failed
2023-09-13 17:50:40 +01:00
Daniel Barlow
8f97c5bf3c
anoia service :events method behaves as iterator
2023-09-12 20:46:52 +01:00
Daniel Barlow
7904c6bfe9
anoia users now need lfs
...
... and we need to figure out how to do transitive
dependencies, because this is not a great experience
2023-09-12 18:46:04 +01:00
Daniel Barlow
343d3b6508
writeFennel is writeFennelScript with knobs on
...
The second parameter is now an options attrset, wherein we will pile
all kinds of cool stuff.
Right now the only cool bit is `mainFunction`, which allows you to
compile a fennel module into a lua script and name the function that
should be executed when the script runs. This makes it easier to
write testable Fennel code, because the test script can require the
module and call stuff in it.
2023-09-12 17:45:18 +01:00
Daniel Barlow
96e19767e9
odhcpc-script don't require fennel at runtime
2023-09-12 17:39:06 +01:00
Daniel Barlow
d49cbbb8ed
test for acquire-wan-address
2023-09-11 00:07:49 +01:00
Daniel Barlow
3ff55d3aad
odhcp-script: unique subdirectory names for each parsed address
2023-09-10 12:15:34 +01:00
Daniel Barlow
22275f311c
anoia: add simple hash function and base64 encoder
2023-09-10 12:14:39 +01:00
Daniel Barlow
870da62a1e
anoia.svc outputs may be directories (read as table)
2023-09-09 00:30:02 +01:00
Daniel Barlow
0312f7a999
fennelrepl look for .fnl before .lua
...
this means fennelrepl in nix-shell will prefer local
source files to generated lua files, making it easier
to change library code without restarting the shell
2023-09-09 00:11:35 +01:00
Daniel Barlow
9dd3cf23b4
anoia.fs.mktree replaces mkdir
...
This uses lfs to make the tree in-process instead of
shelling out to the mkdir command
2023-09-08 21:17:42 +01:00
Daniel Barlow
4e9227dff3
move rmtree to anoia library
2023-09-08 21:03:18 +01:00
Daniel Barlow
eaa45906ff
fennelrepl runs with --correlate
...
this is so that error message line numbers match up
2023-09-08 21:02:26 +01:00
Daniel Barlow
12e25722fa
odhcp-script: delete stale dirs from previous runs
...
This requires adding LFS as a dependency because native Lua has
no way to iterate a directory, but it seems to be Not Huge and
hopefully we'll have other uses for it
2023-09-08 20:48:01 +01:00
Daniel Barlow
09fe21260e
rename fn
2023-09-08 20:48:01 +01:00
Daniel Barlow
4bd3ccc8fd
inline write-{addresses,prefixes}
2023-09-08 20:48:01 +01:00
Daniel Barlow
3e163d4253
remove unused fn
2023-09-08 20:47:55 +01:00
Daniel Barlow
9487cb2567
DRY near-duplicate code between parse-{addresses,prefixces}
2023-09-08 20:47:55 +01:00
Daniel Barlow
b25103be2e
test script for odhcp6-script
2023-09-08 20:47:55 +01:00
Daniel Barlow
353a199ab2
odhcpc script: parse ADDRESSES and PREFIXES
...
so downstream doesn't have to
2023-09-05 22:42:25 +01:00
Daniel Barlow
535eb70bb9
convert all route defns to module-based-service
2023-08-31 23:52:59 +01:00
Daniel Barlow
44c1fb7632
delete now-unused (pkgs.liminix.network) interface address
2023-08-31 18:30:22 +01:00
Daniel Barlow
aecbe08f08
add o+x permission on service-state directories
...
this is needed for resolvconf, which writes resolv.conf as
an output and wants to make it world-readable
2023-08-28 22:02:28 +01:00
Daniel Barlow
1580857fde
extract common "interface up" code to a string
...
so that bridge service can use it
2023-08-28 22:02:28 +01:00
Daniel Barlow
540a1dfd76
remove interface.device
...
build-time uses can mostly be replaced with interface.name
for runtime uses, switch to $(output ${interface} name)
2023-08-28 22:02:28 +01:00
Daniel Barlow
6da0e67621
create outputs for network interface
2023-08-27 22:41:26 +01:00
Daniel Barlow
485ecc03b0
serviceDefn build function handles dependencies
...
in a bit of a hacky way, we culd clean this up
2023-08-27 22:40:54 +01:00
Daniel Barlow
81b56fb6a3
new type for interface (presently just alias to service)
2023-08-27 22:39:37 +01:00
Daniel Barlow
2ad203ce1f
delete unused functoins in liminix-tools
2023-08-21 19:29:00 +01:00
Daniel Barlow
6f92f8fa8b
merge bridge services into one
2023-08-16 23:29:53 +01:00
Daniel Barlow
fbb2c04132
move module-based-service parameter types into service
...
This is in preparation for writing something that extracts them
into documentation.
user configurations now call config.system.service.foo.build { ...params }
instead of config.system.service.foo
the parameter type definitions themselves now move into the
config stanza of the module referencing the service
new helper function liminix.callService
The only service moved so far is dnsmasq
2023-08-04 20:39:29 +01:00
Daniel Barlow
648ea5613b
use module-based-service for hostapd
2023-07-16 17:51:50 +01:00
Daniel Barlow
669af24247
make a module for dnsmasq
2023-07-14 23:18:21 +01:00
Daniel Barlow
df6cfe1cd5
move pppoe service derivation into ppp module dir
2023-07-14 21:35:59 +01:00
Daniel Barlow
682183a88d
move typeChecked into pkgs.liminix.lib
2023-07-14 20:22:29 +01:00
Daniel Barlow
69e6eb5a89
accept attr args to pppoe service, and typecheck them
...
We use (abuse, arguably) the nixos module system for typechecking. Un
the plus side, it gives us documentation of the options and their
expected types. On the downside, the error message doesn't tell us
the file in which the error was encountered.
(This is subject to change, if I can find a better way)
2023-07-14 16:53:36 +01:00
Daniel Barlow
a19d12d6d7
fennelrepl add PREFIX/?/init.lua to lua load path
2023-07-08 23:08:25 +01:00
Daniel Barlow
b5cd0cc2d5
fennelrepl: fix bug which introduced whitespace in package.path
2023-07-08 23:08:24 +01:00
Daniel Barlow
0c41e9305c
extract service output watcher to fennel module
2023-07-08 23:08:24 +01:00
Daniel Barlow
708350711b
allow running scripts using fennelrepl
...
e.g.
FENNEL_PATH=pkgs/?/init.fnl\;pkgs/?.fnl nix-shell --run "fennelrepl ./examples/acquire-delegated-prefix.fnl /tmp/boo eth1"
2023-07-08 23:08:24 +01:00
Daniel Barlow
2de4d7a8f9
fennel: extract some common functions into a shareable module
2023-07-05 20:23:27 +01:00
Daniel Barlow
c3bb33c9ce
add fennelrepl package
...
Runs fennel using a Lua compiled with the same options as the
host system, and with packages set up so it can find all the local
Lua packages
To shorten the dev feedback loop further, allows FENNEL_PATH to be set
on the command line so you can point directly it at the Fennel sources
for some library you're working against instead of having to run
nix-build and compile them to Lua
2023-07-04 22:58:51 +01:00
Daniel Barlow
24befe6bf7
install fennel from source as a package
...
nixos lua packaging is giving me a headache
2023-07-04 22:56:17 +01:00
Daniel Barlow
41687e916d
rename luaSmall package to lua
2023-07-02 18:19:54 +01:00
Daniel Barlow
3900683413
simplify protocol for watchers of service output directories
...
Previously: the service wrote a timestamp and the receiver
read and parsed it to see if there was new data
Now: the service writes and removes a .lock file to prevent
the receiver reading partial data. The receiver is responsible
for remembering the *previous* state and only updating if it's changed
2023-07-02 12:09:13 +01:00
Daniel Barlow
9aa5ff6ed1
make a package for odhcpc-script
2023-06-30 20:02:03 +01:00
Daniel Barlow
b6e72504d6
ipv6 default route
...
needs to specify the ppp0 *peer* address not the local address
2023-06-30 10:17:33 +01:00
Daniel Barlow
c595ae0ccb
firewallgen: make nft shebang work
2023-06-27 21:26:23 +01:00
Daniel Barlow
6101f3f3d8
load necessary kernel modules for firewall
2023-06-27 21:18:09 +01:00
Daniel Barlow
591bd78509
extract writeKconfig to its own file
2023-06-26 20:49:43 +01:00
Daniel Barlow
6bc45c2b55
preinit: null-terminate argv array for execve
2023-06-22 09:29:44 +01:00
Daniel Barlow
d79a1e15bb
get fennel from source instead of luarocks
2023-06-20 20:19:11 +01:00
Daniel Barlow
a7e7146887
preinit: disable nolibc
...
- it stopped working with 22.11->23.05
- linking statically against musl is about 17k, so
this is costing us 11k or so
2023-06-18 23:04:26 +01:00
Daniel Barlow
d66f5901a2
fix nftables syntax
2023-06-18 22:18:44 +01:00
Daniel Barlow
80639a7256
add firewallgen package, which creates an nft script
2023-06-18 17:40:16 +01:00
Daniel Barlow
3f4dbfcfd3
ipv6 prefix delegation for rotuer
...
much tidying needed, but it works
2023-05-31 23:29:05 +01:00
Daniel Barlow
fdffdbb22a
add writeFennelScript function, make ifwait use it
2023-05-29 20:20:12 +01:00
Daniel Barlow
447f068569
partly support getting IPv6 addresses
...
- gets interface id from ppp
- runs odhcpc to get RA and prefix delegation
- doesn't do anything useful with the data yet
2023-05-24 23:01:50 +01:00
Daniel Barlow
339c2d9873
upgrade to ppp 2.5.0
2023-05-22 23:31:57 +01:00
Daniel Barlow
39b09df4d7
liminix-rebuild: test if nix-build succeeds
2023-05-20 22:30:22 +01:00
Daniel Barlow
ea2f48cfc9
liminix-rebuild copy nix-store-paths to /persist
2023-05-20 21:55:37 +01:00
Daniel Barlow
b0098f1c8e
move min-list-garbage into min-collect-garbage pkg
...
we don't want it in the same package as min-copy-closure as
that depends on bash
2023-05-20 21:55:23 +01:00
Daniel Barlow
68ab6faeb3
write etc/nix-store-paths in systemConfiguration
2023-05-19 23:57:50 +01:00
Daniel Barlow
00aeb81811
min-list-garbage: check all store paths against file
...
this is step 1 of min-collect-garbage, no point implementing
deletion ourselves when rm -r exists
(arguably no point in implementing any of it, but this is the bit we
can't do efficiently in bourne shell - it means we're reading the
store-paths list once instead of grepping it afresh for every entry in
/nix/store/)
2023-05-19 23:49:11 +01:00
Daniel Barlow
a809c28dde
liminix-rebuild source /etc/profile to get PATH for reboot
2023-05-18 22:43:08 +01:00
Daniel Barlow
292a4c4d46
liminix-rebuild: put activate in /persist
2023-05-17 22:49:10 +01:00
Daniel Barlow
b1f4db00a0
add liminix-rebuild command
2023-05-17 15:38:22 +01:00
Daniel Barlow
ddd7b68b30
min-copy-closure: remove verbose output
2023-05-11 23:52:13 +01:00
Daniel Barlow
cc6c790746
set up path for min-copy-closure
2023-05-07 22:51:10 +01:00
Daniel Barlow
bcf5dac5d7
min-copy-closure: honour $SSH_COMMAND env var
2023-05-07 22:07:35 +01:00
Daniel Barlow
1c002c4065
min-copy-closure: improve output
2023-05-07 22:06:49 +01:00
Daniel Barlow
74f2aa6247
initramfs-peek: an initramfs image with a shell, for debugging
2023-05-06 23:03:51 +01:00
Daniel Barlow
888a0d5f74
mips-vm: allow env var to override la network interface
...
this is handy if you want to connect to it from the host
for e.g. seeing if min-copy-closure works
2023-05-06 23:01:56 +01:00
Daniel Barlow
30153a2d4e
add min-copy-closure, a minimal nix-copy-closure substitute
2023-05-06 22:47:03 +01:00
Daniel Barlow
28264febdb
add smaller-than-gnu "hello world" package
2023-04-23 20:56:20 +01:00
Daniel Barlow
65dfbad365
systemconfig: chown files if uid/gid > 0
2023-04-15 22:53:28 +01:00
Daniel Barlow
5dd0c6e3c0
rewrite preinit as very small C program
...
By using the kernel "nolibc" header to avoid requiring a C library, we
can bring the initramfs size to around 4k
This does involve a tiny bit of inline mips assembly which I'm not
sure about. gcc seems unwilling to generate the code to load $gp at
function entry of main(), so we do it by hand - but I'd rather find
out why gcc doesn't.
2023-04-15 18:27:39 +01:00
Daniel Barlow
11f2715d18
mips-vm: enlarge mtd
2023-04-15 17:22:35 +01:00
Daniel Barlow
1cc0b13b57
rewrite systemconfig in C and link statically
...
systemconfig (a.k.a "activate") is run from the initramfs. Converting
it from a shell script to an executable means it doesn't depend on
there being a shell in the initramfs
2023-04-15 17:21:27 +01:00
Daniel Barlow
c744ef8c17
systemconfig: accept uid and gid options
...
all we do with them is assert they're zero, to unbreak CI.
This code is getting rewritten anyway
2023-04-14 23:19:56 +01:00
Brian McKenna
fb796e61e0
pseudofile: allow setting uid and gid of files
...
Necessary for Dropbear to accept non-root authorized_keys files.
2023-04-14 23:12:52 +01:00
Daniel Barlow
2e15acd61c
whitespace
2023-04-10 17:46:39 +01:00
Daniel Barlow
54a1ab3529
support jffs2, with initramfs
...
the jffs2 filesystem contains only /nix/store and a script which is
run in early init (initramfs) and is responsible for recreating
"traditional" directories (/bin /etc/**/* /var &c) based on the
configuration.
this is tested only in qemu so far and could use some cleanup
2023-04-04 23:35:49 +01:00
Daniel Barlow
25d9da967c
remove support for sockets in pseudofiles
...
(1) we can't make them on a real filesystem except by running
something that calls socket()
(2) whyever would we want to?
2023-04-04 23:23:22 +01:00
Daniel Barlow
aa1a2e5d75
package gen_init_cpio, tool for making an initramfs
2023-04-04 22:54:20 +01:00
Daniel Barlow
f02efa3fe3
refactor
2023-04-04 21:11:28 +01:00
Daniel Barlow
342c87b256
qemu: boot from mtd using mtd2block
...
doesn't make much difference for squashfs but this will make it much
simpler to test jffs2/ubifs
2023-04-04 21:07:02 +01:00
Daniel Barlow
07e7d63ade
fixup 98243d43da
2023-04-02 18:46:27 +01:00
Daniel Barlow
98243d43da
add mtdutils mkfs.jffs2 --graft option
...
we'd like a bit more of the convenience of mksquashfs
(never thought I'd say _that_) for jffs2, in particular
not having to copy all the desired store paths into a
single directory just so we can create an image from them
2023-03-31 23:42:13 +01:00
Daniel Barlow
a172180be8
don't set lua5_3 in overlay
...
sphinx depends on lua5_3, so overriding it globally means rebuilding
that - which isn't really necessary
2023-03-24 23:43:13 +00:00
Daniel Barlow
3608cc5e33
add kenrel command line cookie to mips-vm script
2023-03-24 18:48:38 +00:00
Daniel Barlow
a5cfa37ed3
unify kernel command line handling
...
We now use MIPS_CMDLINE_DTB_EXTEND for all boot varieties
(tftpboot, flash boot, kexec) with the addition of
MIPS_BOOTLOADER_CMDLINE_REQUIRE_COOKIE - local patch -
so that the bootloader args are ignored unless they
contain the string "liminix"
2023-03-23 22:24:44 +00:00
Daniel Barlow
4b19568f1b
add kexecboot
...
This allows booting a new image from a running OS, creating a
phram mtd for the root squashfs
* enable CONFIG_KEXEC
* add modules/kexecboot
* patch kexec-tools to add --map-file option for the squashfs
* patch kernel kexec code to call new kernel with DTB
2023-03-19 20:25:43 +00:00
Daniel Barlow
429ffa8e7d
make applyPatches work for ramips
2023-03-19 20:25:23 +00:00
Daniel Barlow
efd878dc5e
extract common code for patching kernel source fdorm openwrt
2023-03-18 19:17:58 +00:00
Daniel Barlow
a4e1dcedd3
redirect stderr
2023-03-10 23:39:53 +00:00
Daniel Barlow
225fc6fe51
configurable busybox
...
allows modules to add to the busybox applets and change config
2023-03-10 18:40:45 +00:00
Daniel Barlow
91c0147919
set hostname before dhcp client runs
2023-03-08 22:11:59 +00:00
Daniel Barlow
70f8f5ecfd
remove hostapd debugging flag
2023-03-07 19:11:25 +00:00
Daniel Barlow
e86e9430fc
vlans and mt300a wired network interfaces
2023-03-07 19:10:12 +00:00
Daniel Barlow
06687a819a
udhcpc notify when ready
2023-03-07 19:06:40 +00:00
Daniel Barlow
f9f9720ba7
${!foo} doesn't work in ash, switch to printenv
2023-03-07 19:05:58 +00:00
Daniel Barlow
1565a8414d
remove inadvertant references to bash
2023-03-06 17:48:31 +00:00
Daniel Barlow
83e56a3a90
add swconfig package
2023-03-05 22:32:56 +00:00
Daniel Barlow
2787e6a230
reformat qprint substitutions
2023-03-05 21:33:51 +00:00
Daniel Barlow
a8cb872859
add service name to log lines
2023-03-04 23:08:25 +00:00
Daniel Barlow
5427456c21
rename notificationFd to notification-fd
...
it's perfectly valid syntax and consistent with the s6 spelling
2023-03-04 21:19:30 +00:00
Daniel Barlow
25a46dcb2c
escape $ in pseudofile
...
this is needed to write /etc/passwd when it contains $5$....
strings
2023-03-04 00:23:21 +00:00
Daniel Barlow
38756af1c1
add in_outputs shell function which ensures umask is set
2023-03-03 23:07:03 +00:00
Daniel Barlow
fd500041fa
move new packages to pkgs/default.nix
2023-03-03 22:21:27 +00:00
Daniel Barlow
adc198b3af
WIP push to see what passes
2023-03-01 22:24:58 +00:00
Daniel Barlow
fc4f726dd6
make hostapd service depend on its interface
2023-03-01 18:16:01 +00:00
Daniel Barlow
626a365f79
replace waitup with more generally useful ifwait
...
* wait for $interface present before ip link set up dev
* wait for wlan0 running before adding to bridge
2023-03-01 18:16:01 +00:00
Daniel Barlow
14dacb8056
update netlink-lua to latest
2023-02-28 20:56:19 +00:00
Daniel Barlow
ea2c5e158d
add missing argument
2023-02-26 17:54:58 +00:00
Daniel Barlow
c37332910a
add option to provide dnsmasq resolv-file from a service
2023-02-25 22:53:50 +00:00
Daniel Barlow
59ce03630a
consistent ownership/permissions for /run/service-state/**
2023-02-25 22:53:06 +00:00
Daniel Barlow
228b270385
pppoe: capture nameserver addresses as outputs
2023-02-25 20:31:41 +00:00
Daniel Barlow
3b75cadb20
improve bridge support
...
instead of a bridge specifiying its members (not ideal if they're
not all always up), the member interfaces specify their primary
2023-02-24 23:49:05 +00:00
Daniel Barlow
8194e909ac
fix typo, remove debug spew
2023-02-24 23:22:28 +00:00
Daniel Barlow
03aec58c2c
add "waitup", s6 readiness helper for network interfaces
...
run e.g. "waitup wlan0 10" to wait until wlan0 is operationally
up and running, and then send a newline to file descriptor 10
2023-02-24 23:22:28 +00:00
Daniel Barlow
3e1082ad18
allow interface service to specify dependencies
2023-02-22 19:18:59 +00:00
Daniel Barlow
751920c8fc
qemu: switch to building wireless as kernel modules
...
This is a hefty change
* add support for kernel backports project
* build wireless stack/drivers as modules from a backported kernel
* create a service to load/unload the modules
2023-02-22 18:41:41 +00:00
Daniel Barlow
891db9edc5
kernel derivation: add output for module support
2023-02-22 18:33:17 +00:00
Daniel Barlow
05576eeb94
harcode paths for kpppoed, add port num in config
2023-02-17 00:09:02 +00:00
Daniel Barlow
b438a0fd17
handlersocket must be bound before calling select()
...
this is due to a rather odd (imo) decision in luasocket which
says that the underlying socket (and therefore its file
descriptor) isn't actually created until we call something
that lets it work out whether ipv4 or ipv6
2023-02-15 22:06:28 +00:00
Daniel Barlow
2388e4ca24
recvfrom(-1) is not the same as recvfrom()
2023-02-15 22:06:28 +00:00
Daniel Barlow
f98b9c5c97
add README to say where Tufted came from
2023-02-15 22:06:28 +00:00
Daniel Barlow
1a29e2ba0f
use locally modified tftp.lua instead of upstream tufty
2023-02-15 22:06:28 +00:00
Daniel Barlow
118f78f334
remove "using luasocket" message
2023-02-15 22:06:28 +00:00
Daniel Barlow
a258456f25
check return value of bind
...
is common to forget to run this as root, in which case we would like
to see the permission denied error when it tries to open port 69
2023-02-15 22:06:28 +00:00
Daniel Barlow
71e37f1b96
update listen
docstring
2023-02-15 22:06:28 +00:00
Daniel Barlow
55688c14ed
pass remote host and port to callback as params 2..3
...
This allows the callback to handle the response differently
depending on who is asking - for example, to refuse requests
from clients on a blocklist
2023-02-15 22:06:28 +00:00
Daniel Barlow
59c0881235
remove unhelpful debug message
2023-02-15 22:06:28 +00:00
Daniel Barlow
1b372bcb2b
simpler eof handling
2023-02-15 22:06:28 +00:00
Daniel Barlow
b84a6e0aa5
fix poll() to not mutate its parameter
2023-02-15 22:06:28 +00:00
Daniel Barlow
d729709869
remove nixio support
2023-02-15 22:06:28 +00:00
Daniel Barlow
740314b329
added at 3cb95c869e2fe74cc61ca303d88af6c5daad6734
2023-02-15 22:06:28 +00:00
Daniel Barlow
e84833e52f
WIP create VM for pppoe and tftpd
2023-02-15 22:06:28 +00:00
Daniel Barlow
8cead61740
convert devices from overlay to module
...
this makes it possible for devices to stash things in
`config` (e.g. pathname to DTS) that can later be overwritten
(even by the end user)
2023-02-10 17:54:33 +00:00
Daniel Barlow
1dc9770dbc
turn run-qemu.sh and connect-qemu scripts into buildEnv commands
2023-02-08 22:49:10 +00:00
Daniel Barlow
4addcbbd51
turn run-qemu.sh script into mips-vm buildEnv command
2023-02-08 22:17:06 +00:00
Daniel Barlow
cc7daeabb3
add routeros to overlay
2023-02-08 18:13:35 +00:00
Daniel Barlow
52d8c03ddd
update tufted for nixpkgs fennel changes
2023-02-07 23:42:19 +00:00
Daniel Barlow
76243d306c
remove checkedConfig, check all the config
2022-10-19 22:09:38 +01:00
Daniel Barlow
9c5b5a54e2
remove unneeded Kconfig.local handling
2022-10-19 18:23:20 +01:00
Daniel Barlow
f1b7780537
speed up kernel build
...
by having two separate derivations for patching the kernel source tree
and building it, we have to copy said source trees from one store
location to another which takes non-neglible time on spinning rust
(literally minutes on my machine). Replace with a single derivation
that can do more things on one tree in-place
2022-10-19 17:34:22 +01:00
Daniel Barlow
e7987c9520
add build-host tftp server
2022-10-04 23:08:43 +01:00
Daniel Barlow
e9f04931fa
improve syntax for accessing service outputs
2022-10-02 16:35:55 +01:00
Daniel Barlow
f030efbd49
extract "service" function to reduce duplicated code
2022-10-02 14:44:29 +01:00
Daniel Barlow
da8866a01a
first pass at a hostapd service, rough around the edges
2022-10-02 10:04:35 +01:00
Daniel Barlow
c320d0afc7
add dnsmasq and example config for it
...
would be good to move more of this into a module, but that
doesn't sit well with the (potential) ability to run more than one
dnsmasq service, as modules are singletons
2022-09-28 21:33:18 +01:00
Daniel Barlow
dfdaa27f39
make ppp log to stderr not syslog
2022-09-27 22:57:06 +01:00
Daniel Barlow
0632b5102e
remove .service/.target/.bundle etc suffixes on service names
...
they don't seem to be providing value
2022-09-27 22:56:53 +01:00
Daniel Barlow
5e573cef09
squashfs builder just needs filesystem not entire config
2022-09-27 22:06:36 +01:00
Daniel Barlow
e2650aa162
add pppoe derivation, replacing override
...
we use a custom installPhase so we don't drag in a bunch of
scripts that we don't need and don't work
2022-09-27 22:04:22 +01:00
Daniel Barlow
af4cd2e05c
make mksquashfs fail on error
2022-09-27 17:36:25 +01:00
Daniel Barlow
5d10a9e760
rename config.environment as config.filesystem
2022-09-27 16:48:17 +01:00
Daniel Barlow
696bbe6521
rename systemPackages as defaultProfile.packages
...
it doesn't work the same way as in nixos, so don't name it the same way
2022-09-27 16:47:42 +01:00
Daniel Barlow
4cbe669783
move make-image to subdirectory
2022-09-27 16:47:42 +01:00
Daniel Barlow
e40a91fca0
move all remaining pseudofiles to base module
2022-09-27 14:06:07 +01:00
Daniel Barlow
797aa30c47
make s6-init-files into a module
2022-09-27 10:19:44 +01:00
Daniel Barlow
09a9dba963
export "dir" and "symlink" from pseudofiles package
2022-09-26 18:27:43 +01:00
Daniel Barlow
c6c6b51893
make s6-rc-database a package
2022-09-26 15:59:21 +01:00
Daniel Barlow
d5ccecf038
make "shutdown" work
...
create a package for the s6-compatible shutdown/halt/poweroff
commands and put it on the path ahead of busybox
2022-09-26 14:13:23 +01:00