{
inputs = {
srvos = {
url = "github:nix-community/srvos";
};
nixos-hardware = {
url = "github:NixOS/nixos-hardware";
};
nixpkgs.follows = "srvos/nixpkgs";
darwin = {
url = "github:lnl7/nix-darwin/master";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-generators = {
url = "github:nix-community/nixos-generators";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-rosetta-builder = {
url = "github:cpick/nix-rosetta-builder";
inputs.nixpkgs.follows = "nixpkgs";
};
nur = {
url = "github:nix-community/nur";
inputs.nixpkgs.follows = "nixpkgs";
};
angrr.url = "github:linyinfeng/angrr";
golink.url = "github:tailscale/golink";
elgit.url = "git+https://git.alin.ovh/elgit?shallow=0";
mycal.url = "git+https://git.alin.ovh/mycal?shallow=0";
searchix.url = "git+https://git.alin.ovh/searchix?shallow=0";
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
mac-app-util = {
url = "github:hraban/mac-app-util";
inputs.nixpkgs.follows = "nixpkgs";
};
agenix = {
url = "github:ryantm/agenix";
inputs = {
nixpkgs.follows = "nixpkgs";
darwin.follows = "darwin";
home-manager.follows = "home-manager";
};
};
};
nixConfig = {
extra-substituters = [
"https://cache.lix.systems"
"https://nix-community.cachix.org"
];
};
outputs =
inputs:
with inputs;
let
# System types to support.
supportedSystems = [
"x86_64-linux"
"x86_64-darwin"
"aarch64-linux"
"aarch64-darwin"
];
# Helper function to generate an attrset '{ x86_64-linux = f "x86_64-linux"; ... }'.
forAllSystems = nixpkgs.lib.genAttrs supportedSystems;
mkHomeConfiguration =
{ modules, system }:
home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
inherit system;
overlays = [
agenix.overlays.default
nur.overlays.default
(self: super: {
personal = import ./packages/overlay.nix self super;
})
];
};
modules = [
nixvim.homeModules.nixvim
]
++ modules;
};
in
{
nixosConfigurations.prefect = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = (
with nixos-hardware.nixosModules;
[
./system/hosts/prefect.nix
common-cpu-amd
common-cpu-amd-pstate
common-pc-ssd
common-pc
common-gpu-nvidia-nonprime
]
);
};
nixosConfigurations.nano = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
modules = [
agenix.nixosModules.default
srvos.nixosModules.server
srvos.nixosModules.mixins-systemd-boot
./system/hosts/nano.nix
./system/hosts/nano-hardware.nix
];
};
nixosConfigurations.linde = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
specialArgs = { inherit searchix; };
modules = [
{
nixpkgs.overlays = [
nur.overlays.default
elgit.overlays.default
searchix.overlays.default
];
}
srvos.nixosModules.server
srvos.nixosModules.hardware-hetzner-cloud-arm
agenix.nixosModules.default
elgit.nixosModules.elgit
mycal.nixosModules.mycal
searchix.nixosModules.web
golink.nixosModules.default
./packages/modules/nixos/laminar.nix
./system/hosts/linde.nix
./private/calendar.nix
];
};
darwinConfigurations.marvin = darwin.lib.darwinSystem {
system = "aarch64-darwin";
modules = [
{
nixpkgs.overlays = [
angrr.overlays.default
];
}
nix-rosetta-builder.darwinModules.default
srvos.darwinModules.desktop
angrr.darwinModules.angrr
./system/hosts/marvin.nix
./packages/modules/darwin/caddy
];
};
homeConfigurations."alan@marvin" = mkHomeConfiguration {
system = "aarch64-darwin";
modules = [
mac-app-util.homeManagerModules.default
./user/hosts/marvin.nix
./private/ssh.nix
];
};
homeConfigurations."alin@prefect" = mkHomeConfiguration {
system = "x86_64-linux";
modules = [
./user/hosts/prefect.nix
./private/ssh.nix
];
};
homeConfigurations."alan@nano" = mkHomeConfiguration {
system = "aarch64-linux";
modules = [
./user/hosts/nano.nix
];
};
homeConfigurations."alan@linde" = mkHomeConfiguration {
system = "aarch64-linux";
modules = [
./user/hosts/server.nix
];
};
devShells = forAllSystems (
system:
let
pkgs = import nixpkgs { inherit system; };
in
{
default = pkgs.mkShell {
packages = with pkgs; [
nixos-rebuild-ng
(writeShellScriptBin "nixos-rebuild" ''
exec ${lib.getExe nixos-rebuild-ng} "$@"
'')
];
};
secrets = pkgs.mkShell {
packages = [ agenix.packages.${system}.default ];
};
}
);
packages = forAllSystems (system: {
minimal-iso = nixos-generators.nixosGenerate {
inherit system;
format = "iso";
modules = [ ./system/hosts/installer.nix ];
};
});
};
}
flake.nix (view raw)