Files
KioskConfig/flake.nix
T
2026-07-27 14:13:58 -05:00

226 lines
8.3 KiB
Nix

{
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";
rhemawave.url = "git+https://codeberg.org/RhemaWave-Technologies/RhemaWave.git";
rhemawave-dev.url = "git+https://codeberg.org/RhemaWave-Technologies/RhemaWave.git?ref=dev";
nixos-raspberrypi.url = "github:nvmd/nixos-raspberrypi/main";
};
outputs =
{
self,
nixpkgs,
disko,
nixos-facter-modules,
rhemawave,
rhemawave-dev,
nixos-raspberrypi,
...
}@inputs:
let
system = "x86_64-linux";
mkKioskSystem = { system, rhemawave, upgradeFlakeRef, extraModules ? [], diskModule, enableAutoUpgrade ? true, extraSpecialArgs ? {}}:
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit rhemawave;
inherit upgradeFlakeRef;
} // extraSpecialArgs;
modules = [
./configuration.nix
disko.nixosModules.disko
diskModule
nixos-facter-modules.nixosModules.facter
{ facter.reportPath = ./facter.json; }
rhemawave.nixosModules.default
] ++ extraModules;
};
mkRpiKioskSystem = { rhemawave, upgradeFlakeRef, extraModules ? [], enableAutoUpgrade ? true }:
nixos-raspberrypi.lib.nixosSystem {
specialArgs = {
inherit rhemawave 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
rhemawave.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.rhemawavekiosk = self.nixosConfigurations.rhemawavekiosk.config.system.build.toplevel;
packages.x86_64-linux.rhemawavekiosk-dev = self.nixosConfigurations.rhemawavekiosk-dev.config.system.build.toplevel;
packages.x86_64-linux.rhemawavekiosk-commercial = self.nixosConfigurations.rhemawavekiosk-commercial.config.system.build.toplevel;
packages.x86_64-linux.rhemawavekiosk-android = self.nixosConfigurations.rhemawavekiosk-android.config.system.build.toplevel;
nixosConfigurations = {
rhemawavekiosk = mkKioskSystem {
system = "x86_64-linux";
rhemawave = rhemawave;
diskModule = ./disk-config.nix;
upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git#rhemawavekiosk";
extraModules = [];
};
rhemawavekiosk-dev = mkKioskSystem {
system = "x86_64-linux";
rhemawave = rhemawave-dev;
diskModule = ./disk-config.nix;
upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git?ref=dev#rhemawavekiosk-dev";
extraModules = [];
};
rhemawavekiosk-commercial = mkKioskSystem {
system = "x86_64-linux";
rhemawave = rhemawave;
diskModule = ./commercial-disk-config.nix;
upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git#rhemawavekiosk-commercial";
extraModules = [];
};
rhemawavekiosk-commercial-dev = mkKioskSystem {
system = "x86_64-linux";
rhemawave = rhemawave;
diskModule = ./commercial-disk-config.nix;
upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git?ref=dev#rhemawavekiosk-commercial";
extraModules = [];
};
rhemawavekiosk-android = mkKioskSystem {
system = "x86_64-linux";
rhemawave = rhemawave;
diskModule = ./disk-config.nix;
upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git#rhemawavekiosk-android";
extraModules = [./rotated_display.nix ];
};
rhemawavekiosk-rpi = mkRpiKioskSystem {
rhemawave = rhemawave;
upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git#rhemawavekiosk-rpi";
};
rhemawavekiosk-rpi-dev = mkRpiKioskSystem {
rhemawave = rhemawave-dev;
upgradeFlakeRef = "git+https://codeberg.org/RhemaWave-Technologies/KioskConfig.git?ref=dev#rhemawavekiosk-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.rhemawavekiosk
];
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.rhemawavekiosk-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.rhemawavekiosk-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.rhemawavekiosk-dev
];
environment.etc."disko-config.nix".source = ./disk-config.nix;
})
];
};
};
};
}