{ inputs = { nixpkgs.url = "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"; rust-overlay = { url = "github:oxalica/rust-overlay"; inputs.nixpkgs.follows = "nixpkgs"; }; }; outputs = { self, nixpkgs, rust-overlay, ... }: let systems = [ "x86_64-linux" "aarch64-linux" ]; pkgsFor = system: import nixpkgs { localSystem = { inherit system; linux-kernel.target = "bzImage"; }; overlays = [ rust-overlay.overlays.default ]; }; forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f (pkgsFor system)); sources = import ./npins; finix = (import sources.finix.outPath) // { inherit (sources.finix) outPath; }; rustToolchain = pkgs: pkgs.rust-bin.stable.latest.default.override { extensions = [ "rust-analyzer" "rust-src" ]; }; in { devShells = forAllSystems (pkgs: { default = import ./nix/shell.nix { inherit pkgs; rustToolchain = rustToolchain pkgs; }; }); packages = forAllSystems (pkgs: { sessiond-login1-proxy = pkgs.callPackage ./nix/package.nix { rustPlatform = pkgs.makeRustPlatform { cargo = rustToolchain pkgs; rustc = rustToolchain pkgs; }; }; default = self.packages.${pkgs.stdenv.hostPlatform.system}.sessiond-login1-proxy; }); finixModules = { sessiond-login1-proxy = import ./nix/finix.nix; default = self.finixModules.sessiond-login1-proxy; }; nixosModules = { sessiond-login1-proxy = import ./nix/nixos.nix; default = self.finixModules.sessiond-login1-proxy; }; apps.x86_64-linux.finix-vm = let system = "x86_64-linux"; pkgs = pkgsFor system; argv = self.finixConfigurations.finix-vm.config.virtualisation.qemu.argv; script = pkgs.writeShellScript "run-finix-vm" (nixpkgs.lib.escapeShellArgs argv); in { type = "app"; program = "${script}"; }; finixConfigurations = let system = "x86_64-linux"; pkgs = pkgsFor system; in { finix-vm = finix.lib.finixSystem { inherit (pkgs) lib; specialArgs = { inherit (self.packages.${system}) sessiond-login1-proxy; sessiond = (import sources.sessiond.outPath { inherit pkgs; }) // { inherit (sources.sessiond) outPath; }; }; modules = [ { nixpkgs = { inherit pkgs; }; } ./nix/finix-vm.nix self.finixModules.sessiond-login1-proxy "${finix.outPath}/modules/virtualisation/qemu.nix" ] ++ builtins.attrValues { inherit (finix.nixosModules) getty sysklogd polkit; }; }; }; formatter = forAllSystems ( pkgs: import ./nix/formatter.nix { inherit pkgs; rustToolchain = rustToolchain pkgs; } ); }; }