Fix the disk detection issue on the installer

This commit is contained in:
Sameer Rahmani 2024-03-27 17:25:29 +00:00
parent f861e50f3e
commit be288a69c0
Signed by: lxsameer
GPG Key ID: 8741FACBF412FFA5
8 changed files with 85 additions and 82 deletions

View File

@ -238,17 +238,18 @@
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_3"
}, },
"locked": { "locked": {
"lastModified": 1711478570, "lastModified": 1711499008,
"narHash": "sha256-qjzwq2qj0e9EpN7QYTnTXipHmrWWUG3bEARmzju81OI=", "narHash": "sha256-uXUEpBFfa3e3g37XKJKnlns7wF8Jxq/OE2vvVNbYmo8=",
"ref": "refs/heads/v4", "ref": "v4",
"rev": "2d459669cb67e1960579e97e05ccac05c993b70a", "rev": "1f4e6f158ef5922c9b7d4214d0ba1de19b7dba63",
"revCount": 1063, "revCount": 1065,
"type": "git", "type": "git",
"url": "file:///home/lxsameer/src/fg42" "url": "https://devheroes.codes/FG42/FG42"
}, },
"original": { "original": {
"ref": "v4",
"type": "git", "type": "git",
"url": "file:///home/lxsameer/src/fg42" "url": "https://devheroes.codes/FG42/FG42"
} }
}, },
"flake-compat": { "flake-compat": {

View File

@ -30,8 +30,8 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
#fg42.url = "git+https://devheroes.codes/FG42/FG42?ref=v4"; fg42.url = "git+https://devheroes.codes/FG42/FG42?ref=v4";
fg42.url = "/home/lxsameer/src/fg42"; #g42.url = "/home/lxsameer/src/fg42";
flake_utils.url = "github:numtide/flake-utils"; flake_utils.url = "github:numtide/flake-utils";

View File

@ -213,22 +213,26 @@ rec {
}; };
}; };
disk = diskFile: grubPart: { lib, pkgs, inputs, hostBuilderConfig, ... }: { disk-installer = host: diskFile: { lib, pkgs, inputs, hostBuilderConfig, ... }: {
# imports = if !hostBuilderConfig.inVM imports = [];
# then [
# "${inputs.disko}/module.nix"
# ]
# else [];
imports = [
"${inputs.disko}/module.nix"
];
disko = if !hostBuilderConfig.inVM
then import diskFile
else {};
environment.systemPackages = [ environment.systemPackages = [
pkgs.disko pkgs.disko
(pkgs.writeShellScriptBin "install-universe" ''
# if /etc/universe_release
export NIX_PATH=/etc/nix/inputs/
echo "Partitioning the disk..."
echo "${diskFile}"
cp "${diskFile}" /etc/sdisk.nix
${pkgs.disko}/bin/disko -m disko /etc/disks.nix
mkdir -p /mnt/etc/nix
ln -s /mnt/etc/nix/inputs/ /etc/nix/inputs/
cd /mnt
echo "running installer"
nixos-install --impure --flake self#${host} --root /mnt -v --show-trace
echo "done"
'')
]; ];
environment.etc = { environment.etc = {
@ -240,25 +244,20 @@ rec {
boot.loader.grub.efiInstallAsRemovable = true; boot.loader.grub.efiInstallAsRemovable = true;
}; };
autoInstaller = host: partitioner: { lib, pkgs, ... }: { disk = diskFile: { lib, pkgs, inputs, hostBuilderConfig, ... }: {
imports = [ imports = [
partitioner "${inputs.disko}/module.nix"
]; ];
environment.systemPackages = [
(pkgs.writeShellScriptBin "install-universe" '' disko = lib.optionalAttrs (!hostBuilderConfig.inVM) (import diskFile).disko;
# if /etc/universe_release environment.etc = {
export NIX_PATH=/etc/nix/inputs/ "disks.nix".source = diskFile;
echo "Partitioning the disk..." };
${pkgs.disko}/bin/disko -m disko /etc/disks.nix
mkdir -p /mnt/etc/nix boot.loader.grub.device = "nodev";
ln -s /mnt/etc/nix/inputs/ /etc/nix/inputs/ boot.loader.grub.efiSupport = true;
cd /mnt boot.loader.grub.efiInstallAsRemovable = true;
echo "running installer"
nixos-install --impure --flake self#${host} --root /mnt -v --show-trace
echo "done"
'')
];
}; };
styles = { lib, pkgs, inputs, ...}: { styles = { lib, pkgs, inputs, ...}: {

View File

@ -65,7 +65,7 @@ rec {
isNormalUser = true; isNormalUser = true;
shell = pkgs.zsh; shell = pkgs.zsh;
uid = 9000; uid = 9000;
group = "lxsameer"; group = "mary";
extraGroups = [ extraGroups = [
"wheel" "wheel"

View File

@ -43,7 +43,7 @@ in nixpkgs.lib.nixosSystem {
base base
installerUser installerUser
generator generator
(autoInstaller host diskModule) diskModule
]); ]);
# Pass these attributes to all the modules for this # Pass these attributes to all the modules for this

View File

@ -58,14 +58,14 @@ let
fg42 = inputs.fg42.packages.${system}.default; fg42 = inputs.fg42.packages.${system}.default;
inVM = (utils.sanitizeBuilderConfig hostBuilderConfig).inVM; inVM = (utils.sanitizeBuilderConfig hostBuilderConfig).inVM;
host = if inVM then "majinVM" else "majin";
in { in {
installer = import ./installer.nix (params // { installer = import ./installer.nix (params // {
host = if inVM then "majinVM" else "majin"; diskModule = (modules.disk-installer
diskModule = (modules.disk host
(if inVM then ./majin/vm.disk.nix else ./majin/disks.nix) (if inVM then ./majin/vm.disk.nix else ./majin/disks.nix));
(if inVM then "/dev/sda" else "/dev/disk/by-partlabel/disk-twoT-root"));
}); });
majin = nixpkgs.lib.nixosSystem { majin = nixpkgs.lib.nixosSystem {
@ -76,8 +76,7 @@ in {
"${nixpkgs}/nixos/modules/profiles/qemu-guest.nix" "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
this this
(disk (disk
(if inVM then ./majin/vm.disk.nix else ./majin/disks.nix) (if inVM then ./majin/vm.disk.nix else ./majin/disks.nix))
(if inVM then "/dev/sda" else "/dev/disk/by-partlabel/disk-twoT-root"))
bootable bootable
base base
lxsameer.user lxsameer.user

View File

@ -40,7 +40,7 @@ let
services.xserver.enable = true; services.xserver.enable = true;
services.xserver.displayManager.sddm.enable = true; services.xserver.displayManager.sddm.enable = true;
services.xserver.desktopManager.plasma6.enable = true; services.xserver.desktopManager.plasma5.enable = true;
# I want to fully control my users via nix # I want to fully control my users via nix
users.mutableUsers = false; users.mutableUsers = false;
@ -55,7 +55,7 @@ let
openFirewall = true; openFirewall = true;
}; };
fileSystems."/home".neededForBoot = true; fileSystems."/".neededForBoot = true;
services.gvfs.enable = true; services.gvfs.enable = true;
networking.firewall = { networking.firewall = {
@ -69,13 +69,16 @@ let
fg42 = inputs.fg42.packages.${system}.default; fg42 = inputs.fg42.packages.${system}.default;
inVM = (utils.sanitizeBuilderConfig hostBuilderConfig).inVM; inVM = (utils.sanitizeBuilderConfig hostBuilderConfig).inVM;
host = if inVM then "marylandVM" else "maryland";
in { in {
installer = import ./installer.nix (params // { installer = import ./installer.nix (params // {
host = if inVM then "marylandVM" else "maryland"; inherit host;
diskModule = (modules.disk diskModule = (modules.disk-installer
(if inVM then ./maryland/vm.disk.nix else ./maryland/disks.nix) host
(if inVM then "/dev/sda" else "/dev/nvme0n1")); (if inVM then ./maryland/vm.disk.nix else ./maryland/disks.nix));
}); });
maryland = nixpkgs.lib.nixosSystem { maryland = nixpkgs.lib.nixosSystem {
@ -86,8 +89,7 @@ in {
"${nixpkgs}/nixos/modules/profiles/qemu-guest.nix" "${nixpkgs}/nixos/modules/profiles/qemu-guest.nix"
this this
(disk (disk
(if inVM then ./maryland/vm.disk.nix else ./maryland/disks.nix) (if inVM then ./maryland/vm.disk.nix else ./maryland/disks.nix))
(if inVM then "/dev/sda" else "/dev/nvme0n1p3"))
bootable bootable
base base
mary.user mary.user
@ -100,7 +102,7 @@ in {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.users.lxsameer = mary.desktop; home-manager.users.mary = mary.desktop;
home-manager.extraSpecialArgs = { home-manager.extraSpecialArgs = {
inherit inputs fg42; inherit inputs fg42;
}; };

View File

@ -1,35 +1,37 @@
{ {
devices = { disko = {
disk = { devices = {
main = { disk = {
device = "/dev/nvme0n1"; main = {
type = "disk"; device = "/dev/nvme0n1";
content = { type = "disk";
type = "gpt"; content = {
partitions = { type = "gpt";
ESP = { partitions = {
size = "1G"; ESP = {
type = "EF00"; size = "1G";
content = { type = "EF00";
type = "filesystem"; content = {
format = "vfat"; type = "filesystem";
mountpoint = "/boot"; format = "vfat";
mountpoint = "/boot";
};
}; };
}; swap = {
swap = { size = "64G";
size = "64G"; content = {
content = { type = "swap";
type = "swap"; resumeDevice = true;
resumeDevice = true; };
}; };
};
root = { root = {
size = "100%"; size = "100%";
content = { content = {
type = "filesystem"; type = "filesystem";
format = "ext4"; format = "ext4";
mountpoint = "/"; mountpoint = "/";
};
}; };
}; };
}; };