Compare commits

...

5 commits

18 changed files with 481 additions and 446 deletions

4
.envrc
View file

@ -1,5 +1,5 @@
if ! has nix_direnv_version || ! nix_direnv_version 3.0.5; then
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.5/direnvrc" "sha256-RuwIS+QKFj/T9M2TFXScjBsLR6V3A17YVoEW/Q6AZ1w="
if ! has nix_direnv_version || ! nix_direnv_version 3.0.6; then
source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/3.0.6/direnvrc" "sha256-RYcUJaRMf8oF5LznDrlCXbkOQrywm0HDv1VjYGaJGdM="
fi
use flake .#develop

View file

@ -11,11 +11,10 @@
"ignored": ["unused_binding", "unused_with"]
},
"formatting": {
"command": ["treefmt-nix", "--stdin", ".nil.nix"]
"command": ["treefmt", "--stdin", ".nil.nix"]
}
}
},
"[nix]": {
"editor.defaultFormatter": "jnoortheen.nix-ide"
}
"treefmt.command": "treefmt",
"treefmt.config": ""
}

View file

@ -9,14 +9,14 @@ update-default-versions:
nix flake update
_get_nix_path versionsPath:
echo $(set -x; nix-build --no-link --show-trace {{invocation_directory()}}/nix/default.nix -A channelSources --argstr versionsPath {{versionsPath}})
echo $(set -x; nix-build --no-link --show-trace {{ invocation_directory() }}/nix/default.nix -A channelSources --argstr versionsPath {{ versionsPath }})
_device recipe dir +moreargs="":
#!/usr/bin/env bash
set -ex
unset NIX_PATH
source $(just -v _get_nix_path {{invocation_directory()}}/{{dir}}/versions.nix)
$(set -x; nix-build --no-link --show-trace $(dirname {{dir}})/default.nix -A recipes.{{recipe}} --argstr dir {{dir}} {{moreargs}})
source $(just -v _get_nix_path {{ invocation_directory() }}/{{ dir }}/versions.nix)
$(set -x; nix-build --no-link --show-trace $(dirname {{ dir }})/default.nix -A recipes.{{ recipe }} --argstr dir {{ dir }} {{ moreargs }})
_render_templates:
#!/usr/bin/env bash
@ -24,18 +24,18 @@ _render_templates:
if ! ip route get 1.1.1.1; then
echo No route to WAN. Skipping template rendering...
else
source $(just -v _get_nix_path {{invocation_directory()}}/nix/variables/versions.nix)
source $(just -v _get_nix_path {{ invocation_directory() }}/nix/variables/versions.nix)
# nix/scripts/pre-eval-fixed.sh nix/home-manager/profiles/dotfiles/vcsh{.tmpl,}.nix
fi
rebuild-remote-device device +rebuildargs="dry-activate":
#!/usr/bin/env bash
set -ex
nix run .#colmena -- apply --impure --on {{device}} {{rebuildargs}}
nix run .#colmena -- apply --impure --on {{ device }} {{ rebuildargs }}
# Rebuild this device's NixOS
rebuild-this-device +rebuildargs="dry-activate":
nix run .#colmena -- apply-local --impure --sudo {{rebuildargs}}
nix run .#colmena -- apply-local --impure --sudo {{ rebuildargs }}
# Re-render the versions of a remote device and rebuild its environment
update-remote-device devicename +rebuildargs='build':
@ -44,13 +44,13 @@ update-remote-device devicename +rebuildargs='build':
(
set -xe
cd nix/os/devices/{{devicename}}
cd nix/os/devices/{{ devicename }}
nix flake update
)
just -v rebuild-remote-device {{devicename}} {{rebuildargs}}
just -v rebuild-remote-device {{ devicename }} {{ rebuildargs }}
git commit -v nix/os/devices/{{devicename}}/flake.{nix,lock} -m "nix/os/devices/{{devicename}}: bump versions"
git commit -v nix/os/devices/{{ devicename }}/flake.{nix,lock} -m "nix/os/devices/{{ devicename }}: bump versions"
# Re-render the versions of the current device and rebuild its environment
update-this-device rebuild-mode='switch' +moreargs='':
@ -63,7 +63,7 @@ update-this-device rebuild-mode='switch' +moreargs='':
nix flake update
)
just -v rebuild-this-device {{rebuild-mode}} {{moreargs}}
just -v rebuild-this-device {{ rebuild-mode }} {{ moreargs }}
git commit -v nix/os/devices/$(hostname -s)/flake.{nix,lock} -m "nix/os/devices/$(hostname -s): bump versions"
@ -72,19 +72,19 @@ rebuild-disk device:
#!/usr/bin/env bash
set -xe
just -v disk-mount {{device}}
trap "set +e; just -v disk-umount {{device}}" EXIT
just -v disk-install {{device}}
just -v disk-mount {{ device }}
trap "set +e; just -v disk-umount {{ device }}" EXIT
just -v disk-install {{ device }}
# Re-render the versions of the given offline system and reinstall it in offline-mode
update-disk dir:
#!/usr/bin/env bash
set -exuo pipefail
dir={{dir}}
dir={{ dir }}
template={{dir}}/versions.tmpl.nix
outfile={{dir}}/versions.nix
template={{ dir }}/versions.tmpl.nix
outfile={{ dir }}/versions.nix
if ! test -e ${template}; then
template="$(just _DEFAULT_VERSION_TMPL)"
@ -96,9 +96,9 @@ update-disk dir:
exit 0
fi
export SYSREBUILD_LOG=.{{dir}}_sysrebuild.log
just -v rebuild-disk {{dir}} || {
echo ERROR: Update of {{dir}} failed, reverting ${outfile}...
export SYSREBUILD_LOG=.{{ dir }}_sysrebuild.log
just -v rebuild-disk {{ dir }} || {
echo ERROR: Update of {{ dir }} failed, reverting ${outfile}...
exit 1
}
@ -119,33 +119,33 @@ hm-iterate-qtile:
# !!! DANGERIOUS !!! This wipes the disk which is configured for the given device.
disk-prepare dir:
just -v _device diskPrepare {{dir}}
just -v _device diskPrepare {{ dir }}
disk-relabel dir previous:
just -v _device diskRelabel {{dir}} --argstr previousDiskId {{previous}}
just -v _device diskRelabel {{ dir }} --argstr previousDiskId {{ previous }}
# Mount the target disk specified by device configuration directory. The 'dir' argument points to a device configuration, e.g. 'nix/os/devices/steveej-live-mmc-SL32G_0x259093f6'
disk-mount dir:
just -v _device diskMount {{dir}}
just -v _device diskMount {{ dir }}
# Unmount target disk, specified by device configuration directory
disk-umount dir:
just -v _device diskUmount {{dir}}
just -v _device diskUmount {{ dir }}
# Perform an offline installation on the mounted target disk, specified by device configuration directory
disk-install dir: _render_templates
just -v _device diskInstall {{dir}}
just -v _device diskInstall {{ dir }}
verify-n-unlock sshserver attempts="10":
#!/usr/bin/env bash
set -e
env \
GETPW="just _get_pass_entry Infrastructure/VPS/{{sshserver}} DRIVE_PW" \
SSHOPTS="$(just _get_pass_entry Infrastructure/VPS/{{sshserver}} SSHOPTS)" \
VNCSOCK="$(just _get_pass_entry Infrastructure/VPS/{{sshserver}} VNCSOCK)" \
VNCPW="$(just _get_pass_entry Infrastructure/VPS/{{sshserver}} VNCPW)" \
GETPW="just _get_pass_entry Infrastructure/VPS/{{ sshserver }} DRIVE_PW" \
SSHOPTS="$(just _get_pass_entry Infrastructure/VPS/{{ sshserver }} SSHOPTS)" \
VNCSOCK="$(just _get_pass_entry Infrastructure/VPS/{{ sshserver }} VNCSOCK)" \
VNCPW="$(just _get_pass_entry Infrastructure/VPS/{{ sshserver }} VNCPW)" \
\
just _verify-n-unlock {{sshserver}} {{attempts}}
just _verify-n-unlock {{ sshserver }} {{ attempts }}
_verify-n-unlock sshserver attempts:
#!/usr/bin/env bash
@ -158,7 +158,7 @@ _verify-n-unlock sshserver attempts:
function send() {
local what="${1:?need something to send}"
ssh -4 ${SSHOPTS:?need sshopts} root@{{sshserver}} "echo -e ${what}>> /dev/tty0" &>/dev/null
ssh -4 ${SSHOPTS:?need sshopts} root@{{ sshserver }} "echo -e ${what}>> /dev/tty0" &>/dev/null
}
function expect() {
@ -181,7 +181,7 @@ _verify-n-unlock sshserver attempts:
trap 'E=$?; set +e; rm screenshot.*; echo Exiting...; kill $(jobs -p | cut -d " " -f 4); exit $E' EXIT
for i in `seq 1 {{attempts}}`; do
for i in `seq 1 {{ attempts }}`; do
echo Attempt $i...
expect="$(pwgen -0 12)"
send="'\0033\0143'${expect}"
@ -192,7 +192,7 @@ _verify-n-unlock sshserver attempts:
rm ${pipe}
echo Verification succeeded at attempt $i. Unlocking remote drive...
ssh -4 ${SSHOPTS} root@{{sshserver}} "cryptsetup-askpass" <&3 &>/dev/null &
ssh -4 ${SSHOPTS} root@{{ sshserver }} "cryptsetup-askpass" <&3 &>/dev/null &
eval ${GETPW} | head -n1 >&3
for j in `seq 1 120`; do
@ -207,19 +207,19 @@ _verify-n-unlock sshserver attempts:
exit 1
fi
done
echo Verification failed {{attempts}} times. Giving up...
echo Verification failed {{ attempts }} times. Giving up...
exit 1
_get_pass_entry path key:
pass show {{path}}| grep -E "^{{key}}:" | sed -E 's/^[^:]+: *//g'
pass show {{ path }}| grep -E "^{{ key }}:" | sed -E 's/^[^:]+: *//g'
run-with-channels +cmds:
#!/usr/bin/env bash
source $(just -v _get_nix_path {{invocation_directory()}}/nix/variables/versions.nix)
{{cmds}}
source $(just -v _get_nix_path {{ invocation_directory() }}/nix/variables/versions.nix)
{{ cmds }}
install-config config root:
sudo just run-with-channels nixos-install -I nixos-config={{invocation_directory()}}/{{config}} --root {{root}} --no-root-passwd
sudo just run-with-channels nixos-install -I nixos-config={{ invocation_directory() }}/{{ config }} --root {{ root }} --no-root-passwd
# Switch between gpg-card capable devices which have a copy of the same key
switch-gpg-card:
@ -253,7 +253,7 @@ switch-gpg-card:
uuid-to-device-name remote:
#!/usr/bin/env bash
set -e -o pipefail
ssh {{remote}} 'nix run nixpkgs.dmidecode -c dmidecode -s system-uuid' | xxhsum --quiet -H1 | awk '{print $1}'
ssh {{ remote }} 'nix run nixpkgs.dmidecode -c dmidecode -s system-uuid' | xxhsum --quiet -H1 | awk '{print $1}'
test-connection:
#! /usr/bin/env nix-shell
@ -305,7 +305,7 @@ test-connection:
done
cachix-use name:
nix run nixpkgs/nixos-unstable#cachix -- use {{name}} -m nixos -d nix/os/
nix run nixpkgs/nixos-unstable#cachix -- use {{ name }} -m nixos -d nix/os/
update-sops-keys:
for file in $(egrep -lr '"?sops"?:') secrets; do sops updatekeys -y $file; done

29
flake.lock generated
View file

@ -974,6 +974,22 @@
"type": "github"
}
},
"nixpkgs-gimp": {
"locked": {
"lastModified": 1735507908,
"narHash": "sha256-VA+khC0S0di6w5Yv1kBNRpAihnt2prT/ehQzsKMhEoA=",
"owner": "jtojnar",
"repo": "nixpkgs",
"rev": "771cf18187fefcfaababd35834917c621447fee8",
"type": "github"
},
"original": {
"owner": "jtojnar",
"ref": "gimp-meson",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-kanidm": {
"locked": {
"lastModified": 1729071019,
@ -1035,11 +1051,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1733212471,
"narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=",
"lastModified": 1739446958,
"narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "55d15ad12a74eb7d4646254e13638ad0c4128776",
"rev": "2ff53fe64443980e139eaa286017f53f88336dd0",
"type": "github"
},
"original": {
@ -1296,6 +1312,7 @@
],
"nixpkgs-2211": "nixpkgs-2211",
"nixpkgs-2411": "nixpkgs-2411",
"nixpkgs-gimp": "nixpkgs-gimp",
"nixpkgs-kanidm": "nixpkgs-kanidm",
"nixpkgs-logseq": "nixpkgs-logseq",
"nixpkgs-unstable": "nixpkgs-unstable",
@ -1590,11 +1607,11 @@
]
},
"locked": {
"lastModified": 1733222881,
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
"lastModified": 1738953846,
"narHash": "sha256-yrK3Hjcr8F7qS/j2F+r7C7o010eVWWlm4T1PrbKBOxQ=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
"rev": "4f09b473c936d41582dd744e19f34ec27592c5fd",
"type": "github"
},
"original": {

View file

@ -111,6 +111,8 @@
url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs";
};
nixpkgs-gimp.url = "github:jtojnar/nixpkgs/gimp-meson";
};
outputs =
@ -278,7 +280,6 @@
};
};
local-xwayland = pkgs.writeShellScriptBin "local-xwayland" ''
set -x
${pkgs.wayland-proxy-virtwl}/bin/wayland-proxy-virtwl \
@ -337,6 +338,9 @@
};
inherit local-xwayland;
inherit (inputs'.nixpkgs-gimp.legacyPackages) gimp;
};
formatter =
@ -355,6 +359,13 @@
shellcheck.enable = true;
prettier.enable = true;
just = {
enable = true;
includes = [
"*/Justfile"
"Justfile"
];
};
} // pkgs.lib.optionalAttrs (pkgs.system != "riscv64-linux") { shellcheck.enable = true; };
settings = {
@ -410,7 +421,10 @@
;
};
in
all // { default = all.develop; };
all
// {
default = all.develop;
};
};
}
);

