diff --git a/.gitignore b/.gitignore index 69dd811..ea8c4bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1 @@ /target -flake.nix -configuration.nix -home.nix -garrus.nix diff --git a/Cargo.toml b/Cargo.toml index 69aee11..05bc2ba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,6 +5,6 @@ edition = "2021" [dependencies] curl = "0.4.47" -nix = { version = "0.29.0", features = ["mount"] } +nix = "0.29.0" rsfdisk = "0.1.0" sys_metrics = "0.2.7" diff --git a/src/main.rs b/src/main.rs index fe3ba6f..ae63a5b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,16 +1,12 @@ use std::io; use std::io::Write; -use std::fs; use std::fs::File; use std::process::Command; -use std::path::Path; use sys_metrics::disks; use rsfdisk::fdisk::Fdisk; use rsfdisk::core::partition_table::PartitionTableKind; use rsfdisk::core::partition::{Guid, Partition, PartitionKind}; -use nix::mount::{mount, MsFlags}; -use std::os::unix::ffi::OsStrExt; use curl::easy::Easy; fn format_drive(drive_name: &str) -> rsfdisk::Result<()> { @@ -38,11 +34,9 @@ fn format_drive(drive_name: &str) -> rsfdisk::Result<()> { let root = Partition::builder() .partition_type(partition_type) .name("Root") - // Flash drive testing - // .size_in_sectors(121_634_816) - // Internal drive testing - .size_in_sectors(499_033_071_61) - // replace static int with a variable + .size_in_sectors(121_634_816) + // 500GB + //.size_in_sectors(499_033_071_61) .build()?; let _ = disk.partition_add(root)?; @@ -52,80 +46,11 @@ fn format_drive(drive_name: &str) -> rsfdisk::Result<()> { Ok(()) } -fn format_partitions() { - let _efi_partition = Command::new("mkfs.fat") - .arg("-F32") - .arg("-n") - .arg("EFI") - // replace static path with a variable - .arg("/dev/nvme1n1p1") - .output() - .expect("Failed to partition boot partition as FAT32"); - - let _root_partition = Command::new("mkfs.ext4") - // replace static path with a variable - .arg("/dev/nvme1n1p2") - .output() - .expect("Failed to partition root partition as ext4"); -} - -fn mount_root() { - // replace static path with a variable - let root_source = Some(Path::new("/dev/nvme1n1p2")); - let root_target = Path::new("/mnt"); - - // unmounts root before hand to fix bugs - let _umount_root = Command::new("umount") - // replace static path with a variable - .arg("/dev/nvme1n1p2") - .output() - .expect("Failed to unmount root"); - - mount( - root_source, - root_target, - Some("ext4"), - MsFlags::empty(), - None::<&[u8]>, - ) - .expect("Failed to mount root partition"); - - // Deletes the boot directory - // Shouldn't be needed with a blank drive - // So just for testing - let _delete_boot_directory = Command::new("rm") - .arg("-r") - .arg("/mnt/boot") - .output() - .expect("Failed to delete boot directory"); - - // Creates the boot directory in /mnt/boot - let _create_boot_directory = Command::new("mkdir") - .arg("/mnt/boot") - .output() - .expect("Failed to create boot directory"); -} - -fn mount_boot() { - // replace static path with a variable - let boot_source = Some(Path::new("/dev/nvme1n1p1")); - let boot_target = Path::new("/mnt/boot"); - - mount( - boot_source, - boot_target, - Some("vfat"), - MsFlags::empty(), - None::<&[u8]>, - ) - .expect("Failed to mount boot partition"); - - println!(""); -} +// fn mount_parts() {} fn grab_flake() { let mut easy = Easy::new(); - easy.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/rust-rewrite/flake.nix").unwrap(); + easy.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/flake.nix").unwrap(); let mut file = File::create("flake.nix").unwrap(); @@ -141,7 +66,7 @@ fn grab_flake() { fn grab_config() { let mut easy = Easy::new(); - easy.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/rust-rewrite/configuration.nix").unwrap(); + easy.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/configuration.nix").unwrap(); let mut file = File::create("configuration.nix").unwrap(); @@ -157,7 +82,7 @@ fn grab_config() { fn grab_home() { let mut easy = Easy::new(); - easy.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/rust-rewrite/home.nix").unwrap(); + easy.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/home.nix").unwrap(); let mut file = File::create("home.nix").unwrap(); @@ -194,8 +119,6 @@ fn main() { println!(""); println!("Use the full drive path such as /dev/nvme0n1 or /dev/sda"); - println!("If you're on the Lemur nvme1n1 is the test drive"); - println!(""); println!("Which drive do we want to use for this installation?: {}", drive_name); io::stdin() @@ -208,12 +131,18 @@ fn main() { let _ = format_drive(drive_name); // Formatting the partitions - format_partitions(); + let _efi_partition = Command::new("mkfs.fat") + .arg("-F32") + .arg("-n") + .arg("EFI") + .arg("/dev/sda1") + .output() + .expect("Failed to partition boot partition as FAT32"); - // Mounting the partitions - mount_root(); - - // mount_boot(); + let _root_partition = Command::new("mkfs.ext4") + .arg("/dev/sda2") + .output() + .expect("Failed to partition root partition as ext4"); // Download nix files grab_flake(); @@ -227,19 +156,10 @@ fn main() { .output() .expect("Failed to execute command"); - println!(""); - println!("-------------------------"); - println!("Water packed!"); - println!("Treats packed!"); - println!("We're ready for our walk!"); - println!("-------------------------"); - // Host selection loop { println!(""); - println!("Host selection:"); - println!("---------------"); - println!(""); + println!("Host selection"); println!("1. Lemur Pro 13 (Garrus)"); println!("2. Device 2"); println!("3. Quit"); @@ -255,7 +175,7 @@ fn main() { let mut garrus_config = Easy::new(); garrus_config.url("https://gitlab.com/ahoneybun/nix-configs/-/raw/main/hosts/x86_64/garrus/configuration.nix").unwrap(); - let mut config_file = File::create("garrus.nix").unwrap(); + let mut config_file = File::create("configuration.nix").unwrap(); { let mut transfer = garrus_config.transfer(); @@ -265,17 +185,14 @@ fn main() { }).unwrap(); transfer.perform().unwrap(); } - + break + } + "2" => { let _nixos_install = Command::new("nixos-install") .arg("--flake") .arg("/mnt/etc/nixos#garrus") .output() - .expect("Failed to execute command"); - - break - } - "2" => { - println!("Nix the world!"); + .expect("Fiale to execute command"); }, "3" => { println!("Goodbye!"); @@ -284,4 +201,4 @@ fn main() { _ => println!("Invalid choice, try again."), } } -} +} \ No newline at end of file