{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nixos-06cb-009a-fingerprint-sensor = { url = "github:ahbnr/nixos-06cb-009a-fingerprint-sensor"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprland = { type = "git"; url = "https://github.com/hyprwm/Hyprland"; submodules = true; }; hyprsplit = { type = "git"; url = "https://github.com/shezdy/hyprsplit"; inputs.hyprland.follows = "hyprland"; }; nur.url = "github:nix-community/NUR"; ags.url = "./home/ags"; fzgo.url = "git+https://git.thomasave.be/thomasave/fzgo.git"; worktimer = { type = "git"; url = "https://git.thomasave.be/thomasave/WorkTimer"; ref = "cli"; }; }; 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 (self: super: { utillinux = super.util-linux; }) ]; } { 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" ]; trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E=" ]; 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@Riva" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBxMq4kubz4wWr4S8xU3GRkPcn6XRS3y7IP+qylN5QAp user@Aloria" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOAhFTJI49o+eS1kHs5XRrpCLLuhAE+JUCffusudyR88 user@Arendia" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHtzTFdvLEvXpv69qAWLTipl4hgsKgRrRrWJRecsFthG user@Arch" "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 = { Riva = { user = "user"; }; Kell = { user = "user"; }; Aloria = { user = "user"; }; Arendia = { user = "user"; }; }; in { nixosConfigurations = nixpkgs.lib.mapAttrs mkSystem systems; }; }