Compare commits

...

4 commits

Author SHA1 Message Date
6249eba566
refactor session vars 2026-02-21 20:02:46 -05:00
cd53682017
update system/default.nix 2026-02-21 20:02:46 -05:00
f720895b42
add niri blur 2026-02-21 20:02:42 -05:00
f34538c20a
make systemd services more robust 2026-02-21 20:02:39 -05:00
10 changed files with 178 additions and 233 deletions

50
flake.lock generated
View file

@ -307,8 +307,12 @@
}, },
"niri": { "niri": {
"inputs": { "inputs": {
"niri-stable": "niri-stable", "niri-stable": [
"niri-unstable": "niri-unstable", "niri-blur"
],
"niri-unstable": [
"niri-blur"
],
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
@ -319,48 +323,33 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable" "xwayland-satellite-unstable": "xwayland-satellite-unstable"
}, },
"locked": { "locked": {
"lastModified": 1771514840, "lastModified": 1771682768,
"narHash": "sha256-t3WbZvwoDj/75YDX/nwkZuxanZLZaWr9meSfKswaN6g=", "narHash": "sha256-RJ9RVJSAktCgWiqLDCjYmx9KgMuLaszUrI28k92Pa2I=",
"owner": "sodiboo", "owner": "sckova",
"repo": "niri-flake", "repo": "niri-flake",
"rev": "4f69ab280e9bb34e2c0b67fdfa6f0978a170ef56", "rev": "383bd9d32706b163807b05983418069b2e692310",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "sodiboo", "owner": "sckova",
"ref": "feat/blur",
"repo": "niri-flake", "repo": "niri-flake",
"type": "github" "type": "github"
} }
}, },
"niri-stable": { "niri-blur": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1756556321, "lastModified": 1771672342,
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", "narHash": "sha256-52CxMRH2kVGpsPBiZM+996b6i/3XkmOrySm5zqwWc+o=",
"owner": "YaLTeR", "owner": "niri-wm",
"repo": "niri", "repo": "niri",
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", "rev": "86f42d1ed9ab787c52ace073e0b3218e26530d25",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "YaLTeR", "owner": "niri-wm",
"ref": "v25.08", "ref": "wip/branch",
"repo": "niri",
"type": "github"
}
},
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1771305475,
"narHash": "sha256-lqweVTwHhYc+9T33cysp38gVwxaibGJHriOPZXWyhCY=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "a2a52911757cb3b497db9407592f9b4c439571ea",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri", "repo": "niri",
"type": "github" "type": "github"
} }
@ -595,6 +584,7 @@
"catppuccin-discord": "catppuccin-discord", "catppuccin-discord": "catppuccin-discord",
"home-manager": "home-manager", "home-manager": "home-manager",
"niri": "niri", "niri": "niri",
"niri-blur": "niri-blur",
"nix-cachyos-kernel": "nix-cachyos-kernel", "nix-cachyos-kernel": "nix-cachyos-kernel",
"nixpkgs": [ "nixpkgs": [
"nixpkgs-unstable" "nixpkgs-unstable"

View file

@ -44,11 +44,16 @@
}; };
niri = { niri = {
url = "github:sodiboo/niri-flake"; url = "github:sckova/niri-flake/feat/blur";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs-stable"; inputs.nixpkgs-stable.follows = "nixpkgs-stable";
# inputs.niri-stable.follows = "niri-blur"; inputs.niri-stable.follows = "niri-blur";
# inputs.niri-unstable.follows = "niri-blur"; inputs.niri-unstable.follows = "niri-blur";
};
niri-blur = {
url = "github:niri-wm/niri/wip/branch";
flake = false;
}; };
# niri-blur = { # niri-blur = {

View file

