From f7e969fdf3bfb0d31086f247aedbe1fceada92cf Mon Sep 17 00:00:00 2001 From: TheWanderingCrow Date: Mon, 25 Aug 2025 14:58:02 -0400 Subject: [PATCH] do password stuff for virtual machines --- hosts/common/users/primary/nixos.nix | 6 ++- hosts/nixos/Dragneel/default.nix | 56 ++++++++++++++++++++++++++++ modules/common/host-spec.nix | 5 +++ 3 files changed, 66 insertions(+), 1 deletion(-) diff --git a/hosts/common/users/primary/nixos.nix b/hosts/common/users/primary/nixos.nix index 8888df7..661260b 100644 --- a/hosts/common/users/primary/nixos.nix +++ b/hosts/common/users/primary/nixos.nix @@ -11,6 +11,7 @@ # Decrypt password to /run/secrets-for-users/ so it can be used to create the user sopsHashedPasswordFile = lib.optionalString (!config.hostSpec.isMinimal) config.sops.secrets."passwords/${hostSpec.username}".path; + virtPass = pkgs.writeText "password" "$y$j9T$ZbQbNHUSFsePoP0X.TdwR/$.EKJWDSY7ZO/nqf4FxgUYA3a47CYAKLzaV7ZAy745R/"; in { users = { mutableUsers = false; # Only allow declarative credentials; Required for password to be set via sops during system activation! @@ -19,7 +20,10 @@ in { ${hostSpec.username} = { home = "/home/${hostSpec.username}"; isNormalUser = true; - hashedPasswordFile = sopsHashedPasswordFile; # Blank if sops is not working. + hashedPasswordFile = + if config.hostSpec.isVirtual + then virtPass + else sopsHashedPasswordFile; linger = true; extraGroups = lib.flatten [ diff --git a/hosts/nixos/Dragneel/default.nix b/hosts/nixos/Dragneel/default.nix index 3fd30e3..f0f3ad8 100644 --- a/hosts/nixos/Dragneel/default.nix +++ b/hosts/nixos/Dragneel/default.nix @@ -3,3 +3,59 @@ # Dragneel - Desktop # # # ###################### +{ + inputs, + lib, + pkgs, + ... +}: { + imports = lib.flatten [ + # Disks + inputs.disko.nixosModules.disko + (lib.custom.relativeToRoot "hosts/common/disks/btrfs-disk.nix") + { + _module.args = { + disk = "/dev/nvme0n1"; + withSwap = true; + swapSize = "8"; + }; + } + + # Misc + + (map lib.custom.relativeToRoot [ + # Required configs + "hosts/common/core" + + # Optional configs + "hosts/common/optional/audio.nix" + "hosts/common/optional/bluetooth.nix" + "hosts/common/optional/pentesting.nix" + "hosts/common/optional/gaming.nix" + "hosts/common/optional/printing.nix" + ]) + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + + hostSpec = { + hostName = "Dragneel"; + isVirtual = true; + persistFolder = "/persist"; + }; + + networking = { + networkmanager.enable = true; + enableIPv6 = false; + }; + + boot.loader = { + limine = { + enable = true; + efiSupport = true; + }; + efi = { + canTouchEfiVariables = true; + }; + }; +} diff --git a/modules/common/host-spec.nix b/modules/common/host-spec.nix index 698f933..c64cc59 100644 --- a/modules/common/host-spec.nix +++ b/modules/common/host-spec.nix @@ -84,6 +84,11 @@ default = false; description = "Used to indicate a host that is darwin"; }; + isVirtual = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Used to indicate a virtual host"; + }; }; config = {