cleanup whitespace and commas

* [] is now [ ]
* {} is now { }
* commas in arglists go at end of line not beginning

In short, I ran the whole thing through nixfmt-rfc-style but only
accepted about 30% of its changes. I might grow accustomed to more
of it over time
This commit is contained in:
Daniel Barlow 2024-06-30 16:58:29 +01:00
parent 0d3218127f
commit 3df1ec76ff
63 changed files with 533 additions and 491 deletions

View File

@ -6,7 +6,7 @@ in {
options.bordervm = { options.bordervm = {
keys = mkOption { keys = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = []; default = [ ];
}; };
l2tp = { l2tp = {
host = mkOption { host = mkOption {
@ -55,18 +55,17 @@ in {
<nixpkgs/nixos/modules/virtualisation/qemu-vm.nix> <nixpkgs/nixos/modules/virtualisation/qemu-vm.nix>
]; ];
config = { config = {
boot.kernelParams = [ boot.kernelParams = [ "loglevel=9" ];
"loglevel=9"
];
systemd.services.pppoe = systemd.services.pppoe =
let conf = pkgs.writeText "kpppoed.toml" let
'' conf = pkgs.writeText "kpppoed.toml" ''
interface_name = "eth1" interface_name = "eth1"
services = [ "myservice" ] services = [ "myservice" ]
lns_ipaddr = "${cfg.l2tp.host}:${builtins.toString cfg.l2tp.port}" lns_ipaddr = "${cfg.l2tp.host}:${builtins.toString cfg.l2tp.port}"
ac_name = "kpppoed-1.0" ac_name = "kpppoed-1.0"
''; '';
in { in
{
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" ]; after = [ "network-online.target" ];
serviceConfig = { serviceConfig = {
@ -83,7 +82,7 @@ in {
services.dnsmasq = { services.dnsmasq = {
enable = true; enable = true;
resolveLocalQueries = false; resolveLocalQueries = false;
settings = { settings = {
# domain-needed = true; # domain-needed = true;
dhcp-range = [ "10.0.0.10,10.0.0.240" ]; dhcp-range = [ "10.0.0.10,10.0.0.240" ];
interface = "eth1"; interface = "eth1";
@ -92,17 +91,17 @@ in {
systemd.services.sshd.wantedBy = pkgs.lib.mkForce [ "multi-user.target" ]; systemd.services.sshd.wantedBy = pkgs.lib.mkForce [ "multi-user.target" ];
virtualisation = { virtualisation = {
qemu = { qemu = {
networkingOptions = []; networkingOptions = [ ];
options = [] ++ options =
optional cfg.ethernet.pci.enable [ ]
"-device vfio-pci,host=${cfg.ethernet.pci.id}" ++ ++ optional cfg.ethernet.pci.enable "-device vfio-pci,host=${cfg.ethernet.pci.id}"
optionals cfg.ethernet.usb.enable [ ++ optionals cfg.ethernet.usb.enable [
"-device usb-ehci,id=ehci" "-device usb-ehci,id=ehci"
"-device usb-host,bus=ehci.0,vendorid=${cfg.ethernet.usb.vendor},productid=${cfg.ethernet.usb.product}" "-device usb-host,bus=ehci.0,vendorid=${cfg.ethernet.usb.vendor},productid=${cfg.ethernet.usb.product}"
] ++ [ ]
++ [
"-nographic" "-nographic"
"-serial mon:stdio" "-serial mon:stdio"
]; ];
@ -136,13 +135,13 @@ in {
nat = { nat = {
enable = true; enable = true;
internalInterfaces = [ "eth1" ]; internalInterfaces = [ "eth1" ];
externalInterface ="eth0"; externalInterface = "eth0";
}; };
}; };
users.users.liminix = { users.users.liminix = {
isNormalUser = true; isNormalUser = true;
uid = 1000; uid = 1000;
extraGroups = [ "wheel"]; extraGroups = [ "wheel" ];
openssh.authorizedKeys.keys = cfg.keys; openssh.authorizedKeys.keys = cfg.keys;
}; };
services.getty.autologinUser = "liminix"; services.getty.autologinUser = "liminix";

View File

@ -1,8 +1,12 @@
{...}: { ... }:
{ {
bordervm = { bordervm = {
# ethernet.pci = { id = "01:00.0"; enable = true; }; # ethernet.pci = { id = "01:00.0"; enable = true; };
ethernet.usb = { vendor = "0x0bda"; product = "0x8153"; enable = true; }; ethernet.usb = {
vendor = "0x0bda";
product = "0x8153";
enable = true;
};
l2tp = { l2tp = {
host = "l2tp.aa.net.uk"; host = "l2tp.aa.net.uk";
}; };

53
ci.nix
View File

@ -1,11 +1,12 @@
{ {
nixpkgs nixpkgs,
, unstable unstable,
, liminix liminix,
, ... }: ...
}:
let let
pkgs = (import nixpkgs {}); pkgs = (import nixpkgs { });
borderVmConf = ./bordervm.conf-example.nix; borderVmConf = ./bordervm.conf-example.nix;
inherit (pkgs.lib.attrsets) genAttrs; inherit (pkgs.lib.attrsets) genAttrs;
devices = [ devices = [
"gl-ar750" "gl-ar750"
@ -26,27 +27,35 @@ let
}).outputs.default; }).outputs.default;
tests = import ./tests/ci.nix; tests = import ./tests/ci.nix;
jobs = jobs =
(genAttrs devices for-device) // (genAttrs devices for-device)
tests // // tests
{ // {
buildEnv = (import liminix { buildEnv =
inherit nixpkgs borderVmConf; (import liminix {
device = import (liminix + "/devices/qemu"); inherit nixpkgs borderVmConf;
liminix-config = vanilla; device = import (liminix + "/devices/qemu");
}).buildEnv; liminix-config = vanilla;
}).buildEnv;
doc = doc =
let json = let
(import liminix { json =
inherit nixpkgs borderVmConf; (import liminix {
device = import (liminix + "/devices/qemu"); inherit nixpkgs borderVmConf;
liminix-config = {...} : { device = import (liminix + "/devices/qemu");
liminix-config =
{ ... }:
{
imports = [ ./modules/all-modules.nix ]; imports = [ ./modules/all-modules.nix ];
}; };
}).outputs.optionsJson; }).outputs.optionsJson;
in pkgs.stdenv.mkDerivation { in
pkgs.stdenv.mkDerivation {
name = "liminix-doc"; name = "liminix-doc";
nativeBuildInputs = with pkgs; [ nativeBuildInputs = with pkgs; [
gnumake sphinx fennel luaPackages.lyaml gnumake
sphinx
fennel
luaPackages.lyaml
]; ];
src = ./.; src = ./.;
buildPhase = '' buildPhase = ''

View File

@ -1,24 +1,27 @@
{ {
deviceName ? null deviceName ? null,
, device ? (import ./devices/${deviceName} ) device ? (import ./devices/${deviceName}),
, liminix-config ? <liminix-config> liminix-config ? <liminix-config>,
, nixpkgs ? <nixpkgs> nixpkgs ? <nixpkgs>,
, borderVmConf ? ./bordervm.conf.nix borderVmConf ? ./bordervm.conf.nix,
, imageType ? "primary" imageType ? "primary",
}: }:
let let
overlay = import ./overlay.nix; overlay = import ./overlay.nix;
pkgs = import nixpkgs (device.system // { pkgs = import nixpkgs (
overlays = [overlay]; device.system
config = { // {
allowUnsupportedSystem = true; # mipsel overlays = [ overlay ];
permittedInsecurePackages = [ config = {
"python-2.7.18.6" # kernel backports needs python <3 allowUnsupportedSystem = true; # mipsel
"python-2.7.18.7" permittedInsecurePackages = [
]; "python-2.7.18.6" # kernel backports needs python <3
}; "python-2.7.18.7"
}); ];
};
}
);
eval = pkgs.lib.evalModules { eval = pkgs.lib.evalModules {
specialArgs = { specialArgs = {

View File

@ -2,9 +2,8 @@
let let
conf = eval.config; conf = eval.config;
rootDir = builtins.toPath ./..; rootDir = builtins.toPath ./..;
stripAnyPrefixes = lib.flip (lib.fold lib.removePrefix) stripAnyPrefixes = lib.flip (lib.fold lib.removePrefix) [ "${rootDir}/" ];
["${rootDir}/"]; optToDoc = name: opt: {
optToDoc = name: opt : {
inherit name; inherit name;
description = opt.description or null; description = opt.description or null;
default = opt.default or null; default = opt.default or null;
@ -25,7 +24,6 @@ let
let x = lib.mapAttrsToList optToDoc sd.parameters; in x; let x = lib.mapAttrsToList optToDoc sd.parameters; in x;
} }
else else
item // { declarations = map stripAnyPrefixes item.declarations; }; item // { declarations = map stripAnyPrefixes item.declarations; };
in in
builtins.map spliceServiceDefn builtins.map spliceServiceDefn (pkgs.lib.optionAttrSetToDocList eval.options)
(pkgs.lib.optionAttrSetToDocList eval.options)

View File

@ -1,16 +1,18 @@
with import <nixpkgs> {} ; with import <nixpkgs> { };
let let
inherit (builtins) stringLength readDir filter; inherit (builtins) stringLength readDir filter;
devices = filter (n: n != "families") devices = filter (n: n != "families") (lib.mapAttrsToList (n: t: n) (readDir ../devices));
(lib.mapAttrsToList (n: t: n) (readDir ../devices)); texts = map (
texts = map (n: n:
let d = import ../devices/${n}/default.nix; let
d' = { d = import ../devices/${n}/default.nix;
description = "${n}\n${substring 0 (stringLength n) "********************************"}\n"; d' = {
} // d; description = "${n}\n${substring 0 (stringLength n) "********************************"}\n";
in d'.description) } // d;
devices; in
d'.description
) devices;
in in
writeText "hwdoc" '' writeText "hwdoc" ''
Supported hardware Supported hardware

View File

@ -119,7 +119,7 @@ in rec {
secrets_file secrets_file
services.mount_external_disk services.mount_external_disk
config.hardware.networkInterfaces.lan config.hardware.networkInterfaces.lan
] ; ];
}; };
users.root = { users.root = {
@ -128,18 +128,22 @@ in rec {
}; };
users.backup = { users.backup = {
uid=500; gid=500; gecos="Storage owner"; dir="/srv"; uid = 500;
shell="/dev/null"; gid = 500;
gecos = "Storage owner";
dir = "/srv";
shell = "/dev/null";
}; };
groups.backup = { groups.backup = {
gid=500; usernames = ["backup"]; gid = 500;
usernames = [ "backup" ];
}; };
defaultProfile.packages = with pkgs; [ defaultProfile.packages = with pkgs; [
e2fsprogs e2fsprogs
mtdutils mtdutils
(levitate.override { (levitate.override {
config = { config = {
services = { services = {
inherit (config.services) dhcpc sshd watchdog; inherit (config.services) dhcpc sshd watchdog;
}; };

View File

@ -5,7 +5,7 @@
# wherever the text "EDIT" appears - please consult the tutorial # wherever the text "EDIT" appears - please consult the tutorial
# documentation for details. # documentation for details.
{ config, pkgs, ... } : { config, pkgs, ... }:
let let
inherit (pkgs.liminix.services) bundle oneshot; inherit (pkgs.liminix.services) bundle oneshot;
inherit (pkgs) serviceFns; inherit (pkgs) serviceFns;
@ -49,31 +49,40 @@ in rec {
country_code = "GB"; country_code = "GB";
wpa_passphrase = "not a real wifi password"; wpa_passphrase = "not a real wifi password";
hw_mode="g"; hw_mode = "g";
ieee80211n = 1; ieee80211n = 1;
auth_algs = 1; # 1=wpa2, 2=wep, 3=both auth_algs = 1; # 1=wpa2, 2=wep, 3=both
wpa = 2; # 1=wpa, 2=wpa2, 3=both wpa = 2; # 1=wpa, 2=wpa2, 3=both
wpa_key_mgmt = "WPA-PSK"; wpa_key_mgmt = "WPA-PSK";
wpa_pairwise = "TKIP CCMP"; # auth for wpa (may not need this?) wpa_pairwise = "TKIP CCMP"; # auth for wpa (may not need this?)
rsn_pairwise = "CCMP"; # auth for wpa2 rsn_pairwise = "CCMP"; # auth for wpa2
wmm_enabled = 1; wmm_enabled = 1;
}; };
}; };
services.int = svc.network.address.build { services.int = svc.network.address.build {
interface = svc.bridge.primary.build { ifname = "int"; }; interface = svc.bridge.primary.build { ifname = "int"; };
family = "inet"; address = "${ipv4LocalNet}.1"; prefixLength = 16; family = "inet";
address = "${ipv4LocalNet}.1";
prefixLength = 16;
}; };
services.bridge = svc.bridge.members.build { services.bridge = svc.bridge.members.build {
primary = services.int; primary = services.int;
members = with config.hardware.networkInterfaces; members = with config.hardware.networkInterfaces; [
[ wlan lan ]; wlan
lan
];
}; };
services.ntp = svc.ntp.build { services.ntp = svc.ntp.build {
pools = { "pool.ntp.org" = ["iburst"]; }; pools = {
makestep = { threshold = 1.0; limit = 3; }; "pool.ntp.org" = [ "iburst" ];
};
makestep = {
threshold = 1.0;
limit = 3;
};
}; };
services.sshd = svc.ssh.build { }; services.sshd = svc.ssh.build { };
@ -157,8 +166,7 @@ in rec {
interface = services.wan; interface = services.wan;
}; };
services.firewall = svc.firewall.build { services.firewall = svc.firewall.build { };
};
services.packet_forwarding = svc.network.forward.build { }; services.packet_forwarding = svc.network.forward.build { };
@ -195,7 +203,5 @@ in rec {
]; ];
}; };
defaultProfile.packages = with pkgs; [ defaultProfile.packages = with pkgs; [ min-collect-garbage ];
min-collect-garbage
];
} }

View File

@ -4,7 +4,7 @@ let
svc = config.system.service; svc = config.system.service;
inherit (pkgs.pseudofile) dir symlink; inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs.liminix.services) oneshot target; inherit (pkgs.liminix.services) oneshot target;
some-util-linux = pkgs.runCommand "some-util-linux" {} '' some-util-linux = pkgs.runCommand "some-util-linux" { } ''
mkdir -p $out/bin mkdir -p $out/bin
cd ${pkgs.util-linux-small}/bin cd ${pkgs.util-linux-small}/bin
cp fdisk sfdisk mkswap $out/bin cp fdisk sfdisk mkswap $out/bin
@ -53,7 +53,7 @@ in rec {
services.defaultroute4 = svc.network.route.build { services.defaultroute4 = svc.network.route.build {
via = "$(output ${services.dhcpc} router)"; via = "$(output ${services.dhcpc} router)";
target = "default"; target = "default";
dependencies = [services.dhcpc]; dependencies = [ services.dhcpc ];
}; };
services.resolvconf = oneshot rec { services.resolvconf = oneshot rec {

View File

@ -8,12 +8,10 @@
root = { root = {
# mkpasswd -m sha512crypt # mkpasswd -m sha512crypt
passwd = "$6$6pt0mpbgcB7kC2RJ$kSBoCYGyi1.qxt7dqmexLj1l8E6oTZJZmfGyJSsMYMW.jlsETxdgQSdv6ptOYDM7DHAwf6vLG0pz3UD31XBfC1"; passwd = "$6$6pt0mpbgcB7kC2RJ$kSBoCYGyi1.qxt7dqmexLj1l8E6oTZJZmfGyJSsMYMW.jlsETxdgQSdv6ptOYDM7DHAwf6vLG0pz3UD31XBfC1";
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [ ];
];
}; };
lan = { lan = {
prefix = "10.8.0"; prefix = "10.8.0";
}; };
} }

View File

@ -10,10 +10,10 @@
let let
secrets = { secrets = {
domainName = "fake.liminix.org"; domainName = "fake.liminix.org";
firewallRules = {}; firewallRules = { };
} // (import ./rotuer-secrets.nix); } // (import ./rotuer-secrets.nix);
svc = config.system.service; svc = config.system.service;
wirelessConfig = { wirelessConfig = {
country_code = "GB"; country_code = "GB";
inherit (secrets) wpa_passphrase; inherit (secrets) wpa_passphrase;
wmm_enabled = 1; wmm_enabled = 1;
@ -70,13 +70,13 @@ in rec {
wireless.networks = { wireless.networks = {
"${secrets.ssid}" = { "${secrets.ssid}" = {
interface = config.hardware.networkInterfaces.wlan; interface = config.hardware.networkInterfaces.wlan;
hw_mode="g"; hw_mode = "g";
channel = "2"; channel = "2";
ieee80211n = 1; ieee80211n = 1;
} // wirelessConfig; } // wirelessConfig;
"${secrets.ssid}5" = rec { "${secrets.ssid}5" = rec {
interface = config.hardware.networkInterfaces.wlan5; interface = config.hardware.networkInterfaces.wlan5;
hw_mode="a"; hw_mode = "a";
channel = 36; channel = 36;
ht_capab = "[HT40+]"; ht_capab = "[HT40+]";
vht_oper_chwidth = 1; vht_oper_chwidth = 1;

View File

@ -4,7 +4,7 @@
{ lib, pkgs, config, ...}: { lib, pkgs, config, ...}:
let let
inherit (lib) mkOption types ; inherit (lib) mkOption types;
inherit (pkgs.pseudofile) dir symlink; inherit (pkgs.pseudofile) dir symlink;
type_service = pkgs.liminix.lib.types.service; type_service = pkgs.liminix.lib.types.service;
@ -36,7 +36,7 @@ in {
''; '';
# internal = true; # probably a good case to make this internal # internal = true; # probably a good case to make this internal
}; };
rootfsType = mkOption { rootfsType = mkOption {
default = "squashfs"; default = "squashfs";
type = types.enum [ type = types.enum [
"btrfs" "btrfs"
@ -46,7 +46,7 @@ in {
"ubifs" "ubifs"
]; ];
}; };
rootOptions = mkOption { rootOptions = mkOption {
type = types.nullOr types.str; type = types.nullOr types.str;
default = null; default = null;
}; };
@ -54,20 +54,29 @@ in {
boot = { boot = {
commandLine = mkOption { commandLine = mkOption {
type = types.listOf types.nonEmptyStr; type = types.listOf types.nonEmptyStr;
default = []; default = [ ];
description = "Kernel command line"; description = "Kernel command line";
}; };
commandLineDtbNode = mkOption { commandLineDtbNode = mkOption {
type = types.enum [ "bootargs" "bootargs-override" ]; type = types.enum [
"bootargs"
"bootargs-override"
];
default = "bootargs"; default = "bootargs";
description = "Kernel command line's devicetree node"; description = "Kernel command line's devicetree node";
}; };
imageType = mkOption { imageType = mkOption {
type = types.enum [ "primary" "secondary" ]; type = types.enum [
"primary"
"secondary"
];
default = "primary"; default = "primary";
}; };
imageFormat = mkOption { imageFormat = mkOption {
type = types.enum ["fit" "uimage"]; type = types.enum [
"fit"
"uimage"
];
default = "uimage"; default = "uimage";
}; };
tftp = { tftp = {
@ -83,7 +92,7 @@ in {
}; };
# These names match the uboot environment variables. I reserve # These names match the uboot environment variables. I reserve
# the right to change them if I think of better ones. # the right to change them if I think of better ones.
ipaddr = mkOption { ipaddr = mkOption {
type = types.str; type = types.str;
description = '' description = ''
Our IP address to use when creating scripts to Our IP address to use when creating scripts to

View File

@ -85,10 +85,13 @@ in {
}; };
}; };
filesystem = dir { filesystem = dir {
bin = dir ({ bin = dir (
busybox = symlink "${busybox}/bin/busybox"; {
sh = symlink "${busybox}/bin/busybox"; busybox = symlink "${busybox}/bin/busybox";
} // makeLinks); sh = symlink "${busybox}/bin/busybox";
}
// makeLinks
);
}; };
}; };
} }

View File

@ -5,14 +5,13 @@
## you want to run on it, and would usually be set in the "device" file: ## you want to run on it, and would usually be set in the "device" file:
## :file:`devices/manuf-model/default.nix` ## :file:`devices/manuf-model/default.nix`
{ lib, ... }:
{ lib, ...}:
let let
inherit (lib) mkOption types ; inherit (lib) mkOption types;
in { in
{
options = { options = {
boot = { boot = { };
};
hardware = { hardware = {
dts = { dts = {
src = mkOption { src = mkOption {
@ -26,7 +25,7 @@ in {
''; '';
}; };
includes = mkOption { includes = mkOption {
default = []; default = [ ];
description = "List of directories to search for DTS includes (.dtsi files)"; description = "List of directories to search for DTS includes (.dtsi files)";
type = types.listOf types.path; type = types.listOf types.path;
}; };

View File

@ -14,13 +14,16 @@ in {
run = "exec ${pkgs.devout}/bin/devout /run/devout.sock 4"; run = "exec ${pkgs.devout}/bin/devout /run/devout.sock 4";
}; };
coldplug = oneshot { coldplug = oneshot {
name ="coldplug"; name = "coldplug";
# would love to know what mdevd-coldplug/udevadm trigger does # would love to know what mdevd-coldplug/udevadm trigger does
# that this doesn't # that this doesn't
up = '' up = ''
for i in $(find /sys -name uevent); do ( echo change > $i ) ; done for i in $(find /sys -name uevent); do ( echo change > $i ) ; done
''; '';
dependencies = [devout mdevd]; dependencies = [
devout
mdevd
];
}; };
}; };
}; };

View File

@ -1,8 +1,8 @@
{ {
config config,
, pkgs pkgs,
, lib lib,
, ... ...
}: }:
let let
inherit (lib) mkOption types concatStringsSep; inherit (lib) mkOption types concatStringsSep;
@ -22,7 +22,7 @@ in
# but only part of one. # but only part of one.
kernel = mkOption { kernel = mkOption {
type = types.package; type = types.package;
internal = true; internal = true;
description = '' description = ''
kernel kernel
****** ******
@ -42,7 +42,7 @@ in
}; };
dtb = mkOption { dtb = mkOption {
type = types.package; type = types.package;
internal = true; internal = true;
description = '' description = ''
dtb dtb
*** ***
@ -52,7 +52,7 @@ in
}; };
uimage = mkOption { uimage = mkOption {
type = types.package; type = types.package;
internal = true; internal = true;
description = '' description = ''
uimage uimage
****** ******
@ -68,7 +68,7 @@ in
}; };
manifest = mkOption { manifest = mkOption {
type = types.package; type = types.package;
internal = true; internal = true;
description = '' description = ''
Debugging aid. JSON rendition of config.filesystem, on Debugging aid. JSON rendition of config.filesystem, on
which can run "nix-store -q --tree" on it and find which can run "nix-store -q --tree" on it and find

View File

@ -1,8 +1,4 @@
{ { config, lib, ... }:
config
, lib
, ...
}:
let let
inherit (lib) mkIf mkEnableOption; # types concatStringsSep; inherit (lib) mkIf mkEnableOption; # types concatStringsSep;
in { in {

View File

@ -1,8 +1,8 @@
{ {
config config,
, pkgs pkgs,
, lib lib,
, ... ...
}: }:
let let
inherit (pkgs) liminix; inherit (pkgs) liminix;

View File

@ -24,8 +24,6 @@
EXT4_FS = "y"; EXT4_FS = "y";
EXT4_USE_FOR_EXT2 = "y"; EXT4_USE_FOR_EXT2 = "y";
FS_ENCRYPTION = "y"; FS_ENCRYPTION = "y";
}; };
}; };
} }

View File

@ -17,10 +17,16 @@ let
concatStrings concatStringsSep mapAttrsToList mkOption types; concatStrings concatStringsSep mapAttrsToList mkOption types;
inherit (builtins) toString; inherit (builtins) toString;
inherit (pkgs.pseudofile) dir; inherit (pkgs.pseudofile) dir;
passwd-file = 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" ) let
config.users; lines = mapAttrsToList (
in concatStrings lines; 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;
in
concatStrings lines;
group-file = group-file =
let lines = mapAttrsToList let lines = mapAttrsToList
(name: {gid, usernames ? []}: (name: {gid, usernames ? []}:

View File

@ -4,7 +4,7 @@ let
inherit (pkgs) stdenv wireless-regdb; inherit (pkgs) stdenv wireless-regdb;
regulatory = stdenv.mkDerivation { regulatory = stdenv.mkDerivation {
name = "regulatory.db"; name = "regulatory.db";
phases = ["installPhase"]; phases = [ "installPhase" ];
installPhase = '' installPhase = ''
mkdir -p $out mkdir -p $out
cp ${wireless-regdb}/lib/firmware/regulatory.db $out/ cp ${wireless-regdb}/lib/firmware/regulatory.db $out/

View File

@ -46,7 +46,7 @@ in
extraPkgs // { extraPkgs // {
# liminix library functions # liminix library functions
lim = { lim = {
parseInt = s : (builtins.fromTOML "r=${s}").r; parseInt = s: (builtins.fromTOML "r=${s}").r;
}; };
# keep these alphabetical # keep these alphabetical
@ -74,7 +74,6 @@ extraPkgs // {
# should texinfo be in nativeBuildInputs instead of # should texinfo be in nativeBuildInputs instead of
# buildInputs? # buildInputs?
texinfo = null; texinfo = null;
}; };
# luarocks wants a cross-compiled cmake (which seems like a bug, # luarocks wants a cross-compiled cmake (which seems like a bug,
@ -186,9 +185,12 @@ extraPkgs // {
# done. Do it the ugly way.. # done. Do it the ugly way..
postPatch = postPatch =
o.postPatch o.postPatch
+ (with final; + (
lib.optionalString (stdenv.buildPlatform != stdenv.hostPlatform) with final;
"\nsed -i.bak 's/linux.*-mips/linux-mops/' Configure\n"); lib.optionalString (
stdenv.buildPlatform != stdenv.hostPlatform
) "\nsed -i.bak 's/linux.*-mips/linux-mops/' Configure\n"
);
}); });
pppBuild = prev.ppp; pppBuild = prev.ppp;
@ -200,13 +202,12 @@ extraPkgs // {
}); in q.override { nixosTestRunner = true; sdlSupport = false; }; }); in q.override { nixosTestRunner = true; sdlSupport = false; };
rsyncSmall = rsyncSmall =
let r = prev.rsync.overrideAttrs(o: { let
configureFlags = o.configureFlags ++ [ r = prev.rsync.overrideAttrs (o: {
"--disable-openssl" configureFlags = o.configureFlags ++ [ "--disable-openssl" ];
]; });
}); in
in r.override { openssl = null; }; r.override { openssl = null; };
inherit s6; inherit s6;
s6-linux-init = prev.s6-linux-init.override { s6-linux-init = prev.s6-linux-init.override {
@ -224,14 +225,14 @@ extraPkgs // {
ubootQemuAarch64 = final.buildUBoot { ubootQemuAarch64 = final.buildUBoot {
defconfig = "qemu_arm64_defconfig"; defconfig = "qemu_arm64_defconfig";
extraMeta.platforms = ["aarch64-linux"]; extraMeta.platforms = [ "aarch64-linux" ];
filesToInstall = ["u-boot.bin"]; filesToInstall = [ "u-boot.bin" ];
}; };
ubootQemuArm = final.buildUBoot { ubootQemuArm = final.buildUBoot {
defconfig = "qemu_arm_defconfig"; defconfig = "qemu_arm_defconfig";
extraMeta.platforms = ["armv7l-linux"]; extraMeta.platforms = [ "armv7l-linux" ];
filesToInstall = ["u-boot.bin"]; filesToInstall = [ "u-boot.bin" ];
extraConfig = '' extraConfig = ''
CONFIG_CMD_UBI=y CONFIG_CMD_UBI=y
CONFIG_CMD_UBIFS=y CONFIG_CMD_UBIFS=y
@ -245,8 +246,8 @@ extraPkgs // {
ubootQemuMips = final.buildUBoot { ubootQemuMips = final.buildUBoot {
defconfig = "malta_defconfig"; defconfig = "malta_defconfig";
extraMeta.platforms = ["mips-linux"]; extraMeta.platforms = [ "mips-linux" ];
filesToInstall = ["u-boot.bin"]; filesToInstall = [ "u-boot.bin" ];
# define the prompt to be the same as arm{32,64} so # define the prompt to be the same as arm{32,64} so
# we can use the same expect script for both # we can use the same expect script for both
extraPatches = [ ./pkgs/u-boot/0002-virtio-init-for-malta.patch ]; extraPatches = [ ./pkgs/u-boot/0002-virtio-init-for-malta.patch ];
@ -268,7 +269,7 @@ extraPkgs // {
CONFIG_MIPS_BOOT_FDT=y CONFIG_MIPS_BOOT_FDT=y
CONFIG_OF_LIBFDT=y CONFIG_OF_LIBFDT=y
CONFIG_OF_STDOUT_VIA_ALIAS=y CONFIG_OF_STDOUT_VIA_ALIAS=y
''; '';
}; };
libusb1 = prev.libusb1.override { libusb1 = prev.libusb1.override {
@ -283,5 +284,4 @@ extraPkgs // {
translateManpages = false; translateManpages = false;
capabilitiesSupport = false; capabilitiesSupport = false;
}; };
} }

View File

@ -1,10 +1,10 @@
{ {
fennel fennel,
, stdenv stdenv,
, linotify linotify,
, lua lua,
, lualinux lualinux,
, cpio cpio,
}: }:
let pname = "anoia"; let pname = "anoia";
in stdenv.mkDerivation { in stdenv.mkDerivation {

View File

@ -1,7 +1,4 @@
{ { callPackage, lib }:
callPackage
, lib
}:
let let
typeChecked = caller: type: value: typeChecked = caller: type: value:
let let
@ -11,11 +8,11 @@ let
in (mergeDefinitions [] type' defs).mergedValue; in (mergeDefinitions [] type' defs).mergedValue;
in { in {
liminix = { liminix = {
builders = { builders = {
squashfs = callPackage ./liminix-tools/builders/squashfs.nix {}; squashfs = callPackage ./liminix-tools/builders/squashfs.nix { };
dtb = callPackage ./kernel/dtb.nix {}; dtb = callPackage ./kernel/dtb.nix { };
uimage = callPackage ./kernel/uimage.nix {}; uimage = callPackage ./kernel/uimage.nix { };
kernel = callPackage ./kernel {}; kernel = callPackage ./kernel { };
}; };
callService = path : parameters : callService = path : parameters :
let pkg = callPackage path {}; let pkg = callPackage path {};
@ -49,71 +46,71 @@ in {
}; };
inherit typeChecked; inherit typeChecked;
}; };
networking = callPackage ./liminix-tools/networking {}; networking = callPackage ./liminix-tools/networking { };
services = callPackage ./liminix-tools/services {}; services = callPackage ./liminix-tools/services { };
}; };
# please keep the rest of this list alphabetised :-) # please keep the rest of this list alphabetised :-)
anoia = callPackage ./anoia {}; anoia = callPackage ./anoia { };
devout = callPackage ./devout {}; devout = callPackage ./devout { };
fennel = callPackage ./fennel {}; fennel = callPackage ./fennel { };
fennelrepl = callPackage ./fennelrepl {}; fennelrepl = callPackage ./fennelrepl { };
firewallgen = callPackage ./firewallgen {}; firewallgen = callPackage ./firewallgen { };
firmware-utils = callPackage ./firmware-utils {}; firmware-utils = callPackage ./firmware-utils { };
gen_init_cpio = callPackage ./gen_init_cpio {}; gen_init_cpio = callPackage ./gen_init_cpio { };
go-l2tp = callPackage ./go-l2tp {}; go-l2tp = callPackage ./go-l2tp { };
hi = callPackage ./hi {}; hi = callPackage ./hi { };
ifwait = callPackage ./ifwait {}; ifwait = callPackage ./ifwait { };
initramfs-peek = callPackage ./initramfs-peek {}; initramfs-peek = callPackage ./initramfs-peek { };
kernel-backport = callPackage ./kernel-backport {}; kernel-backport = callPackage ./kernel-backport { };
kmodloader = callPackage ./kmodloader {}; kmodloader = callPackage ./kmodloader { };
levitate = callPackage ./levitate {}; levitate = callPackage ./levitate { };
libubootenv = callPackage ./libubootenv {}; libubootenv = callPackage ./libubootenv { };
linotify = callPackage ./linotify {}; linotify = callPackage ./linotify { };
lualinux = callPackage ./lualinux {}; lualinux = callPackage ./lualinux { };
# we need to build real lzma instead of using xz, because the lzma # we need to build real lzma instead of using xz, because the lzma
# decoder in u-boot doesn't understand streaming lzma archives # decoder in u-boot doesn't understand streaming lzma archives
# ("Stream with EOS marker is not supported") and xz can't create # ("Stream with EOS marker is not supported") and xz can't create
# non-streaming ones. See # non-streaming ones. See
# https://sourceforge.net/p/squashfs/mailman/message/26599379/ # https://sourceforge.net/p/squashfs/mailman/message/26599379/
lzma = callPackage ./lzma {}; lzma = callPackage ./lzma { };
mac80211 = callPackage ./mac80211 {}; mac80211 = callPackage ./mac80211 { };
zyxel-bootconfig = callPackage ./zyxel-bootconfig {}; zyxel-bootconfig = callPackage ./zyxel-bootconfig { };
min-collect-garbage = callPackage ./min-collect-garbage {}; min-collect-garbage = callPackage ./min-collect-garbage { };
min-copy-closure = callPackage ./min-copy-closure {}; min-copy-closure = callPackage ./min-copy-closure { };
minisock = callPackage ./minisock {}; minisock = callPackage ./minisock { };
nellie = callPackage ./nellie {}; nellie = callPackage ./nellie { };
netlink-lua = callPackage ./netlink-lua {}; netlink-lua = callPackage ./netlink-lua { };
odhcp-script = callPackage ./odhcp-script {}; odhcp-script = callPackage ./odhcp-script { };
odhcp6c = callPackage ./odhcp6c {}; odhcp6c = callPackage ./odhcp6c { };
openwrt = callPackage ./openwrt {}; openwrt = callPackage ./openwrt { };
ppp = callPackage ./ppp {}; ppp = callPackage ./ppp { };
pppoe = callPackage ./pppoe {}; pppoe = callPackage ./pppoe { };
preinit = callPackage ./preinit {}; preinit = callPackage ./preinit { };
pseudofile = callPackage ./pseudofile {}; pseudofile = callPackage ./pseudofile { };
routeros = callPackage ./routeros {}; routeros = callPackage ./routeros { };
run-liminix-vm = callPackage ./run-liminix-vm {}; run-liminix-vm = callPackage ./run-liminix-vm { };
s6-init-bin = callPackage ./s6-init-bin {}; s6-init-bin = callPackage ./s6-init-bin { };
s6-rc-database = callPackage ./s6-rc-database {}; s6-rc-database = callPackage ./s6-rc-database { };
s6-rc-up-tree = callPackage ./s6-rc-up-tree {}; s6-rc-up-tree = callPackage ./s6-rc-up-tree { };
# schnapps is written by Turris and provides a high-level interface # schnapps is written by Turris and provides a high-level interface
# to btrfs snapshots. It may be useful on the Turris Omnia to # to btrfs snapshots. It may be useful on the Turris Omnia to
# install Liminix while retaining the ability to rollback to the # install Liminix while retaining the ability to rollback to the
# vendor OS, or even to derisk Liminix updates on that device # vendor OS, or even to derisk Liminix updates on that device
schnapps = callPackage ./schnapps {}; schnapps = callPackage ./schnapps { };
serviceFns = callPackage ./service-fns {}; serviceFns = callPackage ./service-fns { };
swconfig = callPackage ./swconfig {}; swconfig = callPackage ./swconfig { };
systemconfig = callPackage ./systemconfig {}; systemconfig = callPackage ./systemconfig { };
tufted = callPackage ./tufted {}; tufted = callPackage ./tufted { };
uevent-watch = callPackage ./uevent-watch {}; uevent-watch = callPackage ./uevent-watch { };
usb-modeswitch = callPackage ./usb-modeswitch {}; usb-modeswitch = callPackage ./usb-modeswitch { };
writeAshScript = callPackage ./write-ash-script {}; writeAshScript = callPackage ./write-ash-script { };
writeAshScriptBin = callPackage ./write-ash-script/bin.nix {}; writeAshScriptBin = callPackage ./write-ash-script/bin.nix { };
writeFennel = callPackage ./write-fennel {}; writeFennel = callPackage ./write-fennel { };
writeFennelScript = callPackage ./write-fennel-script {}; writeFennelScript = callPackage ./write-fennel-script { };
} }

View File

@ -1,10 +1,11 @@
{ nellie {
, writeFennel nellie,
, anoia writeFennel,
, fennel anoia,
, stdenv fennel,
, fennelrepl stdenv,
, lualinux fennelrepl,
lualinux,
}: }:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "devout"; name = "devout";

View File

@ -1,7 +1,7 @@
{ {
stdenv stdenv,
, lua lua,
, fetchFromSourcehut fetchFromSourcehut,
}: }:
let pname = "fennel"; let pname = "fennel";
in stdenv.mkDerivation { in stdenv.mkDerivation {

View File

@ -1,7 +1,7 @@
{ {
buildGoModule buildGoModule,
, fetchFromGitHub fetchFromGitHub,
, ppp ppp,
}: }:
buildGoModule rec { buildGoModule rec {
@ -12,7 +12,7 @@ buildGoModule rec {
repo = "go-l2tp"; repo = "go-l2tp";
owner = "katalix"; owner = "katalix";
rev = "570d763"; rev = "570d763";
hash= "sha256-R8ImKPkPBC+FvzKOBEZ3VxQ12dEjtfRa7AH94xMsAGA="; hash = "sha256-R8ImKPkPBC+FvzKOBEZ3VxQ12dEjtfRa7AH94xMsAGA=";
}; };
patchPhase = '' patchPhase = ''
@ -23,5 +23,4 @@ buildGoModule rec {
doCheck = false; doCheck = false;
vendorHash = "sha256-hOkhJhToN/VJwjQmnQJSPGz26/YDR2Ch+1yeW51OF+U="; vendorHash = "sha256-hOkhJhToN/VJwjQmnQJSPGz26/YDR2Ch+1yeW51OF+U=";
} }

View File

@ -1,9 +1,15 @@
{ netlink-lua {
, writeFennelScript netlink-lua,
, runCommand writeFennelScript,
, anoia runCommand,
anoia,
}: }:
runCommand "ifwait" {} '' runCommand "ifwait" { } ''
mkdir -p $out/bin mkdir -p $out/bin
cp -p ${writeFennelScript "ifwait" [anoia netlink-lua] ./ifwait.fnl} $out/bin/ifwait cp -p ${
writeFennelScript "ifwait" [
anoia
netlink-lua
] ./ifwait.fnl
} $out/bin/ifwait
'' ''

View File

@ -1,14 +1,14 @@
{ {
busybox busybox,
, pkgsBuildBuild pkgsBuildBuild,
, runCommand runCommand,
, cpio cpio,
, writeReferencesToFile writeReferencesToFile,
, writeScript writeScript,
} : }:
let let
inherit (pkgsBuildBuild) gen_init_cpio; inherit (pkgsBuildBuild) gen_init_cpio;
script = writeScript "init" '' script = writeScript "init" ''
#!/bin/sh #!/bin/sh
exec >/dev/console exec >/dev/console
echo Running in initramfs echo Running in initramfs

View File

@ -1,17 +1,18 @@
{ stdenv {
, git stdenv,
, python2 git,
, which python2,
, fetchgit which,
, fetchFromGitHub fetchgit,
, coccinelle fetchFromGitHub,
coccinelle,
}: }:
let let
donorTree = fetchFromGitHub { donorTree = fetchFromGitHub {
owner = "torvalds"; owner = "torvalds";
repo = "linux"; repo = "linux";
rev = "e2c1a934fd8e4288e7a32f4088ceaccf469eb74c"; # 5.15.94 rev = "e2c1a934fd8e4288e7a32f4088ceaccf469eb74c"; # 5.15.94
hash= "sha256-Jg3EgL86CseuzYMAlUG3CDWPCo8glMSIZs10l7EuhWI="; hash = "sha256-Jg3EgL86CseuzYMAlUG3CDWPCo8glMSIZs10l7EuhWI=";
}; };
backports = stdenv.mkDerivation { backports = stdenv.mkDerivation {
name = "linux-backports"; name = "linux-backports";

View File

@ -1,29 +1,38 @@
{ stdenv {
, buildPackages stdenv,
, writeText buildPackages,
, lib writeText,
lib,
, config config,
, src src,
, version ? "0" version ? "0",
, extraPatchPhase ? "echo" extraPatchPhase ? "echo",
, targets ? ["vmlinux"] targets ? [ "vmlinux" ],
} : }:
let let
writeConfig = import ./write-kconfig.nix { inherit lib writeText; }; writeConfig = import ./write-kconfig.nix { inherit lib writeText; };
kconfigFile = writeConfig "kconfig" config; kconfigFile = writeConfig "kconfig" config;
arch = stdenv.hostPlatform.linuxArch; arch = stdenv.hostPlatform.linuxArch;
targetNames = map baseNameOf targets; targetNames = map baseNameOf targets;
inherit lib; in inherit lib;
in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "kernel"; name = "kernel";
inherit src extraPatchPhase; inherit src extraPatchPhase;
hardeningDisable = ["all"]; hardeningDisable = [ "all" ];
nativeBuildInputs = [buildPackages.stdenv.cc] ++ nativeBuildInputs =
(with buildPackages.pkgs; [ [ buildPackages.stdenv.cc ]
rsync bc bison flex pkg-config ++ (with buildPackages.pkgs; [
openssl ncurses.all perl rsync
]); bc
bison
flex
pkg-config
openssl
ncurses.all
perl
]);
CC = "${stdenv.cc.bintools.targetPrefix}gcc"; CC = "${stdenv.cc.bintools.targetPrefix}gcc";
HOSTCC = with buildPackages.pkgs; HOSTCC = with buildPackages.pkgs;
"gcc -I${openssl}/include -I${ncurses}/include"; "gcc -I${openssl}/include -I${ncurses}/include";

View File

@ -1,12 +1,12 @@
{ {
liminix liminix,
, lib lib,
, targets ? [] targets ? [ ],
, kernel ? null kernel ? null,
, runCommand runCommand,
, pkgsBuildBuild pkgsBuildBuild,
, dependencies ? [] dependencies ? [ ],
} : }:
let let
inherit (liminix.services) oneshot; inherit (liminix.services) oneshot;
inherit (lib) concatStringsSep; inherit (lib) concatStringsSep;

View File

@ -1,14 +1,14 @@
{ {
writeScriptBin writeScriptBin,
, writeScript writeScript,
, systemconfig systemconfig,
, execline execline,
, lib lib,
, config ? {} config ? { },
, liminix liminix,
, pseudofile pseudofile,
, pkgs pkgs,
} : }:
let let
inherit (pseudofile) dir symlink; inherit (pseudofile) dir symlink;
inherit (liminix.services) oneshot; inherit (liminix.services) oneshot;
@ -16,7 +16,7 @@ let
newRoot = "/run/maintenance"; newRoot = "/run/maintenance";
sysconfig = sysconfig =
let let
doChroot = writeScript "exec" '' doChroot = writeScript "exec" ''
#!${execline}/bin/execlineb -P #!${execline}/bin/execlineb -P
cd ${newRoot} cd ${newRoot}
foreground { mount --move ${newRoot} / } foreground { mount --move ${newRoot} / }

View File

@ -1,9 +1,10 @@
{ stdenv {
, cmake stdenv,
, zlib cmake,
, libyaml zlib,
, fetchFromGitHub libyaml,
} : fetchFromGitHub,
}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "libubootenv"; name = "libubootenv";
src = fetchFromGitHub { src = fetchFromGitHub {

View File

@ -15,5 +15,4 @@ in lua.pkgs.buildLuaPackage {
mkdir -p "$out/lib/lua/${lua.luaversion}" mkdir -p "$out/lib/lua/${lua.luaversion}"
cp inotify.so "$out/lib/lua/${lua.luaversion}/" cp inotify.so "$out/lib/lua/${lua.luaversion}/"
''; '';
} }

View File

@ -21,5 +21,4 @@ in lua.pkgs.buildLuaPackage {
mkdir -p "$out/lib/lua/${lua.luaversion}" mkdir -p "$out/lib/lua/${lua.luaversion}"
cp ${pname}.so "$out/lib/lua/${lua.luaversion}/" cp ${pname}.so "$out/lib/lua/${lua.luaversion}/"
''; '';
} }

View File

@ -1,7 +1,4 @@
{ { stdenv, fetchurl }:
stdenv
, fetchurl
}:
stdenv.mkDerivation { stdenv.mkDerivation {
pname = "lzma"; pname = "lzma";
version = "4.32.7"; version = "4.32.7";

View File

@ -1,17 +1,17 @@
# make out-of-tree modules given a backported kernel source tree # make out-of-tree modules given a backported kernel source tree
{ {
extraConfig ? {} extraConfig ? { },
, drivers ? [ ] drivers ? [ ],
, kernel-backport kernel-backport,
, stdenv stdenv,
, writeText writeText,
, klibBuild ? null klibBuild ? null,
, buildPackages buildPackages,
, fetchFromGitHub fetchFromGitHub,
, liminix liminix,
, lib lib,
}: }:
let let
arch = stdenv.hostPlatform.linuxArch; arch = stdenv.hostPlatform.linuxArch;

View File

@ -1,9 +1,10 @@
{ {
stdenv stdenv,
, nix nix,
, cpio cpio,
, openssh openssh,
}: stdenv.mkDerivation { }:
stdenv.mkDerivation {
name = "min-copy-closure"; name = "min-copy-closure";
buildInputs = [ ]; buildInputs = [ ];
propagatedBuildInputs = [ cpio openssh nix ]; propagatedBuildInputs = [ cpio openssh nix ];

View File

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

View File

@ -1,7 +1,9 @@
{ stdenv {
, cmake stdenv,
, fetchFromGitHub cmake,
, ...} : fetchFromGitHub,
...
}:
# let switchDotH = buildPackages.fetchurl { # let switchDotH = buildPackages.fetchurl {
# url = "https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob_plain;f=target/linux/generic/files/include/uapi/linux/switch.h;hb=99a188828713d6ff9c541590b08d4e63ef52f6d7"; # url = "https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob_plain;f=target/linux/generic/files/include/uapi/linux/switch.h;hb=99a188828713d6ff9c541590b08d4e63ef52f6d7";
# sha256 = "15kmhhcpd84y4f45rf8zai98c61jyvkc37p90pcxirna01x33wi8"; # sha256 = "15kmhhcpd84y4f45rf8zai98c61jyvkc37p90pcxirna01x33wi8";

View File

@ -1,7 +1,4 @@
{ { fetchFromGitHub, pkgsBuildBuild }:
fetchFromGitHub
, pkgsBuildBuild
}:
let let
src = fetchFromGitHub { src = fetchFromGitHub {
name = "openwrt-source"; name = "openwrt-source";
@ -10,7 +7,7 @@ let
rev = "refs/tags/v23.05.2"; rev = "refs/tags/v23.05.2";
hash = "sha256-kP+cSOB6LiOMWs7g+ji7P7ehiDYDwRdmT4R5jSzw6K4="; hash = "sha256-kP+cSOB6LiOMWs7g+ji7P7ehiDYDwRdmT4R5jSzw6K4=";
}; };
doPatch = family : '' doPatch = family: ''
cp -av ${src}/target/linux/generic/files/* . cp -av ${src}/target/linux/generic/files/* .
chmod -R u+w . chmod -R u+w .
cp -av ${src}/target/linux/${family}/files/* . cp -av ${src}/target/linux/${family}/files/* .

View File

@ -1,8 +1,8 @@
{ {
fetchFromGitHub fetchFromGitHub,
, stdenv stdenv,
, autoreconfHook autoreconfHook,
, substituteAll substituteAll,
# , openssl # , openssl
}: stdenv.mkDerivation { }: stdenv.mkDerivation {
pname = "ppp"; pname = "ppp";
@ -35,6 +35,4 @@
"man" "man"
"dev" "dev"
]; ];
} }

View File

@ -1,7 +1,9 @@
{ lib {
, stdenv lib,
, fetchFromGitHub stdenv,
, ppp } : fetchFromGitHub,
ppp,
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "rp-pppoe"; pname = "rp-pppoe";
version = "3.15"; version = "3.15";
@ -20,7 +22,9 @@ stdenv.mkDerivation rec {
export PPPD=${ppp}/sbin/pppd export PPPD=${ppp}/sbin/pppd
''; '';
configureFlags = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ "rpppoe_cv_pack_bitfields=rev" ]; configureFlags = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
"rpppoe_cv_pack_bitfields=rev"
];
postConfigure = '' postConfigure = ''
sed -i Makefile -e 's@DESTDIR)/etc/ppp@out)/etc/ppp@' sed -i Makefile -e 's@DESTDIR)/etc/ppp@out)/etc/ppp@'

View File

@ -1,12 +1,9 @@
{ { stdenv, gdb }:
stdenv
, gdb
}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "preinit"; name = "preinit";
src = ./.; src = ./.;
# NIX_DEBUG=2; # NIX_DEBUG=2;
hardeningDisable = [ "all" ]; hardeningDisable = [ "all" ];
postBuild = '' postBuild = ''
@ -14,8 +11,8 @@ stdenv.mkDerivation {
ls -l preinit ls -l preinit
''; '';
makeFlags = ["preinit"]; makeFlags = [ "preinit" ];
stripAllList = ["bin"]; stripAllList = [ "bin" ];
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/bin
cp preinit $out/bin cp preinit $out/bin

View File

@ -1,7 +1,4 @@
{ { writeText, lib }:
writeText
, lib
}:
let let
inherit (lib.attrsets) mapAttrsToList; inherit (lib.attrsets) mapAttrsToList;
visit = prefix: attrset: visit = prefix: attrset:

View File

@ -1,9 +1,9 @@
{ {
stdenv stdenv,
, python3 python3,
, qemu qemu,
, fetchzip fetchzip,
, writeShellApplication writeShellApplication,
}: }:
let let
chr-image = fetchzip { chr-image = fetchzip {
@ -14,7 +14,7 @@ let
ros-exec-script = stdenv.mkDerivation { ros-exec-script = stdenv.mkDerivation {
name = "ros-exec-script"; name = "ros-exec-script";
src = ./.; src = ./.;
buildInputs = [python3]; buildInputs = [ python3 ];
buildPhase = ":"; buildPhase = ":";
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/bin

View File

@ -1,18 +1,19 @@
{ {
qemuLim qemuLim,
, socat socat,
, writeShellScript writeShellScript,
, writeFennel writeFennel,
, runCommand runCommand,
, lib lib,
, lua lua,
, pkgsBuildBuild pkgsBuildBuild,
}: let }:
let
run-liminix-vm = pkgsBuildBuild.writeFennel "run-liminix-vm" { run-liminix-vm = pkgsBuildBuild.writeFennel "run-liminix-vm" {
packages = [ qemuLim lua.pkgs.luaposix lua.pkgs.fennel ]; packages = [ qemuLim lua.pkgs.luaposix lua.pkgs.fennel ];
} ./run-liminix-vm.fnl; } ./run-liminix-vm.fnl;
connect = writeShellScript "connect-vm" '' connect = writeShellScript "connect-vm" ''
export PATH="${lib.makeBinPath [socat]}:$PATH" export PATH="${lib.makeBinPath [ socat ]}:$PATH"
socat -,raw,echo=0,icanon=0,isig=0,icrnl=0,escape=0x0f unix-connect:$1 socat -,raw,echo=0,icanon=0,isig=0,icrnl=0,escape=0x0f unix-connect:$1
''; '';
in runCommand "vm" {} '' in runCommand "vm" {} ''

View File

@ -1,10 +1,10 @@
{ {
s6-linux-init s6-linux-init,
, execline execline,
, writeScript writeScript,
, stdenvNoCC stdenvNoCC,
, lib lib,
, s6-rc s6-rc,
}: }:
let let
hpr = name: arg: writeScript name '' hpr = name: arg: writeScript name ''

View File

@ -2,11 +2,11 @@
# config.services and calling s6-rc-compile on them # config.services and calling s6-rc-compile on them
{ {
stdenvNoCC stdenvNoCC,
, buildPackages buildPackages,
, closureInfo closureInfo,
, writeText writeText,
, services ? [] services ? [ ],
}: }:
let closure-info = closureInfo { rootPaths = services; }; let closure-info = closureInfo { rootPaths = services; };
in stdenvNoCC.mkDerivation { in stdenvNoCC.mkDerivation {

View File

@ -1,17 +1,17 @@
{ {
stdenv stdenv,
, fetchFromGitLab fetchFromGitLab,
, makeWrapper makeWrapper,
, btrfs-progs btrfs-progs,
, util-linux-small util-linux-small,
, lib lib,
}: }:
let search_path = lib.makeBinPath [btrfs-progs util-linux-small]; let search_path = lib.makeBinPath [btrfs-progs util-linux-small];
in stdenv.mkDerivation { in stdenv.mkDerivation {
pname = "schnapps"; pname = "schnapps";
version = "2.13.0"; version = "2.13.0";
src =fetchFromGitLab { src = fetchFromGitLab {
domain = "gitlab.nic.cz"; domain = "gitlab.nic.cz";
owner = "turris"; owner = "turris";
repo = "schnapps"; repo = "schnapps";

View File

@ -1,4 +1,4 @@
{writeText}: { writeText }:
writeText "service-fns.sh" '' writeText "service-fns.sh" ''
output() { cat $1/.outputs/$2; } output() { cat $1/.outputs/$2; }
output_word() { output_word() {

View File

@ -14,8 +14,8 @@ in stdenv.mkDerivation {
name = "swconfig"; name = "swconfig";
buildInputs = [ buildPackages.pkg-config ]; buildInputs = [ buildPackages.pkg-config ];
nativeBuildInputs = [ libnl ]; nativeBuildInputs = [ libnl ];
CFLAGS="-O2 -Ifrom_kernel -I${libnl.dev}/include/libnl3"; CFLAGS = "-O2 -Ifrom_kernel -I${libnl.dev}/include/libnl3";
LDFLAGS="-L${libnl.out}/lib"; LDFLAGS = "-L${libnl.out}/lib";
patchPhase = '' patchPhase = ''
mkdir -p from_kernel/linux mkdir -p from_kernel/linux

View File

@ -5,12 +5,12 @@
# they should contain # they should contain
{ {
writeText writeText,
, writeFennelScript writeFennelScript,
, lib lib,
, s6-init-bin s6-init-bin,
, closureInfo closureInfo,
, stdenv stdenv,
}: }:
let let
inherit (lib.attrsets) mapAttrsToList; inherit (lib.attrsets) mapAttrsToList;

View File

@ -1,8 +1,8 @@
{ {
lua5_3 lua5_3,
, stdenv stdenv,
, makeWrapper makeWrapper,
} : }:
let let
lua = lua5_3.withPackages (ps: with ps; [ lua = lua5_3.withPackages (ps: with ps; [
luasocket luaposix fennel luasocket luaposix fennel

View File

@ -1,11 +1,12 @@
{ nellie {
, lualinux nellie,
, writeFennel lualinux,
, anoia writeFennel,
, fennel anoia,
, stdenv fennel,
, fennelrepl stdenv,
, s6-rc-up-tree fennelrepl,
s6-rc-up-tree,
}: }:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "uevent-watch"; name = "uevent-watch";

View File

@ -1,9 +1,10 @@
# usb modeswitch without udev, tcl, coreutils, bash dependencies # usb modeswitch without udev, tcl, coreutils, bash dependencies
{ stdenv {
, lib stdenv,
, fetchurl lib,
, pkg-config fetchurl,
, libusb1 pkg-config,
libusb1,
}: }:
let let
pname = "usb-modeswitch"; pname = "usb-modeswitch";
@ -12,7 +13,7 @@ in stdenv.mkDerivation {
inherit pname version; inherit pname version;
src = fetchurl { src = fetchurl {
url = "http://www.draisberghof.de/usb_modeswitch/${pname}-${version}.tar.bz2"; url = "http://www.draisberghof.de/usb_modeswitch/${pname}-${version}.tar.bz2";
sha256 = "18wbbxc5cfsmikba0msdvd5qlaga27b32nhrzicyd9mdddp265f2"; sha256 = "18wbbxc5cfsmikba0msdvd5qlaga27b32nhrzicyd9mdddp265f2";
}; };
@ -34,6 +35,6 @@ in stdenv.mkDerivation {
meta = { meta = {
license = lib.licenses.gpl2; license = lib.licenses.gpl2;
maintainers = []; maintainers = [ ];
}; };
} }

View File

@ -1,13 +1,15 @@
{ writeScript, lib }:
name:
{ {
writeScript runtimeInputs ? [ ],
, lib }:
} text:
: name : { runtimeInputs ? [] } : text : writeScript name '' writeScript name ''
#!/bin/sh #!/bin/sh
set -o errexit set -o errexit
set -o nounset set -o nounset
set -o pipefail set -o pipefail
export PATH="${lib.makeBinPath runtimeInputs}:$PATH" export PATH="${lib.makeBinPath runtimeInputs}:$PATH"
${text} ${text}
'' ''

View File

@ -1,5 +1,3 @@
{ writeFennel { writeFennel, stdenv }:
, stdenv name: packages: source:
}:
name : packages : source :
writeFennel name { inherit packages; } source writeFennel name { inherit packages; } source

View File

@ -1,38 +1,38 @@
{ {
lua lua,
, lib lib,
, fennel fennel,
, stdenv stdenv,
}: }:
name : name:
{ {
packages ? [], packages ? [ ],
correlate ? false, correlate ? false,
mainFunction ? null mainFunction ? null,
} : source : }:
let source:
luapath = builtins.map let
(f: luapath = builtins.map (
"${f}/share/lua/${lua.luaversion}/?.lua;" + f: "${f}/share/lua/${lua.luaversion}/?.lua;" + "${f}/share/lua/${lua.luaversion}/?/init.lua;"
"${f}/share/lua/${lua.luaversion}/?/init.lua;") ) packages;
packages; luacpath = builtins.map (f: "${f}/lib/lua/${lua.luaversion}/?.so;") packages;
luacpath = builtins.map (f: "${f}/lib/lua/${lua.luaversion}/?.so;") packages; luaFlags = lib.optionalString (mainFunction != null) "-e dofile(arg[0]).${mainFunction}()";
luaFlags = lib.optionalString (mainFunction !=null) "-e dofile(arg[0]).${mainFunction}()"; in
in stdenv.mkDerivation { stdenv.mkDerivation {
inherit name; inherit name;
src = ./.; src = ./.;
nativeBuildInputs = [ fennel ]; nativeBuildInputs = [ fennel ];
buildPhase = '' buildPhase = ''
( (
echo "#!${lua}/bin/lua ${luaFlags}" echo "#!${lua}/bin/lua ${luaFlags}"
echo "package.path = ${lib.strings.escapeShellArg (builtins.concatStringsSep "" luapath)} .. package.path" echo "package.path = ${lib.strings.escapeShellArg (builtins.concatStringsSep "" luapath)} .. package.path"
echo "package.cpath = ${lib.strings.escapeShellArg (builtins.concatStringsSep "" luacpath)} .. package.cpath" echo "package.cpath = ${lib.strings.escapeShellArg (builtins.concatStringsSep "" luacpath)} .. package.cpath"
echo "local ok, stdlib = pcall(require,'posix.stdlib'); if ok then stdlib.setenv('PATH',${lib.escapeShellArg (lib.makeBinPath packages)} .. \":\" .. os.getenv('PATH')) end" echo "local ok, stdlib = pcall(require,'posix.stdlib'); if ok then stdlib.setenv('PATH',${lib.escapeShellArg (lib.makeBinPath packages)} .. \":\" .. os.getenv('PATH')) end"
fennel ${if correlate then "--correlate" else ""} --compile ${source} fennel ${if correlate then "--correlate" else ""} --compile ${source}
) > ${name}.lua ) > ${name}.lua
''; '';
installPhase = '' installPhase = ''
cp ${name}.lua $out cp ${name}.lua $out
chmod +x $out chmod +x $out
''; '';
} }

View File

@ -1,7 +1,4 @@
{ { stdenv, openwrt }:
stdenv
, openwrt
}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "zyxel-bootconfig"; name = "zyxel-bootconfig";
inherit (openwrt) src; inherit (openwrt) src;

View File

@ -5,7 +5,7 @@
pppoe = import ./pppoe/test.nix; pppoe = import ./pppoe/test.nix;
jffs2 = import ./jffs2/test.nix; jffs2 = import ./jffs2/test.nix;
ext4 = import ./ext4/test.nix; ext4 = import ./ext4/test.nix;
min-copy-closure = import ./min-copy-closure/test.nix; min-copy-closure = import ./min-copy-closure/test.nix;
fennel = import ./fennel/test.nix; fennel = import ./fennel/test.nix;
tftpboot = import ./tftpboot/test.nix; tftpboot = import ./tftpboot/test.nix;
updown = import ./updown/test.nix; updown = import ./updown/test.nix;

View File

@ -1,4 +1,4 @@
{ config, pkgs, ... } : { config, pkgs, ... }:
let let
inherit (pkgs.liminix.services) target; inherit (pkgs.liminix.services) target;
svc = config.system.service; svc = config.system.service;
@ -31,5 +31,5 @@ in rec {
ipaddr = "192.168.8.251"; ipaddr = "192.168.8.251";
}; };
defaultProfile.packages = [ pkgs.hello ] ; defaultProfile.packages = [ pkgs.hello ];
} }