diff --git a/Droidnix/README.org b/Droidnix/README.org index 01a3e2440..e4487ee27 100644 --- a/Droidnix/README.org +++ b/Droidnix/README.org @@ -280,33 +280,49 @@ in * Following are the imported modules * generated/modules/traveldroid/desktop -** =generated/modules/traveldroid/desktop/wayland.nix= -#+BEGIN_SRC nix :tangle generated/modules/traveldroid/desktop/wayland.nix :noweb tangle :mkdirp yes :eval never-html -{ lib, config, pkgs, ... }: +** =generated/traveldroid/modules/desktop/hyprland.nix= +Setting up Hyprland +#+BEGIN_SRC nix :tangle generated/traveldroid/modules/desktop/hyprland.nix :noweb tangle :mkdirp yes :eval never-html +{ lib, config, pkgs, flakeRoot, home-manager, inputs, ... }: + +let + username = config.defaultUser or "henrov"; + assetPath = "${flakeRoot}/assets/hyprland/conf"; + + # Read all files in the asset directory + assetFiles = builtins.attrNames (builtins.readDir assetPath); + + # Convert files to Home Manager xdg config entries + hyprFiles = lib.genAttrs assetFiles (f: { + # Destination path in home directory + name = ".config/hypr/${f}"; + # Source file path + value = { source = "${assetPath}/${f}"; }; + }); + + # Determine Hyprland package + hyprlandPkg = + pkgs.hyprland or + pkgs.hyprland-git or + inputs.hyprland.packages.${pkgs.system}.default; +in { - ################################# - # Core Wayland packages - ################################# - environment.systemPackages = with pkgs; [ - wayland - wl-clipboard # optional but commonly used for copy/paste - ]; + environment.systemPackages = [ hyprlandPkg ]; - ################################# - # Optional: enable graphics stack - ################################# - hardware.opengl.enable = true; + _module.args.hmUsers = { + ${username} = { + home.packages = [ hyprlandPkg ]; - ################################# - # Optional session variables for Wayland - ################################# - environment.sessionVariables = { - # Forces some apps to use Wayland - NIXOS_OZONE_WL = "1"; + # Merge all files in the asset folder into ~/.config/hypr/ + home.file = lib.mkMerge hyprFiles; + + # Optional: Hyprland settings + settings.general."col.active_border" = "0xff97cbcd 0xff89b4fa"; + }; }; } -#+END_SRC +#+END_SRC> ** =generated/modules/traveldroid/desktop/stylix.nix= #+BEGIN_SRC nix :tangle generated/modules/traveldroid/desktop/stylix.nix :noweb tangle :mkdirp yes :eval never-html @@ -373,6 +389,35 @@ in } #+END_SRC +** =generated/modules/traveldroid/desktop/wayland.nix= +#+BEGIN_SRC nix :tangle generated/modules/traveldroid/desktop/wayland.nix :noweb tangle :mkdirp yes :eval never-html +{ lib, config, pkgs, ... }: + +{ + ################################# + # Core Wayland packages + ################################# + environment.systemPackages = with pkgs; [ + wayland + wl-clipboard # optional but commonly used for copy/paste + ]; + + ################################# + # Optional: enable graphics stack + ################################# + hardware.opengl.enable = true; + + ################################# + # Optional session variables for Wayland + ################################# + environment.sessionVariables = { + # Forces some apps to use Wayland + NIXOS_OZONE_WL = "1"; + }; +} +#+END_SRC + +* generated/modules/traveldroid/system ** =generated/modules/traveldroid/system/nix.nix= #+BEGIN_SRC nix :tangle generated/modules/traveldroid/system/nix.nix :noweb tangle :mkdirp yes :eval never-html @@ -388,7 +433,49 @@ in } #+END_SRC -** User stuff +* generated/users + +** =generated/users/copy_2_home.nix= +This copies stuff to the user home-folder +#+BEGIN_SRC nix :tangle generated/users/copy_2_home.nix :noweb tangle :mkdirp yes :eval never-html +{ 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." + ' + ''; + }; +} +#+END_SRC ** =generated/users/henrov.nix= This is the default user, just search and replace henrov another name if you want to change @@ -432,45 +519,3 @@ in }; } #+END_SRC - -** =generated/users/copy_2_home.nix= -This copies stuff to the user home-folder -#+BEGIN_SRC nix :tangle generated/users/copy_2_home.nix :noweb tangle :mkdirp yes :eval never-html -{ 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." - ' - ''; - }; -} -#+END_SRC diff --git a/Droidnix/generated/hosts/traveldroid/boot.nix b/Droidnix/generated/hosts/traveldroid/boot.nix deleted file mode 100644 index cde9467f6..000000000 --- a/Droidnix/generated/hosts/traveldroid/boot.nix +++ /dev/null @@ -1,54 +0,0 @@ -{ 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 deleted file mode 100644 index 802b3df31..000000000 --- a/Droidnix/generated/hosts/traveldroid/hardware-configuration.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ - 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/host.nix b/Droidnix/generated/hosts/traveldroid/host.nix deleted file mode 100644 index 7a8827eb3..000000000 --- a/Droidnix/generated/hosts/traveldroid/host.nix +++ /dev/null @@ -1,43 +0,0 @@ -{ lib, config, pkgs, flakeRoot, import-tree, home-manager, ... }: - -let - hostname = "traveldroid"; - - modulesPath = "${flakeRoot}/generated/modules/${hostname}"; - usersPath = "${flakeRoot}/generated/users"; - - hostModules = import-tree modulesPath; - globalUsers = import-tree usersPath; - - allModules = hostModules.imports ++ globalUsers.imports; - -in -{ - ################################# - # Core system config - ################################# - - networking.hostName = hostname; - system.stateVersion = "26.05"; - - ################################# - # Imports - ################################# - - imports = - [ - ./boot.nix - ./hardware-configuration.nix - - # REQUIRED for Home Manager - home-manager.nixosModules.home-manager - ] - ++ allModules; - - ################################# - # Home Manager integration - ################################# - - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; -} diff --git a/Droidnix/generated/modules/traveldroid/desktop/stylix.nix b/Droidnix/generated/modules/traveldroid/desktop/stylix.nix deleted file mode 100644 index e2a73ef25..000000000 --- a/Droidnix/generated/modules/traveldroid/desktop/stylix.nix +++ /dev/null @@ -1,61 +0,0 @@ -{ lib, config, pkgs, flakeRoot, ... }: - -let - # Determine the default username from host config - username = config.defaultUser or "henrov"; - - moduleName = "stylix"; - assetPath = "${flakeRoot}/assets/system/conf/${moduleName}"; - - # Read all files in the asset directory - programFiles = builtins.readDir assetPath; - - files = lib.genAttrs (builtins.attrNames programFiles) (name: { - source = "${assetPath}/${name}"; - }); - - # Optional stylix.conf - stylixConfFile = "${assetPath}/stylix.conf"; - stylixConf = - if builtins.pathExists stylixConfFile - then builtins.readFile stylixConfFile - else ""; - - # Cursor defaults - cursorName = "phinger-cursors-light"; - cursorSize = 24; -in -{ - ############################ - # System-level packages - ############################ - environment.systemPackages = [ - pkgs.feh - pkgs.st - ]; - - ############################ - # Home Manager user config - ############################ - _module.args.hmUsers = { - ${username} = { - - # Map all config files into ~/.config/stylix/ - xdg.configFile = - lib.mapAttrs' (name: value: { - name = "${moduleName}/${name}"; - value = { inherit (value) source; }; - }) files; - - # Environment variables for the session - home.sessionVariables = { - STYLIX_CONF = "$HOME/.config/stylix/stylix.conf"; - - XCURSOR_THEME = cursorName; - XCURSOR_SIZE = toString cursorSize; - HYPRCURSOR_THEME = cursorName; - HYPRCURSOR_SIZE = toString cursorSize; - }; - }; - }; -} diff --git a/Droidnix/generated/modules/traveldroid/desktop/wayland.nix b/Droidnix/generated/modules/traveldroid/desktop/wayland.nix deleted file mode 100644 index 3c811b6c0..000000000 --- a/Droidnix/generated/modules/traveldroid/desktop/wayland.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ lib, config, pkgs, ... }: - -{ - ################################# - # Core Wayland packages - ################################# - environment.systemPackages = with pkgs; [ - wayland - wl-clipboard # optional but commonly used for copy/paste - ]; - - ################################# - # Optional: enable graphics stack - ################################# - hardware.opengl.enable = true; - - ################################# - # Optional session variables for Wayland - ################################# - environment.sessionVariables = { - # Forces some apps to use Wayland - NIXOS_OZONE_WL = "1"; - }; -} diff --git a/Droidnix/generated/modules/traveldroid/system/nix.nix b/Droidnix/generated/modules/traveldroid/system/nix.nix deleted file mode 100644 index 96a5be55a..000000000 --- a/Droidnix/generated/modules/traveldroid/system/nix.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ 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 deleted file mode 100644 index 3bf0ed3a5..000000000 --- a/Droidnix/generated/users/copy_2_home.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ 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 deleted file mode 100644 index da5a280d0..000000000 --- a/Droidnix/generated/users/henrov.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ 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; }; - }; - }; - }; -}