{ description = "The nix flake for all my systems"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager.url = "github:nix-community/home-manager"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; nixos-facter-modules.url = "github:numtide/nixos-facter-modules"; apple-fonts.url = "github:Lyndeno/apple-fonts.nix"; apple-fonts.inputs.nixpkgs.follows = "nixpkgs"; catppuccin.url = "github:catppuccin/nix"; catppuccin.inputs.nixpkgs.follows = "nixpkgs"; alejandra.url = "github:kamadorueda/alejandra"; alejandra.inputs.nixpkgs.follows = "nixpkgs"; nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest"; }; outputs = inputs @ { self, nixpkgs, home-manager, nixos-facter-modules, catppuccin, alejandra, nix-flatpak, ... }: let modules = { hardware = { boot = { grub = [ ./hardware/boot/grub.nix ]; }; devices = { wahnix = [ ./hardware/devices/wahnix.nix ]; }; drivers = { controllers = { xbox = [ ./hardware/drivers/controllers/xbox.nix ]; }; cpu = { intel = [ ./hardware/drivers/cpu/intel.nix ]; }; video = { base = [ ./hardware/drivers/video/base.nix ]; intel = [ ./hardware/drivers/video/intel.nix ]; nvidia = [ ./hardware/drivers/video/nvidia.nix ]; }; }; }; nixos = { base = [ ./system/nix.nix ]; desktops = { apps = [ ./system/desktop/apps.nix ]; displaymanagers = { tuigreet = [ ./system/desktop/displaymanagers/tuigreet.nix ]; }; environments = { hyprland = [ ./system/desktop/environments/hyprland.nix ]; }; }; security = { sudo = [ ./system/security/sudo.nix ]; }; services = { bluetooth = [ ./system/services/bluetooth.nix ]; flatpak = [ ./system/services/flatpak.nix ]; networkmanager = [ ./system/services/networkmanager.nix ]; openssh = [ ./system/services/openssh.nix ]; pipewire = [ ./system/services/pipewire.nix ]; }; users = { relms = [ ./system/users/relms.nix ]; }; }; home = { apps = { audio = { pulseaudio = [ ./home/modules/apps/audio/pulesaudio.nix ]; }; browsers = { firefox = [ ./home/modules/apps/browsers/firefox.nix ]; }; terminals = { kitty = [ ./home/modules/apps/terminals/kitty.nix ]; }; flatpak = [ ./home/modules/apps/flatpak.nix ]; }; cli = { development = [ ./home/modules/cli/development.nix ./home/modules/cli/neovim.nix ]; shell = [ ./home/modules/cli/shell.nix ]; }; desktop = { environments = { hyprland = [ ./home/modules/desktop/environments/hyprland.nix ]; }; }; users = { relms = [ ./home/users/relms.nix ]; }; }; }; in { packages.x86_64-linux.nerd-fonts-sf-mono-ligatures = nixpkgs.legacyPackages.x86_64-linux.callPackage ./pkgs/fonts/nerd-fonts-sf-mono-ligatures.nix {}; nixosConfigurations = { wahnix = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = modules.nixos.base ++ modules.nixos.desktops.apps ++ modules.nixos.desktops.displaymanagers.tuigreet ++ modules.nixos.desktops.environments.hyprland ++ modules.nixos.security.sudo ++ modules.nixos.services.bluetooth ++ modules.nixos.services.flatpak ++ modules.nixos.services.networkmanager ++ modules.nixos.services.openssh ++ modules.nixos.services.pipewire ++ modules.nixos.users.relms ++ modules.hardware.boot.grub ++ modules.hardware.devices.wahnix ++ modules.hardware.drivers.controllers.xbox ++ modules.hardware.drivers.cpu.intel ++ modules.hardware.drivers.video.base ++ modules.hardware.drivers.video.intel ++ modules.hardware.drivers.video.nvidia ++ [ nix-flatpak.nixosModules.nix-flatpak catppuccin.nixosModules.catppuccin nixos-facter-modules.nixosModules.facter {config.facter.reportPath = ./wahnix-facter.json;} home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.extraSpecialArgs = { inherit self; inherit inputs; }; home-manager.users.relms = { imports = modules.home.users.relms ++ modules.home.apps.audio.pulseaudio ++ modules.home.apps.browsers.firefox ++ modules.home.apps.terminals.kitty ++ modules.home.apps.flatpak ++ modules.home.cli.development ++ modules.home.cli.shell ++ modules.home.desktop.environments.hyprland ++ [ catppuccin.homeManagerModules.catppuccin nix-flatpak.homeManagerModules.nix-flatpak ]; }; } ]; }; }; formatter.aarch64-linux = alejandra.defaultPackage.aarch64-linux; formatter.x86_64-linux = alejandra.defaultPackage.x86_64-linux; }; }