{ description = "Testing mastodon configurations"; inputs = { nixpkgs.url = "github:radvendii/nixpkgs/nixos_rebuild_tests"; disko.url = "github:nix-community/disko"; }; outputs = { self, nixpkgs, disko, ... }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; in { nixosModules = { ## Fediversity modules fediversity = import ./fediversity; ## VM-specific modules inherit (disko.nixosModules) disko; disk-layout = import ./vm/disk-layout.nix; interactive-vm = import ./vm/interactive-vm.nix; mastodon-vm = import ./vm/mastodon-vm.nix; peertube-vm = import ./vm/peertube-vm.nix; pixelfed-vm = import ./vm/pixelfed-vm.nix; }; nixosConfigurations = { mastodon = nixpkgs.lib.nixosSystem { inherit system; modules = with self.nixosModules; [ disko disk-layout fediversity interactive-vm mastodon-vm ]; }; peertube = nixpkgs.lib.nixosSystem { inherit system; modules = with self.nixosModules; [ disko disk-layout fediversity interactive-vm peertube-vm ]; }; pixelfed = nixpkgs.lib.nixosSystem { inherit system; modules = with self.nixosModules; [ disko disk-layout fediversity interactive-vm pixelfed-vm ]; }; all = nixpkgs.lib.nixosSystem { inherit system; modules = with self.nixosModules; [ disko disk-layout fediversity interactive-vm peertube-vm pixelfed-vm mastodon-vm ]; }; }; # build with # nix build .#installers. installers = let installer = (import ./installer.nix) nixpkgs; in nixpkgs.lib.mapAttrs (_: config: installer config) self.nixosConfigurations; # run with # nix run .#deploy. deploy = let deployCommand = (pkgs.callPackage ./deploy.nix {}); in nixpkgs.lib.mapAttrs (name: config: deployCommand name config) self.nixosConfigurations; checks.${system} = { mastodon-garage = import ./tests/mastodon-garage.nix { inherit pkgs self; }; pixelfed-garage = import ./tests/pixelfed-garage.nix { inherit pkgs self; }; }; devShells.${system}.default = pkgs.mkShell { packages = with pkgs; [ nil ]; }; }; }