Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
57490387aa | ||
|
|
b76df1881b | ||
|
|
3fa4fb8ef7 |
No files matched your search
+6
-14
@@ -2,7 +2,7 @@
|
|||||||
"layer": "top",
|
"layer": "top",
|
||||||
"modules-left": ["sway/workspaces"],
|
"modules-left": ["sway/workspaces"],
|
||||||
"modules-center": ["clock"],
|
"modules-center": ["clock"],
|
||||||
"modules-right": ["custom/playerctl", "custom/weather", "pulseaudio", "custom/network", "custom/ollama", "tray"],
|
"modules-right": ["custom/playerctl", "custom/weather", "pulseaudio", "network", "tray"],
|
||||||
"sway/workspaces": {
|
"sway/workspaces": {
|
||||||
"disable-scroll": true,
|
"disable-scroll": true,
|
||||||
"all-outputs": true,
|
"all-outputs": true,
|
||||||
@@ -34,22 +34,14 @@
|
|||||||
"exec": "wttrbar --fahrenheit --main-indicator 'temp_F' --location 'Grand Rapids'",
|
"exec": "wttrbar --fahrenheit --main-indicator 'temp_F' --location 'Grand Rapids'",
|
||||||
"return-type": "json"
|
"return-type": "json"
|
||||||
},
|
},
|
||||||
"custom/network": {
|
"network": {
|
||||||
"format": "{text}",
|
"format-wifi": " {essid} ({signalStrength}%)",
|
||||||
"return-type": "json",
|
"format-ethernet": " {ipaddr}",
|
||||||
"exec": "bash $HOME/.config/waybar/network.sh",
|
"format-disconnected": "⚠ Disconnected",
|
||||||
"on-click": "bash $HOME/.config/waybar/network.sh toggle",
|
"family": "ipv4",
|
||||||
"interval": 5,
|
"interval": 5,
|
||||||
"tooltip": false
|
"tooltip": false
|
||||||
},
|
},
|
||||||
"custom/ollama": {
|
|
||||||
"format": "{text}",
|
|
||||||
"return-type": "json",
|
|
||||||
"exec": "bash $HOME/.config/waybar/ollama.sh",
|
|
||||||
"on-click": "bash $HOME/.config/waybar/ollama.sh toggle",
|
|
||||||
"interval": 2,
|
|
||||||
"tooltip": true
|
|
||||||
},
|
|
||||||
"pulseaudio": {
|
"pulseaudio": {
|
||||||
"format": "{icon} {volume}%",
|
"format": "{icon} {volume}%",
|
||||||
"format-bluetooth": "{icon} {volume}%",
|
"format-bluetooth": "{icon} {volume}%",
|
||||||
|
|||||||
@@ -1,54 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -u
|
|
||||||
|
|
||||||
state_dir="${XDG_RUNTIME_DIR:-/tmp}/waybar-${UID}"
|
|
||||||
state_file="$state_dir/public-ip"
|
|
||||||
|
|
||||||
if [[ ${1:-} == toggle ]]; then
|
|
||||||
mkdir -p -m 700 "$state_dir"
|
|
||||||
if [[ -s $state_file ]]; then
|
|
||||||
: > "$state_file"
|
|
||||||
else
|
|
||||||
public_ip=$(curl -4fsS --max-time 5 https://wtfismyip.com/json 2>/dev/null |
|
|
||||||
jq -er '.YourFuckingIPAddress | select(type == "string") | split(".") |
|
|
||||||
select(length == 4 and all(.[]; test("^[0-9]{1,3}$") and (tonumber <= 255))) |
|
|
||||||
join(".")' 2>/dev/null) || exit 0
|
|
||||||
printf '%s\n' "$public_ip" > "$state_file"
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
route=$(ip -4 route get 1.1.1.1 2>/dev/null) || route=
|
|
||||||
if [[ ! $route =~ [[:space:]]dev[[:space:]]([^[:space:]]+) ]]; then
|
|
||||||
jq -cn '{text: "⚠ Disconnected", class: "disconnected"}'
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
interface=${BASH_REMATCH[1]}
|
|
||||||
if [[ ! $route =~ [[:space:]]src[[:space:]]([0-9.]+) ]]; then
|
|
||||||
jq -cn '{text: "⚠ Disconnected", class: "disconnected"}'
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
local_ip=${BASH_REMATCH[1]}
|
|
||||||
|
|
||||||
if [[ -s $state_file ]]; then
|
|
||||||
jq -cn --rawfile ip "$state_file" '{text: (" " + ($ip | rtrimstr("\n"))), class: "public"}'
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $(nmcli -g GENERAL.TYPE device show "$interface" 2>/dev/null) == wifi ]]; then
|
|
||||||
essid=$(nmcli -g GENERAL.CONNECTION device show "$interface" 2>/dev/null | head -n 1)
|
|
||||||
signal=$(nmcli -t -f IN-USE,SIGNAL device wifi list ifname "$interface" --rescan no 2>/dev/null |
|
|
||||||
awk -F: '$1 == "*" { print $2; exit }')
|
|
||||||
if [[ -n $essid && $essid != -- ]]; then
|
|
||||||
text=" $essid"
|
|
||||||
[[ -n $signal ]] && text="${text} (${signal}%)"
|
|
||||||
else
|
|
||||||
text=" $local_ip"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
text=" $local_ip"
|
|
||||||
fi
|
|
||||||
|
|
||||||
jq -cn --arg text "$text" '{text: $text, class: "connected"}'
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -u
|
|
||||||
|
|
||||||
service=ollama.service
|
|
||||||
|
|
||||||
# The shared Waybar config is also used by hosts without Ollama.
|
|
||||||
if ! systemctl --user cat "$service" >/dev/null 2>&1; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ${1:-} == toggle ]]; then
|
|
||||||
if systemctl --user is-active --quiet "$service"; then
|
|
||||||
systemctl --user stop "$service"
|
|
||||||
else
|
|
||||||
systemctl --user start "$service"
|
|
||||||
fi
|
|
||||||
exit $?
|
|
||||||
fi
|
|
||||||
|
|
||||||
if systemctl --user is-active --quiet "$service"; then
|
|
||||||
printf '%s\n' '{"text":"<span foreground=\"#9ece6a\">●</span> Local AI","tooltip":"Ollama is running. Click to stop it.","class":"running"}'
|
|
||||||
else
|
|
||||||
printf '%s\n' '{"text":"<span foreground=\"#f7768e\">●</span> Local AI","tooltip":"Ollama is stopped. Click to start it.","class":"stopped"}'
|
|
||||||
fi
|
|
||||||
@@ -31,12 +31,11 @@ window#waybar {
|
|||||||
#cpu,
|
#cpu,
|
||||||
#memory,
|
#memory,
|
||||||
#pulseaudio,
|
#pulseaudio,
|
||||||
#custom-network,
|
#network,
|
||||||
#custom-ollama,
|
|
||||||
#battery,
|
#battery,
|
||||||
#clock,
|
#clock,
|
||||||
#custom-playerctl {
|
#custom-playerctl {
|
||||||
padding: 0 5px;
|
padding: 0 10px;
|
||||||
margin: 0 5px;
|
margin: 0 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +65,7 @@ window#waybar {
|
|||||||
animation-direction: alternate;
|
animation-direction: alternate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-network.disconnected {
|
#network.disconnected {
|
||||||
color: #cc241d;
|
color: #cc241d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Generated
+12
-12
@@ -267,11 +267,11 @@
|
|||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1790872110,
|
"lastModified": 1791626528,
|
||||||
"narHash": "sha256-dXrMwUGE/9pT0J7MeW1BuYxpnnPPc52/oLxfqQF/5q8=",
|
"narHash": "sha256-kWT9qwTKo6igVW+PweF2yZGlnfGRAcK4gsxpC/Yv7vA=",
|
||||||
"owner": "purpleclay",
|
"owner": "purpleclay",
|
||||||
"repo": "go-overlay",
|
"repo": "go-overlay",
|
||||||
"rev": "8e136930a2a34c501d612f7b7b0ee8806531768f",
|
"rev": "63bc96eab718f6f78c6d78f1309c3a58a8babfc6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -417,11 +417,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1790920529,
|
"lastModified": 1791426274,
|
||||||
"narHash": "sha256-nQyFkMR78WP6PiXKkDW2SjqzLf/spQqjRuxRGSbcV8k=",
|
"narHash": "sha256-MWhktfFtFE8Jl7bf9Pkp7TR5MSdYCjCswSo0Gkb4ywc=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "774debe7a0d1b496e35677ad955a1011c6ff74f3",
|
"rev": "7c8764b7c7b09b34f632464276218ef9090eaa11",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -507,11 +507,11 @@
|
|||||||
"nixpkgs": "nixpkgs_4"
|
"nixpkgs": "nixpkgs_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1790797021,
|
"lastModified": 1791651540,
|
||||||
"narHash": "sha256-H2vA5yUaS58Wtdp46piMbRqSQe3Qn716i/oZPYoyhp8=",
|
"narHash": "sha256-cxmegj6Tg0xYk8A2icSl3v1+SeVDj+bESU2BnCqERPE=",
|
||||||
"owner": "notashelf",
|
"owner": "notashelf",
|
||||||
"repo": "nvf",
|
"repo": "nvf",
|
||||||
"rev": "2477cb0a5f394df36ddc72867c2657225d93d157",
|
"rev": "19992540d372466340ededda0c065a3a0a962fd6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -624,11 +624,11 @@
|
|||||||
"nixpkgs": "nixpkgs_5"
|
"nixpkgs": "nixpkgs_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1791013993,
|
"lastModified": 1791620365,
|
||||||
"narHash": "sha256-BiFPwFsbFnZH5GfWbQFKYuQNg+67aNQCoRSRNTeJFQc=",
|
"narHash": "sha256-CVZXIDNw7HEwyD8X6q9Ln370Sc0ZqRlTzDRwOZ1hJMY=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "7470661ba2b51156048af08464b82020223dc942",
|
"rev": "e90fafa71b440fabcd52dd7fb017ab2da81c781a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{ lib
|
{ lib
|
||||||
, pkgs
|
, pkgs
|
||||||
, userName
|
, userName
|
||||||
|
, isNixOS ? true
|
||||||
, ...
|
, ...
|
||||||
}: let
|
}: let
|
||||||
# Have a file sturcture that holds all the configuration files that can't be configured by Nix
|
# Have a file sturcture that holds all the configuration files that can't be configured by Nix
|
||||||
@@ -30,6 +31,19 @@ in
|
|||||||
stateVersion = "24.11";
|
stateVersion = "24.11";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
(lib.mkIf isNixOS {
|
||||||
|
sessionVariables = {
|
||||||
|
XDG_CURRENT_DESKTOP = "sway";
|
||||||
|
XDG_SESSION_TYPE = "wayland";
|
||||||
|
XDG_SESSION_DESKTOP = "sway";
|
||||||
|
XDG_CONFIG_HOME = "$HOME/.config";
|
||||||
|
XDG_CACHE_HOME = "$HOME/.cache";
|
||||||
|
XDG_DATA_HOME = "$HOME/.local/share";
|
||||||
|
XDG_STATE_HOME = "$HOME/.local/state";
|
||||||
|
NIXOS_OZONE_WL = "1";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
(lib.mkIf pkgs.stdenv.isLinux {
|
(lib.mkIf pkgs.stdenv.isLinux {
|
||||||
pointerCursor = {
|
pointerCursor = {
|
||||||
gtk.enable = true;
|
gtk.enable = true;
|
||||||
|
|||||||
+1
-4
@@ -27,10 +27,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
lsp.servers = [ "typescript-language-server" "deno" ];
|
lsp.servers = [ "typescript-language-server" "deno" ];
|
||||||
};
|
};
|
||||||
csharp = {
|
csharp.enable = true;
|
||||||
enable = true;
|
|
||||||
lsp.servers = [ "omnisharp" ];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
utility.surround.enable = true;
|
utility.surround.enable = true;
|
||||||
|
|||||||
+8
-2
@@ -66,8 +66,14 @@
|
|||||||
"The gods themselves will be my meal. Your dear companions my dessert. Upon this world I'll feast, and death shall follow in my wake. All your hate, all your rage, you will render unto me." \
|
"The gods themselves will be my meal. Your dear companions my dessert. Upon this world I'll feast, and death shall follow in my wake. All your hate, all your rage, you will render unto me." \
|
||||||
"Boring, boring, boring" \
|
"Boring, boring, boring" \
|
||||||
"Would you be 'happier' had I a 'good reason'?" \
|
"Would you be 'happier' had I a 'good reason'?" \
|
||||||
"A test of your reflexes!"
|
"A test of your reflexes!" \
|
||||||
|
"Yer a wizard, Wyatt" \
|
||||||
|
"Yer a lizard, Wyatt" \
|
||||||
|
"Po-Tay-To boil em mash em stick em in a stew" \
|
||||||
|
"Oh look it's the cutie patootie potato!"
|
||||||
|
"What a charming young man" \
|
||||||
|
"Wyatt, you are smart, kind, and resilient. I believe in you no matter what life throws at you! Kick this project's butt!! - Nico" \
|
||||||
|
"Ganbatte!"
|
||||||
|
|
||||||
set choose_meme (random)"%"(count $memes)
|
set choose_meme (random)"%"(count $memes)
|
||||||
set choose_meme $memes[(math $choose_meme"+1")]
|
set choose_meme $memes[(math $choose_meme"+1")]
|
||||||
|
|||||||
+1
-5
@@ -36,10 +36,6 @@ in {
|
|||||||
xdg.configFile."sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
|
xdg.configFile."sway/config".source = lib.mkForce (dirs.defaults + /sway/config);
|
||||||
xdg.configFile."waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config);
|
xdg.configFile."waybar/config".source = lib.mkForce (dirs.defaults + /waybar/config);
|
||||||
xdg.configFile."waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css);
|
xdg.configFile."waybar/style.css".source = lib.mkForce (dirs.defaults + /waybar/style.css);
|
||||||
xdg.configFile."waybar/network.sh".source = dirs.defaults + /waybar/network.sh;
|
|
||||||
xdg.configFile."waybar/ollama.sh".source = dirs.defaults + /waybar/ollama.sh;
|
|
||||||
|
|
||||||
home.packages = with pkgs; [ curl iproute2 networkmanager ];
|
|
||||||
|
|
||||||
programs.wofi = {
|
programs.wofi = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
@@ -157,6 +153,6 @@ in {
|
|||||||
|
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
enable = pkgs.stdenv.isLinux;
|
enable = pkgs.stdenv.isLinux;
|
||||||
systemd.enable = false;
|
systemd.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
Whitespace-only changes.
@@ -1,178 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cfg = config.desktop;
|
|
||||||
|
|
||||||
defaultWaylandPackages = with pkgs; [
|
|
||||||
brightnessctl
|
|
||||||
cliphist
|
|
||||||
foot
|
|
||||||
grim
|
|
||||||
libnotify
|
|
||||||
mako
|
|
||||||
networkmanagerapplet
|
|
||||||
playerctl
|
|
||||||
polkit_gnome
|
|
||||||
pavucontrol
|
|
||||||
rofi
|
|
||||||
slurp
|
|
||||||
waybar
|
|
||||||
wl-clipboard
|
|
||||||
xdg-utils
|
|
||||||
];
|
|
||||||
|
|
||||||
defaultSwayPackages =
|
|
||||||
defaultWaylandPackages
|
|
||||||
++ (with pkgs; [
|
|
||||||
pulseaudio
|
|
||||||
swayidle
|
|
||||||
swaylock
|
|
||||||
wmenu
|
|
||||||
]);
|
|
||||||
|
|
||||||
resolvedDisplayManager =
|
|
||||||
if cfg.displayManager != "auto"
|
|
||||||
then cfg.displayManager
|
|
||||||
else if cfg.gnome.enable
|
|
||||||
then "gdm"
|
|
||||||
else if cfg.xfce.enable
|
|
||||||
then "lightdm"
|
|
||||||
else "none";
|
|
||||||
in {
|
|
||||||
imports = [./xdg.nix];
|
|
||||||
|
|
||||||
options.desktop = {
|
|
||||||
displayManager = lib.mkOption {
|
|
||||||
type = lib.types.enum ["auto" "none" "gdm" "lightdm" "ly"];
|
|
||||||
default = "auto";
|
|
||||||
description = ''
|
|
||||||
Display manager to enable. In auto mode, GDM is used when GNOME is
|
|
||||||
enabled, LightDM is used when XFCE is enabled, and no display manager
|
|
||||||
is enabled for compositor-only configurations.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
gnome.enable = lib.mkEnableOption "the vanilla GNOME desktop environment";
|
|
||||||
|
|
||||||
xfce.enable = lib.mkEnableOption "the vanilla XFCE desktop environment";
|
|
||||||
|
|
||||||
sway = {
|
|
||||||
enable = lib.mkEnableOption "the Sway Wayland compositor";
|
|
||||||
|
|
||||||
extraPackages = lib.mkOption {
|
|
||||||
type = with lib.types; listOf package;
|
|
||||||
default = defaultSwayPackages;
|
|
||||||
defaultText = lib.literalExpression ''
|
|
||||||
with pkgs; [
|
|
||||||
brightnessctl
|
|
||||||
cliphist
|
|
||||||
foot
|
|
||||||
grim
|
|
||||||
libnotify
|
|
||||||
mako
|
|
||||||
networkmanagerapplet
|
|
||||||
playerctl
|
|
||||||
polkit_gnome
|
|
||||||
pulseaudio
|
|
||||||
pavucontrol
|
|
||||||
rofi
|
|
||||||
slurp
|
|
||||||
swayidle
|
|
||||||
swaylock
|
|
||||||
waybar
|
|
||||||
wl-clipboard
|
|
||||||
wmenu
|
|
||||||
xdg-utils
|
|
||||||
]
|
|
||||||
'';
|
|
||||||
description = "Packages installed alongside Sway.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
hyprland = {
|
|
||||||
enable = lib.mkEnableOption "the Hyprland Wayland compositor";
|
|
||||||
|
|
||||||
extraPackages = lib.mkOption {
|
|
||||||
type = with lib.types; listOf package;
|
|
||||||
default = defaultWaylandPackages;
|
|
||||||
defaultText = lib.literalExpression ''
|
|
||||||
with pkgs; [
|
|
||||||
brightnessctl
|
|
||||||
cliphist
|
|
||||||
foot
|
|
||||||
grim
|
|
||||||
libnotify
|
|
||||||
mako
|
|
||||||
networkmanagerapplet
|
|
||||||
playerctl
|
|
||||||
polkit_gnome
|
|
||||||
pavucontrol
|
|
||||||
rofi
|
|
||||||
slurp
|
|
||||||
waybar
|
|
||||||
wl-clipboard
|
|
||||||
xdg-utils
|
|
||||||
]
|
|
||||||
'';
|
|
||||||
description = ''
|
|
||||||
Packages installed alongside Hyprland. Hyprlock and Hypridle are
|
|
||||||
enabled separately so their NixOS integration, including PAM, is
|
|
||||||
configured as well.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkMerge [
|
|
||||||
(lib.mkIf cfg.gnome.enable {
|
|
||||||
services.desktopManager.gnome.enable = true;
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf cfg.xfce.enable {
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
desktopManager.xfce.enable = true;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf cfg.sway.enable {
|
|
||||||
programs.sway = {
|
|
||||||
enable = true;
|
|
||||||
wrapperFeatures.gtk = true;
|
|
||||||
extraPackages = cfg.sway.extraPackages;
|
|
||||||
extraSessionCommands = ''
|
|
||||||
export XDG_SESSION_TYPE=wayland
|
|
||||||
export XDG_SESSION_DESKTOP=sway
|
|
||||||
export NIXOS_OZONE_WL=1
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf cfg.hyprland.enable {
|
|
||||||
programs = {
|
|
||||||
hyprland.enable = true;
|
|
||||||
hyprlock.enable = lib.mkDefault true;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = cfg.hyprland.extraPackages;
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf (resolvedDisplayManager == "gdm") {
|
|
||||||
services.displayManager.gdm.enable = true;
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf (resolvedDisplayManager == "lightdm") {
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
displayManager.lightdm.enable = true;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf (resolvedDisplayManager == "ly") {
|
|
||||||
services.displayManager.ly.enable = true;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
cfg = config.desktop;
|
|
||||||
needsGtkPortal = cfg.xfce.enable || cfg.hyprland.enable;
|
|
||||||
usesPortal = cfg.gnome.enable || cfg.xfce.enable || cfg.sway.enable || cfg.hyprland.enable;
|
|
||||||
in {
|
|
||||||
config = lib.mkMerge [
|
|
||||||
# GNOME and Sway configure their own portals in NixOS. XFCE needs a
|
|
||||||
# portal; Hyprland benefits from GTK as a fallback to its native one.
|
|
||||||
(lib.mkIf needsGtkPortal {
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
|
||||||
};
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf (cfg.sway.enable || needsGtkPortal) {
|
|
||||||
xdg.portal.config.common.default = ["gtk"];
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf cfg.sway.enable {
|
|
||||||
xdg.portal.wlr.settings.screencast = {
|
|
||||||
chooser_type = "dmenu";
|
|
||||||
chooser_cmd = "${pkgs.wmenu}/bin/wmenu -l 10 -p 'Select screen to share:'";
|
|
||||||
};
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf (usesPortal && config.services.gnome.gnome-keyring.enable) {
|
|
||||||
xdg.portal.config.common."org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
|
||||||
})
|
|
||||||
|
|
||||||
(lib.mkIf (cfg.sway.enable && config.services.gnome.gnome-keyring.enable) {
|
|
||||||
xdg.portal.config.sway."org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
|
||||||
})
|
|
||||||
|
|
||||||
# A per-desktop config takes precedence over Hyprland's packaged config,
|
|
||||||
# so include its native portal whenever adding a Secret preference.
|
|
||||||
(lib.mkIf (cfg.hyprland.enable && config.services.gnome.gnome-keyring.enable) {
|
|
||||||
xdg.portal.config.hyprland = {
|
|
||||||
default = ["hyprland" "gtk"];
|
|
||||||
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -22,7 +22,6 @@ in {
|
|||||||
})
|
})
|
||||||
../../apps/gaming.nix
|
../../apps/gaming.nix
|
||||||
../../apps/appimage.nix
|
../../apps/appimage.nix
|
||||||
../../desktop
|
|
||||||
../../graphics
|
../../graphics
|
||||||
../../pwrMgmt
|
../../pwrMgmt
|
||||||
../../networking/core.nix
|
../../networking/core.nix
|
||||||
@@ -75,6 +74,7 @@ in {
|
|||||||
brightnessctl
|
brightnessctl
|
||||||
wttrbar
|
wttrbar
|
||||||
cliphist
|
cliphist
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
xdg-utils
|
xdg-utils
|
||||||
flatpak-xdg-utils
|
flatpak-xdg-utils
|
||||||
desktop-file-utils
|
desktop-file-utils
|
||||||
@@ -86,25 +86,9 @@ in {
|
|||||||
vlc
|
vlc
|
||||||
];
|
];
|
||||||
|
|
||||||
systemd.user.services.ollama = {
|
|
||||||
description = "Ollama local AI server";
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = "${pkgs.ollama-rocm}/bin/ollama serve";
|
|
||||||
Restart = "on-failure";
|
|
||||||
Environment = [
|
|
||||||
"OLLAMA_HOST=0.0.0.0:11434"
|
|
||||||
"OLLAMA_CONTEXT_LENGTH=64000"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Enable Polkit
|
# Enable Polkit
|
||||||
security.polkit.enable = true;
|
security.polkit.enable = true;
|
||||||
|
|
||||||
# Enable desktop support (sway)
|
|
||||||
desktop.sway.enable = true;
|
|
||||||
desktop.displayManager = "ly";
|
|
||||||
|
|
||||||
# Graphics module (../../graphics/default.nix)
|
# Graphics module (../../graphics/default.nix)
|
||||||
graphics = {
|
graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -205,6 +189,27 @@ in {
|
|||||||
# AppImage support
|
# AppImage support
|
||||||
appimage.enable = true;
|
appimage.enable = true;
|
||||||
|
|
||||||
|
# XDG stuff
|
||||||
|
xdg = {
|
||||||
|
portal = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
sway = {
|
||||||
|
default = ["wlr" "gtk"];
|
||||||
|
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
||||||
|
};
|
||||||
|
common = {
|
||||||
|
default = ["gtk"];
|
||||||
|
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extraPortals = with pkgs; [
|
||||||
|
xdg-desktop-portal-wlr
|
||||||
|
xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# sched_ext userspace CPU scheduling stuff - idk
|
# sched_ext userspace CPU scheduling stuff - idk
|
||||||
services.scx = {
|
services.scx = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
Reference in new issue
Block a user