{ description = "A flake for building my infra"; outputs = { self, ... } @ inputs: rec { darwinConfigurations = { blechkasten = inputs.darwin.lib.darwinSystem rec { system = "aarch64-darwin"; pkgs = import inputs.nixpkgsDarwin { inherit system; config.allowUnfree = true; overlays = overlays ++ [(import ./pkgs/darwin)]; }; specialArgs = { currentSystem = system; inherit inputs; }; modules = [ inputs.mac-app-util.darwinModules.default ./machines/blechkasten/darwin-configuration.nix ]; }; }; colmena = { meta = rec { allowApplyAll = false; nixpkgs = import inputs.nixpkgs { system = "x86_64-linux"; overlays = overlays; }; specialArgs = { inherit inputs; currentSystem = nixpkgs.system; }; }; defaults = { lib, ... }: { imports = [ ./configurations/common ]; system.nixos.versionSuffix = ".${lib.substring 0 8 (inputs.nixpkgs.sourceInfo.lastModifiedDate or inputs.nixpkgs.sourceInfo.lastModified or "19700101")}.${inputs.nixpkgs.sourceInfo.shortRev or "dirty"}"; system.nixos.revision = lib.mkIf (inputs.nixpkgs.sourceInfo ? rev) inputs.nixpkgs.sourceInfo.rev; }; briefkasten = import ./machines/briefkasten/configuration.nix; trabbi = import ./machines/trabbi/configuration.nix; wanderduene = import ./machines/wanderduene/configuration.nix; wanderduene-old = import ./machines/wanderduene-old/configuration.nix; }; nixosConfigurations = (import (inputs.colmena + "/src/nix/hive/eval.nix") { rawFlake = inputs.self; colmenaOptions = import (inputs.colmena + "/src/nix/hive/options.nix"); colmenaModules = import (inputs.colmena + "/src/nix/hive/modules.nix"); }).nodes; overlays = [ (import ./pkgs/overlay.nix) (final: prev: { dns = inputs.dns-nix; unstable = inputs.nixpkgsUnstable.legacyPackages.${prev.system}; }) inputs.colmena.overlay inputs.stagit.overlay inputs.gpx-map.overlay inputs.mobile-coverage-map.overlay inputs.sdm2mqtt.overlay inputs.solax2mqtt.overlay inputs.lacrosse2mqtt.overlay inputs.departures2mqtt.overlay inputs.mqtt-webui.overlay inputs.ctucx-things.overlay inputs.ctucx-gallery.overlay inputs.ctucx-website.overlay inputs.dnsmasq-lease-overview.overlay inputs.flauschehorn-sexy.overlay inputs.travelynx2fedi.overlay ]; }; inputs = { nixpkgs = { type = "github"; owner = "NixOS"; repo = "nixpkgs"; ref = "nixos-23.11"; }; nixpkgsDarwin = { type = "github"; owner = "NixOS"; repo = "nixpkgs"; ref = "nixpkgs-23.11-darwin"; }; nixpkgsUnstable = { type = "github"; owner = "NixOS"; repo = "nixpkgs"; ref = "nixpkgs-unstable"; }; nixos-hardware = { type = "github"; owner = "NixOS"; repo = "nixos-hardware"; ref = "master"; }; home-manager = { type = "github"; owner = "nix-community"; repo = "home-manager"; ref = "release-23.11"; inputs.nixpkgs.follows = "nixpkgs"; }; darwin = { type = "github"; owner = "lnl7"; repo = "nix-darwin"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; }; mac-app-util = { type = "github"; owner = "hraban"; repo = "mac-app-util"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; nix-std = { type = "github"; owner = "chessai"; repo = "nix-std"; ref = "master"; }; agenix = { type = "github"; owner = "ryantm"; repo = "agenix"; ref = "main"; inputs.nixpkgs.follows = "nixpkgs"; }; colmena = { type = "github"; owner = "zhaofengli"; repo = "colmena"; ref = "main"; inputs.nixpkgs.follows = "nixpkgs"; }; simple-nixos-mailserver = { type = "gitlab"; owner = "simple-nixos-mailserver"; repo = "nixos-mailserver"; ref = "nixos-23.05"; inputs.nixpkgs.follows = "nixpkgs"; }; flake-utils = { type = "github"; owner = "numtide"; repo = "flake-utils"; ref = "main"; }; impermanence = { type = "github"; owner = "nix-community"; repo = "impermanence"; ref = "master"; }; dns-nix = { type = "git"; url = "https://git.ctu.cx/dns.nix"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; }; stagit = { type = "git"; url = "https://git.ctu.cx/stagit"; ref = "main"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; sdm2mqtt = { type = "git"; url = "https://git.ctu.cx/sdm2mqtt"; ref = "main"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; solax2mqtt = { type = "git"; url = "https://git.ctu.cx/solax2mqtt"; ref = "main"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; lacrosse2mqtt = { type = "git"; url = "https://git.ctu.cx/lacrosse2mqtt"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; departures2mqtt = { type = "git"; url = "https://git.ctu.cx/departures2mqtt"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; mqtt-webui = { type = "git"; url = "https://git.ctu.cx/mqtt-webui"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; ctucx-website = { type = "git"; url = "https://git.ctu.cx/website"; ref = "main"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; ctucx-things = { type = "git"; url = "https://git.ctu.cx/ctucx.things"; ref = "main"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; ctucx-gallery = { type = "git"; url = "https://git.ctu.cx/gallery"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; flauschehorn-sexy = { type = "git"; url = "https://git.ctu.cx/flauschehorn.sexy"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; mobile-coverage-map = { type = "git"; url = "https://git.ctu.cx/mobile-coverage-map"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; gpx-map = { type = "git"; url = "https://git.ctu.cx/gpx-map"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; dnsmasq-lease-overview = { type = "git"; url = "https://git.ctu.cx/dnsmasq-lease-overview"; ref = "master"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; travelynx2fedi = { type = "git"; url = "https://git.ctu.cx/travelynx2fedi"; ref = "main"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; }; }; }