From f22fcb46538b2baf2460784408c6b91d60be4fb4 Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L. de Mello" Date: Sat, 4 May 2024 14:27:49 -0300 Subject: [PATCH] feat!: remove nih helper --- hosts/battleship/configuration.nix | 4 - hosts/spacestation/configuration.nix | 5 +- modules/nixos/programs/default.nix | 1 - modules/nixos/programs/nih/cli.sh | 270 ------------------------- modules/nixos/programs/nih/default.nix | 80 -------- 5 files changed, 2 insertions(+), 358 deletions(-) delete mode 100644 modules/nixos/programs/nih/cli.sh delete mode 100644 modules/nixos/programs/nih/default.nix diff --git a/hosts/battleship/configuration.nix b/hosts/battleship/configuration.nix index ffbd00e..4c5a5c1 100644 --- a/hosts/battleship/configuration.nix +++ b/hosts/battleship/configuration.nix @@ -15,10 +15,6 @@ programs.nh.enable = true; programs.nh.flake = "/home/guz/nix"; - programs.nih.enable = true; - programs.nih.flakeDir = "/home/guz/nix"; - programs.nih.host = "battleship"; - profiles.locale.enable = true; programs.hyprland.enable = true; diff --git a/hosts/spacestation/configuration.nix b/hosts/spacestation/configuration.nix index 98008da..c7c8e0e 100755 --- a/hosts/spacestation/configuration.nix +++ b/hosts/spacestation/configuration.nix @@ -12,9 +12,8 @@ ./hardware-configuration.nix ]; - programs.nih.enable = true; - programs.nih.flakeDir = "/home/guz/.nix"; - programs.nih.host = "spacestation"; + programs.nh.enable = true; + programs.nh.flake = "/home/guz/nix"; profiles.locale.enable = true; diff --git a/modules/nixos/programs/default.nix b/modules/nixos/programs/default.nix index b40021a..ba8279d 100644 --- a/modules/nixos/programs/default.nix +++ b/modules/nixos/programs/default.nix @@ -1,7 +1,6 @@ {...}: { imports = [ ./nh - ./nih ./hyprland.nix ./steam.nix ]; diff --git a/modules/nixos/programs/nih/cli.sh b/modules/nixos/programs/nih/cli.sh deleted file mode 100644 index 69702c7..0000000 --- a/modules/nixos/programs/nih/cli.sh +++ /dev/null @@ -1,270 +0,0 @@ - -function util-show-diff() { - local prefix="$1"; - - gum log --structured --prefix "$prefix" --level debug 'Creatting diff files' - temp_file="$(mktemp /tmp/nih-diff-XXXXX)" - git diff -U0 '*.*' > "$temp_file" - echo "$(gum format -l diff -t code < "$temp_file")" > "$temp_file" - gum pager < "$temp_file" - rm "$temp_file" -} - -function util-build() { - local prefix="$1"; - local flake_dir="$2"; - local host="$3"; - - set -e - - pushd "$flake_dir" > /dev/null - - for f in ./secrets/*.lesser.*; do - local filename="$(basename -- "$f")" - local extension="${filename##*.}" - local filename="${filename%.*}" - local subextenstion="${filename##*.}" - - if [[ "$subextenstion" == "decrypted" ]]; then - gum log --structured --prefix "$prefix" --level warn 'File already decrypted!' file "$f" - else - gum log --structured --prefix "$prefix" --level debug 'Decrypting lesser secret file' file "$f" - sops --output "./secrets/$filename.decrypted.$extension" -d "$f" - fi - done - - # Add secret files - gum log --structured --prefix "$prefix" --level debug 'Adding decrypted secret files' - git add ./secrets/*.decrypted.* - - # Build NixOS - gum log --structured --prefix "$prefix" --level debug 'Building NixOS' - sudo nixos-rebuild switch --flake "$flake_dir#$host" \ - || (gum log --structured --prefix "$prefix" --level debug 'Removing decrypted secret files' \ - && git reset ./secrets/*.decrypted.* \ - && for f in ./secrets/*.decrypted.*; do rm "$f"; done \ - && gum log --structured --prefix "$prefix" --level error 'Error building new config' \ - && exit 1) - - git reset ./secrets/*.decrypted.* - for f in ./secrets/*.decrypted.*; do - gum log --structured --prefix "$prefix" --level debug 'Removing decrypted secret file' file "$f" - rm "$f" - done - - popd > /dev/null -} - -function util-format() { - local prefix="$1" - local flake_dir="$2" - - set -e - - pushd "$flake_dir" > /dev/null - - gum log --structured --prefix "$prefix" --level info 'Formatting files' - - gum log --structured --prefix "$prefix" --level debug 'Formatting *.nix files' - alejandra . &>/dev/null \ - || (alejandra . ; \ - gum log --structured \ - --prefix "$prefix" \ - --level error 'Failed to format files' \ - && exit 1) - - gum log --structured --prefix "$prefix" --level debug 'Formatting *.sh files' - find "$flake_dir" -type f -name "*.sh" -execdir shellharden --replace {} \; - # find "$flake_dir" -type f -name "*.sh" -execdir shfmt {} \; - - # gum log --structured --prefix "$prefix" --level debug 'Formatting *.{md,scss} files' - # find "$flake_dir" -type f \( -iname '*.md' -o -iname '*.scss' \) -execdir prettier -w {} \; - - popd > /dev/null -} - -function nih-edit() { - local flake_dir="$1" - local host="$2" - - # Exit if a command exits with a non-zero value - set -e - - # Push directory to history - pushd "$flake_dir" > /dev/null - - # Edit file - "$EDITOR" "$(gum file "$flake_dir")" - - # Skip if there's no changes - if git diff --quiet "*.*"; then - gum log --structured \ - --prefix 'nih edit' \ - --level warn \ - 'No files changed' - popd > /dev/null - exit 0 - fi - - util-format 'nih edit' "$flake_dir" - - # Show modifications - util-show-diff 'nih edit' - - # Build nixos - util-build 'nih edit' "$flake_dir" "$host" - - gum log --structured \ - --prefix 'nih edit' \ - --level info 'NixOS finished building, please commit the changes' - notify-send -e "NixOS finished building, please commit the changes" \ - --icon=software-update-available \ - --urgency=normal - - case "$(gum choose --limit 1 'Commit' 'Open lazygit' 'No commit')" in - "Commit") - commit_msg="$(gum write --prompt 'Commit message' --placeholder 'Commit message')" - git commit -am "$commit_msg" - - gum confirm 'Push changes to remote?' \ - && git push \ - || echo ""; - ;; - "Open lazygit") - lazygit - - gum confirm 'Push changes to remote?' \ - && git push \ - || echo ""; - ;; - *) - gum log --structured \ - --prefix 'nih edit' \ - --level info 'Not commiting' - ;; - esac - - gum log --structured --prefix 'nih edit' --level info 'NixOS rebuilt!' - notify-send -e "NixOS Rebuilt!" \ - --icon=software-update-available \ - --urgency=low - - # Pop back to previous directory - popd > /dev/null -} - -function nih-switch () { - local flake_dir="$1" - local host="$2" - - set -e - - pushd "$flake_dir" > /dev/null - - gum log --structured --prefix 'nih switch' --level info 'Switching NixOS config' - - util-format 'nih switch' "$flake_dir" - - # Build nixos - util-build 'nih switch' "$flake_dir" "$host" - - gum log --structured --prefix 'nih switch' --level info 'NixOS rebuilt!' - notify-send -e "NixOS Rebuilt!" \ - --icon=software-update-available \ - --urgency=low - - popd > /dev/null -} - -function nih-install() { - local pkgs=() - local index=0 - for arg in "$@"; do - if [[ "$arg" == "--" ]]; then - index=$(($index + 1)) - break - fi - pkgs+=("nixpkgs#$arg") - index=$(($index + 1)) - done - shift "$index" - - gum log --structured --prefix 'nih install' --level info "Temporaly installing to current shell:" - gum log --structured --prefix 'nih install' --level info "${pkgs[@]}" - - nix shell "${pkgs[@]}" "$@" - - gum log --structured --prefix 'nih install' --level info "Packages intalled!" -} - -function nih-execute() { - local pkg="$1" - shift 1 - nix run "nixpkgs#$pkg" "$@" -} - -function nih-sync() { - local flake_dir="$1" - local host="$2" - - set -e - - pushd "$flake_dir" > /dev/null - - gum log --structured --prefix 'nih sync' --level info 'Syncing NixOS config' - - util-format 'nih sync' "$flake_dir" - - git reset ./secrets/*.decrypted.* - for f in ./secrets/*.decrypted.*; do - gum log --structured --prefix "$prefix" --level debug 'Removing decrypted secret file' file "$f" - rm "$f" - done - - # Skip if there's no changes - if git diff --quiet "*.*"; then - gum log --structured \ - --prefix 'nih sync' \ - --level warn \ - 'No files changed' - popd - exit 0 - else - # Show modifications - util-show-diff 'nih sync' - - commit_msg="$(gum write --prompt 'Commit message' --placeholder 'Commit message')" - git commit -am "$commit_msg" - - gum log --structured --prefix 'nih sync' --level debug 'Pushing to remote' - git push - - gum log --structured --prefix 'nih sync' --level info 'NixOS configuration synced!' - fi - - popd > /dev/null -} - -function nih-format() { - local flake_dir="$1" - - gum log --structured --prefix "nih format" --level info 'Formatting NixOS config files' - - util-format 'nix format' "$flake_dir" - - gum log --structured --prefix "nih format" --level info 'NixOS config files formatted' -} - -case "$1" in - "edit") nih-edit "$flake_dir" "$host" ;; - "switch" | "build") nih-switch "$flake_dir" "$host" ;; - "install" | "i" ) shift 1; nih-install "$@" ;; - "exec" | "x" ) shift 1; nih-execute "$@" ;; - "sync") nih-sync "$flake_dir" "$host" ;; - "format") nih-format "$flake_dir" ;; - "forgejo") shift 1; nih-forgejo "$@" ;; - "forgejo-act") shift 1; nih-forgejo-act "$@" ;; - *) gum log --structured --prefix 'nih' --level error "Command $1 does not exist" ;; -esac - -echo ""; diff --git a/modules/nixos/programs/nih/default.nix b/modules/nixos/programs/nih/default.nix deleted file mode 100644 index 693baa5..0000000 --- a/modules/nixos/programs/nih/default.nix +++ /dev/null @@ -1,80 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: let - cfg = config.programs.nih; - cli = pkgs.writeShellScriptBin "nih" '' - # Since alias= doesn't work in bash scripts - function alejandra() { ${pkgs.alejandra}/bin/alejandra "$@"; } - function git() { ${pkgs.git}/bin/git "$@"; } - function gum() { ${pkgs.gum}/bin/gum "$@"; } - function lazygit() { ${pkgs.lazygit}/bin/lazygit "$@"; } - function notify-send() { - (${pkgs.libnotify}/bin/notify-send "$@" &>/dev/null || echo "") - } - function mktemp() { ${pkgs.mktemp}/bin/mktemp "$@"; } - # function prettier() { ${pkgs.nodePackages.prettier}/lib/node_modules/.bin/prettier ; } - function shellharden() { ${pkgs.shellharden}/bin/shellharden "$@"; } - # function shfmt() { ${pkgs.shfmt}/bin/shfmt "$@"; } - function sops() { ${pkgs.sops}/bin/sops "$@"; } - - flake_dir="${toString cfg.flakeDir}"; - host="${toString cfg.host}"; - - function nih-forgejo() { - ${ - if config.services.forgejo.actions.enable - then '' - sudo --user=${config.services.forgejo.user} \ - ${config.services.forgejo.package}/bin/gitea \ - --work-path ${config.services.forgejo.stateDir} \ - "$@" - '' - else '' - gum log --structured --prefix 'nih' --level error "Forgejo action runnser service is not enabled" - '' - } - } - - function nih-forgejo-act() { - ${ - if config.services.forgejo.enable - then '' - sudo --user=${config.services.forgejo.user} \ - ${config.services.gitea-actions-runner.package}/bin/act_runner \ - --config /var/lib/gitea-runner/forgejo${toString config.services.forgejo.settings.server.HTTP_PORT} \ - "$@" - '' - else '' - gum log --structured --prefix 'nih' --level error "Forgejo service is not enabled" - '' - } - } - - ${builtins.readFile ./cli.sh} - ''; -in { - imports = []; - options.programs.nih = with lib; - with lib.types; { - enable = mkEnableOption ""; - host = mkOption { - type = str; - }; - flakeDir = mkOption { - type = str; - }; - cli = mkOption { - type = bool; - default = cfg.enable; - }; - }; - config = with lib; - mkIf cfg.enable { - environment.systemPackages = [ - cli - ]; - }; -}