{ description = "NixOS Flake"; inputs = { agenix.url = "github:ryantm/agenix"; astal-bar.url = "path:/home/jras/projects/astal-bar"; disko.url = "github:nix-community/disko"; disko.inputs.nixpkgs.follows = "nixpkgs"; helix.url = "github:helix-editor/helix/master"; home-manager.url = "github:nix-community/home-manager/release-24.11"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; hyprland.url = "github:hyprwm/Hyprland?submodules=1&ref=v0.45.2-b"; hy3 = { url = "github:outfoxxed/hy3?ref=hl0.45.0"; inputs.hyprland.follows = "hyprland"; }; microvm.url = "github:astro/microvm.nix"; microvm.inputs.nixpkgs.follows = "nixpkgs"; nil.url = "github:oxalica/nil"; nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; nixos-facter-modules.url = "github:numtide/nixos-facter-modules"; update-systemd-resolved.url = "github:jonathanio/update-systemd-resolved"; update-systemd-resolved.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = inputs@{ self, agenix, disko, home-manager, microvm, nixpkgs, nixos-facter-modules, update-systemd-resolved, ... }: let coreModules = [ home-manager.nixosModules.home-manager agenix.nixosModules.default ./modules/core ]; # These should at some point be included in coreModules deviceMgmtModules = [ disko.nixosModules.disko nixos-facter-modules.nixosModules.facter ]; mkServer = import ./lib/mkserver.nix { inherit nixpkgs inputs; }; in { nixosConfigurations.work = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = coreModules ++ [ update-systemd-resolved.nixosModules.update-systemd-resolved { environment.systemPackages = [ agenix.packages."x86_64-linux".default ]; } ./modules/work ]; }; nixosConfigurations.tarrel = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = coreModules ++ [ { environment.systemPackages = [ agenix.packages."x86_64-linux".default ]; } ./modules/tarrel ]; }; nixosConfigurations.snorlax = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; }; modules = coreModules ++ deviceMgmtModules ++ [ microvm.nixosModules.host { config.facter.reportPath = ./modules/snorlax/facter.json; } ./modules/snorlax ]; }; nixosConfigurations.backup = mkServer "backup.jras.nl"; }; }