diff --git a/flake.nix b/flake.nix index a240c1f..4a998df 100644 --- a/flake.nix +++ b/flake.nix @@ -26,6 +26,7 @@ desktop = import ./modules/desktop.nix; gnome = import ./modules/gnome.nix; gnome-monitor-settings-tweak = import ./modules/gnome-monitor-settings-tweak; + i3 = import ./modules/i3; mouse-dpi = import ./modules/mouse-dpi.nix; phpipam = import ./modules/phpipam.nix; pipewire = import ./modules/pipewire.nix; diff --git a/hosts/cube/configuration.nix b/hosts/cube/configuration.nix index e1487ff..929cca4 100644 --- a/hosts/cube/configuration.nix +++ b/hosts/cube/configuration.nix @@ -4,6 +4,10 @@ gnome = true; profile = "desktop"; security-tools = true; + i3.extraConfig = '' + exec xrandr --output DisplayPort-0 --mode 2560x1440 --rate 165 + exec xrandr --output DisplayPort-1 --mode 2560x1440 --rate 165 + ''; }; environment.etc."sway/config.d/sconfig.conf".source = pkgs.writeText "sway.conf" '' diff --git a/modules/i3/default.nix b/modules/i3/default.nix new file mode 100644 index 0000000..19aa73f --- /dev/null +++ b/modules/i3/default.nix @@ -0,0 +1,69 @@ +{ config, pkgs, lib, ... }: +let + cfg = config.sconfig.i3; +in +{ + options.sconfig.i3 = { + enable = lib.mkEnableOption "Enable the i3 Window Manager"; + extraConfig = lib.mkOption { + type = lib.types.lines; + default = ""; + }; + }; + + config = lib.mkIf cfg.enable { + services.xserver.windowManager.i3 = { + enable = true; + extraSessionCommands = '' + mkdir -p ~/.local/share/icons/default + ln -sf /run/current-system/sw/share/icons/Yaru/cursor.theme ~/.local/share/icons/default/index.theme + echo 'Xft.dpi: 96' > ~/.Xresources + echo 'Xcursor.size: 24' >> ~/.Xresources + ''; + }; + + hardware.pulseaudio.enable = true; + + environment.etc."xdg/gtk-3.0/settings.ini".text = '' + [Settings] + gtk-theme-name=Yaru-dark + gtk-icon-theme-name=Numix + ''; + + environment.etc."i3/config".source = pkgs.runCommand "i3config" { } '' + ( + cat '${pkgs.i3}/etc/i3/config' | + sed 's/Mod1/Mod4/' | + sed 's/exec i3-config-wizard//' | + sed 's/^font/#font/' | + sed 's,status_command i3status,status_command i3status -c ${./i3status.conf},' | + sed 's/i3-sensible-terminal/alacritty/' | + sed 's/10%/2%/' + cat '${pkgs.writeText "i3extra" cfg.extraConfig}' + )| + tee "$out" + ''; + + services.gvfs.enable = true; + networking.networkmanager.enable = true; + + services.xserver = { + enable = true; + libinput.enable = true; + displayManager.sddm.enable = true; + }; + + environment.systemPackages = with pkgs; [ + alacritty + numix-icon-theme + yaru-theme + gnome3.networkmanagerapplet + gnome3.file-roller + gnome3.adwaita-icon-theme + mate.mate-terminal + xfce.thunar + xfce.thunar-archive-plugin + caffeine-ng + ]; + }; +} diff --git a/modules/i3/i3status.conf b/modules/i3/i3status.conf new file mode 100644 index 0000000..e649a78 --- /dev/null +++ b/modules/i3/i3status.conf @@ -0,0 +1,27 @@ +general { + colors = true + interval = 5 +} + +order += "battery all" +order += "volume master" +order += "tztime local" + +volume master { + format = "[♪ %volume]" +} + +battery all { + format = "%status %percentage %remaining" + format_down = "" +} + +memory { + format = "%used | %available" + threshold_degraded = "1G" + format_degraded = "MEMORY < %available" +} + +tztime local { + format = "%m/%d %H:%M:%S" +}