full refactor
This commit is contained in:
6
sw/kiosk/default.nix
Normal file
6
sw/kiosk/default.nix
Normal file
@@ -0,0 +1,6 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
lib.mkMerge [
|
||||
(import ./programs.nix { inherit config lib pkgs inputs; })
|
||||
(import ./services.nix { inherit config lib pkgs inputs; })
|
||||
(import ./gsettings.nix { inherit config lib pkgs inputs; })
|
||||
]
|
||||
52
sw/kiosk/gsettings.nix
Normal file
52
sw/kiosk/gsettings.nix
Normal file
@@ -0,0 +1,52 @@
|
||||
{ config, lib, inputs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.modules.sw;
|
||||
in {
|
||||
config = lib.mkIf (cfg.enable && cfg.type == "kiosk") {
|
||||
programs.dconf = {
|
||||
enable = true;
|
||||
profiles.user = {
|
||||
databases = [{
|
||||
settings = {
|
||||
"org/gnome/desktop/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
clock-format = "12h";
|
||||
clock-show-weekday = true;
|
||||
show-battery-percentage = true;
|
||||
};
|
||||
"org/gnome/desktop/media-handling" = {
|
||||
automount = false;
|
||||
automount-open = false;
|
||||
autorun-never = true;
|
||||
};
|
||||
"org/gnome/settings-daemon/plugins/power" = {
|
||||
sleep-inactive-ac-type = "nothing";
|
||||
};
|
||||
"org/gnome/desktop/lockdown" = {
|
||||
disable-lock-screen = true;
|
||||
};
|
||||
"org/gnome/desktop/screensaver" = {
|
||||
lock-enabled = false;
|
||||
};
|
||||
"org/gnome/desktop/session" = {
|
||||
idle-delay = inputs.nixpkgs.lib.gvariant.mkUint32 0;
|
||||
};
|
||||
"org/gnome/desktop/input-sources" = {
|
||||
sources = "[('ibus', 'xkb:us::eng')]";
|
||||
};
|
||||
"org/gnome/desktop/mru-sources" = {
|
||||
sources = "[('ibus', 'xkb:us::eng')]";
|
||||
};
|
||||
"sm/puri/phosh" = {
|
||||
lock-enabled = false;
|
||||
};
|
||||
"org/gnome/desktop/a11y/applications" = {
|
||||
screen-keyboard-enabled = true;
|
||||
};
|
||||
};
|
||||
}];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
22
sw/kiosk/programs.nix
Normal file
22
sw/kiosk/programs.nix
Normal file
@@ -0,0 +1,22 @@
|
||||
{ config, lib, pkgs, inputs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.modules.sw;
|
||||
basePackages = with pkgs; [
|
||||
libcamera
|
||||
chromium
|
||||
glib
|
||||
squeekboard
|
||||
dconf
|
||||
phoc
|
||||
gsettings-desktop-schemas
|
||||
];
|
||||
in {
|
||||
environment.systemPackages = subtractLists cfg.excludePackages (basePackages ++ cfg.extraPackages);
|
||||
|
||||
programs.chromium = {
|
||||
enable = true;
|
||||
};
|
||||
}
|
||||
156
sw/kiosk/services.nix
Normal file
156
sw/kiosk/services.nix
Normal file
@@ -0,0 +1,156 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
desktopManager.phosh = {
|
||||
enable = true;
|
||||
user = "engr-ugaif";
|
||||
group = "users";
|
||||
};
|
||||
};
|
||||
|
||||
services.displayManager.gdm = {
|
||||
enable = true;
|
||||
autoSuspend = false;
|
||||
};
|
||||
services.displayManager.autoLogin = {
|
||||
enable = true;
|
||||
user = "engr-ugaif";
|
||||
};
|
||||
|
||||
services.dbus.enable = true;
|
||||
|
||||
services.fwupd.enable = true;
|
||||
|
||||
i18n.inputMethod = {
|
||||
type = "ibus";
|
||||
enable = true;
|
||||
ibus.engines = [ pkgs.ibus-engines.m17n ];
|
||||
};
|
||||
|
||||
services.gnome.gnome-keyring.enable = lib.mkForce false;
|
||||
|
||||
environment.sessionVariables = {
|
||||
GDK_SCALE = "1.25";
|
||||
GDK_DPI_SCALE = "0.5";
|
||||
|
||||
# Make GLib / gsettings actually see schemas
|
||||
XDG_DATA_DIRS = [ "/run/current-system/sw/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}" ];
|
||||
GSETTINGS_SCHEMA_DIR =
|
||||
"/run/current-system/sw/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}/glib-2.0/schemas";
|
||||
};
|
||||
|
||||
environment.etc."machine-info".text = ''
|
||||
CHASSIS=handset
|
||||
'';
|
||||
|
||||
services.logind.settings.Login = {
|
||||
HandlePowerKey="ignore";
|
||||
HandleSuspendKey="ignore";
|
||||
HandleHibernateKey="ignore";
|
||||
HandleLidSwitch="ignore";
|
||||
HandleLidSwitchExternalPower="ignore";
|
||||
IdleAction="ignore";
|
||||
};
|
||||
|
||||
# Enable networking
|
||||
networking.networkmanager.enable = false;
|
||||
networking.wireless = {
|
||||
enable = true;
|
||||
networks = {
|
||||
"IOT_vr" = {
|
||||
ssid = "IOT_vr";
|
||||
pskRaw = "849a13f095b73a3d038a904576fd8ad4b83da81d285acaf435b545c1560c7e27";
|
||||
authProtocols = [ "WPA-PSK" ];
|
||||
};
|
||||
"IOT_sensors".psk = "aaaaaaaa";
|
||||
};
|
||||
};
|
||||
|
||||
# Enable sound with pipewire.
|
||||
services.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
alsa.support32Bit = true;
|
||||
pulse.enable = true;
|
||||
wireplumber.enable = true;
|
||||
};
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
nerd-fonts.fira-code
|
||||
];
|
||||
fonts.fontconfig = {
|
||||
enable = true;
|
||||
defaultFonts.monospace = [ "FiraCode Nerd Font Mono" ];
|
||||
};
|
||||
|
||||
systemd.user.services.squeekboard = {
|
||||
description = "Squeekboard on-screen keyboard";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
partOf = [ "graphical-session.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.squeekboard}/bin/squeekboard";
|
||||
Restart = "on-failure";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services."force-osk" = {
|
||||
description = "Force the OSK to Enable";
|
||||
wantedBy = [ "chromium-kiosk.service" ];
|
||||
partOf = [ "chromium-kiosk.service" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStartPre = ''
|
||||
/run/current-system/sw/bin/sleep 5
|
||||
'';
|
||||
ExecStart = ''
|
||||
/run/current-system/sw/bin/dconf reset /org/gnome/desktop/a11y/applications/screen-keyboard-enabled
|
||||
'';
|
||||
Type = "simple";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services."force-input-sources" = {
|
||||
description = "Force the Gsettings Input Sources";
|
||||
wantedBy = [ "chromium-kiosk.service" ];
|
||||
partOf = [ "chromium-kiosk.service" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStartPre = ''
|
||||
/run/current-system/sw/bin/sleep 5
|
||||
'';
|
||||
ExecStart = ''
|
||||
/run/current-system/sw/bin/dconf reset /org/gnome/desktop/input-sources/sources
|
||||
'';
|
||||
ExecStartPost = ''
|
||||
/run/current-system/sw/bin/dconf reset /org/gnome/desktop/mru-sources/sources
|
||||
'';
|
||||
|
||||
Type = "simple";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user.services."chromium-kiosk" = {
|
||||
description = "Chromium kiosk";
|
||||
wantedBy = [ "graphical-session.target" ];
|
||||
partOf = [ "graphical-session.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.chromium}/bin/chromium \
|
||||
--enable-features=UseOzonePlatform,TouchpadOverscrollHistoryNavigation,PullToRefresh \
|
||||
--ozone-platform=wayland \
|
||||
--kiosk \
|
||||
--start-fullscreen \
|
||||
--noerrdialogs \
|
||||
--disable-session-crashed-bubble \
|
||||
--disable-infobars \
|
||||
https://ha.factory.uga.edu
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user