nix-config/flake.nix
Lander Van den Bulcke dcfbb7d660
feat: add db-01 deploy-rs target
Signed-off-by: Lander Van den Bulcke <landervandenbulcke@gmail.com>
2025-09-19 19:53:57 +02:00

170 lines
4.7 KiB
Nix

{
description = "EscapeAngle's Nix config";
inputs = {
# Nixpkgs
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
# Secrets
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
# disko
disko.url = "github:nix-community/disko";
disko.inputs.nixpkgs.follows = "nixpkgs";
# theme
catppuccin.url = "github:catppuccin/nix/release-25.05";
# Home manager
home-manager.url = "github:nix-community/home-manager/release-25.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
# deploy-rs
deploy-rs.url = "github:serokell/deploy-rs";
# nixos-wsl
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
# neovim
nixvim.url = "git+https://git.escapeangle.com/lander/nixvim.git";
# mailserver
nixos-mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-25.05";
inputs = {
nixpkgs.follows = "nixpkgs";
};
};
# headplane
headplane = {
url = "github:igor-ramazanov/headplane";
inputs.nixpkgs.follows = "nixpkgs";
};
# tidalcycles
tidalcycles = {
url = "github:mitchmindtree/tidalcycles.nix";
};
};
outputs =
{
self,
nixpkgs,
tidalcycles,
deploy-rs,
...
}@inputs:
let
inherit (self) outputs;
# I only care about linux builds
systems = [
"aarch64-linux"
"x86_64-linux"
];
forAllSystems = nixpkgs.lib.genAttrs systems;
in
{
# custom pkgs
packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system});
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
overlays = import ./overlays { inherit inputs; };
nixosModules = import ./modules/nixos;
homeManagerModules = import ./modules/home-manager;
nixosConfigurations =
let
hetzner = import ./lib/hetzner.nix { inherit inputs nixpkgs; };
in
{
# Workstations
wodan = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs outputs; };
modules = [
{
nixpkgs.overlays = [
tidalcycles.overlays.default
(_: prev: {
tailscale = prev.tailscale.overrideAttrs (old: {
checkFlags = builtins.map (
flag:
if prev.lib.hasPrefix "-skip=" flag then
flag + "|^TestGetList$|^TestIgnoreLocallyBoundPorts$|^TestPoller$"
else
flag
) old.checkFlags;
});
})
];
}
{ nixpkgs.overlays = [ tidalcycles.overlays.default ]; }
./hosts/wodan
];
};
widar = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs outputs; };
modules = [
./hosts/widar
];
};
heimdall = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs outputs; };
modules = [
./hosts/heimdall
];
};
# servers
db-01 = hetzner.mkHetznerMachine "db-01" {
ipv6Address = "2a01:4f8:c012:15d4::/64";
};
hosting-01 = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
specialArgs = { inherit inputs outputs; };
modules = [
./hosts/hosting-01
];
};
hosting-02 = hetzner.mkHetznerMachine "hosting-02" {
ipv6Address = "2a01:4f8:c013:7fc0::/64";
};
mail-01 = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
specialArgs = { inherit inputs outputs; };
modules = [
./hosts/mail-01
];
};
};
deploy.nodes = {
db-01 = {
hostname = "db-01.escapeangle.com";
profiles.system = {
user = "root";
path = deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.db-01;
};
};
hosting-02 = {
hostname = "hosting-02.escapeangle.com";
profiles.system = {
user = "root";
path = deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.hosting-02;
};
};
};
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
};
}