finish styx rename

This commit is contained in:
Daylin Morgan 2024-01-28 11:45:19 -06:00
parent 2880a7a9e1
commit f35481f6bf
Signed by: daylin
GPG key ID: C1E52E7DD81DF79F
6 changed files with 2 additions and 306 deletions

View file

@ -1,11 +0,0 @@
{
lib,
buildNimPackage,
fetchFromGitHub,
}:
buildNimPackage (final: prev: {
pname = "styx";
version = "2023.1001";
src = ./.;
lockFile = ./lock.json;
})

View file

@ -1 +0,0 @@
{"depends":[{"method":"fetchzip","packages":["cligen"],"path":"/nix/store/b5dgqx2wds42kw2241qv7rmdf29hwl20-source","ref":"1.6.18","rev":"c54e2f3ea09d405a0d1b9bd8e7c0472d657d1193","sha256":"0ms572f6563bc2cr65gnh943adld5xbd6jy2w7gwvybxpczkxlf3","srcDir":"","url":"https://github.com/c-blake/cligen/archive/c54e2f3ea09d405a0d1b9bd8e7c0472d657d1193.tar.gz"}]}

View file

@ -1,142 +0,0 @@
import std/[logging, os, osproc, tables, times]
from std/nativesockets import getHostname
var logger = newConsoleLogger()
addHandler(logger)
let summaryFilePath = getEnv("GITHUB_STEP_SUMMARY")
proc writeToSummary(msg: string) =
let f = open(summaryFilePath, mode = fmAppend)
write(f,msg)
close(f)
type
StyxContext = object
flake, host: string
cache = "daylin"
nom: bool = true
proc newCtx(): StyxContext =
result = StyxContext()
result.flake = getEnv("FLAKE_PATH", getEnv("HOME") / "nixcfg")
result.host = getHostname()
proc systemFlakePath(c: StyxContext): string =
c.flake & "#nixosConfigurations." & c.host & ".config.system.build.toplevel"
proc execQuit(cmd: string) =
quit (execCmd cmd)
proc build(c: StyxContext) =
## build nixos
let
cmd = if c.nom: "nom" else: "nix"
execQuit cmd & " build " & c.systemFlakePath
proc dry(c: StyxContext) =
## poor man's nix flake check
execQuit "nix build " & c.systemFlakePath & " --dry-run"
proc cache(c: StyxContext) =
## build and upload to binary cache
let start = getTime()
let code = execCmd """
cachix watch-exec """ & c.cache & """ \
-- \
nix build """ & c.systemFlakePath & """ \
--print-build-logs \
--accept-flake-config
"""
let duration = (getTime() - start)
if code != 0:
error "failed to build configuration for: ", c.host
if summaryFilePath != "":
writeToSummary(
"Built host: " & c.host & " in " & $duration & " seconds"
)
info "Built host: " & c.host & " in " & $duration & " seconds"
proc touchPr(c: StyxContext) =
const cmds = ["git branch -D update_flake_lock_action",
"git fetch origin",
"git checkout update_flake_lock_action",
"git commit --amend --no-edit",
"git push origin update_flake_lock_action --force"]
for cmd in cmds:
let code = execCmd cmd
if code != 0:
error "command: ",cmd,"exited with code: ",$code
proc nixosRebuild(c: StyxContext, cmd: string) =
execQuit "sudo nixos-rebuild " & cmd & " " & " --flake " & c.flake
proc boot(c: StyxContext) =
## nixos rebuild boot
nixosRebuild c, "build"
proc switch(c: StyxContext) =
## nixos rebuild switch
nixosRebuild c, "switch"
proc runCmd(c: StyxContext, cmd: string) =
case cmd:
of "dry": dry c
of "switch": switch c
of "boot": boot c
of "cache": cache c
of "build": build c
of "touch-pr": touchPr c
else:
error "unknown command: ", cmd
quit 1
const usage = """
styx <cmd> [opts]
commands:
dry poor man's nix flake check
boot nixos-rebuild boot
switch nixos-rebuild switch
cache build and push to cachix
build build system flake
touch-pr trigger Github Action Ci
options:
--help > show this help
-h|--host > hostname (current host)
-f|--flake > path to flake ($FLAKE_PATH or $HOME/styx)
-c|--cache > name of cachix binary cache (daylin)
"""
proc parseFlag(c: var StyxContext, key, val: string) =
case key:
of "help":
echo usage; quit 0
of "h","host":
c.host = val
of "f","flake":
c.flake = val
of "no-nom":
c.nom = false
when isMainModule:
import std/parseopt
var
c = newCtx()
cmd: string
for kind, key, val in getopt():
case kind
of cmdArgument:
cmd = key
of cmdLongOption, cmdShortOption:
parseFlag c, key, val
of cmdEnd:
discard
if cmd == "":
echo "please specify a command, see below"
echo usage; quit 1
info $c
runCmd c, cmd

