diff --git a/flake.lock b/flake.lock index 8d73aa5e..7d4461d6 100644 --- a/flake.lock +++ b/flake.lock @@ -45,6 +45,21 @@ "type": "github" } }, + "crane_2": { + "locked": { + "lastModified": 1730060262, + "narHash": "sha256-RMgSVkZ9H03sxC+Vh4jxtLTCzSjPq18UWpiM0gq6shQ=", + "owner": "ipetkov", + "repo": "crane", + "rev": "498d9f122c413ee1154e8131ace5a35a80d8fa76", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "darwin": { "inputs": { "nixpkgs": [ @@ -293,6 +308,29 @@ "type": "github" } }, + "ironbar": { + "inputs": { + "crane": "crane_2", + "naersk": "naersk", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay_3" + }, + "locked": { + "lastModified": 1730449396, + "narHash": "sha256-EMUiH4wPXSv2xfEygVlxEoPU67EaUYumMCmnclQql94=", + "owner": "JakeStanger", + "repo": "ironbar", + "rev": "c7cf896164334206f07647789d5364d90f05862a", + "type": "github" + }, + "original": { + "owner": "JakeStanger", + "repo": "ironbar", + "type": "github" + } + }, "lix": { "flake": false, "locked": { @@ -365,6 +403,24 @@ "type": "github" } }, + "naersk": { + "inputs": { + "nixpkgs": "nixpkgs_3" + }, + "locked": { + "lastModified": 1721727458, + "narHash": "sha256-r/xppY958gmZ4oTfLiHN0ZGuQ+RSTijDblVgVLFi1mw=", + "owner": "nix-community", + "repo": "naersk", + "rev": "3fb418eaf352498f6b6c30592e3beb63df42ef11", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "naersk", + "type": "github" + } + }, "nixos-hardware": { "locked": { "lastModified": 1727040444, @@ -446,6 +502,20 @@ } }, "nixpkgs_3": { + "locked": { + "lastModified": 1730272153, + "narHash": "sha256-B5WRZYsRlJgwVHIV6DvidFN7VX7Fg9uuwkRW9Ha8z+w=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2d2a9ddbe3f2c00747398f3dc9b05f7f2ebb0f53", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "nixpkgs_4": { "locked": { "lastModified": 1727129439, "narHash": "sha256-nPyrcFm6FSk7CxzVW4x2hu62aLDghNcv9dX6DF3dXw8=", @@ -507,11 +577,12 @@ "home-manager": "home-manager_2", "imab": "imab", "impermanence": "impermanence", + "ironbar": "ironbar", "lix-module": "lix-module", "lolpizza": "lolpizza", "miro": "miro", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_3", + "nixpkgs": "nixpkgs_4", "nixpkgs-darwin": "nixpkgs-darwin", "nixpkgs-master": "nixpkgs-master", "pandoc-latex-template": "pandoc-latex-template", @@ -565,6 +636,27 @@ "type": "github" } }, + "rust-overlay_3": { + "inputs": { + "nixpkgs": [ + "ironbar", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1730341826, + "narHash": "sha256-RFaeY7EWzXOmAL2IQEACbnrEza3TgD5UQApHR4hGHhY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "815d1b3ee71716fc91a7bd149801e1f04d45fbc5", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, "spoons": { "flake": false, "locked": { diff --git a/flake.nix b/flake.nix index 21523fd2..413cc7c2 100644 --- a/flake.nix +++ b/flake.nix @@ -31,6 +31,10 @@ imab.url = "github:ulyssa/iamb"; imab.inputs.nixpkgs.follows = "nixpkgs"; helix.url = "github:helix-editor/helix"; + ironbar = { + url = "github:JakeStanger/ironbar"; + inputs.nixpkgs.follows = "nixpkgs"; + }; ## editor stuff # nixd.url = "github:nix-community/nixd"; diff --git a/hosts/theseus/default.nix b/hosts/theseus/default.nix index 672219e1..75fc690b 100644 --- a/hosts/theseus/default.nix +++ b/hosts/theseus/default.nix @@ -20,20 +20,50 @@ networking.networkmanager.wifi.backend = "iwd"; services.displayManager.sddm.enable = true; services.displayManager.sddm.wayland.enable = true; + services.upower.enable = true; + users.users.ragon.extraGroups = [ "networkmanager" ]; environment.systemPackages = [ pkgs.wezterm ]; + fonts.packages = [ + pkgs.nerdfonts + ]; + services.pipewire = { + enable = true; + pulse.enable = true; + }; + services.fwupd.enable = true; home-manager.users.ragon = { pkgs, lib, inputs, config, ... }: { imports = [ ../../hm-modules/helix ../../hm-modules/nushell + ../../hm-modules/zellij ../../hm-modules/cli.nix ./swaycfg.nix ../../hm-modules/files.nix ]; ragon.helix.enable = true; ragon.nushell.enable = true; + ragon.zellij.enable = true; + home.file.".config/wezterm/wezterm.lua".text = '' +local wezterm = require 'wezterm' + +-- This will hold the configuration. +local config = wezterm.config_builder() + +config.default_prog = { 'zellij', 'attach', '-c' } +config.hide_tab_bar_if_only_one_tab = true +config.max_fps = 144 + +-- This is where you actually apply your config choices + +-- For example, changing the color scheme: +config.color_scheme = 'Gruvbox Dark (Gogh)' + +-- and finally, return the configuration to wezterm +return config + ''; # home.persistence."/persistent/home/ragon" = diff --git a/hosts/theseus/hardware-configuration.nix b/hosts/theseus/hardware-configuration.nix index ee8b569b..88ac59de 100644 --- a/hosts/theseus/hardware-configuration.nix +++ b/hosts/theseus/hardware-configuration.nix @@ -6,6 +6,7 @@ { imports = [ (modulesPath + "/installer/scan/not-detected.nix") + "${inputs.nixos-hardware}/framework/13-inch/7040-amd" ]; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "usbhid" "sd_mod" ]; diff --git a/hosts/theseus/swaycfg.nix b/hosts/theseus/swaycfg.nix index 6e3ebcdf..c50bffed 100644 --- a/hosts/theseus/swaycfg.nix +++ b/hosts/theseus/swaycfg.nix @@ -1,148 +1,254 @@ -{ pkgs, config, inputs, ...}: { -home.packages = with pkgs; [ - slurp - grim - mako - firefox - light - playerctl - jq - rofi - swaylock -]; +{ pkgs, config, inputs, ... }: { + imports = [ inputs.ironbar.homeManagerModules.default ]; + home.packages = with pkgs; [ + slurp + grim + mako + firefox + light + playerctl + jq + rofi + swaylock + ]; + programs.ironbar = { + enable = true; + style = '' + @define-color color_bg #282828; + @define-color color_bg_dark #3c3836; + @define-color color_border #665c54; + @define-color color_border_active #7c6f64; + @define-color color_text #ebdbb2; + @define-color color_urgent #cc241d; + * { + font-family: Noto Sans Nerd Font, sans-serif; + font-size: 10px; + border: none; + border-radius: 0; + } + + box, menubar, button { + background-color: @color_bg; + background-image: none; + box-shadow: none; + } + + button, label { + color: @color_text; + } + + button:hover { + background-color: @color_bg_dark; + } + + scale trough { + min-width: 1px; + min-height: 2px; + } + + /* #bar { + border-top: 1px solid @color_border; + } */ + + .popup { + border: 1px solid @color_border; + padding: 1em; + } + + + ''; + config = { + position = "top"; + height = 10; + start = [ + { type = "workspaces"; } + { type = "sway_mode"; } + ]; + middle = [ + { + type = "focused"; + show_icon = true; + show_title = true; + icon_size = 10; + truncate = "end"; + } + ]; + end = [ + { type = "music"; player_name = "mpris"; } + { + type = "volume"; + icons = { + volume_high = "󰕾"; + volume_medium = "󰖀"; + volume_low = "󰕿"; + muted = "󰝟"; + }; + format = "{icon} {percentage}%"; + max_volume = 100; + } + { + type = "upower"; + format = "󰁹 {percentage}%"; + } + { + type = "sys_info"; + format = [ + " {cpu_percent}% {temp_c:k10temp-Tccd1}°C" + " {memory_used}/{memory_total}GB" + "󰋊 {disk_used:/persistent}/{disk_total:/persistent}GB" + "󰓢 {net_down:wlan0}/{net_up:wlan0} Mbps" + "󰖡 {load_average:1} | {load_average:5} | {load_average:15}" + ]; + interval = { + "cpu" = 1; + "disks" = 300; + "memory" = 30; + "networks" = 3; + "temps" = 5; + }; + } + { + type = "clock"; + format = "%Y-%m-%dT%H:%M:%S%z"; + } + ]; + }; + }; home.file.".config/sway/config".text = '' set $mod Mod4 set $term wezterm set $screenclip slurp | grim -g - ~/Images/screenshots/scrn-$(date +"%Y-%m-%d-%H-%M-%S").png set $screenshot grim ~/Images/screenshots/scrn-$(date +"%Y-%m-%d-%H-%M-%S").png - set $menu rofi -m $(swaymsg -t get_outputs | jq 'map(select(.active) | .focused) | index(true)') -show drun -run-command 'swaymsg exec -- {cmd}' - set $lock swaylock + set $menu rofi -show drun -run-command 'swaymsg exec -- {cmd}' + set $lock swaylock -c 000000 set $cl_high #009ddc -set $cl_indi #d9d8d8 -set $cl_back #231f20 -set $cl_fore #d9d8d8 -set $cl_urge #ee2e24 -# Colors border bg text indi childborder -client.focused $cl_high $cl_high $cl_fore $cl_indi $cl_high -client.focused_inactive $cl_back $cl_back $cl_fore $cl_back $cl_back -client.unfocused $cl_back $cl_back $cl_fore $cl_back $cl_back -client.urgent $cl_urge $cl_urge $cl_fore $cl_urge $cl_urge + set $cl_indi #d9d8d8 + set $cl_back #231f20 + set $cl_fore #d9d8d8 + set $cl_urge #ee2e24 + # Colors border bg text indi childborder + client.focused $cl_high $cl_high $cl_fore $cl_indi $cl_high + client.focused_inactive $cl_back $cl_back $cl_fore $cl_back $cl_back + client.unfocused $cl_back $cl_back $cl_fore $cl_back $cl_back + client.urgent $cl_urge $cl_urge $cl_fore $cl_urge $cl_urge -# workspaces -set $ws1 1: -set $ws2 2: -set $ws3 3:3 -set $ws4 4:4 -set $ws5 5:5 -set $ws6 6:6 -set $ws7 7:7 -set $ws8 8:8 -set $ws9 9:9 -set $ws0 10:10 + # workspaces + set $ws1 1:1 + set $ws2 2:2 + set $ws3 3:3 + set $ws4 4:4 + set $ws5 5:5 + set $ws6 6:6 + set $ws7 7:7 + set $ws8 8:8 + set $ws9 9:9 + set $ws0 10:10 -exec --no-startup-id mako -input * { - xkb_layout us - xkb_variant colemak_dh_iso - xkb_options caps:swapescape -} -input 12951:6505:ZSA_Technology_Labs_Moonlander_Mark_I { - xkb_layout eu -} -bindsym $mod+Return exec $term -bindsym $mod+Print exec $screenshot -bindsym $mod+Shift+Print exec $screenclip -bindsym $mod+Shift+q kill -bindsym $mod+Shift+c reload -# Brightness controls -bindsym --locked XF86MonBrightnessUp exec --no-startup-id light -A 10 -bindsym --locked XF86MonBrightnessDown exec --no-startup-id light -U 10 -# Multimedia -bindsym --locked XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5% -bindsym --locked XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') -5% -bindsym --locked XF86AudioMute exec --no-startup-id pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle -bindsym --locked XF86AudioPlay exec playerctl play-pause -bindsym --locked XF86AudioNext exec playerctl next -bindsym --locked XF86AudioPrev exec playerctl previous + exec --no-startup-id mako + exec --no-startup-id ironbar + input 12951:6505:ZSA_Technology_Labs_Moonlander_Mark_I { + xkb_layout eu + } + input * { + xkb_layout us + xkb_variant colemak_dh_iso + xkb_options caps:swapescape + } + bindsym $mod+Return exec $term + bindsym $mod+Space exec $menu + bindsym $mod+Print exec $screenshot + bindsym $mod+Shift+Print exec $screenclip + bindsym $mod+Shift+q kill + bindsym $mod+Shift+c reload + # Brightness controls + bindsym --locked XF86MonBrightnessUp exec --no-startup-id light -A 10 + bindsym --locked XF86MonBrightnessDown exec --no-startup-id light -U 10 + # Multimedia + bindsym --locked XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5% + bindsym --locked XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') -5% + bindsym --locked XF86AudioMute exec --no-startup-id pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle + bindsym --locked XF86AudioPlay exec playerctl play-pause + bindsym --locked XF86AudioNext exec playerctl next + bindsym --locked XF86AudioPrev exec playerctl previous -# Idle configuration -exec swayidle \ - timeout 300 'exec $lock' \ - timeout 600 'swaymsg "output * dpms off"' \ - after-resume 'swaymsg "output * dpms on"' \ - before-sleep 'exec $lock' - # switch to workspace -bindsym $mod+1 workspace $ws1 -bindsym $mod+2 workspace $ws2 -bindsym $mod+3 workspace $ws3 -bindsym $mod+4 workspace $ws4 -bindsym $mod+5 workspace $ws5 -bindsym $mod+6 workspace $ws6 -bindsym $mod+7 workspace $ws7 -bindsym $mod+8 workspace $ws8 -bindsym $mod+9 workspace $ws9 -bindsym $mod+0 workspace $ws0 + # Idle configuration + exec swayidle \ + timeout 300 'exec $lock' \ + timeout 600 'swaymsg "output * dpms off"' \ + after-resume 'swaymsg "output * dpms on"' \ + before-sleep 'exec $lock' + # switch to workspace + bindsym $mod+1 workspace $ws1 + bindsym $mod+2 workspace $ws2 + bindsym $mod+3 workspace $ws3 + bindsym $mod+4 workspace $ws4 + bindsym $mod+5 workspace $ws5 + bindsym $mod+6 workspace $ws6 + bindsym $mod+7 workspace $ws7 + bindsym $mod+8 workspace $ws8 + bindsym $mod+9 workspace $ws9 + bindsym $mod+0 workspace $ws0 -# move focused container to workspace -bindsym $mod+Shift+1 move container to workspace $ws1 -bindsym $mod+Shift+2 move container to workspace $ws2 -bindsym $mod+Shift+3 move container to workspace $ws3 -bindsym $mod+Shift+4 move container to workspace $ws4 -bindsym $mod+Shift+5 move container to workspace $ws5 -bindsym $mod+Shift+6 move container to workspace $ws6 -bindsym $mod+Shift+7 move container to workspace $ws7 -bindsym $mod+Shift+8 move container to workspace $ws8 -bindsym $mod+Shift+9 move container to workspace $ws9 -bindsym $mod+Shift+0 move container to workspace $ws0 -# Layout stuff: + # move focused container to workspace + bindsym $mod+Shift+1 move container to workspace $ws1 + bindsym $mod+Shift+2 move container to workspace $ws2 + bindsym $mod+Shift+3 move container to workspace $ws3 + bindsym $mod+Shift+4 move container to workspace $ws4 + bindsym $mod+Shift+5 move container to workspace $ws5 + bindsym $mod+Shift+6 move container to workspace $ws6 + bindsym $mod+Shift+7 move container to workspace $ws7 + bindsym $mod+Shift+8 move container to workspace $ws8 + bindsym $mod+Shift+9 move container to workspace $ws9 + bindsym $mod+Shift+0 move container to workspace $ws0 + # Layout stuff: -# Switch the current container between different layout styles -bindsym $mod+s layout stacking -bindsym $mod+w layout tabbed -bindsym $mod+e layout toggle split + # Switch the current container between different layout styles + bindsym $mod+s layout stacking + bindsym $mod+w layout tabbed + bindsym $mod+e layout toggle split -# Make the current focus fullscreen -bindsym $mod+f fullscreen + # Make the current focus fullscreen + bindsym $mod+Shift+f fullscreen -# Toggle the current focus between tiling and floating mode -bindsym $mod+Shift+space floating toggle -# Swap focus between the tiling area and the floating area -bindsym $mod+space focus mode_toggle + # Toggle the current focus between tiling and floating mode + bindsym $mod+Shift+space floating toggle + # Swap focus between the tiling area and the floating area + bindsym $mod+f focus mode_toggle -# Move the currently focused window to the scratchpad -bindsym $mod+Shift+minus move scratchpad -# Show the next scratchpad window or hide the focused scratchpad window. -# If there are multiple scratchpad windows, this command cycles through them. -bindsym $mod+minus scratchpad show + # Move the currently focused window to the scratchpad + bindsym $mod+Shift+minus move scratchpad + # Show the next scratchpad window or hide the focused scratchpad window. + # If there are multiple scratchpad windows, this command cycles through them. + bindsym $mod+minus scratchpad show -# Modes -mode "resize" { - bindsym Left resize shrink width 10px - bindsym Down resize grow height 10px - bindsym Up resize shrink height 10px - bindsym Right resize grow width 10px + # Modes + mode "resize" { + bindsym Left resize shrink width 10px + bindsym Down resize grow height 10px + bindsym Up resize shrink height 10px + bindsym Right resize grow width 10px - # return to default mode - bindsym Return mode "default" - bindsym Escape mode "default" -} -bindsym $mod+r mode "resize" + # return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" + } + bindsym $mod+r mode "resize" -set $mode_system System: (l) lock, (e) logout, (s) suspend, (r) reboot, (S) shutdown, (R) UEFI -mode "$mode_system" { - bindsym l exec $lock, mode "default" - bindsym e exit - bindsym s exec --no-startup-id systemctl suspend, mode "default" - bindsym r exec --no-startup-id systemctl reboot, mode "default" - bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default" - bindsym Shift+r exec --no-startup-id systemctl reboot --firmware-setup, mode "default" + set $mode_system System: (l) lock, (e) logout, (s) suspend, (r) reboot, (S) shutdown, (R) UEFI + mode "$mode_system" { + bindsym l exec $lock, mode "default" + bindsym e exit + bindsym s exec --no-startup-id systemctl suspend, mode "default" + bindsym r exec --no-startup-id systemctl reboot, mode "default" + bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default" + bindsym Shift+r exec --no-startup-id systemctl reboot --firmware-setup, mode "default" - # return to default mode - bindsym Return mode "default" - bindsym Escape mode "default" -} -bindsym $mod+Shift+e mode "$mode_system" + # return to default mode + bindsym Return mode "default" + bindsym Escape mode "default" + } + bindsym $mod+Shift+e mode "$mode_system" ''; }