{pkgs, ...}: let yo = pkgs.writeText "yo.rb" '' require '${./nixos.rb}' FLAKE_PATH = "/home/collin/nixos" case ARGV[0] when "deploy", "dep" ssh_host = ARGV[1] or abort "must specify ssh target (host or user@host)" hostname = ssh_host.include?("@") ? ssh_host.split("@", 2).last : ssh_host store_path = Nix.build_configuration( flake_path: FLAKE_PATH, hostname: hostname, use_nom: true ) Nix.switch_to_configuration_remote( store_path: store_path, ssh_host: ssh_host, use_magic_rollback: true ) when "switch", "sw" store_path = Nix.build_configuration( flake_path: FLAKE_PATH, hostname: `hostname`.chomp, use_nom: true ) Nix.switch_to_configuration( store_path: store_path, verb: "switch", sudo_cmd: "run0 --background=" ) when "boot" store_path = Nix.build_configuration( flake_path: FLAKE_PATH, hostname: `hostname`.chomp, use_nom: true ) Nix.switch_to_configuration( store_path: store_path, verb: "boot", sudo_cmd: "run0 --background=" ) when "test" store_path = Nix.build_configuration( flake_path: FLAKE_PATH, hostname: `hostname`.chomp, use_nom: true ) Nix.switch_to_configuration( store_path: store_path, verb: "test", sudo_cmd: "run0 --background=" ) when "build" hostname = ARGV[1] or `hostname`.chomp Nix.build_configuration( flake_path: FLAKE_PATH, hostname: hostname, use_nom: true ) end ''; env = pkgs.stdenv.mkDerivation { name = "ruby-env"; src = ./.; nativeBuildInputs = [pkgs.makeWrapper]; buildInputs = [pkgs.ruby pkgs.nix-output-monitor]; installPhase = '' mkdir -p $out/bin makeWrapper ${pkgs.ruby}/bin/ruby $out/bin/ruby \ --prefix PATH : ${pkgs.lib.makeBinPath [pkgs.nix-output-monitor]} ''; }; in pkgs.writeShellScriptBin "yo" '' exec ${env}/bin/ruby ${yo} "$@" ''