Personal Nix setup
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add initial theme setup

+352 -311
-17
flake.lock
··· 565 565 "type": "github" 566 566 } 567 567 }, 568 - "nixpkgs-unstable": { 569 - "locked": { 570 - "lastModified": 1686960236, 571 - "narHash": "sha256-AYCC9rXNLpUWzD9hm+askOfpliLEC9kwAo7ITJc4HIw=", 572 - "owner": "nixos", 573 - "repo": "nixpkgs", 574 - "rev": "04af42f3b31dba0ef742d254456dc4c14eedac86", 575 - "type": "github" 576 - }, 577 - "original": { 578 - "owner": "nixos", 579 - "ref": "nixos-unstable", 580 - "repo": "nixpkgs", 581 - "type": "github" 582 - } 583 - }, 584 568 "nixpkgs-wayland": { 585 569 "inputs": { 586 570 "flake-compat": "flake-compat_2", ··· 1055 1039 "nixos-hardware": "nixos-hardware", 1056 1040 "nixpkgs": "nixpkgs_2", 1057 1041 "nixpkgs-darwin": "nixpkgs-darwin", 1058 - "nixpkgs-unstable": "nixpkgs-unstable", 1059 1042 "nixpkgs-wayland": "nixpkgs-wayland", 1060 1043 "nvim-plugins": "nvim-plugins" 1061 1044 }
-1
flake.nix
··· 5 5 6 6 inputs = { 7 7 nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; 8 - nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; 9 8 nixpkgs-darwin.url = "github:nixos/nixpkgs/nixpkgs-23.05-darwin"; 10 9 11 10 nixos-hardware.url = "github:NixOS/nixos-hardware/master";
+8
home/apps/basic.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + home.packages = with pkgs; [ 5 + gnome.nautilus 6 + gnome.sushi 7 + ]; 8 + }
+1
home/apps/default.nix
··· 2 2 3 3 { 4 4 imports = [ 5 + ./basic.nix 5 6 ./firefox.nix 6 7 ]; 7 8 }
+2 -4
home/desktop/default.nix
··· 4 4 imports = [ 5 5 ./hyprland.nix 6 6 ./hyprpaper.nix 7 + ./notifications.nix 8 + ./theme.nix 7 9 ./kanshi.nix 8 10 ./waybar.nix 9 - ./mako.nix 10 11 ./wofi.nix 11 12 ./lock.nix 12 - ./eww 13 13 ]; 14 - 15 - fonts.fontconfig.enable = true; 16 14 }
-45
home/desktop/eww/default.nix
··· 1 - { lib, pkgs, ... } @ inputs: 2 - 3 - let 4 - inherit (import ../../../lib/colors.nix inputs) colors shell lightStroke darkStroke mkScssSyntax; 5 - in { 6 - home.packages = [ pkgs.eww-wayland ]; 7 - 8 - xdg.configFile."eww/_colors.scss".text = mkScssSyntax (colors // { 9 - shell.gui = shell; 10 - lightStroke.gui = lightStroke; 11 - darkStroke.gui = darkStroke; 12 - }); 13 - 14 - xdg.configFile."eww/_variables.yuck".text = ""; 15 - 16 - xdg.configFile.eww = { 17 - recursive = true; 18 - source = lib.cleanSourceWith { 19 - filter = name: _type: !(lib.hasSuffix ".nix" (baseNameOf (toString name))); 20 - src = lib.cleanSource ./.; 21 - }; 22 - }; 23 - 24 - systemd.user.services.eww = let 25 - dependencies = with pkgs; [ eww-wayland bash ]; 26 - in { 27 - Unit = { 28 - Description = "ElKowars wacky widgets"; 29 - PartOf = [ "graphical-session.target" ]; 30 - After = [ "graphical-session.target" ]; 31 - }; 32 - 33 - Install = { 34 - WantedBy = [ "hyprland-session.target" ]; 35 - }; 36 - 37 - Service = { 38 - Environment = "PATH=${lib.makeBinPath dependencies}"; 39 - ExecStart = "${pkgs.eww-wayland}/bin/eww daemon --no-daemonize"; 40 - ExecReload = "${pkgs.coreutils}/bin/kill -SIGUSR2 $MAINPID"; 41 - Restart = "on-failure"; 42 - KillMode = "mixed"; 43 - }; 44 - }; 45 - }
-64
home/desktop/eww/eww.scss
··· 1 - @import 'colors'; 2 - 3 - * { 4 - all: unset; 5 - font-size: 0.9rem; 6 - font-feature-settings: "tnum"; 7 - font-family: Inter, FontAwesome6Pro; 8 - transition: 200ms ease; 9 - } 10 - 11 - @mixin window { 12 - color: $color-white; 13 - background-color: $color-shell; 14 - border-radius: 2rem; 15 - padding: 15px; 16 - } 17 - 18 - //Global Styles 19 - .bar { 20 - @include window; 21 - } 22 - 23 - .sidestuff slider { 24 - all: unset; 25 - color: #ffd5cd; 26 - } 27 - 28 - .metric scale trough highlight { 29 - all: unset; 30 - background-color: #D35D6E; 31 - color: #000000; 32 - border-radius: 10px; 33 - } 34 - .metric scale trough { 35 - all: unset; 36 - background-color: #4e4e4e; 37 - border-radius: 50px; 38 - min-height: 3px; 39 - min-width: 50px; 40 - margin-left: 10px; 41 - margin-right: 20px; 42 - } 43 - .metric scale trough highlight { 44 - all: unset; 45 - background-color: #D35D6E; 46 - color: #000000; 47 - border-radius: 10px; 48 - } 49 - .metric scale trough { 50 - all: unset; 51 - background-color: #4e4e4e; 52 - border-radius: 50px; 53 - min-height: 3px; 54 - min-width: 50px; 55 - margin-left: 10px; 56 - margin-right: 20px; 57 - } 58 - .label-ram { 59 - font-size: large; 60 - } 61 - .workspaces button:hover { 62 - color: #D35D6E; 63 - } 64 -
-77
home/desktop/eww/eww.yuck
··· 1 - (include "./_variables.yuck"); 2 - 3 - (defwidget bar [] 4 - (centerbox :orientation "h" 5 - (workspaces) 6 - (music) 7 - (sidestuff))) 8 - 9 - (defwidget sidestuff [] 10 - (box :class "sidestuff" :orientation "h" :space-evenly false :halign "end" 11 - (metric :label "🔊" 12 - :value volume 13 - :onchange "amixer -D pulse sset Master {}%") 14 - (metric :label "" 15 - :value {EWW_RAM.used_mem_perc} 16 - :onchange "") 17 - (metric :label "💾" 18 - :value {round((1 - (EWW_DISK["/"].free / EWW_DISK["/"].total)) * 100, 0)} 19 - :onchange "") 20 - time)) 21 - 22 - (defwidget workspaces [] 23 - (box :class "workspaces" 24 - :orientation "h" 25 - :space-evenly true 26 - :halign "start" 27 - :spacing 10 28 - (button :onclick "wmctrl -s 0" 1) 29 - (button :onclick "wmctrl -s 1" 2) 30 - (button :onclick "wmctrl -s 2" 3) 31 - (button :onclick "wmctrl -s 3" 4) 32 - (button :onclick "wmctrl -s 4" 5) 33 - (button :onclick "wmctrl -s 5" 6) 34 - (button :onclick "wmctrl -s 6" 7) 35 - (button :onclick "wmctrl -s 7" 8) 36 - (button :onclick "wmctrl -s 8" 9))) 37 - 38 - (defwidget music [] 39 - (box :class "music" 40 - :orientation "h" 41 - :space-evenly false 42 - :halign "center" 43 - {music != "" ? "🎵${music}" : ""})) 44 - 45 - 46 - (defwidget metric [label value onchange] 47 - (box :orientation "h" 48 - :class "metric" 49 - :space-evenly false 50 - (box :class "label" label) 51 - (scale :min 0 52 - :max 101 53 - :active {onchange != ""} 54 - :value value 55 - :onchange onchange))) 56 - 57 - 58 - 59 - (deflisten music :initial "" 60 - "playerctl --follow metadata --format '{{ artist }} - {{ title }}' || true") 61 - 62 - (defpoll volume :interval "1s" 63 - "scripts/getvol") 64 - 65 - (defpoll time :interval "10s" 66 - "date '+%H:%M %b %d, %Y'") 67 - 68 - (defwindow bar 69 - :monitor 0 70 - :windowtype "dock" 71 - :geometry (geometry :x "0%" 72 - :y "0%" 73 - :width "90%" 74 - :height "10px" 75 - :anchor "top center") 76 - :reserve (struts :side "top" :distance "4%") 77 - (bar))
+30 -25
home/desktop/hyprland.nix
··· 9 9 10 10 services.playerctld.enable = true; 11 11 12 - services.xsettingsd = { 13 - enable = true; 14 - settings = { 15 - "Xft/Antialias" = true; 16 - "Xft/Hinting" = true; 17 - "Xft/HintStyle" = "hintslight"; 18 - "Xft/RGBA" = "rgb"; 19 - "Xft/dpi" = 163; 20 - }; 21 - }; 22 - 23 12 wayland.windowManager.hyprland = { 24 13 enable = true; 25 14 xwayland = { ··· 30 19 recommendedEnvironment = true; 31 20 32 21 extraConfig = '' 33 - $search = ${pkgs.wofi}/bin/wofi 22 + $wofi = ${pkgs.wofi}/bin/wofi 23 + $swaync = ${pkgs.swaynotificationcenter}/bin/swaync-client 34 24 $pwmanager = ${pkgs.rofi-rbw}/bin/rofi-rbw 35 25 $terminal = ${pkgs.wezterm}/bin/wezterm 36 - $volume_set = ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 37 - $mute_set = ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ 38 - $light_up = ${pkgs.light}/bin/light -A 10 39 - $light_down = ${pkgs.light}/bin/light -U 10 26 + $volume = ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 27 + $mute = ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle 28 + $light = ${pkgs.light}/bin/light 40 29 $player = ${pkgs.playerctl}/bin/playerctl 30 + $pkill = ${pkgs.procps}/bin/pkill 41 31 42 - bind = SUPER, Return, exec, $terminal 43 - bind = SUPER, Space, exec, $search 32 + bind = SUPER, Escape, exec, $terminal 33 + bind = SUPER, Space, exec, $pkill wofi || $wofi 34 + bind = SUPER, Return, exec, $swaync -op -sw 44 35 bind = SUPER, Q, killactive 45 36 37 + bind = SUPER, Tab, cyclenext, 38 + bind = SUPER, Tab, bringactivetotop, 39 + 46 40 bind = SUPER, backslash, exec, $pwmanager 47 41 48 - binde =, XF86AudioRaiseVolume, exec, $volume_set 5%+ 49 - binde =, XF86AudioLowerVolume, exec, $volume_set 5%- 50 - binde =, XF86AudioMute, exec, $mute_set toggle 51 - binde =, XF86MonBrightnessDown, exec, $light_down 52 - binde =, XF86MonBrightnessUp, exec, $light_up 42 + bindel =, XF86AudioRaiseVolume, exec, $volume 5%+ 43 + bindel =, XF86AudioLowerVolume, exec, $volume 5%- 44 + bindel =, XF86AudioMute, exec, $mute 45 + bindel =, XF86MonBrightnessDown, exec, $light -U 10 46 + bindel =, XF86MonBrightnessUp, exec, $light -A 10 53 47 bind =, XF86AudioPlay, exec, $player play-pause 54 48 bind =, XF86AudioPrev, exec, $player previous 55 49 bind =, XF86AudioNext, exec, $player next ··· 66 60 layerrule = blur, waybar 67 61 layerrule = ignorezero, waybar 68 62 69 - layerrule = blur, gtk-layer-shell 70 - layerrule = ignorezero, gtk-layer-shell 63 + layerrule = blur, swaync-control-center 64 + layerrule = ignorezero, swaync-control-center 65 + 66 + layerrule = blur, swaync-notification-window 67 + layerrule = ignorezero, swaync-notification-window 71 68 72 69 general { 73 70 gaps_in = 6 ··· 102 99 tap-to-click = false 103 100 scroll_factor = 0.2 104 101 } 102 + } 103 + 104 + misc { 105 + disable_hyprland_logo = true 106 + disable_splash_rendering = true 107 + mouse_move_enables_dpms = true 108 + key_press_enables_dpms = true 109 + vfr = true 105 110 } 106 111 ''; 107 112 };
-34
home/desktop/mako.nix
··· 1 - { pkgs, ... } @ inputs: 2 - 3 - let 4 - inherit (import ../../lib/colors.nix inputs) hex; 5 - in { 6 - services.mako = { 7 - enable = true; 8 - font = "Inter 12"; 9 - defaultTimeout = 2600; 10 - backgroundColor = "#99${hex.split}"; 11 - textColor = "#FF${hex.white}"; 12 - borderRadius = 3; 13 - borderSize = 0; 14 - }; 15 - 16 - systemd.user.services.mako = { 17 - Unit = { 18 - Description = "Lightweight Wayland notification daemon"; 19 - PartOf = [ "graphical-session.target" ]; 20 - After = [ "graphical-session.target" ]; 21 - }; 22 - 23 - Install = { 24 - WantedBy = [ "hyprland-session.target" ]; 25 - }; 26 - 27 - Service = { 28 - Type = "dbus"; 29 - BusName = "org.freedesktop.Notification"; 30 - ExecStart = "${pkgs.mako}/bin/mako"; 31 - ExecReload = "${pkgs.mako}/bin/makoctl reload"; 32 - }; 33 - }; 34 - }
+109
home/desktop/notifications.nix
··· 1 + { pkgs, ... } @ inputs: 2 + 3 + let 4 + inherit (import ../../lib/colors.nix inputs) colors lightStroke shell; 5 + package = pkgs.swaynotificationcenter; 6 + in { 7 + home.packages = [ package ]; 8 + 9 + xdg.configFile."swaync/config.json".text = builtins.toJSON { 10 + positionX = "right"; 11 + positionY = "top"; 12 + layer = "top"; 13 + control-center-positionX = "right"; 14 + control-center-positionY = "top"; 15 + control-center-layer = "overlay"; 16 + layer-shell = true; 17 + fit-to-screen = false; 18 + }; 19 + 20 + xdg.configFile."swaync/style.css".text = '' 21 + * { 22 + text-shadow: none; 23 + font-family: Inter, FontAwesome6Pro; 24 + } 25 + 26 + .blank-window { 27 + background: transparent; 28 + margin: 0; 29 + padding: 0; 30 + } 31 + 32 + .control-center { 33 + background: ${shell}; 34 + border: 1px solid ${lightStroke}; 35 + margin: 10px; 36 + padding: 1rem; 37 + border-radius: 1rem; 38 + color: ${colors.white.gui}; 39 + } 40 + 41 + .notification { 42 + background: ${shell}; 43 + border: 1px solid ${lightStroke}; 44 + padding: 5px 10px 5px 10px; 45 + border-radius: 1rem; 46 + color: ${colors.white.gui}; 47 + box-shadow: none; 48 + } 49 + 50 + .notification > * { 51 + background: none; 52 + border: none; 53 + padding: 0; 54 + margin: 0; 55 + } 56 + 57 + .notification-content { 58 + background: none; 59 + padding: 6px; 60 + border-radius: 12px; 61 + } 62 + 63 + .notification-row { 64 + outline: none; 65 + background: none; 66 + border: none; 67 + } 68 + 69 + .time { 70 + background: none; 71 + } 72 + 73 + .summary { 74 + background: none; 75 + } 76 + 77 + .body { 78 + background: none; 79 + } 80 + ''; 81 + 82 + systemd.user.services.swaync = { 83 + Unit = { 84 + Description = "Swaync notification daemon"; 85 + PartOf = [ "graphical-session.target" ]; 86 + After = [ "graphical-session.target" ]; 87 + ConditionEnvironment = "WAYLAND_DISPLAY"; 88 + }; 89 + 90 + Install = { 91 + WantedBy = [ "hyprland-session.target" ]; 92 + }; 93 + 94 + Service = { 95 + Type = "dbus"; 96 + BusName = "org.freedesktop.Notification"; 97 + ExecStart = "${package}/bin/swaync"; 98 + ExecReload = "${package}/bin/swaync-client --reload-config ; ${package}/bin/swaync-client --reload-css"; 99 + Restart = "on-failure"; 100 + }; 101 + }; 102 + 103 + xdg.dataFile."dbus-1/services/swaync.service".text = '' 104 + [D-BUS Service] 105 + Name=org.freedesktop.Notification 106 + Exec=${package}/bin/swaync 107 + SystemdService=swaync.service 108 + ''; 109 + }
+79
home/desktop/theme.nix
··· 1 + { pkgs, ... } @ inputs: 2 + 3 + let 4 + inherit (import ../../lib/colors.nix inputs) hex; 5 + inherit (pkgs) hyprland swayidle; 6 + swaylock = pkgs.swaylock-effects; 7 + in { 8 + services.xsettingsd = { 9 + enable = true; 10 + settings = { 11 + "Gtk/CursorThemeName" = "Bibata-Modern-Classic"; 12 + "Net/IconThemeName" = "WhiteSur-dark"; 13 + "Xft/Antialias" = true; 14 + "Xft/Hinting" = true; 15 + "Xft/HintStyle" = "hintslight"; 16 + "Xft/RGBA" = "rgb"; 17 + "Xft/dpi" = 163; 18 + }; 19 + }; 20 + 21 + fonts.fontconfig.enable = true; 22 + 23 + home.pointerCursor = { 24 + name = "Bibata-Modern-Classic"; 25 + package = pkgs.bibata-cursors; 26 + size = 24; 27 + gtk.enable = true; 28 + x11.enable = true; 29 + }; 30 + 31 + dconf = { 32 + enable = true; 33 + settings = { 34 + "org/gnome/desktop/interface" = { 35 + color-scheme = "prefer-dark"; 36 + }; 37 + }; 38 + }; 39 + 40 + gtk = { 41 + enable = true; 42 + 43 + font = { 44 + package = pkgs.inter; 45 + name = "Inter"; 46 + size = 10; 47 + }; 48 + 49 + iconTheme = { 50 + name = "WhiteSur-dark"; 51 + package = pkgs.whitesur-icon-theme.override { 52 + alternativeIcons = true; 53 + boldPanelIcons = true; 54 + }; 55 + }; 56 + 57 + theme = { 58 + name = "WhiteSur-Dark"; 59 + package = pkgs.whitesur-gtk-theme; 60 + }; 61 + 62 + gtk3.extraConfig = { 63 + gtk-application-prefer-dark-theme = 1; 64 + }; 65 + 66 + gtk4.extraConfig = { 67 + gtk-application-prefer-dark-theme = 1; 68 + }; 69 + }; 70 + 71 + qt = { 72 + enable = true; 73 + platformTheme = "gtk"; 74 + }; 75 + 76 + systemd.user.sessionVariables = { 77 + GTK_THEME = "WhiteSur-Dark"; 78 + }; 79 + }
+40 -18
home/desktop/waybar.nix
··· 2 2 3 3 let 4 4 inherit (import ../../lib/colors.nix inputs) colors shell; 5 + swaync-client = "${pkgs.swaynotificationcenter}/bin/swaync-client"; 6 + wait = "${pkgs.coreutils}/bin/sleep 0.1"; 5 7 in { 8 + services = { 9 + network-manager-applet.enable = true; 10 + blueman-applet.enable = true; 11 + mpris-proxy.enable = true; 12 + }; 13 + 6 14 programs.waybar = { 7 15 enable = true; 8 16 systemd.enable = true; 9 17 10 18 settings = { 11 19 mainBar = { 12 - layer = "bottom"; 20 + layer = "top"; 13 21 passthrough = false; 14 22 fixed-center = true; 15 23 spacing = 12; 16 24 17 25 modules-left = [ "custom/wofi" ]; 18 - modules-center = [ "clock" ]; 19 - modules-right = [ "tray" "network" "wireplumber" "battery" ]; 26 + modules-center = [ "clock" "custom/swaync" ]; 27 + modules-right = [ "tray" "wireplumber" "battery" ]; 20 28 21 29 "custom/wofi" = { 22 - format = "Search"; 23 - on-click = "${pkgs.wofi}/bin/wofi"; 30 + format = ""; 31 + on-click = "${wait} && ${pkgs.wofi}/bin/wofi"; 32 + tooltip = false; 33 + escape = true; 34 + }; 35 + 36 + "custom/swaync" = { 37 + format = "{icon}"; 38 + tooltip = false; 39 + escape = true; 40 + return-type = "json"; 41 + on-click = "${wait} && ${swaync-client} -t -sw"; 42 + on-click-right = "${wait} && ${swaync-client} -d -sw"; 43 + exec = "${swaync-client} -swb"; 44 + format-icons = { 45 + notification = " <span foreground='${colors.brightYellow.gui}'></span>"; 46 + none = ""; 47 + dnd-notification = " <span foreground='${colors.brightYellow.gui}'></span>"; 48 + dnd-none = ""; 49 + inhibited-notification = " <span foreground='${colors.brightYellow.gui}'></span>"; 50 + inhibited-none = ""; 51 + dnd-inhibited-notification = " <span foreground='${colors.brightYellow.gui}'></span>"; 52 + dnd-inhibited-none = ""; 53 + }; 54 + }; 55 + 56 + tray = { 57 + icon-size = 16; 58 + spacing = 8; 24 59 tooltip = false; 25 60 }; 26 61 ··· 51 86 format-icons = [ "" "" "" ]; 52 87 format-muted = ""; 53 88 max-volume = 100; 54 - tooltip = false; 55 - }; 56 - 57 - network = { 58 - format-ethernet = ""; 59 - format-disconnected = ""; 60 - format-linked = ""; 61 - format-wifi = "{icon}"; 62 - format-icons = [ "" "" "" ]; 63 89 tooltip = false; 64 90 }; 65 91 }; ··· 104 130 #workspaces button { 105 131 padding: 2px 8px 2px 8px; 106 132 background: transparent; 107 - } 108 - 109 - #battery { 110 - padding-right: 14px; 111 133 } 112 134 ''; 113 135 };
+5 -4
home/desktop/wofi.nix
··· 1 1 { ... } @ inputs: 2 2 3 3 let 4 - inherit (import ../../lib/colors.nix inputs) shell colors; 4 + inherit (import ../../lib/colors.nix inputs) shell lightStroke colors; 5 5 in { 6 6 programs.wofi = { 7 7 enable = true; ··· 48 48 49 49 #window { 50 50 background: ${shell}; 51 + border: 1px solid ${lightStroke}; 51 52 color: ${colors.white.gui} 52 - border-radius: 18px; 53 - border: none; 53 + border-radius: 1rem; 54 + padding: 1rem; 54 55 } 55 56 56 57 #outer-box { 57 - padding: 20px; 58 + padding: 1rem; 58 59 } 59 60 60 61 #input {
+3 -3
lib/colors.nix
··· 8 8 9 9 mkColor = gui: cterm: cterm16: { gui=gui; cterm=cterm; cterm16=cterm16; }; 10 10 in rec { 11 - shell = "rgba(40, 44, 52, 0.6)"; 12 - lightStroke = "rgba(248, 248, 241, 0.5)"; 13 - darkStroke = "rgba(22, 23, 29, 0.6)"; 11 + shell = "rgba(40, 44, 46, 0.6)"; 12 + lightStroke = "rgba(248, 248, 241, 0.2)"; 13 + darkStroke = "rgba(22, 23, 29, 0.2)"; 14 14 15 15 hex = { 16 16 gutter = "16171D";
+3
machines/pepper/hardware.nix
··· 100 100 hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 101 101 hardware.enableAllFirmware = true; 102 102 103 + # enable bluetooth support 104 + hardware.bluetooth.enable = true; 105 + 103 106 # enable media acceleration 104 107 hardware.opengl = { 105 108 enable = true;
+2
modules/desktop/default.nix
··· 3 3 helpers.linuxAttrs { 4 4 imports = [ 5 5 ./hardware.nix 6 + ./services.nix 6 7 ./session.nix 8 + ./xdg.nix 7 9 ]; 8 10 }
+24 -13
modules/desktop/hardware.nix
··· 1 - { user, ... }: 1 + { user, config, lib, ... }: 2 2 3 3 { 4 - services.logind.extraConfig = '' 5 - HandlerPowerKey=suspend 6 - HandleLidSwitch=suspend 7 - ''; 4 + users.users."${user}".extraGroups = [ "video" ]; 5 + 6 + services = { 7 + logind.extraConfig = '' 8 + HandlerPowerKey=suspend 9 + HandleLidSwitch=suspend 10 + ''; 11 + 12 + pipewire = { 13 + enable = true; 14 + wireplumber.enable = true; 15 + alsa.enable = true; 16 + alsa.support32Bit = true; 17 + pulse.enable = true; 18 + jack.enable = true; 19 + }; 20 + 21 + gvfs.enable = true; 8 22 9 - users.users."${user}".extraGroups = [ "video" ]; 23 + blueman.enable = lib.mkIf config.hardware.bluetooth.enable true; 24 + }; 10 25 11 - services.pipewire = { 12 - enable = true; 13 - wireplumber.enable = true; 14 - alsa.enable = true; 15 - alsa.support32Bit = true; 16 - pulse.enable = true; 17 - jack.enable = true; 26 + hardware = { 27 + pulseaudio.enable = lib.mkForce false; 28 + steam-hardware.enable = true; 18 29 }; 19 30 20 31 security.rtkit.enable = true;
+8
modules/desktop/services.nix
··· 1 + { user, ... }: 2 + 3 + { 4 + users.users."${user}".extraGroups = [ "video" ]; 5 + 6 + services.printing.enable = true; 7 + services.flatpak.enable = true; 8 + }
+9 -5
modules/desktop/session.nix
··· 39 39 } 40 40 ''; 41 41 hyprland_shell = pkgs.writeShellScript "hyprland-shell" '' 42 - exec systemd-cat -t hyprland ${pkgs.hyprland}/bin/Hyprland 42 + exec zsh -c "systemd-cat -t hyprland ${pkgs.hyprland}/bin/Hyprland" 43 43 ''; 44 44 hyprland_login = pkgs.writeShellScript "hyprland-login" '' 45 45 exec ${pkgs.hyprland}/bin/Hyprland --config ${hyprland_config}; ··· 63 63 pam.services.greetd.enableGnomeKeyring = true; 64 64 }; 65 65 66 - programs.hyprland = { 67 - enable = true; 68 - xwayland = { 66 + programs = { 67 + dconf.enable = true; 68 + 69 + hyprland = { 69 70 enable = true; 70 - hidpi = true; 71 + xwayland = { 72 + enable = true; 73 + hidpi = true; 74 + }; 71 75 }; 72 76 }; 73 77
+28
modules/desktop/xdg.nix
··· 1 + { lib, user, ... }: 2 + 3 + { 4 + home-manager.users.${user} = { ... }: { 5 + systemd.user.sessionVariables = { 6 + "NIXOS_OZONE_WL" = lib.mkDefault "1"; 7 + "MOZ_ENABLE_WAYLAND" = lib.mkDefault "1"; 8 + "QT_WAYLAND_DISABLE_WINDOWDECORATIONS" = lib.mkDefault "1"; 9 + "QT_WAYLAND_FORCE_DPI" = lib.mkDefault "physical"; 10 + "QT_QPA_PLATFORM" = lib.mkDefault "wayland-egl"; 11 + }; 12 + 13 + xdg = { 14 + mimeApps = { 15 + enable = true; 16 + }; 17 + userDirs = { 18 + enable = true; 19 + createDirectories = true; 20 + }; 21 + systemDirs.data = [ 22 + "/usr/share" 23 + "/var/lib/flatpak/exports/share" 24 + "$HOME/.local/share/flatpak/exports/share" 25 + ]; 26 + }; 27 + }; 28 + }
+1 -1
modules/nvim/default.nix
··· 70 70 p.gitattributes p.graphql p.regex p.json p.json5 p.javascript 71 71 p.markdown p.markdown_inline p.terraform p.svelte p.prisma 72 72 p.yaml p.vue p.vim p.lua p.make p.jsdoc p.comment p.css 73 - p.sql p.rust p.html p.bash p.c p.nix p.zig p.yuck 73 + p.sql p.rust p.html p.bash p.c p.nix p.zig p.yuck p.go 74 74 ])) 75 75 ]; 76 76 };