diff --git a/flake.nix b/flake.nix index fc2e3c77..4768b0a5 100644 --- a/flake.nix +++ b/flake.nix @@ -38,6 +38,8 @@ # Manage Plasma desktop with Nix plasma-manager.url = "github:pjones/plasma-manager"; plasma-manager.inputs.nixpkgs.follows = "nixpkgs"; + # Nix colorizer / themer + stylix.url = "github:danth/stylix"; }; outputs = { self, nixpkgs, nixpkgs-wayland, home-manager, lanzaboote, nur, sops-nix, doom-emacs, nixos-generators, deploy-rs, ... } @inputs: let @@ -51,7 +53,7 @@ framework-server = libx.mkHost { hostname = "framework-server"; }; nuc-server = libx.mkHost { hostname = "nuc-server"; }; nixos-desktop = libx.mkHost { hostname = "nixos-desktop"; desktop = "plasma6"; gpu = "nvidia"; }; - nixos-framework = libx.mkHost { hostname = "nixos-framework"; desktop = "hyprland"; gpu = "amd"; theme = "green"; }; + nixos-framework = libx.mkHost { hostname = "nixos-framework"; desktop = "hyprland"; gpu = "amd"; theme = "stylix"; }; backups-rpi4 = libx.mkHost { hostname = "backups-rpi4"; platform = "aarch64-linux"; type = "small"; }; piaware-rpi4 = libx.mkHost { hostname = "piaware-rpi4"; platform = "aarch64-linux"; type = "small"; }; quitman-rpi4 = libx.mkHost { hostname = "quitman-rpi4"; platform = "aarch64-linux"; type = "small"; }; @@ -61,7 +63,7 @@ "albert@framework-server" = libx.mkHome { hostname = "framework-server"; }; "albert@nuc-server" = libx.mkHome { hostname = "nuc-server"; }; "albert@nixos-desktop" = libx.mkHome { hostname = "nixos-desktop"; desktop = "plasma6"; }; - "albert@nixos-framework" = libx.mkHome { hostname = "nixos-framework"; desktop = "hyprland"; theme = "green"; }; + "albert@nixos-framework" = libx.mkHome { hostname = "nixos-framework"; desktop = "hyprland"; theme = "stylix"; }; "albert@backups-rpi4" = libx.mkHome { hostname = "backups-rpi4"; platform = "aarch64-linux"; type = "small"; }; "albert@piaware-rpi4" = libx.mkHome { hostname = "piaware-rpi4"; platform = "aarch64-linux"; type = "small"; }; "albert@quitman-rpi4" = libx.mkHome { hostname = "quitman-rpi4"; platform = "aarch64-linux"; type = "small"; }; diff --git a/home-manager/common/desktops/hyprland/default.nix b/home-manager/common/desktops/hyprland/default.nix index d461eaf1..756d863c 100644 --- a/home-manager/common/desktops/hyprland/default.nix +++ b/home-manager/common/desktops/hyprland/default.nix @@ -1,5 +1,6 @@ -{ pkgs, theme, ... }: { +{ pkgs, inputs, theme, ... }: { imports = [ + inputs.stylix.homeManagerModules.stylix ./themes/${theme} # GTK theme applied in home-manager/common/software/cli/bash.nix # Theme agnostic configs diff --git a/home-manager/common/desktops/hyprland/themes/stylix/default.nix b/home-manager/common/desktops/hyprland/themes/stylix/default.nix new file mode 100644 index 00000000..06e3ad1a --- /dev/null +++ b/home-manager/common/desktops/hyprland/themes/stylix/default.nix @@ -0,0 +1,10 @@ +{ ... }: { + imports = [ + ./mako-conf.nix + ./rofi-conf.nix + ./swaylock-conf.nix + ./waybar-conf.nix + ./wlogout-conf.nix + ./hyprland-conf.nix + ]; +} \ No newline at end of file diff --git a/home-manager/common/desktops/hyprland/themes/stylix/hyprland-conf.nix b/home-manager/common/desktops/hyprland/themes/stylix/hyprland-conf.nix new file mode 100644 index 00000000..9c8635f2 --- /dev/null +++ b/home-manager/common/desktops/hyprland/themes/stylix/hyprland-conf.nix @@ -0,0 +1,100 @@ +{ theme, ... }: { + home.file = { + ".config/hypr/hyprland.conf" = { + enable = true; + text = '' + # https://wiki.hyprland.org/Configuring/Variables/ + env = GDK_SCALE,1 + env = XCURSOR_SIZE,22 + + # unscale XWayland + xwayland { + force_zero_scaling = true + } + + layerrule = blur, waybar + + # nVidia Speficic Settings: + # https://wiki.hyprland.org/Nvidia/ + # env = LIBVA_DRIVER_NAME,nvidia + # env = XDG_SESSION_TYPE,wayland + # env = GBM_BACKEND,nvidia-drm + # env = __GLX_VENDOR_LIBRARY_NAME,nvidia + env = WLR_NO_HARDWARE_CURSORS,1 + + general { + gaps_in = 5 + gaps_out = 15 + border_size = 3 + # First six are color, last 2 are opacity + col.active_border = rgba(2a9b34bb) # Gruvbox fg2, opacity bb + col.inactive_border = rgba(207427dd) # Gruvbox bg2, opacity aa + resize_on_border = true + extend_border_grab_area = 15 + layout = dwindle + } + input { + kb_layout = us + follow_mouse = 1 + touchpad { + natural_scroll = true + disable_while_typing = true + tap-to-click = true + clickfinger_behavior = true + drag_lock = true + } + sensitivity = 0 + } + gestures { + # https://wiki.hyprland.org/0.24.1/Configuring/Keywords/#gestures + workspace_swipe = true + workspace_swipe_fingers = 3 + workspace_swipe_numbered = false + } + misc { + disable_hyprland_logo = true + mouse_move_enables_dpms = true + key_press_enables_dpms = true + } + decoration { + rounding = 5 + active_opacity = 0.8 + inactive_opacity = 0.6 + fullscreen_opacity = 1.0 + drop_shadow = true + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(05050500) + blur { + size = 8 + passes = 3 + ignore_opacity = true + } + + } + animations { + # https://wiki.hyprland.org/Configuring/Animations/ + enabled = true + bezier = myBezier, 0.05, 0.9, 0.1, 1.05 + animation = windows, 1, 7, myBezier + animation = windowsOut, 1, 7, default, popin 80% + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default + } + dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true # you probably want this + no_gaps_when_only = 1 + + } + master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + new_is_master = true + } + ''; + }; + }; +} diff --git a/home-manager/common/desktops/hyprland/themes/stylix/mako-conf.nix b/home-manager/common/desktops/hyprland/themes/stylix/mako-conf.nix new file mode 100644 index 00000000..3b9c064a --- /dev/null +++ b/home-manager/common/desktops/hyprland/themes/stylix/mako-conf.nix @@ -0,0 +1,30 @@ +{ ... }: { + home.file.".config/mako/config".text = '' +max-history=5 +sort=+time + +on-button-left=dismiss +on-button-right=dismiss-all + +font=JetbrainsMono Regular +background-color=#3a3c3e +border-color=#2a9b34 +text-color=#d9eed2 +width=300 +height=100 +margin=10 +padding=15 +border-size=3 +border-radius=15 +icons=1 +max-icon-size=128 +icon-location=left +markup=1 +actions=1 +history=1 +text-alignment=left +default-timeout=15000 +layer=top +anchor=top-right + ''; +} diff --git a/home-manager/common/desktops/hyprland/themes/stylix/rofi-conf.nix b/home-manager/common/desktops/hyprland/themes/stylix/rofi-conf.nix new file mode 100644 index 00000000..ea469a53 --- /dev/null +++ b/home-manager/common/desktops/hyprland/themes/stylix/rofi-conf.nix @@ -0,0 +1,223 @@ +{ ...}: { + home.file = { + # https://github.com/davatorium/rofi/blob/next/CONFIG.md + # Rofi configuration + ".config/rofi/config.rasi" = { + enable = true; + executable = false; + text = '' + configuration { + } + @theme "dark" + ''; + }; + + # Rofi theme + ".config/rofi/themes/dark.rasi" = { + enable = true; + executable = false; + text = '' +/* ========================================================================== + Rofi color theme + + Based on the Gruvbox color scheme for Vim by morhetz + https://github.com/morhetz/gruvbox + + File: dark.rasi + Desc: Gruvbox dark color theme for Rofi + Author: bardisty + Source: https://github.com/bardisty/rofi + Modified: Mon Feb 12 2018 04:08:43 PST -0800 + ========================================================================== */ + +* { + /* Theme settings */ + highlight: bold italic; + scrollbar: true; + + /* Gruvbox dark colors */ + dark-bg0: #282828; + dark-bg0-soft: #32302f; + dark-bg3: #665c54; + dark-fg0: #d9eed2; + dark-fg1: #d9eed2; + dark-red-dark: #fb0029; + dark-red-light: #fb4934; + dark-yellow-dark: #7a6640; + dark-yellow-light: #7a6640; + dark-gray: #a89984; + + /* Theme colors */ + background: @dark-bg0; + background-color: @background; + foreground: @dark-fg1; + border-color: @dark-gray; + separatorcolor: @border-color; + scrollbar-handle: @border-color; + + normal-background: @background; + normal-foreground: @foreground; + alternate-normal-background: @dark-bg0-soft; + alternate-normal-foreground: @foreground; + selected-normal-background: @dark-bg3; + selected-normal-foreground: @dark-fg0; + + active-background: @dark-yellow-dark; + active-foreground: @background; + alternate-active-background: @active-background; + alternate-active-foreground: @active-foreground; + selected-active-background: @dark-yellow-light; + selected-active-foreground: @active-foreground; + + urgent-background: @dark-red-dark; + urgent-foreground: @background; + alternate-urgent-background: @urgent-background; + alternate-urgent-foreground: @urgent-foreground; + selected-urgent-background: @dark-red-light; + selected-urgent-foreground: @urgent-foreground; +} + +@import "common" + ''; + }; + + # Rofi theme + ".config/rofi/themes/common.rasi" = { + enable = true; + executable = false; + text = '' +/* ========================================================================== + File: common.rasi + Desc: Shared rules between all gruvbox themes + Author: bardisty + Source: https://github.com/bardisty/rofi + Modified: Mon Feb 12 2018 06:06:47 PST -0800 + ========================================================================== */ + +window { + background-color: @background; + border: 2; + padding: 2; +} + +mainbox { + border: 0; + padding: 0; +} + +message { + border: 2px 0 0; + border-color: @separatorcolor; + padding: 1px; +} + +textbox { + highlight: @highlight; + text-color: @foreground; +} + +listview { + border: 2px solid 0 0; + padding: 2px 0 0; + border-color: @separatorcolor; + spacing: 2px; + scrollbar: @scrollbar; +} + +element { + border: 0; + padding: 2px; +} + +element.normal.normal { + background-color: @normal-background; + text-color: @normal-foreground; +} + +element.normal.urgent { + background-color: @urgent-background; + text-color: @urgent-foreground; +} + +element.normal.active { + background-color: @active-background; + text-color: @active-foreground; +} + +element.selected.normal { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} + +element.selected.urgent { + background-color: @selected-urgent-background; + text-color: @selected-urgent-foreground; +} + +element.selected.active { + background-color: @selected-active-background; + text-color: @selected-active-foreground; +} + +element.alternate.normal { + background-color: @alternate-normal-background; + text-color: @alternate-normal-foreground; +} + +element.alternate.urgent { + background-color: @alternate-urgent-background; + text-color: @alternate-urgent-foreground; +} + +element.alternate.active { + background-color: @alternate-active-background; + text-color: @alternate-active-foreground; +} + +scrollbar { + width: 4px; + border: 0; + handle-color: @scrollbar-handle; + handle-width: 8px; + padding: 0; +} + +mode-switcher { + border: 2px 0 0; + border-color: @separatorcolor; +} + +inputbar { + spacing: 0; + text-color: @normal-foreground; + padding: 2px; + children: [ prompt, textbox-prompt-sep, entry, case-indicator ]; +} + +case-indicator, +entry, +prompt, +button { + spacing: 0; + text-color: @normal-foreground; +} + +button.selected { + background-color: @selected-normal-background; + text-color: @selected-normal-foreground; +} + +textbox-prompt-sep { + expand: false; + str: ":"; + text-color: @normal-foreground; + margin: 0 0.3em 0 0; +} +element-text, element-icon { + background-color: inherit; + text-color: inherit; +} + ''; + }; + }; +} \ No newline at end of file diff --git a/home-manager/common/desktops/hyprland/themes/stylix/swaylock-conf.nix b/home-manager/common/desktops/hyprland/themes/stylix/swaylock-conf.nix new file mode 100644 index 00000000..4bced138 --- /dev/null +++ b/home-manager/common/desktops/hyprland/themes/stylix/swaylock-conf.nix @@ -0,0 +1,57 @@ +{ pkgs, ... }: { + programs.swaylock = { + enable = true; + # swaylock-effects has extra effects like image blur and stuff. + package = pkgs.swaylock-effects; + settings = { + # All options are of the form . + font-size = 96; + show-failed-attempts = true; + effect-blur = "20x8"; + screenshots = true; + font = "JetBrainsMono Nerd Font"; + + clock = true; + timestr = "%R"; + datestr = "%a, %b %d"; + grace = 5; + + indicator = true; + indicator-radius = "130"; + indicator-thickness = "12"; + indicator-caps-lock = true; + disable-caps-lock-text = false; + + # OTHER + key-hl-color = "b8bb26"; #b8bb26 # Sets the color of the key press highlight segments. + separator-color = "ebdbb200"; #ebdbb200 # Sets the color of the lines that separate highlight segments. + bs-hl-color = "d79921"; #d79921 # Sets the color of backspace highlight segments. + # DEFAULT + ring-color = "2a9b34"; #2a9b34 # Sets the color of the ring of the indicator. + line-color = "ebdbb200"; #ebdbb200 # Sets the color of the line between the inside and ring. + text-color = "83a598"; #83a598 # Sets the color of the text. + inside-color = "1d202199"; #1d202199 # Sets the color of the inside of the indicator. + # VERIFYING + ring-ver-color = "41ff58"; #41ff58 # Sets the color of the ring of the indicator when verifying. + line-ver-color = "ebdbb200"; #ebdbb200 # Sets the color of the line between the inside and ring when verifying. + text-ver-color = "83a59800"; #83a59800 # Sets the color of the text when verifying. + inside-ver-color = "1e1e1e99"; #1e1e1e99 # Sets the color of the inside of the indicator when verifying. + # WRONG + ring-wrong-color = "da6a6a"; #da6a6a # Sets the color of the ring of the indicator when invalid. + line-wrong-color = "ebdbb200"; #ebdbb200 # Sets the color of the line between the inside and ring when invalid. + text-wrong-color = "83a59800"; #83a59800 # Sets the color of the text when invalid. + inside-wrong-color = "1e1e1e99"; #1e1e1e99 # Sets the color of the inside of the indicator when invalid. + # CAPS-LOCK + ring-caps-lock-color = "2a9b34"; #2a9b34 # Sets the color of the ring of the indicator when Caps Lock is active. + line-caps-lock-color = "2a9b3400"; #2a9b3400 # Sets the color of the line between the inside and ring when Caps Lock is active. + text-caps-lock-color = "2a9b3400"; #2a9b3400 # Sets the color of the text when Caps Lock is active. + inside-caps-lock-color = "1e1e1e99"; #1e1e1e99 # Sets the color of the inside of the indicator when Caps Lock is active. + # CLEAR + ring-clear-color = "bdae93"; #bdae93 # Sets the color of the ring of the indicator when cleared. + line-clear-color = "92837400"; #92837400 # Sets the color of the line between the inside and ring when cleared. + text-clear-color = "92837400"; #92837400 # Sets the color of the text when cleared. + inside-clear-color = "1e1e1e99"; #1e1e1e99 # Sets the color of the inside of the indicator when cleared. + + }; + }; +} diff --git a/home-manager/common/desktops/hyprland/themes/stylix/waybar-conf.nix b/home-manager/common/desktops/hyprland/themes/stylix/waybar-conf.nix new file mode 100644 index 00000000..6bf05e91 --- /dev/null +++ b/home-manager/common/desktops/hyprland/themes/stylix/waybar-conf.nix @@ -0,0 +1,274 @@ +{ ...}: { + imports = [ ../../common/waybar/scripts.nix ]; + + home.file = { + # https://yewtu.be/watch?v=tWQB1NDDA9c + # https://github.com/DN-debug/waybar-examples + + # Inspiration: + # https://github.com/Pipshag/dotfiles_gruvbox + + # Font Search: + # https://www.nerdfonts.com/cheat-sheet + + # Online CSS testing + # https://www.w3schools.com/css/tryit.asp?filename=trycss_border_round + + # Waybar configuration + ".config/waybar/config.jsonc" = { + enable = true; + executable = false; + text = '' + { + "layer": "top", + "position": "top", + "modules-left": [ + "custom/wlogout", + "idle_inhibitor", + "clock", + "mpris", + ], + "modules-center": [ + "hyprland/workspaces", + ], + "modules-right": [ + "pulseaudio", + "custom/tailscale", + "network", + "battery", + ], + + "custom/wlogout": { + "format": "", + "on-click": "wlogout" + }, + + "custom/tailscale": { + "format": "{icon} ", + "exec": "$HOME/.config/waybar/scripts/tailscale.sh", + "exec-if": "pgrep tailscaled", + "return-type": "json", + "interval": 5, + "format-icons": { + "Running": "󰌆", + "Stopped": "󰌊", + } + }, + + "idle_inhibitor": { + "format": "{icon} ", + "format-icons": { + "activated": "", + "deactivated": "" + } + }, + + "mpris": { + "format": "{player_icon} {dynamic}", + "format-paused": "{status_icon} {dynamic}", + "player-icons": { "default": "▶" }, + "status-icons": { "paused": "⏸" }, + "max-length": 30, + }, + + "hyprland/workspaces": { + "on-click": "activate", + }, + + "clock": { + "format": "󰥔 {:%H:%M}", + "format-alt": "󰃭 {:%A, %d %b, %Y}", + "tooltip-format": "{calendar}", + "calendar": { + "mode" : "month", + "mode-mon-col" : 3, + "weeks-pos" : "left", + "on-scroll" : 1, + "format": { + "months": "{}", + "days": "{}", + "weeks": "W{}", + "weekdays": "{}", + "today": "{}" + } + }, + "actions": { + "on-click-right": "kitty -e calcurse", + "on-click-middle": "mode", + "on-scroll-up": "shift_up", + "on-scroll-down": "shift_down" + } + }, + + "pulseaudio": { + "scroll-step": 1, + "format": "{icon} {format_source}", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " ", + "format-muted": "󰝟 {format_source}", + "format-source": " ", + "format-source-muted": " ", + "format-icons": { + "headphone": " ", + "headset": " ", + "default": ["󰕿", "󰖀", "󰕾"] + }, + "tooltip": false, + "on-click": "kitty -e pulsemixer", + }, + + "network": { + "format": "{ifname}", + "format-wifi": " ", + "format-ethernet": " {ipaddr}", + "format-disconnected": "", // An empty format will hide the module. + "tooltip-format": "{ifname} via {gwaddr} ", + "tooltip-format-wifi": "{essid} ({signalStrength}%) ", + "tooltip-format-ethernet": "{ifname} ", + "tooltip-format-disconnected": "Disconnected", + "max-length": 50, + "on-click": "kitty --class=nmtui -e nmtui" + }, + + "battery": { + "tooltip": true, + "tooltip-format": "{time}", + "states": { + "warning": 35, + "critical": 20 + }, + "format": "{icon} {capacity}%", + "format-charging": "󰂄 {capacity}%", + "format-plugged": " {capacity}%", + "format-icons": ["", "", "", "", ""] + }, + } + ''; + }; + + # Waybar theming + ".config/waybar/style.css" = { + enable = true; + executable = false; + text = '' + * { + border: none; + border-radius: 0; + font-family: JetbrainsMono Regular; + } + + #waybar { + background-color: rgba(50, 48, 47, 0.8); + padding: 15px; + } + + #workspaces button.visible, + #workspaces button { + font-size: 15px; + border-radius: 50px; + padding: 0px 5px; + margin: 5px; + color: rgba(200, 200, 200, 0.5); + background-color: #282828; + } + + #workspaces button.active { + padding: 0px 15px; + background-color: #7A7740; + color: rgba(0, 0, 0, 0.5); + } + + #workspaces button:hover, + #workspaces button.focused:hover, + #workspaces button.visible:hover { + color: rgba(0, 0, 0, 0.5); + background-color: #649a25; + } + + #workspaces button.urgent { + background-color: #cc241d; + color: rgba(200, 200, 200, 0.5); + } + + /* + * General background + */ + #network, + #mpris, + #memory, + #backlight, + #cpu, + #pulseaudio, + #temperature, + #battery, + #tray, + #submap, + #clock, + #idle_inhibitor, + #custom-tailscale, + #custom-wlogout, + #window { + font-size: 16px; + padding: 0px 10px; + margin: 5px; + border-radius: 5px; + color: rgba(58,60,62, 0.6); + background-color: #649a25; + font-weight: bold; + } + + /* + * General background + */ + #network button:hover, + #mpris button:hover, + #memory button:hover, + #backlight button:hover, + #cpu button:hover, + #pulseaudio button:hover, + #temperature button:hover, + #battery button:hover, + #tray button:hover, + #submap button:hover, + #clock button:hover, + #idle_inhibitor button:hover, + #custom-tailscale button:hover, + #custom-wlogout button:hover, + #window button:hover{ + background-color: #d9eed2; + } + + /* + * Warning plugins state + */ + #battery.warning { + background-color: #d1ff6d; + } + + /* + * Critical plugins state + */ + #idle_inhibitor.activated, + #battery.critical, + #custom-tailscale.Stopped, + #network.disconnected { + color: #d9eed2; + background-color: #fb0029; + } + #battery.charging { + background-color: #2a9b34; + } + #battery.plugged { + background-color: #458588; + } + #pulseaudio.bluetooth { + background-color: #458588; + } + tooltip { + color: #d9eed2; + font-size: 14px; + } + ''; + }; + }; +} diff --git a/home-manager/common/desktops/hyprland/themes/stylix/wlogout-conf.nix b/home-manager/common/desktops/hyprland/themes/stylix/wlogout-conf.nix new file mode 100644 index 00000000..e624c766 --- /dev/null +++ b/home-manager/common/desktops/hyprland/themes/stylix/wlogout-conf.nix @@ -0,0 +1,38 @@ +{ ... }: { + xdg.configFile."wlogout/style.css" = { + enable = true; + target = "./wlogout/style.css"; + text = '' + * { + background-image: none; + } + window { + background-color: rgba(58,60,62, 0.6); + } + button { + color: #d9eed2; + font-size: 0px; + border-radius: 5000px; + margin: 25px; + background-color: #3a3c3e; + border-style: solid; + border-width: 3px; + background-repeat: no-repeat; + background-position: center; + background-size: 25%; + } + + button:active, button:hover { + background-color: #2a9b34; + outline-style: none; + } + + #lock { background-image: url("/etc/nixos/git/home-manager/common/desktops/hyprland/common/wlogout/lock.png"); } + #logout { background-image: url("/etc/nixos/git/home-manager/common/desktops/hyprland/common/wlogout/logout.png"); } + #suspend { background-image: url("/etc/nixos/git/home-manager/common/desktops/hyprland/common/wlogout/suspend.png"); } + #hibernate { background-image: url("/etc/nixos/git/home-manager/common/desktops/hyprland/common/wlogout/hibernate.png"); } + #shutdown { background-image: url("/etc/nixos/git/home-manager/common/desktops/hyprland/common/wlogout/shutdown.png"); } + #reboot { background-image: url("/etc/nixos/git/home-manager/common/desktops/hyprland/common/wlogout/reboot.png"); } + ''; + }; +} \ No newline at end of file diff --git a/nixos/common/desktops/hyprland/default.nix b/nixos/common/desktops/hyprland/default.nix index 0c24e944..b4931455 100644 --- a/nixos/common/desktops/hyprland/default.nix +++ b/nixos/common/desktops/hyprland/default.nix @@ -7,6 +7,8 @@ # ]; # }; + imports = [ stylix.nixosModules.stylix ]; + services.xserver.videoDrivers = [ ] ++ lib.optional (builtins.isString gpu) gpu; # tuigreet diff --git a/nixos/default.nix b/nixos/default.nix index 21ce4839..536c307b 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -57,8 +57,7 @@ busybox # General linux commands, nslookup, dig, etc sshpass # ssh password helper cbonsai # ncurses bonsai tree - # busybox # Linux utilities - coreutils-full + busybox # Linux utilities at # Job scheduler ]; diff --git a/nixos/hosts/nixos-framework/default.nix b/nixos/hosts/nixos-framework/default.nix index f8d00c5c..9308274a 100644 --- a/nixos/hosts/nixos-framework/default.nix +++ b/nixos/hosts/nixos-framework/default.nix @@ -8,6 +8,7 @@ ../../common/modules/ssh-luks.nix ../../common/services/powertop.nix ../../common/services/fwupd.nix + ../../common/services/podman.nix ]; # steam , etc @@ -40,6 +41,7 @@ }; environment.systemPackages = with pkgs; [ + distrobox # Game related things gamemode # WINE