{ description = "Configuration for Everest"; inputs = { nixpkgs.url = "nixpkgs/nixos-23.05"; nixpkgs-unstable.url = "nixpkgs/nixos-unstable"; agenix = { url = "github:ryantm/agenix"; inputs = { nixpkgs.follows = "nixpkgs"; darwin.follows = ""; # Not using this on MacOS, so this doesn't pull it's dependencies }; }; home-manager = { url = "github:nix-community/home-manager/release-23.05"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager-unstable = { url = "github:nix-community/home-manager/"; inputs.nixpkgs.follows = "nixpkgs-unstable"; }; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; nix-impermanence.url = "github:nix-community/impermanence"; }; outputs = {nixpkgs, nixpkgs-unstable, agenix, home-manager, home-manager-unstable, nixos-hardware, nix-impermanence, ... } @inputs: { devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShell { name = "Environment for toast's nixos configurations"; # The agenix cli is not needed to activate a configuration, so instead of installing it # I'll just add it to de devShell, since that's the only real time I'm going to use it. packages = with nixpkgs.legacyPackages.x86_64-linux; [ agenix.packages.x86_64-linux.default git plasma5Packages.plasma-sdk ]; shellHook ='' export PS1="$PS1(toast-configs)> " ''; }; nixosConfigurations = { Archie = nixpkgs-unstable.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { systemPkgs = inputs.nixpkgs-unstable; }; /* I used to set up nixpkgs in the flake, but doing that made defining overlays in modules impossible (or at least I could not figure out how) Also has nice side effect of making it easier to add new systems :3 */ modules = [ # Needed for nix-index { nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; } agenix.nixosModules.default home-manager-unstable.nixosModule ./roles/common ./roles/desktop ./roles/kde ./roles/gaming ./machines/Archie ]; }; SurfaceGo = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { systemPkgs = inputs.nixpkgs; }; modules = [ # Needed for nix-index { nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; } agenix.nixosModules.default home-manager.nixosModule nixos-hardware.nixosModules.microsoft-surface-go ./roles/common ./roles/desktop ./roles/kde ./machines/SurfaceGo ]; }; Everest = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { systemPkgs = inputs.nixpkgs; }; modules = [ # Needed for nix-index { nix.nixPath = [ "nixpkgs=${nixpkgs}" ]; } agenix.nixosModules.default home-manager.nixosModule ./roles/common ./roles/server ./machines/Everest ./openbox.nix ]; }; }; }; }