{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprland = { type = "git"; url = "https://github.com/hyprwm/Hyprland"; submodules = true; }; waybar = { type = "git"; url = "https://github.com/thomasave/Waybar"; submodules = true; }; split-monitor-workspaces = { type = "git"; url = "https://github.com/Duckonaut/split-monitor-workspaces"; inputs.hyprland.follows = "hyprland"; ref = "fix/hyprutils"; }; nur.url = "github:nix-community/NUR"; }; outputs = { nixpkgs, home-manager, nur, ... }@inputs: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; commonModules = host: user: [ ./hosts/${host}/hardware-configuration.nix { nixpkgs.overlays = [ nur.overlay ]; } { nixpkgs.config.allowUnfree = true; networking.hostName = host; boot.loader.systemd-boot.enable = true; time.timeZone = "Europe/Brussels"; programs.hyprland = { enable = true; package = inputs.hyprland.packages.${pkgs.system}.hyprland; }; nix.settings = { substituters = [ "https://hyprland.cachix.org" "https://nix-community.cachix.org" "https://cuda-maintainers.cachix.org" "https://nixos-rocm.cachix.org" ]; trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E=" "nixos-rocm.cachix.org-1:VEpsf7pRIijjd8csKjFNBGzkBqOmw8H9PRmgAq14LnE=" ]; experimental-features = [ "nix-command" "flakes" ]; trusted-users = [ "root" user ]; auto-optimise-store = true; }; nix.gc = { automatic = true; dates = "daily"; options = "--delete-older-than 2d"; }; users.users.${user} = { isNormalUser = true; extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKAa3tMzSCRuprEACrBsKI0F/o73o6J9L1qR3TaZn/N8 user@Kell" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIByLwLAdJbmoDV5sx4hg5NbzKbOh1GmWEhDOUJ1GQBhK user@NixVM" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBxMq4kubz4wWr4S8xU3GRkPcn6XRS3y7IP+qylN5QAp user@Aloria" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHtzTFdvLEvXpv69qAWLTipl4hgsKgRrRrWJRecsFthG user@Riva" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOxtJRtlAphl8euicVUR/6C7o+tyhpYmcbMBLHnldEIX server@mallorea" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILazQU/Y9I5PkMZoG/Lzc6mDR7s+aRHzqJoFUhYSse4P PocoF1" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFoUYcVMsDw6tmjfdOuQkwaXx8fohKJs/6/5HoLzTP6x Tablet" ]; shell = pkgs.zsh; }; system.stateVersion = "23.11"; environment.sessionVariables.NIXOS_OZONE_WL = "1"; # hint electron apps to use wayland: } home-manager.nixosModules.home-manager { home-manager = { extraSpecialArgs = { inherit inputs; }; # allows access to flake inputs in hm modules useGlobalPkgs = true; useUserPackages = true; users.${user} = { imports = [ ./home/${host}.nix ]; }; }; } ./hosts/${host} ]; mkSystem = host: cfg: nixpkgs.lib.nixosSystem { system = cfg.system or "x86_64-linux"; modules = (commonModules host cfg.user) ++ (cfg.modules or [ ]); specialArgs = inputs; }; systems = { NixVM = { user = "user"; }; Kell = { user = "user"; }; Aloria = { user = "user"; }; }; in { nixosConfigurations = nixpkgs.lib.mapAttrs mkSystem systems; }; }