Compare commits
122 Commits
gitea
...
d7d9b8e39c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d7d9b8e39c | ||
|
|
1a52cafa66 | ||
|
|
b3a419de26 | ||
|
|
0b3931ff86 | ||
|
|
2b854183ac | ||
|
|
18013b83df | ||
|
|
6b4a76dd4a | ||
|
|
c15bf8c58e | ||
|
|
60a839663a | ||
|
|
ee72de3539 | ||
|
|
73281b62d9 | ||
|
|
e5e7164a93 | ||
|
|
3ed506a924 | ||
|
|
33503c4485 | ||
|
|
5c8e50aa9f | ||
|
|
c9106e8484 | ||
|
|
62b40404c7 | ||
|
|
07a320147d | ||
|
|
34cdfc4def | ||
|
|
545b61a79f | ||
|
|
feb2f93360 | ||
|
|
8fb93e5f2b | ||
|
|
e5e3eaaff4 | ||
|
|
4bc88c8d13 | ||
|
|
a5c8d284ee | ||
|
|
c2f151e03e | ||
|
|
b0b643f164 | ||
|
|
99c07ec5fb | ||
|
|
3f553d27e1 | ||
|
|
a6a17574b8 | ||
|
|
78359c710f | ||
|
|
2206e5472b | ||
|
|
9c96585401 | ||
|
|
ac36fa13ac | ||
|
|
b4586e8661 | ||
|
|
5a6199a8a9 | ||
|
|
5e34285db2 | ||
|
|
9612646c55 | ||
|
|
7324904db9 | ||
|
|
132c169e24 | ||
|
|
207961e397 | ||
|
|
73339cfc50 | ||
|
|
94559de7ae | ||
|
|
89fa46aa6d | ||
|
|
0fbb54a04a | ||
|
|
9619164eb4 | ||
|
|
343fc2ac4e | ||
|
|
9c98199ee3 | ||
|
|
3652cdfca9 | ||
|
|
2699268b81 | ||
|
|
e4d0326a74 | ||
|
|
8525adecf4 | ||
|
|
c381580cca | ||
|
|
aea641cd9c | ||
|
|
2179dbf1d8 | ||
|
|
6f5f70f439 | ||
|
|
d40175d4a5 | ||
|
|
34eba60193 | ||
|
|
57230a32c3 | ||
|
|
d9146432e4 | ||
|
|
447e6edd56 | ||
|
|
aa58ca79bb | ||
|
|
a2692f6837 | ||
|
|
c031de7fec | ||
|
|
918342fdf3 | ||
|
|
d8f623f1a0 | ||
|
|
6a4460d089 | ||
|
|
e61954442f | ||
|
|
f5aa965369 | ||
|
|
eb812dc9e0 | ||
|
|
6d4d118685 | ||
|
|
94a78942f8 | ||
|
|
5c2437cee1 | ||
|
|
fa8875c0ee | ||
|
|
2040ce3ea0 | ||
|
|
d9822a7a91 | ||
|
|
d2e0b9d2d3 | ||
|
|
ccdd036935 | ||
|
|
5d36be3804 | ||
|
|
2640b00b05 | ||
|
|
9087100c42 | ||
|
|
5c9a92c68e | ||
|
|
1fd894a3b3 | ||
|
|
09316011ab | ||
|
|
fdce6c3d57 | ||
|
|
1be03c39ad | ||
|
|
a0c098ea1f | ||
|
|
9a4e3d7a78 | ||
|
|
1005cc522d | ||
|
|
729e7e5f0e | ||
|
|
79cbdc9f69 | ||
|
|
c6ca7c95f4 | ||
|
|
e878158b71 | ||
|
|
ed5f0784d1 | ||
|
|
051648954a | ||
|
|
f5538e69a5 | ||
|
|
a82660b049 | ||
|
|
f828268b14 | ||
|
|
02c7814ce4 | ||
|
|
e36ffd828b | ||
|
|
219a19a3a8 | ||
|
|
683913e0fe | ||
|
|
837e64c377 | ||
|
|
f8497f5538 | ||
|
|
9c2a69aa03 | ||
|
|
a8c3a12089 | ||
|
|
b8199c24ef | ||
|
|
971cea5418 | ||
|
|
d12b9ddf2f | ||
|
|
e4ec830aaa | ||
|
|
ebb1da3fc2 | ||
|
|
80e06b3f49 | ||
|
|
605381b553 | ||
|
|
298d31e21a | ||
|
|
947b824796 | ||
|
|
edbe4e7f66 | ||
|
|
dbccb827ad | ||
|
|
f5af726382 | ||
|
|
e95332cedb | ||
|
|
6a7d8fe4be | ||
|
|
37eb70db63 | ||
|
|
77e9aa4ddd |
0
.gitattributes
vendored
Executable file → Normal file
0
.gitattributes
vendored
Executable file → Normal file
0
.gitignore
vendored
Executable file → Normal file
0
.gitignore
vendored
Executable file → Normal file
24
configuration.nix
Executable file → Normal file
24
configuration.nix
Executable file → Normal file
@@ -1,11 +1,13 @@
|
|||||||
{ pkgs, inputs, lib, host, ... }:
|
{ pkgs, inputs, host, ... }:
|
||||||
{
|
{
|
||||||
imports = ([
|
imports = ([
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
./system-modules/adb.nix
|
./system-modules/adb.nix
|
||||||
./system-modules/auto-mount.nix
|
./system-modules/auto-mount.nix
|
||||||
|
./system-modules/calendar.nix
|
||||||
./system-modules/hardware-configuration.nix
|
./system-modules/hardware-configuration.nix
|
||||||
./system-modules/fuse.nix
|
./system-modules/fuse.nix
|
||||||
|
./system-modules/games.nix
|
||||||
./system-modules/nvidia.nix
|
./system-modules/nvidia.nix
|
||||||
./system-modules/users.nix
|
./system-modules/users.nix
|
||||||
./system-modules/sound.nix
|
./system-modules/sound.nix
|
||||||
@@ -30,6 +32,7 @@
|
|||||||
./system-modules/nvidia.nix
|
./system-modules/nvidia.nix
|
||||||
./system-modules/ollama.nix
|
./system-modules/ollama.nix
|
||||||
./system-modules/qmk.nix
|
./system-modules/qmk.nix
|
||||||
|
./system-modules/scanning.nix
|
||||||
./system-modules/sops.nix
|
./system-modules/sops.nix
|
||||||
./system-modules/sound.nix
|
./system-modules/sound.nix
|
||||||
./system-modules/sshd.nix
|
./system-modules/sshd.nix
|
||||||
@@ -41,8 +44,17 @@
|
|||||||
./system-modules/nx2site.nix
|
./system-modules/nx2site.nix
|
||||||
./system-modules/postgres.nix
|
./system-modules/postgres.nix
|
||||||
./system-modules/nx2site/proxy.nix
|
./system-modules/nx2site/proxy.nix
|
||||||
# ./system-modules/nx2site/gitea.nix
|
./system-modules/nx2site/audiobookshelf.nix
|
||||||
# ./system-modules/nx2site/vaultwarden.nix
|
./system-modules/nx2site/gitea.nix
|
||||||
|
./system-modules/nx2site/open-web-calendar.nix
|
||||||
|
./system-modules/nx2site/radicale.nix
|
||||||
|
# ./system-modules/nx2site/nextcloud.nix
|
||||||
|
./system-modules/nx2site/vaultwarden.nix
|
||||||
|
./system-modules/nx2site/paperless.nix
|
||||||
|
|
||||||
|
./system-modules/calendar-publish.nix
|
||||||
|
./system-modules/calendar-lec.nix
|
||||||
|
./system-modules/calendar-dicos.nix
|
||||||
] else []);
|
] else []);
|
||||||
|
|
||||||
# Set your time zone.
|
# Set your time zone.
|
||||||
@@ -99,6 +111,7 @@
|
|||||||
blueman
|
blueman
|
||||||
dmidecode
|
dmidecode
|
||||||
file
|
file
|
||||||
|
parallel
|
||||||
# ]) ++ (with pkgs-unstable; [
|
# ]) ++ (with pkgs-unstable; [
|
||||||
# # sendme
|
# # sendme
|
||||||
]);
|
]);
|
||||||
@@ -115,7 +128,10 @@
|
|||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
system.stateVersion = "24.05";
|
systemd.extraConfig = "DefaultLimitNOFILE=2048";
|
||||||
|
boot.tmp.useTmpfs = false;
|
||||||
|
|
||||||
|
system.stateVersion = "24.11";
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"base": {
|
"base": {
|
||||||
"foreground": "#eedce2",
|
"foreground": "#dddddd",
|
||||||
"background": "#221016"
|
"background": "#000000"
|
||||||
},
|
},
|
||||||
"to_alter": {
|
"to_alter": {
|
||||||
"accent": "#ac5271",
|
"accent": "#8888ff",
|
||||||
"secondary": "#f20c5b",
|
"secondary": "#4444ff",
|
||||||
"tertiary": "#d5a287",
|
"tertiary": "#44ff88",
|
||||||
"special": "#51ac8d",
|
"special": "#ff6666",
|
||||||
"weird": "#0cf2a3"
|
"weird": "#ff66ff"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,8 +6,7 @@ pkgs: rec {
|
|||||||
rounding = 3;
|
rounding = 3;
|
||||||
gap-size = 5;
|
gap-size = 5;
|
||||||
border-width = 2;
|
border-width = 2;
|
||||||
color =
|
color = let
|
||||||
let
|
|
||||||
dark = (-0.5);
|
dark = (-0.5);
|
||||||
bright = (0.5);
|
bright = (0.5);
|
||||||
alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
|
alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
|
||||||
@@ -26,7 +25,7 @@ pkgs: rec {
|
|||||||
facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)).to_alter;
|
facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)).to_alter;
|
||||||
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base;
|
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base;
|
||||||
fcolor = facolor // fbcolor;
|
fcolor = facolor // fbcolor;
|
||||||
xcolor = with ccolor; with fcolor; rec {
|
xcolor = with ccolor; with fcolor; {
|
||||||
background = "#000000";
|
background = "#000000";
|
||||||
# foreground = "#dddddd";
|
# foreground = "#dddddd";
|
||||||
# accent = blue;
|
# accent = blue;
|
||||||
@@ -42,8 +41,7 @@ pkgs: rec {
|
|||||||
in ccolor // fcolor // xcolor;
|
in ccolor // fcolor // xcolor;
|
||||||
font = {
|
font = {
|
||||||
code = {
|
code = {
|
||||||
name = "JetBrainsMono-NF";
|
name = "JetBrainsMono Nerd Font";
|
||||||
name2 = "JetBrainsMono Nerd Font";
|
|
||||||
package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
|
package = (pkgs.nerdfonts.override { fonts = [ "JetBrainsMono" ]; });
|
||||||
# name = "CascadiaCove-NF";
|
# name = "CascadiaCove-NF";
|
||||||
# package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; });
|
# package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; });
|
||||||
|
|||||||
603
flake.lock
generated
Executable file → Normal file
603
flake.lock
generated
Executable file → Normal file
@@ -8,11 +8,11 @@
|
|||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728710667,
|
"lastModified": 1739004667,
|
||||||
"narHash": "sha256-9HR9EePhzweUAUPUccByNYxKQzfFAnxfu2BXTLqOLZQ=",
|
"narHash": "sha256-t/KaeHEgzh225HUdAiHXRsgDeyDrBCMTg0LjR73v3Nw=",
|
||||||
"owner": "KZDKM",
|
"owner": "KZDKM",
|
||||||
"repo": "Hyprspace",
|
"repo": "Hyprspace",
|
||||||
"rev": "e8406a7708bceb3b5bedf56b67490dbe3d27e6f8",
|
"rev": "ac55bbdb6cee760af9315899b5b187a40ce43e46",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -41,11 +41,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728902391,
|
"lastModified": 1739103745,
|
||||||
"narHash": "sha256-44bnoY0nAvbBQ/lVjmn511yL39Sv7SknV0BDxn34P3Q=",
|
"narHash": "sha256-c53dcRaw0F4Os9WD05HwIRs9kTDZw4Mxe1XK4edEALo=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "aquamarine",
|
"repo": "aquamarine",
|
||||||
"rev": "9874e08eec85b5542ca22494e127b0cdce46b786",
|
"rev": "a3dda0d10ce9aa1d1dfb7a6c139ea8c2872c74bd",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -88,6 +88,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733328505,
|
||||||
|
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "edolstra",
|
||||||
|
"repo": "flake-compat",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-compat_2": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1696426674,
|
"lastModified": 1696426674,
|
||||||
@@ -103,7 +119,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-compat_2": {
|
"flake-compat_3": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1673956053,
|
"lastModified": 1673956053,
|
||||||
@@ -124,11 +140,11 @@
|
|||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727826117,
|
"lastModified": 1735774679,
|
||||||
"narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=",
|
"narHash": "sha256-soePLBazJk0qQdDVhdbM98vYdssfs3WFedcq+raipRI=",
|
||||||
"owner": "hercules-ci",
|
"owner": "hercules-ci",
|
||||||
"repo": "flake-parts",
|
"repo": "flake-parts",
|
||||||
"rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1",
|
"rev": "f2f7418ce0ab4a5309a4596161d154cfc877af66",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -160,7 +176,47 @@
|
|||||||
},
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_3"
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils-plus": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": [
|
||||||
|
"yazi-plugins",
|
||||||
|
"flake-utils"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696281284,
|
||||||
|
"narHash": "sha256-xcmtTmoiiAOSk4abifbtqVZk0iwBcqJfg47iUbkwhcE=",
|
||||||
|
"owner": "gytis-ivaskevicius",
|
||||||
|
"repo": "flake-utils-plus",
|
||||||
|
"rev": "6cf1e312fb259693c4930d07ca3cbe1d07ef4a48",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "gytis-ivaskevicius",
|
||||||
|
"ref": "v1.4.0",
|
||||||
|
"repo": "flake-utils-plus",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681202837,
|
"lastModified": 1681202837,
|
||||||
@@ -176,16 +232,16 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"flake-utils_3": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_4"
|
"systems": "systems_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726560853,
|
"lastModified": 1731533236,
|
||||||
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -194,6 +250,50 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-utils_4": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": [
|
||||||
|
"yazi-plugins",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ghostty": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": "flake-compat",
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
|
"zig": "zig",
|
||||||
|
"zig2nix": "zig2nix"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1739767522,
|
||||||
|
"narHash": "sha256-VuHnvVVLFDZe9GAPH67clJNhp+H3WoRB5JfQpUbwsbk=",
|
||||||
|
"owner": "ghostty-org",
|
||||||
|
"repo": "ghostty",
|
||||||
|
"rev": "429c8ab277f75b581959ac5515b0c32636839168",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ghostty-org",
|
||||||
|
"repo": "ghostty",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"gitignore": {
|
"gitignore": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -238,6 +338,28 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"haumea": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"yazi-plugins",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1685133229,
|
||||||
|
"narHash": "sha256-FePm/Gi9PBSNwiDFq3N+DWdfxFq0UKsVVTJS3cQPn94=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "haumea",
|
||||||
|
"rev": "34dd58385092a23018748b50f9b23de6266dffc2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"ref": "v0.2.2",
|
||||||
|
"repo": "haumea",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -245,16 +367,16 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726989464,
|
"lastModified": 1739757849,
|
||||||
"narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=",
|
"narHash": "sha256-Gs076ot1YuAAsYVcyidLKUMIc4ooOaRGO0PqTY7sBzA=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176",
|
"rev": "9d3d080aec2a35e05a15cedd281c2384767c2cfe",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-24.05",
|
"ref": "release-24.11",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -275,11 +397,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728669738,
|
"lastModified": 1738664950,
|
||||||
"narHash": "sha256-EDNAU9AYcx8OupUzbTbWE1d3HYdeG0wO6Msg3iL1muk=",
|
"narHash": "sha256-xIeGNM+iivwVHkv9tHwOqoUP5dDrtees34bbFKKMZYs=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprcursor",
|
"repo": "hyprcursor",
|
||||||
"rev": "0264e698149fcb857a66a53018157b41f8d97bb0",
|
"rev": "7c6d165e1eb9045a996551eb9f121b6d1b30adc3",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -288,25 +410,56 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprgraphics": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1739049071,
|
||||||
|
"narHash": "sha256-3+7TpXMrbsUXSwgr5VAKAnmkzMb6JO+Rvc9XRb5NMg4=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"rev": "175c6b29b6ff82100539e7c4363a35a02c74dd73",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprgraphics",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"hyprland": {
|
"hyprland": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"aquamarine": "aquamarine",
|
"aquamarine": "aquamarine",
|
||||||
"hyprcursor": "hyprcursor",
|
"hyprcursor": "hyprcursor",
|
||||||
|
"hyprgraphics": "hyprgraphics",
|
||||||
"hyprland-protocols": "hyprland-protocols",
|
"hyprland-protocols": "hyprland-protocols",
|
||||||
|
"hyprland-qtutils": "hyprland-qtutils",
|
||||||
"hyprlang": "hyprlang",
|
"hyprlang": "hyprlang",
|
||||||
"hyprutils": "hyprutils",
|
"hyprutils": "hyprutils",
|
||||||
"hyprwayland-scanner": "hyprwayland-scanner",
|
"hyprwayland-scanner": "hyprwayland-scanner",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"pre-commit-hooks": "pre-commit-hooks",
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
"systems": "systems_2",
|
"systems": "systems_3",
|
||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729629261,
|
"lastModified": 1739757807,
|
||||||
"narHash": "sha256-IJtor2qFpsZkCm4UMnCHOSosW9GXKZVOm7DILtJJgoM=",
|
"narHash": "sha256-R+fSm684OXCOjhhdANCgBvUPRPiya6Cyi2zV5Xf6sHI=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "29997ef4ba8ef0a80390e80199998d1390177454",
|
"rev": "59c615c321c45302491de3b1c003844c86aefca7",
|
||||||
"revCount": 5366,
|
"revCount": 5825,
|
||||||
"submodules": true,
|
"submodules": true,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/hyprwm/Hyprland"
|
"url": "https://github.com/hyprwm/Hyprland"
|
||||||
@@ -334,11 +487,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729596320,
|
"lastModified": 1738966025,
|
||||||
"narHash": "sha256-sBPr6O2Ad916f+L7biAjmJVx4TLDITC4joKgeOT47V8=",
|
"narHash": "sha256-MzgrF0jKlTNnNS33D8PwI5z2MJ1Tzf5MQVf/oms2pdw=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprland-plugins",
|
"repo": "hyprland-plugins",
|
||||||
"rev": "4d7f0b5d8b952f31f7d2e29af22ab0a55ca5c219",
|
"rev": "4f48dbe12f3cbbeb4d31c91c67b21edbc5b4b451",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -359,11 +512,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728345020,
|
"lastModified": 1738422629,
|
||||||
"narHash": "sha256-xGbkc7U/Roe0/Cv3iKlzijIaFBNguasI31ynL2IlEoM=",
|
"narHash": "sha256-5v+bv75wJWvahyM2xcMTSNNxmV8a7hb01Eey5zYnBJw=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprland-protocols",
|
"repo": "hyprland-protocols",
|
||||||
"rev": "a7c183800e74f337753de186522b9017a07a8cee",
|
"rev": "755aef8dab49d0fc4663c715fa4ad221b2aedaed",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -372,6 +525,74 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprland-qt-support": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-qtutils",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-qtutils",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-qtutils",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737634706,
|
||||||
|
"narHash": "sha256-nGCibkfsXz7ARx5R+SnisRtMq21IQIhazp6viBU8I/A=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-qt-support",
|
||||||
|
"rev": "8810df502cdee755993cb803eba7b23f189db795",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-qt-support",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"hyprland-qtutils": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprland-qt-support": "hyprland-qt-support",
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-qtutils",
|
||||||
|
"hyprlang",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1739048983,
|
||||||
|
"narHash": "sha256-REhTcXq4qs3B3cCDtLlYDz0GZvmsBSh947Ub6pQWGTQ=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-qtutils",
|
||||||
|
"rev": "3504a293c8f8db4127cb0f7cfc1a318ffb4316f8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprland-qtutils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"hyprlang": {
|
"hyprlang": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"hyprutils": [
|
"hyprutils": [
|
||||||
@@ -388,11 +609,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728168612,
|
"lastModified": 1739048914,
|
||||||
"narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=",
|
"narHash": "sha256-vd5rJBTmp2w7SDgfv23Zcd84ktI5eDA7e5UBzx+pKrU=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprlang",
|
"repo": "hyprlang",
|
||||||
"rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e",
|
"rev": "a7334904d591f38757c46fbe2ab68651877d9099",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -404,14 +625,15 @@
|
|||||||
"hyprswitch": {
|
"hyprswitch": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts",
|
"flake-parts": "flake-parts",
|
||||||
"nixpkgs": "nixpkgs_2"
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725107917,
|
"lastModified": 1738828244,
|
||||||
"narHash": "sha256-6on3nwb3gB4t+P/2IExgGhVLVgAkF6ZiE5x+qcQHEXU=",
|
"narHash": "sha256-cmo544QvdacVTHPqmc6er4xnSSc63e6Z71BS0FxSklE=",
|
||||||
"owner": "h3rmt",
|
"owner": "h3rmt",
|
||||||
"repo": "hyprswitch",
|
"repo": "hyprswitch",
|
||||||
"rev": "f478c394ad6db5ba268f80052f1eb2366366b21e",
|
"rev": "bb06fb046aa1c204c2effa382573b8045cefd355",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -433,11 +655,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728941256,
|
"lastModified": 1739048933,
|
||||||
"narHash": "sha256-WRypmcZ2Bw94lLmcmxYokVOHPJSZ7T06V49QZ4tkZeQ=",
|
"narHash": "sha256-ck6MaoYvISBQKqZR+HcxXnx0wOhyCauxfVMaV5zhJxQ=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprutils",
|
"repo": "hyprutils",
|
||||||
"rev": "fd4be8b9ca932f7384e454bcd923c5451ef2aa85",
|
"rev": "e4e018a2ca6f5a9c33511973454199e1c7c85499",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -458,11 +680,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726874836,
|
"lastModified": 1739049028,
|
||||||
"narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=",
|
"narHash": "sha256-RleJp7LYbr6s+M1xgbmhtBs+fYa3ZdIiF7+QalJ4D1g=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprwayland-scanner",
|
"repo": "hyprwayland-scanner",
|
||||||
"rev": "500c81a9e1a76760371049a8d99e008ea77aa59e",
|
"rev": "04146df74a8d5ec0b579657307be01f1e241125f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -474,12 +696,12 @@
|
|||||||
"lanzaboote": {
|
"lanzaboote": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"crane": "crane",
|
"crane": "crane",
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat_3",
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts_2",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils_2",
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_3",
|
||||||
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
||||||
"rust-overlay": "rust-overlay"
|
"rust-overlay": "rust-overlay_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1682802423,
|
"lastModified": 1682802423,
|
||||||
@@ -498,11 +720,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728888510,
|
"lastModified": 1739020877,
|
||||||
"narHash": "sha256-nsNdSldaAyu6PE3YUA+YQLqUDJh+gRbBooMMekZJwvI=",
|
"narHash": "sha256-mIvECo/NNdJJ/bXjNqIh8yeoSjVLAuDuTUzAo7dzs8Y=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c",
|
"rev": "a79cfe0ebd24952b580b1cf08cd906354996d547",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -514,11 +736,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-latest": {
|
"nixpkgs-latest": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729631290,
|
"lastModified": 1739782683,
|
||||||
"narHash": "sha256-zVL79jvDihxcnq9FKkAoILYWxGmxCw1DGdBnpv/B+3s=",
|
"narHash": "sha256-AnuWOZmBxX/pjQKwNnjGU5jjGKncfxV8Os10Ynv4I1k=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1f9d2cf67508efd9b5e81cdf7af556bbbfe02377",
|
"rev": "6534c6ea0867d38662b8c0d9af62cebffa00e353",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -530,28 +752,28 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727825735,
|
"lastModified": 1735774519,
|
||||||
"narHash": "sha256-0xHYkMkeLVQAMa7gvkddbPqpxph+hDzdu1XdGPJR+Os=",
|
"narHash": "sha256-CewEm1o2eVAnoqb6Ml+Qi9Gg/EfNAxbRx1lANGVyoLI=",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz"
|
"url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz"
|
"url": "https://github.com/NixOS/nixpkgs/archive/e9b51731911566bbf7e4895475a87fe06961de0b.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1720386169,
|
"lastModified": 1738255539,
|
||||||
"narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=",
|
"narHash": "sha256-hP2eOqhIO/OILW+3moNWO4GtdJFYCqAe9yJZgvlCoDQ=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "194846768975b7ad2c4988bdb82572c00222c0d7",
|
"rev": "c3511a3b53b482aa7547c9d1626fd7310c1de1c5",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"ref": "nixos-24.05",
|
"ref": "release-24.11",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -572,29 +794,29 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-stable_3": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729357638,
|
"lastModified": 1738136902,
|
||||||
"narHash": "sha256-66RHecx+zohbZwJVEPF7uuwHeqf8rykZTMCTqIrOew4=",
|
"narHash": "sha256-pUvLijVGARw4u793APze3j6mU1Zwdtz7hGkGGkD87qw=",
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "bb8c2cf7ea0dd2e18a52746b2c3a5b0c73b93c22",
|
"rev": "9a5db3142ce450045840cc8d832b13b8a2018e0c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nixos",
|
||||||
"ref": "release-24.05",
|
"ref": "nixpkgs-unstable",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729413321,
|
"lastModified": 1739580444,
|
||||||
"narHash": "sha256-I4tuhRpZFa6Fu6dcH9Dlo5LlH17peT79vx1y1SpeKt0=",
|
"narHash": "sha256-+/bSz4EAVbqz8/HsIGLroF8aNaO8bLRL7WfACN+24g4=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "1997e4aa514312c1af7e2bda7fad1644e778ff26",
|
"rev": "8bb37161a0488b89830168b81c48aed11569cb93",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -605,11 +827,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1711588226,
|
"lastModified": 1735831304,
|
||||||
"narHash": "sha256-nd7goEu+nH/WZ/uCxvbWzSYqzZZn25kWTeKfANOhCjU=",
|
"narHash": "sha256-92A/Zr8UzZzlFYmkgO3HAgX/Cr53eodgNyvJA+Ibkz0=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "7232f19f7fb710e3554cafaa9d8e93cff8273b59",
|
"rev": "0725951bfc4bbc2efff3a537837ca13159b4aec9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -636,26 +858,26 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729449015,
|
"lastModified": 1739624908,
|
||||||
"narHash": "sha256-Gf04dXB0n4q0A9G5nTGH3zuMGr6jtJppqdeljxua1fo=",
|
"narHash": "sha256-f84lBmLl4tkDp1ZU5LBTSFzlxXP4926DVW3KnXrke10=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "89172919243df199fe237ba0f776c3e3e3d72367",
|
"rev": "a60651b217d2e529729cbc7d989c19f3941b9250",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "nixpkgs",
|
"id": "nixpkgs",
|
||||||
"ref": "nixos-24.05",
|
"ref": "nixos-24.11",
|
||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729265718,
|
"lastModified": 1737003892,
|
||||||
"narHash": "sha256-4HQI+6LsO3kpWTYuVGIzhJs1cetFcwT7quWCk/6rqeo=",
|
"narHash": "sha256-RCzJE9wKByLCXmRBp+z8LK9EgdW+K+W/DXnJS4S/NVo=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ccc0c2126893dd20963580b6478d1a10a4512185",
|
"rev": "ae06b9c2d83cb5c8b12d7d0e32692e93d1379713",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -683,20 +905,19 @@
|
|||||||
},
|
},
|
||||||
"pre-commit-hooks": {
|
"pre-commit-hooks": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat_2",
|
||||||
"gitignore": "gitignore",
|
"gitignore": "gitignore",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"hyprland",
|
"hyprland",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
]
|
||||||
"nixpkgs-stable": "nixpkgs-stable"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728778939,
|
"lastModified": 1737465171,
|
||||||
"narHash": "sha256-WybK5E3hpGxtCYtBwpRj1E9JoiVxe+8kX83snTNaFHE=",
|
"narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "ff68f91754be6f3427e4986d7949e6273659be1d",
|
"rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -739,6 +960,7 @@
|
|||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"Hyprspace": "Hyprspace",
|
"Hyprspace": "Hyprspace",
|
||||||
|
"ghostty": "ghostty",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"hyprland": "hyprland",
|
"hyprland": "hyprland",
|
||||||
"hyprland-plugins": "hyprland-plugins",
|
"hyprland-plugins": "hyprland-plugins",
|
||||||
@@ -746,13 +968,35 @@
|
|||||||
"lanzaboote": "lanzaboote",
|
"lanzaboote": "lanzaboote",
|
||||||
"nixpkgs": "nixpkgs_4",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"nixpkgs-latest": "nixpkgs-latest",
|
"nixpkgs-latest": "nixpkgs-latest",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable_2",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"yazi": "yazi",
|
"yazi": "yazi",
|
||||||
|
"yazi-plugins": "yazi-plugins",
|
||||||
"zen-browser": "zen-browser"
|
"zen-browser": "zen-browser"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay": {
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprswitch",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735784864,
|
||||||
|
"narHash": "sha256-tIl5p3ueaPw7T5T1UXkLc8ISMk6Y8CI/D/rd0msf73I=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "04d5f1836721461b256ec452883362c5edc5288e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"rust-overlay_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": [
|
"flake-utils": [
|
||||||
"lanzaboote",
|
"lanzaboote",
|
||||||
@@ -777,7 +1021,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rust-overlay_2": {
|
"rust-overlay_3": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"yazi",
|
"yazi",
|
||||||
@@ -785,11 +1029,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729391507,
|
"lastModified": 1737080704,
|
||||||
"narHash": "sha256-as0I9xieJUHf7kiK2a9znDsVZQTFWhM1pLivII43Gi0=",
|
"narHash": "sha256-n+J2h9GM9ZpFOQUmtZoCr1+DFF/iO5UlmLJeHIxbZGY=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "784981a9feeba406de38c1c9a3decf966d853cca",
|
"rev": "f9953fe89f8b65401fc4d4a288940bc2cb072949",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -802,15 +1046,14 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
]
|
||||||
"nixpkgs-stable": "nixpkgs-stable_3"
|
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729587807,
|
"lastModified": 1739262228,
|
||||||
"narHash": "sha256-YOc4033a/j1TbdLfkaSOSX2SrvlmuM+enIFoveNTCz4=",
|
"narHash": "sha256-7JAGezJ0Dn5qIyA2+T4Dt/xQgAbhCglh6lzCekTVMeU=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "26642e8f193f547e72d38cd4c0c4e45b49236d27",
|
"rev": "07af005bb7d60c7f118d9d9f5530485da5d1e975",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -835,21 +1078,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_2": {
|
"systems_2": {
|
||||||
"locked": {
|
|
||||||
"lastModified": 1689347949,
|
|
||||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default-linux",
|
|
||||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-systems",
|
|
||||||
"repo": "default-linux",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"systems_3": {
|
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
@@ -864,6 +1092,21 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"systems_4": {
|
"systems_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
@@ -879,6 +1122,36 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"systems_5": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_6": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1689347949,
|
||||||
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default-linux",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"xdph": {
|
"xdph": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"hyprland-protocols": [
|
"hyprland-protocols": [
|
||||||
@@ -907,11 +1180,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728166987,
|
"lastModified": 1737634991,
|
||||||
"narHash": "sha256-w6dVTguAn9zJ+7aPOhBQgDz8bn6YZ7b56cY8Kg5HJRI=",
|
"narHash": "sha256-dBAnb7Kbnier30cA7AgxVSxxARmxKZ1vHZT33THSIr8=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
"rev": "fb9c8d665af0588bb087f97d0f673ddf0d501787",
|
"rev": "e09dfe2726c8008f983e45a0aa1a3b7416aaeb8a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -922,16 +1195,16 @@
|
|||||||
},
|
},
|
||||||
"yazi": {
|
"yazi": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_2",
|
"flake-utils": "flake-utils_3",
|
||||||
"nixpkgs": "nixpkgs_5",
|
"nixpkgs": "nixpkgs_5",
|
||||||
"rust-overlay": "rust-overlay_2"
|
"rust-overlay": "rust-overlay_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1729473414,
|
"lastModified": 1739776850,
|
||||||
"narHash": "sha256-ffiEVFCUMnShcSa4hvCbT1EQeu7c2lVOk6OdaxjiUmU=",
|
"narHash": "sha256-XWzxhk0Nrw9cu6E5yjsmhAVfbt9ArVN54zz8qgzBA/I=",
|
||||||
"owner": "sxyazi",
|
"owner": "sxyazi",
|
||||||
"repo": "yazi",
|
"repo": "yazi",
|
||||||
"rev": "0e118b5b3a5baacf7fe62971e2bfe2b0ad972bab",
|
"rev": "1ddbbfea711636dcb997239ea9d2b483cea16f80",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -940,6 +1213,30 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"yazi-plugins": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils_4",
|
||||||
|
"flake-utils-plus": "flake-utils-plus",
|
||||||
|
"haumea": "haumea",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": "systems_6"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737417368,
|
||||||
|
"narHash": "sha256-JExM3nZwg07iMhXDQSIXc5KmVqbBRA4IfNgs1gFmneg=",
|
||||||
|
"owner": "lordkekz",
|
||||||
|
"repo": "nix-yazi-plugins",
|
||||||
|
"rev": "c251d3db84f3a10f95993112132fe5ffc37a279f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "lordkekz",
|
||||||
|
"repo": "nix-yazi-plugins",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"zen-browser": {
|
"zen-browser": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_6"
|
"nixpkgs": "nixpkgs_6"
|
||||||
@@ -957,6 +1254,60 @@
|
|||||||
"repo": "zen-browser-flake",
|
"repo": "zen-browser-flake",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"zig": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-compat": [
|
||||||
|
"ghostty"
|
||||||
|
],
|
||||||
|
"flake-utils": [
|
||||||
|
"ghostty",
|
||||||
|
"flake-utils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"ghostty",
|
||||||
|
"nixpkgs-stable"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1738239110,
|
||||||
|
"narHash": "sha256-Y5i9mQ++dyIQr+zEPNy+KIbc5wjPmfllBrag3cHZgcE=",
|
||||||
|
"owner": "mitchellh",
|
||||||
|
"repo": "zig-overlay",
|
||||||
|
"rev": "1a8fb6f3a04724519436355564b95fce5e272504",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "mitchellh",
|
||||||
|
"repo": "zig-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"zig2nix": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": [
|
||||||
|
"ghostty",
|
||||||
|
"flake-utils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"ghostty",
|
||||||
|
"nixpkgs-stable"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1738263917,
|
||||||
|
"narHash": "sha256-j/3fwe2pEOquHabP/puljOKwAZFjIE9gXZqA91sC48M=",
|
||||||
|
"owner": "jcollie",
|
||||||
|
"repo": "zig2nix",
|
||||||
|
"rev": "c311d8e77a6ee0d995f40a6e10a89a3a4ab04f9a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "jcollie",
|
||||||
|
"ref": "c311d8e77a6ee0d995f40a6e10a89a3a4ab04f9a",
|
||||||
|
"repo": "zig2nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
7
flake.nix
Executable file → Normal file
7
flake.nix
Executable file → Normal file
@@ -2,10 +2,10 @@
|
|||||||
description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
|
description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs = { url = "nixpkgs/nixos-24.05"; };
|
nixpkgs = { url = "nixpkgs/nixos-24.11"; };
|
||||||
nixpkgs-unstable = { url = "nixpkgs/nixos-unstable"; };
|
nixpkgs-unstable = { url = "nixpkgs/nixos-unstable"; };
|
||||||
nixpkgs-latest = { url = "github:nixos/nixpkgs?ref=master"; };
|
nixpkgs-latest = { url = "github:nixos/nixpkgs?ref=master"; };
|
||||||
home-manager = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; };
|
home-manager = { url = "github:nix-community/home-manager/release-24.11"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||||
sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
|
sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||||
lanzaboote = { url = "github:nix-community/lanzaboote/v0.3.0"; };
|
lanzaboote = { url = "github:nix-community/lanzaboote/v0.3.0"; };
|
||||||
|
|
||||||
@@ -14,9 +14,10 @@
|
|||||||
Hyprspace = { url = "github:KZDKM/Hyprspace"; inputs.hyprland.follows = "hyprland"; };
|
Hyprspace = { url = "github:KZDKM/Hyprspace"; inputs.hyprland.follows = "hyprland"; };
|
||||||
hyprswitch = { url = "github:h3rmt/hyprswitch/release"; };
|
hyprswitch = { url = "github:h3rmt/hyprswitch/release"; };
|
||||||
|
|
||||||
# firefox-addons = { url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; inputs.nixpkgs.follows = "nixpkgs"; };
|
|
||||||
yazi.url = "github:sxyazi/yazi";
|
yazi.url = "github:sxyazi/yazi";
|
||||||
|
yazi-plugins = { url = "github:lordkekz/nix-yazi-plugins"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||||
zen-browser.url = "github:MarceColl/zen-browser-flake";
|
zen-browser.url = "github:MarceColl/zen-browser-flake";
|
||||||
|
ghostty.url = "github:ghostty-org/ghostty";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nixpkgs-unstable, nixpkgs-latest, home-manager, ... }@inputs: let
|
outputs = { self, nixpkgs, nixpkgs-unstable, nixpkgs-latest, home-manager, ... }@inputs: let
|
||||||
|
|||||||
0
git-crypt/easyroam-hsmw/easyroam_client_cert.pem
Executable file → Normal file
0
git-crypt/easyroam-hsmw/easyroam_client_cert.pem
Executable file → Normal file
0
git-crypt/easyroam-hsmw/easyroam_client_key.pem
Executable file → Normal file
0
git-crypt/easyroam-hsmw/easyroam_client_key.pem
Executable file → Normal file
0
git-crypt/easyroam-hsmw/easyroam_root_ca.pem
Executable file → Normal file
0
git-crypt/easyroam-hsmw/easyroam_root_ca.pem
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx-ca.pem
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx-ca.pem
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx-cert.key
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx-cert.key
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx-cert.pem
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx-cert.pem
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx.ovpn
Executable file → Normal file
0
git-crypt/pnx-vpn/ljk-pnx.ovpn
Executable file → Normal file
BIN
git-crypt/secrets.nix
Executable file → Normal file
BIN
git-crypt/secrets.nix
Executable file → Normal file
Binary file not shown.
0
git-crypt/vpn-hsmw/USERTrust-ECC-Certification-Authority.pem
Executable file → Normal file
0
git-crypt/vpn-hsmw/USERTrust-ECC-Certification-Authority.pem
Executable file → Normal file
0
git-crypt/vpn-hsmw/USERTrust-RSA-Certification-Authority.pem
Executable file → Normal file
0
git-crypt/vpn-hsmw/USERTrust-RSA-Certification-Authority.pem
Executable file → Normal file
0
home-modules/assets/pnx/pnx_rdp_srv-phoe3-vmdms_192-168-1-104.remmina
Executable file → Normal file
0
home-modules/assets/pnx/pnx_rdp_srv-phoe3-vmdms_192-168-1-104.remmina
Executable file → Normal file
0
home-modules/assets/pnx/pnx_rdp_srv-phoenix-3_192-168-1-108.remmina
Executable file → Normal file
0
home-modules/assets/pnx/pnx_rdp_srv-phoenix-3_192-168-1-108.remmina
Executable file → Normal file
0
home-modules/assets/pnx/pnx_rdp_srv-phoenix2_192-168-1-101.remmina
Executable file → Normal file
0
home-modules/assets/pnx/pnx_rdp_srv-phoenix2_192-168-1-101.remmina
Executable file → Normal file
0
home-modules/assets/pnx/pnx_rdp_srv-remote_192-168-1-21.remmina
Executable file → Normal file
0
home-modules/assets/pnx/pnx_rdp_srv-remote_192-168-1-21.remmina
Executable file → Normal file
0
home-modules/bash.nix
Executable file → Normal file
0
home-modules/bash.nix
Executable file → Normal file
0
home-modules/bitwarden.nix
Executable file → Normal file
0
home-modules/bitwarden.nix
Executable file → Normal file
98
home-modules/calendar.nix
Normal file
98
home-modules/calendar.nix
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
{ pkgs, lib, user, secrets, domain, ... }: let
|
||||||
|
calendars = [
|
||||||
|
{
|
||||||
|
name = "Preservation";
|
||||||
|
primary = true;
|
||||||
|
url = "https://dav.${domain}/${user}/preservation/";
|
||||||
|
color = "#dddddd";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Effort";
|
||||||
|
url = "https://dav.${domain}/${user}/effort/";
|
||||||
|
color = "#dd2222";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Experience";
|
||||||
|
url = "https://dav.${domain}/${user}/experience/";
|
||||||
|
color = "#2222dd";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Exposure";
|
||||||
|
url = "https://dav.${domain}/${user}/exposure/";
|
||||||
|
color = "#22aa22";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Engagement";
|
||||||
|
url = "https://dav.${domain}/${user}/engagement/";
|
||||||
|
color = "#8800CC";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "Sleep as Android";
|
||||||
|
url = secrets.calendar.sleep-as-android-url;
|
||||||
|
color = "#111111";
|
||||||
|
read-only = true;
|
||||||
|
type = "ics";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "LEC";
|
||||||
|
url = "https://${domain}/lec.ics";
|
||||||
|
color = "#A87000";
|
||||||
|
read-only = true;
|
||||||
|
type = "ics";
|
||||||
|
}
|
||||||
|
# {
|
||||||
|
# name = "Handball Männer";
|
||||||
|
# url = "http://i.cal.to/ical/108/dhb/handball-nationalmannschaft/c687e97f.bc7c3eb6-11a0e356.ics";
|
||||||
|
# color = "#880023";
|
||||||
|
# read-only = true;
|
||||||
|
# type = "ics";
|
||||||
|
# }
|
||||||
|
];
|
||||||
|
default_set = {
|
||||||
|
# name =
|
||||||
|
# url =
|
||||||
|
color = "#777777";
|
||||||
|
read-only = false;
|
||||||
|
primary = false;
|
||||||
|
type = "caldav";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
gnome-calendar
|
||||||
|
thunderbird
|
||||||
|
];
|
||||||
|
|
||||||
|
accounts.calendar.accounts = let
|
||||||
|
transform_caledar_set = calendar_set: with calendar_set; { # transform set for accounts.calendar.accounts endpoint
|
||||||
|
inherit primary;
|
||||||
|
remote = {
|
||||||
|
inherit url name;
|
||||||
|
userName = user; # my globally set username
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in lib.attrsets.mergeAttrsList (
|
||||||
|
map (calendar: {
|
||||||
|
"${calendar.name}" = transform_caledar_set ( default_set // calendar );
|
||||||
|
}) calendars
|
||||||
|
);
|
||||||
|
|
||||||
|
programs.thunderbird.settings = let
|
||||||
|
to_safe_name = name: (builtins.replaceStrings ["."] ["-"]) name;
|
||||||
|
in (lib.attrsets.mergeAttrsList (
|
||||||
|
map (calendar: with ( default_set // calendar ); {
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.cache.enabled" = true;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.calendar-main-default" = primary;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.calendar-main-in-composite" = true;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.color" = color;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.name" = name;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.type" = type;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.uri" = url;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.username" = user;
|
||||||
|
"calendar.registry.${to_safe_name calendar.name}.readOnly" = read-only;
|
||||||
|
}) calendars
|
||||||
|
) // {
|
||||||
|
"calendar.list.sortOrder" = lib.fold (calendar: acc: calendar.name + " " + acc) "" calendars;
|
||||||
|
"calendar.week.start" = 1;
|
||||||
|
});
|
||||||
|
}
|
||||||
128
home-modules/chatterino.nix
Executable file → Normal file
128
home-modules/chatterino.nix
Executable file → Normal file
@@ -1,51 +1,30 @@
|
|||||||
{ pkgs, lib, rice, user, secrets, ... }:
|
{ pkgs, rice, secrets, ... }:
|
||||||
let
|
let
|
||||||
channels = [
|
channels = [
|
||||||
"Caedrel"
|
"Caedrel"
|
||||||
"NoWay4u_Sir"
|
|
||||||
"zackrawrr"
|
|
||||||
|
|
||||||
"agurin"
|
"agurin"
|
||||||
"asmongold"
|
"asmongold"
|
||||||
"Broeki"
|
|
||||||
"Broxah"
|
|
||||||
# "Caedrel"
|
# "Caedrel"
|
||||||
"chrissyofficial"
|
|
||||||
"EintrachtSpandau"
|
"EintrachtSpandau"
|
||||||
"GamesDoneQuick"
|
"GamesDoneQuick"
|
||||||
"gdolphn"
|
"gdolphn"
|
||||||
"GRONKH"
|
"GRONKH"
|
||||||
"handofblood"
|
"handofblood"
|
||||||
"HisWattson"
|
"HisWattson"
|
||||||
"imls"
|
|
||||||
"iskall85"
|
|
||||||
"Jankos"
|
"Jankos"
|
||||||
"Karni"
|
|
||||||
"KuruHS"
|
"KuruHS"
|
||||||
"kutcherlol"
|
|
||||||
"LCK"
|
|
||||||
"LCS"
|
|
||||||
"LEC"
|
"LEC"
|
||||||
"lol_nemesis"
|
"lol_nemesis"
|
||||||
"loltyler1"
|
|
||||||
"LPL"
|
|
||||||
"maxim"
|
|
||||||
"NASA"
|
"NASA"
|
||||||
"NNOPrime"
|
"NoWay4u_Sir"
|
||||||
# "NoWay4u_Sir"
|
|
||||||
"OfficialMikeShinoda"
|
"OfficialMikeShinoda"
|
||||||
"ow_esports"
|
|
||||||
"PrimeGaming"
|
|
||||||
"PrimeLeague"
|
|
||||||
"Rekkles"
|
"Rekkles"
|
||||||
"riotgames"
|
"riotgames"
|
||||||
"Sola"
|
|
||||||
"ThePrimeagen"
|
"ThePrimeagen"
|
||||||
"Tolkin"
|
"Tolkin"
|
||||||
"Trick2g"
|
|
||||||
"TSM_ImperialHal"
|
"TSM_ImperialHal"
|
||||||
"Xisuma"
|
"Xisuma"
|
||||||
# "zackrawrr"
|
"zackrawrr"
|
||||||
];
|
];
|
||||||
tabber = channel-name: {
|
tabber = channel-name: {
|
||||||
highlightsEnabled = true;
|
highlightsEnabled = true;
|
||||||
@@ -65,7 +44,7 @@ in {
|
|||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [ chatterino2 ];
|
packages = with pkgs; [ chatterino2 ];
|
||||||
file = {
|
file = {
|
||||||
".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; ''
|
".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; /* json */ ''
|
||||||
{
|
{
|
||||||
"accounts": {
|
"accounts": {
|
||||||
"current": "${username}",
|
"current": "${username}",
|
||||||
@@ -97,7 +76,7 @@ in {
|
|||||||
},
|
},
|
||||||
"tabVisibility": 1,
|
"tabVisibility": 1,
|
||||||
"theme": {
|
"theme": {
|
||||||
"name": "Black"
|
"name": "nxtheme.json"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"behaviour": {
|
"behaviour": {
|
||||||
@@ -736,8 +715,7 @@ in {
|
|||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
".local/share/chatterino/Settings/window-layout.json".text = builtins.toJSON {
|
".local/share/chatterino/Settings/window-layout.json".text = builtins.toJSON {
|
||||||
windows = [
|
windows = [{
|
||||||
{
|
|
||||||
emotePopup = {
|
emotePopup = {
|
||||||
x = 0;
|
x = 0;
|
||||||
y = 0;
|
y = 0;
|
||||||
@@ -749,9 +727,99 @@ in {
|
|||||||
width = 943;
|
width = 943;
|
||||||
x = 0;
|
x = 0;
|
||||||
y = 0;
|
y = 0;
|
||||||
}
|
}];
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
".local/share/chatterino/Themes/nxtheme.json".text = with rice.color; let
|
||||||
|
tr = builtins.toString (rice.lib.float-to-drune rice.transparency);
|
||||||
|
nh = rice.lib.nohash;
|
||||||
|
in /* json */ ''
|
||||||
|
{
|
||||||
|
"colors": {
|
||||||
|
"accent": "${accent.base}",
|
||||||
|
"messages": {
|
||||||
|
"backgrounds": {
|
||||||
|
"alternate": "${rice.lib.alter-luminace-hex accent.dark (-0.2)}",
|
||||||
|
"regular": "${background}"
|
||||||
|
},
|
||||||
|
"disabled": "#99000000",
|
||||||
|
"highlightAnimationEnd": "#00e6e6e6",
|
||||||
|
"highlightAnimationStart": "#6ee6e6e6",
|
||||||
|
"selection": "#40ffffff",
|
||||||
|
"textColors": {
|
||||||
|
"caret": "#ffffff",
|
||||||
|
"chatPlaceholder": "#5d5555",
|
||||||
|
"link": "#4286f4",
|
||||||
|
"regular": "#ffffff",
|
||||||
|
"system": "#8c7f7f"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"scrollbars": {
|
||||||
|
"background": "#00000000",
|
||||||
|
"thumb": "${secondary.dark}",
|
||||||
|
"thumbSelected": "${secondary.base}"
|
||||||
|
},
|
||||||
|
"splits": {
|
||||||
|
"background": "${background}",
|
||||||
|
"dropPreview": "#300094ff",
|
||||||
|
"dropPreviewBorder": "${border}",
|
||||||
|
"dropTargetRect": "${background}",
|
||||||
|
"dropTargetRectBorder": "${border2}",
|
||||||
|
"header": {
|
||||||
|
"background": "${background}", "focusedBackground": "${accent.dark}",
|
||||||
|
"border": "${background}", "focusedBorder": "${secondary.base}",
|
||||||
|
"text": "${tertiary.base}", "focusedText": "${tertiary.bright}"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"background": "${background}",
|
||||||
|
"text": "${foreground}"
|
||||||
|
},
|
||||||
|
"messageSeperator": "${accent.dark}",
|
||||||
|
"resizeHandle": "#70${nh accent.base}",
|
||||||
|
"resizeHandleBackground": "#20${nh secondary.dark}"
|
||||||
|
},
|
||||||
|
"tabs": {
|
||||||
|
"liveIndicator": "${special.base}",
|
||||||
|
"rerunIndicator": "${accent.base}",
|
||||||
|
"dividerLine": "${background}",
|
||||||
|
"highlighted": {
|
||||||
|
"backgrounds": { "hover": "${accent.dark}", "regular": "${secondary.dark}", "unfocused": "${black.dark}" },
|
||||||
|
"line": { "hover": "${secondary.base}", "regular": "${accent.base}", "unfocused": "${accent.dark}" },
|
||||||
|
"text": "${accent.base}"
|
||||||
|
},
|
||||||
|
"newMessage": {
|
||||||
|
"backgrounds": { "hover": "${accent.dark}", "regular": "${secondary.dark}", "unfocused": "${black.dark}" },
|
||||||
|
"line": { "hover": "${secondary.base}", "regular": "${accent.base}", "unfocused": "${accent.dark}" },
|
||||||
|
"text": "${accent.base}"
|
||||||
|
},
|
||||||
|
"regular": {
|
||||||
|
"backgrounds": { "hover": "${accent.dark}", "regular": "${background}", "unfocused": "${background}" },
|
||||||
|
"line": { "hover": "${secondary.base}", "regular": "${accent.dark}", "unfocused": "${background}" },
|
||||||
|
"text": "${accent.base}"
|
||||||
|
},
|
||||||
|
"selected": {
|
||||||
|
"backgrounds": { "hover": "${accent.dark}", "regular": "${secondary.dark}", "unfocused": "${secondary.dark}" },
|
||||||
|
"line": { "hover": "${accent.bright}", "regular": "${accent.base}", "unfocused": "${accent.dark}" },
|
||||||
|
"text": "${foreground}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"window": {
|
||||||
|
"background": "${background}",
|
||||||
|
"text": "${foreground}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"metadata": {
|
||||||
|
"iconTheme": "light"
|
||||||
|
},
|
||||||
|
"ctcMeta": {
|
||||||
|
"name": "nxtheme",
|
||||||
|
"createdAt": "1970-01-01T00:00:00Z",
|
||||||
|
"modifiedAt": "1970-01-01T00:00:00Z",
|
||||||
|
"simpleTabSettings": false,
|
||||||
|
"checkeredRow": true,
|
||||||
|
"messageSeparator": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,17 +5,18 @@
|
|||||||
<div class="color-container" style="border-color: ${color-set.base}">
|
<div class="color-container" style="border-color: ${color-set.base}">
|
||||||
<div class="color-box" style="background: ${color-set.dark}; height: ${builtins.toString size}px;">
|
<div class="color-box" style="background: ${color-set.dark}; height: ${builtins.toString size}px;">
|
||||||
<p style="color: ${color-set.bright}"> ${color-name}.dark </p>
|
<p style="color: ${color-set.bright}"> ${color-name}.dark </p>
|
||||||
|
<p style="color: ${color-set.bright}"> ${color-set.dark} </p>
|
||||||
</div>
|
</div>
|
||||||
<div class="color-box" style="background: ${color-set.base}; height: ${builtins.toString size}px;">
|
<div class="color-box" style="background: ${color-set.base}; height: ${builtins.toString size}px;">
|
||||||
<p class="dynamic-text"> ${color-name}.base </p>
|
<p class="dynamic-text"> ${color-name}.base </p>
|
||||||
|
<p class="dynamic-text"> ${color-set.base} </p>
|
||||||
</div>
|
</div>
|
||||||
<div class="color-box" style="background: ${color-set.bright}; height: ${builtins.toString size}px;">
|
<div class="color-box" style="background: ${color-set.bright}; height: ${builtins.toString size}px;">
|
||||||
<p style="color: ${color-set.dark}"> ${color-name}.bright </p>
|
<p style="color: ${color-set.dark}"> ${color-name}.bright </p>
|
||||||
|
<p style="color: ${color-set.dark}"> ${color-set.bright} </p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
||||||
in /* html */ ''
|
in /* html */ ''
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<head>
|
<head>
|
||||||
@@ -37,7 +38,7 @@
|
|||||||
color: ${foreground};
|
color: ${foreground};
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
margin: 10px auto 10px auto;
|
margin: 10px auto 10px auto;
|
||||||
background: ${background};
|
background: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency});
|
||||||
border: ${builtins.toString rice.border-width}px solid ${border};
|
border: ${builtins.toString rice.border-width}px solid ${border};
|
||||||
border-radius: ${builtins.toString rice.rounding}px;
|
border-radius: ${builtins.toString rice.rounding}px;
|
||||||
padding: ${builtins.toString rice.gap-size}px;
|
padding: ${builtins.toString rice.gap-size}px;
|
||||||
@@ -46,7 +47,7 @@
|
|||||||
margin: ${builtins.toString rice.gap-size}px;
|
margin: ${builtins.toString rice.gap-size}px;
|
||||||
}
|
}
|
||||||
.color-container {
|
.color-container {
|
||||||
font-family: ${rice.font.code.name2};
|
font-family: ${rice.font.code.name};
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: ${builtins.toString rice.gap-size}px;
|
gap: ${builtins.toString rice.gap-size}px;
|
||||||
margin: ${builtins.toString rice.gap-size}px;
|
margin: ${builtins.toString rice.gap-size}px;
|
||||||
@@ -66,18 +67,20 @@
|
|||||||
${cb accent "accent" 100}
|
${cb accent "accent" 100}
|
||||||
${cb secondary "secondary" 100}
|
${cb secondary "secondary" 100}
|
||||||
${cb tertiary "tertiary" 100}
|
${cb tertiary "tertiary" 100}
|
||||||
${cb weird "weird" 75}
|
${cb weird "weird" 100}
|
||||||
${cb special "special" 75}
|
${cb special "special" 100}
|
||||||
${cb positive "positive" 30}
|
<br>
|
||||||
${cb negative "negative" 30}
|
${cb positive "positive" 70}
|
||||||
${cb black "black" 25}
|
${cb negative "negative" 70}
|
||||||
${cb white "white" 25}
|
<br>
|
||||||
${cb blue "blue" 25}
|
${cb black "black" 50}
|
||||||
${cb cyan "cyan" 25}
|
${cb white "white" 50}
|
||||||
${cb green "green" 25}
|
${cb blue "blue" 50}
|
||||||
${cb magenta "magenta" 25}
|
${cb cyan "cyan" 50}
|
||||||
${cb red "red" 25}
|
${cb green "green" 50}
|
||||||
${cb yellow "yellow" 25}
|
${cb magenta "magenta" 50}
|
||||||
|
${cb red "red" 50}
|
||||||
|
${cb yellow "yellow" 50}
|
||||||
</body>
|
</body>
|
||||||
<script>
|
<script>
|
||||||
function getLuminance(color) {
|
function getLuminance(color) {
|
||||||
|
|||||||
0
home-modules/direnv.nix
Executable file → Normal file
0
home-modules/direnv.nix
Executable file → Normal file
0
home-modules/discord.nix
Executable file → Normal file
0
home-modules/discord.nix
Executable file → Normal file
55
home-modules/email.nix
Executable file → Normal file
55
home-modules/email.nix
Executable file → Normal file
@@ -5,18 +5,10 @@ lib.mkIf (host != "NxACE")
|
|||||||
thunderbird
|
thunderbird
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
programs.thunderbird = let
|
programs.thunderbird = let
|
||||||
inherit (lib.generators) toJSON;
|
inherit (lib.generators) toJSON;
|
||||||
extensions = toJSON {} {
|
extensions = toJSON {} {
|
||||||
"default-theme@mozilla.org" = "5787f490-29b8-436e-a111-640da8590790";
|
|
||||||
"google@search.mozilla.org" = "cc340383-7068-4b32-a10f-9f19334bfebc";
|
|
||||||
"ddg@search.mozilla.org" = "0c340210-f7ab-48e8-9778-600ed5d00160";
|
|
||||||
"amazondotcom@search.mozilla.org" = "881d8fdf-5772-4e33-81ff-faac2d1fa92c";
|
|
||||||
"wikipedia@search.mozilla.org" = "7ea3d39d-3eea-430f-9bd7-f902d8124d45";
|
|
||||||
"bing@search.mozilla.org" = "f480cce8-68af-4082-908e-f8996153352b";
|
|
||||||
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
|
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
|
||||||
"lightningcalendartabs@jlx.84" = "12d48e41-412e-4d09-835a-fa6fb8c180eb";
|
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -49,13 +41,47 @@ lib.mkIf (host != "NxACE")
|
|||||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||||
};
|
};
|
||||||
userChrome = with rice.color; /* css */ ''
|
userChrome = with rice.color; /* css */ ''
|
||||||
* {
|
body,
|
||||||
color: ${rice.lib.hex-to-rgb-comma-string foreground} !important;
|
#navigation-toolbox,
|
||||||
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
#calendarContent,
|
||||||
|
#calSidebar,
|
||||||
|
#tabpanelcontainer,
|
||||||
|
#spacesToolbar,
|
||||||
|
#tabs-toolbar,
|
||||||
|
#calMinimonth,
|
||||||
|
#primaryButtonSidePanel *,
|
||||||
|
.minimonth-week,
|
||||||
|
.multiday-header-corner, .day-column-heading, calendar-header-container, calendar-event-column, .multiday-hour-box,
|
||||||
|
#view-box,
|
||||||
|
#tabs-toolbar,
|
||||||
|
#status-bar,
|
||||||
|
.calview-toggle,
|
||||||
|
#calview-toggle-item,
|
||||||
|
#folderPaneHeaderBar,
|
||||||
|
#folderPane,
|
||||||
|
#threadPaneHeaderBar,
|
||||||
|
#threadTree,
|
||||||
|
#tabs-toolbar {
|
||||||
|
color: ${foreground} !important;
|
||||||
|
font-family: ${rice.font.base.name} !important;
|
||||||
|
background-color: transparent !important;
|
||||||
|
background-image: none !important;
|
||||||
border: none !important;
|
border: none !important;
|
||||||
|
-moz-appearance: none !important;
|
||||||
}
|
}
|
||||||
treechildren::-moz-tree-row(odd), treechildren::-moz-tree-row(even) {
|
.minimonth-nav-section {
|
||||||
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
|
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
||||||
|
border: ${builtins.toString rice.border-width}px solid ${border};
|
||||||
|
}
|
||||||
|
.button,
|
||||||
|
.button-primary,
|
||||||
|
.tab-content[selected] {
|
||||||
|
background-color: ${accent.base};
|
||||||
|
color: ${background};
|
||||||
|
background-image: none;
|
||||||
|
}
|
||||||
|
html {
|
||||||
|
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
@@ -63,8 +89,7 @@ lib.mkIf (host != "NxACE")
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
accounts.email.accounts =
|
accounts.email.accounts = let
|
||||||
let
|
|
||||||
OAuth2Settings = id: {
|
OAuth2Settings = id: {
|
||||||
"mail.smtpserver.smtp_${id}.authMethod" = 10;
|
"mail.smtpserver.smtp_${id}.authMethod" = 10;
|
||||||
"mail.server.server_${id}.authMethod" = 10;
|
"mail.server.server_${id}.authMethod" = 10;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
# { pkgs-unstable, secrets, user, system, inputs, ...}:
|
# { pkgs-unstable, secrets, user, system, inputs, ...}:
|
||||||
{ rice, user, ... }:
|
{ rice, user, ... }:
|
||||||
# browser.tabs.allow_transparent_browser
|
# browser.tabs.allow_transparent_browser
|
||||||
|
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
|
||||||
{
|
{
|
||||||
home.file = with rice.color; let
|
home.file = with rice.color; let
|
||||||
blur = builtins.toString 20;
|
blur = builtins.toString 20;
|
||||||
@@ -110,20 +111,14 @@
|
|||||||
|
|
||||||
/* new-tab */
|
/* new-tab */
|
||||||
@-moz-document url-prefix(about:home), url-prefix(about:newtab) {
|
@-moz-document url-prefix(about:home), url-prefix(about:newtab) {
|
||||||
|
:root{
|
||||||
|
--newtab-background-color-secondary: ${background} !important;
|
||||||
|
}
|
||||||
body, html {
|
body, html {
|
||||||
background: transparent !important;
|
background: transparent !important;
|
||||||
}
|
}
|
||||||
}
|
.tile, .search-handoff-button {
|
||||||
|
border: ${builtins.toString rice.border-width}px solid ${border} !important;
|
||||||
@-moz-document domain(youtube.com) {
|
|
||||||
#background, #chips-wrapper, ytd-mini-guide-entry-renderer {
|
|
||||||
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
|
||||||
backdrop-filter: blur(${blur}px);
|
|
||||||
border: ${builtins.toString rice.border-width} solid ${border};
|
|
||||||
}
|
|
||||||
body, html, ytd-app, ytd-mini-guide-renderer, div#content-container, #guide-content.ytd-app, #guide-wrapper, div#contentContainer {
|
|
||||||
background-color: transparent !important;
|
|
||||||
border: ${builtins.toString rice.border-width} solid ${border};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,7 +135,6 @@
|
|||||||
@-moz-document domain(reddit.com) {
|
@-moz-document domain(reddit.com) {
|
||||||
header {
|
header {
|
||||||
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
|
||||||
backdrop-filter: blur(20px);
|
|
||||||
}
|
}
|
||||||
body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{
|
body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{
|
||||||
background-color: transparent !important;
|
background-color: transparent !important;
|
||||||
@@ -171,6 +165,24 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
:root .theme-system {
|
||||||
|
--color-bg: transtparent !important;
|
||||||
|
--color-text: ${rice.color.foreground}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-document domain(developer.mozilla.org) {
|
||||||
|
html, body {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
.top-navigation, .article-actions-container {
|
||||||
|
background-color: rgba(0,0,0,1) !important;
|
||||||
|
backdrop-filter: blur(100px);
|
||||||
|
border-radius: ${builtins.toString rice.rounding}px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@-moz-document domain(github.com) {
|
@-moz-document domain(github.com) {
|
||||||
body, html, header, #repository-container-header, .bgColor-muted, section {
|
body, html, header, #repository-container-header, .bgColor-muted, section {
|
||||||
background-color: transparent !important;
|
background-color: transparent !important;
|
||||||
@@ -182,7 +194,8 @@
|
|||||||
background-color: transparent !important;
|
background-color: transparent !important;
|
||||||
}
|
}
|
||||||
header, footer {
|
header, footer {
|
||||||
background-color: rgba(0,0,0,0.5) !important;
|
background-color: rgba(0,0,0,1) !important;
|
||||||
|
backdrop-filter: blur(100px);
|
||||||
border-radius: ${builtins.toString rice.rounding}px;
|
border-radius: ${builtins.toString rice.rounding}px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -196,13 +209,50 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@-moz-document domain(nx2.site) {
|
@-moz-document url-prefix("https://nx2.site/") {
|
||||||
html {
|
html {
|
||||||
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
|
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
|
||||||
background-repeat: repeat !important;
|
background-repeat: repeat !important;
|
||||||
background-size: 2vmin 2vmin !important;
|
background-size: 2vmin 2vmin !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@-moz-document url-prefix("pw.nx2.site") {
|
||||||
|
html {
|
||||||
|
background: black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-document url-prefix("pw.nx2.site") {
|
||||||
|
html {
|
||||||
|
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
|
||||||
|
background-repeat: repeat !important;
|
||||||
|
background-size: 2vmin 2vmin !important;
|
||||||
|
}
|
||||||
|
body, .tw-bg-background-alt3, main, .card-header, .card-body, .modal-body {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
.modal-open, .modal-header, form.modal-content, .modal-footer {
|
||||||
|
background-color: rgba(0,0,0,0.8) !important;
|
||||||
|
backdrop-filter: blur(5px);
|
||||||
|
}
|
||||||
|
.cdk-virtual-scroll-content-wrapper, .card, .tw-bg-background, .modal-content {
|
||||||
|
background-color: rgba(0,0,0,0.8) !important;
|
||||||
|
border-radius: 10px !important;
|
||||||
|
border: ${toString rice.border-width}px solid ${border} !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-moz-document domain(chatgpt.com) {
|
||||||
|
body, html , .bg-token-sidebar-surface-primary {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
.bg-token-main-surface-primary {
|
||||||
|
background-color: rgba(0,0,0,1) !important;
|
||||||
|
backdrop-filter: blur(100px) !important;
|
||||||
|
border-radius: ${builtins.toString rice.rounding}px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
24
home-modules/fish.nix
Executable file → Normal file
24
home-modules/fish.nix
Executable file → Normal file
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs, lib, rice, user, ... }:
|
{ pkgs, ... }:
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
fish
|
fish
|
||||||
@@ -24,11 +24,11 @@
|
|||||||
$(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^}
|
$(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^}
|
||||||
$(echo -e "$logo" | sed -n 5p): ''${TERM^}
|
$(echo -e "$logo" | sed -n 5p): ''${TERM^}
|
||||||
$(echo -e "$logo" | sed -n 6p): $(bash --version | head --lines 1 | cut -f -4 -d' ' | sed -E 's-(.*?), version (.*?)\(.*-\1 \2-g')
|
$(echo -e "$logo" | sed -n 6p): $(bash --version | head --lines 1 | cut -f -4 -d' ' | sed -E 's-(.*?), version (.*?)\(.*-\1 \2-g')
|
||||||
$(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev)
|
$(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\U&/')
|
||||||
$(echo -e "$logo" | sed -n 8p): ''$(uname -r)
|
$(echo -e "$logo" | sed -n 8p): ''$(uname -r)
|
||||||
$(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g')
|
$(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | sed 's/./\U&/')
|
||||||
$(echo -e "$logo" | sed -n 10p): $(yazi --version | yazi --version | sed -E 's-(.*?) \(.*-\1-g')
|
$(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g')
|
||||||
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1)
|
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | sed 's/./\U&/')
|
||||||
"
|
"
|
||||||
echo -e "$msg"
|
echo -e "$msg"
|
||||||
'')
|
'')
|
||||||
@@ -85,23 +85,25 @@
|
|||||||
# ya = "yazi"; # function
|
# ya = "yazi"; # function
|
||||||
# nxfiglet = "figlet";
|
# nxfiglet = "figlet";
|
||||||
};
|
};
|
||||||
interactiveShellInit = ''
|
interactiveShellInit = /* fish */ ''
|
||||||
set -g fish_greeting
|
set -g fish_greeting
|
||||||
if not set -q IN_NIX_SHELL
|
if not set -q IN_NIX_SHELL
|
||||||
nxfetch
|
|
||||||
# yazi
|
|
||||||
if set -q SESSION_FROM_DE
|
if set -q SESSION_FROM_DE
|
||||||
set -e SESSION_FROM_DE
|
|
||||||
set tmp (mktemp -t "yazi-cwd.XXXXX")
|
set tmp (mktemp -t "yazi-cwd.XXXXX")
|
||||||
yazi $argv --cwd-file="$tmp"
|
yazi --cwd-file="$tmp"
|
||||||
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||||
cd -- "$cwd"
|
builtin cd -- "$cwd"
|
||||||
end
|
end
|
||||||
rm -f -- "$tmp"
|
rm -f -- "$tmp"
|
||||||
end
|
end
|
||||||
|
nxfetch
|
||||||
end
|
end
|
||||||
'';
|
'';
|
||||||
functions = {
|
functions = {
|
||||||
|
take = /* bash */ ''
|
||||||
|
mkdir $argv
|
||||||
|
cd $argv
|
||||||
|
'';
|
||||||
# gpg = '';
|
# gpg = '';
|
||||||
# set bold \e[1m
|
# set bold \e[1m
|
||||||
# set green \e[32m
|
# set green \e[32m
|
||||||
|
|||||||
19
home-modules/games.nix
Executable file → Normal file
19
home-modules/games.nix
Executable file → Normal file
@@ -1,7 +1,18 @@
|
|||||||
{ pkgs, lib, host, ... }:
|
{ pkgs-unstable, pkgs, lib, host, ... }:
|
||||||
lib.mkIf (host != "NxACE")
|
lib.mkIf (host == "NxNORTH" || host == "NxACE")
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home = {
|
||||||
|
packages = (with pkgs-unstable; [
|
||||||
|
protonup
|
||||||
|
mangohud
|
||||||
|
|
||||||
|
# heroic
|
||||||
|
|
||||||
mindustry-wayland
|
mindustry-wayland
|
||||||
];
|
]) ++ [ pkgs.heroic ];
|
||||||
|
sessionVariables = {
|
||||||
|
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d";
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
0
home-modules/gestures.nix
Executable file → Normal file
0
home-modules/gestures.nix
Executable file → Normal file
54
home-modules/ghostty.nix
Normal file
54
home-modules/ghostty.nix
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
{ config, rice, inputs, system, ... }:
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
packages = [ inputs.ghostty.packages.${system}.default ];
|
||||||
|
file."${config.xdg.configHome}/ghostty/config".text = with rice.color; /* ini */ ''
|
||||||
|
font-family="${rice.font.code.name}"
|
||||||
|
clipboard-read=allow
|
||||||
|
# clipboard-write=allow
|
||||||
|
# clipboard-read=deny
|
||||||
|
# clipboard-write=deny
|
||||||
|
clipboard-trim-trailing-spaces=true
|
||||||
|
clipboard-paste-protection=false
|
||||||
|
|
||||||
|
window-decoration=false
|
||||||
|
confirm-close-surface=false
|
||||||
|
|
||||||
|
window-padding-x=5
|
||||||
|
window-padding-y=5
|
||||||
|
|
||||||
|
keybind=ctrl+comma=reload_config
|
||||||
|
keybind=ctrl+equal=increase_font_size:1
|
||||||
|
keybind=ctrl+minus=decrease_font_size:1
|
||||||
|
keybind=ctrl+shift+v=paste_from_clipboard
|
||||||
|
|
||||||
|
background=${background}
|
||||||
|
foreground=${foreground}
|
||||||
|
|
||||||
|
background-opacity=${builtins.toString rice.transparency}
|
||||||
|
|
||||||
|
cursor-color=${special.bright}
|
||||||
|
cursor-opacity=0.8
|
||||||
|
|
||||||
|
palette=0=${black.base}
|
||||||
|
palette=8=${black.bright}
|
||||||
|
palette=1=${red.base}
|
||||||
|
palette=9=${red.bright}
|
||||||
|
palette=2=${green.base}
|
||||||
|
palette=10=${green.bright}
|
||||||
|
palette=3=${yellow.base}
|
||||||
|
palette=11=${yellow.bright}
|
||||||
|
palette=4=${blue.base}
|
||||||
|
palette=12=${blue.bright}
|
||||||
|
palette=5=${magenta.base}
|
||||||
|
palette=13=${magenta.bright}
|
||||||
|
palette=6=${cyan.base}
|
||||||
|
palette=14=${cyan.bright}
|
||||||
|
palette=7=${white.base}
|
||||||
|
palette=15=${white.bright}
|
||||||
|
|
||||||
|
selection-background=${accent.base}
|
||||||
|
selection-foreground=${background}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
9
home-modules/gimp.nix
Normal file
9
home-modules/gimp.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, lib, host, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
(gimp-with-plugins.override {
|
||||||
|
plugins = with gimpPlugins; [ bimp ];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
0
home-modules/git.nix
Executable file → Normal file
0
home-modules/git.nix
Executable file → Normal file
196
home-modules/gtk.nix
Executable file → Normal file
196
home-modules/gtk.nix
Executable file → Normal file
@@ -1,4 +1,5 @@
|
|||||||
{ config, pkgs, lib, rice, user, ... }: let
|
{ config, pkgs, rice, ... }:
|
||||||
|
let
|
||||||
# theme-name = "Colloid-Pink-Dark-Compact";
|
# theme-name = "Colloid-Pink-Dark-Compact";
|
||||||
# theme-package = pkgs.colloid-gtk-theme.override {
|
# theme-package = pkgs.colloid-gtk-theme.override {
|
||||||
# themeVariants = [ "pink" ];
|
# themeVariants = [ "pink" ];
|
||||||
@@ -6,18 +7,134 @@
|
|||||||
# sizeVariants = [ "compact" ];
|
# sizeVariants = [ "compact" ];
|
||||||
# tweaks = [ "black" ];
|
# tweaks = [ "black" ];
|
||||||
# };
|
# };
|
||||||
theme-name = "catppuccin-macchiato-pink-compact+rimless,black";
|
|
||||||
theme-package = pkgs.catppuccin-gtk.override {
|
# theme-name = "catppuccin-macchiato-pink-compact+rimless,black";
|
||||||
accents = [ "pink" ];
|
# theme-package = pkgs.catppuccin-gtk.override {
|
||||||
size = "compact";
|
# accents = [ "pink" ];
|
||||||
tweaks = [ "rimless" "black" ];
|
# size = "compact";
|
||||||
variant = "macchiato";
|
# tweaks = [ "rimless" "black" ];
|
||||||
};
|
# variant = "macchiato";
|
||||||
|
# };
|
||||||
|
theme-name = "Materia-dark-compact";
|
||||||
|
theme-package = pkgs.materia-theme-transparent;
|
||||||
|
# theme-name = "numix";
|
||||||
|
# theme-name = "adw-gtk3-dark";
|
||||||
|
# theme-package = pkgs.adw-gtk3;
|
||||||
|
# theme-package = let
|
||||||
|
# theme-string = with rice.color; let
|
||||||
|
# h = rice.lib.nohash;
|
||||||
|
# d = rice.lib.float-to-drune;
|
||||||
|
# in /* ini */ ''
|
||||||
|
# BG=${h background}
|
||||||
|
# FG=${h foreground}
|
||||||
|
# SEL_BG=${h accent.base}
|
||||||
|
# SEL_FG=${h black.base}
|
||||||
|
# ACCENT_BG=${h accent.base}
|
||||||
|
# TXT_BG=${h black.dark}
|
||||||
|
# TXT_FG=${h foreground}
|
||||||
|
# HDR_BG=${h background}
|
||||||
|
# HDR_FG=${h foreground}
|
||||||
|
# BTN_BG=${h accent.dark}
|
||||||
|
# BTN_FG=${h foreground}
|
||||||
|
# HDR_BTN_BG=${h accent.dark}
|
||||||
|
# HDR_BTN_FG=${h foreground}
|
||||||
|
# WM_BORDER_FOCUS=${h border}
|
||||||
|
# WM_BORDER_UNFOCUS=${h accent.dark}
|
||||||
|
# ROUNDNESS=${builtins.toString rice.rounding}
|
||||||
|
# ROUNDNESS_GTK2_HIDPI=${builtins.toString rice.rounding}
|
||||||
|
# OUTLINE_WIDTH=${builtins.toString rice.border-width}
|
||||||
|
# BTN_OUTLINE_OFFSET=-3
|
||||||
|
# BTN_OUTLINE_WIDTH=1
|
||||||
|
# SPACING=${builtins.toString rice.gap-size}
|
||||||
|
# GRADIENT=0.0
|
||||||
|
# CINNAMON_OPACITY=${builtins.toString rice.transparency}
|
||||||
|
# INACTIVE_FG=${h foreground}
|
||||||
|
# INACTIVE_TXT_FG=${h foreground}
|
||||||
|
# INACTIVE_HDR_FG=${h foreground}
|
||||||
|
# ICONS_DARK=${h accent.dark}
|
||||||
|
# ICONS_MEDIUM=${h accent.base}
|
||||||
|
# ICONS_LIGHT=${h accent.bright}
|
||||||
|
# ICONS_LIGHT_FOLDER=${h accent.base}
|
||||||
|
# ICONS_SYMBOLIC_ACTION=${h accent.base}
|
||||||
|
# ICONS_SYMBOLIC_PANEL=${h accent.base}
|
||||||
|
# ICONS_STYLE=icons_papirus
|
||||||
|
# CARET1_FG=${h white.dark}
|
||||||
|
# CARET2_FG=${h black.bright}
|
||||||
|
# CARET_SIZE=0.04
|
||||||
|
# MENU_BG=${h accent.dark}
|
||||||
|
# MENU_FG=${h foreground}
|
||||||
|
# OUTLINE_WIDTH=${builtins.toString rice.border-width}
|
||||||
|
# SPOTIFY_PROTO_BG=${h accent.dark}
|
||||||
|
# SPOTIFY_PROTO_FG=${h foreground}
|
||||||
|
# SPOTIFY_PROTO_SEL=${h blue.base}
|
||||||
|
# BASE16_GENERATE_DARK=False
|
||||||
|
# BASE16_INVERT_TERMINAL=False
|
||||||
|
# BASE16_MILD_TERMINAL=False
|
||||||
|
# UNITY_DEFAULT_LAUNCHER_STYLE=False
|
||||||
|
# '';
|
||||||
|
# # theme-source-pkg = pkgs.materia-theme;
|
||||||
|
# theme-source-pkg = pkgs.themix-gui;
|
||||||
|
# in pkgs.stdenv.mkDerivation {
|
||||||
|
# name = "oomox-gtk";
|
||||||
|
# version = theme-source-pkg.version;
|
||||||
|
# src = theme-source-pkg.src;
|
||||||
|
# dontBuild = true;
|
||||||
|
# nativeBuildInputs = with pkgs; [
|
||||||
|
# glib
|
||||||
|
# libxml2
|
||||||
|
# bc
|
||||||
|
# ];
|
||||||
|
# buildInputs = with pkgs; [
|
||||||
|
# gnome-themes-extra
|
||||||
|
# gdk-pixbuf
|
||||||
|
# librsvg
|
||||||
|
# sassc
|
||||||
|
# inkscape
|
||||||
|
# optipng
|
||||||
|
# ];
|
||||||
|
# propagatedUserEnvPkgs = with pkgs; [
|
||||||
|
# gtk-engine-murrine
|
||||||
|
# ];
|
||||||
|
# # installPhase = ''
|
||||||
|
# # mkdir -p $out/share/themes/materia
|
||||||
|
# # patchShebangs .
|
||||||
|
# # ./change_color.sh -o materia -t $out/share/themes <(echo -e "${theme-string}")
|
||||||
|
# # '';
|
||||||
|
# installPhase = ''
|
||||||
|
# mkdir -p $out/share/icons/icons_papirus
|
||||||
|
# mkdir -p $out/share/icons/icons_numix
|
||||||
|
# mkdir -p $out/share/icons/icons_suruplus
|
||||||
|
# echo "${theme-string}" > $out/oomox.colors
|
||||||
|
# pushd plugins/icons_papirus
|
||||||
|
# patchShebangs .
|
||||||
|
# ./change_color.sh -o icons_papirus -d $out/share/icons/icons_papirus $out/oomox.colors
|
||||||
|
# popd
|
||||||
|
# pushd plugins/icons_numix
|
||||||
|
# patchShebangs .
|
||||||
|
# ./change_color.sh -o icons_numix -d $out/share/icons/icons_numix $out/oomox.colors
|
||||||
|
# popd
|
||||||
|
# pushd plugins/icons_suruplus
|
||||||
|
# patchShebangs .
|
||||||
|
# ./change_color.sh -o icons_suruplus -d $out/share/icons/icons_suruplus $out/oomox.colors
|
||||||
|
# popd
|
||||||
|
# mkdir -p $out/share/themes/numix
|
||||||
|
# pushd plugins/theme_oomox
|
||||||
|
# patchShebangs .
|
||||||
|
# HOME=$out ./change_color.sh -o numix -m all -t $out/share/themes $out/oomox.colors
|
||||||
|
# popd
|
||||||
|
# '';
|
||||||
|
# meta = {
|
||||||
|
# description = "custom theme utility";
|
||||||
|
# homepage = "https://github.com/themix-project/themix-gui";
|
||||||
|
# maintainers = [ ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
in {
|
in {
|
||||||
home.packages = with pkgs; [
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
# gnome.gnome-themes-extra
|
# gnome.gnome-themes-extra
|
||||||
# gnome.adwaita-icon-theme
|
adwaita-icon-theme
|
||||||
gnome.gnome-tweaks
|
gnome-tweaks
|
||||||
gtk3
|
gtk3
|
||||||
gtk4
|
gtk4
|
||||||
# catppuccin-gtk
|
# catppuccin-gtk
|
||||||
@@ -25,46 +142,57 @@ in {
|
|||||||
] ++ [
|
] ++ [
|
||||||
# pkgs-unstable.themix-gui
|
# pkgs-unstable.themix-gui
|
||||||
];
|
];
|
||||||
|
sessionVariables.GTK_THEME = theme-name;
|
||||||
|
pointerCursor = {
|
||||||
home.sessionVariables.GTK_THEME = theme-name;
|
gtk.enable = true;
|
||||||
|
x11.enable = true;
|
||||||
|
} // rice.cursor;
|
||||||
|
};
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
theme = {
|
theme = {
|
||||||
name = theme-name;
|
name = theme-name;
|
||||||
package = theme-package;
|
package = theme-package;
|
||||||
};
|
};
|
||||||
gtk3.extraConfig = {
|
gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
|
||||||
gtk-application-prefer-dark-theme = 1;
|
gtk3 = {
|
||||||
|
extraConfig.gtk-application-prefer-dark-theme = 1;
|
||||||
|
# extraCss = with rice.color; /* css */ ''
|
||||||
|
# wnck-pager {
|
||||||
|
# color: ${black.bright};
|
||||||
|
# background-color: ${background};
|
||||||
|
# }
|
||||||
|
|
||||||
|
# wnck-pager:selected {
|
||||||
|
# color: ${background};
|
||||||
|
# background-color: ${accent.base};
|
||||||
|
# }
|
||||||
|
# '';
|
||||||
|
# window.background {
|
||||||
|
# background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency});
|
||||||
|
# }
|
||||||
|
# .background, .view, .surface, .frame, box, window.decoration, stack {
|
||||||
|
# background-color: transparent;
|
||||||
|
# }
|
||||||
};
|
};
|
||||||
gtk4.extraConfig = {
|
gtk4 = {
|
||||||
gtk-application-prefer-dark-theme = 1;
|
extraConfig.gtk-application-prefer-dark-theme = 1;
|
||||||
|
extraCss = config.gtk.gtk3.extraCss;
|
||||||
};
|
};
|
||||||
cursorTheme = rice.cursor;
|
cursorTheme = rice.cursor;
|
||||||
};
|
};
|
||||||
|
|
||||||
home.pointerCursor = {
|
|
||||||
gtk.enable = true;
|
|
||||||
x11.enable = true;
|
|
||||||
} // rice.cursor;
|
|
||||||
|
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
"gtk-4.0/assets".source = "${theme-package}/share/themes/${theme-name}/gtk-4.0/assets";
|
"gtk-4.0/assets".source = "${theme-package}/share/themes/${theme-name}/gtk-3.20/assets";
|
||||||
"gtk-4.0/gtk.css".source = "${theme-package}/share/themes/${theme-name}/gtk-4.0/gtk.css";
|
"gtk-4.0/gtk.css".source = "${theme-package}/share/themes/${theme-name}/gtk-3.20/gtk.css";
|
||||||
"gtk-4.0/gtk-dark.css".source = "${theme-package}/share/themes/${theme-name}/gtk-4.0/gtk-dark.css";
|
"gtk-4.0/gtk-dark.css".source = "${theme-package}/share/themes/${theme-name}/gtk-3.20/gtk-dark.css";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dconf = {
|
dconf = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
"org/gnome/desktop/interface" = {
|
"org/gnome/desktop/interface" = {
|
||||||
color-scheme = "prefer-dark";
|
color-scheme = "prefer-dark";
|
||||||
gtk-theme = theme-name;
|
# gtk-theme = theme-name;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,14 @@
|
|||||||
{ pkgs, pkgs-unstable,lib, rice, ... }:
|
{ pkgs, pkgs-unstable, lib, rice, ... }:
|
||||||
{
|
{
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
# nixfmt-classic # nix formater
|
# nixfmt-classic # nix formater
|
||||||
# nil # nix language server
|
# nil # nix language server
|
||||||
# nixd # specified in nixd.nix
|
# nixd # specified in nixd.nix
|
||||||
|
gopls
|
||||||
|
delve
|
||||||
python311Packages.python-lsp-server
|
python311Packages.python-lsp-server
|
||||||
|
jdt-language-server
|
||||||
ruff
|
ruff
|
||||||
ruff-lsp
|
ruff-lsp
|
||||||
pyright
|
pyright
|
||||||
@@ -31,52 +34,185 @@
|
|||||||
# theme = "base16_terminal";
|
# theme = "base16_terminal";
|
||||||
theme = "base16";
|
theme = "base16";
|
||||||
editor = {
|
editor = {
|
||||||
|
scrolloff = 5;
|
||||||
|
mouse = true;
|
||||||
|
# default-yank-register = "\"";
|
||||||
|
middle-click-paste = false;
|
||||||
|
scroll-lines = 3;
|
||||||
|
shell = ["sh" "-c"];
|
||||||
|
line-number = "relative";
|
||||||
|
cursorline = true;
|
||||||
|
cursorcolumn = true;
|
||||||
|
# continue-comments = false;
|
||||||
|
auto-completion = true;
|
||||||
|
# path-completion = true;
|
||||||
|
auto-format = false;
|
||||||
|
idle-timeout = 250;
|
||||||
|
completion-timeout = 5;
|
||||||
|
preview-completion-insert = true;
|
||||||
|
completion-trigger-len = 1;
|
||||||
|
auto-info = true;
|
||||||
|
true-color = false; # is detected automatically if set to false
|
||||||
|
undercurl = false; # is detected automatically if set to false
|
||||||
|
rulers = [];
|
||||||
|
bufferline = "always";
|
||||||
|
color-modes = true;
|
||||||
|
text-width = 120;
|
||||||
|
workspace-lsp-roots = [];
|
||||||
|
default-line-ending = "native";
|
||||||
|
insert-final-newline = false;
|
||||||
|
popup-border = "all";
|
||||||
|
indent-heuristic = "hybrid";
|
||||||
|
jump-label-alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
|
# clip-board-provider = # selected automatically
|
||||||
|
# end-of-line-diagnostics = "hint";
|
||||||
|
statusline = {
|
||||||
|
left = [ "mode"
|
||||||
|
"spinner"
|
||||||
|
"file-name"
|
||||||
|
"read-only-indicator"
|
||||||
|
"file-type"
|
||||||
|
"version-control"
|
||||||
|
];
|
||||||
|
center = [
|
||||||
|
"position-percentage"
|
||||||
|
"total-line-numbers"
|
||||||
|
"register"
|
||||||
|
];
|
||||||
|
right = [
|
||||||
|
"spinner"
|
||||||
|
"diagnostics"
|
||||||
|
"selections"
|
||||||
|
"primary-selection-length"
|
||||||
|
"register"
|
||||||
|
"position"
|
||||||
|
"file-encoding"
|
||||||
|
];
|
||||||
|
# separator = " ";
|
||||||
|
mode = {
|
||||||
|
normal = "NORMAL";
|
||||||
|
insert = "INSERT";
|
||||||
|
select = "SELECT";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
lsp = {
|
||||||
|
enable = true;
|
||||||
|
display-messages = false;
|
||||||
|
auto-signature-help = true;
|
||||||
|
display-inlay-hints = true;
|
||||||
|
};
|
||||||
cursor-shape = {
|
cursor-shape = {
|
||||||
normal = "block";
|
normal = "block";
|
||||||
insert = "bar";
|
insert = "bar";
|
||||||
select = "underline";
|
select = "underline";
|
||||||
};
|
};
|
||||||
soft-wrap = {
|
file-picker = {
|
||||||
enable = true;
|
hidden = false; # Enables ignoring hidden files
|
||||||
|
follow-symlinks = true; # Follow symlinks instead of ignoring them
|
||||||
|
deduplicate-links = true; # Ignore symlinks that point at files already shown in the picker
|
||||||
|
parents = true; # Enables reading ignore files from parent directories
|
||||||
|
ignore = true; # Enables reading .ignore files
|
||||||
|
git-ignore = true; # Enables reading .gitignore files
|
||||||
|
git-global = true; # Enables reading global .gitignore, whose path is specified in git's config: core.excludesfile option
|
||||||
|
git-exclude = true; # Enables reading .git/info/exclude files
|
||||||
|
# max-depth unset = ; # Set with an integer value for maximum depth to recurse
|
||||||
|
};
|
||||||
|
auto-pairs = {
|
||||||
|
"(" = ")";
|
||||||
|
"{" = "}";
|
||||||
|
"[" = "]";
|
||||||
|
"\"" = "\"";
|
||||||
|
"`" = "`";
|
||||||
|
"<" = ">";
|
||||||
|
# "/* " = " */";
|
||||||
|
};
|
||||||
|
auto-save = {
|
||||||
|
focus-lost = false;
|
||||||
|
after-delay = {
|
||||||
|
enable = false;
|
||||||
|
timeout = 3000;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
search = {
|
||||||
|
smart-case = true;
|
||||||
|
wrap-around = true;
|
||||||
|
};
|
||||||
|
whitespace = {
|
||||||
|
render = {
|
||||||
|
skip-levels = "none";
|
||||||
|
space = "none";
|
||||||
|
nbsp = "none";
|
||||||
|
nnbsp = "none";
|
||||||
|
tab = "none";
|
||||||
|
newline = "none";
|
||||||
|
tabpad = "none";
|
||||||
|
};
|
||||||
|
characters = {
|
||||||
|
skip-levels = 1;
|
||||||
|
space = "·";
|
||||||
|
nbsp = "⍽";
|
||||||
|
nnbsp = "␣";
|
||||||
|
tab = "→";
|
||||||
|
newline = "⏎";
|
||||||
|
tabpad = "·";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
line-number = "relative";
|
|
||||||
color-modes = true;
|
|
||||||
bufferline = "always";
|
|
||||||
popup-border = "all";
|
|
||||||
completion-trigger-len = 1;
|
|
||||||
completion-timeout = 5;
|
|
||||||
file-picker.hidden = false;
|
|
||||||
middle-click-paste = false;
|
|
||||||
cursorline = true;
|
|
||||||
indent-guides = {
|
indent-guides = {
|
||||||
render = true;
|
render = true;
|
||||||
character = "╎";
|
character = "╎";
|
||||||
|
skip-levels = 0;
|
||||||
};
|
};
|
||||||
lsp.display-inlay-hints = true;
|
gutters = [
|
||||||
statusline.center = [ "position-percentage" ];
|
"diagnostics"
|
||||||
true-color = true;
|
"spacer"
|
||||||
whitespace.characters = {
|
"line-numbers"
|
||||||
newline = "↴";
|
"spacer"
|
||||||
tab = "⇥";
|
"diff"
|
||||||
skip-levels = 1;
|
];
|
||||||
|
# line-numbers = {};
|
||||||
|
# layout.minwidth = 3;
|
||||||
|
# diagnostics = {};
|
||||||
|
# diff = {};
|
||||||
|
# spacer = {};
|
||||||
|
soft-wrap = {
|
||||||
|
enable = true;
|
||||||
|
max-wrap = 20;
|
||||||
|
max-indent-retain = 40;
|
||||||
|
wrap-indicator = "↪";
|
||||||
|
wrap-at-text-width = false;
|
||||||
};
|
};
|
||||||
|
smart-tab = {
|
||||||
|
enable = false;
|
||||||
|
supersend-menu = false;
|
||||||
};
|
};
|
||||||
keys.normal = {
|
# inline-diagnostics = {
|
||||||
|
# cursor-line = "hint";
|
||||||
|
# other-lines = "disable";
|
||||||
|
# prefix-len = 1;
|
||||||
|
# # max-wrap = set above
|
||||||
|
# max-diagnostics = 20;
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
keys = {
|
||||||
|
normal = {
|
||||||
"C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ];
|
"C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ];
|
||||||
"A-`" = [ "no_op" ];
|
"A-`" = [ "no_op" ];
|
||||||
"`" = [ "no_op" ];
|
"`" = [ "no_op" ];
|
||||||
|
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
|
||||||
|
};
|
||||||
|
select = {
|
||||||
|
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
|
||||||
};
|
};
|
||||||
keys.normal."ö" = {
|
|
||||||
"s" = [ "switch_case" ];
|
|
||||||
"u" = [ "switch_to_uppercase" ];
|
|
||||||
"l" = [ "switch_to_lowercase" ];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
languages = {
|
languages = {
|
||||||
language = [
|
language = [
|
||||||
{
|
{
|
||||||
name = "nix";
|
name = "nix";
|
||||||
language-servers = [ "nixd" "nil" ];
|
language-servers = [
|
||||||
|
"nixd"
|
||||||
|
# "llm"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "latex";
|
name = "latex";
|
||||||
@@ -89,7 +225,6 @@
|
|||||||
file-types = [ "md" "MD" ];
|
file-types = [ "md" "MD" ];
|
||||||
scope = "text.<name>";
|
scope = "text.<name>";
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "python";
|
name = "python";
|
||||||
language-servers = [ "pyright" "ruff" ];
|
language-servers = [ "pyright" "ruff" ];
|
||||||
@@ -122,6 +257,16 @@
|
|||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "go";
|
||||||
|
language-servers = [
|
||||||
|
"gopls"
|
||||||
|
# "llm"
|
||||||
|
];
|
||||||
|
# formatter = {
|
||||||
|
# command = "gofmt";
|
||||||
|
# };
|
||||||
|
}
|
||||||
];
|
];
|
||||||
language-server = {
|
language-server = {
|
||||||
"nixd" = {
|
"nixd" = {
|
||||||
@@ -137,20 +282,19 @@
|
|||||||
command = "ruff-lsp";
|
command = "ruff-lsp";
|
||||||
config.settings.args = [
|
config.settings.args = [
|
||||||
# Set line length
|
# Set line length
|
||||||
# "--line-length"
|
"--line-length"
|
||||||
# "79"
|
"240"
|
||||||
|
# Enable custom ruff rules
|
||||||
# Enable some ruff rules
|
# "--select" lib.concatStringsSep [ ]
|
||||||
# "--select"
|
];
|
||||||
# (
|
};
|
||||||
# "F,W,E,I,N,D200,D201,D202,D203,D204,D205,D206,D207,D208,D209,D210,D211,"
|
"llm" = {
|
||||||
# + "D212,D213,D214,D215,D300,D301,D400,D401,D402,D403,D404,D405,D406,"
|
command = lib.getExe pkgs.helix-gpt;
|
||||||
# + "D407,D408,D409,D410,D411,D412,D413,D414,D415,D416,D417,D418,D419,"
|
args = [
|
||||||
# + "UP,YTT,TRIO,ASYNC,B,A,COM,C4,DTZ,T10,DJ,EXE,FA,ISC,ICN001,G010,"
|
"--handler"
|
||||||
# + "G101,G201,G202,INP,PIE,Q,RSE,RET,SLOT,SIM,TCH,INT,ARG,PTH,TD001,"
|
"ollama"
|
||||||
# + "TD004,TD005,TD006,TD007,PD,PL,TRY004,TRY200,TRY201,TRY302,TRY400,"
|
"--ollamaModel"
|
||||||
# + "TRY401,FLY,NPY,AIR,PERF,FURB,LOG,RUF"
|
"codellama:7b"
|
||||||
# )
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -159,7 +303,7 @@
|
|||||||
base16 = with rice.color; {
|
base16 = with rice.color; {
|
||||||
"attributes" = foreground;
|
"attributes" = foreground;
|
||||||
"comment" = {
|
"comment" = {
|
||||||
"fg" = white.dark;
|
"fg" = black.bright;
|
||||||
"modifiers" = [ "italic" ];
|
"modifiers" = [ "italic" ];
|
||||||
};
|
};
|
||||||
"constant" = accent.bright;
|
"constant" = accent.bright;
|
||||||
@@ -167,7 +311,7 @@
|
|||||||
"constant.numeric" = foreground;
|
"constant.numeric" = foreground;
|
||||||
"constructor" = weird.base;
|
"constructor" = weird.base;
|
||||||
"debug" = yellow.base;
|
"debug" = yellow.base;
|
||||||
"diagnostic.modifiers" = [ "underlined" ];
|
"diagnostic.modifiers" = [ "underline" ];
|
||||||
"diff.delta" = blue.bright;
|
"diff.delta" = blue.bright;
|
||||||
"diff.minus" = negative.bright;
|
"diff.minus" = negative.bright;
|
||||||
"diff.plus" = positive.bright;
|
"diff.plus" = positive.bright;
|
||||||
@@ -221,7 +365,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
"ui.background" = { # general background of the editor window
|
"ui.background" = { # general background of the editor window
|
||||||
"bg" = background;
|
# "bg" = background;
|
||||||
};
|
};
|
||||||
"ui.bufferline" = { # the top line ("tab"-line)
|
"ui.bufferline" = { # the top line ("tab"-line)
|
||||||
"fg" = accent.base;
|
"fg" = accent.base;
|
||||||
@@ -305,8 +449,8 @@
|
|||||||
"fg" = black.bright;
|
"fg" = black.bright;
|
||||||
};
|
};
|
||||||
"ui.virtual.inlay-hint" = {
|
"ui.virtual.inlay-hint" = {
|
||||||
"fg" = weird.bright;
|
"fg" = weird.dark;
|
||||||
"bg" = weird.dark;
|
"bg" = weird.base;
|
||||||
};
|
};
|
||||||
"ui.virtual.ruler" = {
|
"ui.virtual.ruler" = {
|
||||||
"bg" = background;
|
"bg" = background;
|
||||||
|
|||||||
7
home-modules/hugo.nix
Normal file
7
home-modules/hugo.nix
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
hugo
|
||||||
|
dart-sass
|
||||||
|
];
|
||||||
|
}
|
||||||
143
home-modules/hyprland-autoname-workspaces.nix
Executable file → Normal file
143
home-modules/hyprland-autoname-workspaces.nix
Executable file → Normal file
@@ -2,60 +2,79 @@
|
|||||||
{
|
{
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [ hyprland-autoname-workspaces ];
|
packages = with pkgs; [ hyprland-autoname-workspaces ];
|
||||||
file.".config/hyprland-autoname-workspaces/config.toml".text = ''
|
file.".config/hyprland-autoname-workspaces/config.toml".text = let
|
||||||
version = "1.1.14"
|
icons = /* toml */ ''
|
||||||
|
DEFAULT = "{class}"
|
||||||
|
"Alacritty" = ""
|
||||||
|
"Bitwarden" = ""
|
||||||
|
"blueman-manager" = ""
|
||||||
|
"chatterino" = ""
|
||||||
|
"Chromium" = ""
|
||||||
|
"code" = ""
|
||||||
|
"code-oss" = ""
|
||||||
|
"codium" = ""
|
||||||
|
"codium-url-handler" = ""
|
||||||
|
"com.mitchellh.ghostty" = ""
|
||||||
|
"com.obsproject.Studio" = ""
|
||||||
|
"discord" = ""
|
||||||
|
"Element" = ""
|
||||||
|
"epicgameslauncher.exe" = ""
|
||||||
|
".*.exe" = ""
|
||||||
|
"firefox" = ""
|
||||||
|
"galaxyclient.exe" = ""
|
||||||
|
"Gimp-.*" = ""
|
||||||
|
"KiCad" = ""
|
||||||
|
"kitty" = ""
|
||||||
|
"libreoffice-calc" = ""
|
||||||
|
"libreoffice-writer" = ""
|
||||||
|
"lutris" = ""
|
||||||
|
"mpv" = ""
|
||||||
|
"obsidian" = ""
|
||||||
|
"org.inkscape.Inkscape" = ""
|
||||||
|
"org.remmina.Remmina" = ""
|
||||||
|
"pavucontrol" = ""
|
||||||
|
"pcbnew" = ""
|
||||||
|
"Signal" = ""
|
||||||
|
"spotify" = ""
|
||||||
|
"Spotify" = ""
|
||||||
|
"steam" = ""
|
||||||
|
"thunar" = ""
|
||||||
|
"thunderbird" = ""
|
||||||
|
"Tor Browser" = ""
|
||||||
|
"vesktop" = ""
|
||||||
|
"virt-manager" = ""
|
||||||
|
"VirtualBox" = ""
|
||||||
|
"VirtualBox Machine" = ""
|
||||||
|
"VirtualBox Manager" = ""
|
||||||
|
"VSCodium" = ""
|
||||||
|
"Xsane" = ""
|
||||||
|
"zathura" = ""
|
||||||
|
"zoom" = ""
|
||||||
|
'';
|
||||||
|
in /* toml */ ''
|
||||||
|
version = "1.1.15"
|
||||||
|
|
||||||
|
[format]
|
||||||
|
dedup = false
|
||||||
|
dedup_inactive_fullscreen = false
|
||||||
|
delim = " "
|
||||||
|
workspace = "{id}:{clients}"
|
||||||
|
workspace_empty = "{id}"
|
||||||
|
client = "{icon}"
|
||||||
|
client_fullscreen = "F{icon}"
|
||||||
|
client_active = "<u>{icon}</u>"
|
||||||
|
client_dup = "{icon}x{counter}"
|
||||||
|
client_dup_active = "<u>{icon}</u>{delim}{icon}x{counter_unfocused}"
|
||||||
|
client_dup_fullscreen = "F{icon}{delim}{icon}x{counter_unfocused}"
|
||||||
|
|
||||||
|
[exclude]
|
||||||
|
"steam" = "^(Friends List.*)?$"
|
||||||
|
"fcitx" = ".*"
|
||||||
|
|
||||||
[class]
|
[class]
|
||||||
VirtualBox = ""
|
${icons}
|
||||||
steam = ""
|
|
||||||
"VirtualBox Manager" = ""
|
|
||||||
"com.obsproject.Studio" = ""
|
|
||||||
"[Ff]irefox" = ""
|
|
||||||
"[Tt]hunderbird" = ""
|
|
||||||
pcbnew = ""
|
|
||||||
".*.exe" = ""
|
|
||||||
Element = ""
|
|
||||||
Signal = ""
|
|
||||||
Gimp = ""
|
|
||||||
VSCodium = ""
|
|
||||||
"[sS]potify" = ""
|
|
||||||
virt-manager = ""
|
|
||||||
lutris = ""
|
|
||||||
DEFAULT = "{class}"
|
|
||||||
"epicgameslauncher.exe" = ""
|
|
||||||
"[Cc]ode" = ""
|
|
||||||
"galaxyclient.exe" = ""
|
|
||||||
pavucontrol = ""
|
|
||||||
"Tor Browser" = ""
|
|
||||||
mpv = ""
|
|
||||||
chatterino = ""
|
|
||||||
libreoffice-writer = ""
|
|
||||||
kitty = ""
|
|
||||||
"cyberpunk2077.exe" = ""
|
|
||||||
KiCad = ""
|
|
||||||
"[tT]hunar" = ""
|
|
||||||
"riotclientux.exe" = ""
|
|
||||||
libreoffice-calc = ""
|
|
||||||
"org.remmina.Remmina" = ""
|
|
||||||
"org.inkscape.Inkscape" = ""
|
|
||||||
"VirtualBox Machine" = ""
|
|
||||||
Bitwarden = ""
|
|
||||||
"[gG]imp-.*" = ""
|
|
||||||
Chromium = ""
|
|
||||||
obsidian = ""
|
|
||||||
"leagueclientux.exe" = ""
|
|
||||||
zathura = ""
|
|
||||||
code-oss = ""
|
|
||||||
codium-url-handler = ""
|
|
||||||
discord = ""
|
|
||||||
vesktop = ""
|
|
||||||
blueman-manager = ""
|
|
||||||
Alacritty = ""
|
|
||||||
zoom = ""
|
|
||||||
spotify = ""
|
|
||||||
|
|
||||||
[class_active]
|
[class_active]
|
||||||
"(?i)ExampleOneTerm" = "icon"
|
|
||||||
|
|
||||||
[initial_class]
|
[initial_class]
|
||||||
|
|
||||||
@@ -73,35 +92,11 @@
|
|||||||
|
|
||||||
[initial_title_in_class]
|
[initial_title_in_class]
|
||||||
|
|
||||||
[initial_title]
|
|
||||||
"Spotify Premium" = ""
|
|
||||||
|
|
||||||
[initial_title_in_class_active]
|
[initial_title_in_class_active]
|
||||||
|
|
||||||
[initial_title_in_initial_class]
|
[initial_title_in_initial_class]
|
||||||
|
|
||||||
[initial_title_in_initial_class_active]
|
[initial_title_in_initial_class_active]
|
||||||
|
|
||||||
[exclude]
|
|
||||||
aProgram = "^$"
|
|
||||||
"" = "^$"
|
|
||||||
"(?i)fcitx" = ".*"
|
|
||||||
"[Ss]team" = "^(Friends List.*)?$"
|
|
||||||
"explorer.exe" = ".*"
|
|
||||||
"(?i)TestApp" = ""
|
|
||||||
|
|
||||||
[format]
|
|
||||||
dedup = false
|
|
||||||
dedup_inactive_fullscreen = false
|
|
||||||
delim = " "
|
|
||||||
workspace = "{id}:{clients}"
|
|
||||||
workspace_empty = "{id}"
|
|
||||||
client = "{icon}"
|
|
||||||
client_fullscreen = "{icon}"
|
|
||||||
client_active = "{icon}"
|
|
||||||
client_dup = "{icon}{counter_sup}"
|
|
||||||
client_dup_active = "*{icon}*{delim}{icon}{counter_unfocused_sup}"
|
|
||||||
client_dup_fullscreen = "[{icon}]{delim}{icon}{counter_unfocused_sup}"
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
516
home-modules/hyprland.nix
Executable file → Normal file
516
home-modules/hyprland.nix
Executable file → Normal file
@@ -2,18 +2,20 @@
|
|||||||
let
|
let
|
||||||
animation-speed = "5";
|
animation-speed = "5";
|
||||||
transparency = builtins.toString rice.transparency;
|
transparency = builtins.toString rice.transparency;
|
||||||
|
terminal = "ghostty";
|
||||||
|
terminal-exec = "ghostty --command=";
|
||||||
monitors = {
|
monitors = {
|
||||||
xps = {
|
xps = {
|
||||||
main = {
|
main = {
|
||||||
name = "eDP-1";
|
name = "eDP-1";
|
||||||
resolution = "1920x1200";
|
resolution = "1920x1200";
|
||||||
position = "0x0";
|
position = "0x1080";
|
||||||
scale = "1.0";
|
scale = "1.0";
|
||||||
};
|
};
|
||||||
second = {
|
second = {
|
||||||
name = "DP-3";
|
name = "DP-1";
|
||||||
resolution = "1920x1080";
|
resolution = "1920x1080";
|
||||||
position = "1920x0";
|
position = "0x0";
|
||||||
scale = "1.0";
|
scale = "1.0";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -21,13 +23,13 @@ let
|
|||||||
main = {
|
main = {
|
||||||
name = "DP-4";
|
name = "DP-4";
|
||||||
resolution = "2560x1440";
|
resolution = "2560x1440";
|
||||||
position = "1920x0";
|
position = "1920x150";
|
||||||
scale = "1.0";
|
scale = "1.0";
|
||||||
};
|
};
|
||||||
left = {
|
left = {
|
||||||
name = "HDMI-A-2";
|
name = "HDMI-A-2";
|
||||||
resolution = "1920x1080";
|
resolution = "1920x1080";
|
||||||
position = "0x360";
|
position = "0x0";
|
||||||
scale = "1.0";
|
scale = "1.0";
|
||||||
};
|
};
|
||||||
# right = {
|
# right = {
|
||||||
@@ -52,6 +54,7 @@ in {
|
|||||||
hyprland-protocols
|
hyprland-protocols
|
||||||
hyprlock
|
hyprlock
|
||||||
hypridle
|
hypridle
|
||||||
|
hyprpicker
|
||||||
hyprcursor
|
hyprcursor
|
||||||
|
|
||||||
grim
|
grim
|
||||||
@@ -91,15 +94,13 @@ in {
|
|||||||
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
|
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
|
||||||
]));
|
]));
|
||||||
|
|
||||||
workspace =
|
workspace = let
|
||||||
let
|
|
||||||
d1 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
d1 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
||||||
d2 = if host == "NxXPS" then monitors.xps.second.name else (if host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name);
|
d2 = if host == "NxXPS" then monitors.xps.second.name else (if host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name);
|
||||||
d3 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
d3 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
|
||||||
# d3 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
|
# d3 = if host == "NxXPS" then monitors.xps.main.name else (if host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
|
||||||
compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false";
|
compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false";
|
||||||
in
|
in [
|
||||||
[
|
|
||||||
"11, monitor:${d1}, default:true"
|
"11, monitor:${d1}, default:true"
|
||||||
"12, monitor:${d1}"
|
"12, monitor:${d1}"
|
||||||
"13, monitor:${d1}"
|
"13, monitor:${d1}"
|
||||||
@@ -131,6 +132,10 @@ in {
|
|||||||
"38, monitor:${d3}"
|
"38, monitor:${d3}"
|
||||||
"39, monitor:${d3}"
|
"39, monitor:${d3}"
|
||||||
"30, monitor:${d3}, ${compact}"
|
"30, monitor:${d3}, ${compact}"
|
||||||
|
] ++ [
|
||||||
|
# no gaps when only
|
||||||
|
"w[tv1], gapsout:0, gapsin:0"
|
||||||
|
"f[1], gapsout:0, gapsin:0"
|
||||||
];
|
];
|
||||||
|
|
||||||
# "device:logitech-wireless-mouse-mx-master-1" = {
|
# "device:logitech-wireless-mouse-mx-master-1" = {
|
||||||
@@ -174,12 +179,12 @@ in {
|
|||||||
|
|
||||||
decoration = {
|
decoration = {
|
||||||
rounding = rice.rounding;
|
rounding = rice.rounding;
|
||||||
drop_shadow = false;
|
# drop_shadow = false;
|
||||||
shadow_range = "20";
|
# shadow_range = "20";
|
||||||
shadow_offset = "0 0";
|
# shadow_offset = "0 0";
|
||||||
shadow_render_power = "4";
|
# shadow_render_power = "4";
|
||||||
"col.shadow" = "rgba(${rice.lib.nohash rice.color.red.base}ff)";
|
# "col.shadow" = "rgba(${rice.lib.nohash rice.color.red.base}ff)";
|
||||||
"col.shadow_inactive" = "rgba(${rice.lib.nohash rice.color.black.base}ff)";
|
# "col.shadow_inactive" = "rgba(${rice.lib.nohash rice.color.black.base}ff)";
|
||||||
|
|
||||||
active_opacity = "1.0";
|
active_opacity = "1.0";
|
||||||
inactive_opacity = "1.0";
|
inactive_opacity = "1.0";
|
||||||
@@ -228,7 +233,6 @@ in {
|
|||||||
|
|
||||||
dwindle = {
|
dwindle = {
|
||||||
preserve_split = true; # you probably want this
|
preserve_split = true; # you probably want this
|
||||||
no_gaps_when_only = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
# master = {
|
# master = {
|
||||||
@@ -255,9 +259,28 @@ in {
|
|||||||
];
|
];
|
||||||
|
|
||||||
windowrulev2 = [
|
windowrulev2 = [
|
||||||
"opacity ${transparency},class:^(com.chatterino.*)$"
|
|
||||||
"opacity ${transparency},class:^(chatterino)$"
|
|
||||||
"bordercolor rgba(${rice.lib.nohash rice.color.magenta.bright}ff), pinned:1"
|
"bordercolor rgba(${rice.lib.nohash rice.color.magenta.bright}ff), pinned:1"
|
||||||
|
|
||||||
|
"noanim, class:^(presenter)$" # sent
|
||||||
|
"float, class:^(presenter)$" # sent
|
||||||
|
|
||||||
|
"noanim, class:^(imv)$"
|
||||||
|
"float, class:^(imv)$"
|
||||||
|
"fullscreen, class:^(imv)$"
|
||||||
|
|
||||||
|
# "float, initialTitle:^(Edit Item)$" # thunderbid calendar
|
||||||
|
# "dimaround on, initialTitle:^(Edit Item)$" # thunderbid calendar
|
||||||
|
"float,class:^(thunderbird)$"
|
||||||
|
# "float,class:^(thunderbird)$,title:^(.*)(Reminder)(.*)$"
|
||||||
|
# "float,class:^(thunderbird)$,title:^About(.*)$"
|
||||||
|
# "float,class:^(thunderbird)$,title:^(Check Spelling)$"
|
||||||
|
|
||||||
|
"center 1,class:^(gimp)$"
|
||||||
|
] ++ [
|
||||||
|
"bordersize 0, floating:0, onworkspace:w[tv1]"
|
||||||
|
"rounding 0, floating:0, onworkspace:w[tv1]"
|
||||||
|
"bordersize 0, floating:0, onworkspace:f[1]"
|
||||||
|
"rounding 0, floating:0, onworkspace:f[1]"
|
||||||
];
|
];
|
||||||
|
|
||||||
windowrule = [
|
windowrule = [
|
||||||
@@ -270,16 +293,15 @@ in {
|
|||||||
"opacity ${transparency}, obsidian"
|
"opacity ${transparency}, obsidian"
|
||||||
# "opacity ${transparency}, zathura"
|
# "opacity ${transparency}, zathura"
|
||||||
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Alacritty"
|
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Alacritty"
|
||||||
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Kitty"
|
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), ${terminal}"
|
||||||
"opacity ${transparency}, discord"
|
"opacity ${transparency}, discord"
|
||||||
"opacity ${transparency}, vesktop"
|
"opacity ${transparency}, vesktop"
|
||||||
"opacity ${transparency}, Element"
|
"opacity ${transparency}, Element"
|
||||||
"opacity ${transparency}, thunderbird"
|
|
||||||
"opacity ${transparency}, lutris"
|
"opacity ${transparency}, lutris"
|
||||||
"opacity ${transparency}, element"
|
"opacity ${transparency}, element"
|
||||||
"opacity ${transparency}, ^([sS]potify)$"
|
# "opacity ${transparency}, ^([sS]potify)$"
|
||||||
"opacity ${transparency}, virt-manager"
|
# "opacity ${transparency}, virt-manager"
|
||||||
"opacity ${transparency}, thunar"
|
# "opacity ${transparency}, thunar"
|
||||||
"opacity ${transparency}, title:^(wlogout)$"
|
"opacity ${transparency}, title:^(wlogout)$"
|
||||||
"opaque, title:^(GNU Image Manipulation Program)$"
|
"opaque, title:^(GNU Image Manipulation Program)$"
|
||||||
"float, title:^(Picture-in-Picture)$"
|
"float, title:^(Picture-in-Picture)$"
|
||||||
@@ -326,20 +348,20 @@ in {
|
|||||||
"SUPER, F1, workspace, 100"
|
"SUPER, F1, workspace, 100"
|
||||||
"SUPER SHIFT, F1, movetoworkspace, 100"
|
"SUPER SHIFT, F1, movetoworkspace, 100"
|
||||||
# "SUPER, F2,"
|
# "SUPER, F2,"
|
||||||
"SUPER, F3, toggleopaque"
|
# "SUPER, F3, toggleopaque"
|
||||||
# "SUPER, F4,"
|
"SUPER, F4, exec, rm /tmp/caldav_event_cache.json && notify-send Saved event deleted!"
|
||||||
"SUPER, F5, exec, nx_gcal_event force-lookup"
|
"SUPER, F5, exec, nx_gcal_event force-lookup"
|
||||||
"SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
|
"SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
|
||||||
"SUPER, F6, exec, kitty -e 'htop'"
|
"SUPER, F6, exec, ${terminal-exec}'htop'"
|
||||||
"SUPER, F7, exec, kitty -e 'nmtui'"
|
"SUPER, F7, exec, ${terminal-exec}'nmtui'"
|
||||||
''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120''
|
''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs -d '\n' swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 --transition-duration 2''
|
||||||
''SUPER, F9, exec, kitty -e sh -c 'change_colors_json $(swww query | sed -n 1p | sed -e "s-.*image: --g") && nh home switch && firefox /home/${user}/.config/color-pallete.html' ''
|
"SUPER, F9, execr, waybar_mode set ' '"
|
||||||
''SUPER SHIFT, F9, exec, firefox /home/${user}/.config/color-pallete.html ''
|
"SUPER, F9, submap, color"
|
||||||
# "SUPER, F10, hyprload,update"
|
# "SUPER, F10, hyprload,update"
|
||||||
"SUPER, F11, exec, waybar"
|
"SUPER, F11, exec, waybar"
|
||||||
"SUPER SHIFT, F11, exec, pkill waybar "
|
"SUPER SHIFT, F11, exec, pkill waybar "
|
||||||
"SUPER, F12, exec, hyprland-autoname-workspaces"
|
"SUPER, F12, exec, hyprland-autoname-workspaces"
|
||||||
"SUPER SHIFT, F12, exec, pkill -9 hyprland-autoname-workspaces "
|
"SUPER SHIFT, F12, exec, pkill -9 hyprland-aut"
|
||||||
|
|
||||||
###########################################################################
|
###########################################################################
|
||||||
## ROW 1:
|
## ROW 1:
|
||||||
@@ -385,18 +407,20 @@ in {
|
|||||||
"SUPER, R, exec, rofi -show drun"
|
"SUPER, R, exec, rofi -show drun"
|
||||||
# "SUPER, T, exec, alacritty"
|
# "SUPER, T, exec, alacritty"
|
||||||
# "SUPER SHIFT, T, exec, alacritty -e sh -c "ssh nxace""
|
# "SUPER SHIFT, T, exec, alacritty -e sh -c "ssh nxace""
|
||||||
"SUPER, T, exec, SESSION_FROM_DE=TRUE kitty"
|
"SUPER, T, exec, SESSION_FROM_DE=TRUE ${terminal}"
|
||||||
"SUPER SHIFT, T, exec, kitty -e sh -c 'ssh nxace'"
|
"SUPER SHIFT, T, exec, ${terminal-exec}'ssh nxace'"
|
||||||
# "SUPER, Z, "
|
"SUPER, Z, exec, waybar_mode set ' '"
|
||||||
"SUPER, U, exec, thunderbird "
|
"SUPER, Z, submap, tuda"
|
||||||
"SUPER, I, exec, kitty -e fish -c 'hx ~/nix-dots/ && fish'"
|
"SUPER, U, exec, [tile] thunderbird "
|
||||||
"SUPER SHIFT, I, exec, kitty -e fish -c 'nh home switch || read'"
|
"SUPER, I, exec, ${terminal-exec}'hx ~/nix-dots/ && fish'"
|
||||||
"SUPER CTRL, I, exec, kitty -e fish -c 'nh os switch || read'"
|
"SUPER SHIFT, I, exec, ${terminal-exec}'nh home switch || read'"
|
||||||
|
"SUPER CTRL, I, exec, ${terminal-exec}'nh os switch || read'"
|
||||||
"SUPER, O, exec, obsidian "
|
"SUPER, O, exec, obsidian "
|
||||||
"SUPER, P, pin "
|
"SUPER, P, pin "
|
||||||
# "SUPER, Ü,"
|
# "SUPER, Ü,"
|
||||||
# "SUPER, +,"
|
# "SUPER, +,"
|
||||||
# "SUPER, Enter,"
|
"SUPER, Enter, exec, SESSION_FROM_DE=TRUE ${terminal}"
|
||||||
|
|
||||||
|
|
||||||
###########################################################################
|
###########################################################################
|
||||||
## ROW 3:
|
## ROW 3:
|
||||||
@@ -424,6 +448,7 @@ in {
|
|||||||
"SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3"
|
"SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3"
|
||||||
# "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh "
|
# "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh "
|
||||||
"SUPER, C, exec, chatterino"
|
"SUPER, C, exec, chatterino"
|
||||||
|
"SUPER SHIFT, C, exec, hyprpicker -n -a"
|
||||||
"SUPER, V, togglefloating, "
|
"SUPER, V, togglefloating, "
|
||||||
"SUPER, B, exec, bitwarden"
|
"SUPER, B, exec, bitwarden"
|
||||||
"SUPER, N, togglesplit"
|
"SUPER, N, togglesplit"
|
||||||
@@ -504,396 +529,91 @@ in {
|
|||||||
# 'Y8b. 88 88 88''Yb. 88 88 8888888 888888P' 'Y8b.
|
# 'Y8b. 88 88 88''Yb. 88 88 8888888 888888P' 'Y8b.
|
||||||
# db 8D 88. .88 88 8D 88 88 88' '88 88 db 8D
|
# db 8D 88. .88 88 8D 88 88 88' '88 88 db 8D
|
||||||
# '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y'
|
# '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y'
|
||||||
extraConfig = ''
|
extraConfig = let
|
||||||
|
action_simple = { mods ? "", key, cmd }: ''
|
||||||
|
bind=${mods},${key},execr,waybar_mode unset
|
||||||
|
bind=${mods},${key},${cmd}
|
||||||
|
bind=${mods},${key},submap,reset
|
||||||
|
'';
|
||||||
|
extra_workspace = { key, wsnumber }: ''
|
||||||
|
bind=,${key},execr,waybar_mode unset
|
||||||
|
bind=,${key},workspace,${wsnumber}
|
||||||
|
bind=,${key},submap,reset
|
||||||
|
bind=SUPER,${key},execr,waybar_mode unset
|
||||||
|
bind=SUPER,${key},workspace,${wsnumber}
|
||||||
|
bind=SUPER,${key},submap,reset
|
||||||
|
bind=SUPER SHIFT,${key},execr, waybar_mode unset
|
||||||
|
bind=SUPER SHIFT,${key},movetoworkspace,${wsnumber}
|
||||||
|
bind=SUPER SHIFT,${key},submap,reset
|
||||||
|
'';
|
||||||
|
in ''
|
||||||
submap = browserSM
|
submap = browserSM
|
||||||
bind = , W, exec, waybar_mode unset
|
${action_simple { key = "A"; cmd = "exec,firefox https://www.amazon.de/b?node=3010075031&ref_=nav_ya_signin";}}
|
||||||
bind = , W, exec, hyprctl dispatch exec firefox
|
${action_simple { key = "C"; cmd = "exec,firefox https://calendar.google.com";}}
|
||||||
bind = , W, submap, reset
|
${action_simple { key = "D"; cmd = "exec,firefox https://www.disneyplus.com/home";}}
|
||||||
|
${action_simple { key = "H"; cmd = "exec,firefox https://www.hs-mittweida.de";}}
|
||||||
bind = , Y, exec, waybar_mode unset
|
${action_simple { key = "I"; cmd = "exec,firefox https://www.imdb.com";}}
|
||||||
bind = , Y, exec, firefox https://youtube.com
|
${action_simple { key = "L"; cmd = "exec,firefox https://feddit.de";}}
|
||||||
bind = , Y, submap, reset
|
${action_simple { key = "M"; cmd = "exec,firefox https://ieji.de/home";}}
|
||||||
|
${action_simple { key = "N"; cmd = "exec,firefox https://Netflix.com";}}
|
||||||
bind = , T, exec, waybar_mode unset
|
${action_simple { key = "R"; cmd = "exec,firefox https://reddit.com";}}
|
||||||
bind = , T, exec, hyprctl dispatch exec firefox https://twitch.tv
|
${action_simple { key = "S"; cmd = "exec,firefox 127.0.0.1:8384/";}}
|
||||||
bind = , T, submap, reset
|
${action_simple { key = "T"; cmd = "exec,hyprctl dispatch exec firefox https://twitch.tv";}}
|
||||||
|
${action_simple { key = "udiaeresis"; cmd = "exec,firefox https://translate.google.com";}}
|
||||||
bind = , R, exec, waybar_mode unset
|
${action_simple { key = "W"; cmd = "exec,hyprctl dispatch exec firefox";}}
|
||||||
bind = , R, exec, firefox https://reddit.com
|
${action_simple { key = "X"; cmd = "exec,firefox https://nx2.site";}}
|
||||||
bind = , R, submap, reset
|
${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}}
|
||||||
|
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
|
||||||
bind = , C, exec, waybar_mode unset
|
|
||||||
bind = , C, exec, firefox https://calendar.google.com
|
|
||||||
bind = , C, submap, reset
|
|
||||||
|
|
||||||
bind = , Ü, exec, waybar_mode unset
|
|
||||||
bind = , Ü, exec, firefox https://translate.google.com
|
|
||||||
bind = , Ü, submap, reset
|
|
||||||
|
|
||||||
bind = , N, exec, waybar_mode unset
|
|
||||||
bind = , N, exec, firefox https://Netflix.com
|
|
||||||
bind = , N, submap, reset
|
|
||||||
|
|
||||||
bind = , A, exec, waybar_mode unset
|
|
||||||
bind = , A, exec, firefox https://www.amazon.de/b?node=3010075031&ref_=nav_ya_signin
|
|
||||||
bind = , A, submap, reset
|
|
||||||
|
|
||||||
bind = , D, exec, waybar_mode unset
|
|
||||||
bind = , D, exec, firefox https://www.disneyplus.com/home
|
|
||||||
bind = , D, submap, reset
|
|
||||||
|
|
||||||
bind = , H, exec, waybar_mode unset
|
|
||||||
bind = , H, exec, firefox https://www.hs-mittweida.de
|
|
||||||
bind = , H, submap, reset
|
|
||||||
|
|
||||||
bind = , X, exec, waybar_mode unset
|
|
||||||
bind = , X, exec, firefox https://nx2.site
|
|
||||||
bind = , X, submap, reset
|
|
||||||
|
|
||||||
bind = , L, exec, waybar_mode unset
|
|
||||||
bind = , L, exec, firefox https://feddit.de
|
|
||||||
bind = , L, submap, reset
|
|
||||||
|
|
||||||
bind = , I, exec, waybar_mode unset
|
|
||||||
bind = , I, exec, firefox https://www.imdb.com
|
|
||||||
bind = , I, submap, reset
|
|
||||||
|
|
||||||
bind = , M, exec, waybar_mode unset
|
|
||||||
bind = , M, exec, firefox https://ieji.de/home
|
|
||||||
bind = , M, submap, reset
|
|
||||||
|
|
||||||
bind = , S, exec, waybar_mode unset
|
|
||||||
bind = , S, exec, firefox 127.0.0.1:8384/
|
|
||||||
bind = , S, submap, reset
|
|
||||||
|
|
||||||
bind = , Escape, exec, waybar_mode unset
|
bind = , Escape, exec, waybar_mode unset
|
||||||
bind = , Escape, submap, reset
|
bind = , Escape, submap, reset
|
||||||
submap = reset
|
submap = reset
|
||||||
|
|
||||||
|
|
||||||
submap = scrL
|
submap = scrL
|
||||||
bind = , 1, execr, waybar_mode unset
|
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "2" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
|
||||||
bind = , 1, workspace, 21
|
|
||||||
bind = , 1, submap, reset
|
|
||||||
bind = SUPER, 1, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 1, workspace, 21
|
|
||||||
bind = SUPER, 1, submap, reset
|
|
||||||
bind = SUPER SHIFT, 1, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 1, movetoworkspace, 21
|
|
||||||
bind = SUPER SHIFT, 1, submap, reset
|
|
||||||
|
|
||||||
bind = , 2, execr, waybar_mode unset
|
|
||||||
bind = , 2, workspace, 22
|
|
||||||
bind = , 2, submap, reset
|
|
||||||
bind = SUPER, 2, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 2, workspace, 22
|
|
||||||
bind = SUPER, 2, submap, reset
|
|
||||||
bind = SUPER SHIFT, 2, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 2, movetoworkspace, 22
|
|
||||||
bind = SUPER SHIFT, 2, submap, reset
|
|
||||||
|
|
||||||
bind = , 3, execr, waybar_mode unset
|
|
||||||
bind = , 3, workspace, 23
|
|
||||||
bind = , 3, submap, reset
|
|
||||||
bind = SUPER, 3, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 3, workspace, 23
|
|
||||||
bind = SUPER, 3, submap, reset
|
|
||||||
bind = SUPER SHIFT, 3, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 3, movetoworkspace, 23
|
|
||||||
bind = SUPER SHIFT, 3, submap, reset
|
|
||||||
|
|
||||||
bind = , 4, execr, waybar_mode unset
|
|
||||||
bind = , 4, workspace, 24
|
|
||||||
bind = , 4, submap, reset
|
|
||||||
bind = SUPER, 4, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 4, workspace, 24
|
|
||||||
bind = SUPER, 4, submap, reset
|
|
||||||
bind = SUPER SHIFT, 4, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 4, movetoworkspace, 24
|
|
||||||
bind = SUPER SHIFT, 4, submap, reset
|
|
||||||
|
|
||||||
bind = , 5, execr, waybar_mode unset
|
|
||||||
bind = , 5, workspace, 25
|
|
||||||
bind = , 5, submap, reset
|
|
||||||
bind = SUPER, 5, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 5, workspace, 25
|
|
||||||
bind = SUPER, 5, submap, reset
|
|
||||||
bind = SUPER SHIFT, 5, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 5, movetoworkspace, 25
|
|
||||||
bind = SUPER SHIFT, 5, submap, reset
|
|
||||||
|
|
||||||
bind = , 6, execr, waybar_mode unset
|
|
||||||
bind = , 6, workspace, 26
|
|
||||||
bind = , 6, submap, reset
|
|
||||||
bind = SUPER, 6, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 6, workspace, 26
|
|
||||||
bind = SUPER, 6, submap, reset
|
|
||||||
bind = SUPER SHIFT, 6, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 6, movetoworkspace, 26
|
|
||||||
bind = SUPER SHIFT, 6, submap, reset
|
|
||||||
|
|
||||||
bind = , 7, execr, waybar_mode unset
|
|
||||||
bind = , 7, workspace, 27
|
|
||||||
bind = , 7, submap, reset
|
|
||||||
bind = SUPER, 7, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 7, workspace, 27
|
|
||||||
bind = SUPER, 7, submap, reset
|
|
||||||
bind = SUPER SHIFT, 7, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 7, movetoworkspace, 27
|
|
||||||
bind = SUPER SHIFT, 7, submap, reset
|
|
||||||
|
|
||||||
bind = , 8, execr, waybar_mode unset
|
|
||||||
bind = , 8, workspace, 28
|
|
||||||
bind = , 8, submap, reset
|
|
||||||
bind = SUPER, 8, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 8, workspace, 28
|
|
||||||
bind = SUPER, 8, submap, reset
|
|
||||||
bind = SUPER SHIFT, 8, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 8, movetoworkspace, 28
|
|
||||||
bind = SUPER SHIFT, 8, submap, reset
|
|
||||||
|
|
||||||
bind = , 9, execr, waybar_mode unset
|
|
||||||
bind = , 9, workspace, 29
|
|
||||||
bind = , 9, submap, reset
|
|
||||||
bind = SUPER, 9, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 9, workspace, 29
|
|
||||||
bind = SUPER, 9, submap, reset
|
|
||||||
bind = SUPER SHIFT, 9, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 9, movetoworkspace, 29
|
|
||||||
bind = SUPER SHIFT, 9, submap, reset
|
|
||||||
|
|
||||||
bind = , 0, execr, waybar_mode unset
|
|
||||||
bind = , 0, workspace, 20
|
|
||||||
bind = , 0, submap, reset
|
|
||||||
bind = SUPER, 0, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 0, workspace, 20
|
|
||||||
bind = SUPER, 0, submap, reset
|
|
||||||
bind = SUPER SHIFT, 0, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 0, movetoworkspace, 20
|
|
||||||
bind = SUPER SHIFT, 0, submap, reset
|
|
||||||
|
|
||||||
|
|
||||||
bind = , A, execr, waybar_mode unset
|
bind = , A, execr, waybar_mode unset
|
||||||
bind = , A, submap, reset
|
bind = , A, submap, reset
|
||||||
bind = , Escape, execr, waybar_mode unset
|
bind = , Escape, execr, waybar_mode unset
|
||||||
bind = , Escape, submap, reset
|
bind = , Escape, submap, reset
|
||||||
submap = reset
|
submap = reset
|
||||||
|
|
||||||
|
|
||||||
submap = scrR
|
submap = scrR
|
||||||
bind = , 1, execr, waybar_mode unset
|
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "3" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
|
||||||
bind = , 1, workspace, 31
|
|
||||||
bind = , 1, submap, reset
|
|
||||||
bind = SUPER, 1, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 1, workspace, 31
|
|
||||||
bind = SUPER, 1, submap, reset
|
|
||||||
bind = SUPER SHIFT, 1, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 1, movetoworkspace, 31
|
|
||||||
bind = SUPER SHIFT, 1, submap, reset
|
|
||||||
|
|
||||||
bind = , 2, execr, waybar_mode unset
|
|
||||||
bind = , 2, workspace, 32
|
|
||||||
bind = , 2, submap, reset
|
|
||||||
bind = SUPER, 2, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 2, workspace, 32
|
|
||||||
bind = SUPER, 2, submap, reset
|
|
||||||
bind = SUPER SHIFT, 2, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 2, movetoworkspace, 32
|
|
||||||
bind = SUPER SHIFT, 2, submap, reset
|
|
||||||
|
|
||||||
bind = , 3, execr, waybar_mode unset
|
|
||||||
bind = , 3, workspace, 33
|
|
||||||
bind = , 3, submap, reset
|
|
||||||
bind = SUPER, 3, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 3, workspace, 33
|
|
||||||
bind = SUPER, 3, submap, reset
|
|
||||||
bind = SUPER SHIFT, 3, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 3, movetoworkspace, 33
|
|
||||||
bind = SUPER SHIFT, 3, submap, reset
|
|
||||||
|
|
||||||
bind = , 4, execr, waybar_mode unset
|
|
||||||
bind = , 4, workspace, 34
|
|
||||||
bind = , 4, submap, reset
|
|
||||||
bind = SUPER, 4, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 4, workspace, 34
|
|
||||||
bind = SUPER, 4, submap, reset
|
|
||||||
bind = SUPER SHIFT, 4, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 4, movetoworkspace, 34
|
|
||||||
bind = SUPER SHIFT, 4, submap, reset
|
|
||||||
|
|
||||||
bind = , 5, execr, waybar_mode unset
|
|
||||||
bind = , 5, workspace, 35
|
|
||||||
bind = , 5, submap, reset
|
|
||||||
bind = SUPER, 5, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 5, workspace, 35
|
|
||||||
bind = SUPER, 5, submap, reset
|
|
||||||
bind = SUPER SHIFT, 5, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 5, movetoworkspace, 35
|
|
||||||
bind = SUPER SHIFT, 5, submap, reset
|
|
||||||
|
|
||||||
bind = , 6, execr, waybar_mode unset
|
|
||||||
bind = , 6, workspace, 36
|
|
||||||
bind = , 6, submap, reset
|
|
||||||
bind = SUPER, 6, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 6, workspace, 36
|
|
||||||
bind = SUPER, 6, submap, reset
|
|
||||||
bind = SUPER SHIFT, 6, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 6, movetoworkspace, 36
|
|
||||||
bind = SUPER SHIFT, 6, submap, reset
|
|
||||||
|
|
||||||
bind = , 7, execr, waybar_mode unset
|
|
||||||
bind = , 7, workspace, 37
|
|
||||||
bind = , 7, submap, reset
|
|
||||||
bind = SUPER, 7, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 7, workspace, 37
|
|
||||||
bind = SUPER, 7, submap, reset
|
|
||||||
bind = SUPER SHIFT, 7, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 7, movetoworkspace, 37
|
|
||||||
bind = SUPER SHIFT, 7, submap, reset
|
|
||||||
|
|
||||||
bind = , 8, execr, waybar_mode unset
|
|
||||||
bind = , 8, workspace, 38
|
|
||||||
bind = , 8, submap, reset
|
|
||||||
bind = SUPER, 8, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 8, workspace, 38
|
|
||||||
bind = SUPER, 8, submap, reset
|
|
||||||
bind = SUPER SHIFT, 8, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 8, movetoworkspace, 38
|
|
||||||
bind = SUPER SHIFT, 8, submap, reset
|
|
||||||
|
|
||||||
bind = , 9, execr, waybar_mode unset
|
|
||||||
bind = , 9, workspace, 39
|
|
||||||
bind = , 9, submap, reset
|
|
||||||
bind = SUPER, 9, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 9, workspace, 39
|
|
||||||
bind = SUPER, 9, submap, reset
|
|
||||||
bind = SUPER SHIFT, 9, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 9, movetoworkspace, 39
|
|
||||||
bind = SUPER SHIFT, 9, submap, reset
|
|
||||||
|
|
||||||
bind = , 0, execr, waybar_mode unset
|
|
||||||
bind = , 0, workspace, 30
|
|
||||||
bind = , 0, submap, reset
|
|
||||||
bind = SUPER, 0, execr, waybar_mode unset
|
|
||||||
bind = SUPER, 0, workspace, 30
|
|
||||||
bind = SUPER, 0, submap, reset
|
|
||||||
bind = SUPER SHIFT, 0, execr, waybar_mode unset
|
|
||||||
bind = SUPER SHIFT, 0, movetoworkspace, 30
|
|
||||||
bind = SUPER SHIFT, 0, submap, reset
|
|
||||||
|
|
||||||
bind = , Y, execr, waybar_mode unset
|
bind = , Y, execr, waybar_mode unset
|
||||||
bind = , Y, submap, reset
|
bind = , Y, submap, reset
|
||||||
bind = , Escape, execr, waybar_mode unset
|
bind = , Escape, execr, waybar_mode unset
|
||||||
bind = , Escape, submap, reset
|
bind = , Escape, submap, reset
|
||||||
submap = reset
|
submap = reset
|
||||||
|
|
||||||
|
submap = color
|
||||||
|
${action_simple { key = "W"; cmd = ''exec,swww query | sed -n 1p | sed -E 's-.*image: (.*)-"\1"-g' | xargs change_colors_json img && notify-send 'change_colors_json img successfull' ''; }}
|
||||||
|
${action_simple { key = "M"; cmd = ''exec,change_colors_json manual && notify-send 'change_colors_json manual successfull' ''; }}
|
||||||
plugin {
|
${action_simple { key = "D"; cmd = ''exec,firefox /home/${user}/.config/color-pallete.html''; }}
|
||||||
hyprexpo {
|
bind = , Escape, execr, waybar_mode unset
|
||||||
columns = 5
|
bind = , Escape, submap, reset
|
||||||
gap_size = ${builtins.toString rice.gap-size}
|
|
||||||
bg_col = rgb(${builtins.substring 1 6 rice.color.background})
|
|
||||||
workspace_method = first 10 # [center/first] [workspace] e.g. first 1 or center m+1
|
|
||||||
|
|
||||||
enable_gesture = false # laptop touchpad, 4 fingers
|
|
||||||
gesture_distance = 300 # how far is the "max"
|
|
||||||
gesture_positive = true # positive = swipe down. Negative = swipe up.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
plugin {
|
|
||||||
overview {
|
|
||||||
panelColor = rgba(00000088)
|
|
||||||
workspaceActiveBackground = rgba(00ff00ff)
|
|
||||||
workspaceInactiveBackground = rgba(0000ffff)
|
|
||||||
# workspaceActiveBorder =
|
|
||||||
# workspaceInactiveBorder =
|
|
||||||
dragAlpha = 0.5
|
|
||||||
panelHeight = 200
|
|
||||||
workspaceMargin = 30
|
|
||||||
workspaceBorderSize = 3
|
|
||||||
centerAligned = true
|
|
||||||
overrideGaps = false
|
|
||||||
gapsIn = 0
|
|
||||||
gapsOut = 0
|
|
||||||
hideBackgroundLayers = false
|
|
||||||
drawActiveWorkspace = true
|
|
||||||
autoDrag = true
|
|
||||||
autoScroll = true
|
|
||||||
exitOnClick = false
|
|
||||||
switchOnDrop = false
|
|
||||||
exitOnSwitch = trueß
|
|
||||||
showNewWorkspace = true
|
|
||||||
showEmptyWorkspace = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# allows repeated switching with same keypress that starts the submap
|
|
||||||
binde = SUPER, TAB, exec, hyprswitch --daemon --do-initial-execute
|
|
||||||
bind = SUPER, TAB, submap, switch
|
|
||||||
bind = SUPER, TAB, exec, waybar_mode set "sw"
|
|
||||||
|
|
||||||
# allows repeated switching with same keypress that starts the submap
|
|
||||||
binde = SUPER SHIFT, TAB, exec, hyprswitch --daemon --do-initial-execute -r
|
|
||||||
bind = SUPER SHIFT, TAB, submap, switch
|
|
||||||
bind = SUPER, TAB, exec, waybar_mode set "swr"
|
|
||||||
|
|
||||||
submap = switch
|
|
||||||
# allow repeated window switching in submap (same keys as repeating while starting)
|
|
||||||
binde = SUPER, TAB, exec, hyprswitch --daemon
|
|
||||||
binde = SUPER SHIFT, TAB, exec, hyprswitch --daemon -r
|
|
||||||
|
|
||||||
# switch to specific window offset
|
|
||||||
bind = , 1, exec, hyprswitch --daemon --offset=1
|
|
||||||
bind = , 2, exec, hyprswitch --daemon --offset=2
|
|
||||||
bind = , 3, exec, hyprswitch --daemon --offset=3
|
|
||||||
bind = , 4, exec, hyprswitch --daemon --offset=4
|
|
||||||
bind = , 5, exec, hyprswitch --daemon --offset=5
|
|
||||||
bind = , 6, exec, hyprswitch --daemon --offset=6
|
|
||||||
bind = , 7, exec, hyprswitch --daemon --offset=7
|
|
||||||
bind = , 8, exec, hyprswitch --daemon --offset=8
|
|
||||||
bind = , 8, exec, hyprswitch --daemon --offset=8
|
|
||||||
bind = , 9, exec, hyprswitch --daemon --offset=9
|
|
||||||
|
|
||||||
bind = SUPER $reverse, 1, exec, hyprswitch --daemon --offset=1 -r
|
|
||||||
bind = SUPER $reverse, 2, exec, hyprswitch --daemon --offset=2 -r
|
|
||||||
bind = SUPER $reverse, 3, exec, hyprswitch --daemon --offset=3 -r
|
|
||||||
bind = SUPER $reverse, 4, exec, hyprswitch --daemon --offset=4 -r
|
|
||||||
bind = SUPER $reverse, 5, exec, hyprswitch --daemon --offset=5 -r
|
|
||||||
bind = SUPER $reverse, 6, exec, hyprswitch --daemon --offset=6 -r
|
|
||||||
bind = SUPER $reverse, 7, exec, hyprswitch --daemon --offset=7 -r
|
|
||||||
bind = SUPER $reverse, 8, exec, hyprswitch --daemon --offset=8 -r
|
|
||||||
bind = SUPER $reverse, 9, exec, hyprswitch --daemon --offset=9 -r
|
|
||||||
bind = SUPER $reverse, 5, exec, hyprswitch --daemon --offset=5 -r
|
|
||||||
|
|
||||||
|
|
||||||
# exit submap and stop hyprswitch
|
|
||||||
bindrt = SUPER, SUPER_L, exec, hyprswitch --stop-daemon
|
|
||||||
bindrt = SUPER, SUPER_L, submap, reset
|
|
||||||
bindrt = SUPER, SUPER_L, exec, waybar_mode unset
|
|
||||||
|
|
||||||
# if it somehow doesn't close on releasing $switch_release, escape can kill
|
|
||||||
bindr = ,escape, exec, pkill hyprswitch
|
|
||||||
bindr = ,escape, submap, reset
|
|
||||||
submap = reset
|
submap = reset
|
||||||
|
|
||||||
|
submap = tuda
|
||||||
|
${action_simple { key = "T"; cmd = ''exec,firefox https://www.tucan.tu-darmstadt.de/''; }}
|
||||||
|
${action_simple { key = "M"; cmd = ''exec,firefox https://moodle.tu-darmstadt.de/''; }}
|
||||||
|
${action_simple { key = "I"; cmd = ''exec,firefox https://moodle.informatik.tu-darmstadt.de/''; }}
|
||||||
|
bind = , Escape, execr, waybar_mode unset
|
||||||
|
bind = , Escape, submap, reset
|
||||||
|
submap = reset
|
||||||
|
|
||||||
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
home.file =
|
home.file = let
|
||||||
let
|
|
||||||
m = if host == "NxXPS" then monitors.xps.main.name else monitors.north.main.name;
|
m = if host == "NxXPS" then monitors.xps.main.name else monitors.north.main.name;
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
".config/hypr/hyprlock.conf".text = ''
|
".config/hypr/hyprlock.conf".text = ''
|
||||||
background {
|
background {
|
||||||
monitor = ${m}
|
monitor = ${m}
|
||||||
|
|
||||||
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
||||||
path = /home/nx2/Pictures/nix-wall.png
|
path = /home/nx2/Pictures/wallpapers/nix-wall.png
|
||||||
blur_size = 4
|
blur_size = 4
|
||||||
blur_passes = 3 # 0 disables blurring
|
blur_passes = 3 # 0 disables blurring
|
||||||
noise = 0.0117
|
noise = 0.0117
|
||||||
|
|||||||
2
home-modules/kitty.nix
Executable file → Normal file
2
home-modules/kitty.nix
Executable file → Normal file
@@ -3,7 +3,7 @@
|
|||||||
programs.kitty = {
|
programs.kitty = {
|
||||||
enable = true;
|
enable = true;
|
||||||
font = {
|
font = {
|
||||||
name = rice.font.code.name2;
|
name = rice.font.code.name;
|
||||||
package = rice.font.code.package;
|
package = rice.font.code.package;
|
||||||
};
|
};
|
||||||
settings = with rice.color; {
|
settings = with rice.color; {
|
||||||
|
|||||||
0
home-modules/latex.nix
Executable file → Normal file
0
home-modules/latex.nix
Executable file → Normal file
4
home-modules/mako.nix
Executable file → Normal file
4
home-modules/mako.nix
Executable file → Normal file
@@ -3,12 +3,12 @@
|
|||||||
home.packages = with pkgs; [ libnotify ];
|
home.packages = with pkgs; [ libnotify ];
|
||||||
services.mako = with rice; {
|
services.mako = with rice; {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultTimeout = 5000; # in ms
|
defaultTimeout = 10000; # in ms
|
||||||
backgroundColor = color.background;
|
backgroundColor = color.background;
|
||||||
textColor = color.foreground;
|
textColor = color.foreground;
|
||||||
borderColor = color.border;
|
borderColor = color.border;
|
||||||
borderSize = border-width;
|
borderSize = border-width;
|
||||||
font = font.code.name2;
|
font = font.code.name;
|
||||||
borderRadius = rounding;
|
borderRadius = rounding;
|
||||||
anchor = "top-right";
|
anchor = "top-right";
|
||||||
margin = builtins.toString (gap-size * 2) ;
|
margin = builtins.toString (gap-size * 2) ;
|
||||||
|
|||||||
0
home-modules/nh.nix
Executable file → Normal file
0
home-modules/nh.nix
Executable file → Normal file
0
home-modules/nx-gcal-event.nix
Executable file → Normal file
0
home-modules/nx-gcal-event.nix
Executable file → Normal file
67
home-modules/nx2site-backup.nix
Normal file
67
home-modules/nx2site-backup.nix
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "nx_backup";
|
||||||
|
runtimeInputs = [ ];
|
||||||
|
text = let
|
||||||
|
web-root = "/var/nginx/webroot";
|
||||||
|
gitea-backup = "/var/backup/gitea";
|
||||||
|
postgres-backup = "/var/backup/postgresql";
|
||||||
|
in /* bash */ ''
|
||||||
|
DIRECTORIES=(
|
||||||
|
"${web-root}"
|
||||||
|
"${gitea-backup}"
|
||||||
|
"${postgres-backup}"
|
||||||
|
)
|
||||||
|
|
||||||
|
NOW=$(date +%Y_%m_%d-%H_%M)
|
||||||
|
TEMP_BAK_DIR=$(mktemp -d)
|
||||||
|
TEMP_WORKING_DIR=$(mktemp -d)
|
||||||
|
ZIP_NAME="nx2site-backup-''${NOW}.zip"
|
||||||
|
ZIP_FILE="$TEMP_WORKING_DIR/$ZIP_NAME"
|
||||||
|
ENCRYPTED_NAME="''${ZIP_NAME}.asc"
|
||||||
|
ENCRYPTED_FILE="$TEMP_WORKING_DIR/$ENCRYPTED_NAME"
|
||||||
|
DESTINATION="/vault/$ENCRYPTED_NAME"
|
||||||
|
WEBROOT="${web-root}"
|
||||||
|
|
||||||
|
echo "Fixing Permissions of Gitea dump"
|
||||||
|
sudo chmod -R g+r "${gitea-backup}"
|
||||||
|
|
||||||
|
echo "Fixing Permissions of Postgres dump"
|
||||||
|
sudo chmod -R g+r "${postgres-backup}"
|
||||||
|
sudo chmod g+x "${postgres-backup}"
|
||||||
|
echo "Fixing Ownership of Postgres dump"
|
||||||
|
sudo chown -R postgres:postgres "${postgres-backup}"
|
||||||
|
|
||||||
|
echo "Copying files to backup to tempoary directory $TEMP_BAK_DIR ..."
|
||||||
|
for DIR in "''${DIRECTORIES[@]}"; do
|
||||||
|
rsync -aR "$DIR" "$TEMP_BAK_DIR"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Create the zip file
|
||||||
|
echo "Adding files to $ZIP_NAME ..."
|
||||||
|
zip -qr "$ZIP_FILE" "$TEMP_BAK_DIR"
|
||||||
|
|
||||||
|
# Encrypt the zip file using GPG
|
||||||
|
echo "Encryping file with gpg"
|
||||||
|
gpg -e -r gpg@nx2.site -o "$ENCRYPTED_FILE" "$ZIP_FILE"
|
||||||
|
|
||||||
|
echo "Moving file to Destination $DESTINATION"
|
||||||
|
mv "$ENCRYPTED_FILE" "$DESTINATION"
|
||||||
|
|
||||||
|
echo "Updating latest-bakup path in $WEBROOT"
|
||||||
|
echo "$DESTINATION" > "$WEBROOT/latest-backup"
|
||||||
|
|
||||||
|
echo "Cleaning up tempoary files and directories"
|
||||||
|
rm -rf "$TEMP_BAK_DIR" "$TEMP_WORKING_DIR" "$ZIP_FILE"
|
||||||
|
|
||||||
|
echo "Backup and encryption complete: $DESTINATION"
|
||||||
|
|
||||||
|
echo "Space remaining:"
|
||||||
|
df -h | head -n 1
|
||||||
|
df -h | grep -P "^/dev.+? "
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
51
home-modules/nxgs.nix
Normal file
51
home-modules/nxgs.nix
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
ghostscript
|
||||||
|
(writeShellApplication rec {
|
||||||
|
name = "nxgs";
|
||||||
|
text = /* bash */ ''
|
||||||
|
print_help() {
|
||||||
|
echo "Usage: ${name} {flip <file(s)>|rotate <file(s)>|merge <Out File Name> <files>}"
|
||||||
|
}
|
||||||
|
if [ $# -lt 1 ]; then
|
||||||
|
print_help; exit 1;
|
||||||
|
fi
|
||||||
|
case "$1" in
|
||||||
|
flip)
|
||||||
|
for FILE in "''${@:2}"; do
|
||||||
|
NXGSTEMP=$(mktemp)
|
||||||
|
gs -o "$NXGSTEMP" -sDEVICE=pdfwrite -c "<</Orientation 2>> setpagedevice" -f "$FILE"
|
||||||
|
mv "$NXGSTEMP" "$FILE"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
rotate)
|
||||||
|
for FILE in "''${@:2}"; do
|
||||||
|
NXGSTEMP=$(mktemp)
|
||||||
|
gs -o "$NXGSTEMP" -sDEVICE=pdfwrite -c "<</Orientation 1>> setpagedevice" -f "$FILE"
|
||||||
|
mv "$NXGSTEMP" "$FILE"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
merge)
|
||||||
|
gs -dBATCH -dNOPAUSE -q -sOUTPUTFILE="$3" -sDEVICE=pdfwrite "''${@:3}"
|
||||||
|
;;
|
||||||
|
interactive-merge)
|
||||||
|
echo -n "Enter Name of the merged file without extension: "; read -r MERGED
|
||||||
|
NXGSTEMP=$(mktemp)
|
||||||
|
echo "''${@:2}" | tr " " "\n" > "$NXGSTEMP"
|
||||||
|
$EDITOR "$NXGSTEMP"
|
||||||
|
mapfile -t FILES < "$NXGSTEMP"
|
||||||
|
gs -dBATCH -dNOPAUSE -q -sOUTPUTFILE="''${MERGED}.pdf" -sDEVICE=pdfwrite "''${FILES[@]}"
|
||||||
|
rm "$NXGSTEMP"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Unknown command '$1'"
|
||||||
|
print_help
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit 0
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
0
home-modules/office.nix
Executable file → Normal file
0
home-modules/office.nix
Executable file → Normal file
0
home-modules/pnx.nix
Executable file → Normal file
0
home-modules/pnx.nix
Executable file → Normal file
8
home-modules/programming/go.nix
Normal file
8
home-modules/programming/go.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
go
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
8
home-modules/programming/java.nix
Normal file
8
home-modules/programming/java.nix
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
jdk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
0
home-modules/programming/python.nix
Executable file → Normal file
0
home-modules/programming/python.nix
Executable file → Normal file
6
home-modules/qt.nix
Executable file → Normal file
6
home-modules/qt.nix
Executable file → Normal file
@@ -1,6 +1,8 @@
|
|||||||
{ pkgs, lib, user, ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
qt = {
|
qt = {
|
||||||
platformTheme = "gtk";
|
enable = true;
|
||||||
|
platformTheme.name = "qtct";
|
||||||
|
style.name = "adwaita-dark";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
2
home-modules/rofi.nix
Executable file → Normal file
2
home-modules/rofi.nix
Executable file → Normal file
@@ -14,7 +14,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
font: "${rice.font.code.name2} 12";
|
font: "${rice.font.code.name} 12";
|
||||||
foreground: ${foreground};
|
foreground: ${foreground};
|
||||||
background-color: ${background}${trdr};
|
background-color: ${background}${trdr};
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
|
|||||||
6
home-modules/scanning.nix
Normal file
6
home-modules/scanning.nix
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
xsane
|
||||||
|
];
|
||||||
|
}
|
||||||
6
home-modules/ssh.nix
Executable file → Normal file
6
home-modules/ssh.nix
Executable file → Normal file
@@ -9,19 +9,19 @@
|
|||||||
Port 50022
|
Port 50022
|
||||||
|
|
||||||
HOST nxacel
|
HOST nxacel
|
||||||
HostName 192.168.178.32
|
HostName 10.0.1.1
|
||||||
User nx2
|
User nx2
|
||||||
Port 50022
|
Port 50022
|
||||||
|
|
||||||
HOST nxrpil
|
HOST nxrpil
|
||||||
HostName 192.168.178.31
|
HostName 10.0.1.31
|
||||||
User nx2
|
User nx2
|
||||||
Port 22
|
Port 22
|
||||||
|
|
||||||
HOST nxgit
|
HOST nxgit
|
||||||
HostName ssh.${domain}
|
HostName ssh.${domain}
|
||||||
User git
|
User git
|
||||||
Port 20022
|
Port 50022
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
0
home-modules/starship.nix
Executable file → Normal file
0
home-modules/starship.nix
Executable file → Normal file
0
home-modules/tts.nix
Executable file → Normal file
0
home-modules/tts.nix
Executable file → Normal file
0
home-modules/virt-manager.nix
Executable file → Normal file
0
home-modules/virt-manager.nix
Executable file → Normal file
2
home-modules/vscode.nix
Executable file → Normal file
2
home-modules/vscode.nix
Executable file → Normal file
@@ -65,7 +65,7 @@
|
|||||||
];
|
];
|
||||||
userSettings = {
|
userSettings = {
|
||||||
workbench.colorTheme = "Just Black";
|
workbench.colorTheme = "Just Black";
|
||||||
editor.fontFamily = "'${rice.font.code.name2}', 'monospace', monospace";
|
editor.fontFamily = "'${rice.font.code.name}', 'monospace', monospace";
|
||||||
remote.SSH.useLocalServer = false;
|
remote.SSH.useLocalServer = false;
|
||||||
};
|
};
|
||||||
enableUpdateCheck = false;
|
enableUpdateCheck = false;
|
||||||
|
|||||||
@@ -5,16 +5,18 @@
|
|||||||
libraries = with python3Packages; [ numpy pillow scikit-learn ];
|
libraries = with python3Packages; [ numpy pillow scikit-learn ];
|
||||||
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
||||||
} /*python */ ''
|
} /*python */ ''
|
||||||
from colorsys import hls_to_rgb, rgb_to_hls
|
from colorsys import hls_to_rgb, rgb_to_hls
|
||||||
import json
|
import json
|
||||||
import sys
|
import sys
|
||||||
from typing import Literal, cast
|
import subprocess
|
||||||
from numpy.typing import NDArray
|
from time import sleep
|
||||||
from sklearn.cluster import KMeans
|
from typing import Literal, cast
|
||||||
import numpy as np
|
from numpy.typing import NDArray
|
||||||
from PIL import Image
|
from sklearn.cluster import KMeans
|
||||||
|
import numpy as np
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
def fc(c: int) -> str:
|
def fc(c: int) -> str:
|
||||||
assert c < 256
|
assert c < 256
|
||||||
s = str(hex(c))[2:]
|
s = str(hex(c))[2:]
|
||||||
if c < 16:
|
if c < 16:
|
||||||
@@ -24,8 +26,8 @@ def fc(c: int) -> str:
|
|||||||
else:
|
else:
|
||||||
return s
|
return s
|
||||||
|
|
||||||
class Color(object):
|
class Color(object):
|
||||||
def __init__(self, rgb: tuple[int, ...], frequency: float):
|
def __init__(self, rgb: tuple[int, ...], frequency: float = 1):
|
||||||
assert len(rgb) == 3, "RGB values must be a tuple of length 3"
|
assert len(rgb) == 3, "RGB values must be a tuple of length 3"
|
||||||
self.rgb = cast(tuple[int, int, int], rgb)
|
self.rgb = cast(tuple[int, int, int], rgb)
|
||||||
self.freq: float = frequency
|
self.freq: float = frequency
|
||||||
@@ -41,7 +43,7 @@ class Color(object):
|
|||||||
def luminance(self) -> float:
|
def luminance(self) -> float:
|
||||||
return np.dot(np.array([0.2126, 0.7152, 0.0722]), self.rgb)
|
return np.dot(np.array([0.2126, 0.7152, 0.0722]), self.rgb)
|
||||||
|
|
||||||
def k_means_extraction(arr: NDArray[float], height: int, width: int, palette_size: int) -> list[Color]:
|
def k_means_extraction(arr: NDArray[float], height: int, width: int, palette_size: int) -> list[Color]:
|
||||||
arr = np.reshape(arr, (width * height, -1))
|
arr = np.reshape(arr, (width * height, -1))
|
||||||
model = KMeans(n_clusters=palette_size, n_init="auto", init="k-means++", random_state=2024)
|
model = KMeans(n_clusters=palette_size, n_init="auto", init="k-means++", random_state=2024)
|
||||||
labels = model.fit_predict(arr)
|
labels = model.fit_predict(arr)
|
||||||
@@ -54,7 +56,7 @@ def k_means_extraction(arr: NDArray[float], height: int, width: int, palette_siz
|
|||||||
return colors
|
return colors
|
||||||
|
|
||||||
|
|
||||||
class Palette:
|
class Palette:
|
||||||
def __init__(self, colors: list[Color]):
|
def __init__(self, colors: list[Color]):
|
||||||
self.colors = colors
|
self.colors = colors
|
||||||
self.frequencies = [c.freq for c in colors]
|
self.frequencies = [c.freq for c in colors]
|
||||||
@@ -65,20 +67,20 @@ class Palette:
|
|||||||
def __len__(self) -> int:
|
def __len__(self) -> int:
|
||||||
return self.number_of_colors
|
return self.number_of_colors
|
||||||
|
|
||||||
def ensure_color(c: Color, alter_sat: bool) -> list[int]:
|
def ensure_color(c: Color, alter_sat: bool) -> list[int]:
|
||||||
hue, lum, sat = c.hls
|
hue, lum, sat = c.hls
|
||||||
if alter_sat:
|
if alter_sat:
|
||||||
new_sat = min((sat**0.5) + 0.4, 1)
|
new_sat = min((sat**0.5) + 0.4, 1)
|
||||||
else:
|
else:
|
||||||
new_sat = sat
|
new_sat = sat
|
||||||
new_lum = max(lum, 0.5)
|
new_lum = 0.6
|
||||||
r, g, b = hls_to_rgb(h=hue, l=new_lum, s=new_sat)
|
r, g, b = hls_to_rgb(h=hue, l=new_lum, s=new_sat)
|
||||||
return [int(r*255), int(g*255), int(b*255)]
|
return [int(r*255), int(g*255), int(b*255)]
|
||||||
|
|
||||||
def list_to_hex(ilist: list[int]) -> str:
|
def list_to_hex(ilist: list[int]) -> str:
|
||||||
return f"#{fc(ilist[0])}{fc(ilist[1])}{fc(ilist[2])}"
|
return f"#{fc(ilist[0])}{fc(ilist[1])}{fc(ilist[2])}"
|
||||||
|
|
||||||
def alter_hue(ilist: list[int], hue: int) -> list[int]:
|
def alter_hue(ilist: list[int], hue: int) -> list[int]:
|
||||||
assert hue >= 0 and hue <= 360
|
assert hue >= 0 and hue <= 360
|
||||||
r, g, b = ilist
|
r, g, b = ilist
|
||||||
h, l, s = rgb_to_hls((r/255), (g/255), (b/255))
|
h, l, s = rgb_to_hls((r/255), (g/255), (b/255))
|
||||||
@@ -86,19 +88,19 @@ def alter_hue(ilist: list[int], hue: int) -> list[int]:
|
|||||||
r, g, b = hls_to_rgb(h=new_hue, l=l, s=s)
|
r, g, b = hls_to_rgb(h=new_hue, l=l, s=s)
|
||||||
return [int(r*255), int(g*255), int(b*255)]
|
return [int(r*255), int(g*255), int(b*255)]
|
||||||
|
|
||||||
def alter_l(ilist: list[int], l_in_1_0: float) -> list[int]:
|
def alter_l(ilist: list[int], l_in_1_0: float) -> list[int]:
|
||||||
assert l_in_1_0 >= 0 and l_in_1_0 <= 1
|
assert l_in_1_0 >= 0 and l_in_1_0 <= 1
|
||||||
r, g, b = ilist
|
r, g, b = ilist
|
||||||
h, _, s = rgb_to_hls((r/255), (g/255), (b/255))
|
h, _, s = rgb_to_hls((r/255), (g/255), (b/255))
|
||||||
r, g, b = hls_to_rgb(h=h, l=l_in_1_0, s=s)
|
r, g, b = hls_to_rgb(h=h, l=l_in_1_0, s=s)
|
||||||
return [int(r*255), int(g*255), int(b*255)]
|
return [int(r*255), int(g*255), int(b*255)]
|
||||||
|
|
||||||
def extract_colors(
|
def extract_colors(
|
||||||
image: str,
|
image: str,
|
||||||
palette_size: int = 5,
|
palette_size: int = 5,
|
||||||
resize: bool = True,
|
resize: bool = True,
|
||||||
sort_mode: Literal["luminance", "frequency"] | None = None,
|
sort_mode: Literal["luminance", "frequency"] | None = None,
|
||||||
) -> Palette:
|
) -> Palette:
|
||||||
|
|
||||||
img = Image.open(image).convert("RGB")
|
img = Image.open(image).convert("RGB")
|
||||||
|
|
||||||
@@ -115,14 +117,25 @@ def extract_colors(
|
|||||||
colors.sort(reverse=True)
|
colors.sort(reverse=True)
|
||||||
|
|
||||||
return Palette(colors)
|
return Palette(colors)
|
||||||
if __name__ == "__main__":
|
|
||||||
img = sys.argv[1]
|
|
||||||
|
|
||||||
|
def hyprpicker() -> Color:
|
||||||
|
ret = str(subprocess.run(["${pkgs.hyprpicker}/bin/hyprpicker", "-n", "-f", "rgb"], capture_output=True).stdout)[2:-3]
|
||||||
|
return Color([int(c) for c in ret.split(" ")])
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
if sys.argv[1] == "img":
|
||||||
|
img = sys.argv[2]
|
||||||
palette = extract_colors(image=img, palette_size=3)
|
palette = extract_colors(image=img, palette_size=3)
|
||||||
|
|
||||||
accent = ensure_color(c=palette[0], alter_sat=False)
|
accent = ensure_color(c=palette[0], alter_sat=False)
|
||||||
secondary = ensure_color(c=palette[1], alter_sat=True)
|
secondary = ensure_color(c=palette[1], alter_sat=True)
|
||||||
tertiary = ensure_color(c=palette[2], alter_sat=False)
|
tertiary = ensure_color(c=palette[2], alter_sat=False)
|
||||||
|
elif sys.argv[1] == "manual":
|
||||||
|
accent = ensure_color(c=hyprpicker(), alter_sat=False)
|
||||||
|
sleep(0.1)
|
||||||
|
secondary = ensure_color(c=hyprpicker(), alter_sat=True)
|
||||||
|
sleep(0.1)
|
||||||
|
tertiary = ensure_color(c=hyprpicker(), alter_sat=False)
|
||||||
|
|
||||||
weird = alter_hue(ilist=accent, hue=80)
|
weird = alter_hue(ilist=accent, hue=80)
|
||||||
special = alter_hue(ilist=accent, hue=180)
|
special = alter_hue(ilist=accent, hue=180)
|
||||||
foreground = alter_l(accent, 0.9)
|
foreground = alter_l(accent, 0.9)
|
||||||
@@ -144,6 +157,6 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
with open("/home/nx2/nix-dots/flake-modules/colors.json", "w") as f:
|
with open("/home/nx2/nix-dots/flake-modules/colors.json", "w") as f:
|
||||||
f.write(json.dumps(d, indent=4))
|
f.write(json.dumps(d, indent=4))
|
||||||
'')
|
'')
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
153
home-modules/waybar.nix
Executable file → Normal file
153
home-modules/waybar.nix
Executable file → Normal file
@@ -1,9 +1,12 @@
|
|||||||
{ lib, pkgs, user, rice, ... }: let
|
{ config, pkgs, rice, domain, user, ... }:
|
||||||
|
let
|
||||||
sep = " ";
|
sep = " ";
|
||||||
in {
|
in {
|
||||||
home.packages =
|
sops.secrets = {
|
||||||
let
|
"nx2site/radicale/password" = { };
|
||||||
waybar_mode_script = /*bash*/ ''
|
};
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
(writeShellApplication { name = "waybar_mode"; text = /*bash*/ ''
|
||||||
print_help() {
|
print_help() {
|
||||||
echo "Usage: waybar_mode {set <string>|unset}"
|
echo "Usage: waybar_mode {set <string>|unset}"
|
||||||
}
|
}
|
||||||
@@ -33,19 +36,118 @@ in {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
exit 0
|
exit 0
|
||||||
'';
|
'';})
|
||||||
cclock_script = /*bash*/ ''
|
(writeShellApplication { name = "cclock"; text = /*bash*/ ''
|
||||||
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
|
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
echo "${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
|
echo "${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
|
||||||
elif [ "$1" = "--no-icons" ]; then
|
elif [ "$1" = "--no-icons" ]; then
|
||||||
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
|
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
|
||||||
fi
|
fi
|
||||||
'';
|
'';})
|
||||||
in
|
(writers.writePython3Bin "caldav_event" {
|
||||||
with pkgs; [
|
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
|
||||||
(writeShellApplication { name = "waybar_mode"; text = waybar_mode_script;})
|
flakeIgnore = [ "E302" "E305""E501" ];
|
||||||
(writeShellApplication { name = "cclock"; text = cclock_script;})
|
} /* python */ ''
|
||||||
|
import os
|
||||||
|
from caldav import DAVClient
|
||||||
|
from datetime import datetime, timezone
|
||||||
|
import json
|
||||||
|
from ics import Calendar
|
||||||
|
|
||||||
|
def get_password(password_file):
|
||||||
|
with open(password_file, "r") as file:
|
||||||
|
return file.read().strip()
|
||||||
|
|
||||||
|
def load_cache(cache_file):
|
||||||
|
if os.path.exists(cache_file):
|
||||||
|
with open(cache_file, "r") as file:
|
||||||
|
return json.load(file)
|
||||||
|
return None
|
||||||
|
|
||||||
|
def save_cache(cache_file, data):
|
||||||
|
with open(cache_file, "w") as file:
|
||||||
|
json.dump(data, file)
|
||||||
|
|
||||||
|
def get_ongoing_and_next_event(url, username, password):
|
||||||
|
now = datetime.now(timezone.utc)
|
||||||
|
ongoing_events = []
|
||||||
|
upcoming_events = []
|
||||||
|
|
||||||
|
try:
|
||||||
|
client = DAVClient(url, username=username, password=password)
|
||||||
|
principal = client.principal()
|
||||||
|
calendars = principal.calendars()
|
||||||
|
|
||||||
|
for calendar in calendars:
|
||||||
|
events = calendar.events()
|
||||||
|
for event in events:
|
||||||
|
ical_data = event.data
|
||||||
|
calendar_parsed = Calendar(ical_data)
|
||||||
|
|
||||||
|
for event in calendar_parsed.events:
|
||||||
|
event_name = event.name or "(No Title)"
|
||||||
|
start_time = event.begin.astimezone(timezone.utc)
|
||||||
|
end_time = event.end.astimezone(timezone.utc)
|
||||||
|
|
||||||
|
if start_time <= now <= end_time:
|
||||||
|
ongoing_events.append((event_name, start_time.timestamp(), end_time.timestamp()))
|
||||||
|
elif start_time > now:
|
||||||
|
upcoming_events.append((event_name, start_time.timestamp(), end_time.timestamp()))
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error accessing {url}: {e}")
|
||||||
|
|
||||||
|
upcoming_events.sort(key=lambda x: x[1]) # Sort by start time
|
||||||
|
return ongoing_events, upcoming_events[0] if upcoming_events else None
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
password_file = "${config.sops.secrets."nx2site/radicale/password".path}" # Path to password file
|
||||||
|
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
|
||||||
|
url = "https://dav.${domain}/"
|
||||||
|
username = "${user}"
|
||||||
|
password = get_password(password_file)
|
||||||
|
|
||||||
|
cache = load_cache(cache_file)
|
||||||
|
now = datetime.now(timezone.utc).timestamp()
|
||||||
|
|
||||||
|
if cache and cache.get("next_event_start") and now < cache["next_event_start"]:
|
||||||
|
ongoing_events = cache.get("ongoing_events", [])
|
||||||
|
next_event = (cache["next_event_name"], cache["next_event_start"], cache["next_event_end"]) if "next_event_name" in cache else None
|
||||||
|
else:
|
||||||
|
ongoing_events, next_event = get_ongoing_and_next_event(url, username, password)
|
||||||
|
|
||||||
|
cache_data = {
|
||||||
|
"ongoing_events": ongoing_events,
|
||||||
|
"next_event_name": next_event[0] if next_event else None,
|
||||||
|
"next_event_start": next_event[1] if next_event else None,
|
||||||
|
"next_event_end": next_event[2] if next_event else None
|
||||||
|
}
|
||||||
|
save_cache(cache_file, cache_data)
|
||||||
|
|
||||||
|
if ongoing_events:
|
||||||
|
for event_name, start_time, end_time in ongoing_events:
|
||||||
|
time_remaining = end_time - now
|
||||||
|
hours, rem = divmod(int(time_remaining), 3600)
|
||||||
|
minutes, _ = divmod(rem, 60)
|
||||||
|
|
||||||
|
if hours == 0:
|
||||||
|
print(f"{event_name} {minutes} minute{'s ' if minutes > 1 else ' '}left")
|
||||||
|
else:
|
||||||
|
print(f"{event_name} {hours} hour{'s ' if hours > 1 else ' '}and {minutes} minute{'s ' if minutes > 1 else ' '}left")
|
||||||
|
else:
|
||||||
|
if next_event:
|
||||||
|
event_name, start_time, end_time = next_event
|
||||||
|
time_until_start = start_time - now
|
||||||
|
hours, rem = divmod(int(time_until_start), 3600)
|
||||||
|
minutes, _ = divmod(rem, 60)
|
||||||
|
|
||||||
|
if hours == 0:
|
||||||
|
print(f"'{event_name}' starts in {minutes} minute{'s ' if minutes > 1 else ' '}")
|
||||||
|
else:
|
||||||
|
print(f"'{event_name}' starts in {hours} hour{'s ' if hours > 1 else ' '}and {minutes} minute{'s ' if minutes > 1 else ' '}")
|
||||||
|
else:
|
||||||
|
print("No upcoming events found.")
|
||||||
|
'')
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.waybar = {
|
programs.waybar = {
|
||||||
@@ -78,7 +180,7 @@ in {
|
|||||||
];
|
];
|
||||||
modules-right = [
|
modules-right = [
|
||||||
"custom/mode"
|
"custom/mode"
|
||||||
"custom/ctimeremaining"
|
"custom/caldav_event"
|
||||||
"custom/cclock"
|
"custom/cclock"
|
||||||
"tray"
|
"tray"
|
||||||
];
|
];
|
||||||
@@ -97,10 +199,11 @@ in {
|
|||||||
exec = "cclock";
|
exec = "cclock";
|
||||||
restart-interval = 60;
|
restart-interval = 60;
|
||||||
};
|
};
|
||||||
# "custom/ctimeremaining" = {
|
"custom/caldav_event" = {
|
||||||
# exec = "nx_gcal_event lookup";
|
format = "${sep}{}";
|
||||||
# restart-interval = 60;
|
exec = "caldav_event";
|
||||||
# };
|
restart-interval = 60;
|
||||||
|
};
|
||||||
"custom/mode" = {
|
"custom/mode" = {
|
||||||
exec = "cat /tmp/waybar-mode";
|
exec = "cat /tmp/waybar-mode";
|
||||||
interval = "once";
|
interval = "once";
|
||||||
@@ -163,7 +266,7 @@ in {
|
|||||||
};
|
};
|
||||||
style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in ''
|
style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in ''
|
||||||
* {
|
* {
|
||||||
font-family: ${rice.font.code.name2};
|
font-family: ${rice.font.code.name};
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
min-height: 0px;
|
min-height: 0px;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
@@ -182,6 +285,7 @@ in {
|
|||||||
#clock,
|
#clock,
|
||||||
#custom-cclock,
|
#custom-cclock,
|
||||||
#custom-mode,
|
#custom-mode,
|
||||||
|
#custom-caldav-event,
|
||||||
#battery,
|
#battery,
|
||||||
#cpu,
|
#cpu,
|
||||||
#tray,
|
#tray,
|
||||||
@@ -207,7 +311,7 @@ in {
|
|||||||
|
|
||||||
#workspaces button.active {
|
#workspaces button.active {
|
||||||
color: rgb(${f background});
|
color: rgb(${f background});
|
||||||
background-color: rgba(${f accent.base},${builtins.toString rice.transparency});
|
background-color: rgb(${f accent.base});
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces button:hover {
|
#workspaces button:hover {
|
||||||
@@ -223,7 +327,7 @@ in {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#window, #custom-ctimeremaining {
|
#window, #custom-ctimeremaining {
|
||||||
font-family: ${rice.font.base.name}, ${rice.font.code.name2};
|
font-family: ${rice.font.base.name}, ${rice.font.code.name};
|
||||||
color: rgb(${f tertiary.bright});
|
color: rgb(${f tertiary.bright});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -238,11 +342,14 @@ in {
|
|||||||
color: rgb(${f green.base});;
|
color: rgb(${f green.base});;
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery.critical {
|
#battery.charging {
|
||||||
color: rgb(${f red.dark});;
|
color: rgb(${f green.base});
|
||||||
background: rgb(${f red.bright});
|
}
|
||||||
|
|
||||||
|
#battery.critical {
|
||||||
|
background: rgb(${f negative.base});
|
||||||
|
color: rgb(${f foreground});
|
||||||
}
|
}
|
||||||
#battery.charging { color: rgb(${f green.base}); }
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
#battery.critical:not(.charging) {
|
#battery.critical:not(.charging) {
|
||||||
|
|||||||
0
home-modules/wlogout.nix
Executable file → Normal file
0
home-modules/wlogout.nix
Executable file → Normal file
235
home-modules/yazi.nix
Executable file → Normal file
235
home-modules/yazi.nix
Executable file → Normal file
@@ -1,16 +1,184 @@
|
|||||||
|
{ pkgs, lib, system, rice, inputs, ... }:
|
||||||
{ pkgs, system, rice, inputs, ... }:
|
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# yazi
|
# yazi
|
||||||
dragon
|
# dragon
|
||||||
unar
|
unar
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.yazi = {
|
programs.yazi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
# package = pkgs.yazi;
|
||||||
package = inputs.yazi.packages.${system}.default;
|
package = inputs.yazi.packages.${system}.default;
|
||||||
enableFishIntegration = true;
|
enableFishIntegration = true;
|
||||||
|
shellWrapperName = "ya";
|
||||||
|
plugins = with inputs.yazi-plugins.packages.${system}; {
|
||||||
|
inherit chmod starship;
|
||||||
|
};
|
||||||
|
# initLua = /* lua */ '' '';
|
||||||
|
keymap = {
|
||||||
|
manager.keymap = [
|
||||||
|
{ on = "<Esc>"; run = "escape"; desc = "Exit visual mode, clear selected, or cancel search"; }
|
||||||
|
{ on = "q"; run = "quit"; desc = "Exit the process"; }
|
||||||
|
{ on = "Q"; run = "quit --no-cwd-file"; desc = "Exit the process without writing cwd-file"; }
|
||||||
|
{ on = "<C-w>"; run = "close"; desc = "Close the current tab, or quit if it is last tab"; }
|
||||||
|
{ on = "<C-z>"; run = "suspend"; desc = "Suspend the process"; }
|
||||||
|
# Hopping
|
||||||
|
{ on = "k"; run = "arrow -1"; desc = "Move cursor up"; }
|
||||||
|
{ on = "j"; run = "arrow 1"; desc = "Move cursor down"; }
|
||||||
|
{ on = "<Up>"; run = "arrow -1"; desc = "Move cursor up"; }
|
||||||
|
{ on = "<Down>"; run = "arrow 1"; desc = "Move cursor down"; }
|
||||||
|
{ on = "<C-u>"; run = "arrow -50%"; desc = "Move cursor up half page"; }
|
||||||
|
{ on = "<C-d>"; run = "arrow 50%"; desc = "Move cursor down half page"; }
|
||||||
|
{ on = "<C-b>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
|
||||||
|
{ on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||||
|
{ on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
|
||||||
|
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||||
|
{ on = [ "g" "g" ]; run = "arrow down"; desc = "Move cursor to the top"; }
|
||||||
|
{ on = [ "g" "e" ]; run = "arrow up"; desc = "Move cursor to the end"; }
|
||||||
|
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
|
||||||
|
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
|
||||||
|
{ on = [ "g" "n" ]; run = "cd /nix/store"; desc = "Go to the Nix-Store"; }
|
||||||
|
{ on = [ "g" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; }
|
||||||
|
{ on = [ "g" "l" ]; run = "cd ~/.locale"; desc = "Go to the .locale directory"; }
|
||||||
|
{ on = [ "g" "C" ]; run = "cd ~/.cache"; desc = "Go to the .cache directory"; }
|
||||||
|
{ on = [ "g" "m" ]; run = "cd ~/media"; desc = "Go to the media (udiskie mount) directory"; }
|
||||||
|
{ on = [ "g" "v" ]; run = "cd ~/Videos"; desc = "Go to the Videos directory"; }
|
||||||
|
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
|
||||||
|
{ on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; }
|
||||||
|
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||||
|
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||||
|
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
|
||||||
|
# Navigation
|
||||||
|
{ on = "h"; run = "leave"; desc = "Go back to the parent directory"; }
|
||||||
|
{ on = "l"; run = "enter"; desc = "Enter the child directory"; }
|
||||||
|
{ on = "<Left>"; run = "leave"; desc = "Go back to the parent directory"; }
|
||||||
|
{ on = "<Right>"; run = "enter"; desc = "Enter the child directory"; }
|
||||||
|
{ on = "H"; run = "back"; desc = "Go back to the previous directory"; }
|
||||||
|
{ on = "L"; run = "forward"; desc = "Go forward to the next directory"; }
|
||||||
|
# Seeking
|
||||||
|
{ on = "K"; run = "seek -5"; desc = "Seek up 5 units in the preview"; }
|
||||||
|
{ on = "J"; run = "seek 5"; desc = "Seek down 5 units in the preview"; }
|
||||||
|
# Selection
|
||||||
|
{ on = "<Space>"; run = [ "toggle --state=none" "arrow 1" ]; desc = "Toggle the current selection state"; }
|
||||||
|
{ on = "v"; run = "visual_mode"; desc = "Enter visual mode (selection mode)"; }
|
||||||
|
{ on = "V"; run = "visual_mode --unset"; desc = "Enter visual mode (unset mode)"; }
|
||||||
|
{ on = "<C-a>"; run = "toggle_all --state=on"; desc = "Select all files"; }
|
||||||
|
{ on = "<C-n>"; run = "toggle_all --state=off"; desc = "Deselect all files"; }
|
||||||
|
{ on = "<C-r>"; run = "toggle_all --state=none"; desc = "Inverse selection of all files"; }
|
||||||
|
# Operation
|
||||||
|
{ on = "o"; run = "open"; desc = "Open selected files"; }
|
||||||
|
{ on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
||||||
|
{ on = "<Enter>"; run = "open"; desc = "Open selected files"; }
|
||||||
|
{ on = "<S-Enter>"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
||||||
|
{ on = "y"; run = "yank"; desc = "Yank selected files (copy)"; }
|
||||||
|
{ on = "x"; run = "yank --cut"; desc = "Yank selected files (cut)"; }
|
||||||
|
{ on = "p"; run = "paste"; desc = "Paste yanked "; }
|
||||||
|
{ on = "P"; run = "paste --force"; desc = "Paste yanked (overwrite if exists)"; }
|
||||||
|
{ on = "-"; run = "link"; desc = "Symlink the absolute path of yanked files"; }
|
||||||
|
{ on = "_"; run = "link --relative"; desc = "Symlink the relative path of yanked files"; }
|
||||||
|
{ on = "<C-->"; run = "hardlink"; desc = "Hardlink yanked files"; }
|
||||||
|
{ on = "Y"; run = "unyank"; desc = "Cancel the yank status"; }
|
||||||
|
{ on = "X"; run = "unyank"; desc = "Cancel the yank status"; }
|
||||||
|
{ on = "d"; run = "remove"; desc = "Trash selected files"; }
|
||||||
|
{ on = "D"; run = "remove --permanently"; desc = "Permanently delete selected files"; }
|
||||||
|
{ on = "a"; run = "create"; desc = "Create a file (ends with / for directories)"; }
|
||||||
|
{ on = "r"; run = "rename --cursor=before_ext"; desc = "Rename selected file(s)"; }
|
||||||
|
{ on = ";"; run = "shell --interactive"; desc = "Run a shell command"; }
|
||||||
|
{ on = ":"; run = "shell --block --interactive"; desc = "Run a shell command (block until finishes)"; }
|
||||||
|
{ on = "."; run = "hidden toggle"; desc = "Toggle the visibility of hidden files"; }
|
||||||
|
{ on = "s"; run = "search fd"; desc = "Search files by name using fd"; }
|
||||||
|
{ on = "S"; run = "search rg"; desc = "Search files by content using ripgrep"; }
|
||||||
|
{ on = "<C-s>"; run = "escape --search"; desc = "Cancel the ongoing search"; }
|
||||||
|
{ on = "z"; run = "plugin zoxide"; desc = "Jump to a directory using zoxide"; }
|
||||||
|
{ on = "Z"; run = "plugin fzf"; desc = "Jump to a directory or reveal a file using fzf"; }
|
||||||
|
# Linemode
|
||||||
|
{ on = [ "m" "s" ]; run = "linemode size"; desc = "Set linemode to size"; }
|
||||||
|
{ on = [ "m" "p" ]; run = "linemode permissions"; desc = "Set linemode to permissions"; }
|
||||||
|
{ on = [ "m" "c" ]; run = "linemode ctime"; desc = "Set linemode to ctime"; }
|
||||||
|
{ on = [ "m" "m" ]; run = "linemode mtime"; desc = "Set linemode to mtime"; }
|
||||||
|
{ on = [ "m" "o" ]; run = "linemode owner"; desc = "Set linemode to owner"; }
|
||||||
|
{ on = [ "m" "n" ]; run = "linemode none"; desc = "Set linemode to none"; }
|
||||||
|
# Copy
|
||||||
|
{ on = [ "c" "c" ]; run = "copy path"; desc = "Copy the file path"; }
|
||||||
|
{ on = [ "c" "d" ]; run = "copy dirname"; desc = "Copy the directory path"; }
|
||||||
|
{ on = [ "c" "f" ]; run = "copy filename"; desc = "Copy the filename"; }
|
||||||
|
{ on = [ "c" "n" ]; run = "copy name_without_ext"; desc = "Copy the filename without extension"; }
|
||||||
|
# Filter
|
||||||
|
{ on = "f"; run = "filter --smart"; desc = "Filter files"; }
|
||||||
|
# Find
|
||||||
|
{ on = "/"; run = "find --smart"; desc = "Find next file"; }
|
||||||
|
{ on = "?"; run = "find --previous --smart"; desc = "Find previous file"; }
|
||||||
|
{ on = "n"; run = "find_arrow"; desc = "Go to the next found"; }
|
||||||
|
{ on = "N"; run = "find_arrow --previous"; desc = "Go to the previous found"; }
|
||||||
|
# Sortin
|
||||||
|
{ on = [ "," "m" ]; run = [ "sort modified --reverse=no" "linemode mtime" ]; desc = "Sort by modified time"; }
|
||||||
|
{ on = [ "," "M" ]; run = [ "sort modified --reverse" "linemode mtime" ]; desc = "Sort by modified time (reverse)"; }
|
||||||
|
{ on = [ "," "c" ]; run = [ "sort created --reverse=no" "linemode ctime" ]; desc = "Sort by created time"; }
|
||||||
|
{ on = [ "," "C" ]; run = [ "sort created --reverse" "linemode ctime" ]; desc = "Sort by created time (reverse)"; }
|
||||||
|
{ on = [ "," "e" ]; run = "sort extension --reverse=no"; desc = "Sort by extension"; }
|
||||||
|
{ on = [ "," "E" ]; run = "sort extension --reverse"; desc = "Sort by extension (reverse)"; }
|
||||||
|
{ on = [ "," "a" ]; run = "sort alphabetical --reverse=no"; desc = "Sort alphabetically"; }
|
||||||
|
{ on = [ "," "A" ]; run = "sort alphabetical --reverse"; desc = "Sort alphabetically (reverse)"; }
|
||||||
|
{ on = [ "," "n" ]; run = "sort natural --reverse=no"; desc = "Sort naturally"; }
|
||||||
|
{ on = [ "," "N" ]; run = "sort natural --reverse"; desc = "Sort naturally (reverse)"; }
|
||||||
|
{ on = [ "," "s" ]; run = [ "sort size --reverse=no" "linemode size" ]; desc = "Sort by size"; }
|
||||||
|
{ on = [ "," "S" ]; run = [ "sort size --reverse" "linemode size" ]; desc = "Sort by size (reverse)"; }
|
||||||
|
# Tab
|
||||||
|
{ on = "t"; run = "tab_create --current"; desc = "Create a new tab with CWD"; }
|
||||||
|
{ on = "<C-w>"; run = "close"; desc = "Close the current tab"; }
|
||||||
|
{ on = "1"; run = "tab_switch 0"; desc = "Switch to the first tab"; }
|
||||||
|
{ on = "2"; run = "tab_switch 1"; desc = "Switch to the second tab"; }
|
||||||
|
{ on = "3"; run = "tab_switch 2"; desc = "Switch to the third tab"; }
|
||||||
|
{ on = "4"; run = "tab_switch 3"; desc = "Switch to the fourth tab"; }
|
||||||
|
{ on = "5"; run = "tab_switch 4"; desc = "Switch to the fifth tab"; }
|
||||||
|
{ on = "6"; run = "tab_switch 5"; desc = "Switch to the sixth tab"; }
|
||||||
|
{ on = "7"; run = "tab_switch 6"; desc = "Switch to the seventh tab"; }
|
||||||
|
{ on = "8"; run = "tab_switch 7"; desc = "Switch to the eighth tab"; }
|
||||||
|
{ on = "9"; run = "tab_switch 8"; desc = "Switch to the ninth tab"; }
|
||||||
|
{ on = "<C-1>"; run = "tab_swap 0"; desc = "Swap current tab with the first tab"; }
|
||||||
|
{ on = "<C-2>"; run = "tab_swap 1"; desc = "Swap current tab with the second tab"; }
|
||||||
|
{ on = "<C-3>"; run = "tab_swap 2"; desc = "Swap current tab with the third tab"; }
|
||||||
|
{ on = "<C-4>"; run = "tab_swap 3"; desc = "Swap current tab with the fourth tab"; }
|
||||||
|
{ on = "<C-5>"; run = "tab_swap 4"; desc = "Swap current tab with the fifth tab"; }
|
||||||
|
{ on = "<C-5>"; run = "tab_swap 4"; desc = "Swap current tab with "; }
|
||||||
|
{ on = "<C-6>"; run = "tab_swap 5"; desc = "Swap current tab with the sixth tab"; }
|
||||||
|
{ on = "<C-6>"; run = "tab_swap 5"; desc = "Swap current tab with "; }
|
||||||
|
{ on = "<C-7>"; run = "tab_swap 6"; desc = "Swap current tab with the seventh tab"; }
|
||||||
|
{ on = "<C-7>"; run = "tab_swap 6"; desc = "Swap current tab with tab"; }
|
||||||
|
{ on = "<C-8>"; run = "tab_swap 7"; desc = "Swap current tab with the eighth tab"; }
|
||||||
|
{ on = "<C-8>"; run = "tab_swap 7"; desc = "Swap current tab with b"; }
|
||||||
|
{ on = "<C-9>"; run = "tab_swap 8"; desc = "Swap current tab with the ninth tab"; }
|
||||||
|
{ on = "<C-9>"; run = "tab_swap 8"; desc = "Swap current tab with "; }
|
||||||
|
{ on = "["; run = "tab_switch -1 --relative"; desc = "Switch to the previous tab"; }
|
||||||
|
{ on = "["; run = "tab_switch -1 --relative"; desc = "Switch to thtab"; }
|
||||||
|
{ on = "]"; run = "tab_switch 1 --relative"; desc = "Switch to the next tab"; }
|
||||||
|
{ on = "]"; run = "tab_switch 1 --relative"; desc = "Switch ttab"; }
|
||||||
|
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab with previous tab"; }
|
||||||
|
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab wittab"; }
|
||||||
|
{ on = "}"; run = "tab_swap 1"; desc = "Swap current tab with next tab"; }
|
||||||
|
# Tasks
|
||||||
|
{ on = "w"; run = "tasks_show"; desc = "Show task manager"; }
|
||||||
|
];
|
||||||
|
tasks.keymap = [
|
||||||
|
# Task
|
||||||
|
{ on = "w"; run = "close"; desc = "Close Task View"; }
|
||||||
|
{ on = "q"; run = "close"; desc = "Close Task View"; }
|
||||||
|
{ on = "<Esc>"; run = "close"; desc = "Close Task View"; }
|
||||||
|
{ on = "c"; run = "cancel"; desc = "Cancel Task"; }
|
||||||
|
{ on = "i"; run = "inspect"; desc = "Inspect Task"; }
|
||||||
|
{ on = "j"; run = "arrow -1"; desc = "Up in list"; }
|
||||||
|
{ on = "k"; run = "arrow 1"; desc = "Down in list"; }
|
||||||
|
{ on = "u"; run = "arrow -5"; desc = "Up in list (fast)"; }
|
||||||
|
{ on = "d"; run = "arrow 5"; desc = "Down in list (fast)"; }
|
||||||
|
];
|
||||||
|
help = [
|
||||||
|
# Help
|
||||||
|
{ on = "~"; run = "help"; desc = "Open help"; }
|
||||||
|
{ on = "?"; run = "help"; desc = "Open help"; }
|
||||||
|
{ on = "<F1>"; run = "help"; desc = "Open help"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
settings = {
|
settings = {
|
||||||
manager = {
|
manager = {
|
||||||
layout = [2 3 4];
|
layout = [2 3 4];
|
||||||
@@ -21,20 +189,15 @@
|
|||||||
linemode = "size";
|
linemode = "size";
|
||||||
show_hidden = false;
|
show_hidden = false;
|
||||||
show_symlink = true;
|
show_symlink = true;
|
||||||
append_keymap = [
|
|
||||||
{ on = [ "<C-g>" ]; run = "lazygit"; desc = "Run Lazygit in current directory"; }
|
|
||||||
{ on = [ "<C-D>" ]; run = ''shell 'dragon -x -i -T "$1"' --confirm''; }
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
opener = {
|
opener = {
|
||||||
"edit" = [
|
"edit" = [
|
||||||
{ run = ''hx "$@"''; desc = "helix"; block = true;}
|
{ run = ''hx "$@"''; desc = "helix"; block = true; }
|
||||||
{ run = ''codium "$@"''; orphan = true;}
|
{ run = ''codium "$@"''; desc = "helix"; orphan = true; }
|
||||||
{ run = ''nano "$@"''; desc = "nano"; block = true;}
|
|
||||||
];
|
];
|
||||||
"play" = [
|
"play" = [
|
||||||
{ run = ''mpv "$@"''; }
|
{ run = ''mpv "$@"''; }
|
||||||
{ run = ''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; desc = "Show mediainfo";}
|
{ run = ''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; desc = "Show mediainfo"; }
|
||||||
];
|
];
|
||||||
"archive" = [
|
"archive" = [
|
||||||
{ run = ''unar "$1"''; desc = "Extract here"; }
|
{ run = ''unar "$1"''; desc = "Extract here"; }
|
||||||
@@ -42,33 +205,38 @@
|
|||||||
{ run = ''unzip "$1"''; desc = "unzip"; }
|
{ run = ''unzip "$1"''; desc = "unzip"; }
|
||||||
];
|
];
|
||||||
"image" = [
|
"image" = [
|
||||||
{ run = ''imv "$@"''; desc = "imv";}
|
{ run = ''imv "$@"''; desc = "imv"; orphan = true; }
|
||||||
{ run = ''gimp "$@"''; desc = "gimp";}
|
{ run = ''gimp "$@"''; desc = "gimp"; orphan = true; }
|
||||||
{ run = ''swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 "$@"''; desc = "swww wallpaper";}
|
{ run = ''swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 "$@"''; desc = "swww wallpaper"; }
|
||||||
|
{ run = ''exiftool "$@"; echo "Press enter to exit"; read''; desc = "View Exif Data"; }
|
||||||
|
{ run = ''for f in "$@"; do magick "$f" -auto-orient "''${f%.*}.pdf"; done''; desc = "Convert to PDF"; }
|
||||||
];
|
];
|
||||||
"svg" = [
|
"svg" = [
|
||||||
{ run = ''inkscape "$@"''; desc = "inkscape";}
|
{ run = ''inkscape "$@"''; desc = "inkscape"; orphan = true; }
|
||||||
{ run = ''firefoc "$@"''; desc = "firefox";}
|
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
|
||||||
];
|
];
|
||||||
"font" = [
|
"font" = [
|
||||||
{ run = ''fontpreview "$@"''; desc = "fontpreview"; }
|
{ run = ''fontpreview "$@"''; desc = "fontpreview"; orphan = true; }
|
||||||
{ run = ''fontforge "$@"''; desc = "fortforge"; }
|
{ run = ''fontforge "$@"''; desc = "fortforge"; orphan = true; }
|
||||||
];
|
];
|
||||||
"document" = [
|
"document" = [
|
||||||
{ run = ''zathura "$@"''; desc = "zathura"; }
|
{ run = ''zathura "$@"''; desc = "zathura"; orphan = true; }
|
||||||
{ run = ''xournal "$@"''; desc = "xournal"; }
|
{ run = ''xournal "$@"''; desc = "xournal"; orphan = true; }
|
||||||
{ run = ''firefox "$@"''; desc = "firefox"; }
|
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
|
||||||
|
{ run = ''nxgs flip "$@"''; desc = "nxgs flip"; }
|
||||||
|
{ run = ''nxgs rotate "$@"''; desc = "nxgs rotate"; }
|
||||||
|
{ run = ''nxgs interactive-merge "$@"''; block = true; desc = "nxgs merge"; }
|
||||||
];
|
];
|
||||||
"browser" = [
|
"browser" = [
|
||||||
{ run = ''firefox "$@"''; desc = "firefox"; }
|
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
|
||||||
{ run = ''zen "$@"''; desc = "zen"; }
|
{ run = ''zen "$@"''; desc = "zen"; orphan = true; }
|
||||||
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "chromium"; }
|
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "chromium"; orphan = true; }
|
||||||
{ run = ''w3m "$@"''; desc = "w3m"; }
|
{ run = ''w3m "$@"''; desc = "w3m"; }
|
||||||
{ run = ''lynx "$@"''; desc = "lynx"; }
|
{ run = ''lynx "$@"''; desc = "lynx"; }
|
||||||
];
|
];
|
||||||
"office" = [
|
"office" = [
|
||||||
{ run = ''libreoffice "$@"''; desc = "libreoffice"; }
|
{ run = ''libreoffice "$@"''; desc = "libreoffice"; orphan = true; }
|
||||||
{ run = ''libreoffice --view "$@"''; desc = "libreoffice read-only"; }
|
{ run = ''libreoffice --view "$@"''; desc = "libreoffice read-only"; orphan = true; }
|
||||||
];
|
];
|
||||||
"shell" = [
|
"shell" = [
|
||||||
{ run = ''bash -c "$@"''; desc = "bash -c"; }
|
{ run = ''bash -c "$@"''; desc = "bash -c"; }
|
||||||
@@ -83,8 +251,8 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
open.rules = [
|
open.rules = [
|
||||||
{ mime = "text/html"; use = ["edit" "browser"]; }
|
{ mime = "text/html"; use = [ "edit" "browser" ]; }
|
||||||
{ mime = "text/htm"; use = ["edit" "browser"]; }
|
{ mime = "text/htm"; use = [ "edit" "browser" ]; }
|
||||||
{ mime = "text/x-python"; use = "python"; }
|
{ mime = "text/x-python"; use = "python"; }
|
||||||
{ mime = "text/*"; use = "edit"; }
|
{ mime = "text/*"; use = "edit"; }
|
||||||
|
|
||||||
@@ -92,11 +260,12 @@
|
|||||||
{ mine = "inode/directory"; use = "edit"; }
|
{ mine = "inode/directory"; use = "edit"; }
|
||||||
|
|
||||||
{ mime = "image/*"; use = "image"; }
|
{ mime = "image/*"; use = "image"; }
|
||||||
{ mime = "image/svg"; use = ["image" "edit"]; }
|
{ mime = "image/svg"; use = [ "image" "edit" ]; }
|
||||||
|
|
||||||
{ mime = "video/*"; use = "video"; }
|
{ mime = "video/*"; use = "play"; }
|
||||||
|
{ mime = "audio/*"; use = "play"; }
|
||||||
|
|
||||||
{ mime = "application/x-httpd-php"; use = ["edit" "browser"]; }
|
{ mime = "application/x-httpd-php"; use = [ "edit" "browser" ]; }
|
||||||
{ mime = "application/json"; use = "edit"; }
|
{ mime = "application/json"; use = "edit"; }
|
||||||
{ mime = "application/ld+json"; use = "edit"; }
|
{ mime = "application/ld+json"; use = "edit"; }
|
||||||
{ mime = "application/pdf"; use = "document"; }
|
{ mime = "application/pdf"; use = "document"; }
|
||||||
@@ -104,9 +273,9 @@
|
|||||||
{ mime = "application/vnd.oasis.opendocument.*"; use = "office"; }
|
{ mime = "application/vnd.oasis.opendocument.*"; use = "office"; }
|
||||||
{ mime = "application/vnd.ms-powerpoint"; use = "office"; }
|
{ mime = "application/vnd.ms-powerpoint"; use = "office"; }
|
||||||
{ mime = "application/vnd.ms-excel"; use = "office"; }
|
{ mime = "application/vnd.ms-excel"; use = "office"; }
|
||||||
{ mime = "application/vnd.openxmlformats-officedocument.*"; use = ["office" "edit"]; }
|
{ mime = "application/vnd.openxmlformats-officedocument.*"; use = [ "office" "edit" ]; }
|
||||||
{ mime = "application/rtf"; use = "office"; }
|
{ mime = "application/rtf"; use = "office"; }
|
||||||
{ mime = "application/x-sh"; use = ["edit" "shell"]; }
|
{ mime = "application/x-sh"; use = [ "edit" "shell" ]; }
|
||||||
{ mime = "application/x-python-code"; use = "python"; }
|
{ mime = "application/x-python-code"; use = "python"; }
|
||||||
{ mime = "application/xml"; use = "edit"; }
|
{ mime = "application/xml"; use = "edit"; }
|
||||||
{ mime = "application/xul"; use = "edit"; }
|
{ mime = "application/xul"; use = "edit"; }
|
||||||
|
|||||||
@@ -1,18 +1,24 @@
|
|||||||
{ pkgs, rice, ... }:
|
{ rice, ... }:
|
||||||
{
|
{
|
||||||
programs.zathura = {
|
programs.zathura = {
|
||||||
enable = true;
|
enable = true;
|
||||||
options = with rice.color; {
|
options = let
|
||||||
|
f = rice.lib.hex-to-rgb-comma-string;
|
||||||
|
t = builtins.toString rice.transparency;
|
||||||
|
in with rice.color; {
|
||||||
completion-bg = background;
|
completion-bg = background;
|
||||||
completion-fg = foreground;
|
completion-fg = foreground;
|
||||||
completion-highlight-bg = background;
|
completion-highlight-bg = background;
|
||||||
completion-highlight-fg = accent.base;
|
completion-highlight-fg = accent.base;
|
||||||
default-bg = "rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency})";
|
default-bg = "rgba(${f background},${t})";
|
||||||
default-fg = foreground;
|
default-fg = foreground;
|
||||||
highlight-active-color = "rgba(${rice.lib.hex-to-rgb-comma-string accent.base},0.5)";
|
highlight-active-color = "rgba(${f accent.base},0.5)";
|
||||||
highlight-color = "rgba(${rice.lib.hex-to-rgb-comma-string secondary.base},0.5)";
|
highlight-color = "rgba(${f secondary.base},0.5)";
|
||||||
highlight-fg = "rgba(${rice.lib.hex-to-rgb-comma-string secondary.base},0.5)";
|
highlight-fg = "rgba(${f secondary.base},0.5)";
|
||||||
index-active-bg = background;
|
index-fg = accent.bright;
|
||||||
|
index-bg = black.dark;
|
||||||
|
index-active-fg = background;
|
||||||
|
index-active-bg = foreground;
|
||||||
inputbar-bg = background;
|
inputbar-bg = background;
|
||||||
inputbar-fg = foreground;
|
inputbar-fg = foreground;
|
||||||
notification-bg = background;
|
notification-bg = background;
|
||||||
@@ -31,6 +37,19 @@
|
|||||||
|
|
||||||
n-completion-items = 9999999999999;
|
n-completion-items = 9999999999999;
|
||||||
exec-command = "open";
|
exec-command = "open";
|
||||||
|
page-padding = rice.border-width;
|
||||||
|
|
||||||
|
#stop at page boundries
|
||||||
|
scroll-page-aware = true;
|
||||||
|
smooth-scroll = true;
|
||||||
|
scroll-full-overlap = 0.01;
|
||||||
|
scroll-step = 100;
|
||||||
|
};
|
||||||
|
mappings = {
|
||||||
|
h = ''feedkeys "<C-Left>"'';
|
||||||
|
j = ''feedkeys "<C-Down>"'';
|
||||||
|
k = ''feedkeys "<C-Up>"'';
|
||||||
|
l = ''feedkeys "<C-Right>"'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
0
home-modules/zoxide.nix
Executable file → Normal file
0
home-modules/zoxide.nix
Executable file → Normal file
85
home.nix
Executable file → Normal file
85
home.nix
Executable file → Normal file
@@ -1,9 +1,10 @@
|
|||||||
{ pkgs, pkgs-unstable, host, user, inputs, ... }:
|
{ pkgs, pkgs-unstable, lib, host, user, inputs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./home-modules/auto-mount.nix
|
./home-modules/auto-mount.nix
|
||||||
./home-modules/bash.nix
|
./home-modules/bash.nix
|
||||||
./home-modules/bitwarden.nix
|
./home-modules/bitwarden.nix
|
||||||
|
./home-modules/calendar.nix
|
||||||
./home-modules/chatterino.nix
|
./home-modules/chatterino.nix
|
||||||
./home-modules/color-pallete.nix
|
./home-modules/color-pallete.nix
|
||||||
./home-modules/direnv.nix
|
./home-modules/direnv.nix
|
||||||
@@ -14,6 +15,8 @@
|
|||||||
# ./home-modules/foot.nix
|
# ./home-modules/foot.nix
|
||||||
./home-modules/games.nix
|
./home-modules/games.nix
|
||||||
./home-modules/gestures.nix
|
./home-modules/gestures.nix
|
||||||
|
./home-modules/ghostty.nix
|
||||||
|
./home-modules/gimp.nix
|
||||||
./home-modules/git.nix
|
./home-modules/git.nix
|
||||||
./home-modules/gpg.nix
|
./home-modules/gpg.nix
|
||||||
./home-modules/gtk.nix
|
./home-modules/gtk.nix
|
||||||
@@ -28,7 +31,7 @@
|
|||||||
./home-modules/nh.nix
|
./home-modules/nh.nix
|
||||||
./home-modules/nixd.nix
|
./home-modules/nixd.nix
|
||||||
./home-modules/nvidia.nix
|
./home-modules/nvidia.nix
|
||||||
./home-modules/nx2site.nix
|
./home-modules/nxgs.nix
|
||||||
# ./home-modules/nx-gcal-event.nix
|
# ./home-modules/nx-gcal-event.nix
|
||||||
./home-modules/obs.nix
|
./home-modules/obs.nix
|
||||||
./home-modules/office.nix
|
./home-modules/office.nix
|
||||||
@@ -37,10 +40,13 @@
|
|||||||
./home-modules/pnx.nix
|
./home-modules/pnx.nix
|
||||||
./home-modules/programming/c.nix
|
./home-modules/programming/c.nix
|
||||||
./home-modules/programming/gleam.nix
|
./home-modules/programming/gleam.nix
|
||||||
./home-modules/programming/node.nix
|
./home-modules/programming/go.nix
|
||||||
|
./home-modules/programming/java.nix
|
||||||
|
./home-modules/programming/js.nix
|
||||||
./home-modules/programming/python.nix
|
./home-modules/programming/python.nix
|
||||||
./home-modules/qt.nix
|
./home-modules/qt.nix
|
||||||
./home-modules/rofi.nix
|
./home-modules/rofi.nix
|
||||||
|
./home-modules/scanning.nix
|
||||||
./home-modules/sent.nix
|
./home-modules/sent.nix
|
||||||
./home-modules/sops.nix
|
./home-modules/sops.nix
|
||||||
./home-modules/ssh.nix
|
./home-modules/ssh.nix
|
||||||
@@ -55,44 +61,62 @@
|
|||||||
./home-modules/yazi.nix
|
./home-modules/yazi.nix
|
||||||
./home-modules/zathura.nix
|
./home-modules/zathura.nix
|
||||||
./home-modules/zoxide.nix
|
./home-modules/zoxide.nix
|
||||||
];
|
] ++ (if (host == "NxACE") then [
|
||||||
|
./home-modules/hugo.nix
|
||||||
|
./home-modules/nx2site.nix
|
||||||
|
./home-modules/nx2site-backup.nix
|
||||||
|
] else []);
|
||||||
home.username = user;
|
home.username = user;
|
||||||
home.homeDirectory = "/home/${user}";
|
home.homeDirectory = "/home/${user}";
|
||||||
home.stateVersion = "24.05";
|
home.stateVersion = "24.05";
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
bat
|
||||||
|
brightnessctl
|
||||||
|
browsh
|
||||||
chromium
|
chromium
|
||||||
|
|
||||||
# zathura
|
|
||||||
xfce.thunar
|
|
||||||
|
|
||||||
# spotify
|
|
||||||
spicetify-cli
|
|
||||||
|
|
||||||
swww playerctl
|
|
||||||
|
|
||||||
imv mpv mediainfo exiftool ffmpeg
|
|
||||||
pavucontrol
|
|
||||||
fontpreview gtk2fontsel
|
|
||||||
lynx w3m browsh
|
|
||||||
bat du-dust eza neofetch tldr fzf figlet ripgrep lolcat jq glow
|
|
||||||
brightnessctl wev
|
|
||||||
piper-tts
|
|
||||||
sssnake pipes
|
|
||||||
dig
|
|
||||||
screen
|
|
||||||
reflex
|
|
||||||
|
|
||||||
gnumake
|
|
||||||
cmake
|
cmake
|
||||||
|
dig
|
||||||
speedtest-go
|
du-dust
|
||||||
|
exiftool
|
||||||
|
eza
|
||||||
|
ffmpeg
|
||||||
|
figlet
|
||||||
|
fontpreview
|
||||||
|
fzf
|
||||||
glib
|
glib
|
||||||
|
glow
|
||||||
|
gnumake
|
||||||
gsettings-desktop-schemas
|
gsettings-desktop-schemas
|
||||||
|
imagemagick
|
||||||
|
imv
|
||||||
|
jq
|
||||||
|
lolcat
|
||||||
|
lynx
|
||||||
|
mediainfo
|
||||||
|
mpv
|
||||||
|
neofetch
|
||||||
|
pavucontrol
|
||||||
|
pdfgrep
|
||||||
|
piper-tts
|
||||||
|
pipes
|
||||||
|
playerctl
|
||||||
|
pv
|
||||||
|
qbittorrent
|
||||||
|
reflex
|
||||||
|
ripgrep
|
||||||
|
screen
|
||||||
|
speedtest-go
|
||||||
|
spicetify-cli
|
||||||
|
sssnake
|
||||||
|
swww
|
||||||
|
tldr
|
||||||
|
w3m
|
||||||
|
wev
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
xclip
|
xclip
|
||||||
|
xfce.thunar
|
||||||
xournal
|
xournal
|
||||||
ghostscript
|
yt-dlp
|
||||||
|
|
||||||
inputs.zen-browser.packages."${system}".default
|
inputs.zen-browser.packages."${system}".default
|
||||||
|
|
||||||
@@ -103,7 +127,6 @@
|
|||||||
]) ++ (if host != "NxACE" then (with pkgs; [
|
]) ++ (if host != "NxACE" then (with pkgs; [
|
||||||
signal-desktop
|
signal-desktop
|
||||||
zoom-us
|
zoom-us
|
||||||
gimp
|
|
||||||
inkscape
|
inkscape
|
||||||
]) else (with pkgs-unstable; [
|
]) else (with pkgs-unstable; [
|
||||||
|
|
||||||
|
|||||||
0
nxlib/ricelib.nix
Executable file → Normal file
0
nxlib/ricelib.nix
Executable file → Normal file
File diff suppressed because one or more lines are too long
@@ -1,6 +1,9 @@
|
|||||||
{ host, lib, ... }:
|
{ pkgs, host, lib, ... }:
|
||||||
lib.mkIf (host != "NxACE")
|
lib.mkIf (host != "NxACE")
|
||||||
{
|
{
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
adbfs-rootless
|
||||||
|
];
|
||||||
programs.adb = {
|
programs.adb = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|||||||
9
system-modules/boot.nix
Executable file → Normal file
9
system-modules/boot.nix
Executable file → Normal file
@@ -17,11 +17,9 @@ in
|
|||||||
|
|
||||||
environment.systemPackages = with pkgs; [ sbctl ];
|
environment.systemPackages = with pkgs; [ sbctl ];
|
||||||
boot = {
|
boot = {
|
||||||
lanzaboote =
|
lanzaboote = let
|
||||||
let
|
|
||||||
windows-efi-shell-fs-alias = "HD0a65535a2";
|
windows-efi-shell-fs-alias = "HD0a65535a2";
|
||||||
in
|
in {
|
||||||
{
|
|
||||||
enable = true;
|
enable = true;
|
||||||
pkiBundle = "/etc/secureboot";
|
pkiBundle = "/etc/secureboot";
|
||||||
package = lib.mkForce (pkgs.writeShellApplication {
|
package = lib.mkForce (pkgs.writeShellApplication {
|
||||||
@@ -105,7 +103,7 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
kernelPackages = pkgs-unstable.linuxPackages_6_10;
|
kernelPackages = pkgs-unstable.linuxPackages_6_11;
|
||||||
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
||||||
kernelModules = [ "v4l2loopback" ];
|
kernelModules = [ "v4l2loopback" ];
|
||||||
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS VCam" exclusive_caps=1'';
|
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS VCam" exclusive_caps=1'';
|
||||||
@@ -120,6 +118,7 @@ in
|
|||||||
efiSupport = true;
|
efiSupport = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
kernelPackages = pkgs-unstable.linuxPackages_6_11;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
132
system-modules/calendar-dicos.nix
Normal file
132
system-modules/calendar-dicos.nix
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
systemd.timers."nx_cal_dicos" = {
|
||||||
|
enable = true;
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnBootSec = "40m";
|
||||||
|
OnUnitActiveSec = "24h";
|
||||||
|
Unit = "nx_cal_dicos.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services."nx_cal_dicos" = {
|
||||||
|
script = let
|
||||||
|
nx_cal_dicos = (pkgs.writers.writePython3Bin "nx_cal_dicos" {
|
||||||
|
libraries = with pkgs.python3Packages; [
|
||||||
|
ics
|
||||||
|
];
|
||||||
|
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
||||||
|
} /* python */ ''
|
||||||
|
import os
|
||||||
|
from glob import glob
|
||||||
|
from ics import Calendar
|
||||||
|
from ics.event import datetime
|
||||||
|
|
||||||
|
NETTO_STUNDE = 18.46
|
||||||
|
WEEKLY = 12
|
||||||
|
|
||||||
|
week_dict = {}
|
||||||
|
latest_week = 0
|
||||||
|
latest_goal = WEEKLY
|
||||||
|
deficit = 0
|
||||||
|
|
||||||
|
def fraction_to_unicode(frac):
|
||||||
|
div, rem = divmod(frac, 1)
|
||||||
|
if rem == 0.5:
|
||||||
|
unicode = "½"
|
||||||
|
elif rem == 0.25:
|
||||||
|
unicode = "¼"
|
||||||
|
elif rem == 0.75:
|
||||||
|
unicode = "¾"
|
||||||
|
elif rem == 0:
|
||||||
|
unicode = ""
|
||||||
|
else:
|
||||||
|
unicode = rem
|
||||||
|
if div == 0:
|
||||||
|
h = ""
|
||||||
|
else:
|
||||||
|
h = int(div)
|
||||||
|
return f"{h}{unicode}"
|
||||||
|
|
||||||
|
def modify_event(event):
|
||||||
|
"""Modify the event if it contains 'DICOS' in the SUMMARY."""
|
||||||
|
global week_dict
|
||||||
|
global latest_goal
|
||||||
|
global latest_week
|
||||||
|
global deficit
|
||||||
|
|
||||||
|
if event.name and "DICOS" in event.name:
|
||||||
|
length = (event.end - event.begin).seconds / 3600
|
||||||
|
money_made = divmod(length * NETTO_STUNDE, 1)
|
||||||
|
|
||||||
|
# Calculate total hours for DICOS events in the same week
|
||||||
|
year, week, _ = event.begin.isocalendar()
|
||||||
|
|
||||||
|
if week != latest_week:
|
||||||
|
try:
|
||||||
|
deficit = latest_goal - week_dict[f"{year}_{latest_week}"]
|
||||||
|
except KeyError:
|
||||||
|
deficit = 0
|
||||||
|
|
||||||
|
week_dict[f"{year}_{week}"] = length + (week_dict[f"{year}_{week}"] if f"{year}_{week}" in week_dict else 0)
|
||||||
|
|
||||||
|
progress = week_dict[f"{year}_{week}"]
|
||||||
|
goal = WEEKLY + deficit
|
||||||
|
|
||||||
|
if week != latest_week:
|
||||||
|
latest_goal = goal
|
||||||
|
latest_week = week
|
||||||
|
|
||||||
|
progress_line = f"({fraction_to_unicode(progress)}/{fraction_to_unicode(goal)})"
|
||||||
|
|
||||||
|
event.description = f"Netto: {money_made[0]:.0f},{int(money_made[1] * 10):02d}€\nThis weeks porgress: {progress_line}\nThis weeks deficit: {fraction_to_unicode(deficit)}"
|
||||||
|
event.name = f"DICOS {fraction_to_unicode(length)}"
|
||||||
|
return event
|
||||||
|
|
||||||
|
def process_ics_file(filepath):
|
||||||
|
"""Read, modify, and overwrite an ICS file."""
|
||||||
|
with open(filepath, 'r') as f:
|
||||||
|
calendar = Calendar(f.read())
|
||||||
|
|
||||||
|
modified = False
|
||||||
|
|
||||||
|
for event in calendar.events:
|
||||||
|
if 'DICOS' in event.name:
|
||||||
|
event = modify_event(event)
|
||||||
|
modified = True
|
||||||
|
|
||||||
|
if modified:
|
||||||
|
with open(filepath, 'w') as f:
|
||||||
|
f.writelines(calendar.serialize_iter())
|
||||||
|
|
||||||
|
def get_event_start_time(filepath):
|
||||||
|
"""Extract the event's start time from an ICS file."""
|
||||||
|
with open(filepath, 'r') as f:
|
||||||
|
calendar = Calendar(f.read())
|
||||||
|
|
||||||
|
for event in calendar.events:
|
||||||
|
return event.begin.datetime
|
||||||
|
else:
|
||||||
|
return datetime(year=1, month=1, day=1)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
directory = "/var/lib/radicale/collections/collection-root/nx2/experience"
|
||||||
|
ics_files = glob(os.path.join(directory, "*.ics"))
|
||||||
|
if not ics_files:
|
||||||
|
print("No ICS files found in the directory.")
|
||||||
|
sorted_files = sorted(ics_files, key=get_event_start_time)
|
||||||
|
for ics_file in sorted_files:
|
||||||
|
process_ics_file(ics_file)
|
||||||
|
print("Processing complete.")
|
||||||
|
'');
|
||||||
|
in ''
|
||||||
|
${nx_cal_dicos}/bin/nx_cal_dicos
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "radicale";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
97
system-modules/calendar-lec.nix
Normal file
97
system-modules/calendar-lec.nix
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
{ config, pkgs, user, domain, ... }:
|
||||||
|
{
|
||||||
|
systemd.timers."nx_cal_lec" = {
|
||||||
|
enable = true;
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnBootSec = "40m";
|
||||||
|
OnUnitActiveSec = "24h";
|
||||||
|
Unit = "nx_cal_lec.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services."nx_cal_lec" = {
|
||||||
|
script = let
|
||||||
|
nx_cal_lec = (pkgs.writers.writePython3Bin "nx_cal_lec" {
|
||||||
|
libraries = with pkgs.python3Packages; [
|
||||||
|
ical
|
||||||
|
ics
|
||||||
|
requests
|
||||||
|
dateutils
|
||||||
|
];
|
||||||
|
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
||||||
|
} /*python */ ''
|
||||||
|
import hashlib
|
||||||
|
from ics import Calendar
|
||||||
|
import requests
|
||||||
|
from datetime import timedelta
|
||||||
|
|
||||||
|
def get_event_hash(event):
|
||||||
|
"""
|
||||||
|
Generate a unique hash for an event based on its details.
|
||||||
|
"""
|
||||||
|
event_data = f"{event.name}{event.begin}{event.end}{event.description}"
|
||||||
|
return hashlib.md5(event_data.encode('utf-8')).hexdigest()
|
||||||
|
|
||||||
|
def adjust_events(events):
|
||||||
|
"""
|
||||||
|
Adjust overlapping events to ensure they do not conflict.
|
||||||
|
"""
|
||||||
|
sorted_events = sorted(events, key=lambda e: e.begin)
|
||||||
|
for i in range(1, len(sorted_events)):
|
||||||
|
previous_event = sorted_events[i - 1]
|
||||||
|
current_event = sorted_events[i]
|
||||||
|
|
||||||
|
if current_event.begin < previous_event.end:
|
||||||
|
# Adjust the start time of the current event to just after the previous event
|
||||||
|
current_event.begin = previous_event.end + timedelta(minutes=1)
|
||||||
|
print(f"Adjusted event '{current_event.name}' to start at {current_event.begin} and end at {current_event.end}")
|
||||||
|
return sorted_events
|
||||||
|
|
||||||
|
def fetch_and_save_ical_events(ical_url, save_path):
|
||||||
|
"""
|
||||||
|
Fetch events from an iCal URL and save them as a single combined calendar.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
# Fetch the iCal data
|
||||||
|
response = requests.get(ical_url)
|
||||||
|
response.raise_for_status()
|
||||||
|
|
||||||
|
# Parse the iCal data
|
||||||
|
calendar = Calendar(response.text)
|
||||||
|
|
||||||
|
# Adjust events
|
||||||
|
adjusted_events = adjust_events(list(calendar.events))
|
||||||
|
|
||||||
|
# Create a new combined calendar
|
||||||
|
combined_calendar = Calendar()
|
||||||
|
for event in adjusted_events:
|
||||||
|
combined_calendar.events.add(event)
|
||||||
|
|
||||||
|
# Save the combined calendar to a single .ics file
|
||||||
|
with open(save_path, 'w') as file:
|
||||||
|
file.writelines(combined_calendar.serialize_iter())
|
||||||
|
|
||||||
|
print(f"Saved combined calendar to {save_path}")
|
||||||
|
|
||||||
|
except requests.exceptions.RequestException as e:
|
||||||
|
print(f"Error fetching iCal data: {e}")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error processing iCal data: {e}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Replace with your iCal URL and target file path
|
||||||
|
ICAL_URL = "https://zlypher.github.io/lol-events/cal/league-of-legends-lec.ical"
|
||||||
|
SAVE_PATH = "${config.services.nginx.virtualHosts."${domain}".root}/lec.ics"
|
||||||
|
|
||||||
|
fetch_and_save_ical_events(ICAL_URL, SAVE_PATH)
|
||||||
|
'');
|
||||||
|
in ''
|
||||||
|
${nx_cal_lec}/bin/nx_cal_lec
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "nx2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
138
system-modules/calendar-publish.nix
Normal file
138
system-modules/calendar-publish.nix
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
{ config, pkgs, user, ... }:
|
||||||
|
let
|
||||||
|
radicale-root = "/var/lib/radicale";
|
||||||
|
web-root = "/var/nginx/webroot";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
systemd.timers."nx_cal_publish" = {
|
||||||
|
enable = true;
|
||||||
|
wantedBy = [ "timers.target" ];
|
||||||
|
timerConfig = {
|
||||||
|
OnBootSec = "2m";
|
||||||
|
OnUnitActiveSec = "6h";
|
||||||
|
Unit = "nx_cal_publish.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services."nx_cal_publish" = {
|
||||||
|
script = with pkgs; let
|
||||||
|
nx_cal_publish = (writers.writePython3Bin "nx_cal_publish" {
|
||||||
|
libraries = with python3Packages; [
|
||||||
|
ical
|
||||||
|
ics
|
||||||
|
requests
|
||||||
|
dateutils
|
||||||
|
];
|
||||||
|
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
||||||
|
} /*python */ ''
|
||||||
|
import pytz
|
||||||
|
import os
|
||||||
|
from ics import Calendar, Event
|
||||||
|
from ics.grammar.parse import ContentLine
|
||||||
|
from dateutil.rrule import rrulestr
|
||||||
|
from ics.event import datetime, timedelta
|
||||||
|
|
||||||
|
def combine_ics_from_directories(directories, output_file):
|
||||||
|
"""
|
||||||
|
Combine all .ics events from a list of directories into one .ics file, supporting recurring events.
|
||||||
|
|
||||||
|
:param directories: List of directories containing .ics files.
|
||||||
|
:param output_file: Path to the output .ics file.
|
||||||
|
"""
|
||||||
|
combined_calendar = Calendar()
|
||||||
|
|
||||||
|
for directory in directories:
|
||||||
|
if not os.path.exists(directory):
|
||||||
|
print(f"Directory '{directory}' does not exist. Skipping.")
|
||||||
|
continue
|
||||||
|
|
||||||
|
for filename in os.listdir(directory):
|
||||||
|
if filename.endswith(".ics"):
|
||||||
|
file_path = os.path.join(directory, filename)
|
||||||
|
try:
|
||||||
|
with open(file_path, 'r') as file:
|
||||||
|
calendar = Calendar(file.read())
|
||||||
|
for event in calendar.events:
|
||||||
|
# Handle recurring events
|
||||||
|
rrule_line = None
|
||||||
|
for line in event.extra:
|
||||||
|
if isinstance(line, ContentLine) and line.name == "RRULE":
|
||||||
|
rrule_line = line
|
||||||
|
break
|
||||||
|
|
||||||
|
if rrule_line:
|
||||||
|
# Convert UNTIL to UTC if DTSTART is timezone-aware
|
||||||
|
rrule_params = rrule_line.value.split(";")
|
||||||
|
rrule_dict = {}
|
||||||
|
for param in rrule_params:
|
||||||
|
key, value = param.split("=")
|
||||||
|
rrule_dict[key] = value
|
||||||
|
|
||||||
|
if "UNTIL" in rrule_dict and event.begin.tzinfo:
|
||||||
|
until = datetime.fromisoformat(rrule_dict["UNTIL"])
|
||||||
|
if until.tzinfo is None: # If UNTIL is naive, make it UTC
|
||||||
|
until = until.astimezone(pytz.UTC)
|
||||||
|
rrule_dict["UNTIL"] = until.astimezone(pytz.UTC).strftime("%Y%m%dT%H%M%SZ")
|
||||||
|
|
||||||
|
# Reconstruct RRULE string
|
||||||
|
rrule_fixed = ";".join(f"{key}={value}" for key, value in rrule_dict.items())
|
||||||
|
rrule = rrulestr(rrule_fixed, dtstart=event.begin.astimezone(pytz.timezone('CET')))
|
||||||
|
|
||||||
|
# Expand recurring events and filter based on the date
|
||||||
|
for occurrence in rrule:
|
||||||
|
notTooOld = occurrence.date() >= (datetime.now().astimezone(pytz.UTC) - timedelta(days=1)).date()
|
||||||
|
notTooFuturisic = occurrence.date() < (datetime.now().astimezone(pytz.UTC) + timedelta(days=60)).date()
|
||||||
|
if notTooOld and notTooFuturisic:
|
||||||
|
new_event = Event(
|
||||||
|
name="",
|
||||||
|
begin=occurrence,
|
||||||
|
end=occurrence + (event.end - event.begin),
|
||||||
|
transparent=event.transparent or True,
|
||||||
|
)
|
||||||
|
combined_calendar.events.add(new_event)
|
||||||
|
else:
|
||||||
|
# Regular events, directly add if within date range
|
||||||
|
if event.begin.astimezone(pytz.timezone('CET')).date() >= (datetime.now().astimezone(pytz.timezone('CET')) - timedelta(days=1)).date():
|
||||||
|
new_event = Event(
|
||||||
|
name="",
|
||||||
|
begin=event.begin,
|
||||||
|
end=event.end,
|
||||||
|
transparent=event.transparent or True,
|
||||||
|
)
|
||||||
|
combined_calendar.events.add(new_event)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error reading file '{file_path}': {e}")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
try:
|
||||||
|
with open(output_file, 'w') as file:
|
||||||
|
file.writelines(combined_calendar.serialize_iter())
|
||||||
|
print(f"Combined .ics file saved to '{output_file}'")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Error saving combined .ics file: {e}")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# List of directories containing .ics files
|
||||||
|
DIRECTORIES = [
|
||||||
|
"${radicale-root}/collections/collection-root/${user}/preservation",
|
||||||
|
"${radicale-root}/collections/collection-root/${user}/effort",
|
||||||
|
"${radicale-root}/collections/collection-root/${user}/experience",
|
||||||
|
"${radicale-root}/collections/collection-root/${user}/exposure",
|
||||||
|
"${radicale-root}/collections/collection-root/${user}/engagement",
|
||||||
|
]
|
||||||
|
|
||||||
|
# Path to the output .ics file
|
||||||
|
OUTPUT_FILE = "${web-root}/schedule.ics"
|
||||||
|
|
||||||
|
combine_ics_from_directories(DIRECTORIES, OUTPUT_FILE)
|
||||||
|
'');
|
||||||
|
in ''
|
||||||
|
${nx_cal_publish}/bin/nx_cal_publish
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
User = "nx2";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
11
system-modules/calendar.nix
Normal file
11
system-modules/calendar.nix
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
services = {
|
||||||
|
gnome = {
|
||||||
|
evolution-data-server.enable = true; # optional to use google/nextcloud calendar
|
||||||
|
gnome-online-accounts.enable = true; # optional to use google/nextcloud calendar
|
||||||
|
gnome-keyring.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
0
system-modules/davmail.nix
Executable file → Normal file
0
system-modules/davmail.nix
Executable file → Normal file
0
system-modules/dm.nix
Executable file → Normal file
0
system-modules/dm.nix
Executable file → Normal file
0
system-modules/docker.nix
Executable file → Normal file
0
system-modules/docker.nix
Executable file → Normal file
@@ -7,7 +7,8 @@
|
|||||||
{
|
{
|
||||||
fonts.packages = with pkgs; [
|
fonts.packages = with pkgs; [
|
||||||
noto-fonts
|
noto-fonts
|
||||||
noto-fonts-cjk
|
noto-fonts-cjk-sans
|
||||||
|
noto-fonts-cjk-serif
|
||||||
noto-fonts-emoji
|
noto-fonts-emoji
|
||||||
newcomputermodern
|
newcomputermodern
|
||||||
atkinson-hyperlegible
|
atkinson-hyperlegible
|
||||||
|
|||||||
0
system-modules/fuse.nix
Executable file → Normal file
0
system-modules/fuse.nix
Executable file → Normal file
15
system-modules/games.nix
Normal file
15
system-modules/games.nix
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{ lib, host, ... }:
|
||||||
|
lib.mkIf (host == "NxNORTH" || host == "NxACE")
|
||||||
|
{
|
||||||
|
programs = {
|
||||||
|
steam = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
gamemode = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
gamescope = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
6
system-modules/hardware-configuration.nix
Executable file → Normal file
6
system-modules/hardware-configuration.nix
Executable file → Normal file
@@ -42,11 +42,11 @@
|
|||||||
boot.initrd.kernelModules = if host == "NxXPS" then [ "i915" ] else [];
|
boot.initrd.kernelModules = if host == "NxXPS" then [ "i915" ] else [];
|
||||||
|
|
||||||
environment.variables = if host == "NxXPS" then {
|
environment.variables = if host == "NxXPS" then {
|
||||||
VDPAU_DRIVER = lib.mkIf config.hardware.opengl.enable (lib.mkDefault "va_gl");
|
VDPAU_DRIVER = lib.mkIf config.hardware.graphics.enable (lib.mkDefault "va_gl");
|
||||||
} else {};
|
} else {};
|
||||||
|
|
||||||
hardware.opengl.extraPackages = if host == "NxXPS" then with pkgs; [
|
hardware.graphics.extraPackages = if host == "NxXPS" then with pkgs; [
|
||||||
(if (lib.versionOlder (lib.versions.majorMinor lib.version) "24.05") then vaapiIntel else intel-vaapi-driver)
|
(if (lib.versionOlder (lib.versions.majorMinor lib.version) "24.11") then vaapiIntel else intel-vaapi-driver)
|
||||||
libvdpau-va-gl
|
libvdpau-va-gl
|
||||||
intel-media-driver
|
intel-media-driver
|
||||||
] else [];
|
] else [];
|
||||||
|
|||||||
33
system-modules/health_reminder.nix
Executable file → Normal file
33
system-modules/health_reminder.nix
Executable file → Normal file
@@ -1,4 +1,4 @@
|
|||||||
{ config, pkgs, lib, host, ... }:
|
{ pkgs, lib, host, ... }:
|
||||||
lib.mkIf (host != "NxACE")
|
lib.mkIf (host != "NxACE")
|
||||||
{
|
{
|
||||||
systemd.timers."health_reminder" = {
|
systemd.timers."health_reminder" = {
|
||||||
@@ -11,11 +11,10 @@ lib.mkIf (host != "NxACE")
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services."health_reminder" =
|
systemd.services."health_reminder" = let
|
||||||
let
|
hm = pkgs.writers.writePython3Bin "health_reminder" {
|
||||||
hm =
|
flakeIgnore = [ "E302" "E305" "E226" "E501" ];
|
||||||
let p = /*python*/ ''
|
} /*python*/ ''
|
||||||
#!${pkgs.python3}/bin/python3
|
|
||||||
import random
|
import random
|
||||||
import re
|
import re
|
||||||
|
|
||||||
@@ -35,25 +34,21 @@ lib.mkIf (host != "NxACE")
|
|||||||
return action
|
return action
|
||||||
|
|
||||||
actions = [
|
actions = [
|
||||||
Action("look away for %o Seconds!",300, ["10", "15"] ),
|
Action(action="look away for %o Seconds!", likelihood=300, options=["10", "15"]),
|
||||||
Action("Posture Check!", 90 ),
|
Action(action="Posture Check!", likelihood=300),
|
||||||
Action("Do %o Biceps curls!", 5, ["50", "100", "150"] ),
|
Action(action="Strech your upper body!", likelihood=20),
|
||||||
Action("Do %o Shourlder thingees", 5, ["40 + 40", "50", "60"]),
|
Action(action="Strech your core!", likelihood=10),
|
||||||
Action("Plank for %o senonds!", 5, ["60", "60", "70"] ),
|
Action(action="Strech your legs!", likelihood=10),
|
||||||
Action("Strech your upper body!", 20 ),
|
Action(action="Strech your arms/hands!", likelihood=10),
|
||||||
Action("Strech your core!", 10 ),
|
Action(action="Make Tea!", likelihood=5),
|
||||||
Action("Strech your legs!", 10 ),
|
Action(action="说现在中文的时间!", likelihood=2),
|
||||||
Action("Make Tea!", 5 ),
|
|
||||||
Action("Touch Grass!", 5 )
|
|
||||||
]
|
]
|
||||||
|
|
||||||
total_likelihood = sum(a.likelihood for a in actions)
|
total_likelihood = sum(a.likelihood for a in actions)
|
||||||
random_action = random.choices(actions, [a.likelihood for a in actions], k=1)[0]
|
random_action = random.choices(actions, [a.likelihood for a in actions], k=1)[0]
|
||||||
print(random_action)
|
print(random_action)
|
||||||
'';
|
'';
|
||||||
in pkgs.writeScriptBin "health_reminder" p;
|
in {
|
||||||
in
|
|
||||||
{
|
|
||||||
script = ''
|
script = ''
|
||||||
set -eu
|
set -eu
|
||||||
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/bus"
|
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$UID/bus"
|
||||||
|
|||||||
0
system-modules/hsmw.nix
Executable file → Normal file
0
system-modules/hsmw.nix
Executable file → Normal file
2
system-modules/networking.nix
Executable file → Normal file
2
system-modules/networking.nix
Executable file → Normal file
@@ -17,6 +17,8 @@
|
|||||||
firewall.allowedTCPPorts = [
|
firewall.allowedTCPPorts = [
|
||||||
80
|
80
|
||||||
443
|
443
|
||||||
|
8000
|
||||||
|
8080
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
|
|||||||
7
system-modules/nvidia.nix
Executable file → Normal file
7
system-modules/nvidia.nix
Executable file → Normal file
@@ -57,11 +57,10 @@ lib.mkIf nvidia.enable
|
|||||||
nvidiaSettings = true;
|
nvidiaSettings = true;
|
||||||
|
|
||||||
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
# Optionally, you may need to select the appropriate driver version for your specific GPU.
|
||||||
package = config.boot.kernelPackages.nvidiaPackages.beta; };
|
package = config.boot.kernelPackages.nvidiaPackages.beta;
|
||||||
opengl = {
|
};
|
||||||
|
graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
driSupport = true;
|
|
||||||
driSupport32Bit = true;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,186 +1,120 @@
|
|||||||
{ config, pkgs, domain, secrets, ... }:
|
{ config, pkgs, user, domain, secrets, ... }:
|
||||||
|
let dns-user = "cloudflare"; in
|
||||||
{
|
{
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
"nx2site/namecheap.pw" = { };
|
# "nx2site/namecheap.pw" = { };
|
||||||
# "nx2site/cloudflare/api-token-dns-edit" = { };
|
# "nx2site/cloudflare/api-token-dns-edit" = { };
|
||||||
"nx2site/cloudflare/global-api-key" = { };
|
"nx2site/cloudflare/global-api-key" = {
|
||||||
|
owner = dns-user;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users = {
|
||||||
|
users = {
|
||||||
|
"${dns-user}" = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = dns-user;
|
||||||
|
};
|
||||||
|
"${user}".extraGroups = [ dns-user ];
|
||||||
|
};
|
||||||
|
groups."${dns-user}" = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd = {
|
systemd = {
|
||||||
timers."dynamic-dns" = {
|
timers."dynamic-dns" = {
|
||||||
wantedBy = [ "timers.target" ];
|
wantedBy = [ "timers.target" ];
|
||||||
timerConfig = {
|
timerConfig = {
|
||||||
OnBootSec = "2m";
|
OnBootSec = "1m";
|
||||||
OnUnitActiveSec = "10m";
|
OnUnitActiveSec = "10m";
|
||||||
Unit = "dynamic-dns.service";
|
Unit = "dynamic-dns.service";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
services."dynamic-dns" = let
|
services."dynamic-dns" = {
|
||||||
u = let
|
script = let
|
||||||
|
dyn-dns = let
|
||||||
account_id = secrets.email.gmail-online.mail;
|
account_id = secrets.email.gmail-online.mail;
|
||||||
zone_id = "33fecab36e060f49d492127345ea95a0";
|
zone_id = "33fecab36e060f49d492127345ea95a0";
|
||||||
record_id = {
|
record_id = { # curl --request GET --url https://api.cloudflare.com/client/v4/zones/33fecab36e060f49d492127345ea95a0/dns_records --header 'Content-Type: application/json' --header 'X-Auth-Email: <hidden>@gmail.com' --header "X-Auth-Key: <hiddenreadinsops>" -s | jq
|
||||||
base = "58d3412e8d88889d1a611b3669f0700f";
|
base = "58d3412e8d88889d1a611b3669f0700f";
|
||||||
sub = "fc861353142bc05d5dbad1799178e6a1";
|
|
||||||
base6 = "d1b90e21d2d747dcb30448bd65312927";
|
base6 = "d1b90e21d2d747dcb30448bd65312927";
|
||||||
|
sub = "fc861353142bc05d5dbad1799178e6a1";
|
||||||
sub6 = "b8082b7afe9e80971fc9f9dda16ec284";
|
sub6 = "b8082b7afe9e80971fc9f9dda16ec284";
|
||||||
|
ssh = "c0f14f17f32d6595c202f041dd836eb3";
|
||||||
|
ssh6 = "f1ecb2d9d0522d4eec06437688ca76da";
|
||||||
};
|
};
|
||||||
passord-file-path = config.sops.secrets."nx2site/cloudflare/global-api-key".path;
|
passord-file-path = config.sops.secrets."nx2site/cloudflare/global-api-key".path;
|
||||||
log-file-path = "/var/log/couldflare.log";
|
|
||||||
count-file-path = "/var/log/cloudflare-count.txt";
|
|
||||||
in pkgs.writers.writePython3Bin "dyn_dns" {
|
in pkgs.writers.writePython3Bin "dyn_dns" {
|
||||||
libraries = with pkgs.python311Packages; [ requests ];
|
libraries = with pkgs.python3Packages; [ requests ];
|
||||||
flakeIgnore = [ "E501" "E305" "E701" "E704" "E302" "E114" "F841" "E121" "E261" "E303"];
|
flakeIgnore = [ "E302" "E305" "E226" "E501" "E261" ];
|
||||||
} /* python */ ''
|
} /* python */ ''
|
||||||
import requests
|
import requests
|
||||||
import subprocess
|
import subprocess
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
def get_public_ip(ipv6=False):
|
def get_public_ip(ipv6: bool = False) -> str:
|
||||||
return subprocess.run(['${pkgs.curl}/bin/curl', '-s', '-6' if ipv6 else '-4', 'https://ifconfig.me'], capture_output=True, text=True).stdout.strip()
|
return subprocess.run(['${pkgs.curl}/bin/curl', '-s', '-6' if ipv6 else '-4', 'https://ifconfig.me'], capture_output=True, text=True).stdout.strip()
|
||||||
|
|
||||||
def main():
|
def update_record(record_id: str, record_name: str, ip: str, type: str, proxied: bool, pw: str) -> None:
|
||||||
|
return requests.patch(
|
||||||
|
f'https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/{record_id}',
|
||||||
|
headers={
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'X-Auth-Email': '${account_id}',
|
||||||
|
'X-Auth-Key': pw
|
||||||
|
},
|
||||||
|
json={
|
||||||
|
"comment": "Domain verification record",
|
||||||
|
"name": record_name,
|
||||||
|
"proxied": proxied,
|
||||||
|
"settings": {},
|
||||||
|
"tags": [],
|
||||||
|
"ttl": 1, # automatic
|
||||||
|
"content": ip,
|
||||||
|
"type": type
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
def main():
|
||||||
my_ip = get_public_ip()
|
my_ip = get_public_ip()
|
||||||
my_ip6 = get_public_ip(ipv6=True)
|
my_ip6 = get_public_ip(ipv6=True)
|
||||||
|
|
||||||
with open("${count-file-path}", "r") as f:
|
|
||||||
content = f.read()
|
|
||||||
if content == "": count = 0
|
|
||||||
else: count = int(content)
|
|
||||||
count += 1
|
|
||||||
with open("${count-file-path}", "w") as f:
|
|
||||||
f.write(str(count))
|
|
||||||
|
|
||||||
# 4
|
|
||||||
with open("${passord-file-path}", 'r') as pw_file:
|
with open("${passord-file-path}", 'r') as pw_file:
|
||||||
pw = pw_file.read().strip()
|
pw = pw_file.read().strip()
|
||||||
|
|
||||||
# Perform DNS updates
|
# Perform DNS updates
|
||||||
# https://developers.cloudflare.com/api/operations/dns-records-for-a-zone-update-dns-record
|
# https://developers.cloudflare.com/api/operations/dns-records-for-a-zone-update-dns-record
|
||||||
resp_base = requests.patch(
|
print(f"${domain}: {update_record(record_id="${record_id.base}", record_name="${domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}")
|
||||||
'https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${record_id.base}',
|
print(f"*.${domain}: {update_record(record_id="${record_id.sub}", record_name="*.${domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}")
|
||||||
headers={
|
print(f"ssh.${domain}: {update_record(record_id="${record_id.ssh}", record_name="ssh.${domain}", ip=my_ip, type="A", proxied=False, pw=pw).status_code}")
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'X-Auth-Email': '${account_id}',
|
|
||||||
'X-Auth-Key': pw
|
|
||||||
},
|
|
||||||
json={
|
|
||||||
"comment": "Domain verification record",
|
|
||||||
"name": "${domain}",
|
|
||||||
"proxied": True,
|
|
||||||
"settings": {},
|
|
||||||
"tags": [],
|
|
||||||
"ttl": 1, # automatic
|
|
||||||
"content": my_ip,
|
|
||||||
"type": "A"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
resp_subd = requests.patch(
|
print(f"${domain}: {update_record(record_id="${record_id.base6}", record_name="${domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}")
|
||||||
'https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${record_id.sub}',
|
print(f"*.${domain}: {update_record(record_id="${record_id.sub6}", record_name="*.${domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}")
|
||||||
headers={
|
print(f"ssh.${domain}: {update_record(record_id="${record_id.ssh6}", record_name="ssh.${domain}", ip=my_ip6, type="AAAA", proxied=False, pw=pw).status_code}")
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'X-Auth-Email': '${account_id}',
|
|
||||||
'X-Auth-Key': pw
|
|
||||||
},
|
|
||||||
json={
|
|
||||||
"comment": "Domain verification record",
|
|
||||||
"name": "${domain}",
|
|
||||||
"proxied": True,
|
|
||||||
"settings": {},
|
|
||||||
"tags": [],
|
|
||||||
"ttl": 1, # automatic
|
|
||||||
"content": my_ip,
|
|
||||||
"type": "A"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
if resp_base.status_code != 200:
|
if __name__ == "__main__":
|
||||||
print(resp_base.text)
|
|
||||||
|
|
||||||
|
|
||||||
now_str = datetime.now().strftime('%Y/%m/%d-%R')
|
|
||||||
log_entry = f"At {now_str} - to {my_ip} - Response {resp_base.status_code}\n"
|
|
||||||
print(log_entry, end="")
|
|
||||||
with open("${log-file-path}", 'a') as log_file:
|
|
||||||
log_file.write(log_entry)
|
|
||||||
|
|
||||||
# Perform DNS updates
|
|
||||||
# https://developers.cloudflare.com/api/operations/dns-records-for-a-zone-update-dns-record
|
|
||||||
resp_base = requests.patch(
|
|
||||||
'https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${record_id.base6}',
|
|
||||||
headers={
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'X-Auth-Email': '${account_id}',
|
|
||||||
'X-Auth-Key': pw
|
|
||||||
},
|
|
||||||
json={
|
|
||||||
"comment": "Domain verification record",
|
|
||||||
"name": "${domain}",
|
|
||||||
"proxied": True,
|
|
||||||
"settings": {},
|
|
||||||
"tags": [],
|
|
||||||
"ttl": 1, # automatic
|
|
||||||
"content": my_ip6,
|
|
||||||
"type": "AAAA"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
resp_subd = requests.patch(
|
|
||||||
'https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${record_id.sub6}',
|
|
||||||
headers={
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'X-Auth-Email': '${account_id}',
|
|
||||||
'X-Auth-Key': pw
|
|
||||||
},
|
|
||||||
json={
|
|
||||||
"comment": "Domain verification record",
|
|
||||||
"name": "${domain}",
|
|
||||||
"proxied": True,
|
|
||||||
"settings": {},
|
|
||||||
"tags": [],
|
|
||||||
"ttl": 1, # automatic
|
|
||||||
"content": my_ip6,
|
|
||||||
"type": "AAAA"
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
if resp_base.status_code != 200:
|
|
||||||
print(resp_base.text)
|
|
||||||
|
|
||||||
|
|
||||||
now_str = datetime.now().strftime('%Y/%m/%d-%R')
|
|
||||||
log_entry = f"At {now_str} - to {my_ip6} - Response {resp_base.status_code}\n"
|
|
||||||
print(log_entry, end="")
|
|
||||||
with open("${log-file-path}", 'a') as log_file: log_file.write(log_entry)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
main()
|
||||||
'';
|
''; in /* bash */ ''
|
||||||
in {
|
set -e
|
||||||
script = ''
|
${dyn-dns}/bin/dyn_dns
|
||||||
set -eu
|
|
||||||
${u}/bin/dyn_dns
|
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
User = "root";
|
User = dns-user;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
networking.hosts = { # docker network inspect nx2site_default | grep -E "Name|IPv4" | tr "\n" " " | sed -r 's- +- -g;s-\n?"Name": -\n-g' | sed -r '1d;2d;s-"(.+?)", "IPv4Address": "(.+)/16",- "\2" = [ "\1.docker" ];-g'
|
# networking.hosts = { # docker network inspect nx2site_default | grep -E "Name|IPv4" | tr "\n" " " | sed -r 's- +- -g;s-\n?"Name": -\n-g' | sed -r '1d;2d;s-"(.+?)", "IPv4Address": "(.+)/16",- "\2" = [ "\1.docker" ];-g'
|
||||||
# "172.1.2.1" = [ "staticweb.docker" ];
|
# "172.1.2.1" = [ "staticweb.docker" ];
|
||||||
# "172.1.3.1" = [ "matrix.docker" ];
|
# "172.1.3.1" = [ "matrix.docker" ];
|
||||||
# "172.1.0.9" = [ "matrixdb.docker" ];
|
# "172.1.0.9" = [ "matrixdb.docker" ];
|
||||||
# "172.1.4.1" = [ "matrix-ss.docker" ];
|
# "172.1.4.1" = [ "matrix-ss.docker" ];
|
||||||
# "172.1.0.7" = [ "matrix-ssdb.docker" ];
|
# "172.1.0.7" = [ "matrix-ssdb.docker" ];
|
||||||
"172.1.5.1" = [ "pw.docker" ];
|
# "172.1.5.1" = [ "pw.docker" ];
|
||||||
"172.1.6.1" = [ "git.docker" ];
|
# "172.1.6.1" = [ "git.docker" ];
|
||||||
# "172.1.0.10" = [ "gitdb.docker" ];
|
# "172.1.0.10" = [ "gitdb.docker" ];
|
||||||
# "172.1.7.1" = [ "nn.docker" ];
|
# "172.1.7.1" = [ "nn.docker" ];
|
||||||
# "172.1.8.1" = [ "llm.docker" ];
|
# "172.1.8.1" = [ "llm.docker" ];
|
||||||
# "172.1.9.1" = [ "proxy.docker" ];
|
# "172.1.9.1" = [ "proxy.docker" ];
|
||||||
# "172.1.10.1" = [ "share.docker" ];
|
# "172.1.10.1" = [ "share.docker" ];
|
||||||
# "172.1.11.1" = [ "odq.docker" ];
|
# "172.1.11.1" = [ "odq.docker" ];
|
||||||
};
|
# };
|
||||||
}
|
}
|
||||||
|
|||||||
14
system-modules/nx2site/audiobookshelf.nix
Normal file
14
system-modules/nx2site/audiobookshelf.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
audiobookshelf = {
|
||||||
|
# authentication is mangaed imperatively in the web interface upon first start
|
||||||
|
enable = true;
|
||||||
|
# user = "audiobookshelf";
|
||||||
|
# group = "audiobookshelf";
|
||||||
|
# host = "127.0.0.1";
|
||||||
|
port = 11648; # spells out audi(o)
|
||||||
|
package = pkgs.audiobookshelf;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,26 +1,38 @@
|
|||||||
{ config, pkgs-unstable, domain, ... }:
|
{ config, pkgs, secrets, user, domain, ... }:
|
||||||
|
let git-user = "git"; in
|
||||||
{
|
{
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
"postgres-pw" = { owner = "gitea"; };
|
"postgres-pw" = { owner = config.services.gitea.user; };
|
||||||
|
};
|
||||||
|
|
||||||
|
users = {
|
||||||
|
users = {
|
||||||
|
"${user}".extraGroups = [ git-user ];
|
||||||
|
"${git-user}" = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = git-user;
|
||||||
|
useDefaultShell = true;
|
||||||
|
home = config.services.gitea.stateDir;
|
||||||
|
openssh.authorizedKeys.keys = config.users.users."${user}".openssh.authorizedKeys.keys;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
groups."${git-user}" = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.gitea = {
|
services.gitea = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs-unstable.gitea;
|
package = pkgs.gitea;
|
||||||
group = "gitea"; # default
|
group = git-user;
|
||||||
user = "gitea"; # default
|
user = git-user;
|
||||||
appName = "NxGit";
|
appName = "NxGit";
|
||||||
stateDir = "/var/lib/gitea"; # default
|
stateDir = "/var/lib/gitea"; # default
|
||||||
useWizard = false; # default
|
useWizard = false; # default
|
||||||
# camoHmacKeyFile = ;
|
# camoHmacKeyFile = ;
|
||||||
customDir = "${config.services.gitea.stateDir}/custom"; # default
|
|
||||||
database = {
|
database = {
|
||||||
createDatabase = false; # default
|
createDatabase = false; # default
|
||||||
host = "127.0.0.1"; # default
|
host = config.services.postgresql.settings.listen_addresses;
|
||||||
port = 5432;
|
port = config.services.postgresql.settings.port;
|
||||||
passwordFile = config.sops.secrets."postgres-pw".path;
|
passwordFile = config.sops.secrets."postgres-pw".path;
|
||||||
# path = "${config.services.gitea.stateDir}/data/gitea.db"; # default
|
|
||||||
# socket = "/run/postgresql";
|
|
||||||
socket = null;
|
socket = null;
|
||||||
type = "postgres";
|
type = "postgres";
|
||||||
name = "gitea"; # default
|
name = "gitea"; # default
|
||||||
@@ -28,37 +40,35 @@
|
|||||||
};
|
};
|
||||||
dump = {
|
dump = {
|
||||||
enable = true;
|
enable = true;
|
||||||
backupDir = "${config.services.gitea.stateDir}/dump"; # default
|
backupDir = "/var/backup/gitea";
|
||||||
file = null; # default
|
file = "gitea-dump.zip"; # default = chosen by gitea
|
||||||
interval = "daily";
|
interval = "daily";
|
||||||
type = "zip"; # default
|
type = "zip"; # default
|
||||||
};
|
};
|
||||||
extraConfig = null; # default
|
# extraConfig = null; # default
|
||||||
lfs = {
|
# lfs = {
|
||||||
enable = false; # default
|
# enable = false; # default
|
||||||
contentDir = "${config.services.gitea.stateDir}/data/lfs"; # default
|
# contentDir = "${config.services.gitea.stateDir}/data/lfs"; # default
|
||||||
};
|
# };
|
||||||
mailerPasswordFile = null; # default
|
# mailerPasswordFile = null; # default
|
||||||
metricsTokenFile = null; # default
|
# metricsTokenFile = null; # default
|
||||||
repositoryRoot = "${config.services.gitea.stateDir}/repositories"; # default
|
# repositoryRoot = "${config.services.gitea.stateDir}/repositories"; # default
|
||||||
settings = {
|
settings = {
|
||||||
log = {
|
log = {
|
||||||
LEVEL = "Info";
|
LEVEL = "Info";
|
||||||
# LEVEL = "Error";
|
# LEVEL = "Error";
|
||||||
ROOT_PATH = "${config.services.gitea.stateDir}/log"; # default
|
|
||||||
};
|
|
||||||
i18n = {
|
|
||||||
LANGS = "en-US";
|
|
||||||
};
|
};
|
||||||
server = {
|
server = {
|
||||||
DISABLE_SSH = false; # default
|
DISABLE_SSH = false; # default
|
||||||
SSH_PORT = 20022;
|
START_SSH_SERVER = false; # default
|
||||||
DOMAIN = "pw2.${domain}";
|
SSH_LISTEN_HOST = "0.0.0.0";
|
||||||
HTTP_ADDR = "http://${config.services.gitea.settings.server.DOMAIN}:${toString config.services.gitea.settings.server.HTTP_PORT}/";
|
SSH_PORT = secrets.ssh.port;
|
||||||
HTTP_PORT = 3000; # default
|
DOMAIN = "git.${domain}";
|
||||||
PROTOCOL = "http"; # default
|
SSH_DOMAIN = "ssh.${domain}";
|
||||||
ROOT_URL = "https:pw2.${domain}/"; # default
|
# HTTP_ADDR = "${config.services.gitea.settings.server.DOMAIN}";
|
||||||
STATIC_ROOT_PATH = "${config.services.gitea.stateDir}/static";
|
# HTTP_PORT = 3000; # default
|
||||||
|
# PROTOCOL = "http"; # default
|
||||||
|
ROOT_URL = "https://git.${domain}/"; # default
|
||||||
};
|
};
|
||||||
session = {
|
session = {
|
||||||
COOKIE_SECURE = true;
|
COOKIE_SECURE = true;
|
||||||
@@ -66,6 +76,31 @@
|
|||||||
service = {
|
service = {
|
||||||
DISABLE_REGISTRATION = true;
|
DISABLE_REGISTRATION = true;
|
||||||
};
|
};
|
||||||
|
ui = {
|
||||||
|
DEFAULT_THEME = "pitchblack";
|
||||||
|
THEMES = "gitea,arc-green,pitchblack";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
system.activationScripts = let
|
||||||
|
# theme = pkgs.fetchFromGitHub {
|
||||||
|
# owner = "unixtensor";
|
||||||
|
# repo = "Gitea-Pitch-Black";
|
||||||
|
# rev = "v1.15.X.2";
|
||||||
|
# hash = "sha256-Eibgoc3BJUXWdq8irgXea09fAvfKx2eQrJotp3P5DTg=";
|
||||||
|
# };
|
||||||
|
theme = pkgs.fetchFromGitea {
|
||||||
|
domain = "git.${domain}";
|
||||||
|
owner = "nx2";
|
||||||
|
repo = "Gitea-Pitch-Black";
|
||||||
|
rev = "0.1.0";
|
||||||
|
hash = "sha256-pU4YhgcPOT3PTcmBTjNE3FcyJgl39JGP41ckhRUKN7Y=";
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
"gitea-theme" = /* bash */ ''
|
||||||
|
mkdir -p ${config.services.gitea.stateDir}/custom/public/assets/css/
|
||||||
|
ln -fs ${theme}/theme-pitchblack.css ${config.services.gitea.stateDir}/custom/public/assets/css/theme-pitchblack.css
|
||||||
|
chown -R ${git-user}:${git-user} ${config.services.gitea.stateDir}/custom/
|
||||||
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
26
system-modules/nx2site/nextcloud.nix
Normal file
26
system-modules/nx2site/nextcloud.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{ config, domain, ... }:
|
||||||
|
{
|
||||||
|
sops.secrets = {
|
||||||
|
"nx2site/nextcloud/admin-pass" = { owner = "nextcloud"; };
|
||||||
|
"nx2site/nextcloud/db-pass" = { owner = "nextcloud"; };
|
||||||
|
# "nx2site/nextcloud/users-pass/nx2" = { owner = "nextcloud"; };
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
nextcloud = {
|
||||||
|
enable = true;
|
||||||
|
hostName = "nc.${domain}";
|
||||||
|
https = true;
|
||||||
|
configureRedis = true;
|
||||||
|
config = {
|
||||||
|
adminpassFile = config.sops.secrets."nx2site/nextcloud/admin-pass".path;
|
||||||
|
adminuser = "nx2";
|
||||||
|
|
||||||
|
dbtype = "pgsql";
|
||||||
|
# dbhost = config.services.postgresql.settings.port; # using usix socket
|
||||||
|
dbname = "nextcloud";
|
||||||
|
dbpassFile = config.sops.secrets."nx2site/nextcloud/db-pass".path;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
15
system-modules/nx2site/open-web-calendar.nix
Normal file
15
system-modules/nx2site/open-web-calendar.nix
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{ pkgs, domain, ... }:
|
||||||
|
{
|
||||||
|
services = {
|
||||||
|
open-web-calendar = {
|
||||||
|
enable = true;
|
||||||
|
domain = "cal.${domain}";
|
||||||
|
package = pkgs.open-web-calendar;
|
||||||
|
settings = {
|
||||||
|
# PORT = 21342;
|
||||||
|
};
|
||||||
|
calendarSettings = {
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
202
system-modules/nx2site/paperless.nix
Normal file
202
system-modules/nx2site/paperless.nix
Normal file
@@ -0,0 +1,202 @@
|
|||||||
|
{ pkgs, config, secrets, domain, user, ... }:
|
||||||
|
let paperless-user = "paperless"; in
|
||||||
|
{
|
||||||
|
sops.secrets = {
|
||||||
|
"nx2site/paperless.pw" = {
|
||||||
|
owner = paperless-user;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.users = {
|
||||||
|
"${user}".extraGroups = [ paperless-user ];
|
||||||
|
"${paperless-user}".extraGroups = [ "redis-paperless" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
postgresql = {
|
||||||
|
ensureDatabases = [ paperless-user ];
|
||||||
|
ensureUsers = [{
|
||||||
|
name = paperless-user;
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
paperless = {
|
||||||
|
enable = true;
|
||||||
|
# address = "0.0.0.0";
|
||||||
|
port = 8441;
|
||||||
|
user = paperless-user;
|
||||||
|
consumptionDirIsPublic = true;
|
||||||
|
# package = pkgs.paperless-ngx;
|
||||||
|
# dataDir = "/var/lib/paperless"; # default
|
||||||
|
address = "127.0.0.1";
|
||||||
|
# mediaDir = "${dataDir}/media";
|
||||||
|
passwordFile = config.sops.secrets."nx2site/paperless.pw".path;
|
||||||
|
# consumptionDir = "${dataDir}/consume";
|
||||||
|
# consumptionDirIsPublic = false;
|
||||||
|
# openMPThreadingWorkaround = true;
|
||||||
|
settings = {
|
||||||
|
# PAPERLESS_REDIS = "redis://localhost:6379";
|
||||||
|
# PAPERLESS_REDIS_PREFIX=""
|
||||||
|
# PAPERLESS_DBENGINE = "postgresql";
|
||||||
|
PAPERLESS_DBHOST = "/run/postgresql";
|
||||||
|
# PAPERLESS_DBHOST = config.services.postgresql.settings.listen_addresses;
|
||||||
|
# PAPERLESS_DBPORT = config.services.postgresql.settings.port;
|
||||||
|
# PAPERLESS_DBNAME = paperless-user;
|
||||||
|
# PAPERLESS_DBUSER = paperless-user;
|
||||||
|
PAPERLESS_DBPASS = secrets.nx2site.paperless.PAPERLESS_DBPASS;
|
||||||
|
# PAPERLESS_DBSSLMODE=
|
||||||
|
# PAPERLESS_DBSSLROOTCERT=null; # unset, using the documented path in the home directory.
|
||||||
|
# PAPERLESS_DBSSLCERT=null; # unset, using the documented path in the home directory.
|
||||||
|
# PAPERLESS_DBSSLKEY=null; # unset, using the documented path in the home directory.
|
||||||
|
# PAPERLESS_DB_TIMEOUT=null; # unset, keeping the Django defaults.
|
||||||
|
# PAPERLESS_TIKA_ENABLED=false
|
||||||
|
# PAPERLESS_TIKA_ENDPOINT="http://localhost:9998".
|
||||||
|
# PAPERLESS_TIKA_GOTENBERG_ENDPOINT="http://localhost:3000".
|
||||||
|
PAPERLESS_CONSUMPTION_DIR = "${config.services.paperless.dataDir}/consume/";
|
||||||
|
# PAPERLESS_DATA_DIR = "${config.services.paperless.dataDir}/data/";
|
||||||
|
# PAPERLESS_MEDIA_ROOT = "${config.services.paperless.dataDir}/media/";
|
||||||
|
# PAPERLESS_STATICDIR = "${config.services.paperless.dataDir}/static/";
|
||||||
|
# PAPERLESS_FILENAME_FORMAT=
|
||||||
|
# PAPERLESS_FILENAME_FORMAT_REMOVE_NONE=
|
||||||
|
# PAPERLESS_LOGGING_DIR = "${config.services.paperless.dataDir}/log/";
|
||||||
|
# PAPERLESS_NLTK_DIR =
|
||||||
|
# PAPERLESS_MODEL_FILE= PAPERLESS_DATA_DIR/classification_model.pickle.
|
||||||
|
# PAPERLESS_LOGROTATE_MAX_SIZE= 1 MiB.
|
||||||
|
# PAPERLESS_LOGROTATE_MAX_BACKUPS= 20.
|
||||||
|
# PAPERLESS_SECRET_KEY=
|
||||||
|
PAPERLESS_URL = "https://doc.${domain}";
|
||||||
|
# PAPERLESS_CSRF_TRUSTED_ORIGINS=
|
||||||
|
# PAPERLESS_ALLOWED_HOSTS=
|
||||||
|
# PAPERLESS_CORS_ALLOWED_HOSTS=
|
||||||
|
# PAPERLESS_TRUSTED_PROXIES=
|
||||||
|
# PAPERLESS_FORCE_SCRIPT_NAME=
|
||||||
|
# PAPERLESS_STATIC_URL= "/static/".
|
||||||
|
# PAPERLESS_AUTO_LOGIN_USERNAME=null;
|
||||||
|
# PAPERLESS_ADMIN_USER="${user}";
|
||||||
|
# PAPERLESS_ADMIN_MAIL=secrets.email.gmail-online.mail;
|
||||||
|
# PAPERLESS_ADMIN_PASSWORD=;
|
||||||
|
# PAPERLESS_COOKIE_PREFIX=
|
||||||
|
# PAPERLESS_ENABLE_HTTP_REMOTE_USER=
|
||||||
|
# PAPERLESS_ENABLE_HTTP_REMOTE_USER_API=
|
||||||
|
# PAPERLESS_HTTP_REMOTE_USER_HEADER_NAME=
|
||||||
|
# PAPERLESS_LOGOUT_REDIRECT_URL="https://youtu.be/dMN-pjcchrE?si=EcFYvAnbXFkounYR";
|
||||||
|
# PAPERLESS_USE_X_FORWARD_HOST= false
|
||||||
|
# PAPERLESS_USE_X_FORWARD_PORT= false
|
||||||
|
# PAPERLESS_PROXY_SSL_HEADER= null
|
||||||
|
# PAPERLESS_EMAIL_CERTIFICATE_LOCATION = null;
|
||||||
|
# PAPERLESS_SOCIALACCOUNT_PROVIDERS=;
|
||||||
|
# PAPERLESS_SOCIAL_AUTO_SIGNUP = false;
|
||||||
|
# PAPERLESS_SOCIALACCOUNT_ALLOW_SIGNUPS= True
|
||||||
|
# PAPERLESS_ACCOUNT_ALLOW_SIGNUPS= False
|
||||||
|
# PAPERLESS_ACCOUNT_DEFAULT_HTTP_PROTOCOL= 'https'
|
||||||
|
# PAPERLESS_ACCOUNT_EMAIL_VERIFICATION= 'optional'
|
||||||
|
# PAPERLESS_DISABLE_REGULAR_LOGIN= False
|
||||||
|
# PAPERLESS_REDIRECT_LOGIN_TO_SSO= False
|
||||||
|
# PAPERLESS_ACCOUNT_SESSION_REMEMBER= True
|
||||||
|
# PAPERLESS_SESSION_COOKIE_AGE= 1209600; # (2 weeks)
|
||||||
|
PAPERLESS_OCR_LANGUAGE = "eng+deu";
|
||||||
|
# PAPERLESS_OCR_MODE= "skip";
|
||||||
|
# PAPERLESS_OCR_SKIP_ARCHIVE_FILE=
|
||||||
|
# PAPERLESS_OCR_CLEAN= clean.
|
||||||
|
# PAPERLESS_OCR_DESKEW = true; # which enables this feature.
|
||||||
|
# PAPERLESS_OCR_ROTATE_PAGES = true; # which enables this feature.
|
||||||
|
# PAPERLESS_OCR_ROTATE_PAGES_THRESHOLD = "12";
|
||||||
|
# PAPERLESS_OCR_OUTPUT_TYPE = "pdfa";
|
||||||
|
# PAPERLESS_OCR_PAGES = null;
|
||||||
|
# PAPERLESS_OCR_IMAGE_DPI = null;
|
||||||
|
# PAPERLESS_OCR_MAX_IMAGE_PIXELS=
|
||||||
|
# PAPERLESS_OCR_COLOR_CONVERSION_STRATEGY=
|
||||||
|
PAPERLESS_OCR_USER_ARGS = {
|
||||||
|
optimize = 1;
|
||||||
|
pdfa_image_compression = "lossless";
|
||||||
|
};
|
||||||
|
# PAPERLESS_TASK_WORKERS= 1
|
||||||
|
# PAPERLESS_THREADS_PER_WORKER=
|
||||||
|
# PAPERLESS_WORKER_TIMEOUT=
|
||||||
|
PAPERLESS_TIME_ZONE = "CET";
|
||||||
|
# PAPERLESS_ENABLE_NLTK=1;
|
||||||
|
# PAPERLESS_EMAIL_TASK_CRON= */10 * * * * or every ten minutes.
|
||||||
|
# PAPERLESS_TRAIN_TASK_CRON= 5 */1 * * * or every hour at 5 minutes past the hour.
|
||||||
|
# PAPERLESS_INDEX_TASK_CRON= 0 0 * * * or daily at midnight.
|
||||||
|
# PAPERLESS_SANITY_TASK_CRON= 30 0 * * sun or Sunday at 30 minutes past midnight.
|
||||||
|
# PAPERLESS_ENABLE_COMPRESSION = 1; # enabling compression.
|
||||||
|
# PAPERLESS_CONVERT_MEMORY_LIMIT = 0; # which disables the limit.
|
||||||
|
# PAPERLESS_CONVERT_TMPDIR =
|
||||||
|
# PAPERLESS_APPS = null;
|
||||||
|
# PAPERLESS_MAX_IMAGE_PIXELS = null;
|
||||||
|
# PAPERLESS_CONSUMER_DELETE_DUPLICATES= false.
|
||||||
|
# PAPERLESS_CONSUMER_RECURSIVE= false.
|
||||||
|
# PAPERLESS_CONSUMER_SUBDIRS_AS_TAGS= false.
|
||||||
|
PAPERLESS_CONSUMER_IGNORE_PATTERNS = [
|
||||||
|
".DS_Store"
|
||||||
|
".DS_STORE"
|
||||||
|
"._*"
|
||||||
|
".stfolder/*"
|
||||||
|
".stversions/*"
|
||||||
|
".localized/*"
|
||||||
|
"desktop.ini"
|
||||||
|
"@eaDir/*"
|
||||||
|
"Thumbs.db"
|
||||||
|
];
|
||||||
|
# PAPERLESS_CONSUMER_BARCODE_SCANNER=
|
||||||
|
# PAPERLESS_PRE_CONSUME_SCRIPT=
|
||||||
|
# PAPERLESS_POST_CONSUME_SCRIPT=
|
||||||
|
# PAPERLESS_FILENAME_DATE_ORDER= none, which disables this feature.
|
||||||
|
# PAPERLESS_NUMBER_OF_SUGGESTED_DATES= 3. Set to 0 to disable this feature.
|
||||||
|
# PAPERLESS_THUMBNAIL_FONT_NAME= /usr/share/fonts/liberation/LiberationSerif-Regular.ttf.
|
||||||
|
# PAPERLESS_IGNORE_DATES="";
|
||||||
|
# PAPERLESS_DATE_ORDER = "DMY";
|
||||||
|
# PAPERLESS_ENABLE_GPG_DECRYPTOR = false;
|
||||||
|
# PAPERLESS_CONSUMER_POLLING = 0; # which disables polling and uses filesystem notifications.
|
||||||
|
# PAPERLESS_CONSUMER_POLLING_RETRY_COUNT = 5;
|
||||||
|
# PAPERLESS_CONSUMER_POLLING_DELAY = 5;
|
||||||
|
# PAPERLESS_CONSUMER_INOTIFY_DELAY= 0.5; # seconds.
|
||||||
|
# PAPERLESS_OAUTH_CALLBACK_BASE_URL = null;
|
||||||
|
# PAPERLESS_GMAIL_OAUTH_CLIENT_ID = null;
|
||||||
|
# PAPERLESS_GMAIL_OAUTH_CLIENT_SECRET = null;
|
||||||
|
# PAPERLESS_OUTLOOK_OAUTH_CLIENT_ID = null;
|
||||||
|
# PAPERLESS_OUTLOOK_OAUTH_CLIENT_SECRET = null;
|
||||||
|
# PAPERLESS_EMAIL_GNUPG_HOME=
|
||||||
|
# PAPERLESS_CONSUMER_ENABLE_BARCODES=
|
||||||
|
# PAPERLESS_CONSUMER_BARCODE_TIFF_SUPPORT= false.
|
||||||
|
# PAPERLESS_CONSUMER_BARCODE_STRING= "PATCHT"
|
||||||
|
# PAPERLESS_CONSUMER_BARCODE_RETAIN_SPLIT_PAGES= false.
|
||||||
|
# PAPERLESS_CONSUMER_ENABLE_ASN_BARCODE= false.
|
||||||
|
# PAPERLESS_CONSUMER_ASN_BARCODE_PREFIX= "ASN"
|
||||||
|
# PAPERLESS_CONSUMER_BARCODE_UPSCALE= 0.0
|
||||||
|
# PAPERLESS_CONSUMER_BARCODE_DPI= "300"
|
||||||
|
# PAPERLESS_CONSUMER_BARCODE_MAX_PAGES= "0"
|
||||||
|
# PAPERLESS_CONSUMER_ENABLE_TAG_BARCODE= false.
|
||||||
|
# PAPERLESS_CONSUMER_TAG_BARCODE_MAPPING=
|
||||||
|
# PAPERLESS_AUDIT_LOG_ENABLED= true.
|
||||||
|
# PAPERLESS_CONSUMER_ENABLE_COLLATE_DOUBLE_SIDED= false.
|
||||||
|
# PAPERLESS_CONSUMER_COLLATE_DOUBLE_SIDED_SUBDIR_NAME= "double-sided".
|
||||||
|
# PAPERLESS_CONSUMER_COLLATE_DOUBLE_SIDED_TIFF_SUPPORT= false.
|
||||||
|
PAPERLESS_EMPTY_TRASH_DELAY = 30; # days, minimum of 1 day.
|
||||||
|
# PAPERLESS_EMPTY_TRASH_TASK_CRON= 0 1 * * *, once per day.
|
||||||
|
# PAPERLESS_CONVERT_BINARY = "convert".
|
||||||
|
PAPERLESS_GS_BINARY = "${pkgs.ghostscript}/bin/gs";
|
||||||
|
# PAPERLESS_WEBSERVER_WORKERS= 1;
|
||||||
|
# PAPERLESS_BIND_ADDR= [::], meaning all interfaces, including IPv6.
|
||||||
|
# PAPERLESS_PORT = config.services.paperless.port;
|
||||||
|
# PAPERLESS_OCR_LANGUAGES=
|
||||||
|
# PAPERLESS_ENABLE_FLOWER=
|
||||||
|
# PAPERLESS_SUPERVISORD_WORKING_DIR=
|
||||||
|
PAPERLESS_APP_TITLE = "NxPPL";
|
||||||
|
# PAPERLESS_APP_LOGO =
|
||||||
|
# PAPERLESS_ENABLE_UPDATE_CHECK=false;
|
||||||
|
# PAPERLESS_EMAIL_HOST = "localhost";
|
||||||
|
# PAPERLESS_EMAIL_PORT= 25.
|
||||||
|
# PAPERLESS_EMAIL_HOST_USER= "";
|
||||||
|
# PAPERLESS_EMAIL_FROM=
|
||||||
|
# PAPERLESS_EMAIL_HOST_PASSWORD = "".
|
||||||
|
# PAPERLESS_EMAIL_USE_TLS = false.
|
||||||
|
# PAPERLESS_EMAIL_USE_SSL = false.
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
systemd.services.paperless-web.after = [ "postgresql.service" ];
|
||||||
|
systemd.services.paperless-task-queue.after = [ "postgresql.service" ];
|
||||||
|
systemd.services.paperless-consumer.after = [ "postgresql.service" ];
|
||||||
|
systemd.services.paperless-sceduler.after = [ "postgresql.service" ];
|
||||||
|
}
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
};
|
};
|
||||||
certs = {
|
certs = {
|
||||||
"${domain}" = {
|
"${domain}" = {
|
||||||
extraDomainNames = builtins.map (subd: "${subd}.${domain}") [ "git" "git2" "pw" "pw2" "sync" ];
|
extraDomainNames = builtins.map (subd: "${subd}.${domain}") [ "sync" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
http3 = true;
|
http3 = true;
|
||||||
http3_hq = true;
|
http3_hq = true;
|
||||||
quic = true;
|
quic = true;
|
||||||
addSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
@@ -99,18 +99,20 @@
|
|||||||
listen = dl;
|
listen = dl;
|
||||||
locations = { "~.*" = { return = "502"; }; };
|
locations = { "~.*" = { return = "502"; }; };
|
||||||
};
|
};
|
||||||
|
# "pw.${domain}" = vh // {
|
||||||
|
# listen = dl;
|
||||||
|
# locations = let d = "pw.docker:80"; in {
|
||||||
|
# "/" = { proxyPass = "http://${d}"; };
|
||||||
|
# "/admin" = { proxyPass = "http://${d}"; };
|
||||||
|
# "/notifications/hub" = { proxyPass = "http://${d}"; };
|
||||||
|
# "/notifications/hub/negotiate" = { proxyPass = "http://${d}"; };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
"pw.${domain}" = vh // {
|
"pw.${domain}" = vh // {
|
||||||
listen = dl;
|
listen = dl;
|
||||||
locations = let d = "pw.docker:80"; in {
|
locations = let
|
||||||
"/" = { proxyPass = "http://${d}"; };
|
d = with config.services.vaultwarden.config; "${ROCKET_ADDRESS}:${builtins.toString ROCKET_PORT}";
|
||||||
"/admin" = { proxyPass = "http://${d}"; };
|
in {
|
||||||
"/notifications/hub" = { proxyPass = "http://${d}"; };
|
|
||||||
"/notifications/hub/negotiate" = { proxyPass = "http://${d}"; };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"pw2.${domain}" = vh // {
|
|
||||||
listen = dl;
|
|
||||||
locations = let d = "127.0.0.1:3000"; in {
|
|
||||||
"/" = { proxyPass = "http://${d}"; };
|
"/" = { proxyPass = "http://${d}"; };
|
||||||
"/admin" = { proxyPass = "http://${d}"; };
|
"/admin" = { proxyPass = "http://${d}"; };
|
||||||
"/notifications/hub" = { proxyPass = "http://${d}"; };
|
"/notifications/hub" = { proxyPass = "http://${d}"; };
|
||||||
@@ -121,14 +123,41 @@
|
|||||||
listen = dl;
|
listen = dl;
|
||||||
locations = { "/" = { proxyPass = "http://127.0.0.1:11434"; }; };
|
locations = { "/" = { proxyPass = "http://127.0.0.1:11434"; }; };
|
||||||
};
|
};
|
||||||
|
# "git.${domain}" = vh // {
|
||||||
|
# listen = dl;
|
||||||
|
# locations = { "/" = { proxyPass = "http://git.docker:3000"; }; };
|
||||||
|
# };
|
||||||
"git.${domain}" = vh // {
|
"git.${domain}" = vh // {
|
||||||
|
http2 = false;
|
||||||
listen = dl;
|
listen = dl;
|
||||||
locations = { "/" = { proxyPass = "http://git.docker:3000"; }; };
|
locations = { "/" = { proxyPass = "http://127.0.0.1:3000"; }; };
|
||||||
};
|
};
|
||||||
"git2.${domain}" = vh // {
|
"doc.${domain}" = vh // {
|
||||||
listen = dl;
|
listen = dl;
|
||||||
locations = { "/" = { proxyPass = "http://127.0.0.1:8222"; }; };
|
locations = { "/" = { proxyPass = "http://127.0.0.1:8441"; }; };
|
||||||
};
|
};
|
||||||
|
"dav.${domain}" = lib.mkIf config.services.radicale.enable (vh // {
|
||||||
|
listen = dl;
|
||||||
|
locations = { "/" = { proxyPass = "http://127.0.0.1:5232"; }; };
|
||||||
|
});
|
||||||
|
# "nc.${domain}" = vh // {
|
||||||
|
# # directly to nc
|
||||||
|
# };
|
||||||
|
"abs.${domain}" = vh // {
|
||||||
|
listen = dl;
|
||||||
|
locations = { "/" = {
|
||||||
|
proxyPass = "http://127.0.0.1:${builtins.toString config.services.audiobookshelf.port}";
|
||||||
|
proxyWebsockets = true;
|
||||||
|
}; };
|
||||||
|
};
|
||||||
|
# is done atomatically
|
||||||
|
# "cal.${domain}" = vh // {
|
||||||
|
# listen = dl;
|
||||||
|
# locations = { "/" = {
|
||||||
|
# proxyPass = "http://unix:///run/open-web-calendar/socket";
|
||||||
|
# proxyWebsockets = true;
|
||||||
|
# }; };
|
||||||
|
# };
|
||||||
"~^(.*).${domain}$" = {
|
"~^(.*).${domain}$" = {
|
||||||
listen = dl;
|
listen = dl;
|
||||||
root = "/var/nginx/webroot";
|
root = "/var/nginx/webroot";
|
||||||
|
|||||||
29
system-modules/nx2site/radicale.nix
Normal file
29
system-modules/nx2site/radicale.nix
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
{ config, domain, ... }:
|
||||||
|
{
|
||||||
|
sops.secrets = {
|
||||||
|
"nx2site/radicale/htpasswd" = {
|
||||||
|
owner = "radicale";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services = {
|
||||||
|
radicale = {
|
||||||
|
# is run by user radicale
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
server.hosts = let
|
||||||
|
port = builtins.toString 5232;
|
||||||
|
in [
|
||||||
|
"0.0.0.0:${port}"
|
||||||
|
"${domain}:${port}"
|
||||||
|
# "192.168.178.32:${port}"
|
||||||
|
];
|
||||||
|
auth = {
|
||||||
|
type = "htpasswd";
|
||||||
|
htpasswd_filename = config.sops.secrets."nx2site/radicale/htpasswd".path;
|
||||||
|
htpasswd_encryption = "bcrypt";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
20
system-modules/nx2site/rallly.nix
Normal file
20
system-modules/nx2site/rallly.nix
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
environment.systemPackages = [
|
||||||
|
(pkgs.mkYarnPackage {
|
||||||
|
name = "rallly";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "lukevella";
|
||||||
|
repo = "rallly";
|
||||||
|
rev = "v3.11.2";
|
||||||
|
hash = "sha256-ej6Y0ouiheoH6dSBWsSIW6qt9UvsLh9ODDQA5Fqt3zs=";
|
||||||
|
};
|
||||||
|
packageJson = ./package.json;
|
||||||
|
yarnLock = ./yarn.lock;
|
||||||
|
yarnNix = ./yarn.nix;
|
||||||
|
# patchPhase = /* shell */ ''
|
||||||
|
# cp ........ ?
|
||||||
|
# '';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
{ config, pkgs, secrets, domain, ... }:
|
||||||
|
{
|
||||||
|
sops.secrets = {
|
||||||
|
"nx2site/vaultwarden.env" = {
|
||||||
|
owner = "vaultwarden";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.vaultwarden = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.vaultwarden;
|
||||||
|
webVaultPackage = pkgs.vaultwarden.webvault;
|
||||||
|
dbBackend = "postgresql";
|
||||||
|
# backupDir = "/var/backup/vaultwarden";
|
||||||
|
environmentFile = config.sops.secrets."nx2site/vaultwarden.env".path;
|
||||||
|
config = {
|
||||||
|
ROCKET_ADDRESS = "127.0.0.1";
|
||||||
|
ROCKET_PORT = 8222;
|
||||||
|
|
||||||
|
DATABASE_URL = "@DATABASE_URL@";
|
||||||
|
# DATABASE_URL = "postgresql://vaultwarden:fakepw123@127.0.0.1:5432/vaultwarden";
|
||||||
|
|
||||||
|
SMTP_HOST = "smtp.gmail.com";
|
||||||
|
SMTP_FROM = secrets.email.gmail-online.mail;
|
||||||
|
SMTP_PORT = 587;
|
||||||
|
SMTP_SECURITY = "starttls";
|
||||||
|
SMTP_USERNAME = secrets.email.gmail-online.mail;
|
||||||
|
SMTP_PASSWORD = "@SMTP_PASSWORD@";
|
||||||
|
LOGIN_RATELIMIT_MAX_BURST = 10;
|
||||||
|
LOGIN_RATELIMIT_SECONDS = 60;
|
||||||
|
DOMAIN = "https://pw.${domain}";
|
||||||
|
INVITATION_ORG_NAME = "NxPW";
|
||||||
|
INVITATIONS_ALLOWED = true;
|
||||||
|
ADMIN_TOKEN = "@ADMIN_TOKEN@";
|
||||||
|
SIGNUPS_ALLOWED = false;
|
||||||
|
SIGNUPS_VERIFY = true;
|
||||||
|
SIGNUPS_VERIFY_RESEND_TIME = 3600;
|
||||||
|
SIGNUPS_VERIFY_RESEND_LIMIT = 6;
|
||||||
|
EMERGENCY_ACCESS_ALLOWED = true;
|
||||||
|
SENDS_ALLOWED = true;
|
||||||
|
WEB_VAULT_ENABLED = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|||||||
3
system-modules/ollama.nix
Executable file → Normal file
3
system-modules/ollama.nix
Executable file → Normal file
@@ -19,7 +19,8 @@ in {
|
|||||||
package = p;
|
package = p;
|
||||||
enable = true;
|
enable = true;
|
||||||
acceleration = lib.mkIf nvidia.enable "cuda";
|
acceleration = lib.mkIf nvidia.enable "cuda";
|
||||||
listenAddress = if host == "NxACE" then "0.0.0.0:11434" else "127.0.0.1:11434";
|
host = if host == "NxACE" then "0.0.0.0" else "127.0.0.1";
|
||||||
|
port = 11434;
|
||||||
environmentVariables = {
|
environmentVariables = {
|
||||||
OLLAMA_ORIGINS = "*";
|
OLLAMA_ORIGINS = "*";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
{ config, pkgs, lib, user, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
{
|
{
|
||||||
services = {
|
services = {
|
||||||
postgresql = {
|
postgresql = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.postgresql_12;
|
|
||||||
|
package = pkgs.postgresql_16; # https://stackoverflow.com/questions/51688193/how-to-upgrade-postgresql-in-nixos
|
||||||
|
|
||||||
dataDir = "/var/lib/postgresql/${config.services.postgresql.package.psqlSchema}"; # default
|
dataDir = "/var/lib/postgresql/${config.services.postgresql.package.psqlSchema}"; # default
|
||||||
# identMap = ''
|
# identMap = ''
|
||||||
# ${user} ${user} ${user}
|
# ${user} ${user} ${user}
|
||||||
@@ -23,58 +25,59 @@
|
|||||||
# recoveryConfig = null;
|
# recoveryConfig = null;
|
||||||
ensureDatabases = [
|
ensureDatabases = [
|
||||||
"gitea"
|
"gitea"
|
||||||
# "vaultwarden"
|
"vaultwarden"
|
||||||
|
"paperless"
|
||||||
|
"nextcloud"
|
||||||
];
|
];
|
||||||
settings = {
|
settings = {
|
||||||
port = 5432; # default
|
port = 5432; # default
|
||||||
listen_addresses = "localhost";
|
listen_addresses = lib.mkForce "127.0.0.1";
|
||||||
log_line_prefix = "[%p] "; # default
|
log_line_prefix = "[%p] "; # default
|
||||||
shared_preload_libraries = [ ]; # default
|
shared_preload_libraries = [ ]; # default
|
||||||
};
|
};
|
||||||
ensureUsers = [
|
ensureUsers = [
|
||||||
# {
|
|
||||||
# name = "${user}";
|
|
||||||
# ensureDBOwnership = false;
|
|
||||||
# ensureClauses = {
|
|
||||||
# login = true;
|
|
||||||
# # inherit
|
|
||||||
# createdb = true;
|
|
||||||
# bypassrls = true;
|
|
||||||
# superuser = true;
|
|
||||||
# createrole = true;
|
|
||||||
# replication = true;
|
|
||||||
# };
|
|
||||||
# }
|
|
||||||
{
|
|
||||||
# as liong as there is no declarative user management you gotta set a pw by hand
|
# as liong as there is no declarative user management you gotta set a pw by hand
|
||||||
# sudo -u postgres psql -c "ALTER USER gitea PASSWORD 'new-passwd';"
|
# sudo -u postgres psql -c "ALTER USER gitea PASSWORD 'new-passwd';"
|
||||||
|
{
|
||||||
name = "gitea";
|
name = "gitea";
|
||||||
ensureDBOwnership = true;
|
ensureDBOwnership = true;
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "vaultwarden";
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "nextcloud";
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "paperless";
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
# postgresqlBackup = {
|
postgresqlBackup = {
|
||||||
# enable
|
enable = true;
|
||||||
# startAt
|
# startAt = "*-*-* 01:15:00";
|
||||||
# location
|
# location = "/var/backup/postgresql";
|
||||||
# databases
|
databases = config.services.postgresql.ensureDatabases;
|
||||||
# backupAll
|
backupAll = false;
|
||||||
# compression
|
# compression = "gzip";
|
||||||
# }
|
# pgdumpOptions = "-C";
|
||||||
|
# compressionLevel = 6;
|
||||||
|
};
|
||||||
# postgresqlWalReceiver.receivers."main" = {
|
# postgresqlWalReceiver.receivers."main" = {
|
||||||
# postgresqlPackage = pkgs.postgresql_15;
|
# postgresqlPackage = pkgs.postgresql_15;
|
||||||
# directory = /mnt/pg_wal/main/;
|
# directory = /mnt/pg_wal/main/;
|
||||||
# slot = "main_wal_receiver";
|
# slot = "main_wal_receiver";
|
||||||
# connection = "postgresql://user@somehost";
|
# connection = "postgresql://user@somehost";
|
||||||
# compress
|
# compress
|
||||||
# extraArgs
|
# extraArgs
|
||||||
# synchronous
|
# synchronous
|
||||||
# environment
|
# environment
|
||||||
# statusInterval
|
# statusInterval
|
||||||
# };
|
# };
|
||||||
# }
|
# };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user