mirror of
https://github.com/daylinmorgan/oizys.git
synced 2024-12-29 11:30:43 -06:00
Compare commits
3 commits
933f7e1ae0
...
1df7c557a3
Author | SHA1 | Date | |
---|---|---|---|
1df7c557a3 | |||
5973c4d8e7 | |||
779c1cc710 |
6 changed files with 76 additions and 24 deletions
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
description = "nix begat oizys";
|
description = "nix begat oizys";
|
||||||
|
|
||||||
outputs = inputs:(import ./lib inputs).oizysFlake;
|
outputs = inputs: (import ./lib inputs).oizysFlake;
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||||
|
|
|
@ -43,7 +43,11 @@ in {
|
||||||
networking.hostName = "othalan";
|
networking.hostName = "othalan";
|
||||||
time.timeZone = "US/Central";
|
time.timeZone = "US/Central";
|
||||||
boot.loader = {
|
boot.loader = {
|
||||||
systemd-boot ={ enable = true; consoleMode = "max";};
|
systemd-boot =
|
||||||
|
enabled
|
||||||
|
// {
|
||||||
|
consoleMode = "max";
|
||||||
|
};
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
10
pkgs/oizys/oizys-rs/Cargo.lock
generated
10
pkgs/oizys/oizys-rs/Cargo.lock
generated
|
@ -130,6 +130,15 @@ dependencies = [
|
||||||
"strsim",
|
"strsim",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_complete"
|
||||||
|
version = "4.5.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "885e4d7d5af40bfb99ae6f9433e292feac98d452dcb3ec3d25dfe7552b77da8c"
|
||||||
|
dependencies = [
|
||||||
|
"clap",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "clap_derive"
|
name = "clap_derive"
|
||||||
version = "4.5.4"
|
version = "4.5.4"
|
||||||
|
@ -372,6 +381,7 @@ name = "oizys"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap",
|
"clap",
|
||||||
|
"clap_complete",
|
||||||
"homedir",
|
"homedir",
|
||||||
"hostname",
|
"hostname",
|
||||||
]
|
]
|
||||||
|
|
|
@ -7,5 +7,6 @@ edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
clap = { version = "4.5.4", features = ["derive"] }
|
clap = { version = "4.5.4", features = ["derive"] }
|
||||||
|
clap_complete = "4.5.1"
|
||||||
homedir = "0.2.1"
|
homedir = "0.2.1"
|
||||||
hostname = "0.3.1"
|
hostname = "0.3.1"
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
{rustPlatform}:
|
{
|
||||||
|
installShellFiles,
|
||||||
|
rustPlatform,
|
||||||
|
}:
|
||||||
rustPlatform.buildRustPackage {
|
rustPlatform.buildRustPackage {
|
||||||
pname = "oizys";
|
pname = "oizys";
|
||||||
version = "unstable";
|
version = "unstable";
|
||||||
|
@ -6,4 +9,11 @@ rustPlatform.buildRustPackage {
|
||||||
cargoLock = {
|
cargoLock = {
|
||||||
lockFile = ./Cargo.lock;
|
lockFile = ./Cargo.lock;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [installShellFiles];
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
installShellCompletion --cmd oizys \
|
||||||
|
--zsh <($out/bin/oizys --completions zsh)
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use clap::{Parser, Subcommand};
|
use clap::{CommandFactory, Parser, Subcommand};
|
||||||
use std::{env, path::PathBuf, process::Command};
|
use clap_complete::{generate, Generator, Shell};
|
||||||
|
use std::{env, io, path::PathBuf, process::Command};
|
||||||
|
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
#[command(version, about, long_about = None)]
|
#[command(version, about, long_about = None)]
|
||||||
|
@ -20,8 +21,12 @@ struct Cli {
|
||||||
#[arg(long, global=true, action = clap::ArgAction::SetTrue)]
|
#[arg(long, global=true, action = clap::ArgAction::SetTrue)]
|
||||||
no_pinix: bool,
|
no_pinix: bool,
|
||||||
|
|
||||||
|
/// generate shell completion
|
||||||
|
#[arg(long, value_enum)]
|
||||||
|
completions: Option<Shell>,
|
||||||
|
|
||||||
#[command(subcommand)]
|
#[command(subcommand)]
|
||||||
command: Commands,
|
command: Option<Commands>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Subcommand)]
|
#[derive(Debug, Subcommand)]
|
||||||
|
@ -46,7 +51,11 @@ enum Commands {
|
||||||
Build {},
|
Build {},
|
||||||
|
|
||||||
/// print nix flake output
|
/// print nix flake output
|
||||||
Path {},
|
Output {},
|
||||||
|
}
|
||||||
|
|
||||||
|
fn print_completions<G: Generator>(gen: G, cmd: &mut clap::Command) {
|
||||||
|
generate(gen, cmd, cmd.get_name().to_string(), &mut io::stdout());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -58,19 +67,24 @@ struct Oizys {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Oizys {
|
impl Oizys {
|
||||||
fn new(host: Option<String>, flake: Option<PathBuf>, no_pinix: bool, verbose: u8) -> Oizys {
|
fn from(cli: &Cli) -> Oizys {
|
||||||
let hostname = hostname::get().unwrap().to_string_lossy().to_string();
|
let host = cli
|
||||||
let flake_path = env::var("OIZYS_DIR").map_or(
|
.host
|
||||||
|
.clone()
|
||||||
|
.unwrap_or(hostname::get().unwrap().to_string_lossy().to_string());
|
||||||
|
let flake = cli.flake.clone().unwrap_or(env::var("OIZYS_DIR").map_or(
|
||||||
homedir::get_my_home().unwrap().unwrap().join("oizys"),
|
homedir::get_my_home().unwrap().unwrap().join("oizys"),
|
||||||
PathBuf::from,
|
PathBuf::from,
|
||||||
);
|
));
|
||||||
|
|
||||||
Oizys {
|
Oizys {
|
||||||
host: host.unwrap_or(hostname),
|
host,
|
||||||
flake: flake.unwrap_or(flake_path),
|
flake,
|
||||||
no_pinix,
|
no_pinix: cli.no_pinix,
|
||||||
verbose,
|
verbose: cli.verbose,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn output(self: &Oizys) -> String {
|
fn output(self: &Oizys) -> String {
|
||||||
format!(
|
format!(
|
||||||
"{}#nixosConfigurations.{}.config.system.build.toplevel",
|
"{}#nixosConfigurations.{}.config.system.build.toplevel",
|
||||||
|
@ -146,7 +160,14 @@ impl Oizys {
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let cli = Cli::parse();
|
let cli = Cli::parse();
|
||||||
let oizys = Oizys::new(cli.host, cli.flake, cli.no_pinix, cli.verbose);
|
let oizys = Oizys::from(&cli);
|
||||||
|
|
||||||
|
if let Some(completions) = cli.completions {
|
||||||
|
let mut cmd = Cli::command();
|
||||||
|
eprintln!("Generating completion for {completions:?}");
|
||||||
|
print_completions(completions, &mut cmd);
|
||||||
|
std::process::exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
if oizys.verbose > 2 {
|
if oizys.verbose > 2 {
|
||||||
println!("-vv is max verbosity")
|
println!("-vv is max verbosity")
|
||||||
|
@ -155,12 +176,18 @@ fn main() {
|
||||||
println!("{:?}", oizys)
|
println!("{:?}", oizys)
|
||||||
}
|
}
|
||||||
|
|
||||||
match &cli.command {
|
if let Some(command) = &cli.command {
|
||||||
Commands::Dry {} => oizys.build(true),
|
match command {
|
||||||
Commands::Build {} => oizys.build(false),
|
Commands::Dry {} => oizys.build(true),
|
||||||
Commands::Path {} => println!("{}", oizys.output()),
|
Commands::Build {} => oizys.build(false),
|
||||||
Commands::Boot {} => oizys.nixos_rebuild("boot"),
|
Commands::Output {} => println!("{}", oizys.output()),
|
||||||
Commands::Switch {} => oizys.nixos_rebuild("switch"),
|
Commands::Boot {} => oizys.nixos_rebuild("boot"),
|
||||||
Commands::Cache { name } => oizys.cache(name),
|
Commands::Switch {} => oizys.nixos_rebuild("switch"),
|
||||||
|
Commands::Cache { name } => oizys.cache(name),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
eprintln!("No subcommand provided..");
|
||||||
|
let mut cmd = Cli::command();
|
||||||
|
cmd.print_help().unwrap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue