update: fixed issues and update flake inputs
This commit is contained in:
parent
4b6183f0ec
commit
b3c5ad2880
80 changed files with 3307 additions and 2059 deletions
|
|
@ -3,14 +3,11 @@
|
|||
proxy ? true,
|
||||
}:
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (pkgs.stdenv.hostPlatform) system;
|
||||
inherit (builtins) toString;
|
||||
inherit (lib) mkIf;
|
||||
|
||||
|
|
@ -20,7 +17,6 @@ in
|
|||
services = {
|
||||
actual = {
|
||||
enable = true;
|
||||
package = inputs.actual-budget-server.packages.${system}.default;
|
||||
settings = {
|
||||
port = 31000;
|
||||
hostname = "127.0.0.1";
|
||||
|
|
|
|||
|
|
@ -1,19 +1,15 @@
|
|||
{
|
||||
services = {
|
||||
blueman.enable = true;
|
||||
};
|
||||
services.blueman.enable = true;
|
||||
|
||||
hardware = {
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
settings.General = {
|
||||
experimental = true;
|
||||
Privacy = "device";
|
||||
JustWorksRepairing = "always";
|
||||
Class = "0x000100";
|
||||
FastConnectable = true;
|
||||
};
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = true;
|
||||
settings.General = {
|
||||
experimental = true;
|
||||
Privacy = "device";
|
||||
JustWorksRepairing = "always";
|
||||
Class = "0x000100";
|
||||
FastConnectable = true;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -27,9 +27,27 @@ in
|
|||
protontricks.enable = true;
|
||||
gamescopeSession.enable = true;
|
||||
extest.enable = true;
|
||||
extraCompatPackages = with pkgs; [
|
||||
proton-ge-bin
|
||||
];
|
||||
extraCompatPackages =
|
||||
with pkgs;
|
||||
let
|
||||
proton-ge-10-25 =
|
||||
(proton-ge-bin.overrideAttrs (
|
||||
_: finalAttrs: {
|
||||
pname = "proton-ge-bin";
|
||||
version = "GE-Proton10-25";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/GloriousEggroll/proton-ge-custom/releases/download/${finalAttrs.version}/${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-RKko4QMxtnuC1SAHTSEQGBzVyl3ywnirFSYJ1WKSY0k=";
|
||||
};
|
||||
}
|
||||
)).override
|
||||
{ steamDisplayName = "GE-Proton10-25"; };
|
||||
in
|
||||
[
|
||||
proton-ge-bin
|
||||
proton-ge-10-25
|
||||
];
|
||||
remotePlay.openFirewall = true;
|
||||
dedicatedServer.openFirewall = true;
|
||||
localNetworkGameTransfers.openFirewall = true;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
optimise.automatic = true;
|
||||
gc = {
|
||||
automatic = true;
|
||||
dates = "weekly";
|
||||
dates = [ "03:15" ];
|
||||
options = "--delete-older-than 7d";
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,20 +1,29 @@
|
|||
{
|
||||
pkgs,
|
||||
inputs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (pkgs.stdenv.hostPlatform) system;
|
||||
pkgs-hyprland = inputs.hyprland.inputs.nixpkgs.legacyPackages.${system};
|
||||
wm =
|
||||
if config.programs.hyprland.enable then
|
||||
"hyprland"
|
||||
else if config.programs.niri.enable then
|
||||
"niri"
|
||||
else
|
||||
null;
|
||||
|
||||
pkgs-wm = if wm != null then inputs.${wm}.inputs.nixpkgs.legacyPackages.${system} else pkgs;
|
||||
in
|
||||
{
|
||||
hardware = {
|
||||
graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
package32 = pkgs-hyprland.pkgsi686Linux.mesa;
|
||||
package = pkgs-hyprland.mesa;
|
||||
package32 = pkgs-wm.pkgsi686Linux.mesa;
|
||||
package = pkgs-wm.mesa;
|
||||
extraPackages = with pkgs; [
|
||||
intel-media-driver # LIBVA_DRIVER_NAME=iHD
|
||||
libva-vdpau-driver
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
}:
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
inherit (config.systemConf) username;
|
||||
|
||||
hyprlandEnabled = config.programs.hyprland.enable;
|
||||
in
|
||||
|
|
@ -18,14 +19,6 @@ in
|
|||
portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland;
|
||||
};
|
||||
|
||||
xdg.portal = mkIf hyprlandEnabled {
|
||||
enable = true;
|
||||
xdgOpenUsePortal = true;
|
||||
extraPortals = [
|
||||
pkgs.xdg-desktop-portal-gtk
|
||||
];
|
||||
};
|
||||
|
||||
environment.sessionVariables = mkIf hyprlandEnabled {
|
||||
NIXOS_OZONE_WL = "1";
|
||||
WLR_NO_HARDWARE_CURSORS = "1";
|
||||
|
|
@ -39,15 +32,6 @@ in
|
|||
hyprpicker
|
||||
hyprshot
|
||||
kitty
|
||||
|
||||
# qt5.qtwayland
|
||||
# qt6.qtwayland
|
||||
wlogout
|
||||
wl-clipboard
|
||||
|
||||
# Util
|
||||
grim
|
||||
slurp
|
||||
]
|
||||
);
|
||||
|
||||
|
|
@ -59,4 +43,8 @@ in
|
|||
];
|
||||
};
|
||||
};
|
||||
|
||||
home-manager.users."${username}" = mkIf hyprlandEnabled {
|
||||
imports = [ ../../home/user/hyprland.nix ];
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@
|
|||
LC_TELEPHONE = "en_US.UTF-8";
|
||||
LC_TIME = "en_US.UTF-8";
|
||||
};
|
||||
|
||||
supportedLocales = [ "en_US.UTF-8/UTF-8" ];
|
||||
supportedLocales = [
|
||||
"en_US.UTF-8/UTF-8"
|
||||
];
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ in
|
|||
];
|
||||
};
|
||||
|
||||
systemd.services."phpfpm-nextcloud".postStart = ''
|
||||
systemd.services."phpfpm-nextcloud".postStart = mkIf config.services.nextcloud.enable ''
|
||||
${config.services.nextcloud.occ}/bin/nextcloud-occ config:app:set recognize node_binary --value '${lib.getExe pkgs.nodejs_22}'
|
||||
${config.services.nextcloud.occ}/bin/nextcloud-occ config:app:set recognize tensorflow.purejs --value 'true'
|
||||
'';
|
||||
|
|
@ -112,7 +112,7 @@ in
|
|||
};
|
||||
};
|
||||
|
||||
services.nextcloud-whiteboard-server = {
|
||||
services.nextcloud-whiteboard-server = mkIf config.services.nextcloud.enable {
|
||||
enable = true;
|
||||
settings = {
|
||||
NEXTCLOUD_URL = "http${optionalString https "s"}://${hostname}";
|
||||
|
|
|
|||
313
system/modules/niri.nix
Normal file
313
system/modules/niri.nix
Normal file
|
|
@ -0,0 +1,313 @@
|
|||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib)
|
||||
getExe
|
||||
pipe
|
||||
map
|
||||
listToAttrs
|
||||
genList
|
||||
;
|
||||
inherit (builtins) fetchurl;
|
||||
inherit (config.systemConf) username;
|
||||
|
||||
# nvidia-offload-enabled = config.hardware.nvidia.prime.offload.enableOffloadCmd;
|
||||
prefix = "nvidia-offload";
|
||||
terminal = "ghostty";
|
||||
browser = "zen-twilight";
|
||||
|
||||
brightnessStep = builtins.toString 10;
|
||||
volumeStep = builtins.toString 4;
|
||||
|
||||
execOnceScript = pkgs.writeShellScript "startupExec" ''
|
||||
# Fix nemo open in terminal
|
||||
dconf write /org/cinnamon/desktop/applications/terminal/exec "''\'${terminal}''\'" &
|
||||
dconf write /org/cinnamon/desktop/applications/terminal/exec-arg "''\'''\'" &
|
||||
|
||||
# Hint dark theme
|
||||
dconf write /org/gnome/desktop/interface/color-scheme '"prefer-dark"' &
|
||||
|
||||
systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP QT_QPA_PLATFORMTHEME &
|
||||
'';
|
||||
|
||||
niri_peekaboo = fetchurl {
|
||||
url = "https://raw.githubusercontent.com/heyoeyo/niri_tweaks/refs/heads/main/niri_peekaboo.py";
|
||||
sha256 = "sha256:0l1x0bsa9vr089jhzgcz3xbh1hg15sw6njb91q0j9pdbrp2ym3dc";
|
||||
};
|
||||
in
|
||||
{
|
||||
programs.niri = {
|
||||
enable = true;
|
||||
package = pkgs.niri-unstable;
|
||||
};
|
||||
|
||||
home-manager.users."${username}" =
|
||||
{
|
||||
osConfig,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
let
|
||||
rofiWall = import ../../home/scripts/rofiwall.nix { inherit config pkgs; };
|
||||
rbwSelector = import ../../home/scripts/rbwSelector.nix { inherit pkgs; };
|
||||
rNiri = pkgs.writeShellScriptBin "rNiri" ''
|
||||
NIRI_SOCKET="/run/user/1000/$(ls /run/user/1000 | grep niri | head -n 1)" niri $@
|
||||
'';
|
||||
toggleWlogout = pkgs.writeShellScript "toggleWlogout" ''
|
||||
if ${pkgs.busybox}/bin/pgrep wlogout > /dev/null; then
|
||||
${pkgs.busybox}/bin/pkill wlogout
|
||||
else
|
||||
${config.programs.wlogout.package}/bin/wlogout --protocol layer-shell
|
||||
fi
|
||||
'';
|
||||
in
|
||||
with config.lib.niri.actions;
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
nautilus # xdg-desktop-portal-gnome file picker
|
||||
rNiri
|
||||
];
|
||||
|
||||
xdg.portal = {
|
||||
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
|
||||
};
|
||||
|
||||
services.nfsm.enable = false;
|
||||
|
||||
programs.niri.package = osConfig.programs.niri.package;
|
||||
programs.niri.settings = {
|
||||
spawn-at-startup = [
|
||||
{ argv = [ "${execOnceScript}" ]; }
|
||||
];
|
||||
screenshot-path = "~/Pictures/Screenshots/%Y-%m-%d_%H-%M-%S.png";
|
||||
|
||||
prefer-no-csd = true;
|
||||
|
||||
xwayland-satellite = {
|
||||
enable = true;
|
||||
path = getExe pkgs.xwayland-satellite-unstable;
|
||||
};
|
||||
|
||||
animations = {
|
||||
workspace-switch.kind.spring = {
|
||||
damping-ratio = 1.0;
|
||||
stiffness = 1000;
|
||||
epsilon = 0.0001;
|
||||
};
|
||||
|
||||
window-open.kind.easing = {
|
||||
duration-ms = 150;
|
||||
curve = "ease-out-expo";
|
||||
};
|
||||
|
||||
window-close.kind.easing = {
|
||||
duration-ms = 150;
|
||||
curve = "ease-out-quad";
|
||||
};
|
||||
|
||||
window-resize.kind.spring = {
|
||||
damping-ratio = 1.0;
|
||||
stiffness = 800;
|
||||
epsilon = 0.0001;
|
||||
};
|
||||
};
|
||||
|
||||
layout.border = {
|
||||
enable = true;
|
||||
width = 4;
|
||||
active.gradient = {
|
||||
from = "#24273A";
|
||||
to = "#EBDBB2";
|
||||
angle = 45;
|
||||
in' = "oklab";
|
||||
relative-to = "window";
|
||||
};
|
||||
inactive.gradient = {
|
||||
from = "#24273A";
|
||||
to = "#24273A";
|
||||
angle = 45;
|
||||
in' = "oklab";
|
||||
relative-to = "window";
|
||||
};
|
||||
};
|
||||
|
||||
window-rules = [
|
||||
# Global
|
||||
{
|
||||
geometry-corner-radius =
|
||||
let
|
||||
round = 12.0;
|
||||
in
|
||||
{
|
||||
bottom-left = round;
|
||||
bottom-right = round;
|
||||
top-left = round;
|
||||
top-right = round;
|
||||
};
|
||||
clip-to-geometry = true;
|
||||
opacity = 1.0;
|
||||
draw-border-with-background = false;
|
||||
}
|
||||
# Float
|
||||
{
|
||||
matches = [
|
||||
{ app-id = "^xdg-desktop-portal-gtk$"; }
|
||||
{ app-id = "^(org.gnome.Nautilus)$"; }
|
||||
];
|
||||
open-floating = true;
|
||||
}
|
||||
];
|
||||
|
||||
input = {
|
||||
focus-follows-mouse.enable = true;
|
||||
mouse.accel-speed = -0.1;
|
||||
keyboard = {
|
||||
repeat-delay = 250;
|
||||
repeat-rate = 35;
|
||||
};
|
||||
};
|
||||
|
||||
binds =
|
||||
let
|
||||
sh = spawn "sh" "-c";
|
||||
in
|
||||
{
|
||||
# ==== Launch ==== #
|
||||
"Mod+Return".action = sh ''${prefix} ${terminal}'';
|
||||
"Mod+F".action = sh ''${browser}'';
|
||||
"Mod+E".action = sh ''${prefix} ${terminal} -e yazi'';
|
||||
"Mod+Ctrl+P".action = spawn "${rbwSelector}";
|
||||
"Mod+Ctrl+M".action = spawn "${toggleWlogout}";
|
||||
|
||||
# Rofi
|
||||
"Mod+Ctrl+W".action = spawn "${rofiWall}";
|
||||
"Alt+Space".action = spawn "rofi" "-config" "~/.config/rofi/apps.rasi" "-show" "drun";
|
||||
"Mod+Period".action = spawn "rofi" "-modi" "emoji" "-show" "emoji";
|
||||
"Mod+Ctrl+C".action = spawn "rofi" "-modi" "calc" "-show" "calc" "-no-show-match" "-no-sort";
|
||||
|
||||
# ==== Media ==== #
|
||||
"XF86AudioPrev".action = spawn "playerctl" "previous";
|
||||
"XF86AudioNext".action = spawn "playerctl" "next";
|
||||
"Mod+Ctrl+Comma".action = spawn "playerctl" "previous";
|
||||
"Mod+Ctrl+Period".action = spawn "playerctl" "next";
|
||||
"XF86AudioPlay".action = spawn "playerctl" "play-pause";
|
||||
"XF86AudioStop".action = spawn "playerctl" "stop";
|
||||
"XF86AudioMute".action = spawn "wpctl" "set-mute" "@DEFAULT_SINK@" "toggle";
|
||||
"XF86AudioRaiseVolume".action =
|
||||
sh ''wpctl set-mute @DEFAULT_SINK@ 0 && wpctl set-volume @DEFAULT_SINK@ ${volumeStep}%+'';
|
||||
"XF86AudioLowerVolume".action =
|
||||
sh ''wpctl set-mute @DEFAULT_SINK@ 0 && wpctl set-volume @DEFAULT_SINK@ ${volumeStep}%-'';
|
||||
"XF86MonBrightnessDown".action = spawn "brightnessctl set ${brightnessStep}%-";
|
||||
"XF86MonBrightnessUp".action = spawn "brightnessctl set ${brightnessStep}%+";
|
||||
|
||||
# ==== Movement ==== #
|
||||
# Mouse Scroll
|
||||
"Mod+WheelScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-workspace-down;
|
||||
};
|
||||
"Mod+WheelScrollUp" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-workspace-up;
|
||||
};
|
||||
"Mod+Shift+WheelScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-column-or-monitor-right;
|
||||
};
|
||||
"Mod+Shift+WheelScrollUp" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-column-or-monitor-left;
|
||||
};
|
||||
"Mod+WheelScrollRight".action = focus-column-right;
|
||||
"Mod+WheelScrollLeft".action = focus-column-left;
|
||||
|
||||
# Touchpad
|
||||
"TouchpadScrollDown" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-window-or-workspace-down;
|
||||
};
|
||||
"TouchpadScrollUp" = {
|
||||
cooldown-ms = 150;
|
||||
action = focus-window-or-workspace-up;
|
||||
};
|
||||
|
||||
# Monitor Focus
|
||||
"Mod+Ctrl+H".action = focus-monitor-left;
|
||||
"Mod+Ctrl+L".action = focus-monitor-right;
|
||||
|
||||
# Workspace Focus
|
||||
"Mod+Ctrl+J".action = focus-workspace-down;
|
||||
"Mod+Ctrl+K".action = focus-workspace-up;
|
||||
|
||||
# General Focus
|
||||
"Mod+J".action = focus-window-or-workspace-down;
|
||||
"Mod+K".action = focus-window-or-workspace-up;
|
||||
"Mod+H".action = focus-column-or-monitor-left;
|
||||
"Mod+L".action = focus-column-or-monitor-right;
|
||||
|
||||
# Workspace Move
|
||||
"Mod+Ctrl+Shift+J".action = move-workspace-down;
|
||||
"Mod+Ctrl+Shift+K".action = move-workspace-up;
|
||||
|
||||
# Window & Column Move
|
||||
"Mod+Shift+J".action = move-window-down-or-to-workspace-down;
|
||||
"Mod+Shift+K".action = move-window-up-or-to-workspace-up;
|
||||
"Mod+Shift+L".action = move-column-right-or-to-monitor-right;
|
||||
"Mod+Shift+H".action = move-column-left-or-to-monitor-left;
|
||||
|
||||
# Window Comsume
|
||||
"Mod+Ctrl+Shift+L".action = consume-or-expel-window-right;
|
||||
"Mod+Ctrl+Shift+H".action = consume-or-expel-window-left;
|
||||
|
||||
# ==== Action ==== #
|
||||
# General
|
||||
"Mod+C".action = center-window;
|
||||
"Mod+O".action = toggle-overview;
|
||||
"Mod+Q".action = close-window;
|
||||
"F11".action = if config.services.nfsm.enable then (spawn "nfsm-cli") else fullscreen-window;
|
||||
"Mod+Shift+slash".action = show-hotkey-overlay;
|
||||
"Mod+Ctrl+Shift+P".action = spawn "${getExe pkgs.python312}" "${niri_peekaboo}";
|
||||
|
||||
# Column Scale
|
||||
"Mod+W".action = switch-preset-column-width;
|
||||
"Mod+S".action = switch-preset-window-height;
|
||||
"Mod+P".action = expand-column-to-available-width;
|
||||
"Mod+M".action = maximize-column;
|
||||
"Mod+Ctrl+S".action = reset-window-height;
|
||||
|
||||
# Float
|
||||
"Mod+V".action = toggle-window-floating;
|
||||
"Mod+Ctrl+V".action = switch-focus-between-floating-and-tiling;
|
||||
|
||||
# Screenshot
|
||||
"Mod+Shift+S".action.screenshot = [ { show-pointer = false; } ];
|
||||
"Ctrl+Shift+S".action.screenshot-window = [
|
||||
{
|
||||
write-to-disk = false;
|
||||
}
|
||||
];
|
||||
"Mod+Ctrl+Shift+S".action.screenshot-screen = [
|
||||
{
|
||||
write-to-disk = false;
|
||||
}
|
||||
];
|
||||
}
|
||||
# Map Mod+{1 ~ 9} to workspace{1 ~ 9}
|
||||
// (pipe 9 [
|
||||
(x: genList (i: i + 1) x)
|
||||
(
|
||||
x:
|
||||
map (i: {
|
||||
name = "Mod+${toString i}";
|
||||
value.action = focus-workspace i;
|
||||
}) x
|
||||
)
|
||||
(x: listToAttrs x)
|
||||
]);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -5,11 +5,11 @@
|
|||
settings = {
|
||||
substituters = [
|
||||
"https://yazi.cachix.org"
|
||||
"https://cache.net.dn/dn-main"
|
||||
# "https://cache.net.dn/dn-main"
|
||||
];
|
||||
trusted-public-keys = [
|
||||
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
|
||||
"dn-main:ZjQmZEOWpe0TjZgHGwkgtPdOUXpN82RL9wy30EW1V7k="
|
||||
# "dn-main:ZjQmZEOWpe0TjZgHGwkgtPdOUXpN82RL9wy30EW1V7k="
|
||||
];
|
||||
warn-dirty = false;
|
||||
trusted-users = [
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
../plymouth.nix
|
||||
../polkit.nix
|
||||
../hyprland.nix
|
||||
../niri.nix
|
||||
];
|
||||
|
||||
programs.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
|
||||
|
|
|
|||
140
system/modules/shells/noctalia/bar.nix
Normal file
140
system/modules/shells/noctalia/bar.nix
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
{
|
||||
backgroundOpacity = 1;
|
||||
capsuleOpacity = 1;
|
||||
density = "comfortable";
|
||||
exclusive = true;
|
||||
floating = true;
|
||||
marginHorizontal = 0.25;
|
||||
marginVertical = 0.25;
|
||||
outerCorners = false;
|
||||
postition = "top";
|
||||
showCapsule = true;
|
||||
widgets = {
|
||||
center = [
|
||||
{
|
||||
colorizeIcons = false;
|
||||
hideMode = "hidden";
|
||||
id = "ActiveWindow";
|
||||
maxWidth = 145;
|
||||
scrollingMode = "hover";
|
||||
showIcon = true;
|
||||
useFixedWidth = false;
|
||||
}
|
||||
];
|
||||
left = [
|
||||
{
|
||||
icon = "rocket";
|
||||
id = "CustomButton";
|
||||
leftClickExec = "noctalia-shell ipc call launcher toggle";
|
||||
leftClickUpdateText = false;
|
||||
maxTextLength = {
|
||||
horizontal = 10;
|
||||
vertical = 10;
|
||||
};
|
||||
middleClickExec = "";
|
||||
middleClickUpdateText = false;
|
||||
parseJson = false;
|
||||
rightClickExec = "";
|
||||
rightClickUpdateText = false;
|
||||
textCollapse = "";
|
||||
textCommand = "";
|
||||
textIntervalMs = 3000;
|
||||
textStream = false;
|
||||
wheelDownExec = "";
|
||||
wheelDownUpdateText = false;
|
||||
wheelExec = "";
|
||||
wheelMode = "unified";
|
||||
wheelUpExec = "";
|
||||
wheelUpUpdateText = false;
|
||||
wheelUpdateText = false;
|
||||
}
|
||||
{
|
||||
customFont = "";
|
||||
formatHorizontal = "HH:mm ddd, MMM dd";
|
||||
formatVertical = "HH mm - dd MM";
|
||||
id = "Clock";
|
||||
useCustomFont = false;
|
||||
usePrimaryColor = true;
|
||||
}
|
||||
{
|
||||
characterCount = 4;
|
||||
followFocusedScreen = false;
|
||||
hideUnoccupied = false;
|
||||
id = "Workspace";
|
||||
labelMode = "index";
|
||||
}
|
||||
{
|
||||
hideMode = "hidden";
|
||||
hideWhenIdle = false;
|
||||
id = "MediaMini";
|
||||
maxWidth = 250;
|
||||
scrollingMode = "hover";
|
||||
showAlbumArt = true;
|
||||
showArtistFirst = false;
|
||||
showProgressRing = true;
|
||||
showVisualizer = true;
|
||||
useFixedWidth = false;
|
||||
visualizerType = "linear";
|
||||
}
|
||||
];
|
||||
right = [
|
||||
{
|
||||
blacklist = [
|
||||
"Bluetooth*"
|
||||
];
|
||||
colorizeIcons = false;
|
||||
drawerEnabled = false;
|
||||
id = "Tray";
|
||||
pinned = [
|
||||
];
|
||||
}
|
||||
{
|
||||
diskPath = "/";
|
||||
id = "SystemMonitor";
|
||||
showCpuTemp = true;
|
||||
showCpuUsage = true;
|
||||
showDiskUsage = false;
|
||||
showMemoryAsPercent = false;
|
||||
showMemoryUsage = true;
|
||||
showNetworkStats = false;
|
||||
usePrimaryColor = false;
|
||||
}
|
||||
{
|
||||
id = "ScreenRecorder";
|
||||
}
|
||||
{
|
||||
id = "KeepAwake";
|
||||
}
|
||||
{
|
||||
displayMode = "onhover";
|
||||
id = "Volume";
|
||||
}
|
||||
{
|
||||
displayMode = "onhover";
|
||||
id = "Brightness";
|
||||
}
|
||||
{
|
||||
displayMode = "onhover";
|
||||
id = "VPN";
|
||||
}
|
||||
{
|
||||
displayMode = "onhover";
|
||||
id = "Bluetooth";
|
||||
}
|
||||
{
|
||||
hideWhenZero = true;
|
||||
id = "NotificationHistory";
|
||||
showUnreadBadge = true;
|
||||
}
|
||||
{
|
||||
colorizeDistroLogo = false;
|
||||
colorizeSystemIcon = "primary";
|
||||
customIconPath = "";
|
||||
enableColorization = true;
|
||||
icon = "noctalia";
|
||||
id = "ControlCenter";
|
||||
useDistroLogo = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
55
system/modules/shells/noctalia/controlCenter.nix
Normal file
55
system/modules/shells/noctalia/controlCenter.nix
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
{
|
||||
cards = [
|
||||
{
|
||||
enabled = true;
|
||||
id = "profile-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "shortcuts-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "audio-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "weather-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "media-sysmon-card";
|
||||
}
|
||||
];
|
||||
position = "bottom_center";
|
||||
shortcuts = {
|
||||
left = [
|
||||
{
|
||||
id = "WiFi";
|
||||
}
|
||||
{
|
||||
id = "Bluetooth";
|
||||
}
|
||||
{
|
||||
id = "ScreenRecorder";
|
||||
}
|
||||
{
|
||||
id = "WallpaperSelector";
|
||||
}
|
||||
];
|
||||
right = [
|
||||
{
|
||||
id = "Notifications";
|
||||
}
|
||||
{
|
||||
id = "PowerProfile";
|
||||
}
|
||||
{
|
||||
id = "KeepAwake";
|
||||
}
|
||||
{
|
||||
id = "NightLight";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
282
system/modules/shells/noctalia/default.nix
Normal file
282
system/modules/shells/noctalia/default.nix
Normal file
|
|
@ -0,0 +1,282 @@
|
|||
{ lib, config, ... }:
|
||||
let
|
||||
|
||||
inherit (config.systemConf) username;
|
||||
inherit (lib) mkForce mapAttrs;
|
||||
in
|
||||
{
|
||||
|
||||
# ==== Extra Services Settings ==== #
|
||||
services.power-profiles-daemon.enable = true;
|
||||
networking.networkmanager.enable = true;
|
||||
services.upower.enable = true;
|
||||
hardware.bluetooth.enable = true;
|
||||
# ================================= #
|
||||
|
||||
home-manager.users.${username} =
|
||||
{ config, ... }:
|
||||
{
|
||||
# ==== Disabled Services ==== #
|
||||
services.swww.enable = mkForce false; # Wallpaper
|
||||
programs.waybar.enable = mkForce false; # Bar
|
||||
services.swayidle.enable = mkForce false; # Idle
|
||||
services.sunsetr.enable = mkForce false; # Bluelight filter
|
||||
programs.hyprlock.enable = mkForce false; # Lock
|
||||
services.swaync.enable = mkForce false; # Notification daemon
|
||||
|
||||
systemd.user.services.noctalia-shell.Service.Environment = [
|
||||
"QT_QPA_PLATFORMTHEME=gtk3"
|
||||
];
|
||||
|
||||
programs.noctalia-shell = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
settings = {
|
||||
settingsVersion = 25;
|
||||
appLauncher = {
|
||||
customLaunchPrefix = "";
|
||||
customLaunchPrefixEnabled = false;
|
||||
enableClipPreview = true;
|
||||
enableClipboardHistory = true;
|
||||
pinnedExecs = [
|
||||
];
|
||||
position = "top_center";
|
||||
sortByMostUsed = true;
|
||||
terminalCommand = "ghostty -e";
|
||||
useApp2Unit = false;
|
||||
viewMode = "list";
|
||||
};
|
||||
audio = {
|
||||
cavaFrameRate = 30;
|
||||
externalMixer = "pwvucontrol";
|
||||
mprisBlacklist = [
|
||||
];
|
||||
preferredPlayer = "mpv";
|
||||
visualizerQuality = "high";
|
||||
visualizerType = "linear";
|
||||
volumeOverdrive = false;
|
||||
volumeStep = 5;
|
||||
};
|
||||
bar = import ./bar.nix;
|
||||
brightness = {
|
||||
brightnessStep = 5;
|
||||
enableDdcSupport = false;
|
||||
enforceMinium = true;
|
||||
};
|
||||
calendar = {
|
||||
cards = [
|
||||
{
|
||||
enabled = true;
|
||||
id = "banner-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "calendar-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "timer-card";
|
||||
}
|
||||
{
|
||||
enabled = true;
|
||||
id = "weather-card";
|
||||
}
|
||||
];
|
||||
};
|
||||
changelog = {
|
||||
lastSeenVersion = "";
|
||||
};
|
||||
colorSchemes = {
|
||||
darkMode = true;
|
||||
generateTemplatesForPredefined = true;
|
||||
manualSunrise = "06:30";
|
||||
manualSunset = "18:30";
|
||||
matugenSchemeType = "scheme-neutral";
|
||||
predefinedScheme = "Noctalia (default)";
|
||||
schedulingMode = "off";
|
||||
useWallpaperColors = true;
|
||||
};
|
||||
controlCenter = import ./controlCenter.nix;
|
||||
dock = {
|
||||
backgroundOpacity = 1;
|
||||
colorizeIcons = false;
|
||||
displayMode = "auto_hide";
|
||||
enabled = true;
|
||||
floatingRatio = 1;
|
||||
monitors = [
|
||||
];
|
||||
onlySameOutput = true;
|
||||
pinnedApps = [
|
||||
];
|
||||
radiusRatio = 0.68;
|
||||
size = 1;
|
||||
};
|
||||
general = {
|
||||
allowPanelsOnScreenWithoutBar = true;
|
||||
animationDisabled = false;
|
||||
animationSpeed = 1.5;
|
||||
avatarImage = "${config.home.homeDirectory}/.face";
|
||||
compactLockScreen = false;
|
||||
dimmerOpacity = 0.4;
|
||||
enableShadows = true;
|
||||
forceBlackScreenCorners = true;
|
||||
language = "";
|
||||
lockOnSuspend = true;
|
||||
radiusRatio = 1;
|
||||
scaleRatio = 1;
|
||||
screenRadiusRatio = 1.09;
|
||||
shadowDirection = "bottom_right";
|
||||
shadowOffsetX = 2;
|
||||
shadowOffsetY = 3;
|
||||
showHibernateOnLockScreen = false;
|
||||
showScreenCorners = true;
|
||||
};
|
||||
hooks = {
|
||||
enabled = false;
|
||||
darkModeChange = "";
|
||||
wallpaperChange = "";
|
||||
};
|
||||
location = {
|
||||
analogClockInCalendar = false;
|
||||
firstDayOfWeek = -1;
|
||||
name = "Taipei, TW";
|
||||
showCalendarEvents = true;
|
||||
showCalendarWeather = true;
|
||||
showWeekNumberInCalendar = false;
|
||||
use12hourFormat = false;
|
||||
useFahrenheit = false;
|
||||
weatherEnabled = true;
|
||||
weatherShowEffects = true;
|
||||
};
|
||||
network = {
|
||||
wifiEnabled = true;
|
||||
};
|
||||
nightLight = {
|
||||
enabled = true;
|
||||
autoSchedule = true;
|
||||
dayTemp = "6000";
|
||||
nightTemp = "5500";
|
||||
forced = false;
|
||||
manualSunrise = "06:30";
|
||||
manualSunset = "18:30";
|
||||
};
|
||||
notifications = {
|
||||
backgroundOpacity = 1;
|
||||
criticalUrgencyDuration = 15;
|
||||
enableKeyboardLayoutToast = true;
|
||||
enabled = true;
|
||||
location = "bottom_right";
|
||||
lowUrgencyDuration = 3;
|
||||
monitors = [
|
||||
];
|
||||
normalUrgencyDuration = 8;
|
||||
overlayLayer = true;
|
||||
respectExpireTimeout = false;
|
||||
};
|
||||
osd = {
|
||||
autoHideMs = 1500;
|
||||
backgroundOpacity = 1;
|
||||
enabled = true;
|
||||
enabledTypes = [
|
||||
0
|
||||
1
|
||||
2
|
||||
];
|
||||
location = "right";
|
||||
monitors = [
|
||||
];
|
||||
overlayLayer = true;
|
||||
};
|
||||
screenRecorder = {
|
||||
audioCodec = "opus";
|
||||
audioSource = "default_output";
|
||||
colorRange = "limited";
|
||||
directory = "${config.home.homeDirectory}/Videos";
|
||||
frameRate = 60;
|
||||
quality = "very_high";
|
||||
showCursor = true;
|
||||
videoCodec = "h264";
|
||||
videoSource = "portal";
|
||||
};
|
||||
sessionMenu = import ./sessionMenu.nix;
|
||||
systemMonitor = import ./systemMonitor.nix;
|
||||
templates = import ./templates.nix;
|
||||
ui = {
|
||||
fontDefault = config.stylix.fonts.sansSerif.name;
|
||||
fontDefaultScale = 1;
|
||||
fontFixed = config.stylix.fonts.monospace.name;
|
||||
fontFixedScale = 1;
|
||||
panelBackgroundOpacity = 1;
|
||||
panelsAttachedToBar = true;
|
||||
settingsPanelAttachToBar = true;
|
||||
tooltipsEnabled = true;
|
||||
};
|
||||
wallpaper = {
|
||||
directory = "${config.home.homeDirectory}/Pictures/Wallpapers";
|
||||
enableMultiMonitorDirectories = false;
|
||||
enabled = true;
|
||||
fillColor = "#000000";
|
||||
fillMode = "crop";
|
||||
hideWallpaperFilenames = true;
|
||||
monitorDirectories = [
|
||||
];
|
||||
overviewEnabled = false;
|
||||
panelPosition = "follow_bar";
|
||||
randomEnabled = false;
|
||||
randomIntervalSec = 300;
|
||||
recursiveSearch = false;
|
||||
setWallpaperOnAllMonitors = true;
|
||||
transitionDuration = 1500;
|
||||
transitionEdgeSmoothness = 0.05;
|
||||
transitionType = "random";
|
||||
useWallhaven = false;
|
||||
wallhavenCategories = "111";
|
||||
wallhavenOrder = "desc";
|
||||
wallhavenPurity = "100";
|
||||
wallhavenQuery = "";
|
||||
wallhavenResolutionHeight = "";
|
||||
wallhavenResolutionMode = "atleast";
|
||||
wallhavenResolutionWidth = "";
|
||||
wallhavenSorting = "relevance";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs.niri.settings =
|
||||
with config.lib.niri.actions;
|
||||
let
|
||||
noctalia = spawn "noctalia-shell" "ipc" "call";
|
||||
in
|
||||
{
|
||||
binds = mapAttrs (name: value: mkForce value) {
|
||||
# Core
|
||||
"Mod+Slash".action = noctalia "controlCenter" "toggle";
|
||||
"Alt+Space".action = noctalia "launcher" "toggle";
|
||||
"Mod+Ctrl+M".action = noctalia "lockScreen" "lock";
|
||||
|
||||
# Utilities
|
||||
"Mod+Comma".action = noctalia "launcher" "clipboard";
|
||||
"Mod+Period".action = noctalia "launcher" "emoji";
|
||||
"Mod+F12".action = noctalia "screenRecorder" "toggle";
|
||||
"Mod+N".action = noctalia "notifications" "toggleHistory";
|
||||
"Mod+Ctrl+N".action = noctalia "notifications" "toggleDND";
|
||||
"Mod+Ctrl+W".action = noctalia "wallpaper" "toggle";
|
||||
"Mod+Ctrl+C".action = noctalia "launcher" "calculator";
|
||||
"Mod+Ctrl+Slash".action = noctalia "wallpaper" "random";
|
||||
|
||||
# Media
|
||||
"XF86AudioPlay".action = noctalia "media" "playPause";
|
||||
"XF86AudioStop".action = noctalia "media" "pause";
|
||||
"XF86AudioPrev".action = noctalia "media" "previous";
|
||||
"XF86AudioNext".action = noctalia "media" "next";
|
||||
"Mod+Ctrl+Comma".action = noctalia "media" "previous";
|
||||
"Mod+Ctrl+Period".action = noctalia "media" "next";
|
||||
"XF86AudioMute".action = noctalia "volume" "muteOutput";
|
||||
"XF86AudioRaiseVolume".action = noctalia "volume" "increase";
|
||||
"XF86AudioLowerVolume".action = noctalia "volume" "decrease";
|
||||
"XF86MonBrightnessDown".action = noctalia "brightness" "decrease";
|
||||
"XF86MonBrightnessUp".action = noctalia "brightness" "increase";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
38
system/modules/shells/noctalia/sessionMenu.nix
Normal file
38
system/modules/shells/noctalia/sessionMenu.nix
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
{
|
||||
countdownDuration = 10000;
|
||||
enableCountdown = true;
|
||||
position = "bottom_center";
|
||||
powerOptions = [
|
||||
{
|
||||
action = "lock";
|
||||
countdownEnabled = true;
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
action = "suspend";
|
||||
countdownEnabled = true;
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
action = "hibernate";
|
||||
countdownEnabled = true;
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
action = "reboot";
|
||||
countdownEnabled = true;
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
action = "logout";
|
||||
countdownEnabled = true;
|
||||
enabled = true;
|
||||
}
|
||||
{
|
||||
action = "shutdown";
|
||||
countdownEnabled = true;
|
||||
enabled = true;
|
||||
}
|
||||
];
|
||||
showHeader = false;
|
||||
}
|
||||
18
system/modules/shells/noctalia/systemMonitor.nix
Normal file
18
system/modules/shells/noctalia/systemMonitor.nix
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
cpuCriticalThreshold = 90;
|
||||
cpuPollingInterval = 3000;
|
||||
cpuWarningThreshold = 80;
|
||||
criticalColor = "";
|
||||
diskCriticalThreshold = 90;
|
||||
diskPollingInterval = 3000;
|
||||
diskWarningThreshold = 80;
|
||||
memCriticalThreshold = 90;
|
||||
memPollingInterval = 3000;
|
||||
memWarningThreshold = 80;
|
||||
networkPollingInterval = 3000;
|
||||
tempCriticalThreshold = 90;
|
||||
tempPollingInterval = 3000;
|
||||
tempWarningThreshold = 80;
|
||||
useCustomColors = false;
|
||||
warningColor = "";
|
||||
}
|
||||
22
system/modules/shells/noctalia/templates.nix
Normal file
22
system/modules/shells/noctalia/templates.nix
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
alacritty = false;
|
||||
cava = false;
|
||||
code = false;
|
||||
discord = false;
|
||||
emacs = false;
|
||||
enableUserTemplates = false;
|
||||
foot = false;
|
||||
fuzzel = false;
|
||||
ghostty = false;
|
||||
gtk = false;
|
||||
kcolorscheme = false;
|
||||
kitty = false;
|
||||
niri = false;
|
||||
pywalfox = false;
|
||||
qt = false;
|
||||
spicetify = false;
|
||||
telegram = false;
|
||||
vicinae = false;
|
||||
walker = false;
|
||||
wezterm = false;
|
||||
}
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
pavucontrol
|
||||
pwvucontrol
|
||||
playerctl
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ in
|
|||
enable = true;
|
||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-material-dark-medium.yaml";
|
||||
polarity = "dark";
|
||||
enableReleaseChecks = false;
|
||||
|
||||
fonts = {
|
||||
serif = config.stylix.fonts.monospace;
|
||||
|
|
@ -49,7 +50,6 @@ in
|
|||
noto-fonts-cjk-serif
|
||||
noto-fonts-color-emoji
|
||||
liberation_ttf
|
||||
# dfkai-sb
|
||||
sf-pro-display-bold
|
||||
];
|
||||
|
||||
|
|
@ -57,6 +57,8 @@ in
|
|||
};
|
||||
|
||||
home-manager.users."${username}" = {
|
||||
stylix.enableReleaseChecks = false;
|
||||
|
||||
stylix.targets.neovim.transparentBackground = {
|
||||
main = true;
|
||||
numberLine = true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue