diff --git a/home-manager/modules/polybar.nix b/home-manager/modules/polybar.nix index cae7d9a..22007c0 100644 --- a/home-manager/modules/polybar.nix +++ b/home-manager/modules/polybar.nix @@ -3,6 +3,14 @@ ... }: { home.packages = with pkgs; [ - polybar + (polybar.override { + alsaSupport = false; + curlSupport = true; + i3Support = true; + mpdSupport = true; + pulseSupport = true; + nlSupport = true; + iwSupport = true; + }) ]; } diff --git a/modules/i3-xfce.nix b/modules/i3-xfce.nix index 68591fe..f6b40f9 100644 --- a/modules/i3-xfce.nix +++ b/modules/i3-xfce.nix @@ -1,9 +1,26 @@ { pkgs, - lib, ... }: let - customPkgs = import ../pkgs {inherit pkgs lib;}; + wallpapers = [ + "${pkgs.nixos-artwork.wallpapers.simple-dark-gray}/share/backgrounds/nixos/nixos-wallpaper.png" + "${pkgs.nixos-artwork.wallpapers.gnome-dark}/share/backgrounds/gnome/gnome-dark.png" + "${pkgs.nixos-artwork.wallpapers.nineish-dark-gray}/share/backgrounds/nixos/nixos-wallpaper.png" + ]; + + randomWallpaper = pkgs.writeShellScript "wallpaper.sh" '' + #!${pkgs.runtimeShell} + set -e + BG_DIR="/var/lib/lightdm-background" + BG_LINK="$BG_DIR/current-wallpaper.png" + mkdir -p "$BG_DIR" + WALLPAPERS=( ${builtins.concatStringsSep " " (map (w: "\"${w}\"") wallpapers)} ) + COUNT=''${#WALLPAPERS[@]} + if [[ "$COUNT" -eq 0 ]]; then exit 1; fi + RAND=$(shuf -i 0-$(($COUNT - 1)) -n 1) + SELECT=''${WALLPAPERS[$RAND]} + ln -sf "$SELECT" "$BG_LINK" + ''; in { services.xserver.enable = true; services.xserver.xkb = { @@ -28,20 +45,16 @@ in { xsettingsd ]; extraSessionCommands = '' - ${pkgs.feh}/bin/feh --randomize --bg-fill ~/wallpapers/* 2>/dev/null || ${pkgs.feh}/bin/feh --bg-fill ${pkgs.nixos-artwork.wallpapers.nineish-dark-gray}/share/backgrounds/nixos/nineish-dark-gray.png & - export GSETTINGS_SCHEMA_DIR="${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}/glib-2.0/schemas" - export XDG_DATA_DIRS="${pkgs.gsettings-desktop-schemas}/share:${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}:${pkgs.tokyonight-gtk-theme}/share:${customPkgs.vivid-icons}/share:${pkgs.hicolor-icon-theme}/share:$XDG_DATA_DIRS" - ${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface gtk-theme "Tokyonight-Dark" - ${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface icon-theme "Vivid-Magna-Glassy-Dark-Icons" + ${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface icon-theme "candy-icons" ${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface cursor-theme "capitaine-cursors" - mkdir -p $HOME/.config cat > $HOME/.config/xsettingsd << EOF -Net/ThemeName "Tokyonight-Dark" -Net/IconThemeName "Vivid-Magna-Glassy-Dark-Icons" -Gtk/CursorThemeName "capitaine-cursors" -EOF + Net/ThemeName "Tokyonight-Dark" + Net/IconThemeName "candy-icons" + Gtk/CursorThemeName "capitaine-cursors" + EOF + killall xsettingsd || true ${pkgs.xsettingsd}/bin/xsettingsd & ''; }; @@ -54,7 +67,7 @@ EOF services.xserver.displayManager.lightdm = { enable = true; - background = "${pkgs.nixos-artwork.wallpapers.simple-dark-gray}/share/backgrounds/nixos/nixos-wallpaper.png"; + background = "/var/lib/lightdm-background/current-wallpaper.png"; greeters.gtk = { enable = true; theme = { @@ -62,8 +75,8 @@ EOF name = "Tokyonight-Dark"; }; iconTheme = { - package = customPkgs.vivid-icons; - name = "Vivid-Magna-Glassy-Dark-Icons"; + package = pkgs.candy-icons; + name = "candy-icons"; }; cursorTheme = { package = pkgs.capitaine-cursors; @@ -71,12 +84,36 @@ EOF }; extraConfig = '' [greeter] + greeting = Welcome back, Traveller font-name=Clear Sans 10 cursor-theme-name=capitaine-cursors + icon-theme-name=candy-icons ''; }; }; + systemd.tmpfiles.rules = [ + "d /var/lib/lightdm-background 0755 lightdm lightdm - -" + "L+ /var/lib/lightdm-background/current-wallpaper.png - - - - ${builtins.elemAt wallpapers 0}" + ]; + + systemd.services.random-wallpaper = { + description = "Update wallpaper to a random image"; + serviceConfig = { + Type = "oneshot"; + ExecStart = "${randomWallpaper}"; + User = "root"; + }; + }; + systemd.timers.random-wallpaper = { + description = "Daily wallpaper refresh for LightDM"; + wantedBy = ["timers.target"]; + timerConfig = { + OnCalendar = "daily"; + Persistent = true; + }; + }; + services.displayManager.defaultSession = "xfce+i3"; services.displayManager.autoLogin = { enable = true; @@ -85,13 +122,13 @@ EOF qt = { enable = true; - platformTheme = "gtk2"; + platformTheme = "qt5ct"; }; environment.etc = { "gtk-2.0/gtkrc".text = '' gtk-theme-name="Tokyonight-Dark" - gtk-icon-theme-name="Vivid-Magna-Glassy-Dark-Icons" + gtk-icon-theme-name="candy-icons" gtk-font-name="Clear Sans 10" gtk-cursor-theme-name="capitaine-cursors" gtk-cursor-theme-size=24 @@ -100,74 +137,64 @@ EOF [Settings] gtk-application-prefer-dark-theme=1 gtk-theme-name=Tokyonight-Dark - gtk-icon-theme-name=Vivid-Magna-Glassy-Dark-Icons - gtk-font-name=Clear Sans 10 - gtk-cursor-theme-name=capitaine-cursors + gtk-icon-theme-name="candy-icons" + gtk-font-name="Clear Sans 10" + gtk-cursor-theme-name="capitaine-cursors" gtk-cursor-theme-size=24 ''; "gtk-4.0/settings.ini".text = '' [Settings] gtk-application-prefer-dark-theme=1 gtk-theme-name=Tokyonight-Dark - gtk-icon-theme-name=Vivid-Magna-Glassy-Dark-Icons - gtk-font-name=Clear Sans 10 - gtk-cursor-theme-name=capitaine-cursors + gtk-icon-theme-name="candy-icons" + gtk-font-name="Clear Sans 10" + gtk-cursor-theme-name="capitaine-cursors" gtk-cursor-theme-size=24 ''; }; - environment.variables = { - GTK_THEME = "Tokyonight-Dark"; - ICON_THEME = "Vivid-Magna-Glassy-Dark-Icons"; - XCURSOR_THEME = "capitaine-cursors"; - XCURSOR_SIZE = "24"; - }; - environment.systemPackages = with pkgs; [ arandr - nitrogen xclip lxappearance - gnome-themes-extra gsettings-desktop-schemas adwaita-qt - arc-theme - arc-icon-theme - papirus-icon-theme - numix-icon-theme-circle candy-icons capitaine-cursors tokyonight-gtk-theme - nix-prefetch-git + xsettingsd hicolor-icon-theme adwaita-icon-theme - xsettingsd - ] ++ (with customPkgs; [ - vivid-icons - ]); + breeze-icons + gnome-themes-extra + ]; environment.pathsToLink = [ "/share/icons" "/share/pixmaps" ]; - services.xserver.desktopManager.session = [{ - name = "xfce+i3"; - start = '' - export XDG_DATA_DIRS="${pkgs.tokyonight-gtk-theme}/share:${customPkgs.vivid-icons}/share:${pkgs.hicolor-icon-theme}/share:${pkgs.adwaita-icon-theme}/share:$XDG_DATA_DIRS" - ${pkgs.xfce.xfce4-session}/bin/xfce4-session --with-ck-launch & - ${pkgs.i3-gaps}/bin/i3 - ''; - }]; + services.xserver.desktopManager.session = [ + { + name = "xfce+i3"; + start = '' + export XDG_DATA_DIRS="${pkgs.tokyonight-gtk-theme}/share:${pkgs.candy-icons}/share:${pkgs.hicolor-icon-theme}/share:${pkgs.adwaita-icon-theme}/share:$XDG_DATA_DIRS" + ${pkgs.xfce.xfce4-session}/bin/xfce4-session --with-ck-launch & + ${pkgs.i3-gaps}/bin/i3 + ''; + } + ]; programs.dconf.enable = true; - programs.dconf.profiles.user.databases = [{ - settings = { - "org/gnome/desktop/interface" = { - icon-theme = "Vivid-Magna-Glassy-Dark-Icons"; - gtk-theme = "Tokyonight-Dark"; - cursor-theme = "capitaine-cursors"; + programs.dconf.profiles.user.databases = [ + { + settings = { + "org/gnome/desktop/interface" = { + icon-theme = "candy-icons"; + gtk-theme = "Tokyonight-Dark"; + cursor-theme = "capitaine-cursors"; + }; }; - }; - }]; + } + ]; }