diff --git a/flake.nix b/flake.nix index 2b7f373..24251bf 100644 --- a/flake.nix +++ b/flake.nix @@ -52,7 +52,7 @@ { home-manager.useGlobalPkgs = true; home-manager.useUserPackages = true; - home-manager.users.nora = import ./home-manager/home.nix; + home-manager.users.nora = import ./home-manager/laptop.nix; home-manager.extraSpecialArgs = { inherit inputs; }; } ]; diff --git a/home-manager/laptop.nix b/home-manager/laptop.nix new file mode 100644 index 0000000..6f59d51 --- /dev/null +++ b/home-manager/laptop.nix @@ -0,0 +1,7 @@ +{ ... }: { + imports = [ + ./home.nix + ]; + + is-laptop = true; +} diff --git a/home-manager/waybar.nix b/home-manager/waybar.nix index f496a96..97980a6 100644 --- a/home-manager/waybar.nix +++ b/home-manager/waybar.nix @@ -1,214 +1,220 @@ { config, pkgs, lib, ... }: { - home.file."${config.xdg.configHome}/waybar/config.jsonc" = { - text = - builtins.toJSON { - height = 35; - spacing = 4; + options.is-laptop = lib.mkEnableOption "whether the computer is a laptop"; - modules-left = [ - "systemd-failed-units" - "custom/music-back" - "mpris" - "custom/music-next" - ]; - modules-center = [ - "clock" - ]; - modules-right = [ - "bluetooth" - "privacy" - "pulseaudio" - "cpu" - "memory" - "tray" - ] ++ - (if (config.networking.hostName == "scrap") then [ "battery" ] else [ ]) ++ - [ - "custom/power" - ]; + config = { + home.file."${config.xdg.configHome}/waybar/config.jsonc" = { + text = + builtins.toJSON { + height = 35; + spacing = 4; - systemd-failed-units = { - hide-on-ok = true; # Hide if there are zero failed units. - format = "✗ {nr_failed}"; - format-ok = "✓ systemd is ok but waybar is not"; - system = true; # monitor sytem units - user = true; # monitor user units - }; - "custom/music-back" = { - format = "⏴"; - tooltip = true; - tooltip-format = "Play previous song"; - on-click = "${lib.getExe pkgs.playerctl} previous"; - }; - mpris = { - format = "{status_icon} {dynamic}"; - dynamic-order = [ "title" "artist" ]; - status-icons = { - paused = "⏸"; + modules-left = [ + "systemd-failed-units" + "custom/music-back" + "mpris" + "custom/music-next" + ]; + modules-center = [ + "clock" + ]; + modules-right = [ + "bluetooth" + "privacy" + "pulseaudio" + "cpu" + "memory" + "tray" + ] ++ + (if (config.networking.hostName == "scrap") then + [ "network" "power-profiles-daemon" "battery" ] + else [ ]) ++ + [ + "custom/power" + ]; + + systemd-failed-units = { + hide-on-ok = true; # Hide if there are zero failed units. + format = "✗ {nr_failed}"; + format-ok = "✓ systemd is ok but waybar is not"; + system = true; # monitor sytem units + user = true; # monitor user units }; - }; - "custom/music-next" = { - format = "⏵"; - tooltip = true; - tooltip-format = "Play next song"; - on-click = "${lib.getExe pkgs.playerctl} next"; - }; - clock = { - interval = 1; - format = "{:%a %F %H:%M:%S}"; - tooltip-format = "{calendar}"; - calendar = { - mode = "year"; - mode-mon-col = 3; - weeks-pos = "right"; - on-scroll = 1; - format = { - months = "{}"; - days = "{}"; - weeks = "W{}"; - weekdays = "{}"; - today = "{}"; + "custom/music-back" = { + format = "⏴"; + tooltip = true; + tooltip-format = "Play previous song"; + on-click = "${lib.getExe pkgs.playerctl} previous"; + }; + mpris = { + format = "{status_icon} {dynamic}"; + dynamic-order = [ "title" "artist" ]; + status-icons = { + paused = "⏸"; }; }; - actions = { - on-click-right = "mode"; - on-scroll-up = "shift_up"; - on-scroll-down = "shift_down"; + "custom/music-next" = { + format = "⏵"; + tooltip = true; + tooltip-format = "Play next song"; + on-click = "${lib.getExe pkgs.playerctl} next"; }; - }; - - bluetooth = { - format = " {status}"; - format-disabled = ""; # an empty format will hide the module - format-connected = " {num_connections} connected"; - on-click = lib.getExe pkgs.overskride; - }; - pulseaudio = { - # "scroll-step": 1, // %, can be a float - "format" = "{volume}% {icon} {format_source}"; - "format-bluetooth" = "{volume}% {icon} {format_source}"; - "format-bluetooth-muted" = " {icon} {format_source}"; - "format-muted" = " {format_source}"; - "format-source" = "{volume}% "; - "format-source-muted" = ""; - "format-icons" = { - "headphone" = ""; - "hands-free" = ""; - "headset" = ""; - "phone" = ""; - "portable" = ""; - "car" = ""; - "default" = [ "" "" "" ]; - }; - "on-click" = lib.getExe pkgs.pavucontrol; - }; - cpu = { - format = "{usage}% "; - tooltip = false; - }; - memory = { - format = "{}% "; - }; - tray = { - spacing = 10; - }; - "custom/power" = - let - power-menu = pkgs.writeText "power_menu.xml" '' - - - - - - Lock 🔒 - - - - - - - - Reboot ♻️ - - - - - Poweroff 💤 - - - - - ''; - in - { - "format" = "⏻"; - "tooltip" = false; - "menu" = "on-click"; - "menu-file" = power-menu; - "menu-actions" = { - "lock" = "${lib.getExe pkgs.swaylock}"; - "reboot" = "reboot"; - "poweroff" = "poweroff"; + clock = { + interval = 1; + format = "{:%a %F %H:%M:%S}"; + tooltip-format = "{calendar}"; + calendar = { + mode = "year"; + mode-mon-col = 3; + weeks-pos = "right"; + on-scroll = 1; + format = { + months = "{}"; + days = "{}"; + weeks = "W{}"; + weekdays = "{}"; + today = "{}"; + }; + }; + actions = { + on-click-right = "mode"; + on-scroll-up = "shift_up"; + on-scroll-down = "shift_down"; }; }; - }; - }; - home.file."${config.xdg.configHome}/waybar/style.css" = { - text = '' - ${builtins.readFile ./default-waybar-style.css} - window#waybar { - background: linear-gradient( - to right, - rgb(131, 80, 117) 15%, - rgb(158, 103, 143) 30%, - rgb(131, 80, 117) 45%, - #db88c5 - ); - color: black; - } + bluetooth = { + format = " {status}"; + format-disabled = ""; # an empty format will hide the module + format-connected = " {num_connections} connected"; + on-click = lib.getExe pkgs.overskride; + }; + pulseaudio = { + # "scroll-step": 1, // %, can be a float + "format" = "{volume}% {icon} {format_source}"; + "format-bluetooth" = "{volume}% {icon} {format_source}"; + "format-bluetooth-muted" = " {icon} {format_source}"; + "format-muted" = " {format_source}"; + "format-source" = "{volume}% "; + "format-source-muted" = ""; + "format-icons" = { + "headphone" = ""; + "hands-free" = ""; + "headset" = ""; + "phone" = ""; + "portable" = ""; + "car" = ""; + "default" = [ "" "" "" ]; + }; + "on-click" = lib.getExe pkgs.pavucontrol; + }; + cpu = { + format = "{usage}% "; + tooltip = false; + }; + memory = { + format = "{}% "; + }; + tray = { + spacing = 10; + }; + "custom/power" = + let + power-menu = pkgs.writeText "power_menu.xml" '' + + + + + + Lock 🔒 + + + + + + + + Reboot ♻️ + + + + + Poweroff 💤 + + + + + ''; + in + { + "format" = "⏻"; + "tooltip" = false; + "menu" = "on-click"; + "menu-file" = power-menu; + "menu-actions" = { + "lock" = "${lib.getExe pkgs.swaylock}"; + "reboot" = "reboot"; + "poweroff" = "poweroff"; + }; + }; + }; + }; + home.file."${config.xdg.configHome}/waybar/style.css" = { + text = '' + ${builtins.readFile ./default-waybar-style.css} - #systemd-failed-units { - padding-left: 30px; - padding-right: 30px; - background-color: red; - } + window#waybar { + background: linear-gradient( + to right, + rgb(131, 80, 117) 15%, + rgb(158, 103, 143) 30%, + rgb(131, 80, 117) 45%, + #db88c5 + ); + color: black; + } - #mpris { - color: white; - } + #systemd-failed-units { + padding-left: 30px; + padding-right: 30px; + background-color: red; + } - #custom-music-back, #custom-music-next { - font-size: 20px; - color: white; - } + #mpris { + color: white; + } - #custom-music-back { - padding: 0 10px 0 15px; - } - #custom-music-next { - padding: 0 10px; - } + #custom-music-back, #custom-music-next { + font-size: 20px; + color: white; + } - #clock { - background: unset; - color: white; - } + #custom-music-back { + padding: 0 10px 0 15px; + } + #custom-music-next { + padding: 0 10px; + } - #privacy *, #pulseaudio, #cpu, #memory, #tray { - background-color: unset; - color: black; - } + #clock { + background: unset; + color: white; + } - #custom-power { - padding-left: 15px; - padding-right: 15px; - font-size: 30px; - background-color: rebeccapurple; - color: white; - } - ''; + #privacy *, #pulseaudio, #cpu, #memory, #tray { + background-color: unset; + color: black; + } + + #custom-power { + padding-left: 15px; + padding-right: 15px; + font-size: 30px; + background-color: rebeccapurple; + color: white; + } + ''; + }; }; }