@ -1,15 +1,10 @@
{ {
config,
pkgs, pkgs,
... ...
}: }:
{ {
home = { home.packages = with pkgs; [ openmw ];
packages = with pkgs; [ openmw ]; home.sessionVariables.SDL_VIDEO_DRIVER = "wayland";
sessionVariables = {
SDL_VIDEO_DRIVER = "wayland";
};
};
programs.firefox.profiles.default.search.engines.uesp = { programs.firefox.profiles.default.search.engines.uesp = {
name = "Unofficial Elder Scrolls Pages"; name = "Unofficial Elder Scrolls Pages";

View file

@ -19,11 +19,6 @@
moonlight-qt moonlight-qt
]; ];
# https://github.com/YaLTeR/niri/issues/2330#issuecomment-3256864777
programs.niri.settings.debug = {
render-drm-device = "/dev/dri/card2";
};
programs.noctalia-shell.settings.bar = { programs.noctalia-shell.settings.bar = {
position = "top"; position = "top";
density = "spacious"; density = "spacious";

View file

@ -31,6 +31,8 @@
home.sessionVariables = { home.sessionVariables = {
QT_QPA_PLATFORMTHEME = "qt6ct"; QT_QPA_PLATFORMTHEME = "qt6ct";
# this makes electron apps work per the wiki
NIXOS_OZONE_WL = "1";
}; };
gtk = { gtk = {

View file

@ -28,16 +28,14 @@
Description = "Mount Synology NAS with Rclone and Home Manager."; Description = "Mount Synology NAS with Rclone and Home Manager.";
After = [ "tailscaled.service" ]; After = [ "tailscaled.service" ];
Wants = [ "tailscaled.service" ]; Wants = [ "tailscaled.service" ];
StartLimitBurst = 5;
StartLimitIntervalSec = "1m";
}; };
Service = { Service = {
Type = "simple"; Type = "simple";
# ExecStartPre = "${pkgs.writeShellScript "synology-prep" '' Restart = "on-failure";
# if mountpoint -q %h/Synology; then RestartSec = "1m";
# /run/wrappers/bin/fusermount -uz %h/Synology
# fi
# ${pkgs.coreutils}/bin/mkdir -p %h/Synology
# ''}";
ExecStart = "${pkgs.writeShellScript "synology-mount" '' ExecStart = "${pkgs.writeShellScript "synology-mount" ''
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
@ -65,49 +63,4 @@
WantedBy = [ "default.target" ]; WantedBy = [ "default.target" ];
}; };
}; };
# systemd.user.services.synology-prefill = {
# Unit = {
# Description = "Prefill Synology NAS rclone cache";
# After = [ "synology-mount.service" ];
# Wants = [ "synology-mount.service" ];
# };
# Service = {
# Type = "simple";
# ExecStart = "${pkgs.writeShellScript "synology-prefill" ''
# #!/usr/bin/env bash
# set -euo pipefail
# ${pkgs.rclone}/bin/rclone rc vfs/refresh -v --fast-list recursive=true >/dev/null
# ''}";
# StandardOutput = "journal";
# StandardError = "journal";
# Restart = "on-failure";
# };
# Install = {
# WantedBy = [ "default.target" ];
# };
# };
# systemd.user.services.input-leap = {
# Unit = {
# Description = "Autostart Input Leap";
# After = [ "graphical-session.target" ];
# };
# Service = {
# Type = "oneshot";
# RemainAfterExit = true;
# PassEnvironment = "DISPLAY";
# ExecStart = "${pkgs.writeShellScript "input-leap-start" ''
# sleep 5
# ${pkgs.input-leap}/bin/input-leap
# ''}";
# };
# Install = {
# WantedBy = [ "graphical-session.target" ];
# };
# };
} }

View file

@ -1,12 +1,11 @@
{ {
pkgs, pkgs,
config, config,
lib,
... ...
}: }:
{ {
home.sessionVariables = { home.sessionVariables.EDITOR = lib.mkForce "kitty nvim";
EDITOR = "nvim";
};
home.packages = with pkgs; [ home.packages = with pkgs; [
kdePackages.qtdeclarative kdePackages.qtdeclarative

View file

@ -83,13 +83,11 @@
}; };
cursor = { cursor = {
hide-when-typing = false; hide-when-typing = false;
# hide-after-inactive-ms = 10000;
size = config.userOptions.cursor.size; size = config.userOptions.cursor.size;
theme = config.userOptions.cursor.name; theme = config.userOptions.cursor.name;
}; };
layout = { layout = {
gaps = 4; gaps = 4;
# background-color = base10;
background-color = "transparent"; background-color = "transparent";
default-column-width = { default-column-width = {
proportion = 0.5; proportion = 0.5;
@ -121,12 +119,6 @@
softness = 30; softness = 30;
color = base11 + "BF"; color = base11 + "BF";
}; };
# blur = {
# enable = true;
# passes = 4;
# radius = 4;
# noise = 0.1;
# };
}; };
window-rules = [ window-rules = [
{ {
@ -137,7 +129,13 @@
bottom-right = 8.0; bottom-right = 8.0;
}; };
clip-to-geometry = true; clip-to-geometry = true;
opacity = 0.975; opacity = 0.95;
background-effect = {
xray = false;
blur = true;
noise = 0.05;
saturation = 1;
};
} }
{ {
matches = [ matches = [
@ -170,7 +168,7 @@
is-active = false; is-active = false;
} }
]; ];
opacity = 0.95; opacity = 0.925;
} }
{ {
matches = [ matches = [
@ -191,11 +189,47 @@
{ {
app-id = "mpv"; app-id = "mpv";
} }
{
app-id = "firefox";
title = "Picture-in-Picture";
}
]; ];
opacity = 1.0; opacity = 1.0;
} }
{
# Kitty Fastfetch window
matches = [
{
app-id = "kitty";
title = "^fastfetch$";
}
];
open-floating = true;
baba-is-float = true;
min-width = 960;
min-height = 480;
max-width = 960;
max-height = 480;
}
]; ];
layer-rules = [ layer-rules = [
{
matches = [ { namespace = "noctalia-bar-content-.*"; } ];
background-effect = {
xray = false;
blur = true;
noise = 0.05;
saturation = 1;
};
}
{
matches = [ { namespace = "noctalia-bar-exclusion-top-.*"; } ];
place-within-backdrop = true;
}
{
matches = [ { namespace = "^launcher$"; } ];
opacity = 0.925;
}
{ {
matches = [ matches = [
{ {
@ -215,6 +249,10 @@
action.spawn = [ "kitty" ]; action.spawn = [ "kitty" ];
hotkey-overlay.title = "Open a Terminal: kitty"; hotkey-overlay.title = "Open a Terminal: kitty";
}; };
"Mod+Shift+T" = {
action.spawn-sh = [ "kitty --title fastfetch sh -c 'fastfetch; sleep 10'" ];
hotkey-overlay.title = "Open a Terminal with Fastfetch";
};
"Mod+Space" = { "Mod+Space" = {
action.spawn = [ "fuzzel" ]; action.spawn = [ "fuzzel" ];
hotkey-overlay.title = "Run an Application: Noctalia app launcher"; hotkey-overlay.title = "Run an Application: Noctalia app launcher";

View file

@ -6,8 +6,6 @@
systemd.user.services.awww-daemon = { systemd.user.services.awww-daemon = {
Unit.Description = "Wallpaper service using awww (daemon)"; Unit.Description = "Wallpaper service using awww (daemon)";
Service.ExecStart = "${pkgs.awww}/bin/awww-daemon"; Service.ExecStart = "${pkgs.awww}/bin/awww-daemon";
Unit.After = [ "graphical-session.target" ];
Unit.PartOf = [ "graphical-session.target" ];
Install.WantedBy = [ "graphical-session.target" ]; Install.WantedBy = [ "graphical-session.target" ];
}; };
@ -26,10 +24,10 @@
systemd.user.services.bing-wallpaper = { systemd.user.services.bing-wallpaper = {
Unit.Description = "Download and set Bing wallpaper of the day"; Unit.Description = "Download and set Bing wallpaper of the day";
Unit.StartLimitBurst = 5; Unit.StartLimitBurst = 6;
Unit.StartLimitIntervalSec = "10m"; Unit.StartLimitIntervalSec = "10m";
Service.Restart = "on-failure"; Service.Restart = "on-failure";
Service.RestartSec = "1m"; Service.RestartSec = "10s";
Service.Type = "oneshot"; Service.Type = "oneshot";
Service.ExecStart = pkgs.lib.getExe ( Service.ExecStart = pkgs.lib.getExe (
pkgs.writeShellApplication { pkgs.writeShellApplication {
@ -68,6 +66,7 @@
} }
); );
Service.ExecStartPost = "${pkgs.systemd}/bin/systemctl --user restart awww-setter.service"; Service.ExecStartPost = "${pkgs.systemd}/bin/systemctl --user restart awww-setter.service";
Install.WantedBy = [ "graphical-session.target" ];
}; };
systemd.user.timers.bing-wallpaper = { systemd.user.timers.bing-wallpaper = {

View file

@ -2,28 +2,16 @@
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # and in the NixOS manual (accessible by running nixos-help).
{ {
config,
pkgs, pkgs,
... ...
}: }:
{ {
environment.sessionVariables = {
# this makes electron apps work per the wiki
NIXOS_OZONE_WL = "1";
};
boot = { boot = {
plymouth = { plymouth.enable = true;
enable = true; plymouth.logo = "${pkgs.nixos-icons}/share/icons/hicolor/64x64/apps/nix-snowflake-white.png";
logo = "${pkgs.nixos-icons}/share/icons/hicolor/64x64/apps/nix-snowflake-white.png";
};
loader = { loader = {
timeout = 3; timeout = 3;
# systemd-boot = {
# enable = true;
# consoleMode = lib.mkForce "auto";
# configurationLimit = 10;
# };
limine = { limine = {
enable = true; enable = true;
maxGenerations = 10; maxGenerations = 10;
@ -40,7 +28,6 @@
}; };
}; };
}; };
# efi.canTouchEfiVariables = true;
}; };
kernelParams = [ kernelParams = [
"quiet" "quiet"
@ -55,9 +42,93 @@
initrd.verbose = false; initrd.verbose = false;
}; };
networking.networkmanager.enable = true; programs = {
hardware.bluetooth.enable = true; gnupg.agent = {
enable = true;
enableSSHSupport = true;
pinentryPackage = pkgs.pinentry-curses;
};
niri.enable = true;
niri.package = pkgs.niri-unstable;
dconf.enable = true;
dconf.profiles.user = {
databases = [
{
# breaks user-level indirect config of dconf
# lockAll = true;
settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
clock-format = "12h";
clock-show-weekday = true;
};
"org/gnome/desktop/wm/preferences" = {
button-layout = ":";
action-double-click-titlebar = "'none'";
};
"org/gnome/desktop/media-handling" = {
automount = false;
automount-open = false;
autorun-never = true;
};
"org/gnome/settings-daemon/plugins/power" = {
sleep-inactive-ac-type = "nothing";
};
"org/gnome/mutter" = {
edge-tiling = true;
dynamic-workspaces = true;
experimental-features = [ "variable-refresh-rate" ];
};
};
}
];
};
};
# aerothemeplasma = {
# enable = true;
# plasma.enable = true;
# fonts.enable = false;
# plymouth.enable = false;
# sddm.enable = true;
# };
services = {
desktopManager.plasma6.enable = true;
displayManager = {
sddm.enable = true;
sddm.wayland.enable = true;
defaultSession = "niri";
};
gnome.gnome-keyring.enable = true;
libinput.enable = true;
printing.enable = true;
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
udisks2.enable = true;
gvfs.enable = true;
upower.enable = true;
power-profiles-daemon.enable = true;
openssh.enable = true;
};
environment.systemPackages = with pkgs; [
git
firefoxpwa
];
security.pam.services.niri.enableGnomeKeyring = config.services.gnome.gnome-keyring.enable;
networking.firewall.enable = false;
networking.networkmanager.enable = true;
documentation.man.enable = true;
documentation.man.generateCaches = false;
hardware.graphics.enable = true;
hardware.bluetooth.enable = true;
time.timeZone = "America/New_York"; time.timeZone = "America/New_York";
i18n.defaultLocale = "en_US.UTF-8"; i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = { i18n.extraLocaleSettings = {
@ -72,108 +143,6 @@
LC_TIME = "en_US.UTF-8"; LC_TIME = "en_US.UTF-8";
}; };
# Enable OpenGL
hardware.graphics = {
enable = true;
};
programs.niri = {
enable = true;
package = pkgs.niri-unstable;
};
services.gnome.gnome-keyring.enable = true;
security.pam.services.niri.enableGnomeKeyring = true;
programs.dconf.enable = true;
programs.dconf.profiles.user = {
databases = [
{
# breaks user-level indirect config of dconf
# lockAll = true;
settings = {
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
clock-format = "12h";
clock-show-weekday = true;
};
"org/gnome/desktop/wm/preferences" = {
button-layout = ":";
action-double-click-titlebar = "'none'";
};
"org/gnome/desktop/media-handling" = {
automount = false;
automount-open = false;
autorun-never = true;
};
"org/gnome/settings-daemon/plugins/power" = {
sleep-inactive-ac-type = "nothing";
};
"org/gnome/mutter" = {
edge-tiling = true;
dynamic-workspaces = true;
experimental-features = [ "variable-refresh-rate" ];
};
};
}
];
};
# aerothemeplasma = {
# enable = true;
# plasma.enable = true;
# fonts.enable = false;
# plymouth.enable = false;
# sddm.enable = true;
# };
services = {
# displayManager = {
# gdm.enable = true;
# defaultSession = "niri";
# };
desktopManager.plasma6.enable = true;
displayManager = {
sddm.enable = true;
# defaultSession = "aerothemeplasma";
};
libinput.enable = true;
printing.enable = true;
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
udisks2.enable = true;
gvfs.enable = true;
upower.enable = true;
power-profiles-daemon.enable = true;
};
environment = {
systemPackages = with pkgs; [
git
firefoxpwa
distrobox
];
};
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
pinentryPackage = pkgs.pinentry-curses;
};
networking.firewall.enable = false;
documentation.man = {
enable = true;
generateCaches = false;
};
services.openssh.enable = true;
# This value determines the NixOS release from which the default # This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions # settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave # on your system were taken. Its perfectly fine and recommended to leave