Compare commits
4 Commits
c4185617c0
...
e94bf62ec1
Author | SHA1 | Date |
---|---|---|
Daniel Barlow | e94bf62ec1 | |
Daniel Barlow | 16a2499d74 | |
Daniel Barlow | d4d8093f97 | |
Daniel Barlow | 7c9c801afc |
7
ci.nix
7
ci.nix
|
@ -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; [
|
||||
|
|
|
@ -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"; };
|
||||
|
|
|
@ -92,7 +92,6 @@
|
|||
'';
|
||||
};
|
||||
inherit (pkgs.pseudofile) dir symlink;
|
||||
inherit (pkgs.liminix.networking) interface;
|
||||
in {
|
||||
imports = [
|
||||
../../modules/network
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
'';
|
||||
installer = "vmroot";
|
||||
|
||||
module = {pkgs, config, lim, ... }: {
|
||||
module = { config, lim, ... }: {
|
||||
imports = [
|
||||
../../modules/arch/arm.nix
|
||||
../families/qemu.nix
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"; };
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{ eval, lib, pkgs }:
|
||||
let
|
||||
inherit (lib) types;
|
||||
conf = eval.config;
|
||||
rootDir = builtins.toPath ./..;
|
||||
stripAnyPrefixes = lib.flip (lib.fold lib.removePrefix)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{ config, pkgs, lib, ... } :
|
||||
{ config, pkgs, ... } :
|
||||
let
|
||||
inherit (pkgs) serviceFns;
|
||||
svc = config.system.service;
|
||||
|
||||
in rec {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{ config, pkgs, lib, ... } :
|
||||
{ config, pkgs, ... } :
|
||||
let
|
||||
inherit (pkgs) serviceFns;
|
||||
svc = config.system.service;
|
||||
|
||||
in rec {
|
||||
|
|
|
@ -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,13 +65,14 @@ 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
|
||||
for i in ns1 ns2 ; do
|
||||
ns=$(output ${services.l2tp} $i)
|
||||
echo "nameserver $ns" >> resolv.conf
|
||||
done
|
||||
)
|
||||
'';
|
||||
|
@ -61,31 +81,59 @@ in rec {
|
|||
etc = dir {
|
||||
"resolv.conf" = symlink "${services.resolvconf}/.outputs/resolv.conf";
|
||||
};
|
||||
srv = dir {};
|
||||
};
|
||||
|
||||
services.lnsroute = svc.network.route.build {
|
||||
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 = lns;
|
||||
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;
|
||||
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 = [ services.lnsroute ];
|
||||
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;
|
||||
|
|
|
@ -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)";
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{ config, pkgs, lib, lim, ... } :
|
||||
{ config, pkgs, lim, ... } :
|
||||
let
|
||||
inherit (pkgs) serviceFns;
|
||||
svc = config.system.service;
|
||||
|
||||
in rec {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, lim, pkgs, config, ...}:
|
||||
{ lim, pkgs, config, ...}:
|
||||
{
|
||||
config = {
|
||||
kernel.config = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, lim, pkgs, config, ...}:
|
||||
{ lim, pkgs, config, ...}:
|
||||
{
|
||||
config = {
|
||||
kernel.config = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, pkgs, config, lim, ...}:
|
||||
{ config, lim, ...}:
|
||||
{
|
||||
config = {
|
||||
kernel.config = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, pkgs, config, ...}:
|
||||
{ pkgs, config, ...}:
|
||||
{
|
||||
imports = [ ./mips.nix ];
|
||||
config = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, pkgs, config, ...}:
|
||||
{ config, ...}:
|
||||
{
|
||||
imports = [ ./mips.nix ];
|
||||
config = {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
{ lib, pkgs, config, ...}:
|
||||
let
|
||||
inherit (lib) mkOption types;
|
||||
inherit (pkgs.liminix.services) oneshot;
|
||||
inherit (pkgs) liminix;
|
||||
in
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
let
|
||||
inherit (pkgs) liminix;
|
||||
inherit (lib) mkOption types;
|
||||
svc = config.system.service;
|
||||
in {
|
||||
imports = [
|
||||
../service-trigger
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
writeFennel
|
||||
, linotify
|
||||
, anoia
|
||||
, lua
|
||||
, lualinux
|
||||
}:
|
||||
writeFennel "acquire-delegated-prefix" {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
{ lib, pkgs, config, ...}:
|
||||
let
|
||||
inherit (lib) mkOption types;
|
||||
inherit (pkgs.liminix.services) oneshot;
|
||||
inherit (pkgs) liminix;
|
||||
in
|
||||
{
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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}
|
||||
'';
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ config, pkgs, lib, ...} :
|
||||
{ config, pkgs, ...} :
|
||||
let inherit (pkgs.liminix.services) oneshot longrun;
|
||||
in {
|
||||
config = {
|
||||
|
|
|
@ -7,11 +7,6 @@
|
|||
let
|
||||
inherit (lib) mkOption types;
|
||||
inherit (pkgs) liminix;
|
||||
mkBoolOption = description : mkOption {
|
||||
type = types.bool;
|
||||
inherit description;
|
||||
default = true;
|
||||
};
|
||||
|
||||
in {
|
||||
options = {
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{
|
||||
liminix
|
||||
, ifwait
|
||||
, serviceFns
|
||||
, lib
|
||||
}:
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
{
|
||||
liminix
|
||||
, ifwait
|
||||
, serviceFns
|
||||
, lib
|
||||
}:
|
||||
{ enableIPv4, enableIPv6 }:
|
||||
|
|
|
@ -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 ''
|
||||
|
|
|
@ -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}
|
||||
'';
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
}:
|
||||
let
|
||||
inherit (lib) mkOption types concatStringsSep;
|
||||
inherit (pkgs) liminix callPackage writeText;
|
||||
inherit (pkgs) liminix writeText;
|
||||
o = config.system.outputs;
|
||||
in
|
||||
{
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
, ...
|
||||
}:
|
||||
let
|
||||
inherit (lib) mkIf mkOption types;
|
||||
inherit (lib) mkIf;
|
||||
o = config.system.outputs;
|
||||
in
|
||||
{
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
, ...
|
||||
}:
|
||||
let
|
||||
inherit (lib) mkIf mkOption types;
|
||||
inherit (lib) mkIf;
|
||||
o = config.system.outputs;
|
||||
in
|
||||
{
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
}:
|
||||
let
|
||||
inherit (lib) mkEnableOption mkOption mkIf types;
|
||||
inherit (pkgs) runCommand callPackage writeText;
|
||||
inherit (pkgs) runCommand;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
, ...
|
||||
}:
|
||||
let
|
||||
inherit (lib) mkIf mkOption types;
|
||||
inherit (lib) mkIf;
|
||||
o = config.system.outputs;
|
||||
in
|
||||
{
|
||||
|
|
|
@ -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" {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
, ...
|
||||
}:
|
||||
let
|
||||
inherit (lib) mkOption types concatStringsSep;
|
||||
inherit (lib) mkOption types;
|
||||
o = config.system.outputs;
|
||||
cfg = config.tplink-safeloader;
|
||||
in {
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
, ...
|
||||
}:
|
||||
let
|
||||
inherit (pkgs) liminix;
|
||||
inherit (lib) mkIf mkOption types concatStringsSep optionalString;
|
||||
in
|
||||
{
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
{
|
||||
liminix
|
||||
, lib
|
||||
, ppp
|
||||
, pppoe
|
||||
, writeAshScript
|
||||
, writeText
|
||||
, serviceFns
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
{
|
||||
config
|
||||
, pkgs
|
||||
, lib
|
||||
, ...
|
||||
}:
|
||||
let
|
||||
inherit (lib) mkIf mkEnableOption mkOption; # types concatStringsSep;
|
||||
inherit (lib) mkIf mkEnableOption; # types concatStringsSep;
|
||||
in {
|
||||
options = {
|
||||
boot = {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ config, pkgs, lib, ... } :
|
||||
{ config, pkgs, ... } :
|
||||
{
|
||||
config = {
|
||||
programs.busybox = {
|
||||
|
|
|
@ -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}";
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
liminix
|
||||
, dropbear
|
||||
, serviceFns
|
||||
, lib
|
||||
}:
|
||||
p :
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# support for USB block devices and the common filesystems
|
||||
# they're likely to provide
|
||||
|
||||
{lib, config, ... }:
|
||||
{ config, ... }:
|
||||
{
|
||||
kernel = {
|
||||
config = {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
{ lib, pkgs, config, ...}:
|
||||
let
|
||||
inherit (lib) mkOption types;
|
||||
inherit (pkgs.liminix.services) oneshot;
|
||||
inherit (pkgs) liminix;
|
||||
in
|
||||
{
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
{
|
||||
lua
|
||||
, nellie
|
||||
{ nellie
|
||||
, writeFennel
|
||||
, anoia
|
||||
, fennel
|
||||
|
|
|
@ -1,9 +1,4 @@
|
|||
{
|
||||
runCommand
|
||||
, runtimeShell
|
||||
, fetchurl
|
||||
, lib
|
||||
, luaPackages
|
||||
{ lib
|
||||
, lua
|
||||
, lualinux
|
||||
, writeScriptBin
|
||||
|
|
|
@ -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 } : ''
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
{
|
||||
lua
|
||||
, netlink-lua
|
||||
{ netlink-lua
|
||||
, writeFennelScript
|
||||
, runCommand
|
||||
, anoia
|
||||
|
|
|
@ -3,9 +3,7 @@
|
|||
, python2
|
||||
, which
|
||||
, fetchgit
|
||||
, fetchpatch
|
||||
, fetchFromGitHub
|
||||
, autoreconfHook
|
||||
, coccinelle
|
||||
}:
|
||||
let
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{ stdenv
|
||||
, buildPackages
|
||||
, runCommand
|
||||
, writeText
|
||||
, lib
|
||||
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
{
|
||||
stdenv
|
||||
, busybox
|
||||
, buildPackages
|
||||
{ buildPackages
|
||||
, callPackage
|
||||
, pseudofile
|
||||
, runCommand
|
||||
|
|
|
@ -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 // {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lua, lib, fetchFromGitHub }:
|
||||
{ lua, fetchFromGitHub }:
|
||||
let pname = "linotify";
|
||||
in lua.pkgs.buildLuaPackage {
|
||||
inherit pname;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lua, lib, fetchFromGitHub }:
|
||||
{ lua, fetchFromGitHub }:
|
||||
let
|
||||
pname = "lualinux";
|
||||
src = fetchFromGitHub {
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -1,12 +1,8 @@
|
|||
{
|
||||
stdenv
|
||||
, nix
|
||||
, cpio
|
||||
, openssh
|
||||
}: stdenv.mkDerivation {
|
||||
name = "min-collect-garbage";
|
||||
buildInputs = [ ];
|
||||
# propagatedBuildInputs = [ openssh ];
|
||||
src = ./.;
|
||||
makeFlags = [ "min-list-garbage" ];
|
||||
installPhase = ''
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lua, lib, fetchFromGitHub }:
|
||||
{ lua, fetchFromGitHub }:
|
||||
let
|
||||
pname = "minisock";
|
||||
src = fetchFromGitHub {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lua, lib, fetchpatch, fetchFromGitHub, stdenv }:
|
||||
{ lua, stdenv }:
|
||||
|
||||
let pname = "nellie";
|
||||
in lua.pkgs.buildLuaPackage {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lua, lib, fetchpatch, fetchFromGitHub, libmnl }:
|
||||
{ lua, fetchFromGitHub, libmnl }:
|
||||
let pname = "netlink";
|
||||
in lua.pkgs.buildLuaPackage {
|
||||
inherit pname;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
writeFennelScript
|
||||
, anoia
|
||||
, lua
|
||||
, lualinux
|
||||
}:
|
||||
writeFennelScript "odhcpc-script" [anoia lualinux] ./odhcp6-script.fnl
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
{ stdenv
|
||||
, buildPackages
|
||||
, cmake
|
||||
, fetchFromGitHub
|
||||
, ...} :
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{
|
||||
fetchFromGitHub
|
||||
, writeShellScript
|
||||
, pkgsBuildBuild
|
||||
}:
|
||||
let
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, ppp } :
|
||||
let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "rp-pppoe";
|
||||
version = "3.15";
|
||||
|
|
|
@ -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 = ./.;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue