{ description = "System config"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; flake-utils.url = "github:numtide/flake-utils"; }; outputs = { self, ... }@inputs: with inputs; let defSystem = systemArch: baseConfig: nixpkgs.lib.nixosSystem { system = "${systemArch}"; modules = [ { _module.args.inputs = inputs; } { _module.args.self-overlay = self.overlay; } ({ ... }: { imports = builtins.attrValues self.nixosModules ++ [ { nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; nixpkgs.overlays = [ self.overlay ]; } baseConfig home-manager.nixosModules.home-manager { home-manager.useUserPackages = true; } ]; system.configurationRevision = nixpkgs.lib.mkIf (self ? rev) self.rev; nix.registry.nixpkgs.flake = nixpkgs; }) ]; }; # nixosUsers = [{ # name = "erwin"; # groups = [ "wheel" "networkmanager" "video" ]; # uid = 1000; # shell = pkgs.fish; # openssh.authorizedKeys.keys = [ # "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMNoTcRsAxDwpiIj6nhUXwzSQjtcgKCR0RDlzP57wi0W erwin@horusvr-ws2" # ]; # }]; in { # homeManagerConfigurations = { # erwin = user.mkHMUser { # userConfig = { # git.enable = true; # ssh.enable = true; # applications.enable = true; # gpg.enable = true; # fish.enable = true; # sway.enable = true; # }; # username = "erwin"; # }; # }; overlay = final: prev: (import ./overlays) final prev; # overlay = final: prev: { # unstable = import nixpkgs { # system = "x86_64-linux"; # config.allowUnfree = true; # }; # }; nixosModules = builtins.listToAttrs (map (x: { name = x; value = import (./modules + "/${x}"); }) (builtins.attrNames (builtins.readDir ./modules))); nixosConfigurations = { # vm1 = host.mkHost { # name = "vm1"; # NICs = [ "enp1s0" ]; # kernelPackage = pkgs.linuxPackages; # initrdMods = [ "ahci" "xhci_pci" "sr_mod" ]; # kernelMods = [ "kvm-amd" ]; # kernelParams = [ ]; # systemConfig = vm1UefiConfig; # users = nixosUsers; # cpuCores = 6; # }; # vm2 = host.mkHost { # name = "vm2"; # NICs = [ "enp1s0" ]; # kernelPackage = pkgs.linuxPackages; # initrdMods = [ "ahci" "xhci_pci" "sr_mod" ]; # kernelMods = [ "kvm-amd" ]; # kernelParams = [ ]; # systemConfig = vm2Config; # users = nixosUsers; # cpuCores = 4; # }; vm1 = defSystem "x86_64-linux" { imports = [ (import (./machines/vm1/configuration.nix) { inherit self; }) ]; }; vm2 = defSystem "x86_64-linux" { imports = [ (import (./machines/vm2/configuration.nix) { inherit self; }) ]; }; # loki = defSystem "x86_64-linux" { # imports = [ # (import (./machines/loki/configuration.nix) { inherit self; }) # ]; # }; }; } // (flake-utils.lib.eachSystem [ "x86_64-linux" ]) (system: let pkgs = import nixpkgs { inherit system; overlays = [ self.overlay ]; config = { allowUnsupportedSystem = true; allowUnfree = true; }; }; in rec { packages = flake-utils.lib.flattenTree { rofi-wayland = pkgs.rofi-wayland; pamedia = pkgs.pamedia; }; apps = { rofi-wayland = flake-utils.lib.mkApp { drv = packages.rofi-wayland; }; pamedia = flake-utils.lib.mkApp { drv = packages.pamedia; }; }; } ); }