View file

@ -93,11 +93,11 @@
self.nixosConfigurations.sj-srv1.config.containers.webserver.config.services.kanidm.serverSettings.origin;
shellHook = builtins.concatStringsSep "\n" [
(self.inputs.nixago.lib.${pkgs.system}.make {
data = self'.formatter.settings;
output = "treefmt.toml";
format = "toml";
}).shellHook
# (self.inputs.nixago.lib.${pkgs.system}.make {
# data = self'.formatter.settings;
# output = "treefmt.toml";
# format = "toml";
# }).shellHook
];
};
}

View file

@ -246,8 +246,9 @@ in
# libretro.snes9x2010
# retroarchFull
(pkgs.callPackage "${repoFlake.inputs.nixpkgs-logseq}/pkgs/by-name/lo/logseq/package.nix" {})
(pkgs.callPackage "${repoFlake.inputs.nixpkgs-logseq}/pkgs/by-name/lo/logseq/package.nix" { })
])
++ (with repoFlake.packages.${pkgs.system}; [ gimp ])
++ (lib.lists.optionals (!pkgs.stdenv.targetPlatform.isAarch64) [
pkgsUnstable.ledger-live-desktop

View file

@ -162,7 +162,10 @@ let
"devtools.debugger.remote-enabled" = true;
# disable translations for some languages
"browser.translations.neverTranslateLanguages" = ["en" "de"];
"browser.translations.neverTranslateLanguages" = [
"en"
"de"
];
"browser.translations.automaticallyPopup" = false;
# enable pipewire (and libcamera) sources
@ -303,7 +306,9 @@ in
repoFlake.inputs.nur.overlay
];
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
nixpkgs.config.allowUnfreePredicate =
pkg:
builtins.elem (lib.getName pkg) [
"youtube-recommended-videos"
];

View file

@ -13,8 +13,7 @@
srvos.url = "github:numtide/srvos";
srvos.inputs.nixpkgs.follows = "nixpkgs";
nixos-sbc.url =
"github:nakato/nixos-sbc"
nixos-sbc.url = "github:nakato/nixos-sbc"
# "github:steveej-forks/nakato_nixos-sbc//bpi-r3_kernel-6.12"
# "github:steveej-forks/nakato_nixos-sbc//bpi-r3_kernel-6.13"
# "github:steveej-forks/nakato_nixos-sbc/kernel-6.9_and_cross-compile"

View file

@ -23,11 +23,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1737404927,
"narHash": "sha256-e1WgPJpIYbOuokjgylcsuoEUCB4Jl2rQXa2LUD6XAG8=",
"lastModified": 1739055578,
"narHash": "sha256-2MhC2Bgd06uI1A0vkdNUyDYsMD0SLNGKtD8600mZ69A=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "ae584d90cbd0396a422289ee3efb1f1c9d141dc3",
"rev": "a45fa362d887f4d4a7157d95c28ca9ce2899b70e",
"type": "github"
},
"original": {
@ -39,11 +39,11 @@
},
"nixpkgs-master": {
"locked": {
"lastModified": 1737621708,
"narHash": "sha256-EJRzBfAi7XlPlyQuGgyCctX6PpR1P7nMnRxrHOnfXj0=",
"lastModified": 1739263600,
"narHash": "sha256-f0k9Kf+kpRqieSf9nlRMLyWe5oujqSOwaNWSyfwMiIE=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "f0413353abad5d3826571102243795bb80ed5444",
"rev": "f9e486552fc8213d31cadd772fc883789f76199d",
"type": "github"
},
"original": {
@ -55,11 +55,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1737597992,
"narHash": "sha256-FECKBxkd+w5I/fhsquthDiw/r/MdCpqmKikBU9yQGug=",
"lastModified": 1739184465,
"narHash": "sha256-7Z9kNbr6qZwPG1z/6Hn/re4SS9nu1krxyknyNeCBh/o=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d0bb4699177f691c8e558b32b3bdc38bc112f76f",
"rev": "58edd1e2acbc9be9fe29964344c6419db013141e",
"type": "github"
},
"original": {

View file

@ -6,7 +6,6 @@
config,
nodeName,
system,
packages',
...
}:
{

View file

@ -3,11 +3,11 @@
"ath11k-firmware": {
"flake": false,
"locked": {
"lastModified": 1733258345,
"narHash": "sha256-th2svNLc74sVI/P+y1/Yck1IW+RIUnxL+NF2HLrsSxI=",
"lastModified": 1738780660,
"narHash": "sha256-xDKtJUEksN/kuL49AtTyerCKn1XCJQH3zzcQV+m7r5Q=",
"ref": "refs/heads/main",
"rev": "ff9dd08208c5705a3867fc132dcedb5d31c901e2",
"revCount": 163,
"rev": "ae4407c02a434534590dec3e0ef26b371fd7888b",
"revCount": 165,
"type": "git",
"url": "https://git.codelinaro.org/clo/ath-firmware/ath11k-firmware.git"
},
@ -44,11 +44,11 @@
]
},
"locked": {
"lastModified": 1737038063,
"narHash": "sha256-rMEuiK69MDhjz1JgbaeQ9mBDXMJ2/P8vmOYRbFndXsk=",
"lastModified": 1738765162,
"narHash": "sha256-3Z40qHaFScWUCVQrGc4Y+RdoPsh1R/wIh+AN4cTXP0I=",
"owner": "nix-community",
"repo": "disko",
"rev": "bf0abfde48f469c256f2b0f481c6281ff04a5db2",
"rev": "ff3568858c54bd306e9e1f2886f0f781df307dff",
"type": "github"
},
"original": {
@ -181,16 +181,16 @@
"linux-jhovold": {
"flake": false,
"locked": {
"lastModified": 1737386371,
"narHash": "sha256-FIbwr2WKslYbC/AIBNcUgoEpDm0aB8knhHYQ6m2bu6k=",
"lastModified": 1739194097,
"narHash": "sha256-vPoE9Hu2dXqZh7n0BMQwXx9Q2pFRdsu17bhFaHrgi8Q=",
"owner": "jhovold",
"repo": "linux",
"rev": "5602f2f7c53f5c0d2566f493224b82f55ed68abb",
"rev": "7a06e4bfc53f53969db374662de9e5f43e3c3d1d",
"type": "github"
},
"original": {
"owner": "jhovold",
"ref": "wip/sc8280xp-6.13",
"ref": "wip/sc8280xp-6.14-rc2",
"repo": "linux",
"type": "github"
}
@ -206,11 +206,11 @@
]
},
"locked": {
"lastModified": 1735206569,
"narHash": "sha256-U6iAzHxCpqT4x3zUfA9keoe8Gw0iy7INJS8Wt3fSPF4=",
"lastModified": 1739197353,
"narHash": "sha256-KhXCjlXYX1DIFjbDtFsR2WOeUvsrsYao06u9ixl+kM8=",
"owner": "threefoldtech",
"repo": "mycelium",
"rev": "78dcb1a8f2808bcc23f11ac7123a837eda3f6369",
"rev": "f58df6c244826a43897efe9471b165ddf8d7480a",
"type": "github"
},
"original": {
@ -264,11 +264,11 @@
"x13s-bt-linux-firmware": "x13s-bt-linux-firmware"
},
"locked": {
"lastModified": 1737753654,
"narHash": "sha256-y4KjuDsLZ9bNwF+7fmDBSDjhZSXQykewS0ncxNoeNvA=",
"lastModified": 1739273873,
"narHash": "sha256-Gjyp1W1YIGcnXUOIZLHwVHvrhfidxMAGNfDYHcpYwjM=",
"ref": "bump",
"rev": "fe236e55c5fcdb8fb194ade6dc62ab67f396537e",
"revCount": 135,
"rev": "6784c72db5476449c9be197ed1bfd4fa9bf8b6a7",
"revCount": 136,
"type": "git",
"url": "https://forgejo.www.stefanjunker.de/steveej/nixos-x13s.git"
},
@ -308,11 +308,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1737672001,
"narHash": "sha256-YnHJJ19wqmibLQdUeq9xzE6CjrMA568KN/lFPuSVs4I=",
"lastModified": 1739055578,
"narHash": "sha256-2MhC2Bgd06uI1A0vkdNUyDYsMD0SLNGKtD8600mZ69A=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "035f8c0853c2977b24ffc4d0a42c74f00b182cd8",
"rev": "a45fa362d887f4d4a7157d95c28ca9ce2899b70e",
"type": "github"
},
"original": {

View file

@ -15,8 +15,7 @@
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-x13s.url =
"git+https://forgejo.www.stefanjunker.de/steveej/nixos-x13s.git?ref=bump"
nixos-x13s.url = "git+https://forgejo.www.stefanjunker.de/steveej/nixos-x13s.git?ref=bump"
# 6.13-rc2
# "git+https://forgejo.www.stefanjunker.de/steveej/nixos-x13s.git?ref=bump&rev=c95058f8aa1b361df3874429c5dc0f694f9cba78"
# 6.11.0
@ -89,7 +88,9 @@
inherit mkNixosConfiguration;
};
overlays.default = _final: _previous: {
overlays.default =
_final: _previous:
{
};
nixosConfigurations = {

View file

@ -1,5 +1,5 @@
_run_ssh_cmd cmd:
ssh root@router-family.lan "{{cmd}}"
ssh root@router-family.lan "{{ cmd }}"
post-setup:
just -v _run_ssh_cmd "opkg update"

View file

@ -1,5 +1,5 @@
_run_ssh_cmd cmd:
ssh root@router-wan.dmz "{{cmd}}"
ssh root@router-wan.dmz "{{ cmd }}"
post-setup:
just -v _run_ssh_cmd "opkg update"