{ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; disko.url = "github:nix-community/disko"; disko.inputs.nixpkgs.follows = "nixpkgs"; nixos-facter-modules.url = "github:numtide/nixos-facter-modules"; radiantwave.url = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/radiantwave.git"; radiantwave-dev.url = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/radiantwave.git?ref=dev"; nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/main"; }; outputs = { self, nixpkgs, disko, nixos-facter-modules, radiantwave, radiantwave-dev, nixos-raspberrypi, ... }@inputs: let system = "x86_64-linux"; mkKioskSystem = { system, radiantwave, upgradeFlakeRef, extraModules ? [], diskModule, enableAutoUpgrade ? true, extraSpecialArgs ? {}}: nixpkgs.lib.nixosSystem { inherit system; specialArgs = { inherit radiantwave; inherit upgradeFlakeRef; } // extraSpecialArgs; modules = [ ./configuration.nix disko.nixosModules.disko diskModule nixos-facter-modules.nixosModules.facter { facter.reportPath = ./facter.json; } radiantwave.nixosModules.default ] ++ extraModules; }; mkRpiKioskSystem = { radiantwave, upgradeFlakeRef, extraModules ? [], enableAutoUpgrade ? true }: nixos-raspberrypi.lib.nixosSystem { specialArgs = { inherit radiantwave upgradeFlakeRef; inherit nixos-raspberrypi; }; modules = [ ({ ... }: { imports = with nixos-raspberrypi.nixosModules; [ sd-image raspberry-pi-5.base raspberry-pi-5.page-size-16k raspberry-pi-5.display-vc4 ]; }) ./configuration.nix radiantwave.nixosModules.default { # system.autoUpgrade = { # enable = enableAutoUpgrade; # flake = upgradeFlakeRef; # dates = "*:00/10"; # allowReboot = true; # flags = [ "--refresh" ]; # }; boot.loader.systemd-boot.enable = nixpkgs.lib.mkForce false; boot.loader.efi.canTouchEfiVariables = nixpkgs.lib.mkForce false; boot.loader.raspberry-pi.bootloader = "kernel"; nix.settings.extra-substituters = [ "https://nixos-raspberrypi.cachix.org" ]; nix.settings.extra-trusted-public-keys = [ "nixos-raspberrypi.cachix.org-1:4iMO9LXa8BqhU+Rpg6LQKiGa2lsNh/j2oiYLNOQ5sPI=" ]; } ] ++ extraModules; }; in { packages.x86_64-linux.radiantwavekiosk = self.nixosConfigurations.radiantwavekiosk.config.system.build.toplevel; packages.x86_64-linux.radiantwavekiosk-dev = self.nixosConfigurations.radiantwavekiosk-dev.config.system.build.toplevel; packages.x86_64-linux.radiantwavekiosk-commercial = self.nixosConfigurations.radiantwavekiosk-commercial.config.system.build.toplevel; packages.x86_64-linux.radiantwavekiosk-android = self.nixosConfigurations.radiantwavekiosk-android.config.system.build.toplevel; nixosConfigurations = { radiantwavekiosk = mkKioskSystem { system = "x86_64-linux"; radiantwave = radiantwave; diskModule = ./disk-config.nix; upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk"; extraModules = []; }; radiantwavekiosk-dev = mkKioskSystem { system = "x86_64-linux"; radiantwave = radiantwave-dev; diskModule = ./disk-config.nix; upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git?ref=dev#radiantwavekiosk-dev"; extraModules = []; }; radiantwavekiosk-commercial = mkKioskSystem { system = "x86_64-linux"; radiantwave = radiantwave; diskModule = ./commercial-disk-config.nix; upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk-commercial"; extraModules = []; }; radiantwavekiosk-commercial-dev = mkKioskSystem { system = "x86_64-linux"; radiantwave = radiantwave; diskModule = ./commercial-disk-config.nix; upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git?ref=dev#radiantwavekiosk-commercial"; extraModules = []; }; radiantwavekiosk-android = mkKioskSystem { system = "x86_64-linux"; radiantwave = radiantwave; diskModule = ./disk-config.nix; upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk-android"; extraModules = [./rotated_display.nix ]; }; radiantwavekiosk-rpi = mkRpiKioskSystem { radiantwave = radiantwave; upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git#radiantwavekiosk-rpi"; }; radiantwavekiosk-rpi-dev = mkRpiKioskSystem { radiantwave = radiantwave-dev; upgradeFlakeRef = "git+https://gitea.radiantwavetech.com/RadiantWaveTech/KioskConfig.git?ref=dev#radiantwavekiosk-rpi-dev"; }; usb-iso = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; inherit self; }; modules = [ "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix" disko.nixosModules.disko ./iso-config.nix ./disk-config.nix ({ pkgs, ... }: { environment.systemPackages = [ disko.packages.${system}.default ]; isoImage.storeContents = [ self.packages.x86_64-linux.radiantwavekiosk ]; environment.etc."disko-config.nix".source = ./disk-config.nix; }) ]; }; commercial-usb-iso = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; inherit self; }; modules = [ "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix" disko.nixosModules.disko ./commercial-iso-config.nix ./commercial-disk-config.nix ({ pkgs, ... }: { environment.systemPackages = [ disko.packages.${system}.default ]; isoImage.storeContents = [ self.packages.x86_64-linux.radiantwavekiosk-commercial ]; environment.etc."disko-config.nix".source = ./commercial-disk-config.nix; }) ]; }; android-iso = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; inherit self; }; modules = [ "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix" disko.nixosModules.disko ./iso-config.nix ./disk-config.nix ({ pkgs, ... }: { environment.systemPackages = [ disko.packages.${system}.default ]; isoImage.storeContents = [ self.packages.x86_64-linux.radiantwavekiosk-android ]; environment.etc."disko-config.nix".source = ./disk-config.nix; }) ]; }; dev-iso = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; specialArgs = { inherit inputs; inherit self; }; modules = [ "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix" disko.nixosModules.disko ./dev-iso.nix ./disk-config.nix ({ pkgs, ... }: { environment.systemPackages = [ disko.packages.${system}.default ]; isoImage.storeContents = [ self.packages.x86_64-linux.radiantwavekiosk-dev ]; environment.etc."disko-config.nix".source = ./disk-config.nix; }) ]; }; }; }; }