oops it's been a minute

This commit is contained in:
atagen 2024-11-06 09:53:19 +11:00
parent 5f434b1979
commit 55013f738c
22 changed files with 468 additions and 323 deletions

View file

@ -0,0 +1,8 @@
{
pkgs,
src,
...
}:
pkgs.stdenvNoCC.mkDerivation {
inherit src;
}

View file

@ -0,0 +1,10 @@
{
outputs = { nixpkgs, ... }: let
pkgs = import nixpkgs {};
in {
packages.x86_64-linux.meat = pkgs.callPackage ./default.nix;
};
}

138
flakes/murex-meat/meat.mx Executable file
View file

@ -0,0 +1,138 @@
#!/usr/bin/env murex
config: set proc force-tty true
config: set proc strict-types true
args meat_args %{
AllowAdditional: true
Flags: {
--all: bool
-a: --all
}
}
catch {
err $meat_args.error
exit 1
}
function meat {
if { is-null $ENV.FLAKE } {
meat_print(NO RECIPE FOUND)
exit
}
$pd = $PWD
cd $ENV.FLAKE
meat_print "----- MEAT ----------------------------------------" true
$a = $args[Additional]
if { $a -> len } then {
meat_parse_cmd $a
} else {
meat_print_help
}
meat_print "---------------------------------------------------" true
cd $pd
}
function meat_print (t: str, !title: bool [false]) {
if {$title} {
out (
$t
)
} else {
out (
$t
)
}
}
function meat_parse_cmd (args: json) {
out args $args
out arglen $args -> count
out argscast $args -> cast json
out argscast $args -> cast json -> count
$cmd = $args[ 0 ]
out cmd $cmd
if { ${$args -> len} > 1 } then {
$opts = ${$args -> ![ 0 ]}
}
out opts $opts
switch $cmd {
case "yum" {
meat_print (CONSUMING DELICIOUS MEATS..)
nh os switch @opts
}
case "poke" {
meat_print (PREPARING SUSPICIOUS MEATS..)
nh os test @opts
}
case "cook" {
meat_print (PREPARING MEATS..)
nh os build @opts
}
case "fresh" {
meat_print (PROCESSING FRESH MEATS..)
meat_do_fresh $opts
}
case "look" {
meat_print (INSPECTING MEAT..)
nix flake info @opts
}
case "gut" {
meat_print (CLEANING MEAT STORES..)
nh clean all @opts
}
default { meat_print_help }
}
}
function meat_print_help {
out ( FRESH - HUNT LATEST MEATS
..N - HUNT LATEST SUBMEATS OF N
..-A - HUNT ALL SUBMEATS
YUM - CONSUME DELICIOUS MEATS
COOK - ONLY PREPARE MEATS
POKE - TASTE SUSPICIOUS MEATS
GUT - CLEAN MEAT STORES
LOOK - INSPECT MEAT)
}
function meat_do_fresh (!opts: str) {
# handle --all flag
if { $GLOBAL.args.flags.all } then {
recursive_update $ENV.FLAKE/flakes
cd $ENV.FLAKE
nix flake update
}
if { $opts } then {
# handle specified subflakes
$opts -> foreach subflake {
meat_print "GET NEW MEAT FOR $(subflake).."
recursive_update $ENV.FLAKE/flakes/$subflake
cd $ENV.FLAKE
nix flake update $subflake
}
}
# simple update
nix flake update
}
function recursive_update (path: str) {
if { $path.Exists } {
cd $path
# update subflakes
g */flake.nix -> foreach dir { recursive_update $dir }
# update this flake
$isflake = ${g flake.nix -> count} > 0
if { $isflake } then {
nix flake update
}
} else {
err "No such subflake at $path"
exit 1
}
}
$GLOBAL.args = $meat_args
meat