View file

@ -1,14 +0,0 @@
# Package
author = "Daylin Morgan"
version = "2023.1001"
description = "styx"
license = "MIT"
srcDir = "."
bin = @["styx"]
# Dependencies
requires "nim >= 2.0.0"
requires "cligen"

View file

@ -1,136 +0,0 @@
#!/usr/bin/env bash
set -e
TERM=${TERM:-dumb}
HOSTNAME=${HOSTNAME:-$(hostname)}
FLAKE_PATH=${FLAKE_PATH:-$HOME/nixcfg}
DIM="$(tput dim)"
BOLD="$(tput bold)"
RED="$(tput setaf 1)"
GREEN="$(tput setaf 2)"
YELLOW="$(tput setaf 3)"
CYAN="$(tput setaf 4)"
RESET="$(tput sgr0)"
PREFIX="${CYAN}styx${RESET}"
log() {
printf "%s | %s\n" "$PREFIX" "$*"
}
error() {
printf "%s | %s | %s\n" "$PREFIX" "${RED}error${RESET}" "$*"
}
help() {
cat <<EOF
styx <cmd> [-h]
${DIM}sister moon to nix on pluto
sister software to nix in this repo${RESET}
${BOLD}commands${RESET}:
EOF
printf "${GREEN}%8s${RESET} | ${YELLOW}%s${RESET}\n" \
fmt "format *.nix" \
build "build and monitor with nom" \
boot "evaluate flake for next boot" \
switch "perform nixos rebuild" \
store "run some store cleanup" \
cache "nix build and push to daylin.cachix.org"
exit
}
fmt() {
alejandra . "$@"
}
boot() {
sudo nixos-rebuild boot --flake "$FLAKE_PATH" "$@"
}
switch() {
sudo nixos-rebuild switch --flake "$FLAKE_PATH" "$@"
}
store() {
nix store optimise "$@"
}
build() {
nom build "$FLAKE_PATH#nixosConfigurations.${HOSTNAME}.config.system.build.toplevel"
case "$1" in
switch | boot | test ) sudo ./result/bin/switch-to-configuration "$1";;
esac
}
dry() {
# poor mans nix flake check
nix build "$FLAKE_PATH#nixosConfigurations.${HOSTNAME}.config.system.build.toplevel" --dry-run
}
cache() {
start=$(date +%s)
cachix watch-exec daylin \
-- \
nix build "$FLAKE_PATH#nixosConfigurations.${HOSTNAME}.config.system.build.toplevel" \
--print-build-logs \
--accept-flake-config
end=$(date +%s)
runtime=$(date -d@$((end-start)) +'%M minutes, %S seconds')
echo "Built host: ${HOSTNAME} in ${runtime} seconds" >> "$GITHUB_STEP_SUMMARY"
}
if [[ $# -eq 0 ]]; then
log no command specified see below for help
help
fi
while [[ $# -gt 0 ]]; do
case $1 in
fmt | boot | switch | store | build | dry | cache)
cmd=$1
shift
;;
-f | --flake)
FLAKE_PATH="$2"
shift; shift;
;;
-h | --host)
shift
HOSTNAME="$1"
shift;
;;
--help)
help
;;
--)
shift
break
;;
-*,--*)
error "unknown flag: ${BOLD}$1${RESET}"
exit 1
;;
*)
error "unknown command: ${BOLD}$1${RESET}"
exit 1
;;
esac
done
if [[ $# -gt 0 ]]; then
echo "forwarding args: ${BOLD}$*${RESET}"
fi
if [[ -z ${cmd+x} ]]; then
error "please specify a command"
help
fi
$cmd "$@"

View file

@ -1,5 +1,5 @@
# daylin's nixcfg todo's
# oizys todo's
- [ ] add a styx command to trigger build on flake.lock pr
<!-- nothing :) -->
<!-- generated with <3 by daylinmorgan/todo -->