{ description = "caedesyth system flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager.url = "github:nix-community/home-manager/release-25.05"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; # nixvim.url = "github:nix-community/nixvim"; # nixvim.inputs.nixpkgs.follows = "nixpkgs"; # nixvim.inputs.home-manager.follows = "home-manager"; nvf = { url = "github:notashelf/nvf"; inputs.nixpkgs.follows = "nixpkgs"; }; # Potentially, nvf asks you to include # obsidian-nvim.url = "github:epwalsh/obsidian.nvim"; stylix.url = "github:danth/stylix/release-25.05"; stylix.inputs.nixpkgs.follows = "nixpkgs"; stylix.inputs.home-manager.follows = "home-manager"; foundryvtt.url = "github:reckenrode/nix-foundryvtt"; foundryvtt.inputs.nixpkgs.follows = "nixpkgs"; }; outputs = { self, nixpkgs, home-manager, stylix, nvf, ... } @ inputs: let inherit (self) outputs; system = "x86_64-linux"; rootPath = ./.; mkProfile = { hostname, username, isNixos, extraPkgs ? [], extraHomePkgs ? [], }: { inherit hostname username isNixos extraPkgs extraHomePkgs ; }; mkNixosConfiguration = profile: nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs outputs profile rootPath ; }; modules = [ (./hosts + "/${profile.hostname}" + /configuration.nix) (./hosts + "/${profile.hostname}" + /hardware-configuration.nix) ./modules/nix stylix.nixosModules.stylix ./stylix ] ++ profile.extraPkgs; }; mkHomeConfiguration = profile: home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; extraSpecialArgs = { inherit inputs outputs profile rootPath ; unstablePkgs = inputs.nixpkgs-unstable.legacyPackages.${system}; }; modules = [ ./modules/home (./hosts + "/${profile.hostname}" + /home.nix) stylix.homeModules.stylix nvf.homeManagerModules.default ./stylix ./stylix/home.nix ] ++ profile.extraHomePkgs; }; muko = mkProfile { hostname = "muko"; username = "muko"; isNixos = true; extraPkgs = [ ]; extraHomePkgs = []; }; typhon = mkProfile { hostname = "typhon"; username = "typhon"; isNixos = true; extraPkgs = [ inputs.foundryvtt.nixosModules.foundryvtt ]; extraHomePkgs = []; }; in { nixosConfigurations = { muko = mkNixosConfiguration muko; typhon = mkNixosConfiguration typhon; }; homeConfigurations = { muko = mkHomeConfiguration muko; typhon = mkHomeConfiguration typhon; }; formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-rfc-style; # Broken rn. We fixing it slowly packages.${system}.configurate = nixpkgs.legacyPackages.${system}.writeShellScriptBin "configurate" '' # If we error, crash out set -e set -o pipefail # To the configuration! echo "Rebuild time" nix flake update sudo just nix &> nixos-switch.log || (cat nixos-switch.log | grep --color error && exit 1) just home &> home-switch.log || (cat home-switch.log | grep --color error && exit 1) ''; }; }