diff --git a/Droidnix/flake.nix b/Droidnix/flake.nix index 0e99fd085..811fb2c89 100644 --- a/Droidnix/flake.nix +++ b/Droidnix/flake.nix @@ -27,11 +27,8 @@ outputs = { self, nixpkgs, home-manager, import-tree, stylix, hyprland, zen-browser, ... }: let system = "x86_64-linux"; - pkgs = import nixpkgs { inherit system; }; flakeRoot = self; - hmModules = home-manager.lib.hmModules; - in rec { - # Direct NixOS configuration for traveldroid + in { nixosConfigurations = { traveldroid = nixpkgs.lib.nixosSystem { inherit system; @@ -42,6 +39,7 @@ specialArgs = { inherit flakeRoot; + inherit home-manager import-tree stylix hyprland zen-browser; }; }; }; diff --git a/Droidnix/generated/hosts/traveldroid/boot.nix b/Droidnix/generated/hosts/traveldroid/boot.nix new file mode 100644 index 000000000..cde9467f6 --- /dev/null +++ b/Droidnix/generated/hosts/traveldroid/boot.nix @@ -0,0 +1,54 @@ +{ pkgs, config, lib, flakeRoot, ... }: + +{ + ############################ + # Bootloader (GRUB) + ############################ + boot.loader = { + grub = { + enable = true; + efiSupport = true; + devices = [ "nodev" ]; # pas aan naar je echte EFI-device indien nodig + useOSProber = true; + timeout = 5; + }; + }; + + ############################ + # Kernel / boot settings + ############################ + boot.kernelPackages = pkgs.linuxPackages_latest; + + boot.kernelParams = [ + "quiet" + "splash" # REQUIRED for Plymouth + "udev.log_level=3" + "rd.systemd.show_status=false" + ]; + + boot.consoleLogLevel = 0; + boot.supportedFilesystems = [ "ntfs" ]; + + ############################ + # Plymouth + ############################ + boot.plymouth = { + enable = true; + theme = "rings"; + + themePackages = [ + (pkgs.adi1090x-plymouth-themes.override { + selected_themes = [ "rings" ]; + }) + ]; + }; + + boot.initrd.systemd.enable = true; + + ############################ + # Clean state + ############################ + # Remove any old theme environment.etc symlinks + #environment.etc = lib.mkForce {}; + system.stateVersion = "26.05"; +} diff --git a/Droidnix/generated/hosts/traveldroid/hardware-configuration.nix b/Droidnix/generated/hosts/traveldroid/hardware-configuration.nix new file mode 100644 index 000000000..802b3df31 --- /dev/null +++ b/Droidnix/generated/hosts/traveldroid/hardware-configuration.nix @@ -0,0 +1,47 @@ +{ + hostname, + pkgs, + lib, + modulesPath, + user, + config, + ... +}: +{ + imports = [ + # (modulesPath + "/installer/scan/not-detected.nix") + #../../hardware/hardware.nix + ]; + + boot.initrd.availableKernelModules = [ + "xhci_pci" + "nvme" + "usb_storage" + "sd_mod" + "rtsx_usb_sdmmc" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/69433a14-fbaf-401b-af85-cd1bbf02b4e2"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/811D-0676"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + + swapDevices = [ + { device = "/dev/disk/by-uuid/b6c557c2-7682-460b-a5e7-8f6f2f429a3a"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/Droidnix/generated/hosts/traveldroid/traveldroid.nix b/Droidnix/generated/hosts/traveldroid/traveldroid.nix new file mode 100644 index 000000000..1cef04222 --- /dev/null +++ b/Droidnix/generated/hosts/traveldroid/traveldroid.nix @@ -0,0 +1,46 @@ +{ lib, config, pkgs, inputs, ... }: + +let + hostname = "traveldroid"; + modulesPath = ./generated/modules/${hostname}; + usersPath = ./generated/users; + + # Import all host-specific modules recursively (not evaluated yet) + hostModules = inputs.import-tree modulesPath; + + # Import all global users + globalUsers = inputs.import-tree usersPath; + + # Collect all Home Manager user attrsets from host modules + global users + hmUsersList = + map (m: m._module.args.hmUsers or {}) (hostModules.imports ++ globalUsers.imports); + +in +{ + ################################# + # Core system config + ################################# + networking.hostName = traveldroid; + system.stateVersion = "26.05"; + + ################################# + # Enable Home Manager + ################################# + programs.home-manager.enable = true; + + ################################# + # Module imports + ################################# + imports = + [ + ./boot.nix + ./hardware-configuration.nix + ] + ++ hostModules.imports + ++ globalUsers.imports; + + ################################# + # Home Manager aggregation + ################################# + home-manager.users = lib.mkMerge hmUsersList; +} diff --git a/Droidnix/generated/template.nix b/Droidnix/generated/template.nix new file mode 100644 index 000000000..ca5f97da9 --- /dev/null +++ b/Droidnix/generated/template.nix @@ -0,0 +1,18 @@ +{ lib, config, pkgs, _module, ... }: + +let + username = config.defaultUser or "henrov"; +in { + # System packages / options + environment.systemPackages = [ pkgs.feh pkgs.waybar ]; + + # Home Manager contribution + _module.args.hmUsers = lib.mkIf true { + ${username} = { + home.file = { + ".config/waybar/config" = { source = ./waybar/config; }; + ".config/waybar/style.css" = { source = ./waybar/style.css; }; + }; + }; + }; +} diff --git a/Droidnix/generated/todo/traveldroid/system/nix.nix b/Droidnix/generated/todo/traveldroid/system/nix.nix new file mode 100644 index 000000000..96a5be55a --- /dev/null +++ b/Droidnix/generated/todo/traveldroid/system/nix.nix @@ -0,0 +1,10 @@ +{ lib, config, ... }: + +{ + nix.settings = { + experimental-features = [ "nix-command" "flakes" ]; + download-buffer-size = 536870912; # 512 MB + cores = 2; + max-jobs = 1; + }; +} diff --git a/Droidnix/generated/users/copy_2_home.nix b/Droidnix/generated/users/copy_2_home.nix new file mode 100644 index 000000000..3bf0ed3a5 --- /dev/null +++ b/Droidnix/generated/users/copy_2_home.nix @@ -0,0 +1,37 @@ +{ config, pkgs, lib, flakeRoot, ... }: + +let + username = config.users.users.defaultUser or "henrov"; + homeDir = "/home/${username}"; + assetPath = "${flakeRoot}/assets/copy_2_home"; +in +{ + environment.systemPackages = [ pkgs.rsync ]; + + systemd.services.copyAssets = { + description = "Copy assets to ${username}'s home directory"; + wantedBy = [ "multi-user.target" ]; + + # oneshot service runs once at boot + serviceConfig.Type = "oneshot"; + + # Always use /bin/sh -c for multi-line commands + serviceConfig.ExecStart = '' + /bin/sh -c ' + echo "Copying assets from ${assetPath} to ${homeDir} ..." + + if [ ! -d "${assetPath}" ]; then + echo "ERROR: ${assetPath} does not exist" + exit 1 + fi + + mkdir -p "${homeDir}" + chown ${username}:${username} "${homeDir}" + + ${pkgs.rsync}/bin/rsync -a --no-owner --no-group "${assetPath}/" "${homeDir}/" + + echo "Done copying assets." + ' + ''; + }; +} diff --git a/Droidnix/generated/users/henrov.nix b/Droidnix/generated/users/henrov.nix new file mode 100644 index 000000000..da5a280d0 --- /dev/null +++ b/Droidnix/generated/users/henrov.nix @@ -0,0 +1,38 @@ +{ lib, config, pkgs, ... }: + +let + username = "henrov"; +in +{ + ################################# + # NixOS system user + ################################# + users.users.${username} = { + isNormalUser = true; + home = "/home/${username}"; + hashedPassword = "$6$S7iShgBxB.77CwmP$i0njK.2r3OL5UEvgZbmwZ0rnpZ4QyJcv8p9uCmJ4AiVPSMXkQkIwMLzyAOnJ0q8.tPLIp/7EquEIZeK8qbmgw/"; + extraGroups = [ "wheel" "networkmanager" ]; + }; + + ################################# + # Home Manager user definition + ################################# + _module.args.hmUsers = { + ${username} = { + # Minimal required + home.username = username; + home.homeDirectory = "/home/${username}"; + home.stateVersion = "26.05"; + + # Add user-specific packages here + home.packages = [ + ]; + + # Add user dotfiles, session variables, etc. here if needed + home.file = { + # Example: + # ".bashrc" = { source = /path/to/bashrc; }; + }; + }; + }; +}