From e1a08112a7358ae0ee9cf4b5ecd7ad84b5ff90ae Mon Sep 17 00:00:00 2001 From: Grey Jones Date: Sun, 6 Sep 2026 01:59:38 +0100 Subject: [PATCH] create shared niri config, refactor generic feature modules --- dotfiles/kitagawa/niri.kdl | 110 +------------ dotfiles/shared/niri-shared.kdl | 147 ++++++++++++++++++ .../vscode/keybindings.json | 0 .../{global => shared}/vscode/settings.json | 0 dotfiles/takamaki/easyeffects/easyeffectsrc | 3 +- .../takamaki/equibop/equicord-settings.json | 2 +- dotfiles/takamaki/niri.kdl | 111 +------------ flake.lock | 8 +- modules/components/shells/noctalia.nix | 2 - modules/components/window-managers/biri.nix | 116 ++++++-------- modules/components/window-managers/niri.nix | 35 ++--- modules/docs.nix | 7 +- .../applications/cli/color-converter.nix | 12 +- .../features/applications/cli/fastfetch.nix | 18 +-- modules/features/applications/gui/floorp.nix | 2 +- modules/features/applications/gui/fluxer.nix | 58 +++---- modules/features/applications/gui/kitty.nix | 20 +-- modules/features/applications/gui/remmina.nix | 20 ++- .../features/applications/gui/thunderbird.nix | 45 ++++++ modules/features/applications/gui/vscode.nix | 22 ++- .../features/hardware/steam-controller.nix | 6 +- modules/hosts/kitagawa/kitagawa.nix | 1 + modules/hosts/takamaki/takamaki.nix | 18 ++- 23 files changed, 353 insertions(+), 410 deletions(-) create mode 100644 dotfiles/shared/niri-shared.kdl rename dotfiles/{global => shared}/vscode/keybindings.json (100%) rename dotfiles/{global => shared}/vscode/settings.json (100%) create mode 100644 modules/features/applications/gui/thunderbird.nix diff --git a/dotfiles/kitagawa/niri.kdl b/dotfiles/kitagawa/niri.kdl index 96b6825..a0610c5 100644 --- a/dotfiles/kitagawa/niri.kdl +++ b/dotfiles/kitagawa/niri.kdl @@ -1,16 +1,7 @@ -include "./noctalia.kdl" - input { keyboard { - xkb { - layout "gb" - model "" - rules "" - variant "" - } repeat-delay 600 repeat-rate 25 - track-layout "global" } touchpad { tap @@ -25,8 +16,6 @@ input { accel-profile "flat" } } -screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" -prefer-no-csd overview { zoom 0.5; } layout { gaps 12 @@ -39,49 +28,13 @@ layout { focus-ring { width 1.25 } - border { off; } - shadow { - on - offset x=0 y=5 - softness 15 - spread 2 - draw-behind-window false - color "#00000070" - } center-focused-column "never" } -cursor { - xcursor-theme "Bibata-Modern-Ice" - xcursor-size 22 -} -hotkey-overlay { skip-at-startup; } binds { Mod+B hotkey-overlay-title="Open web browser (Floorp)" { spawn "floorp"; } Mod+C hotkey-overlay-title="Open calculator (Qalculate)" { spawn "qalculate-qt"; } - Mod+D hotkey-overlay-title="Application launcher" { spawn "noctalia" "msg" "panel-toggle" "launcher"; } Mod+E hotkey-overlay-title="Open file manager (Nautilus)" { spawn "nautilus" "-w"; } - Mod+Return hotkey-overlay-title="Open terminal (Kitty)" { spawn "kitty"; } - Mod+O hotkey-overlay-title="Open Obsidian" { spawn "obsidian"; } - Mod+Z hotkey-overlay-title="Apply NixOS config" { spawn "kitty" "zsh" "-i" "-c" "apply-config"; } - - Mod+K { show-hotkey-overlay; } - - Mod+Space { toggle-overview; } - Mod+Q { close-window; } - Mod+F { maximize-window-to-edges; } - Mod+Shift+F { fullscreen-window; } - Mod+Shift+E { quit; } - - Mod+L hotkey-overlay-title="Lock session" { spawn "noctalia" "msg" "session" "lock"; } - Mod+Shift+D hotkey-overlay-title="Edit desktop widgets" { spawn "noctalia" "msg" "desktop-widgets-edit"; } - Mod+Shift+B hotkey-overlay-title="Open bar settings" { spawn "noctalia" "msg" "settings-open" "bar"; } - Mod+Shift+S hotkey-overlay-title="Open settings" { spawn "noctalia" "msg" "settings-open"; } - Mod+Period hotkey-overlay-title="Open control center" { spawn "noctalia" "msg" "panel-toggle" "control-center"; } - Mod+Shift+P hotkey-overlay-title="Open power menu" { spawn "noctalia" "msg" "panel-toggle" "session"; } - Mod+V hotkey-overlay-title="Show clipboard helper" { spawn "noctalia" "msg" "panel-toggle" "clipboard"; } - Mod+P hotkey-overlay-title="Show power info" { spawn "noctalia" "msg" "panel-toggle" "control-center" "power"; } - Ctrl+Shift+Escape { spawn "noctalia" "msg" "panel-toggle" "control-center" "system"; } Mod+Comma { spawn "noctalia" "msg" "panel-toggle" "dunarand/bookmarks:panel" "search"; } Mod+TouchpadScrollUp cooldown-ms=250 { focus-workspace-up; } @@ -89,45 +42,13 @@ binds { Mod+TouchpadScrollLeft cooldown-ms=150 { focus-column-left; } Mod+TouchpadScrollRight cooldown-ms=150 { focus-column-right; } - Mod+Up { focus-workspace-up; } - Mod+Down { focus-workspace-down; } - Mod+Left { focus-column-left; } - Mod+Right { focus-column-right; } - - Mod+Shift+Up { move-window-to-workspace-up; } - Mod+Shift+Down { move-window-to-workspace-down; } - Mod+Shift+Left { move-column-left; } - Mod+Shift+Right { move-column-right; } - Mod+equal { set-column-width "+2%"; } Mod+minus { set-column-width "-2%"; } - XF86AudioLowerVolume { spawn "noctalia" "msg" "volume-down" "5"; } - XF86AudioRaiseVolume { spawn "noctalia" "msg" "volume-up" "5"; } - XF86AudioMute { spawn "noctalia" "msg" "volume-mute"; } - XF86AudioMicMute { spawn "noctalia" "msg" "mic-mute"; } - XF86MonBrightnessDown { spawn "noctalia" "msg" "brightness-down" "5"; } - XF86MonBrightnessUp { spawn "noctalia" "msg" "brightness-up" "5"; } - XF86WLAN { spawn-sh "rfkill toggle 0 || rfkill toggle 1"; } - XF86NotificationCenter { spawn "noctalia" "msg" "panel-toggle" "control-center" "notifications"; } - XF86Display { toggle-overview; } XF86Favorites { spawn "niri-toggle-dwt"; } - Print { screenshot; } - Shift+Print { screenshot-window; } - - Mod+Slash { spawn "niri-scratch-workspace-toggle"; } - Mod+Shift+Slash { move-window-to-workspace "x" focus=false; } } -workspace "x" { - hidden true -} -spawn-at-startup "noctalia" -spawn-at-startup "niri-listen-for-scratch-workspace-change" -spawn-at-startup "niri-clear-state" window-rule { - draw-border-with-background false geometry-corner-radius 2 - clip-to-geometry true } window-rule { match app-id="^floorp$" @@ -140,35 +61,6 @@ window-rule { match app-id="^kitty$" default-column-width { proportion 0.58; } } -gestures { hot-corners { off; }; } switch-events { - lid-close { spawn "bash" "-c" "noctalia msg session lock && systemctl hibernate"; } -} -animations { - on - slowdown 1.0 - workspace-switch { - spring damping-ratio=0.95 stiffness=600 epsilon=0.0001 - } - window-open { - duration-ms 125 - curve "ease-out-expo" - } - window-close { - duration-ms 125 - curve "ease-out-quad" - } - horizontal-view-movement { - spring damping-ratio=0.95 stiffness=600 epsilon=0.0001 - } - window-movement { - spring damping-ratio=0.9 stiffness=750 epsilon=0.0001 - } - window-resize { - spring damping-ratio=0.8 stiffness=650 epsilon=0.0001 - } -} -layer-rule { - match namespace="^noctalia-backdrop" - place-within-backdrop true + lid-close { spawn "systemctl hibernate"; } } \ No newline at end of file diff --git a/dotfiles/shared/niri-shared.kdl b/dotfiles/shared/niri-shared.kdl new file mode 100644 index 0000000..e0f1b10 --- /dev/null +++ b/dotfiles/shared/niri-shared.kdl @@ -0,0 +1,147 @@ +include "./noctalia.kdl" + +input { + keyboard { + xkb { + layout "gb" + model "" + rules "" + variant "" + } + repeat-delay 600 + repeat-rate 25 + track-layout "global" + numlock + } + focus-follows-mouse max-scroll-amount="0%" +} +prefer-no-csd +hotkey-overlay { skip-at-startup; } +screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" +cursor { + xcursor-theme "Bibata-Modern-Ice" + xcursor-size 22 +} +layout { + border { off; } + shadow { + on + offset x=10 y=10 + softness 25 + spread 5 + draw-behind-window false + color "#00000060" + } +} +binds { + Mod+D hotkey-overlay-title="Application launcher" { spawn "noctalia" "msg" "panel-toggle" "launcher"; } + Mod+Return hotkey-overlay-title="Open terminal (Kitty)" { spawn "kitty"; } + Mod+O hotkey-overlay-title="Open Obsidian" { spawn "obsidian"; } + Mod+Z hotkey-overlay-title="Apply NixOS / Home Manager config" { spawn "kitty" "zsh" "-i" "-c" "apply-config"; } + + Mod+K { show-hotkey-overlay; } + + Mod+Space { toggle-overview; } + Mod+Q { close-window; } + Mod+F { maximize-window-to-edges; } + Mod+Shift+F { fullscreen-window; } + Mod+Shift+E { quit; } + + Mod+L hotkey-overlay-title="Lock session" { spawn "noctalia" "msg" "session" "lock"; } + Mod+Shift+D hotkey-overlay-title="Edit desktop widgets" { spawn "noctalia" "msg" "desktop-widgets-edit"; } + Mod+Shift+B hotkey-overlay-title="Open bar settings" { spawn "noctalia" "msg" "settings-open" "bar"; } + Mod+Shift+S hotkey-overlay-title="Open settings" { spawn "noctalia" "msg" "settings-open"; } + Mod+Period hotkey-overlay-title="Open control center" { spawn "noctalia" "msg" "panel-toggle" "control-center"; } + Mod+Shift+P hotkey-overlay-title="Open power menu" { spawn "noctalia" "msg" "panel-toggle" "session"; } + Mod+V hotkey-overlay-title="Show clipboard helper" { spawn "noctalia" "msg" "panel-toggle" "clipboard"; } + Mod+P hotkey-overlay-title="Show power info" { spawn "noctalia" "msg" "panel-toggle" "control-center" "power"; } + Ctrl+Shift+Escape { spawn "noctalia" "msg" "panel-toggle" "control-center" "system"; } + + Mod+Up { focus-workspace-up; } + Mod+Down { focus-workspace-down; } + Mod+Left { focus-column-left; } + Mod+Right { focus-column-right; } + + Mod+X { toggle-window-floating; } + + Mod+Shift+Up { move-window-to-workspace-up; } + Mod+Shift+Down { move-window-to-workspace-down; } + Mod+Shift+Left { move-column-left; } + Mod+Shift+Right { move-column-right; } + + XF86AudioLowerVolume { spawn "noctalia" "msg" "volume-down" "5"; } + XF86AudioRaiseVolume { spawn "noctalia" "msg" "volume-up" "5"; } + XF86AudioMute { spawn "noctalia" "msg" "volume-mute"; } + XF86AudioMicMute { spawn "noctalia" "msg" "mic-mute"; } + XF86MonBrightnessDown { spawn "noctalia" "msg" "brightness-down" "5"; } + XF86MonBrightnessUp { spawn "noctalia" "msg" "brightness-up" "5"; } + XF86WLAN { spawn-sh "rfkill toggle 0 || rfkill toggle 1"; } + XF86NotificationCenter { spawn "noctalia" "msg" "panel-toggle" "control-center" "notifications"; } + XF86Display { toggle-overview; } + + Print { screenshot; } + Shift+Print { screenshot-window; } + + Mod+Slash { spawn "niri-scratch-workspace-toggle"; } + Mod+Shift+Slash { move-window-to-workspace "x" focus=false; } +} +workspace "x" { + hidden true + layout { + focus-ring { + width 3 + active-color "#a33d3d" + } + } +} +window-rule { + draw-border-with-background false + clip-to-geometry true +} +window-rule { // Steam windows float (excluding main window) + match app-id="^steam$" + exclude title="^Steam$" + exclude title=r#"^notificationtoasts_\d+_desktop$"# + default-window-height { proportion 0.5; } + open-floating true +} +window-rule { // Steam notifications are not focused and appear in bottom-right corner + match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"# + default-floating-position x=10 y=10 relative-to="bottom-right" + open-focused false +} +spawn-at-startup "noctalia" +spawn-at-startup "niri-listen-for-scratch-workspace-change" +spawn-at-startup "niri-clear-state" + +gestures { hot-corners { off; }; } + +layer-rule { + match namespace="^noctalia-backdrop" + place-within-backdrop true +} + +animations { + on + slowdown 1 + workspace-switch { + spring damping-ratio=0.9 stiffness=750 epsilon=0.0001 + } + window-open { + duration-ms 100 + curve "ease-out-expo" + } + window-close { + duration-ms 125 + curve "ease-out-quad" + } + horizontal-view-movement { + spring damping-ratio=0.85 stiffness=850 epsilon=0.0001 + } + window-movement { + spring damping-ratio=0.9 stiffness=750 epsilon=0.0001 + } + window-resize { + spring damping-ratio=0.8 stiffness=650 epsilon=0.0001 + } +} \ No newline at end of file diff --git a/dotfiles/global/vscode/keybindings.json b/dotfiles/shared/vscode/keybindings.json similarity index 100% rename from dotfiles/global/vscode/keybindings.json rename to dotfiles/shared/vscode/keybindings.json diff --git a/dotfiles/global/vscode/settings.json b/dotfiles/shared/vscode/settings.json similarity index 100% rename from dotfiles/global/vscode/settings.json rename to dotfiles/shared/vscode/settings.json diff --git a/dotfiles/takamaki/easyeffects/easyeffectsrc b/dotfiles/takamaki/easyeffects/easyeffectsrc index 3c6910d..add72f6 100755 --- a/dotfiles/takamaki/easyeffects/easyeffectsrc +++ b/dotfiles/takamaki/easyeffects/easyeffectsrc @@ -10,6 +10,7 @@ visiblePlugin=deesser#0 [StreamOutputs] outputDevice=alsa_output.usb-Focusrite_Scarlett_2i2_USB_Y8PK1YT167E441-00.HiFi__Line__sink plugins=equalizer#0 +visiblePage=pluginsPage visiblePlugin=equalizer#0 [Style] @@ -17,7 +18,7 @@ forceBreezeTheme=false [Window] autostartOnLogin=true -height=1408 +height=1364 showTrayIcon=false visiblePage=inputPage width=1912 diff --git a/dotfiles/takamaki/equibop/equicord-settings.json b/dotfiles/takamaki/equibop/equicord-settings.json index 0e91dd2..fdae3b8 100755 --- a/dotfiles/takamaki/equibop/equicord-settings.json +++ b/dotfiles/takamaki/equibop/equicord-settings.json @@ -4,7 +4,7 @@ "authenticated": false, "settingsSync": false, "url": "https://cloud.equicord.org/", - "settingsSyncVersion": 1788360340476 + "settingsSyncVersion": 1788650476307 }, "enableOnlineThemes": true, "enabledThemeLinks": [ diff --git a/dotfiles/takamaki/niri.kdl b/dotfiles/takamaki/niri.kdl index 1ec6948..33f0e6c 100644 --- a/dotfiles/takamaki/niri.kdl +++ b/dotfiles/takamaki/niri.kdl @@ -1,22 +1,14 @@ -include "./noctalia.kdl" +include "./shared.kdl" + input { keyboard { - xkb { - layout "gb" - model "" - rules "" - variant "" - } repeat-delay 600 repeat-rate 25 - track-layout "global" - numlock } mouse { accel-speed 0.25 accel-profile "flat" } - focus-follows-mouse max-scroll-amount="0%" } output "DP-2" { @@ -34,75 +26,33 @@ output "HDMI-A-1" { transform "270" position x=-1080 y=-250 } - -screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" -prefer-no-csd overview { zoom 0.67; } layout { gaps 16 struts { left 24 right 24 - top -8 + top -12 bottom -4 } focus-ring { width 1.5 } - border { off; } - shadow { - on - offset x=0.000000 y=5.000000 - softness 30.000000 - spread 5.000000 - draw-behind-window false - color "#00000070" - } default-column-width center-focused-column "never" always-center-single-column empty-workspace-above-first } -cursor { - xcursor-theme "Bibata-Modern-Ice" - xcursor-size 22 -} -hotkey-overlay { skip-at-startup; } binds { Mod+B { spawn "zen-browser"; } Mod+C { spawn "kcalc"; } - Mod+D { spawn "noctalia" "msg" "panel-toggle" "launcher"; } Mod+E { spawn "dolphin"; } - Mod+Return { spawn "kitty"; } - Mod+O { spawn "obsidian"; } ISO_Level3_Shift+Comma { spawn "equibop" "--toggle-mic"; } ISO_Level3_Shift+Period { spawn "equibop" "--toggle-deafen"; } - - Mod+Space { toggle-overview; } - Mod+Q { close-window; } - Mod+F { maximize-window-to-edges; } - Mod+Shift+F { fullscreen-window; } - Mod+Shift+E { quit; } - - Mod+L { spawn "noctalia" "msg" "session" "lock"; } - Mod+Shift+D { spawn "noctalia" "msg" "desktop-widgets-edit"; } - Mod+Shift+B { spawn "noctalia" "msg" "settings-open" "bar"; } - Mod+Shift+S { spawn "noctalia" "msg" "settings-open"; } - Mod+Period { spawn "noctalia" "msg" "panel-toggle" "control-center"; } - Mod+W { spawn "noctalia" "msg" "panel-toggle" "wallpaper"; } - Mod+Shift+P { spawn "noctalia" "msg" "panel-toggle" "session"; } - Mod+V { spawn "noctalia" "msg" "panel-toggle" "clipboard"; } - Mod+P { spawn "noctalia" "msg" "panel-toggle" "control-center" "power"; } - Ctrl+Shift+Escape { spawn "noctalia" "msg" "panel-toggle" "control-center" "system"; } Mod+A { spawn "toggle-easyeffects"; } - Mod+Up { focus-workspace-up; } - Mod+Down { focus-workspace-down; } - Mod+Left { focus-column-left; } - Mod+Right { focus-column-right; } - Mod+WheelScrollUp { focus-column-left; } Mod+WheelScrollDown { focus-column-right; } Mod+Shift+WheelScrollUp { focus-workspace-up; } @@ -111,11 +61,6 @@ binds { Mod+equal { set-column-width "+5%"; } Mod+minus { set-column-width "-5%"; } - Mod+Shift+Up { move-window-to-workspace-up; } - Mod+Shift+Down { move-window-to-workspace-down; } - Mod+Shift+Left { move-column-left; } - Mod+Shift+Right { move-column-right; } - Mod+Control+Left { focus-monitor-left; } Mod+Control+Right { focus-monitor-right; } @@ -125,59 +70,23 @@ binds { Mod+Shift+Control+Left { move-window-to-monitor-left; } Mod+Shift+Control+Right { move-window-to-monitor-right; } - XF86AudioLowerVolume { spawn "noctalia" "msg" "volume-down" "5"; } - XF86AudioRaiseVolume { spawn "noctalia" "msg" "volume-up" "5"; } - XF86AudioMute { spawn "noctalia" "msg" "volume-mute"; } - Print { screenshot; } Mod+XF86AudioRaiseVolume cooldown-ms=250 { spawn "increase-brightness" "/dev/i2c-10"; } Mod+XF86AudioLowerVolume cooldown-ms=250 { spawn "decrease-brightness" "/dev/i2c-10"; } Mod+Shift+XF86AudioRaiseVolume cooldown-ms=250 { spawn "increase-brightness" "/dev/i2c-6"; } Mod+Shift+XF86AudioLowerVolume cooldown-ms=250 { spawn "decrease-brightness" "/dev/i2c-6"; } - - Mod+Slash { spawn "niri-scratch-workspace-toggle"; } - Mod+Shift+Slash { move-window-to-workspace "x" focus=false; } - - Mod+X { toggle-window-floating; } - Mod+Z { spawn "kitty" "zsh" "-i" "-c" "apply-config"; } } -workspace "x" { - hidden true - layout { - focus-ring { - width 3 - active-color "#a33d3d" - } - } -} -spawn-at-startup "noctalia" -spawn-at-startup "niri-listen-for-scratch-workspace-change" window-rule { - draw-border-with-background false geometry-corner-radius 4 - clip-to-geometry true } window-rule { // Maximized on vertical monitor match at-startup=true app-id="^equibop$" open-maximized-to-edges true open-on-output "HDMI-A-1" } -window-rule { // Steam windows float (excluding main window) - match app-id="^steam$" - exclude title="^Steam$" - exclude title=r#"^notificationtoasts_\d+_desktop$"# - default-window-height { proportion 0.5; } - open-floating true - open-focused true -} -window-rule { - match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"# - default-floating-position x=10 y=10 relative-to="bottom-right" - open-focused false -} window-rule { // Maximized on main monitor match at-startup=true app-id="^steam$" title="^Steam$" open-maximized-to-edges true - open-on-output "HDMI-A-1" + open-on-output "DP-2" } window-rule { // Fullscreen on main monitor match app-id="^steam_app_\\d+$" @@ -196,14 +105,4 @@ window-rule { window-rule { match app-id="^org\\.prismlauncher\\.PrismLauncher$" default-window-height { fixed 750; } -} -gestures { hot-corners { off; }; } -animations { - on - slowdown 1.25 -} -layer-rule { - match namespace="^noctalia-backdrop" - place-within-backdrop true -} -include "noctalia.kdl" +} \ No newline at end of file diff --git a/flake.lock b/flake.lock index 8af0de1..e96512d 100644 --- a/flake.lock +++ b/flake.lock @@ -187,11 +187,11 @@ ] }, "locked": { - "lastModified": 1788319420, - "narHash": "sha256-y4hOpWzUp8ZWzoIsQINIxFifoWOV1tQPVqHVtX24luc=", + "lastModified": 1788653102, + "narHash": "sha256-UHCmPae6q8t15dMGZ6d+Imkpu+tQFxxOWD8+n/5AWT4=", "ref": "refs/heads/main", - "rev": "1cfc810e699659bab9a9c8f071a5770fc3d8b886", - "revCount": 52, + "rev": "18982a624707263369598f49f80f55c65357610b", + "revCount": 54, "type": "git", "url": "https://git.greyweather.dev/greyweather/nix-helper-flake" }, diff --git a/modules/components/shells/noctalia.nix b/modules/components/shells/noctalia.nix index f0b37e7..b2883ef 100644 --- a/modules/components/shells/noctalia.nix +++ b/modules/components/shells/noctalia.nix @@ -16,8 +16,6 @@ flake.homeModules.graphics = { pkgs, config, lib, inputs, ... }: { config = lib.mkIf ((config.components.shells == "noctalia")||(builtins.elem "noctalia" config.components.shells)) { home = { - packages = lib.mkIf (config.info.isStandalone) [ inputs.noctalia.packages.${pkgs.stdenv.hostPlatform.system}.default ]; - activation = { linkNoctaliaState = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { target = "${config.home.homeDirectory}/.local/state/noctalia/settings.toml"; diff --git a/modules/components/window-managers/biri.nix b/modules/components/window-managers/biri.nix index c5a023c..f7a213f 100644 --- a/modules/components/window-managers/biri.nix +++ b/modules/components/window-managers/biri.nix @@ -1,88 +1,66 @@ { inputs, self, ... }: { + imports = [ ./niri.nix ]; + flake.nixosModules.graphics = { config, pkgs, lib, ... }: { + # override niri source to use https://github.com/barrulus/biri config = lib.mkIf (builtins.elem "biri" config.components.windowManagers) { - environment.systemPackages = with pkgs; [ - xdg-desktop-portal-gnome - wl-clipboard - libsecret - cage - wev - qalculate-qt - ]; - - features.applications.gui.nautilus.enable = true; - - services.upower.enable = true; - - services.udisks2.enable = true; - - programs.niri = { - enable = true; - useNautilus = true; - # override niri source to use https://github.com/barrulus/biri - package = self.packages.${pkgs.stdenv.hostPlatform.system}.biri; - }; + programs.niri.package = self.packages.${pkgs.stdenv.hostPlatform.system}.biri; home-manager.users.${config.info.userName} = lib.mkIf (config.features.nixos.home-manager.enable) { - components.windowManagers = [ "niri" ]; + components.windowManagers = [ "biri" ]; }; }; }; flake.homeModules.graphics = { config, pkgs, lib, inputs, ... }: { - home = lib.mkIf ((config.components.windowManagers == "biri")||(builtins.elem "biri" config.components.windowManagers)) { - activation.linkNiriConfig = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { - target = "${config.xdg.configHome}/niri/config.kdl"; - source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/niri.kdl"; - }); - }; - - features.applications.shellScripts = { - niri-scratch-workspace-toggle = '' - if niri msg --json workspaces-with-hidden | jq -e '.[] | select(.name=="x") | .is_hidden' >/dev/null; then - niri msg action unhide-workspace --focus=false "x" - OUTPUT=$(niri msg --json focused-output | jq '.name' | sed 's/"//g') - niri msg action move-workspace-to-monitor --reference "x" "$OUTPUT" - niri msg action focus-workspace "x" - else - niri msg action hide-workspace "x" - fi - ''; - - niri-listen-for-scratch-workspace-change = '' - niri msg --json event-stream | while read -r event; do - if echo $event | jq -e '.WorkspaceActivated.focused' >/dev/null; then - if niri msg --json workspaces | jq -e '.[] | select(.name=="x") | .is_active==false' >/dev/null; then - niri msg action hide-workspace "x" - fi - elif echo $event | jq -e '.WorkspacesChanged.workspaces.[] | select(.name=="x") | .is_active==false' >/dev/null; then + config = lib.mkIf (builtins.elem "biri" config.components.windowManagers) { + features.applications.shellScripts = { + niri-scratch-workspace-toggle = '' + if niri msg --json workspaces-with-hidden | jq -e '.[] | select(.name=="x") | .is_hidden' >/dev/null; then + niri msg action unhide-workspace --focus=false "x" + OUTPUT=$(niri msg --json focused-output | jq '.name' | sed 's/"//g') + niri msg action move-workspace-to-monitor --reference "x" "$OUTPUT" + niri msg action focus-workspace "x" + else niri msg action hide-workspace "x" fi - done - ''; + ''; - niri-toggle-dwt = '' - niri msg action toggle-dwt - cd ${config.xdg.stateHome} - if [ -f ./niri.json ]; then - if jq -e '.dwt' niri.json >/dev/null; then - NEW_JSON=$(jq '.dwt = false' niri.json) - echo "$NEW_JSON" > niri.json + niri-listen-for-scratch-workspace-change = '' + niri msg --json event-stream | while read -r event; do + if echo $event | jq -e '.WorkspaceActivated.focused' >/dev/null; then + if niri msg --json workspaces | jq -e '.[] | select(.name=="x") | .is_active==false' >/dev/null; then + niri msg action hide-workspace "x" + fi + elif echo $event | jq -e '.WorkspacesChanged.workspaces.[] | select(.name=="x") | .is_active==false' >/dev/null; then + niri msg action hide-workspace "x" + fi + done + ''; + + niri-toggle-dwt = '' + niri msg action toggle-dwt + cd ${config.xdg.stateHome} + if [ -f ./niri.json ]; then + if jq -e '.dwt' niri.json >/dev/null; then + NEW_JSON=$(jq '.dwt = false' niri.json) + echo "$NEW_JSON" > niri.json + else + NEW_JSON=$(jq '.dwt = true' niri.json) + echo "$NEW_JSON" > niri.json + fi else - NEW_JSON=$(jq '.dwt = true' niri.json) - echo "$NEW_JSON" > niri.json + echo '{"dwt": false}' | jq '.' > niri.json fi - else - echo '{"dwt": false}' | jq '.' > niri.json - fi - NEW_STATE=$(jq '.dwt' niri.json) - noctalia msg notification-show "Touchpad DWT toggled $NEW_STATE" - ''; + PRETTY_STATE=$(if jq -e '.dwt' niri.json >/dev/null; then echo "on"; else echo "off"; fi) + notify-send -e -a "niri-toggle-dwt script" "Toggled DWT $PRETTY_STATE" + ''; - niri-clear-state = '' - cd ${config.xdg.stateHome} - rm niri.json - ''; + niri-clear-state = '' + cd ${config.xdg.stateHome} + rm niri.json + ''; + }; }; }; } \ No newline at end of file diff --git a/modules/components/window-managers/niri.nix b/modules/components/window-managers/niri.nix index 8366b63..0341b03 100644 --- a/modules/components/window-managers/niri.nix +++ b/modules/components/window-managers/niri.nix @@ -1,6 +1,6 @@ { inputs, self, ... }: { flake.nixosModules.graphics = { config, pkgs, lib, ... }: { - config = lib.mkIf (builtins.elem "niri" config.components.windowManagers) { + config = lib.mkIf (builtins.elem "niri" config.components.windowManagers || builtins.elem "biri" config.components.windowManagers) { environment.systemPackages = with pkgs; [ xdg-desktop-portal-gnome wl-clipboard @@ -10,8 +10,6 @@ qalculate-qt ]; - features.applications.gui.nautilus.enable = true; - services.upower.enable = true; services.udisks2.enable = true; @@ -19,20 +17,6 @@ programs.niri = { enable = true; useNautilus = true; - # override niri source to use https://github.com/niri-wm/niri/pull/3642 - package = (pkgs.niri.overrideAttrs (finalAttrs: prevAttrs: { - cargoHash = "sha256-HypBB3PL4nVFMNH2+jEK0+dG9dJ920nHi8GwRoeH/v4="; - src = pkgs.fetchFromGitHub { - owner = "niri-wm"; - repo = "niri"; - rev = "cb41d54703eef73883bb2be58e19bcf3715d777c"; - sha256 = "sha256-cLzTeMcCdQJ+kHGcOposjeheFyEG/tGOA1jFAORMHjI="; - }; - cargoDeps = pkgs.rustPlatform.fetchCargoVendor { - inherit (finalAttrs) pname src version; - hash = finalAttrs.cargoHash; - }; - })); }; home-manager.users.${config.info.userName} = lib.mkIf (config.features.nixos.home-manager.enable) { @@ -42,11 +26,18 @@ }; flake.homeModules.graphics = { config, pkgs, lib, inputs, ... }: { - home = lib.mkIf ((config.components.windowManagers == "niri")||(builtins.elem "niri" config.components.windowManagers)) { - activation.linkNiriConfig = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { - target = "${config.xdg.configHome}/niri/config.kdl"; - source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/niri.kdl"; - }); + home = lib.mkIf (builtins.elem "niri" config.components.windowManagers || builtins.elem "biri" config.components.windowManagers) { + activation = { + linkNiriConfig = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { + target = "${config.xdg.configHome}/niri/config.kdl"; + source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/niri.kdl"; + }); + + linkSharedConfig = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { + target = "${config.xdg.configHome}/niri/shared.kdl"; + source = "${config.info.rootPath}/dotfiles/shared/niri-shared.kdl"; + }); + }; }; }; } \ No newline at end of file diff --git a/modules/docs.nix b/modules/docs.nix index 57ef883..b009218 100644 --- a/modules/docs.nix +++ b/modules/docs.nix @@ -118,12 +118,7 @@ in { options.features.documentation = let defaultPort = "8080"; in { - enable = lib.mkOption { - type = lib.types.bool; - description = "Whether to enable documentation for the flake, generated with [Material for mkDocs](https://squidfunk.github.io/mkdocs-material/) and hosted by (containerised) nginx at localhost:${defaultPort} by default."; - default = true; - }; - + enable = lib.mkEnableOption "documentation for the flake, generated with [Material for mkDocs](https://squidfunk.github.io/mkdocs-material/) and hosted by (containerised) nginx at localhost:${defaultPort} by default."; port = lib.mkOption { type = lib.types.str; description = "This option sets the port used by the nginx server hosting the local documentation site."; diff --git a/modules/features/applications/cli/color-converter.nix b/modules/features/applications/cli/color-converter.nix index aa0ff54..fbe53d7 100644 --- a/modules/features/applications/cli/color-converter.nix +++ b/modules/features/applications/cli/color-converter.nix @@ -1,9 +1,5 @@ { inputs, self, lib, ... }: let - featureOptionName = "features.applications.cli.color-converter.enable"; - moduleArgs = config: { - inherit config; - optionName = featureOptionName; - }; + optionName = "features.applications.cli.color-converter.enable"; color-converter-package = { lib, pkgs }: pkgs.python3Packages.buildPythonApplication rec { pname = "color-converter"; @@ -35,16 +31,16 @@ }; }; in { - imports = [ (inputs.helpers.mkStandardFeature.flakeModule "global" featureOptionName (lib.mkEnableOption "`color-converter`")) ]; + imports = [ (inputs.helpers.mkStandardFeature.flakeModule "global" optionName "`color-converter`") ]; flake.nixosModules.global = { pkgs, lib, config, ... }: { - imports = [ (inputs.helpers.mkStandardFeature.nixosModule (moduleArgs config) { + imports = [ (inputs.helpers.mkStandardFeature.nixosModule { inherit config optionName; } { environment.systemPackages = [ (pkgs.callPackage color-converter-package {}) ]; }) ]; }; flake.homeModules.global = { pkgs, config, lib, ... }: { - imports = [ (inputs.helpers.mkStandardFeature.homeModule (moduleArgs config) { + imports = [ (inputs.helpers.mkStandardFeature.homeModule { inherit config optionName; } { home.packages = [ (pkgs.callPackage color-converter-package {}) ]; }) ]; }; diff --git a/modules/features/applications/cli/fastfetch.nix b/modules/features/applications/cli/fastfetch.nix index 684a9f0..0bcc44c 100644 --- a/modules/features/applications/cli/fastfetch.nix +++ b/modules/features/applications/cli/fastfetch.nix @@ -1,20 +1,18 @@ -{ inputs, self, ... }: { - imports = [ (inputs.helpers.mkMirroredModulesFlakeModule "globalOptions" ({ lib, ... }: { - options.features.applications.cli.fastfetch.enable = lib.mkEnableOption "`fastfetch`"; - })) ]; +{ inputs, self, ... }: let + optionName = "features.applications.cli.fastfetch.enable"; +in { + imports = [ (inputs.helpers.mkStandardFeature.flakeModule "global" optionName "`fastfetch`") ]; flake.nixosModules.global = { pkgs, lib, config, ... }: { - config = lib.mkIf (config.features.applications.cli.fastfetch.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) { - home-manager.users.${config.info.userName}.features.applications.cli.fastfetch.enable = lib.mkDefault true; - } { + imports = [ (inputs.helpers.mkStandardFeature.nixosModule { inherit config optionName; } { environment.systemPackages = [ pkgs.fastfetch ]; - }); + }) ]; }; flake.homeModules.global = { pkgs, lib, config, ... }: { - config = lib.mkIf (config.features.applications.cli.fastfetch.enable) ({ + imports = [ (inputs.helpers.mkStandardFeature.homeModule { inherit config optionName; } { programs.zsh.initContent = lib.mkOrder 1500 "fastfetch"; programs.fastfetch.enable = true; - }); + }) ]; }; } \ No newline at end of file diff --git a/modules/features/applications/gui/floorp.nix b/modules/features/applications/gui/floorp.nix index bfdccf8..2d680f8 100644 --- a/modules/features/applications/gui/floorp.nix +++ b/modules/features/applications/gui/floorp.nix @@ -14,7 +14,7 @@ flake.homeModules.graphics = { pkgs, lib, config, ... }: { config = lib.mkIf (config.features.applications.gui.floorp.enable) ( let - firefox-addons = with pkgs; inputs.firefox-addons.packages.${pkgs.stdenv.hostPlatform.system}; + firefox-addons = inputs.firefox-addons.packages.${pkgs.stdenv.hostPlatform.system}; in { programs.floorp = { enable = true; diff --git a/modules/features/applications/gui/fluxer.nix b/modules/features/applications/gui/fluxer.nix index 9248bed..7a71b78 100644 --- a/modules/features/applications/gui/fluxer.nix +++ b/modules/features/applications/gui/fluxer.nix @@ -63,39 +63,41 @@ platforms = [ "x86_64-linux" ]; }; }; + optionName = "features.applications.gui.fluxer.enable"; + optionNameCanary = "features.applications.gui.fluxer-canary.enable"; in { - imports = [ (inputs.helpers.mkMirroredModulesFlakeModule "graphicsOptions" ({ lib, ... }: { - options.features.applications.gui = { - fluxer.enable = lib.mkEnableOption "Fluxer"; - fluxer-canary.enable = lib.mkEnableOption "Fluxer Canary"; - }; - })) ]; + imports = [ + (inputs.helpers.mkStandardFeature.flakeModule "graphics" optionName "Fluxer") + (inputs.helpers.mkStandardFeature.flakeModule "graphics" optionNameCanary "Fluxer Canary") + ]; flake.nixosModules.graphics = { pkgs, config, lib, ... }: { - config = lib.mkIf (config.features.applications.gui.fluxer.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) { - home-manager.users.${config.info.userName}.features.applications.gui.fluxer.enable = lib.mkDefault true; - } { - environment.systemPackages = [ - (pkgs.callPackage (fluxer-package) {}) - ]; - }) // lib.mkIf (config.features.applications.gui.fluxer-canary.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) { - home-manager.users.${config.info.userName}.features.applications.gui.fluxer-canary.enable = lib.mkDefault true; - } { - environment.systemPackages = [ - (pkgs.callPackage (fluxer-canary-package) {}) - ]; - }); + imports = [ + (inputs.helpers.mkStandardFeature.nixosModule { inherit config optionName; } { + environment.systemPackages = [ + (pkgs.callPackage (fluxer-package) {}) + ]; + }) + (inputs.helpers.mkStandardFeature.nixosModule { inherit config; optionName = optionNameCanary; } { + environment.systemPackages = [ + (pkgs.callPackage (fluxer-canary-package) {}) + ]; + }) + ]; }; flake.homeModules.graphics = { pkgs, config, lib, ... }: { - config = lib.mkIf (config.features.applications.gui.fluxer.enable) { - home.packages = [ - (pkgs.callPackage (fluxer-package) {}) - ]; - } // lib.mkIf (config.features.applications.gui.fluxer-canary.enable) { - home.packages = [ - (pkgs.callPackage (fluxer-canary-package) {}) - ]; - }; + imports = [ + (inputs.helpers.mkStandardFeature.homeModule { inherit config optionName; } { + home.packages = [ + (pkgs.callPackage (fluxer-package) {}) + ]; + }) + (inputs.helpers.mkStandardFeature.homeModule { inherit config; optionName = optionNameCanary; } { + home.packages = [ + (pkgs.callPackage (fluxer-canary-package) {}) + ]; + }) + ]; }; } \ No newline at end of file diff --git a/modules/features/applications/gui/kitty.nix b/modules/features/applications/gui/kitty.nix index 4d31c6a..6a1c25c 100644 --- a/modules/features/applications/gui/kitty.nix +++ b/modules/features/applications/gui/kitty.nix @@ -1,25 +1,21 @@ -{ inputs, self, ... }: { - imports = [ (inputs.helpers.mkMirroredModulesFlakeModule "graphicsOptions" ({ lib, ... }: { - options.features.applications.gui.kitty.enable = lib.mkEnableOption "Kitty Terminal"; - }))]; +{ inputs, self, ... }: let + optionName = "features.applications.gui.kitty.enable"; +in { + imports = [ (inputs.helpers.mkStandardFeature.flakeModule "graphics" optionName "Kitty Terminal") ]; flake.nixosModules.graphics = { pkgs, config, lib, ... }: { - config = let - in lib.mkIf (config.features.applications.gui.kitty.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) { - home-manager.users.${config.info.userName}.features.applications.gui.kitty.enable = lib.mkDefault true; - } { + imports = [ (inputs.helpers.mkStandardFeature.nixosModule { inherit config optionName; } { environment.systemPackages = [ pkgs.kitty ]; - }); + }) ]; }; flake.homeModules.graphics = { pkgs, config, lib, ... }: { - config = lib.mkIf (config.features.applications.gui.kitty.enable) { + imports = [ (inputs.helpers.mkStandardFeature.homeModule { inherit config optionName; } { programs.kitty = { enable = true; - shellIntegration.enableBashIntegration = true; enableGitIntegration = true; }; - }; + }) ]; }; } \ No newline at end of file diff --git a/modules/features/applications/gui/remmina.nix b/modules/features/applications/gui/remmina.nix index 3e0b9de..13161da 100644 --- a/modules/features/applications/gui/remmina.nix +++ b/modules/features/applications/gui/remmina.nix @@ -1,21 +1,19 @@ -{ inputs, self, ... }: { - imports = [ (inputs.helpers.mkMirroredModulesFlakeModule "graphicsOptions" ({ lib, ... }: { - options.features.applications.gui.remmina.enable = lib.mkEnableOption "Remmina"; - })) ]; +{ inputs, self, ... }: let + optionName = "features.applications.gui.remmina.enable"; +in { + imports = [ (inputs.helpers.mkStandardFeature.flakeModule "graphics" optionName "Remmina") ]; - flake.nixosModules.graphics = { pkgs, config, lib, ... }: { - config = lib.mkIf (config.features.applications.gui.remmina.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) { - home-manager.users.${config.info.userName}.features.applications.gui.remmina.enable = lib.mkDefault true; - } { + flake.nixosModules.graphics = { pkgs, config, lib, ... }: { + imports = [ (inputs.helpers.mkStandardFeature.nixosModule { inherit config optionName; } { environment.systemPackages = with pkgs; [ remmina freerdp ]; - }); + }) ]; }; flake.homeModules.graphics = { pkgs, config, lib, ... }: { - config = lib.mkIf (config.features.applications.gui.remmina.enable) { + imports = [ (inputs.helpers.mkStandardFeature.homeModule { inherit config optionName; } { home.packages = with pkgs; [ remmina freerdp @@ -25,6 +23,6 @@ target = "${config.home.homeDirectory}/.local/share/remmina"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/remmina"; }); - }; + }) ]; }; } \ No newline at end of file diff --git a/modules/features/applications/gui/thunderbird.nix b/modules/features/applications/gui/thunderbird.nix new file mode 100644 index 0000000..0a56c92 --- /dev/null +++ b/modules/features/applications/gui/thunderbird.nix @@ -0,0 +1,45 @@ +{ inputs, self, ... }: let + optionName = "features.applications.gui.thunderbird.enable"; +in { + imports = [ + (inputs.helpers.mkStandardFeature.flakeModule "graphics" optionName "Thunderbird") + ]; + + flake.nixosModules.graphics = { pkgs, config, ... }: { + imports = [ (inputs.helpers.mkStandardFeature.nixosModule { inherit config optionName; } { + environment.systemPackages = [ pkgs.thunderbird ]; + }) ]; + }; + + flake.homeModules.graphicsOptions = { lib, ... }: { + options.features.applications.gui.thunderbird.autostart = lib.mkOption { + type = lib.types.bool; + description = "Whether to add thunderbird.desktop to `$XDG_CONFIG_HOME/autostart`."; + default = false; + }; + }; + + flake.homeModules.graphics = { pkgs, config, lib, ... }: { + imports = [ (inputs.helpers.mkStandardFeature.homeModule { inherit config optionName; } { + home.packages = [ pkgs.thunderbird ]; + xdg.configFile."autostart/thunderbird.desktop" = lib.mkIf (config.features.applications.gui.thunderbird.autostart) { + text = '' + [Desktop Entry] + Categories=Network;Chat;Email;Feed;GTK;News + Comment=Read and write e-mails or RSS feeds, or manage tasks on calendars. + Exec=${pkgs.thunderbird}/bin/thunderbird --name thunderbird %U + GenericName=Email Client + Icon=thunderbird + MimeType=message/rfc822;x-scheme-handler/mailto;text/calendar;text/x-vcard + Name=Thunderbird + StartupNotify=true + StartupWMClass=thunderbird + Terminal=false + Type=Application + Version=1.5 + ''; + force = true; + }; + }) ]; + }; +} diff --git a/modules/features/applications/gui/vscode.nix b/modules/features/applications/gui/vscode.nix index b896b72..63fc5fb 100644 --- a/modules/features/applications/gui/vscode.nix +++ b/modules/features/applications/gui/vscode.nix @@ -1,31 +1,29 @@ -{ inputs, self, ... }: { - imports = [ (inputs.helpers.mkMirroredModulesFlakeModule "graphicsOptions" ({ lib, ... }: { - options.features.applications.gui.vscode.enable = lib.mkEnableOption "VS Code"; - })) ]; +{ inputs, self, ... }: let + optionName = "features.applications.gui.vscode.enable"; +in { + imports = [ (inputs.helpers.mkStandardFeature.flakeModule "graphics" optionName "VS Code") ]; flake.nixosModules.graphics = { config, pkgs, lib, ... }: { - config = lib.mkIf (config.features.applications.gui.vscode.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) { - home-manager.users.${config.info.userName}.features.applications.gui.vscode.enable = lib.mkDefault true; - } { + imports = [ (inputs.helpers.mkStandardFeature.nixosModule { inherit config optionName; } { environment.systemPackages = [ pkgs.vscode ]; - }); + }) ]; }; flake.homeModules.graphics = { config, pkgs, lib, ... }: { - config = lib.mkIf (config.features.applications.gui.vscode.enable) { + imports = [ (inputs.helpers.mkStandardFeature.homeModule { inherit config optionName; } { home.packages = [ pkgs.vscode ]; home.activation = { linkVsCodeConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { target = "${config.xdg.configHome}/Code/User/settings.json"; - source = "${config.info.rootPath}/dotfiles/global/vscode/settings.json"; + source = "${config.info.rootPath}/dotfiles/shared/vscode/settings.json"; }); linkVsCodeConfigKeybindings = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript { target = "${config.xdg.configHome}/Code/User/keybindings.json"; - source = "${config.info.rootPath}/dotfiles/global/vscode/keybindings.json"; + source = "${config.info.rootPath}/dotfiles/shared/vscode/keybindings.json"; }); }; - }; + }) ]; }; } \ No newline at end of file diff --git a/modules/features/hardware/steam-controller.nix b/modules/features/hardware/steam-controller.nix index ad4059b..208d52f 100644 --- a/modules/features/hardware/steam-controller.nix +++ b/modules/features/hardware/steam-controller.nix @@ -5,6 +5,8 @@ flake.nixosModules.gaming = { pkgs, config, lib, ... }: { config = lib.mkIf (config.features.hardware.steam-controller.enable) { + hardware.steam-hardware.enable = lib.mkForce true; # most likely enabled somewhere else but should be enforced here regardless + home-manager.users.${config.info.userName} = lib.mkIf (config.features.nixos.home-manager.enable) { features.hardware.steam-controller.enable = lib.mkDefault true; }; @@ -14,8 +16,8 @@ flake.homeModules.gaming = { pkgs, config, lib, inputs, ... }: { config = let pkgsCross = import inputs.nixpkgs { - localSystem = "x86_64-linux"; - hostSystem = "x86_64-linux"; + localSystem = pkgs.stdenv.hostPlatform.system; + hostSystem = pkgs.stdenv.hostPlatform.system; crossSystem = "i686-linux"; }; steam-modified-desktop-file = pkgs.runCommand "modifySteamDesktopFile" {} '' diff --git a/modules/hosts/kitagawa/kitagawa.nix b/modules/hosts/kitagawa/kitagawa.nix index 8e52ce0..da09f5d 100644 --- a/modules/hosts/kitagawa/kitagawa.nix +++ b/modules/hosts/kitagawa/kitagawa.nix @@ -30,6 +30,7 @@ applications = { gui = { + nautilus.enable = true; kitty.enable = true; vscode.enable = true; equibop.enable = true; diff --git a/modules/hosts/takamaki/takamaki.nix b/modules/hosts/takamaki/takamaki.nix index 9f7f42d..fd68ac7 100644 --- a/modules/hosts/takamaki/takamaki.nix +++ b/modules/hosts/takamaki/takamaki.nix @@ -31,8 +31,8 @@ }; components = { - windowManagers = "niri"; - shells = "noctalia"; + windowManagers = [ "biri" ]; + shells = [ "noctalia" ]; }; features = { @@ -67,15 +67,19 @@ theme = "comfy"; }; }; + thunderbird = { + enable = true; + }; }; extraPackages = with pkgs; [ nix-init github-desktop + signal-desktop ]; shellScripts = let - mkBrightnessScript = direction: '' + mkBrightnessScript = direction: scriptName: '' LOOP_COUNTER=0 DEVICE=$1 PRETTY_NAME=$(sudo ddccontrol dev:$DEVICE 2>&1 >/dev/null | grep -oP "/usr/share/ddccontrol-db/monitor/\K.+\.xml" | sed 's/.xml//') @@ -88,7 +92,7 @@ LOOP_COUNTER=$(($LOOP_COUNTER + 1)) done - noctalia msg notification-show "Set brightness to $WRITTEN for display $PRETTY_NAME" + notify-send -e -a "${scriptName}" "Set brightness to $WRITTEN for display $PRETTY_NAME" ''; in { switch-os = '' @@ -109,14 +113,16 @@ if [ "$bypass_value" = "1" ]; then easyeffects -b 2 + notify-send -e -a "toggle-easyeffects script" "Easy Effects enabled" else easyeffects -b 1 + notify-send -e -a "toggle-easyeffects script" "Easy Effects disabled" fi ''; - increase-brightness = mkBrightnessScript "+"; + increase-brightness = mkBrightnessScript "+" "increase-brightness script"; - decrease-brightness = mkBrightnessScript "-"; + decrease-brightness = mkBrightnessScript "-" "decrease-brightness script"; }; }; };