diff --git a/Droidnix/README.org b/Droidnix/README.org index 7bb1f75c1..46817b551 100644 --- a/Droidnix/README.org +++ b/Droidnix/README.org @@ -59,30 +59,6 @@ The =generated/= directory contains all generated configurations, divided into t The =.assets/= folder contains all static files, such as configs, scripts, and themes. These files are not generated and can be edited directly. -* Module boilerplate look like this :code: -** =generated/boilerplate.nix= -#+BEGIN_SRC nix :tangle generated/template.nix :noweb tangle :mkdirp yes :eval never-html -{ 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; }; - }; - }; - }; -} - -#+END_SRC - * The Actual Code :code: :PROPERTIES: :CUSTOM_ID: the-actual-code @@ -301,9 +277,102 @@ in #+END_SRC -* Let's define the core of the system +* 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, ... }: + +{ + ################################# + # 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/desktop/stylix.nix= +#+BEGIN_SRC nix :tangle generated/modules/traveldroid/desktop/wayland.nix :noweb tangle :mkdirp yes :eval never-html +{ 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; + }; + }; + }; +} +#+END_SRC -** Nix itself ** =generated/modules/traveldroid/system/nix.nix= #+BEGIN_SRC nix :tangle generated/modules/traveldroid/system/nix.nix :noweb tangle :mkdirp yes :eval never-html 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/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/template.nix b/Droidnix/generated/template.nix deleted file mode 100644 index ca5f97da9..000000000 --- a/Droidnix/generated/template.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ 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/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; }; - }; - }; - }; -}