137 lines
3.4 KiB
Nix
137 lines
3.4 KiB
Nix
inputs:
|
|
with inputs;
|
|
with inputs.nixpkgs.lib; {
|
|
mergeHosts = lists.foldl' (
|
|
a: b: attrsets.recursiveUpdate a b
|
|
) {};
|
|
|
|
mkHost = hostname: {
|
|
platform ? "x86_64-linux",
|
|
suite,
|
|
user ? "fern",
|
|
extraModules ? [],
|
|
}: let
|
|
system = platform;
|
|
secrets = builtins.toString inputs.secrets;
|
|
|
|
pull-requests = {
|
|
fluffychat = import nixpkgs-pr-fluffychat {
|
|
inherit system;
|
|
overlays = [
|
|
(final: prev: {
|
|
fluffychat = prev.fluffychat.overrideAttrs (prevAttrs: rec {
|
|
desktopItems = [
|
|
((builtins.elemAt prevAttrs.desktopItems 0).override {startupWMClass = "fluffychat";})
|
|
];
|
|
});
|
|
})
|
|
];
|
|
};
|
|
|
|
feishin = import nixpkgs-pr-feishin {
|
|
inherit system;
|
|
overlays = [
|
|
(final: prev: {
|
|
feishin = prev.feishin.overrideAttrs (prevAttrs: rec {
|
|
pname = "feishin";
|
|
version = "0.18.0";
|
|
|
|
src = prev.fetchFromGitHub {
|
|
owner = "jeffvli";
|
|
repo = "feishin";
|
|
rev = "v${version}";
|
|
hash = "sha256-4gcS7Vd7LSpEByO2Hlk6nb8V2adBPh5XwWGCu2lwOA4=";
|
|
};
|
|
|
|
pnpmDeps = prev.pnpm_10.fetchDeps {
|
|
inherit pname version src;
|
|
hash = "sha256-1MGxrUcfvazxAubaYAsQuulUKm05opWOIC7oaLzjr7o=";
|
|
};
|
|
});
|
|
})
|
|
];
|
|
};
|
|
};
|
|
|
|
userPackages = final: prev: {
|
|
# WebOne HTTP proxy.
|
|
webone = prev.pkgs.callPackage ./packages/webone {};
|
|
# Yazi Gruvbox theme.
|
|
yazi-flavour-gruvbox-dark = prev.pkgs.callPackage ./packages/yazi-flavour-gruvbox {};
|
|
# Latest FluffyChat.
|
|
fluffychat = pull-requests.fluffychat.fluffychat;
|
|
# Latest Feishin.
|
|
feishin = pull-requests.feishin.feishin;
|
|
# PrismLauncher with Temurin JRE.
|
|
prismlauncher = prev.prismlauncher.override {
|
|
jdks = [
|
|
prev.pkgs.temurin-jre-bin
|
|
];
|
|
};
|
|
};
|
|
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
config = {
|
|
allowUnfree = true;
|
|
permittedInsecurePackages = [
|
|
"dotnet-sdk-6.0.428"
|
|
"dotnet-runtime-6.0.36"
|
|
];
|
|
};
|
|
overlays = [
|
|
userPackages
|
|
];
|
|
};
|
|
|
|
deployPkgs = import nixpkgs {
|
|
inherit system;
|
|
overlays = [
|
|
deploy-rs.overlays.default
|
|
(self: super: {
|
|
deploy-rs = {
|
|
inherit (pkgs) deploy-rs;
|
|
lib = super.deploy-rs.lib;
|
|
};
|
|
})
|
|
];
|
|
};
|
|
in
|
|
{
|
|
nixosConfigurations.${hostname} = nixosSystem {
|
|
inherit system pkgs;
|
|
|
|
specialArgs = {
|
|
inherit
|
|
hostname
|
|
platform
|
|
suite
|
|
user
|
|
secrets
|
|
; # Inherit variables.
|
|
};
|
|
|
|
modules =
|
|
[
|
|
nixvim.nixosModules.nixvim
|
|
./suites/common.nix
|
|
./suites/${suite}.nix
|
|
./hosts/${hostname}.nix
|
|
]
|
|
++ (filesystem.listFilesRecursive ./modules)
|
|
++ extraModules;
|
|
};
|
|
}
|
|
// optionalAttrs ((suite == "server")
|
|
|| (suite == "vm")
|
|
|| (suite == "lxc")) {
|
|
deploy.nodes.${hostname} = {
|
|
hostname = "${hostname}.local";
|
|
profiles.system = {
|
|
user = "root";
|
|
sshUser = user;
|
|
path = deployPkgs.deploy-rs.lib.activate.nixos self.nixosConfigurations.${hostname};
|
|
};
|
|
};
|
|
};
|
|
}
|