{ inputs = { flake-parts.url = "github:hercules-ci/flake-parts"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; nextcloud = { url = "github:onny/nixos-nextcloud-testumgebung"; inputs.nixpkgs.follows = "nixpkgs"; }; gtrackmap = { url = "github:gtrackmap/gtrackmap"; inputs.nixpkgs.follows = "nixpkgs"; }; lanzaboote.url = "github:nix-community/lanzaboote"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; auto-cpufreq = { url = "github:AdnanHodzic/auto-cpufreq"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager/release-24.11"; inputs = { nixpkgs.follows = "nixpkgs"; }; }; commander-nvim = { url = "github:FeiyouG/commander.nvim"; flake = false; }; vimpeccable = { url = "github:svermeulen/vimpeccable"; flake = false; }; windline-nvim = { url = "github:windwp/windline.nvim"; flake = false; }; gen-nvim = { url = "github:David-Kunz/gen.nvim"; flake = false; }; ketchup = { url = "github:repomaa/ketchup"; inputs.nixpkgs.follows = "nixpkgs"; }; workout-sync = { url = "sourcehut:~repomaa/workout-sync"; inputs.nixpkgs.follows = "nixpkgs"; }; hastebin = { url = "sourcehut:~repomaa/hastebin"; inputs.nixpkgs.follows = "nixpkgs"; }; ksoloti-pr.url = "github:repomaa/nixpkgs/pkg/ksoloti"; agenix = { url = "github:ryantm/agenix"; inputs.nixpkgs.follows = "nixpkgs"; }; dnote = { url = "github:dnote/dnote"; flake = false; }; colmena = { url = "github:zhaofengli/colmena"; inputs.nixpkgs.follows = "nixpkgs"; }; syntax-renderer = { url = "sourcehut:~repomaa/syntax-renderer"; flake = false; }; zen-browser = { url = "github:MarceColl/zen-browser-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { flake-parts, agenix, nixpkgs, self, colmena, ... }@inputs: flake-parts.lib.mkFlake { inherit inputs; } ( let ssh.publicKeys.yubikey = "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLIUkESu5NnBi1M0+ZjYrkp6/rIFuwc3aguspf98jmOydNce6l65cnS3GRzc9oWx4lu11ahi87ZuE+pYV+gaHm4="; specialArgs = { inherit inputs ssh self; }; in { systems = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; perSystem = { pkgs, system, ... }: { devShells.default = pkgs.mkShell { packages = with pkgs; [ agenix.packages.${system}.default colmena.packages.${system}.colmena colmena.packages.${system}.manual (writeShellScriptBin "build" '' colmena build --keep-result "$@" '') (writeShellScriptBin "apply" '' colmena apply --keep-result "$@" '') (writeShellScriptBin "apply-local" '' colmena apply-local --sudo "$@" '') ]; }; }; flake = { nixosConfigurations = let mkConfiguration = name: nixpkgs.lib.nixosSystem { inherit specialArgs; modules = [ ./modules ./hosts/${name} ]; }; in { radish = mkConfiguration "radish"; freun-dev = mkConfiguration "freun-dev"; apu = mkConfiguration "apu"; }; colmenaHive = colmena.lib.makeHive self.outputs.colmena; colmena = let deploymentOptions = { radish = { allowLocalDeployment = true; targetHost = null; }; }; in { meta = { inherit specialArgs; nixpkgs = import nixpkgs { system = "x86_64-linux"; overlays = [ ]; }; }; } // builtins.mapAttrs (name: config: { imports = config._module.args.modules; deployment = if builtins.hasAttr name deploymentOptions then deploymentOptions.${name} else { }; }) self.nixosConfigurations; }; } ); }