76 lines
No EOL
2 KiB
Nix
76 lines
No EOL
2 KiB
Nix
{ lib, inputs, config, pkgs, username, hostname, gpu, ... }: {
|
|
imports = [ inputs.kde2nix.nixosModules.plasma6 ];
|
|
|
|
# Enable sound with pipewire.
|
|
sound.enable = true;
|
|
hardware.pulseaudio.enable = false;
|
|
security.rtkit.enable = true;
|
|
services.pipewire = {
|
|
enable = true;
|
|
alsa.enable = true;
|
|
alsa.support32Bit = true;
|
|
pulse.enable = true;
|
|
};
|
|
|
|
# Configure keymap in X11
|
|
services.xserver = {
|
|
enable = true;
|
|
layout = "us";
|
|
xkbVariant = "";
|
|
autorun = true;
|
|
videoDrivers = [ ] ++ lib.optional (builtins.isString gpu) gpu;
|
|
desktopManager.plasma6.enable = true;
|
|
};
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
arc-kde-theme
|
|
arc-theme
|
|
papirus-icon-theme
|
|
plasma-theme-switcher
|
|
tailscale-systray
|
|
];
|
|
|
|
systemd.user.services = {
|
|
"get-theme-times" = {
|
|
enable = true;
|
|
path = [ pkgs.curl ];
|
|
script = ''
|
|
curl -s wttr.in/?format=%S > /tmp/wttr.sunrise
|
|
curl -s wttr.in/?format=%s > /tmp/wttr.sunset
|
|
'';
|
|
after = [ "networking-online.target" ];
|
|
serviceConfig.Type = "oneshot";
|
|
onSuccess = [ "set-theme.service" ];
|
|
};
|
|
set-theme = {
|
|
enable = true;
|
|
script = ''
|
|
if [ ! -f /tmp/wttr.sunrise ] ; then
|
|
systemctl --user start get-theme-times.service
|
|
fi
|
|
SUNRISE=`date -d \`cat /tmp/wttr.sunrise\` +%s`
|
|
SUNSET=`date -d \`cat /tmp/wttr.sunset\` +%s`
|
|
CURRENT=`date +%s`
|
|
if [ $CURRENT -gt $SUNRISE -a $CURRENT -lt $SUNSET ] ; then
|
|
/run/current-system/sw/bin/plasma-apply-colorscheme -platform offscreen Arc
|
|
else
|
|
/run/current-system/sw/bin/plasma-apply-colorscheme -platform offscreen ArcDark
|
|
fi
|
|
'';
|
|
serviceConfig.Type = "oneshot";
|
|
};
|
|
};
|
|
|
|
systemd.user.timers = {
|
|
"get-theme-times" = {
|
|
enable = true;
|
|
partOf = [ "get-theme-times.service" ];
|
|
timerConfig.OnCalendar = ["1 hour"];
|
|
};
|
|
"set-theme" = {
|
|
enable = true;
|
|
partOf = [ "set-theme.service" ];
|
|
timerConfig.OnCalendar = [ "1 minute" ];
|
|
};
|
|
};
|
|
} |