{ pkgs, }: let tiny-dfr = pkgs.tiny-dfr.overrideAttrs (old: { src = pkgs.fetchFromGitHub { owner = "xeniagda"; repo = "tiny-dfr"; rev = "master"; hash = "sha256-I2R28wQz4Vd8VonbDcM6TZOn5lnWSXqwX4w/sieaQL8="; }; }); in assert tiny-dfr.version == "0.3.1"; { services.udev.packages = [ tiny-dfr ]; systemd.services.tiny-dfr = { enable = true; description = "tiny-dfr"; after = ["systemd-user-sessions.service" "getty@tty1.service" "plymouth-quit.service" "systemd-logind.service" "dev-tiny_dfr_display.device" "dev-tiny_dfr_backlight.device" "dev-tiny_dfr_display_backlight.device"]; wantedBy = ["multi-user.target"]; bindsTo = ["dev-tiny_dfr_display.device" "dev-tiny_dfr_backlight.device" "dev-tiny_dfr_display_backlight.device"]; startLimitIntervalSec = 30; startLimitBurst = 2; serviceConfig = { ExecStart = "${tiny-dfr}/bin/tiny-dfr"; Restart = "always"; }; }; environment.etc."tiny-dfr/next-workspace.svg".source = ./tiny-dfr-icons/next-workspace.svg; environment.etc."tiny-dfr/prev-workspace.svg".source = ./tiny-dfr-icons/prev-workspace.svg; environment.etc."tiny-dfr/brightness_high.svg".source = ./tiny-dfr-icons/brightness_high.svg; environment.etc."tiny-dfr/brightness_low.svg".source = ./tiny-dfr-icons/brightness_low.svg; environment.etc."tiny-dfr/backlight_high.svg".source = ./tiny-dfr-icons/backlight_high.svg; environment.etc."tiny-dfr/backlight_low.svg".source = ./tiny-dfr-icons/backlight_low.svg; environment.etc."tiny-dfr/play_pause.svg".source = ./tiny-dfr-icons/play_pause.svg; environment.etc."tiny-dfr/fast_forward.svg".source = ./tiny-dfr-icons/fast_forward.svg; environment.etc."tiny-dfr/fast_rewind.svg".source = ./tiny-dfr-icons/fast_rewind.svg; environment.etc."tiny-dfr/volume_up.svg".source = ./tiny-dfr-icons/volume_up.svg; environment.etc."tiny-dfr/volume_down.svg".source = ./tiny-dfr-icons/volume_down.svg; environment.etc."tiny-dfr/volume_off.svg".source = ./tiny-dfr-icons/volume_off.svg; environment.etc."tiny-dfr/config.toml".source = (pkgs.formats.toml {}).generate "tiny-dfr-config" { FontTemplate = "monospace-12"; ActiveBrightness = 255; ShowButtonOutlines = false; MediaLayerDefault = true; MediaLayerKeys = [ { Icon = "prev-workspace"; Action = "Finance"; } # bind me in the window manager! { Icon = "next-workspace"; Action = "Sport"; } # bind me in the window manager! { Icon = "brightness_low"; Action = "BrightnessDown"; } { Icon = "brightness_high"; Action = "BrightnessUp"; } { Icon = "backlight_low"; Action = "IllumDown"; } { Icon = "backlight_high"; Action = "IllumUp"; } { Icon = "fast_rewind"; Action = "PreviousSong"; } { Icon = "play_pause"; Action = "PlayPause"; } { Icon = "fast_forward"; Action = "NextSong"; } { Icon = "volume_off"; Action = "Mute"; } { Icon = "volume_down"; Action = "VolumeDown"; } { Icon = "volume_up"; Action = "VolumeUp"; } ]; PrimaryLayerKeys = [ { Text = "F1"; Action = "F1"; } { Text = "F2"; Action = "F2"; } { Text = "F3"; Action = "F3"; } { Text = "F4"; Action = "F4"; } { Text = "F5"; Action = "F5"; } { Text = "F6"; Action = "F6"; } { Text = "F7"; Action = "F7"; } { Text = "F8"; Action = "F8"; } { Text = "3"; Action = "Num3"; } { Text = "F10"; Action = "F10"; } { Text = "F11"; Action = "F11"; } { Text = "F12"; Action = "F12"; } ]; ButtonStyle = { InactiveColor = [0.05 0.0 0.1]; ActiveColor = [0.3 0.2 0.7]; OnTime = 0.05; OffTime = 0.1; Bounce = 5; }; }; }