forked from Fediversity/Fediversity
Valentin Gagarin
a87177ef85
- move the impure single-node deploy helper here it's not used anywhere else - reuse the pins from the website this needs to be cleaned up later - don't copy the config to the server it's impure (can't even build that without jumping through hoops), and useless when building via SSH
138 lines
3.7 KiB
Nix
138 lines
3.7 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:radvendii/nixpkgs/nixos_rebuild_tests";
|
|
nixpkgs-latest.url = "github:nixos/nixpkgs";
|
|
git-hooks.url = "github:cachix/git-hooks.nix";
|
|
|
|
pixelfed = {
|
|
url = "github:pixelfed/pixelfed?ref=v0.12.3";
|
|
flake = false;
|
|
};
|
|
disko.url = "github:nix-community/disko";
|
|
};
|
|
|
|
outputs =
|
|
{
|
|
self,
|
|
nixpkgs,
|
|
nixpkgs-latest,
|
|
git-hooks,
|
|
pixelfed,
|
|
disko,
|
|
}:
|
|
let
|
|
system = "x86_64-linux";
|
|
lib = nixpkgs.lib;
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
pkgsLatest = nixpkgs-latest.legacyPackages.${system};
|
|
bleedingFediverseOverlay = (
|
|
_: _: {
|
|
pixelfed = pkgsLatest.pixelfed.overrideAttrs (old: {
|
|
src = pixelfed;
|
|
patches = (old.patches or [ ]) ++ [ ./fediversity/pixelfed-group-permissions.patch ];
|
|
});
|
|
## TODO: give mastodon, peertube the same treatment
|
|
}
|
|
);
|
|
in
|
|
{
|
|
nixosModules = {
|
|
## Bleeding-edge fediverse packages
|
|
bleedingFediverse = {
|
|
nixpkgs.overlays = [ bleedingFediverseOverlay ];
|
|
};
|
|
## Fediversity modules
|
|
fediversity = import ./fediversity;
|
|
|
|
## VM-specific modules
|
|
interactive-vm = import ./vm/interactive-vm.nix;
|
|
garage-vm = import ./vm/garage-vm.nix;
|
|
mastodon-vm = import ./vm/mastodon-vm.nix;
|
|
peertube-vm = import ./vm/peertube-vm.nix;
|
|
pixelfed-vm = import ./vm/pixelfed-vm.nix;
|
|
|
|
disk-layout = import ./disk-layout.nix;
|
|
};
|
|
|
|
nixosConfigurations = {
|
|
mastodon = nixpkgs.lib.nixosSystem {
|
|
inherit system;
|
|
modules = with self.nixosModules; [
|
|
disko.nixosModules.default
|
|
disk-layout
|
|
bleedingFediverse
|
|
fediversity
|
|
interactive-vm
|
|
garage-vm
|
|
mastodon-vm
|
|
];
|
|
};
|
|
|
|
peertube = nixpkgs.lib.nixosSystem {
|
|
inherit system;
|
|
modules = with self.nixosModules; [
|
|
disko.nixosModules.default
|
|
disk-layout
|
|
bleedingFediverse
|
|
fediversity
|
|
interactive-vm
|
|
garage-vm
|
|
peertube-vm
|
|
];
|
|
};
|
|
|
|
pixelfed = nixpkgs.lib.nixosSystem {
|
|
inherit system;
|
|
modules = with self.nixosModules; [
|
|
disko.nixosModules.default
|
|
disk-layout
|
|
bleedingFediverse
|
|
fediversity
|
|
interactive-vm
|
|
garage-vm
|
|
pixelfed-vm
|
|
];
|
|
};
|
|
|
|
all = nixpkgs.lib.nixosSystem {
|
|
inherit system;
|
|
modules = with self.nixosModules; [
|
|
disko.nixosModules.default
|
|
disk-layout
|
|
bleedingFediverse
|
|
fediversity
|
|
interactive-vm
|
|
garage-vm
|
|
peertube-vm
|
|
pixelfed-vm
|
|
mastodon-vm
|
|
];
|
|
};
|
|
};
|
|
|
|
## Fully-feature ISO installer
|
|
mkInstaller = import ./installer.nix;
|
|
installers = lib.mapAttrs (_: config: self.mkInstaller nixpkgs 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; };
|
|
|
|
pre-commit = git-hooks.lib.${system}.run {
|
|
src = ./.;
|
|
hooks = {
|
|
nixfmt-rfc-style.enable = true;
|
|
deadnix.enable = true;
|
|
};
|
|
};
|
|
};
|
|
|
|
devShells.${system}.default = pkgs.mkShell {
|
|
inputs = with pkgs; [
|
|
nil
|
|
];
|
|
shellHook = self.checks.${system}.pre-commit.shellHook;
|
|
};
|
|
};
|
|
}
|