{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; xivlauncher-rb = { url = "github:dawei-nh/xivlauncher-rb-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; cheatengine = { url = "github:Hy4ri/cheatengine-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; scopebuddy = { url = "github:HikariKnight/ScopeBuddy"; inputs.nixpkgs.follows = "nixpkgs"; }; nixpkgs-xr = { url = "github:nix-community/nixpkgs-xr"; inputs.nixpkgs.follows = "nixpkgs"; }; lazyvim = { url = "github:pfassina/lazyvim-nix/v16.0.0"; inputs.nixpkgs.follows = "nixpkgs"; }; affinity-nix = { url = "github:Meo98/affinity-nix-fork"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-flatpak = { url = "github:gmodena/nix-flatpak/?ref=latest"; }; appimage-manager = { url = "github:kem-a/AppManager"; inputs.nixpkgs.follows = "nixpkgs"; }; pi = { url = "github:earendil-works/pi/stable"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; nix-darwin = { url = "github:nix-darwin/nix-darwin"; inputs.nixpkgs.follows = "nixpkgs"; }; affinity-thumbnailer-kde = { url = "path:./packages/affinity-thumbnailer-kde"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = inputs@{ self, nixpkgs, nixpkgs-xr, nix-darwin, nix-flatpak, home-manager, affinity-nix, sops-nix, affinity-thumbnailer-kde, cheatengine, xivlauncher-rb, ... }: let home-manager-configuration = { home-manager, ... }: { home-manager = { useGlobalPkgs = true; extraSpecialArgs = { inherit inputs; }; users.frank = ./home/frank.nix; }; }; trusted-users-configuration = { nix, config, ... }: { nix.settings.trusted-users = [ config.users.users.frank.name ]; }; systems = [ "x86_64-linux" "aarch64-darwin" ]; forAllSystems = nixpkgs.lib.genAttrs systems; packagesFor = system: let pkgs = nixpkgs.legacyPackages.${system}; in nixpkgs.lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux { heidisql = pkgs.callPackage ./packages/heidisql/package.nix { }; aseprite-thumbnailer-kde = pkgs.callPackage ./packages/aseprite-thumbnailer-kde/package.nix { }; }; formatterFor = system: let pkgs = nixpkgs.legacyPackages.${system}; in pkgs.writeShellApplication { name = "nixfmt"; runtimeInputs = [ pkgs.nixfmt ]; text = '' flags=() paths=() for arg in "$@"; do case "$arg" in -*) flags+=("$arg") ;; *) paths+=("$arg") ;; esac done if [ "''${#paths[@]}" -eq 0 ]; then if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then mapfile -t paths < <(git ls-files '*.nix') else mapfile -t paths < <(find . -name '*.nix' -not -path './.devenv/*') fi fi nixfmt "''${flags[@]}" "''${paths[@]}" ''; }; in { packages = forAllSystems packagesFor; formatter = forAllSystems formatterFor; nixosConfigurations = { nero = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ home-manager.nixosModules.home-manager home-manager-configuration trusted-users-configuration nixpkgs-xr.nixosModules.nixpkgs-xr nix-flatpak.nixosModules.nix-flatpak affinity-thumbnailer-kde.nixosModules.default sops-nix.nixosModules.sops ./hosts/nero/hardware.nix ./hosts/nero/configuration.nix ]; }; vergil = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ home-manager.nixosModules.home-manager home-manager-configuration trusted-users-configuration sops-nix.nixosModules.sops ./hosts/vergil/hardware.nix ./hosts/vergil/configuration.nix ]; }; pdw-frankiel = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ home-manager.nixosModules.home-manager home-manager-configuration trusted-users-configuration nix-flatpak.nixosModules.nix-flatpak affinity-thumbnailer-kde.nixosModules.default sops-nix.nixosModules.sops ./hosts/pdw-frankiel/hardware.nix ./hosts/pdw-frankiel/configuration.nix ]; }; }; darwinConfigurations = { franks-macbook-pro = nix-darwin.lib.darwinSystem { specialArgs = { inherit inputs; inherit self; }; modules = [ home-manager.darwinModules.home-manager home-manager-configuration sops-nix.darwinModules.sops { users.users.frank.home = "/Users/frank"; } ./hosts/franks-macbook-pro/configuration.nix ]; }; }; }; }