diff --git a/shell.nix b/shell.nix index df7b7fc..f3174fb 100644 --- a/shell.nix +++ b/shell.nix @@ -13,6 +13,7 @@ llvmPackages.clang # System + openssl pkg-config util-linux ]; diff --git a/src/main.rs b/src/main.rs index e6674ad..c922407 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,13 @@ use std::io; +use std::io::{stdout, Write}; +use std::fs::File; use sys_metrics::disks; use rsfdisk::fdisk::Fdisk; use rsfdisk::core::partition_table::PartitionTableKind; use rsfdisk::core::partition::{Guid, Partition, PartitionKind, PartitionList}; +use curl::easy::Easy; + fn format_drive(drive_name: &str) -> rsfdisk::Result<()> { let mut disk = Fdisk::builder() .assign_device(drive_name) @@ -31,7 +35,7 @@ fn format_drive(drive_name: &str) -> rsfdisk::Result<()> { .name("Root") .size_in_sectors(499_033_071_616) .build()?; - + let _ = disk.partition_add(root)?; disk.partition_table_write_to_disk()?; @@ -39,12 +43,64 @@ fn format_drive(drive_name: &str) -> rsfdisk::Result<()> { Ok(()) } -fn mount_parts() { - +fn mount_parts() {} + +fn grab_flake() { + let mut easy = Easy::new(); + easy.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/flake.nix").unwrap(); + + let mut file = File::create("flake.nix").unwrap(); + + { + let mut transfer = easy.transfer(); + transfer.write_function(|data| { + file.write_all(data).unwrap(); + Ok(data.len()) + }).unwrap(); + transfer.perform().unwrap(); + } +} + +fn grab_config() { + let mut easy = Easy::new(); + easy.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/configuration.nix").unwrap(); + + let mut file = File::create("configuration.nix").unwrap(); + + { + let mut transfer = easy.transfer(); + transfer.write_function(|data| { + file.write_all(data).unwrap(); + Ok(data.len()) + }).unwrap(); + transfer.perform().unwrap(); + } +} + +fn grab_home() { + let mut easy = Easy::new(); + easy.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/home.nix").unwrap(); + + let mut file = File::create("home.nix").unwrap(); + + { + let mut transfer = easy.transfer(); + transfer.write_function(|data| { + file.write_all(data).unwrap(); + Ok(data.len()) + }).unwrap(); + transfer.perform().unwrap(); + } } fn main() { + println!("--------------------------------------"); + println!("| Welcome to the Nyxi Installer 2.0! |"); + println!("--------------------------------------"); + println!(""); + println!("Availble disks for installation:"); + println!("---------------------------------"); println!(""); match disks::get_physical_ioblocks() { @@ -57,7 +113,7 @@ fn main() { } let mut drive_name = String::new(); - + println!(""); println!("Use the full drive path such as /dev/nvme0n1 or /dev/sda"); println!("Which drive do we want to use for this installation?: {}", drive_name); @@ -65,7 +121,7 @@ fn main() { io::stdin() .read_line(&mut drive_name) .expect("Failed to read line"); - + let drive_name = drive_name.trim(); // let deposit_number: f64 = deposit_amount.parse().expect("Input not an integer"); @@ -73,4 +129,9 @@ fn main() { // Partitioning the selected drive format_drive(drive_name); + // Download nix files + grab_flake(); + grab_config(); + grab_home(); + }