feat(niri): giving niri a test drive
This commit is contained in:
158
flake.lock
generated
158
flake.lock
generated
@@ -1135,6 +1135,62 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"niri": {
|
||||||
|
"inputs": {
|
||||||
|
"niri-stable": "niri-stable",
|
||||||
|
"niri-unstable": "niri-unstable",
|
||||||
|
"nixpkgs": "nixpkgs_8",
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
|
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||||
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757698528,
|
||||||
|
"narHash": "sha256-vXZaxm2LfFrVyuUOKkyWpwR0K2WB7k2oo94HN1o4910=",
|
||||||
|
"owner": "sodiboo",
|
||||||
|
"repo": "niri-flake",
|
||||||
|
"rev": "2418edea929640fb5f856bc0a25fb91f54dfc229",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "sodiboo",
|
||||||
|
"repo": "niri-flake",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri-stable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1756556321,
|
||||||
|
"narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=",
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"ref": "v25.08",
|
||||||
|
"repo": "niri",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"niri-unstable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757656821,
|
||||||
|
"narHash": "sha256-MDaLusQZflxngGMU41g6cqabM7KE8I55UazzAZsjNN0=",
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"rev": "b7909dbf61c7c1511b9a51ef46e1d503d5ba3d05",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "YaLTeR",
|
||||||
|
"repo": "niri",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nix-gaming": {
|
"nix-gaming": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": [
|
"flake-parts": [
|
||||||
@@ -1212,6 +1268,38 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-stable": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757545623,
|
||||||
|
"narHash": "sha256-mCxPABZ6jRjUQx3bPP4vjA68ETbPLNz9V2pk9tO7pRQ=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "8cd5ce828d5d1d16feff37340171a98fc3bf6526",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-25.05",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_10": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1756696532,
|
||||||
|
"narHash": "sha256-6FWagzm0b7I/IGigOv9pr6LL7NQ86mextfE8g8Q6HBg=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "58dcbf1ec551914c3756c267b8b9c8c86baa1b2f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1755186698,
|
"lastModified": 1755186698,
|
||||||
@@ -1309,6 +1397,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_8": {
|
"nixpkgs_8": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757487488,
|
||||||
|
"narHash": "sha256-zwE/e7CuPJUWKdvvTCB7iunV4E/+G0lKfv4kk/5Izdg=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "ab0f3607a6c7486ea22229b92ed2d355f1482ee0",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_9": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756787288,
|
"lastModified": 1756787288,
|
||||||
"narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=",
|
"narHash": "sha256-rw/PHa1cqiePdBxhF66V7R+WAP8WekQ0mCDG4CFqT8Y=",
|
||||||
@@ -1324,28 +1428,12 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_9": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1756696532,
|
|
||||||
"narHash": "sha256-6FWagzm0b7I/IGigOv9pr6LL7NQ86mextfE8g8Q6HBg=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "58dcbf1ec551914c3756c267b8b9c8c86baa1b2f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nvf": {
|
"nvf": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_4",
|
"flake-compat": "flake-compat_4",
|
||||||
"flake-parts": "flake-parts_5",
|
"flake-parts": "flake-parts_5",
|
||||||
"mnw": "mnw",
|
"mnw": "mnw",
|
||||||
"nixpkgs": "nixpkgs_9",
|
"nixpkgs": "nixpkgs_10",
|
||||||
"systems": "systems_4"
|
"systems": "systems_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
@@ -1430,8 +1518,9 @@
|
|||||||
"hyprlock": "hyprlock",
|
"hyprlock": "hyprlock",
|
||||||
"hyprpaper": "hyprpaper",
|
"hyprpaper": "hyprpaper",
|
||||||
"lanzaboote": "lanzaboote",
|
"lanzaboote": "lanzaboote",
|
||||||
|
"niri": "niri",
|
||||||
"nix-gaming": "nix-gaming",
|
"nix-gaming": "nix-gaming",
|
||||||
"nixpkgs": "nixpkgs_8",
|
"nixpkgs": "nixpkgs_9",
|
||||||
"nvf": "nvf",
|
"nvf": "nvf",
|
||||||
"systems": "systems_5",
|
"systems": "systems_5",
|
||||||
"treefmt-nix": "treefmt-nix",
|
"treefmt-nix": "treefmt-nix",
|
||||||
@@ -1692,6 +1781,39 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"xwayland-satellite-stable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1755491097,
|
||||||
|
"narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=",
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"rev": "388d291e82ffbc73be18169d39470f340707edaa",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"ref": "v0.7",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"xwayland-satellite-unstable": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1757179758,
|
||||||
|
"narHash": "sha256-TIvyWzRt1miQj6Cf5Wy8Qz43XIZX7c4vTVwRLAT5S4Y=",
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"rev": "970728d0d9d1eada342bb8860af214b601139e58",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "Supreeeme",
|
||||||
|
"repo": "xwayland-satellite",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"zen-browser": {
|
"zen-browser": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|||||||
@@ -135,6 +135,8 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
niri.url = "github:sodiboo/niri-flake";
|
||||||
|
|
||||||
# Custom
|
# Custom
|
||||||
tuirun = {
|
tuirun = {
|
||||||
url = "git+https://git.sr.ht/~canasta/tuirun";
|
url = "git+https://git.sr.ht/~canasta/tuirun";
|
||||||
|
|||||||
@@ -74,8 +74,8 @@
|
|||||||
enable = false;
|
enable = false;
|
||||||
};
|
};
|
||||||
hyprland = {
|
hyprland = {
|
||||||
enable = true;
|
enable = false;
|
||||||
withUWSM = true;
|
withUWSM = false;
|
||||||
};
|
};
|
||||||
inkscape = {
|
inkscape = {
|
||||||
enable = false;
|
enable = false;
|
||||||
@@ -89,6 +89,9 @@
|
|||||||
microfetch = {
|
microfetch = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
niri = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
pkgs = {
|
pkgs = {
|
||||||
enable = true;
|
enable = true;
|
||||||
desktop = {
|
desktop = {
|
||||||
|
|||||||
@@ -76,6 +76,7 @@
|
|||||||
./nixos/programs/lact
|
./nixos/programs/lact
|
||||||
./nixos/programs/lutris
|
./nixos/programs/lutris
|
||||||
./nixos/programs/microfetch
|
./nixos/programs/microfetch
|
||||||
|
./nixos/programs/niri
|
||||||
./nixos/programs/pkgs
|
./nixos/programs/pkgs
|
||||||
./nixos/programs/mysql-workbench
|
./nixos/programs/mysql-workbench
|
||||||
./nixos/programs/nh
|
./nixos/programs/nh
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ in
|
|||||||
main = {
|
main = {
|
||||||
layer = "overlay";
|
layer = "overlay";
|
||||||
font = "Input Sans Narrow Light:size=12";
|
font = "Input Sans Narrow Light:size=12";
|
||||||
launch-prefix = "uwsm app --";
|
# launch-prefix = "uwsm app --";
|
||||||
lines = "8";
|
lines = "8";
|
||||||
};
|
};
|
||||||
colors = {
|
colors = {
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ in
|
|||||||
enableFishIntegration = config.programs.fish.enable;
|
enableFishIntegration = config.programs.fish.enable;
|
||||||
enableZshIntegration = config.programs.zsh.enable;
|
enableZshIntegration = config.programs.zsh.enable;
|
||||||
settings = {
|
settings = {
|
||||||
theme = "GruvboxDark";
|
theme = "GruvboxDarkHard";
|
||||||
focus-follows-mouse = true;
|
focus-follows-mouse = true;
|
||||||
resize-overlay = "never";
|
resize-overlay = "never";
|
||||||
background-opacity = 0.95;
|
background-opacity = 0.95;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ in
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./languages.nix
|
./languages.nix
|
||||||
./gruvbox.nix
|
# ./gruvbox.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
@@ -26,7 +26,7 @@ in
|
|||||||
package = inputs.helix-flake.packages.${pkgs.system}.default;
|
package = inputs.helix-flake.packages.${pkgs.system}.default;
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
theme = "gruvbox_custom";
|
theme = "gruvbox_dark_hard";
|
||||||
editor = {
|
editor = {
|
||||||
color-modes = true;
|
color-modes = true;
|
||||||
scrolloff = 0;
|
scrolloff = 0;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
pkgs,
|
pkgs,
|
||||||
config,
|
|
||||||
lib,
|
lib,
|
||||||
osConfig,
|
osConfig,
|
||||||
cLib,
|
cLib,
|
||||||
@@ -9,7 +8,7 @@
|
|||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (lib) mkIf mkEnableOption;
|
inherit (lib) mkIf mkEnableOption;
|
||||||
cfg = config.home.programs.hyprlock;
|
cfg = osConfig.nixos.programs.hyprland;
|
||||||
|
|
||||||
hyprlockFlake = inputs.hyprlock.packages.${pkgs.system}.hyprlock;
|
hyprlockFlake = inputs.hyprlock.packages.${pkgs.system}.hyprlock;
|
||||||
# hyprlockPkg = pkgs.hyprlock;
|
# hyprlockPkg = pkgs.hyprlock;
|
||||||
@@ -18,9 +17,6 @@ let
|
|||||||
inherit (cLib.theme.bgs) resolve;
|
inherit (cLib.theme.bgs) resolve;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
|
||||||
home.programs.hyprlock.enable = mkEnableOption "Enables hyprlock";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
programs.hyprlock = {
|
programs.hyprlock = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -1,5 +1,22 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
"modules-left": [
|
||||||
|
"group/system"
|
||||||
|
],
|
||||||
|
"modules-center": [
|
||||||
|
"niri/workspaces"
|
||||||
|
],
|
||||||
|
"modules-right": [
|
||||||
|
"custom/progress",
|
||||||
|
"custom/systemd",
|
||||||
|
"group/tray",
|
||||||
|
"pulseaudio",
|
||||||
|
"backlight",
|
||||||
|
"battery",
|
||||||
|
"date",
|
||||||
|
"clock",
|
||||||
|
"custom/dunst"
|
||||||
|
],
|
||||||
"backlight": {
|
"backlight": {
|
||||||
"format": "<span foreground='#928374'>{icon}</span> {percent}%",
|
"format": "<span foreground='#928374'>{icon}</span> {percent}%",
|
||||||
"format-icons": [
|
"format-icons": [
|
||||||
@@ -128,6 +145,19 @@
|
|||||||
"*": 3
|
"*": 3
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"niri/workspaces": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
// Named workspaces
|
||||||
|
// (you need to configure them in niri)
|
||||||
|
"browser": "",
|
||||||
|
"discord": "",
|
||||||
|
"chat": "<b></b>",
|
||||||
|
// Icons by state
|
||||||
|
"active": "",
|
||||||
|
"default": ""
|
||||||
|
}
|
||||||
|
},
|
||||||
"memory": {
|
"memory": {
|
||||||
"format": "<span foreground='#928374'></span> {}%",
|
"format": "<span foreground='#928374'></span> {}%",
|
||||||
"states": {
|
"states": {
|
||||||
@@ -135,23 +165,6 @@
|
|||||||
"warning": 70
|
"warning": 70
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"modules-center": [
|
|
||||||
"hyprland/workspaces"
|
|
||||||
],
|
|
||||||
"modules-left": [
|
|
||||||
"group/system"
|
|
||||||
],
|
|
||||||
"modules-right": [
|
|
||||||
"custom/progress",
|
|
||||||
"custom/systemd",
|
|
||||||
"group/tray",
|
|
||||||
"pulseaudio",
|
|
||||||
"backlight",
|
|
||||||
"battery",
|
|
||||||
"date",
|
|
||||||
"clock",
|
|
||||||
"custom/dunst"
|
|
||||||
],
|
|
||||||
"network": {
|
"network": {
|
||||||
"format-disconnected": " <span foreground='#928374'></span> ",
|
"format-disconnected": " <span foreground='#928374'></span> ",
|
||||||
"format-ethernet": "<span foreground='#928374'></span> {ifname}",
|
"format-ethernet": "<span foreground='#928374'></span> {ifname}",
|
||||||
|
|||||||
@@ -1,21 +1,18 @@
|
|||||||
{
|
{
|
||||||
config,
|
osConfig,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (lib) mkIf mkEnableOption;
|
inherit (lib) mkIf;
|
||||||
cfg = config.home.services.hypridle;
|
cfg = osConfig.nixos.programs.hyprland;
|
||||||
|
|
||||||
hypridleFlake = inputs.hypridle.packages.${pkgs.system}.hypridle;
|
hypridleFlake = inputs.hypridle.packages.${pkgs.system}.hypridle;
|
||||||
# hypridlePkg = pkgs.hypridle;
|
# hypridlePkg = pkgs.hypridle;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
|
||||||
home.services.hypridle.enable = mkEnableOption "Enables hypridle";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.hypridle = {
|
services.hypridle = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
{
|
{
|
||||||
config,
|
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
@@ -8,9 +7,9 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (lib) mkIf mkEnableOption;
|
inherit (lib) mkIf;
|
||||||
|
|
||||||
cfg = config.home.services.hyprpaper;
|
cfg = osConfig.nixos.programs.hyprland;
|
||||||
hyprpaperFlake = inputs.hyprpaper.packages.${pkgs.system}.default;
|
hyprpaperFlake = inputs.hyprpaper.packages.${pkgs.system}.default;
|
||||||
bg = osConfig.settings.theme.background;
|
bg = osConfig.settings.theme.background;
|
||||||
bgs = cLib.theme.bgs;
|
bgs = cLib.theme.bgs;
|
||||||
@@ -35,10 +34,6 @@ let
|
|||||||
];
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
|
||||||
home.services.hyprpaper.enable = mkEnableOption "Enable hyprpaper wallpaper service";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.hyprpaper = {
|
services.hyprpaper = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -20,7 +20,14 @@ in
|
|||||||
|
|
||||||
config = mkMerge [
|
config = mkMerge [
|
||||||
(mkIf cfg.enable {
|
(mkIf cfg.enable {
|
||||||
programs.fish.enable = true;
|
programs.fish = {
|
||||||
|
enable = true;
|
||||||
|
vendor = {
|
||||||
|
completions.enable = true;
|
||||||
|
config.enable = true;
|
||||||
|
functions.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
})
|
})
|
||||||
|
|
||||||
(mkIf cfg.homeless.enable {
|
(mkIf cfg.homeless.enable {
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
# Taken from Misterio77 https://github.com/Misterio77/nix-config/blob/main/home/gabriel/features/cli/fish/up-or-search.fish
|
|
||||||
# Merge history upon doing up-or-search
|
|
||||||
# This lets multiple fish instances share history
|
|
||||||
if commandline --search-mode
|
|
||||||
commandline -f history-search-backward
|
|
||||||
return
|
|
||||||
end
|
|
||||||
if commandline --paging-mode
|
|
||||||
commandline -f up-line
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
set -l lineno (commandline -L)
|
|
||||||
|
|
||||||
switch $lineno
|
|
||||||
case 1
|
|
||||||
commandline -f history-search-backward
|
|
||||||
# Here we go
|
|
||||||
history merge
|
|
||||||
case '*'
|
|
||||||
commandline -f up-line
|
|
||||||
end
|
|
||||||
24
modules/nixos/programs/niri/default.nix
Normal file
24
modules/nixos/programs/niri/default.nix
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (lib) mkIf mkEnableOption;
|
||||||
|
cfg = config.nixos.programs.niri;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options = {
|
||||||
|
nixos.programs.niri.enable = mkEnableOption "Enables niri";
|
||||||
|
};
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
nixpkgs.overlays = [ inputs.niri.overlays.niri ];
|
||||||
|
systemd.user.services.niri-flake-polkit.enable = false;
|
||||||
|
programs.niri = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.niri-unstable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
|
pkgs,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -9,8 +10,11 @@ let
|
|||||||
mkEnableOption
|
mkEnableOption
|
||||||
mkOption
|
mkOption
|
||||||
types
|
types
|
||||||
|
mkMerge
|
||||||
;
|
;
|
||||||
cfg = config.nixos.services.greetd;
|
cfg = config.nixos.services.greetd;
|
||||||
|
hyprcfg = config.nixos.programs.hyprland;
|
||||||
|
niricfg = config.nixos.programs.niri;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
@@ -28,7 +32,15 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config =
|
||||||
|
let
|
||||||
|
usernames = builtins.attrNames config.home-manager.users;
|
||||||
|
username = builtins.head usernames;
|
||||||
|
in
|
||||||
|
mkMerge [
|
||||||
|
(mkIf cfg.enable { services.greetd.enable = true; })
|
||||||
|
|
||||||
|
(mkIf hyprcfg.enable {
|
||||||
services.greetd =
|
services.greetd =
|
||||||
let
|
let
|
||||||
session = {
|
session = {
|
||||||
@@ -37,12 +49,30 @@ in
|
|||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
enable = true;
|
|
||||||
settings = {
|
settings = {
|
||||||
terminal.vt = 1;
|
terminal.vt = 1;
|
||||||
default_session = session;
|
default_session = session;
|
||||||
initial_session = session;
|
initial_session = session;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(mkIf niricfg.enable {
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = rec {
|
||||||
|
tuigreet_session =
|
||||||
|
let
|
||||||
|
session = "${pkgs.niri-unstable}/bin/niri-session";
|
||||||
|
tuigreet = "${lib.getExe pkgs.tuigreet}";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
command = "${tuigreet} --time --remember --cmd ${session}";
|
||||||
|
user = "greeter";
|
||||||
};
|
};
|
||||||
|
default_session = tuigreet_session;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
"https://nix-gaming.cachix.org"
|
"https://nix-gaming.cachix.org"
|
||||||
"https://yazi.cachix.org"
|
"https://yazi.cachix.org"
|
||||||
"https://chaotic-nyx.cachix.org"
|
"https://chaotic-nyx.cachix.org"
|
||||||
|
"https://niri.cachix.org"
|
||||||
];
|
];
|
||||||
|
|
||||||
trusted-public-keys = [
|
trusted-public-keys = [
|
||||||
@@ -18,6 +19,7 @@
|
|||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
"nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="
|
"nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="
|
||||||
|
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
|
||||||
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
|
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
|
||||||
"chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8"
|
"chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8"
|
||||||
];
|
];
|
||||||
|
|||||||
51
scripts/bin/spawn-or-focus.sh
Executable file
51
scripts/bin/spawn-or-focus.sh
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
# Check if at least one argument is provided
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
notify-send -t 5000 "Usage: spawn-or-focus.sh <APP_CLASS> [APP_CMD]"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
APP_CLASS="$1" # Application's app_id (e.g. firefox)
|
||||||
|
APP_CMD="${2:-}" # Optional: Command to run the application
|
||||||
|
|
||||||
|
# Get the ID of the currently focused window
|
||||||
|
FOCUSED_ID=$(niri msg -j focused-window | jq -r '.id')
|
||||||
|
|
||||||
|
# Find windows matching the app class and read them into an array
|
||||||
|
readarray -t MATCHING_IDS < <(
|
||||||
|
niri msg -j windows |
|
||||||
|
jq -r --arg app_class "$APP_CLASS" '
|
||||||
|
.[]
|
||||||
|
| select(.app_id | ascii_downcase | contains($app_class | ascii_downcase))
|
||||||
|
| .id
|
||||||
|
'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Launch the app and exit the script if the number of matching windows is zero
|
||||||
|
if [ ${#MATCHING_IDS[@]} -eq 0 ]; then
|
||||||
|
# Use the app class as the command if no app command is supplied
|
||||||
|
if [ -z "$APP_CMD" ]; then
|
||||||
|
APP_CMD="$APP_CLASS"
|
||||||
|
fi
|
||||||
|
"$APP_CMD" &
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Find the array index of the currently focused window
|
||||||
|
CURRENT_INDEX=-1
|
||||||
|
for INDEX in "${!MATCHING_IDS[@]}"; do
|
||||||
|
if [ "${MATCHING_IDS[$INDEX]}" = "$FOCUSED_ID" ]; then
|
||||||
|
CURRENT_INDEX=$INDEX
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Cycle to the next matching array index if the currently focused ID was found
|
||||||
|
# in the array, otherwise set the target index to zero
|
||||||
|
if [ "$CURRENT_INDEX" -ge 0 ]; then
|
||||||
|
TARGET_INDEX=$(((CURRENT_INDEX + 1) % ${#MATCHING_IDS[@]}))
|
||||||
|
else
|
||||||
|
TARGET_INDEX=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Switch focus to the target window stored in the array
|
||||||
|
niri msg action focus-window --id "${MATCHING_IDS[$TARGET_INDEX]}"
|
||||||
@@ -14,6 +14,16 @@ in
|
|||||||
sessionPath = [ "${config.home.homeDirectory}/.local/bin" ];
|
sessionPath = [ "${config.home.homeDirectory}/.local/bin" ];
|
||||||
|
|
||||||
file = {
|
file = {
|
||||||
|
".local/bin/spawn-or-focus.sh" = {
|
||||||
|
source = getExe (
|
||||||
|
pkgs.writeShellApplication {
|
||||||
|
name = "spawn-or-focus";
|
||||||
|
runtimeInputs = with pkgs; [ niri ];
|
||||||
|
text = readFile ./bin/spawn-or-focus.sh;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
".local/bin/pavucontrol-toggle.sh" = {
|
".local/bin/pavucontrol-toggle.sh" = {
|
||||||
source = getExe (
|
source = getExe (
|
||||||
pkgs.writeShellApplication {
|
pkgs.writeShellApplication {
|
||||||
|
|||||||
@@ -44,9 +44,6 @@
|
|||||||
helix = {
|
helix = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
hyprlock = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
jujutsu = {
|
jujutsu = {
|
||||||
enable = false;
|
enable = false;
|
||||||
};
|
};
|
||||||
@@ -128,12 +125,6 @@
|
|||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
hypridle = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
hyprpaper = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
mako = {
|
mako = {
|
||||||
enable = false;
|
enable = false;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user