add DankMaterialShell
This commit is contained in:
281
flake.lock
generated
281
flake.lock
generated
@@ -166,6 +166,48 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"dankMaterialShell": {
|
||||
"inputs": {
|
||||
"dgop": "dgop",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1764390755,
|
||||
"narHash": "sha256-PRd2eFVx5w++XPLn20zki/B92B6xUGogNGp8U9u2wBI=",
|
||||
"owner": "AvengeMedia",
|
||||
"repo": "DankMaterialShell",
|
||||
"rev": "9c887fbe63c8b34018df3641635c60bc3c53e01f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "AvengeMedia",
|
||||
"repo": "DankMaterialShell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"dgop": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"dankMaterialShell",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762435535,
|
||||
"narHash": "sha256-QhzRn7pYN35IFpKjjxJAj3GPJECuC+VLhoGem3ezycc=",
|
||||
"owner": "AvengeMedia",
|
||||
"repo": "dgop",
|
||||
"rev": "6cf638dde818f9f8a2e26d0243179c43cb3458d7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "AvengeMedia",
|
||||
"repo": "dgop",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"disko": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -187,25 +229,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"elephant": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762962320,
|
||||
"narHash": "sha256-4Bhteu6s5gMGcNSgniKH4ynmN5WcdDA58Vy2vFlHPdg=",
|
||||
"owner": "abenz1267",
|
||||
"repo": "elephant",
|
||||
"rev": "b7acc4fe8a1b6552b071b6b6f2d3a93c8ddec823",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "abenz1267",
|
||||
"repo": "elephant",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"firefox-gnome-theme": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -364,7 +387,7 @@
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
@@ -382,7 +405,7 @@
|
||||
},
|
||||
"flake-utils_3": {
|
||||
"inputs": {
|
||||
"systems": "systems_4"
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
@@ -881,20 +904,23 @@
|
||||
"crane": "crane",
|
||||
"flake-compat": "flake-compat_3",
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
||||
"rust-overlay": "rust-overlay_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1763154177,
|
||||
"narHash": "sha256-LIIrMS2f2pPT2/BHs8dfGeupI23v5DNcoRz3W+iMsUA=",
|
||||
"lastModified": 1737639419,
|
||||
"narHash": "sha256-AEEDktApTEZ5PZXNDkry2YV2k6t0dTgLPEmAZbnigXU=",
|
||||
"owner": "nix-community",
|
||||
"repo": "lanzaboote",
|
||||
"rev": "70be03ab23d0988224e152f5b52e2fbf44a6d8ee",
|
||||
"rev": "a65905a09e2c43ff63be8c0e86a93712361f871e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "v0.4.2",
|
||||
"repo": "lanzaboote",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -923,11 +949,69 @@
|
||||
"rust-overlay": "rust-overlay_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1763286485,
|
||||
"narHash": "sha256-noCCGXkqQxHT+Pk723/poMqkbLHPtgENwg/kntlh2mA=",
|
||||
"lastModified": 1764399944,
|
||||
"narHash": "sha256-FC9eYtSmplgxllCX4/3hJq5J3sXWKLSc7at8ZUxycVw=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "9dad215b9f384310dea53fbd1aa8010e42f779f4",
|
||||
"rev": "b35bcae35b3f9665043c335e55ed5828af77db85",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"niri-flake": {
|
||||
"inputs": {
|
||||
"niri-stable": "niri-stable",
|
||||
"niri-unstable": "niri-unstable",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": "nixpkgs-stable_2",
|
||||
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1764405884,
|
||||
"narHash": "sha256-TnvBRPmcpcyinvLgsitHS7w5soSa6yNBfRYEI2TK1Ts=",
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"rev": "10aae4855ee275f7d80d85f4328c24265fb20f1f",
|
||||
"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": 1764399944,
|
||||
"narHash": "sha256-FC9eYtSmplgxllCX4/3hJq5J3sXWKLSc7at8ZUxycVw=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "b35bcae35b3f9665043c335e55ed5828af77db85",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1036,18 +1120,15 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1760284886,
|
||||
"narHash": "sha256-TK9Kr0BYBQ/1P5kAsnNQhmWWKgmZXwUQr4ZMjCzWf2c=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "cf3f5c4def3c7b5f1fc012b3d839575dbe552d43",
|
||||
"type": "github"
|
||||
"lastModified": 1758360447,
|
||||
"narHash": "sha256-XDY3A83bclygHDtesRoaRTafUd80Q30D/Daf9KSG6bs=",
|
||||
"rev": "8eaee110344796db060382e15d3af0a9fc396e0e",
|
||||
"type": "tarball",
|
||||
"url": "https://releases.nixos.org/nixos/unstable/nixos-25.11pre864002.8eaee1103447/nixexprs.tar.xz"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
"type": "tarball",
|
||||
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable": {
|
||||
@@ -1067,6 +1148,22 @@
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable_2": {
|
||||
"locked": {
|
||||
"lastModified": 1764316264,
|
||||
"narHash": "sha256-82L+EJU+40+FIdeG4gmUlOF1jeSwlf2AwMarrpdHF6o=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "9a7b80b6f82a71ea04270d7ba11b48855681c4b0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-stable_3": {
|
||||
"locked": {
|
||||
"lastModified": 1751274312,
|
||||
"narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=",
|
||||
@@ -1083,35 +1180,6 @@
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1758360447,
|
||||
"narHash": "sha256-XDY3A83bclygHDtesRoaRTafUd80Q30D/Daf9KSG6bs=",
|
||||
"rev": "8eaee110344796db060382e15d3af0a9fc396e0e",
|
||||
"type": "tarball",
|
||||
"url": "https://releases.nixos.org/nixos/unstable/nixos-25.11pre864002.8eaee1103447/nixexprs.tar.xz"
|
||||
},
|
||||
"original": {
|
||||
"type": "tarball",
|
||||
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1763187301,
|
||||
"narHash": "sha256-VgArs7MjFH0XRjZ/dWrUA1bDiJTld9Q824HQdLD3eFU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "66d930cb8792aea66f1bb2562f26f08d2ce8c3db",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable-small",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1763421233,
|
||||
"narHash": "sha256-Stk9ZYRkGrnnpyJ4eqt9eQtdFWRRIvMxpNRf4sIegnw=",
|
||||
@@ -1206,8 +1274,8 @@
|
||||
"inputs": {
|
||||
"blueprint": "blueprint",
|
||||
"chaotic": "chaotic",
|
||||
"dankMaterialShell": "dankMaterialShell",
|
||||
"disko": "disko",
|
||||
"elephant": "elephant",
|
||||
"ghostty": "ghostty",
|
||||
"home-manager": "home-manager",
|
||||
"hyprland": "hyprland",
|
||||
@@ -1215,15 +1283,16 @@
|
||||
"lanzaboote": "lanzaboote",
|
||||
"mysecrets": "mysecrets",
|
||||
"niri": "niri",
|
||||
"niri-flake": "niri-flake",
|
||||
"nix-flatpak": "nix-flatpak",
|
||||
"nix-index-database": "nix-index-database",
|
||||
"nixos-cosmic": "nixos-cosmic",
|
||||
"nixos-facter-modules": "nixos-facter-modules",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nixpkgs-stable": "nixpkgs-stable_2",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs-stable": "nixpkgs-stable_3",
|
||||
"sops-nix": "sops-nix",
|
||||
"stylix": "stylix",
|
||||
"systems": "systems_2",
|
||||
"systems": "systems",
|
||||
"vicinae": "vicinae",
|
||||
"walker": "walker",
|
||||
"xwst": "xwst"
|
||||
@@ -1392,16 +1461,16 @@
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default-linux",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
@@ -1435,21 +1504,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_4": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"tinted-foot": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -1554,9 +1608,6 @@
|
||||
},
|
||||
"walker": {
|
||||
"inputs": {
|
||||
"elephant": [
|
||||
"elephant"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
@@ -1565,15 +1616,16 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1762788361,
|
||||
"narHash": "sha256-72+WE0RGSW8TgzPijHU6TtLWfMb0G7ojraM5UifTLVg=",
|
||||
"lastModified": 1753363004,
|
||||
"narHash": "sha256-nNq0+o6lPiKntuL9rOonxihfkCIPvQ+SszTbjoAftC0=",
|
||||
"owner": "abenz1267",
|
||||
"repo": "walker",
|
||||
"rev": "e87c8c36468bcf2042a21c6aa878e7f0cdadc8f0",
|
||||
"rev": "0f366b1f556398d47459b0bd3a9e27e9a0d2c398",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "abenz1267",
|
||||
"ref": "0f366b1",
|
||||
"repo": "walker",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -1619,6 +1671,39 @@
|
||||
"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": 1764366786,
|
||||
"narHash": "sha256-yVCJ4Qe/JkdKDu0DddFdAQgDQVeF12nxH7zv3jtooV4=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "b362a3873710a42f7ac2d8ba03772d8290733934",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xwst": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils_3",
|
||||
@@ -1672,7 +1757,7 @@
|
||||
},
|
||||
"zon2nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1758405547,
|
||||
|
||||
@@ -28,6 +28,10 @@
|
||||
url = "github:nix-community/disko/latest";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
dankMaterialShell = {
|
||||
url = "github:AvengeMedia/DankMaterialShell";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
ghostty = {
|
||||
url = "github:ghostty-org/ghostty";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
@@ -70,6 +74,10 @@
|
||||
nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
niri-flake = {
|
||||
url = "github:sodiboo/niri-flake";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nix-flatpak.url = "github:gmodena/nix-flatpak";
|
||||
nix-index-database = {
|
||||
url = "github:nix-community/nix-index-database";
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
imports = [
|
||||
# ./common
|
||||
./cosmic
|
||||
./dms
|
||||
./gnome
|
||||
./hyprland
|
||||
./niri
|
||||
|
||||
369
modules/home/desktop/dms/default.nix
Normal file
369
modules/home/desktop/dms/default.nix
Normal file
@@ -0,0 +1,369 @@
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
lib,
|
||||
perSystem,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.desktop.dms;
|
||||
# inherit (config.lib.stylix) colors;
|
||||
binds = {
|
||||
suffixes,
|
||||
prefixes,
|
||||
substitutions ? {},
|
||||
}: let
|
||||
replacer = replaceStrings (attrNames substitutions) (attrValues substitutions);
|
||||
format = prefix: suffix: let
|
||||
actual-suffix =
|
||||
if isList suffix.action
|
||||
then {
|
||||
action = head suffix.action;
|
||||
args = tail suffix.action;
|
||||
}
|
||||
else {
|
||||
inherit (suffix) action;
|
||||
args = [];
|
||||
};
|
||||
|
||||
action = replacer "${prefix.action}-${actual-suffix.action}";
|
||||
in {
|
||||
name = "${prefix.key}+${suffix.key}";
|
||||
value.action.${action} = actual-suffix.args;
|
||||
};
|
||||
pairs = attrs: fn:
|
||||
concatMap (
|
||||
key:
|
||||
fn {
|
||||
inherit key;
|
||||
action = attrs.${key};
|
||||
}
|
||||
) (attrNames attrs);
|
||||
in
|
||||
listToAttrs (pairs prefixes (prefix: pairs suffixes (suffix: [(format prefix suffix)])));
|
||||
in {
|
||||
imports = [
|
||||
# inputs.niri.homeModules.niri
|
||||
inputs.dankMaterialShell.homeModules.dankMaterialShell.default
|
||||
inputs.dankMaterialShell.homeModules.dankMaterialShell.niri
|
||||
];
|
||||
options = {
|
||||
desktop.dms.enable =
|
||||
mkEnableOption "enable DankMaterialShell";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
stylix.targets.gtk.enable = false;
|
||||
stylix.targets.qt.enable = false;
|
||||
|
||||
# stylix.targets.niri.enable = false;
|
||||
|
||||
services = {
|
||||
gnome-keyring = {
|
||||
enable = true;
|
||||
components = ["secrets"];
|
||||
};
|
||||
kanshi = import ../niri/services/kanshi;
|
||||
udiskie = {
|
||||
enable = true;
|
||||
automount = false;
|
||||
notify = true;
|
||||
tray = "auto";
|
||||
};
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# gui libadwaita apps
|
||||
celluloid # mpv gui in libadwaita
|
||||
gnome-text-editor
|
||||
helvum # pipewire patchbay in rust
|
||||
junction # app chooser
|
||||
loupe # image viewer and editor in rust
|
||||
nautilus # file manager
|
||||
papers # pdf reader in rust
|
||||
pwvucontrol # pipewire gui in rust
|
||||
wdisplays # wlroots display configurator
|
||||
];
|
||||
gtk = {
|
||||
enable = true;
|
||||
theme = {
|
||||
name = "adw-gtk3";
|
||||
package = pkgs.adw-gtk3;
|
||||
};
|
||||
};
|
||||
xdg = {
|
||||
configFile = {
|
||||
# niri = import ./niri.nix commonArgs;
|
||||
"mimeapps.list".force = true;
|
||||
};
|
||||
mime.enable = true;
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = let
|
||||
file_manager = ["org.gnome.Nautilus.desktop"];
|
||||
image_viewer = ["org.gnome.Loupe.desktop"];
|
||||
pdf_reader = ["org.gnome.Papers.desktop"];
|
||||
video_player = ["io.github.celluloid_player.Celluloid.desktop"];
|
||||
web_browser = ["re.sonny.Junction.desktop"];
|
||||
in {
|
||||
"application/pdf" = pdf_reader;
|
||||
"image/jpeg" = image_viewer;
|
||||
"image/png" = image_viewer;
|
||||
"inode/directory" = file_manager;
|
||||
"text/html" = web_browser;
|
||||
"video/mp4" = video_player;
|
||||
"video/mpeg" = video_player;
|
||||
"video/x-matroska" = video_player;
|
||||
"video/x-mpeg" = video_player;
|
||||
"x-scheme-handler/about" = web_browser;
|
||||
"x-scheme-handler/http" = web_browser;
|
||||
"x-scheme-handler/https" = web_browser;
|
||||
"x-scheme-handler/unknown" = web_browser;
|
||||
};
|
||||
};
|
||||
};
|
||||
programs.dankMaterialShell = {
|
||||
enable = true;
|
||||
systemd.enable = true;
|
||||
niri = {
|
||||
enableKeybinds = false; # Automatic keybinding configuration
|
||||
# enableSpawn = true; # Auto-start DMS with niri
|
||||
};
|
||||
};
|
||||
programs.niri.settings = {
|
||||
input = {
|
||||
keyboard = {
|
||||
xkb = {
|
||||
layout = "us,ua";
|
||||
variant = "colemak_dh_ortho,";
|
||||
};
|
||||
repeat-delay = 200;
|
||||
repeat-rate = 50;
|
||||
track-layout = "window";
|
||||
};
|
||||
mouse = {
|
||||
accel-speed = 0.0;
|
||||
accel-profile = "flat";
|
||||
};
|
||||
touchpad = {
|
||||
tap = true;
|
||||
dwt = true;
|
||||
natural-scroll = true;
|
||||
click-method = "clickfinger";
|
||||
};
|
||||
|
||||
tablet.map-to-output = "eDP-1";
|
||||
touch.map-to-output = "eDP-1";
|
||||
};
|
||||
|
||||
animations.enable = false;
|
||||
|
||||
clipboard.disable-primary = true;
|
||||
hotkey-overlay.skip-at-startup = true;
|
||||
prefer-no-csd = true;
|
||||
xwayland-satellite.path = lib.getExe perSystem.xwst.xwayland-satellite;
|
||||
|
||||
screenshot-path = "${config.xdg.userDirs.pictures}/screenshots/screenshot-%Y-%m-%d-%H-%M-%S.png";
|
||||
|
||||
layout = {
|
||||
gaps = 3;
|
||||
struts.left = 32;
|
||||
struts.right = 32;
|
||||
always-center-single-column = true;
|
||||
center-focused-column = "on-overflow";
|
||||
|
||||
default-column-width.proportion = 2.0 / 3.0;
|
||||
preset-column-widths = [
|
||||
{proportion = 1.0 / 3.0;}
|
||||
{proportion = 1.0 / 2.0;}
|
||||
{proportion = 2.0 / 3.0;}
|
||||
];
|
||||
|
||||
background-color = "transparent";
|
||||
|
||||
empty-workspace-above-first = true;
|
||||
|
||||
focus-ring.enable = false;
|
||||
border = {
|
||||
enable = true;
|
||||
width = 1;
|
||||
# active.color = "#${colors.base03}";
|
||||
# inactive.color = "#${colors.base02}";
|
||||
# urgent.color = "#${colors.base08}";
|
||||
};
|
||||
# };
|
||||
|
||||
shadow.enable = false;
|
||||
|
||||
# default-column-display = "tabbed";
|
||||
|
||||
tab-indicator = {
|
||||
position = "top";
|
||||
gaps-between-tabs = 10;
|
||||
|
||||
# hide-when-single-tab = true;
|
||||
# place-within-column = true;
|
||||
|
||||
# active.color = "red";
|
||||
};
|
||||
};
|
||||
|
||||
binds = with config.lib.niri.actions; let
|
||||
dms-ipc = spawn "dms" "ipc";
|
||||
sh = spawn "sh" "-c";
|
||||
in
|
||||
lib.attrsets.mergeAttrsList [
|
||||
{
|
||||
"Mod+Shift+Slash" = {action = show-hotkey-overlay;};
|
||||
|
||||
"Mod+Tab" = {action = focus-workspace-previous;};
|
||||
"Mod+C" = {action = center-column;};
|
||||
"Mod+M" = lib.mkForce {action = maximize-column;};
|
||||
"Mod+H" = {action = set-column-width "50%";};
|
||||
"Mod+T" = {action = set-column-width "33%";};
|
||||
"Mod+Shift+T" = {action = set-column-width "67%";};
|
||||
# "Mod+V" = {action = toggle-column-tabbed-display;};
|
||||
"Mod+G" = {action = switch-focus-between-floating-and-tiling;};
|
||||
"Mod+Space" = {action = switch-layout "next";};
|
||||
|
||||
"Mod+Ctrl+Comma" = {action = consume-or-expel-window-left;};
|
||||
"Mod+Ctrl+Period" = {action = consume-or-expel-window-right;};
|
||||
|
||||
"Mod+Ctrl+Q" = {action = close-window;};
|
||||
"Mod+Ctrl+M" = {action = fullscreen-window;};
|
||||
"Mod+Ctrl+G" = {action = toggle-window-floating;};
|
||||
|
||||
"Mod+Shift+M" = {action = maximize-window-to-edges;};
|
||||
|
||||
"Mod+Ctrl+Shift+M" = {action = toggle-windowed-fullscreen;};
|
||||
|
||||
"Mod+Minus".action = set-column-width "-10%";
|
||||
"Mod+Equal" = {action = set-column-width "+10%";};
|
||||
"Mod+Plus".action = set-column-width "+10%";
|
||||
"Mod+Shift+Minus".action = set-window-height "-10%";
|
||||
"Mod+Shift+Plus".action = set-window-height "+10%";
|
||||
|
||||
"Mod+D" = {
|
||||
action = dms-ipc "spotlight" "toggle";
|
||||
hotkey-overlay.title = "Toggle Application Launcher";
|
||||
};
|
||||
# "Mod+N" = {
|
||||
# action = dms-ipc "notifications" "toggle";
|
||||
# hotkey-overlay.title = "Toggle Notification Center";
|
||||
# };
|
||||
# "Mod+Comma" = {
|
||||
# action = dms-ipc "settings" "toggle";
|
||||
# hotkey-overlay.title = "Toggle Settings";
|
||||
# };
|
||||
# "Mod+P" = {
|
||||
# action = dms-ipc "notepad" "toggle";
|
||||
# hotkey-overlay.title = "Toggle Notepad";
|
||||
# };
|
||||
"Super+Ctrl+L" = {
|
||||
action = dms-ipc "lock" "lock";
|
||||
hotkey-overlay.title = "Toggle Lock Screen";
|
||||
};
|
||||
"Mod+Alt+Q" = {
|
||||
action = dms-ipc "powermenu" "toggle";
|
||||
hotkey-overlay.title = "Toggle Power Menu";
|
||||
};
|
||||
"XF86AudioRaiseVolume" = {
|
||||
allow-when-locked = true;
|
||||
action = dms-ipc "audio" "increment" "3";
|
||||
};
|
||||
"XF86AudioLowerVolume" = {
|
||||
allow-when-locked = true;
|
||||
action = dms-ipc "audio" "decrement" "3";
|
||||
};
|
||||
"XF86AudioMute" = {
|
||||
allow-when-locked = true;
|
||||
action = dms-ipc "audio" "mute";
|
||||
};
|
||||
"XF86AudioMicMute" = {
|
||||
allow-when-locked = true;
|
||||
action = dms-ipc "audio" "micmute";
|
||||
};
|
||||
"Mod+Alt+N" = {
|
||||
allow-when-locked = true;
|
||||
action = dms-ipc "night" "toggle";
|
||||
hotkey-overlay.title = "Toggle Night Mode";
|
||||
};
|
||||
"Mod+V" = {
|
||||
action = dms-ipc "clipboard" "toggle";
|
||||
hotkey-overlay.title = "Toggle Clipboard Manager";
|
||||
};
|
||||
"XF86MonBrightnessUp" = {
|
||||
allow-when-locked = true;
|
||||
action = dms-ipc "brightness" "increment" "5" "";
|
||||
};
|
||||
"XF86MonBrightnessDown" = {
|
||||
allow-when-locked = true;
|
||||
action = dms-ipc "brightness" "decrement" "5" "";
|
||||
};
|
||||
|
||||
"Mod+Return" = {action = sh "$TERMINAL";};
|
||||
|
||||
"Mod+Ctrl+Space" = {
|
||||
repeat = false;
|
||||
action = toggle-overview;
|
||||
};
|
||||
}
|
||||
(binds {
|
||||
suffixes."Left" = "column-left";
|
||||
suffixes."Down" = "window-down";
|
||||
suffixes."Up" = "window-up";
|
||||
suffixes."Right" = "column-right";
|
||||
prefixes."Mod" = "focus";
|
||||
prefixes."Mod+Ctrl" = "move";
|
||||
prefixes."Mod+Shift" = "focus-monitor";
|
||||
prefixes."Mod+Shift+Ctrl" = "move-window-to-monitor";
|
||||
substitutions."monitor-column" = "monitor";
|
||||
substitutions."monitor-window" = "monitor";
|
||||
})
|
||||
# {
|
||||
# "Mod+V".action = switch-focus-between-floating-and-tiling;
|
||||
# "Mod+Shift+V".action = toggle-window-floating;
|
||||
# }
|
||||
(binds {
|
||||
suffixes."Home" = "first";
|
||||
suffixes."End" = "last";
|
||||
prefixes."Mod" = "focus-column";
|
||||
prefixes."Mod+Ctrl" = "move-column-to";
|
||||
})
|
||||
(binds {
|
||||
suffixes."Down" = "workspace-down";
|
||||
suffixes."Up" = "workspace-up";
|
||||
prefixes."Mod" = "focus";
|
||||
prefixes."Mod+Ctrl" = "move-window-to";
|
||||
prefixes."Mod+Shift" = "move";
|
||||
})
|
||||
(binds {
|
||||
suffixes = builtins.listToAttrs (
|
||||
map (n: {
|
||||
name = toString n;
|
||||
value = [
|
||||
"workspace"
|
||||
(n + 1)
|
||||
]; # workspace 1 is empty; workspace 2 is the logical first.
|
||||
}) (range 1 9)
|
||||
);
|
||||
prefixes."Mod" = "focus";
|
||||
prefixes."Mod+Ctrl" = "move-window-to";
|
||||
})
|
||||
];
|
||||
window-rules = [
|
||||
{
|
||||
geometry-corner-radius = let
|
||||
r = 12.0;
|
||||
in {
|
||||
top-left = r;
|
||||
top-right = r;
|
||||
bottom-left = r;
|
||||
bottom-right = r;
|
||||
};
|
||||
clip-to-geometry = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -154,6 +154,7 @@ in {
|
||||
screenshot-path "${xdgPics}/screenshots/screenshot-%Y-%m-%d-%H-%M-%S.png"
|
||||
|
||||
animations {
|
||||
off
|
||||
slowdown 0.5
|
||||
}
|
||||
|
||||
@@ -187,16 +188,17 @@ in {
|
||||
width 6
|
||||
}
|
||||
focus-ring {
|
||||
off
|
||||
width 1
|
||||
active-color "#${colors.base0D}"
|
||||
inactive-color "#${colors.base03}"
|
||||
active-color "#${colors.base03}"
|
||||
inactive-color "#${colors.base02}"
|
||||
urgent-color "#${colors.base08}"
|
||||
}
|
||||
border {
|
||||
off
|
||||
// off
|
||||
width 1
|
||||
active-color "#${colors.base0D}"
|
||||
inactive-color "#${colors.base03}"
|
||||
active-color "#${colors.base03}"
|
||||
inactive-color "#${colors.base02}"
|
||||
urgent-color "#${colors.base08}"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,13 +21,25 @@ in {
|
||||
margin-right = 36 + 3;
|
||||
margin-bottom = 3;
|
||||
modules-left = [
|
||||
"custom/launcher"
|
||||
"wlr/taskbar"
|
||||
# "custom/launcher"
|
||||
"niri/language"
|
||||
"niri/workspaces"
|
||||
# "wlr/taskbar"
|
||||
];
|
||||
modules-center = [
|
||||
"clock"
|
||||
];
|
||||
modules-right = [
|
||||
"niri/workspaces"
|
||||
"clock"
|
||||
"niri/language"
|
||||
"privacy"
|
||||
"network"
|
||||
"cpu"
|
||||
"memory"
|
||||
"wireplumber"
|
||||
"wireplumber#source"
|
||||
(ifLaptop "group/laptop")
|
||||
"tray"
|
||||
"idle_inhibitor"
|
||||
"custom/notification"
|
||||
];
|
||||
"niri/workspaces" = {
|
||||
format = "{index}";
|
||||
@@ -49,34 +61,12 @@ in {
|
||||
tooltip = false;
|
||||
};
|
||||
"wlr/taskbar" = {
|
||||
format = "{icon} {name}";
|
||||
format = "{icon}";
|
||||
icon-size = 16;
|
||||
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
|
||||
tooltip-format = "{title}";
|
||||
on-click = "activate";
|
||||
};
|
||||
};
|
||||
settings.top = {
|
||||
position = "top";
|
||||
height = 34;
|
||||
spacing = 0;
|
||||
margin-left = 36 + 3;
|
||||
margin-right = 36 + 3;
|
||||
margin-top = 3;
|
||||
modules-left = [
|
||||
"custom/notification"
|
||||
"tray"
|
||||
"privacy"
|
||||
];
|
||||
modules-right = [
|
||||
"network"
|
||||
"cpu"
|
||||
"memory"
|
||||
"wireplumber"
|
||||
"wireplumber#source"
|
||||
(ifLaptop "group/laptop")
|
||||
"idle_inhibitor"
|
||||
];
|
||||
"group/laptop" = {
|
||||
orientation = "inherit";
|
||||
modules = [
|
||||
@@ -248,10 +238,14 @@ in {
|
||||
color: @base05;
|
||||
border-radius: 12px;
|
||||
}
|
||||
window#waybar {
|
||||
border: 1px solid @base01;
|
||||
}
|
||||
|
||||
.modules-left,
|
||||
.modules-center,
|
||||
.modules-right {
|
||||
margin: 1px;
|
||||
padding-left: 3px;
|
||||
} /* for leftmost modules */
|
||||
|
||||
@@ -309,6 +303,9 @@ in {
|
||||
margin: 3px 3px 3px 0;
|
||||
padding: 0 0.42em;
|
||||
}
|
||||
#clock {
|
||||
background-color: @base00;
|
||||
}
|
||||
|
||||
#backlight,
|
||||
#battery,
|
||||
|
||||
@@ -9,12 +9,13 @@
|
||||
in {
|
||||
options = {
|
||||
module.desktop.displayManager = mkOption {
|
||||
default = "greetd";
|
||||
default = null;
|
||||
type = types.enum [
|
||||
"cosmic"
|
||||
"gdm"
|
||||
"greetd"
|
||||
"sddm"
|
||||
null
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
imports = [
|
||||
./common
|
||||
./cosmic
|
||||
./dms
|
||||
./gnome
|
||||
./hyprland
|
||||
./niri
|
||||
|
||||
44
modules/nixos/desktop/dms/default.nix
Normal file
44
modules/nixos/desktop/dms/default.nix
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
lib,
|
||||
perSystem,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.desktop.dms;
|
||||
in {
|
||||
imports = with inputs; [
|
||||
dankMaterialShell.nixosModules.dankMaterialShell
|
||||
dankMaterialShell.nixosModules.greeter
|
||||
niri-flake.nixosModules.niri
|
||||
];
|
||||
options = {
|
||||
desktop.dms.enable =
|
||||
mkEnableOption "enable DankMaterialShell";
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
extraPortals = with pkgs; [xdg-desktop-portal-gnome xdg-desktop-portal-gtk];
|
||||
config.niri.default = ["gnome" "gtk"];
|
||||
};
|
||||
|
||||
module.desktop.gnome-keyring.enable = true;
|
||||
sound.pipewire.enable = true;
|
||||
|
||||
programs.niri = {
|
||||
enable = true;
|
||||
package = perSystem.niri.niri;
|
||||
};
|
||||
|
||||
programs.dankMaterialShell = {
|
||||
enable = true;
|
||||
greeter = {
|
||||
enable = true;
|
||||
compositor.name = "niri";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user