{ description = "NixOS flake"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs"; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; microvm = { url = "github:microvm-nix/microvm.nix"; inputs.nixpkgs.follows = "nixpkgs"; }; disko = { url = "github:nix-community/disko/latest"; inputs.nixpkgs.follows = "nixpkgs"; }; impermanence.url = "github:nix-community/impermanence"; neovim-nightly-overlay.url = "github:nix-community/neovim-nightly-overlay"; home-manager = { url = "github:nix-community/home-manager/0d782ee42c86b196acff08acfbf41bb7d13eed5b"; inputs.nixpkgs.follows = "nixpkgs"; }; nur.url = "github:nix-community/NUR"; niri-branch = { url = "github:argosnothing/niri/hidden-workspaces"; inputs.nixpkgs.follows = "nixpkgs"; }; niri-scratchpad = { url = "github:argosnothing/niri-scratchpad-rs/hidden-workspaces"; inputs.nixpkgs.follows = "nixpkgs"; }; dms.url = "github:AvengeMedia/DankMaterialShell/987856a1de35c62dc0930b007b561545d6a832a8"; }; outputs = inputs@{ nixpkgs, sops-nix, impermanence, home-manager, ... }: let hostname = "amelia"; system = "x86_64-linux"; pkgs = import nixpkgs { inherit system; config.allowUnfree = true; # overlays = [ inputs.neovim-nightly-overlay.overlays.default ]; }; microvm = inputs.microvm.nixosModules.host; in { nixosConfigurations."${hostname}" = nixpkgs.lib.nixosSystem { inherit system pkgs; specialArgs = { inherit nixpkgs impermanence home-manager microvm sops-nix ; hostname = hostname; }; modules = [ ./users.nix ./storage.nix ./configuration.nix ./impermanence.nix ./networking.nix ./packages.nix ./kernel ./home inputs.sops-nix.nixosModules.sops inputs.microvm.nixosModules.host (import ./vms) inputs.disko.nixosModules.disko inputs.impermanence.nixosModules.impermanence inputs.home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; home-manager.sharedModules = [ inputs.sops-nix.homeManagerModules.sops inputs.dms.homeModules.dank-material-shell ]; nixpkgs.overlays = [ (_: prev: { niri-scratchpad = inputs.niri-scratchpad.packages.${prev.system}.default; vimPlugins = prev.vimPlugins.extend ( f: p: { neotest = p.neotest.overrideAttrs { src = prev.fetchzip { url = "https://github.com/archie-judd/neotest/archive/c8dd7597bb4182c0547d188e1dd5f684a4f01852.zip"; sha256 = "sha256-E/Heh+mAxvN5RaWqv1UJuHSA90c0evMKFkDD1BrpV7g="; }; }; neotest-pest = p.neotest-pest.overrideAttrs (_: { src = prev.fetchFromGitHub { owner = "jradtilbrook"; repo = "neotest-pest"; rev = "e92131bde9c24e632c4ad76124f545d098127e60"; hash = "sha256-wy4nA7hxrX8JiDXkNzVHf6LUOVb8WankB600r7I8uSg="; }; }); } ); }) inputs.nur.overlays.default (_: prev: { niri = inputs.niri-branch.packages.${prev.system}.niri; }) ]; } # ./networking/wireguard ]; }; }; }