Compare commits
155 Commits
nod
...
9ab9034a02
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ab9034a02 | ||
|
|
b2a322b269 | ||
|
|
27d47179ef | ||
|
|
ea1fd6a81f | ||
|
|
2ae3ec3b9b | ||
|
|
9ccabedbb2 | ||
|
|
5cc13c9b9a | ||
|
|
ea608bd665 | ||
|
|
e6fc668413 | ||
|
|
12714021b6 | ||
|
|
23b1e6f8cc | ||
|
|
375d42d0ed | ||
|
|
8e5da6e966 | ||
|
|
62d7d91dc0 | ||
|
|
4a977f7076 | ||
|
|
3f7877d5b8 | ||
|
|
d7a1f55a34 | ||
|
|
a2f5e9828c | ||
|
|
fa98f9eb2e | ||
|
|
2ba41d37fb | ||
|
|
ba1a5a5c10 | ||
|
|
ba1bce57c5 | ||
|
|
4951ee898d | ||
|
|
2e02069629 | ||
|
|
9108c8689a | ||
|
|
b6853648d6 | ||
|
|
f77d0d2301 | ||
|
|
bfa820a82a | ||
|
|
113931d088 | ||
|
|
1651f7debf | ||
|
|
bc0d1eed79 | ||
|
|
16ca72ff24 | ||
|
|
b977aea25f | ||
|
|
8745f42f80 | ||
|
|
f3e4b617ff | ||
|
|
014a29a7e0 | ||
|
|
1e2a0fd591 | ||
|
|
5a24fc9fda | ||
|
|
958b1d71ad | ||
|
|
fe70e6c1e3 | ||
|
|
e7b4b5fc3a | ||
|
|
5fafc9e8a3 | ||
|
|
78fb91c311 | ||
|
|
bf67e7d396 | ||
|
|
89428b966b | ||
|
|
809ce39ad3 | ||
|
|
bcd04b836a | ||
|
|
1d23337ed1 | ||
|
|
70c8dfd953 | ||
|
|
ce690c3cad | ||
|
|
18719bdc2e | ||
|
|
68a6a18fcf | ||
|
|
7c6907f077 | ||
|
|
db6dc48ebf | ||
|
|
ae6b0e483f | ||
|
|
f54754c792 | ||
|
|
30a3308b6b | ||
|
|
39c03c6c62 | ||
|
|
ee28eadb3b | ||
|
|
edbc5c0393 | ||
|
|
68ec133681 | ||
|
|
87292666b1 | ||
|
|
7d1ca1d174 | ||
|
|
3fcf02646a | ||
|
|
485a554e10 | ||
|
|
f02686b687 | ||
|
|
070695fa4d | ||
|
|
951d03e0b7 | ||
|
|
0dd8e27fcb | ||
|
|
66ef93c612 | ||
|
|
627604d3f7 | ||
|
|
2598b7562f | ||
|
|
b1c16c99ec | ||
|
|
47cce625be | ||
|
|
9a2eeb694e | ||
|
|
3b84087084 | ||
|
|
ccff2e66bb | ||
|
|
cad9c3e5f5 | ||
|
|
b913c05267 | ||
|
|
21a1efa978 | ||
|
|
f9ea18fd81 | ||
|
|
def172c79d | ||
|
|
ec2ea43523 | ||
|
|
03e3f877a6 | ||
|
|
28cd7a1ac3 | ||
|
|
03a53b006b | ||
|
|
2bac83ec14 | ||
|
|
0953c65a9f | ||
|
|
02231f2693 | ||
|
|
48f246429b | ||
|
|
bff8042d85 | ||
|
|
040f988530 | ||
|
|
3be3a7a80a | ||
|
|
8a5604e87b | ||
|
|
336eadc732 | ||
|
|
511d46f527 | ||
|
|
42685cce35 | ||
|
|
bb754e99f7 | ||
|
|
4f57d39171 | ||
|
|
4ed036b5d0 | ||
|
|
6d8a7e7194 | ||
|
|
f2dae2ee81 | ||
|
|
b23cc9ce7c | ||
|
|
f25ff57b5b | ||
|
|
1403c57356 | ||
|
|
fe2a7569c3 | ||
|
|
66977c7f04 | ||
|
|
879239cfd0 | ||
|
|
9ce989abe1 | ||
|
|
eca9490eea | ||
|
|
c41e9f4f17 | ||
|
|
adc912624d | ||
|
|
4bddec49af | ||
|
|
b89f7960df | ||
|
|
6c5e125452 | ||
|
|
59bde2cc37 | ||
|
|
4d2f244d4b | ||
|
|
f03e92a7ce | ||
|
|
1e20d645eb | ||
|
|
edda49ee66 | ||
|
|
5d65da4fca | ||
|
|
9914f62871 | ||
|
|
ff91701431 | ||
|
|
f49d802bc2 | ||
|
|
0f83584124 | ||
|
|
744688e2a5 | ||
|
|
47b0e9125a | ||
|
|
8cda4ed98a | ||
|
|
8683e608e6 | ||
|
|
3603fbdf41 | ||
|
|
43c8782c6c | ||
|
|
fe89a049bd | ||
|
|
5bd5c97e4e | ||
|
|
1b8155c9c9 | ||
|
|
79b2493f23 | ||
|
|
3a6e1ce3c6 | ||
|
|
c621faf09a | ||
|
|
51d7589975 | ||
|
|
4761258eed | ||
|
|
487f3ff6f0 | ||
|
|
f1f591368d | ||
|
|
ed74ebac4e | ||
|
|
bfae6a5800 | ||
|
|
1115e3e4a4 | ||
|
|
3b48f4d623 | ||
|
|
aa62213ef6 | ||
|
|
28f3fc54c9 | ||
|
|
ea753c0ebb | ||
|
|
79851fa223 | ||
|
|
f35d0efada | ||
|
|
c39663adee | ||
|
|
8057a6f2ee | ||
|
|
68ac093e4a | ||
|
|
8f7d685a8b | ||
|
|
851846197d |
@@ -1,6 +1,6 @@
|
|||||||
# ❄️ NixOS Dotfiles
|
# ❄️ NixOS Dotfiles
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Information
|
## Information
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ ... }@all: with all; {
|
{ pkgs, ... }@all: with all; {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.sops-nix.nixosModules.sops
|
||||||
./system-modules/adb.nix
|
./system-modules/adb.nix
|
||||||
@@ -18,12 +18,12 @@
|
|||||||
./system-modules/gpg.nix
|
./system-modules/gpg.nix
|
||||||
./system-modules/hardware-configuration.nix
|
./system-modules/hardware-configuration.nix
|
||||||
./system-modules/health_reminder.nix
|
./system-modules/health_reminder.nix
|
||||||
./system-modules/hsmw.nix
|
|
||||||
./system-modules/kanata.nix
|
./system-modules/kanata.nix
|
||||||
./system-modules/terminal.nix
|
./system-modules/terminal.nix
|
||||||
./system-modules/kodi.nix
|
./system-modules/kodi.nix
|
||||||
./system-modules/networking.nix
|
./system-modules/networking.nix
|
||||||
./system-modules/nixd.nix
|
./system-modules/nixd.nix
|
||||||
|
./system-modules/nix.nix
|
||||||
./system-modules/nvidia.nix
|
./system-modules/nvidia.nix
|
||||||
./system-modules/obs.nix
|
./system-modules/obs.nix
|
||||||
./system-modules/ollama.nix
|
./system-modules/ollama.nix
|
||||||
@@ -42,12 +42,22 @@
|
|||||||
./system-modules/users.nix
|
./system-modules/users.nix
|
||||||
./system-modules/virtualisation.nix
|
./system-modules/virtualisation.nix
|
||||||
./system-modules/ydotool.nix
|
./system-modules/ydotool.nix
|
||||||
] ++ (if (hyper.host == "NxACE") then [
|
|
||||||
|
./system-modules/simple-postgres.nix
|
||||||
|
] ++ (if hyper.isServer then [
|
||||||
./system-modules/nx2site.nix
|
./system-modules/nx2site.nix
|
||||||
./system-modules/hugo.nix
|
./system-modules/hugo.nix
|
||||||
./system-modules/postgres.nix
|
./system-modules/postgres.nix
|
||||||
./system-modules/nx2site/proxy.nix
|
./system-modules/nx2site/proxy.nix
|
||||||
|
|
||||||
|
# ./system-modules/nx2site/smtp.nix
|
||||||
|
# ./system-modules/nx2site/imap.nix
|
||||||
|
# ./system-modules/nx2site/vmail.nix
|
||||||
|
./system-modules/nx2site/maddy.nix
|
||||||
|
|
||||||
./system-modules/nx2site/audiobookshelf.nix
|
./system-modules/nx2site/audiobookshelf.nix
|
||||||
|
# ./system-modules/nx2site/baikal.nix
|
||||||
|
./system-modules/nx2site/nxcaldav.nix
|
||||||
./system-modules/nx2site/copyparty.nix
|
./system-modules/nx2site/copyparty.nix
|
||||||
./system-modules/nx2site/gitea.nix
|
./system-modules/nx2site/gitea.nix
|
||||||
./system-modules/nx2site/open-web-calendar.nix
|
./system-modules/nx2site/open-web-calendar.nix
|
||||||
@@ -56,15 +66,13 @@
|
|||||||
./system-modules/nx2site/paperless.nix
|
./system-modules/nx2site/paperless.nix
|
||||||
./system-modules/calendar/publish.nix
|
./system-modules/calendar/publish.nix
|
||||||
./system-modules/calendar/lec.nix
|
./system-modules/calendar/lec.nix
|
||||||
./system-modules/calendar/lr.nix
|
# ./system-modules/calendar/lr.nix
|
||||||
./system-modules/calendar/dicos.nix
|
] else [ ]);
|
||||||
] else [
|
|
||||||
]);
|
|
||||||
environment.systemPackages = import ./system-modules/base-packages.nix pkgs;
|
environment.systemPackages = import ./system-modules/base-packages.nix pkgs;
|
||||||
|
|
||||||
systemd.extraConfig = "DefaultLimitNOFILE=2048";
|
system.stateVersion = hyper.main-pkgs-version;
|
||||||
system.stateVersion = hyper.pkgs-version;
|
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
programs.nix-ld.enable = true;
|
||||||
programs.bash.shellInit = ''
|
programs.bash.shellInit = ''
|
||||||
if [[ "$USER" == "${hyper.user}" ]]; then
|
if [[ "$USER" == "${hyper.user}" ]]; then
|
||||||
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||||
|
|||||||
@@ -1,48 +1,31 @@
|
|||||||
|
pkgs: rec {
|
||||||
|
predicate = pkg: (
|
||||||
|
builtins.elem (pkgs.lib.getName pkg) unfree.packages || builtins.all (
|
||||||
|
license: license.free || builtins.elem license.shortName unfree.licenses
|
||||||
|
) (if builtins.isList pkg.meta.license then pkg.meta.license else [ pkg.meta.license ])
|
||||||
|
);
|
||||||
|
unfree = {
|
||||||
|
packages = [
|
||||||
|
"antigravity"
|
||||||
|
"cursor"
|
||||||
|
"discord"
|
||||||
|
"obsidian"
|
||||||
|
"spotify"
|
||||||
|
"steam"
|
||||||
|
"steam-unwrapped"
|
||||||
|
"vscode-extension-mhutchie-git-graph"
|
||||||
|
"zoom"
|
||||||
|
"zoom-us"
|
||||||
|
|
||||||
{
|
"nvidia-x11"
|
||||||
unfree = [
|
"nvidia-settings"
|
||||||
"cursor"
|
];
|
||||||
"discord"
|
licenses = [
|
||||||
"spotify"
|
"CUDA EULA"
|
||||||
"obsidian"
|
"cuDNN EULA"
|
||||||
"steam"
|
"cuTENSOR EULA"
|
||||||
"steam-unwrapped"
|
"NVidia OptiX EULA"
|
||||||
"zoom-us"
|
];
|
||||||
"zoom"
|
};
|
||||||
|
# insecure = [ ];
|
||||||
# since the predicate ist to be set in the flake and not in a module
|
|
||||||
# it is impossible to make the list dynamic and respect nvidia.enable
|
|
||||||
"nvidia-x11"
|
|
||||||
"nvidia-settings"
|
|
||||||
"nvidia-persistenced"
|
|
||||||
"cudatoolkit"
|
|
||||||
"cuda-merged"
|
|
||||||
"cuda_cuobjdump"
|
|
||||||
"cuda_gdb"
|
|
||||||
"cuda_nvcc"
|
|
||||||
"cuda_nvdisasm"
|
|
||||||
"cuda_nvprune"
|
|
||||||
"cuda_cccl"
|
|
||||||
"cuda_cudart"
|
|
||||||
"cuda_cupti"
|
|
||||||
"cuda_cuxxfilt"
|
|
||||||
"cuda_nvml_dev"
|
|
||||||
"cuda_nvrtc"
|
|
||||||
"cuda_nvtx"
|
|
||||||
"cuda_profiler_api"
|
|
||||||
"cuda_sanitizer_api"
|
|
||||||
"libcublas"
|
|
||||||
"libcufft"
|
|
||||||
"libcurand"
|
|
||||||
"libcusolver"
|
|
||||||
"libnvjitlink"
|
|
||||||
"libcusparse"
|
|
||||||
"libnpp"
|
|
||||||
|
|
||||||
"vscode-extension-mhutchie-git-graph"
|
|
||||||
];
|
|
||||||
|
|
||||||
inecure = [
|
|
||||||
# "electron-25.9.0"
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,54 @@
|
|||||||
{
|
{
|
||||||
"base": {
|
"NxXPS": {
|
||||||
"foreground": "#eddbef",
|
"base": {
|
||||||
"background": "#100711"
|
"foreground": "#fecccc",
|
||||||
|
"background": "#190000"
|
||||||
|
},
|
||||||
|
"to_alter": {
|
||||||
|
"accent": "#ff3232",
|
||||||
|
"secondary": "#6632ff",
|
||||||
|
"tertiary": "#dd32dd",
|
||||||
|
"special": "#31feff",
|
||||||
|
"weird": "#baff31"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"to_alter": {
|
"NxACE": {
|
||||||
"accent": "#ba71c0",
|
"base": {
|
||||||
"secondary": "#3266ff",
|
"foreground": "#dddddd",
|
||||||
"tertiary": "#4bb6e6",
|
"background": "#111111"
|
||||||
"special": "#76c071",
|
},
|
||||||
"weird": "#c08571"
|
"to_alter": {
|
||||||
|
"accent": "#ff6666",
|
||||||
|
"secondary": "#ff8866",
|
||||||
|
"tertiary": "#ff6688",
|
||||||
|
"special": "#8888ff",
|
||||||
|
"weird": "#88ff66"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"NxNORTH": {
|
||||||
|
"base": {
|
||||||
|
"foreground": "#d7e3f3",
|
||||||
|
"background": "#050b13"
|
||||||
|
},
|
||||||
|
"to_alter": {
|
||||||
|
"accent": "#6291cf",
|
||||||
|
"secondary": "#5f5fd2",
|
||||||
|
"tertiary": "#999999",
|
||||||
|
"special": "#cf9f61",
|
||||||
|
"weird": "#c461cf"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"NxDCS": {
|
||||||
|
"base": {
|
||||||
|
"foreground": "#ddcccc",
|
||||||
|
"background": "#080707"
|
||||||
|
},
|
||||||
|
"to_alter": {
|
||||||
|
"accent": "#d23f36",
|
||||||
|
"secondary": "#355273",
|
||||||
|
"tertiary": "#1b789b",
|
||||||
|
"special": "#66dd66",
|
||||||
|
"weird": "#dddd66"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
46
flake-modules/hyper.nix
Normal file
46
flake-modules/hyper.nix
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
let hyper-base = rec {
|
||||||
|
host = "BaseHost";
|
||||||
|
system = "x86_64-linux";
|
||||||
|
user = "nx2";
|
||||||
|
domain = "nx2.site";
|
||||||
|
home = "/home/${user}";
|
||||||
|
webroot = "/var/lib/hugo/nx2site/public";
|
||||||
|
main-pkgs-version = "25.11";
|
||||||
|
isServer = false;
|
||||||
|
isMobile = false;
|
||||||
|
isPersonal = false;
|
||||||
|
isNOD = false;
|
||||||
|
isWorkstation = false;
|
||||||
|
nvidia = {
|
||||||
|
enable = false;
|
||||||
|
prime = false;
|
||||||
|
};
|
||||||
|
}; in host: if host == "NxNORTH" then hyper-base // { inherit host;
|
||||||
|
nvidia = {
|
||||||
|
enable = true;
|
||||||
|
prime = false;
|
||||||
|
};
|
||||||
|
isPersonal = true;
|
||||||
|
isWorkstation = true;
|
||||||
|
} else if host == "NxXPS" then hyper-base // { inherit host;
|
||||||
|
nvidia = {
|
||||||
|
enable = true;
|
||||||
|
prime = true;
|
||||||
|
};
|
||||||
|
isMobile = true;
|
||||||
|
isPersonal = true;
|
||||||
|
isWorkstation = true;
|
||||||
|
} else if host == "NxACE" then hyper-base // { inherit host;
|
||||||
|
isServer = true;
|
||||||
|
} else if host == "NxDCS" then hyper-base // { inherit host;
|
||||||
|
isWorkstation = true;
|
||||||
|
isMobile = true;
|
||||||
|
} else if host == "NxS23U" then hyper-base // { inherit host;
|
||||||
|
isMobile = true;
|
||||||
|
isNOD = true;
|
||||||
|
isPersonal = true;
|
||||||
|
main-pkgs-version = "24.05";
|
||||||
|
system = "aarch64-linux";
|
||||||
|
user = "nix-on-droid";
|
||||||
|
home = "/data/data/com.termux.nix/files/home";
|
||||||
|
} else assert false "unkown host"; {}
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
enable = false;
|
|
||||||
prime = false;
|
|
||||||
}
|
|
||||||
43
flake-modules/nxlib/ricelib.nix
Normal file
43
flake-modules/nxlib/ricelib.nix
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
lib: let
|
||||||
|
# takes in "ff0044" (no hash!) and returns { r = "ff", g = "00", b = "44" }
|
||||||
|
slice-hex = hex: with builtins; { r = substring 0 2 hex; g = substring 2 2 hex; b = substring 4 2 hex; };
|
||||||
|
|
||||||
|
# takes in "44" and returns 64
|
||||||
|
drune-to-255 = drune: with builtins; (rune-to-num (substring 0 1 drune)) * 16 + (rune-to-num (substring 1 1 drune));
|
||||||
|
num-to-drune = num: "${num-to-rune (num / 16)}${num-to-rune (num - ((num / 16) * 16))}";
|
||||||
|
|
||||||
|
# takes in "D" and returns 13
|
||||||
|
# inspiration from https://github.com/bertof/nix-rice
|
||||||
|
rune-to-num = rune: let
|
||||||
|
dict = { "0" = 0; "1" = 1; "2" = 2; "3" = 3; "4" = 4; "5" = 5; "6" = 6; "7" = 7; "8" = 8; "9" = 9; "A" = 10; "B" = 11; "C" = 12; "D" = 13; "E" = 14; "F" = 15; };
|
||||||
|
in assert(builtins.hasAttr (lib.strings.toUpper rune) dict); builtins.getAttr (lib.strings.toUpper rune) dict;
|
||||||
|
|
||||||
|
# takes in 15 and returns "F"
|
||||||
|
num-to-rune = num: let
|
||||||
|
num-string = builtins.toString num;
|
||||||
|
dict = { "0" = "0"; "1" = "1"; "2" = "2"; "3" = "3"; "4" = "4"; "5" = "5"; "6" = "6"; "7" = "7"; "8" = "8"; "9" = "9"; "10" = "A"; "11" = "B"; "12" = "C"; "13" = "D"; "14" = "E"; "15" = "F"; };
|
||||||
|
in assert(builtins.hasAttr num-string dict); builtins.getAttr num-string dict;
|
||||||
|
|
||||||
|
# Keeps num between 0 and 255
|
||||||
|
# Make sure to pass in an int not a float
|
||||||
|
cap-255 = num: (if (num>255) then 255 else if (num<0) then 0 else num);
|
||||||
|
nohash = hex: with builtins; assert((stringLength hex) == 7); substring 1 6 hex;
|
||||||
|
in {
|
||||||
|
## USEFUL FUNCTIONS
|
||||||
|
# takes in a string like "#ff0044" and returns "ff0044" symbol
|
||||||
|
inherit nohash;
|
||||||
|
|
||||||
|
# This takes in something like "#ff0044" and returns "255,0,64"
|
||||||
|
hex-to-rgb-comma-string = hex: with (slice-hex (nohash hex)); with builtins; assert(isString hex); "${toString (drune-to-255 r)},${toString (drune-to-255 g)},${toString (drune-to-255 b)}";
|
||||||
|
|
||||||
|
# This is useful if you have a float (like a transparency value) and want a drune representation of it
|
||||||
|
# So 0.0 -> "00" and 1.0 -> "FF"
|
||||||
|
float-to-drune = f: with builtins; assert(isFloat f); "${num-to-rune (floor((255*f) / 16))}${num-to-rune (floor(255*f) - (floor((255*f) / 16) * 16))}";
|
||||||
|
|
||||||
|
# Takes in hex and a float. 0.5 is +50% brightness and (-0.5) is -50% brightness.
|
||||||
|
# So "#ff0044": 0.3 -> "#ff0055"
|
||||||
|
alter-luminace-hex = hex: amount: let
|
||||||
|
color-num = with (slice-hex (nohash hex)); { r = drune-to-255 r; g = drune-to-255 g; b = drune-to-255 b; };
|
||||||
|
alter = num: (num-to-drune (cap-255 (builtins.floor ((125 * amount) + (num * (1+amount))) )));
|
||||||
|
in with color-num; "#${alter r}${alter g}${alter b}";
|
||||||
|
}
|
||||||
29
flake-modules/pkgs.nix
Normal file
29
flake-modules/pkgs.nix
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
inputs: simple-pkgs: hyper: let
|
||||||
|
args = {
|
||||||
|
system = hyper.system;
|
||||||
|
config = {
|
||||||
|
allowUnfreePredicate = (import ./allowed.nix simple-pkgs).predicate;
|
||||||
|
cudaSupport = hyper.nvidia.enable;
|
||||||
|
cudaForwardCompat = hyper.nvidia.enable;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
overlays = [(final: prev: {
|
||||||
|
unstable = import inputs.nixpkgs-unstable args;
|
||||||
|
latest = import inputs.nixpkgs-latest args;
|
||||||
|
pkgs-version = hyper.main-pkgs-version;
|
||||||
|
})] ++ (if hyper.isServer then [
|
||||||
|
inputs.copyparty.overlays.default
|
||||||
|
] else []);
|
||||||
|
in if !hyper.isNOD then
|
||||||
|
(import inputs.nixpkgs (args // { inherit overlays; }))
|
||||||
|
else (
|
||||||
|
(import inputs.nixpkgs (args // { inherit overlays; })) // # normal as base
|
||||||
|
(import inputs.nixpkgs24 (args // { # overwrite with old versions
|
||||||
|
overlays = [(final: prev: {
|
||||||
|
pkgs-version = "24.05";
|
||||||
|
})];
|
||||||
|
}))
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
pkgs: rec {
|
pkgs: hyper: rec {
|
||||||
|
|
||||||
lib = import ../nxlib/ricelib.nix pkgs.lib;
|
lib = import ./nxlib/ricelib.nix pkgs.lib;
|
||||||
|
|
||||||
transparency = 0.8;
|
transparency = 0.8;
|
||||||
rounding = 3;
|
rounding = 3;
|
||||||
@@ -36,17 +36,12 @@ pkgs: rec {
|
|||||||
red = "#dd4444"; # "#dd1111" "#00aa00";
|
red = "#dd4444"; # "#dd1111" "#00aa00";
|
||||||
yellow = "#dddd44"; # "#dddd11" "#ffff00";
|
yellow = "#dddd44"; # "#dddd11" "#ffff00";
|
||||||
};
|
};
|
||||||
facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)).to_alter;
|
facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json))."${hyper.host}".to_alter;
|
||||||
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base;
|
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json))."${hyper.host}".base;
|
||||||
fcolor = facolor // fbcolor;
|
fcolor = facolor // fbcolor;
|
||||||
xcolor = with ccolor; with fcolor; {
|
xcolor = with ccolor; with fcolor; {
|
||||||
# background = "#000000";
|
# background = "#000000";
|
||||||
# foreground = "#dddddd";
|
# foreground = "#dddddd";
|
||||||
# accent = blue;
|
|
||||||
# secondary = cyan;
|
|
||||||
# tertiary = magenta;
|
|
||||||
# special = yellow;
|
|
||||||
# weird = green;
|
|
||||||
subtle = { darker = "#111111"; dark = "#444444"; base = "#777777"; bright = "#999999"; brighter = "#cccccc"; };
|
subtle = { darker = "#111111"; dark = "#444444"; base = "#777777"; bright = "#999999"; brighter = "#cccccc"; };
|
||||||
positive = alter "#00dd00";
|
positive = alter "#00dd00";
|
||||||
negative = alter "#dd0000";
|
negative = alter "#dd0000";
|
||||||
@@ -61,8 +56,6 @@ pkgs: rec {
|
|||||||
regular-path = "${package}/share/fonts/truetype/NerdFonts/JetBrainsMonoNerdFont-Regular.ttf";
|
regular-path = "${package}/share/fonts/truetype/NerdFonts/JetBrainsMonoNerdFont-Regular.ttf";
|
||||||
};
|
};
|
||||||
base = {
|
base = {
|
||||||
# name = "NewComputerModern08";
|
|
||||||
# package = pkgs.newcomputermodern;
|
|
||||||
name = "Atkinson Hyperlegible";
|
name = "Atkinson Hyperlegible";
|
||||||
package = pkgs.atkinson-hyperlegible-next;
|
package = pkgs.atkinson-hyperlegible-next;
|
||||||
};
|
};
|
||||||
|
|||||||
343
flake.lock
generated
343
flake.lock
generated
@@ -20,11 +20,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1760101617,
|
"lastModified": 1776702787,
|
||||||
"narHash": "sha256-8jf/3ZCi+B7zYpIyV04+3wm72BD7Z801IlOzsOACR7I=",
|
"narHash": "sha256-qc5uwEWbuubzYthmZcfCapooZGXhoYZWfTQ24TozbCQ=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "aquamarine",
|
"repo": "aquamarine",
|
||||||
"rev": "1826a9923881320306231b1c2090379ebf9fa4f8",
|
"rev": "9a1ca6b8cb4d86a599787a55b78f2ddf809bf945",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -39,11 +39,11 @@
|
|||||||
"nixpkgs": "nixpkgs"
|
"nixpkgs": "nixpkgs"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761517857,
|
"lastModified": 1776983715,
|
||||||
"narHash": "sha256-1xYv73nGA+Lm/hKRqjiUyuBzabaRwmeDxBCIMve5CWU=",
|
"narHash": "sha256-XonefkUGuMkCvyFfy3B6crz6FV8Ghsrc3Lg1SIWi2hg=",
|
||||||
"owner": "9001",
|
"owner": "9001",
|
||||||
"repo": "copyparty",
|
"repo": "copyparty",
|
||||||
"rev": "e9ab040ce8e72e299a3d8fbd109865b1e218eb57",
|
"rev": "1e7de5d14f00f8821b1a32f3009f4328b1a5e04a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -70,15 +70,15 @@
|
|||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747046372,
|
"lastModified": 1767039857,
|
||||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
"owner": "edolstra",
|
"owner": "NixOS",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "edolstra",
|
"owner": "NixOS",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -102,11 +102,11 @@
|
|||||||
"flake-compat_3": {
|
"flake-compat_3": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747046372,
|
"lastModified": 1767039857,
|
||||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -220,16 +220,16 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758463745,
|
"lastModified": 1775425411,
|
||||||
"narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
|
"narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
|
"rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"ref": "release-25.05",
|
"ref": "release-25.11",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -271,11 +271,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1753964049,
|
"lastModified": 1776511930,
|
||||||
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=",
|
"narHash": "sha256-fCpwFiTW0rT7oKJqr3cqHMnkwypSwQKpbtUEtxdkgrM=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprcursor",
|
"repo": "hyprcursor",
|
||||||
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5",
|
"rev": "39435900785d0c560c6ae8777d29f28617d031ef",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -300,11 +300,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1760445448,
|
"lastModified": 1776426399,
|
||||||
"narHash": "sha256-fXGjL6dw31FPFRrmIemzGiNSlfvEJTJNsmadZi+qNhI=",
|
"narHash": "sha256-RUESLKNikIeEq9ymGJ6nmcDXiSFQpUW1IhJ245nL3xM=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprgraphics",
|
"repo": "hyprgraphics",
|
||||||
"rev": "50fb9f069219f338a11cf0bcccb9e58357d67757",
|
"rev": "68d064434787cf1ed4a2fe257c03c5f52f33cf84",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -318,22 +318,23 @@
|
|||||||
"aquamarine": "aquamarine",
|
"aquamarine": "aquamarine",
|
||||||
"hyprcursor": "hyprcursor",
|
"hyprcursor": "hyprcursor",
|
||||||
"hyprgraphics": "hyprgraphics",
|
"hyprgraphics": "hyprgraphics",
|
||||||
|
"hyprland-guiutils": "hyprland-guiutils",
|
||||||
"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",
|
||||||
|
"hyprwire": "hyprwire",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"pre-commit-hooks": "pre-commit-hooks",
|
"pre-commit-hooks": "pre-commit-hooks",
|
||||||
"systems": "systems",
|
"systems": "systems",
|
||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761249114,
|
"lastModified": 1777040476,
|
||||||
"narHash": "sha256-KDy8Vtlwe+7Z053HtD4fCRqlHBt0Kils0Zea4D77R7o=",
|
"narHash": "sha256-bdlbn9MZcfKcK9qTyQzismEwaZHqLlG/6JLYOGdVBh4=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "aa5a239ac92a6bd6947cce2ca3911606df392cb6",
|
"rev": "e3c9b64812042ade8bec47499f461f2c7d36c184",
|
||||||
"revCount": 6522,
|
"revCount": 7172,
|
||||||
"submodules": true,
|
"submodules": true,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/hyprwm/Hyprland"
|
"url": "https://github.com/hyprwm/Hyprland"
|
||||||
@@ -344,33 +345,49 @@
|
|||||||
"url": "https://github.com/hyprwm/Hyprland"
|
"url": "https://github.com/hyprwm/Hyprland"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hyprland-plugins": {
|
"hyprland-guiutils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"hyprland": [
|
"aquamarine": [
|
||||||
"hyprland"
|
"hyprland",
|
||||||
|
"aquamarine"
|
||||||
|
],
|
||||||
|
"hyprgraphics": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprgraphics"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprtoolkit": "hyprtoolkit",
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprwayland-scanner"
|
||||||
],
|
],
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"hyprland-plugins",
|
|
||||||
"hyprland",
|
"hyprland",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"systems": [
|
"systems": [
|
||||||
"hyprland-plugins",
|
|
||||||
"hyprland",
|
"hyprland",
|
||||||
"systems"
|
"systems"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761653710,
|
"lastModified": 1776426575,
|
||||||
"narHash": "sha256-MhHSU9m/9HSckJ61OXcom/6F92NQf3s1QfLbRUApalc=",
|
"narHash": "sha256-KI6nIfVihn/DPaeB5Et46Xg3dkNHrrEtUd5LBBVomB0=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprland-plugins",
|
"repo": "hyprland-guiutils",
|
||||||
"rev": "e689220b1740aa99ca67fa06055792f82fa9ed85",
|
"rev": "a968d211048e3ed538e47b84cb3649299578f19d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprland-plugins",
|
"repo": "hyprland-guiutils",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -386,11 +403,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759610243,
|
"lastModified": 1772460177,
|
||||||
"narHash": "sha256-+KEVnKBe8wz+a6dTLq8YDcF3UrhQElwsYJaVaHXJtoI=",
|
"narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprland-protocols",
|
"repo": "hyprland-protocols",
|
||||||
"rev": "bd153e76f751f150a09328dbdeb5e4fab9d23622",
|
"rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -399,74 +416,6 @@
|
|||||||
"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": 1749154592,
|
|
||||||
"narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-qt-support",
|
|
||||||
"rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074",
|
|
||||||
"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": 1759080228,
|
|
||||||
"narHash": "sha256-RgDoAja0T1hnF0pTc56xPfLfFOO8Utol2iITwYbUhTk=",
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-qtutils",
|
|
||||||
"rev": "629b15c19fa4082e4ce6be09fdb89e8c3312aed7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hyprwm",
|
|
||||||
"repo": "hyprland-qtutils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"hyprlang": {
|
"hyprlang": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"hyprutils": [
|
"hyprutils": [
|
||||||
@@ -483,11 +432,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1758927902,
|
"lastModified": 1776426736,
|
||||||
"narHash": "sha256-LZgMds7M94+vuMql2bERQ6LiFFdhgsEFezE4Vn+Ys3A=",
|
"narHash": "sha256-rl7i4aY+9p8LysJp7o8uRWahCkpFznCgGHXszlTw7b0=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprlang",
|
"repo": "hyprlang",
|
||||||
"rev": "4dafa28d4f79877d67a7d1a654cddccf8ebf15da",
|
"rev": "7833ff33b2e82d3406337b5dcf0d1cec595d83e9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -496,6 +445,58 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprtoolkit": {
|
||||||
|
"inputs": {
|
||||||
|
"aquamarine": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"aquamarine"
|
||||||
|
],
|
||||||
|
"hyprgraphics": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprgraphics"
|
||||||
|
],
|
||||||
|
"hyprlang": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprlang"
|
||||||
|
],
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"hyprwayland-scanner": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprland-guiutils",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772462885,
|
||||||
|
"narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprtoolkit",
|
||||||
|
"rev": "9af245a69fa6b286b88ddfc340afd288e00a6998",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprtoolkit",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"hyprutils": {
|
"hyprutils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
@@ -508,11 +509,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1759619523,
|
"lastModified": 1776428866,
|
||||||
"narHash": "sha256-r1ed7AR2ZEb2U8gy321/Xcp1ho2tzn+gG1te/Wxsj1A=",
|
"narHash": "sha256-XfRlBolGtjvalTHJp3XvvpYLBjkMhaZLLU0WqZ91Fcg=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprutils",
|
"repo": "hyprutils",
|
||||||
"rev": "3df7bde01efb3a3e8e678d1155f2aa3f19e177ef",
|
"rev": "eedd60805cd96d4442586f2ba5fe51d549b12674",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -533,11 +534,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1755184602,
|
"lastModified": 1776430932,
|
||||||
"narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=",
|
"narHash": "sha256-Yv3RPiUvl7CAsJgwIVsqcj7akn1gLyJP1F/mocof5hA=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprwayland-scanner",
|
"repo": "hyprwayland-scanner",
|
||||||
"rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d",
|
"rev": "4c2fcc06dc9722c97dbb54ba649c69b18ce83d2e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -546,6 +547,35 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprwire": {
|
||||||
|
"inputs": {
|
||||||
|
"hyprutils": [
|
||||||
|
"hyprland",
|
||||||
|
"hyprutils"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"hyprland",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"hyprland",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1776728575,
|
||||||
|
"narHash": "sha256-z9eGphrArEBpl1O/GCH0wlY6z4K9vA6yWh2gAS6qytU=",
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwire",
|
||||||
|
"rev": "f3a80888783702a39691b684d099e16b83ed4702",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hyprwm",
|
||||||
|
"repo": "hyprwire",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"lanzaboote": {
|
"lanzaboote": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"crane": "crane",
|
"crane": "crane",
|
||||||
@@ -627,11 +657,11 @@
|
|||||||
"nixpkgs": "nixpkgs_4"
|
"nixpkgs": "nixpkgs_4"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761563673,
|
"lastModified": 1776910211,
|
||||||
"narHash": "sha256-d+1TpVAmRjcNBfjZsh2yQSdwUfN7Xgz1blJ185g73+A=",
|
"narHash": "sha256-0ku3gW8bZ9TTpEU2fQw86oU6ZLT2vF6pacF+cLaf7VY=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NixOS-WSL",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "a518cf710e5ebb935518dc7ac98e07e7ee5014c3",
|
"rev": "4e6cad241baa0115a7aae8c55b04c166da4997c9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -690,11 +720,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-latest": {
|
"nixpkgs-latest": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761810199,
|
"lastModified": 1777053147,
|
||||||
"narHash": "sha256-iMLB/90mK7lncjk3GVYlAmN1K+D6/7JVhOSau3O7eK0=",
|
"narHash": "sha256-HKy3hSs6aE3zxEzopo1x1VCxQDnhkYOdZTQiKyLdPE0=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "d03f6e8ae73c291f8088abf52ae378c448a2cce3",
|
"rev": "45f31b3a6c29defa37f52d6294cad47342afd02c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -722,11 +752,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761672384,
|
"lastModified": 1776548001,
|
||||||
"narHash": "sha256-o9KF3DJL7g7iYMZq9SWgfS1BFlNbsm6xplRjVlOCkXI=",
|
"narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "08dacfca559e1d7da38f3cf05f1f45ee9bfd213c",
|
"rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -753,11 +783,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761114652,
|
"lastModified": 1776548001,
|
||||||
"narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=",
|
"narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c",
|
"rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -785,11 +815,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761373498,
|
"lastModified": 1776169885,
|
||||||
"narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=",
|
"narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce",
|
"rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -801,26 +831,26 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761468971,
|
"lastModified": 1776734388,
|
||||||
"narHash": "sha256-vY2OLVg5ZTobdroQKQQSipSIkHlxOTrIF1fsMzPh8w8=",
|
"narHash": "sha256-vl3dkhlE5gzsItuHoEMVe+DlonsK+0836LIRDnm6MXQ=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "78e34d1667d32d8a0ffc3eba4591ff256e80576e",
|
"rev": "10e7ad5bbcb421fe07e3a4ad53a634b0cd57ffac",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"id": "nixpkgs",
|
"id": "nixpkgs",
|
||||||
"ref": "nixos-25.05",
|
"ref": "nixos-25.11",
|
||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_6": {
|
"nixpkgs_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756288264,
|
"lastModified": 1776329215,
|
||||||
"narHash": "sha256-Om8adB1lfkU7D33VpR+/haZ2gI5r3Q+ZbIPzE5sYnwE=",
|
"narHash": "sha256-a8BYi3mzoJ/AcJP8UldOx8emoPRLeWqALZWu4ZvjPXw=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "ddd1826f294a0ee5fdc198ab72c8306a0ea73aa9",
|
"rev": "b86751bc4085f48661017fa226dee99fab6c651b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -894,11 +924,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1760663237,
|
"lastModified": 1776796298,
|
||||||
"narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=",
|
"narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=",
|
||||||
"owner": "cachix",
|
"owner": "cachix",
|
||||||
"repo": "git-hooks.nix",
|
"repo": "git-hooks.nix",
|
||||||
"rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37",
|
"rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -940,7 +970,6 @@
|
|||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"home-manager24": "home-manager24",
|
"home-manager24": "home-manager24",
|
||||||
"hyprland": "hyprland",
|
"hyprland": "hyprland",
|
||||||
"hyprland-plugins": "hyprland-plugins",
|
|
||||||
"lanzaboote": "lanzaboote",
|
"lanzaboote": "lanzaboote",
|
||||||
"nix-on-droid": "nix-on-droid",
|
"nix-on-droid": "nix-on-droid",
|
||||||
"nixos-wsl": "nixos-wsl",
|
"nixos-wsl": "nixos-wsl",
|
||||||
@@ -981,11 +1010,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1756348497,
|
"lastModified": 1776741231,
|
||||||
"narHash": "sha256-xJp3VnoYh4kpsaKFO/7SsGbwOz7pI1ZmjbqpXEuR2cw=",
|
"narHash": "sha256-k9G98qzn+7npROUaks8VqCFm7cFtEG8ulQLBBo5lItg=",
|
||||||
"owner": "oxalica",
|
"owner": "oxalica",
|
||||||
"repo": "rust-overlay",
|
"repo": "rust-overlay",
|
||||||
"rev": "0adf92c70d23fb4f703aea5d3ebb51ac65994f7f",
|
"rev": "02061303f7c4c964f7b4584dabd9e985b4cd442b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1017,11 +1046,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1760998189,
|
"lastModified": 1776771786,
|
||||||
"narHash": "sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY=",
|
"narHash": "sha256-DRFGPfFV6hbrfO9a1PH1FkCi7qR5FgjSqsQGGvk1rdI=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "5a7d18b5c55642df5c432aadb757140edfeb70b3",
|
"rev": "bef289e2248991f7afeb95965c82fbcd8ff72598",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1088,11 +1117,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1760713634,
|
"lastModified": 1776608502,
|
||||||
"narHash": "sha256-5HXelmz2x/uO26lvW7MudnadbAfoBnve4tRBiDVLtOM=",
|
"narHash": "sha256-UH8YoQxx4hFOm6qjMdjRQNRvSejFIR/wBZ8fW1p9sME=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
"rev": "753bbbdf6a052994da94062e5b753288cef28dfb",
|
"rev": "4a293523d36dfa367e67ec304cc718ea66a8fec2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -1108,11 +1137,11 @@
|
|||||||
"rust-overlay": "rust-overlay_2"
|
"rust-overlay": "rust-overlay_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1761655046,
|
"lastModified": 1776857719,
|
||||||
"narHash": "sha256-lG7eQqs8HDmmOl6vFkJ1iDlQBR+jY30uD4YtvWulCZc=",
|
"narHash": "sha256-gnim69MXLFFFQ61mnxJ9lvvFJmqXXTsgvjQJFtfD33c=",
|
||||||
"owner": "sxyazi",
|
"owner": "sxyazi",
|
||||||
"repo": "yazi",
|
"repo": "yazi",
|
||||||
"rev": "564b8851961a7545a93ebf04c0f8dd5778d0eccb",
|
"rev": "a2996908deddd4fc5061d18cf77f0af9f07b0e5a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
132
flake.nix
132
flake.nix
@@ -2,140 +2,90 @@
|
|||||||
description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
|
description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "nixpkgs/nixos-25.05";
|
nixpkgs.url = "nixpkgs/nixos-25.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";
|
||||||
nixpkgs24.url = "github:NixOS/nixpkgs/nixos-24.05";
|
nixpkgs24.url = "github:NixOS/nixpkgs/nixos-24.05";
|
||||||
|
|
||||||
home-manager = {
|
home-manager = { url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||||
url = "github:nix-community/home-manager/release-25.05";
|
home-manager24 = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs24"; };
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
home-manager24 ={
|
|
||||||
url = "github:nix-community/home-manager/release-24.05";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs24";
|
|
||||||
};
|
|
||||||
|
|
||||||
nix-on-droid = {
|
nix-on-droid = {
|
||||||
url = "github:nix-community/nix-on-droid/release-24.05";
|
url = "github:nix-community/nix-on-droid/release-24.05";
|
||||||
inputs.nixpkgs.follows = "nixpkgs24";
|
inputs = { nixpkgs.follows = "nixpkgs24"; home-manager.follows = "home-manager24"; };
|
||||||
inputs.home-manager.follows = "home-manager24";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||||
|
|
||||||
sops-nix ={
|
sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
|
||||||
url = "github:Mic92/sops-nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
|
|
||||||
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2";
|
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2";
|
||||||
|
|
||||||
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||||
hyprland-plugins = {
|
|
||||||
url = "github:hyprwm/hyprland-plugins";
|
|
||||||
inputs.hyprland.follows = "hyprland";
|
|
||||||
};
|
|
||||||
|
|
||||||
yazi.url = "github:sxyazi/yazi";
|
yazi.url = "github:sxyazi/yazi";
|
||||||
|
|
||||||
copyparty.url = "github:9001/copyparty";
|
copyparty.url = "github:9001/copyparty";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { ... }@inputs: with inputs; let
|
outputs = { ... }@inputs: with inputs; let
|
||||||
|
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
simple-pkgs = import nixpkgs { inherit system; };
|
simple-pkgs = import nixpkgs { inherit system; };
|
||||||
config = { allowUnfreePredicate = pkg: builtins.elem (simple-pkgs.lib.getName pkg) (import ./flake-modules/allowed.nix).unfree; };
|
get-pkgs = import ./flake-modules/pkgs.nix inputs simple-pkgs;
|
||||||
|
get-hyper = import ./flake-modules/hyper.nix;
|
||||||
hyper-base = rec {
|
secrets = import ./git-crypt/secrets.nix;
|
||||||
system = "x86_64-linux";
|
get-rice = import ./flake-modules/rice.nix simple-pkgs;
|
||||||
user = "nx2";
|
|
||||||
domain = "nx2.site";
|
|
||||||
home = "/home/${user}";
|
|
||||||
webroot = "/var/lib/hugo/nx2site/public";
|
|
||||||
};
|
|
||||||
|
|
||||||
get-pkgs = { host, system?system, nixpkgs?inputs.nixpkgs, version?"25.05" }: import nixpkgs {
|
|
||||||
inherit system config;
|
|
||||||
overlays = [(final: prev: {
|
|
||||||
unstable = import nixpkgs-unstable { inherit system config; };
|
|
||||||
latest = import nixpkgs-latest { inherit system config; };
|
|
||||||
inherit version;
|
|
||||||
})] ++ (if host == "NxACE" then [
|
|
||||||
copyparty.overlays.default
|
|
||||||
] else []);
|
|
||||||
};
|
|
||||||
|
|
||||||
nvidia-base = import ./flake-modules/nvidia.nix;
|
|
||||||
secrets = import ./git-crypt/secrets.nix;
|
|
||||||
rice = import ./flake-modules/rice.nix simple-pkgs;
|
|
||||||
in {
|
in {
|
||||||
nixosConfigurations = let
|
nixosConfigurations = let
|
||||||
make-nixos-system = host: nvidia-settings: nixpkgs.lib.nixosSystem {
|
make-nixos-system = host: let
|
||||||
pkgs = get-pkgs { inherit host; };
|
hyper = get-hyper host;
|
||||||
|
rice = get-rice hyper;
|
||||||
|
in nixpkgs.lib.nixosSystem {
|
||||||
|
pkgs = get-pkgs hyper;
|
||||||
modules = [ ./configuration.nix ];
|
modules = [ ./configuration.nix ];
|
||||||
specialArgs = let
|
specialArgs = { inherit inputs hyper rice secrets; };
|
||||||
hyper = hyper-base // { inherit host; nvidia = (nvidia-base // nvidia-settings); };
|
|
||||||
in { inherit inputs hyper rice secrets; };
|
|
||||||
};
|
};
|
||||||
make-nixos-wsl-system = host: nixpkgs.lib.nixosSystem {
|
make-nixos-wsl-system = host: let hyper = get-hyper host; in nixpkgs.lib.nixosSystem {
|
||||||
pkgs = get-pkgs { inherit host; };
|
pkgs = get-pkgs hyper;
|
||||||
modules = [ ./wsl.nix ];
|
modules = [ ./wsl.nix ];
|
||||||
specialArgs = let
|
specialArgs = { inherit inputs hyper rice; };
|
||||||
hyper = hyper-base // { inherit host; };
|
|
||||||
rice = import ./flake-modules/rice.nix pkgs;
|
|
||||||
in { inherit inputs hyper rice; };
|
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
NxXPS = make-nixos-system "NxXPS" { enable = true; prime = true; };
|
NxNORTH = make-nixos-system "NxNORTH";
|
||||||
NxNORTH = make-nixos-system "NxNORTH" { enable = true; prime = false; };
|
NxXPS = make-nixos-system "NxXPS";
|
||||||
NxACE = make-nixos-system "NxACE" { enable = false; };
|
NxACE = make-nixos-system "NxACE";
|
||||||
NxDCS = make-nixos-wsl-system "NxDCS";
|
NxDCS = make-nixos-wsl-system "NxDCS";
|
||||||
};
|
};
|
||||||
|
|
||||||
nixOnDroidConfigurations = let
|
nixOnDroidConfigurations = let
|
||||||
makeNODConfiguration = host: nix-on-droid.lib.nixOnDroidConfiguration rec {
|
makeNODConfiguration = host: nix-on-droid.lib.nixOnDroidConfiguration rec {
|
||||||
pkgs = let
|
hyper = get-hyper host;
|
||||||
options = { inherit host; system = "aarch64-linux"; };
|
pkgs = get-pkgs hyper;
|
||||||
in (get-pkgs options) //
|
|
||||||
(get-pkgs (options // { version = "24.05"; nixpkgs = nixpkgs24; } )
|
|
||||||
);
|
|
||||||
modules = [ ./nod.nix ];
|
modules = [ ./nod.nix ];
|
||||||
home-manager-path = home-manager24.outPath;
|
home-manager-path = home-manager24.outPath;
|
||||||
extraSpecialArgs = let
|
extraSpecialArgs = { inherit inputs hyper rice; };
|
||||||
hyper = hyper-base // {
|
|
||||||
inherit host;
|
|
||||||
system = "aarch64-linux";
|
|
||||||
user = "nix-on-droid";
|
|
||||||
home = "/data/data/com.termux.nix/files/home";
|
|
||||||
};
|
|
||||||
rice = import ./flake-modules/rice.nix pkgs;
|
|
||||||
in { inherit inputs hyper rice; };
|
|
||||||
};
|
};
|
||||||
in { NxS23U = makeNODConfiguration "NxS23U"; };
|
in { NxS23U = makeNODConfiguration "NxS23U"; };
|
||||||
|
|
||||||
homeConfigurations = let
|
homeConfigurations = let
|
||||||
make-home-configuration = host: user: nvidia-settings: home-manager.lib.homeManagerConfiguration {
|
make-home-configuration = host: let
|
||||||
pkgs = get-pkgs { inherit host; };
|
hyper = get-hyper host;
|
||||||
|
rice = get-rice hyper;
|
||||||
|
in home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = get-pkgs hyper;
|
||||||
modules = [ ./home.nix ];
|
modules = [ ./home.nix ];
|
||||||
extraSpecialArgs = let
|
extraSpecialArgs = { inherit inputs hyper rice secrets; };
|
||||||
hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
|
|
||||||
in { inherit inputs hyper rice secrets; };
|
|
||||||
};
|
};
|
||||||
make-shell-configuration = host: user: home-manager.lib.homeManagerConfiguration {
|
make-shell-configuration = host: let
|
||||||
pkgs = get-pkgs { inherit host; };
|
hyper = get-hyper host;
|
||||||
|
rice = get-rice hyper;
|
||||||
|
in home-manager.lib.homeManagerConfiguration {
|
||||||
|
pkgs = get-pkgs hyper;
|
||||||
modules = [ ./shell-only.nix ];
|
modules = [ ./shell-only.nix ];
|
||||||
extraSpecialArgs = let
|
extraSpecialArgs = { inherit inputs hyper rice secrets; };
|
||||||
hyper = hyper-base // { inherit host; };
|
|
||||||
in { inherit inputs hyper rice secrets; };
|
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
"${hyper-base.user}@NxXPS" = make-home-configuration "NxXPS" hyper-base.user { enable = true; prime = true; };
|
"nx2@NxXPS" = make-home-configuration "NxXPS";
|
||||||
"${hyper-base.user}@NxNORTH" = make-home-configuration "NxNORTH" hyper-base.user { enable = true; prime = false; };
|
"nx2@NxNORTH" = make-home-configuration "NxNORTH";
|
||||||
"${hyper-base.user}@NxACE" = make-home-configuration "NxACE" hyper-base.user { enable = false; };
|
"nx2@NxACE" = make-home-configuration "NxACE";
|
||||||
|
"nx2@NxDCS" = make-shell-configuration "NxDCS";
|
||||||
"${hyper-base.user}@NxDCS" = make-shell-configuration "NxDCS" hyper-base.user;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
@@ -7,10 +7,9 @@
|
|||||||
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
|
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
|
||||||
flakeIgnore = [ "E302" "E305" "E501" "E261" ];
|
flakeIgnore = [ "E302" "E305" "E501" "E261" ];
|
||||||
} /* python */ ''
|
} /* python */ ''
|
||||||
import os
|
|
||||||
import json
|
import json
|
||||||
from caldav import DAVClient
|
from caldav import DAVClient
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone, timedelta
|
||||||
from ics import Calendar
|
from ics import Calendar
|
||||||
from pytz import UTC
|
from pytz import UTC
|
||||||
|
|
||||||
@@ -33,13 +32,15 @@ def datetime_parser(dct):
|
|||||||
return dct
|
return dct
|
||||||
|
|
||||||
def load_cache(cache_file):
|
def load_cache(cache_file):
|
||||||
if os.path.exists(cache_file):
|
try:
|
||||||
with open(cache_file, "r") as file:
|
with open(cache_file, "r") as file:
|
||||||
return json.load(file, object_hook=datetime_parser)
|
return json.load(file, object_hook=datetime_parser)
|
||||||
return None
|
except (json.JSONDecodeError, FileNotFoundError):
|
||||||
|
return None
|
||||||
|
|
||||||
def save_cache(cache_file, data):
|
def save_cache(cache_file, data):
|
||||||
with open(cache_file, "w") as file:
|
with open(cache_file, "w") as file:
|
||||||
|
data['last_checked'] = datetime.now(timezone.utc)
|
||||||
json.dump(data, file, default=datetime_converter, indent=4)
|
json.dump(data, file, default=datetime_converter, indent=4)
|
||||||
|
|
||||||
|
|
||||||
@@ -59,6 +60,8 @@ def get_ongoing_or_next_event(url, username, password):
|
|||||||
|
|
||||||
for calendar in calendars:
|
for calendar in calendars:
|
||||||
for event in calendar.search(start=now):
|
for event in calendar.search(start=now):
|
||||||
|
if "VEVENT" not in event.data:
|
||||||
|
continue
|
||||||
calendar_parsed = Calendar(event.data)
|
calendar_parsed = Calendar(event.data)
|
||||||
for ics_event in calendar_parsed.events:
|
for ics_event in calendar_parsed.events:
|
||||||
event_dict = {}
|
event_dict = {}
|
||||||
@@ -73,7 +76,7 @@ def get_ongoing_or_next_event(url, username, password):
|
|||||||
return next_event_dict
|
return next_event_dict
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error accessing {url}: {e}")
|
print(f"Error accessing {url}: {str(e)}".splitlines()[0])
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def is_expired(event_dict: dict):
|
def is_expired(event_dict: dict):
|
||||||
@@ -81,6 +84,11 @@ def is_expired(event_dict: dict):
|
|||||||
event_end = event_dict['event_end'].timestamp()
|
event_end = event_dict['event_end'].timestamp()
|
||||||
return not (now <= event_end)
|
return not (now <= event_end)
|
||||||
|
|
||||||
|
def is_too_old(event_dict: dict) -> bool:
|
||||||
|
last_checked = event_dict['last_checked']
|
||||||
|
now = datetime.now(timezone.utc)
|
||||||
|
return now - last_checked >= timedelta(minutes=10)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
password_file = "${config.sops.secrets."nx2site/radicale/password".path}" # Path to password file
|
password_file = "${config.sops.secrets."nx2site/radicale/password".path}" # Path to password file
|
||||||
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
|
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
|
||||||
@@ -91,7 +99,7 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
event_dict = load_cache(cache_file)
|
event_dict = load_cache(cache_file)
|
||||||
|
|
||||||
if (event_dict is None) or (is_expired(event_dict)):
|
if (event_dict is None) or is_expired(event_dict) or is_too_old(event_dict):
|
||||||
event_dict = get_ongoing_or_next_event(url, username, password)
|
event_dict = get_ongoing_or_next_event(url, username, password)
|
||||||
save_cache(cache_file, event_dict)
|
save_cache(cache_file, event_dict)
|
||||||
|
|
||||||
@@ -120,7 +128,7 @@ if __name__ == "__main__":
|
|||||||
else:
|
else:
|
||||||
time_string = "in " + hour_string + "and " + minu_string
|
time_string = "in " + hour_string + "and " + minu_string
|
||||||
|
|
||||||
print(f"\'{event_dict['event_name']}\' {action_string} {time_string}")
|
print(f"\'{event_dict['event_name']}\' {action_string} {time_string}".splitlines()[0])
|
||||||
'')
|
'')
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
} // pkgs.lib.mkIf (pkgs.version != "24.05") {
|
} // pkgs.lib.mkIf (pkgs.version != "24.05") {
|
||||||
shellInit = init;
|
shellInit = init;
|
||||||
} // pkgs.lib.mkIf (pkgs.version != "25.05") {
|
} // pkgs.lib.mkIf (pkgs.version != "25.11") {
|
||||||
profileExtra = init;
|
profileExtra = init;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all;
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
bitwarden
|
bitwarden-desktop
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,30 +1,41 @@
|
|||||||
{ pkgs, ... }@all: with all; let
|
{ pkgs, ... }@all: with all; let
|
||||||
calendars = with hyper; [
|
v = "nxc";
|
||||||
|
user = "lennart";
|
||||||
|
domain = hyper.domain;
|
||||||
|
calendars = [
|
||||||
{
|
{
|
||||||
name = "Preservation";
|
name = "Preservation";
|
||||||
primary = true;
|
primary = true;
|
||||||
url = "https://dav.${domain}/${user}/preservation/";
|
url = "https://${v}.${domain}/${user}/calendars/preservation/";
|
||||||
color = "#dddddd";
|
color = "#dddddd";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "Effort";
|
name = "Effort";
|
||||||
url = "https://dav.${domain}/${user}/effort/";
|
url = "https://${v}.${domain}/${user}/calendars/effort/";
|
||||||
color = "#dd2222";
|
color = "#dd2222";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "Experience";
|
name = "Experience";
|
||||||
url = "https://dav.${domain}/${user}/experience/";
|
url = "https://${v}.${domain}/${user}/calendars/experience/";
|
||||||
color = "#2222dd";
|
color = "#2222dd";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "Exposure";
|
name = "Leisure";
|
||||||
url = "https://dav.${domain}/${user}/exposure/";
|
# name = "Exposure";
|
||||||
|
url = "https://${v}.${domain}/${user}/calendars/leisure/";
|
||||||
|
# url = "https://${v}.${domain}/${user}/exposure/";
|
||||||
color = "#22aa22";
|
color = "#22aa22";
|
||||||
}
|
}
|
||||||
|
# {
|
||||||
|
# name = "Engagement";
|
||||||
|
# url = "https://${v}.${domain}/${user}/engagement/";
|
||||||
|
# color = "#8800CC";
|
||||||
|
# }
|
||||||
|
# {
|
||||||
{
|
{
|
||||||
name = "Engagement";
|
name = "Family";
|
||||||
url = "https://dav.${domain}/${user}/engagement/";
|
url = "https://${v}.${domain}/shared/calendars/family/";
|
||||||
color = "#8800CC";
|
color = "#dddd22";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "Sleep as Android";
|
name = "Sleep as Android";
|
||||||
@@ -40,20 +51,6 @@
|
|||||||
read-only = true;
|
read-only = true;
|
||||||
type = "ics";
|
type = "ics";
|
||||||
}
|
}
|
||||||
{
|
|
||||||
name = "LR";
|
|
||||||
url = "https://${domain}/lr.ics";
|
|
||||||
color = "#005040";
|
|
||||||
read-only = true;
|
|
||||||
type = "ics";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
name = "Worlds";
|
|
||||||
url = "https://zlypher.github.io/lol-events/cal/league-of-legends-world-championship.ical";
|
|
||||||
color = "#A4C3DE";
|
|
||||||
read-only = true;
|
|
||||||
type = "ics";
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
name = "Feiertage Hessen";
|
name = "Feiertage Hessen";
|
||||||
url = "https://ics.tools/Feiertage/hessen.ics";
|
url = "https://ics.tools/Feiertage/hessen.ics";
|
||||||
@@ -102,7 +99,7 @@ in {
|
|||||||
"calendar.registry.${to_safe_name calendar.name}.name" = name;
|
"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}.type" = type;
|
||||||
"calendar.registry.${to_safe_name calendar.name}.uri" = url;
|
"calendar.registry.${to_safe_name calendar.name}.uri" = url;
|
||||||
"calendar.registry.${to_safe_name calendar.name}.username" = hyper.user;
|
"calendar.registry.${to_safe_name calendar.name}.username" = user;
|
||||||
"calendar.registry.${to_safe_name calendar.name}.readOnly" = read-only;
|
"calendar.registry.${to_safe_name calendar.name}.readOnly" = read-only;
|
||||||
}) calendars
|
}) calendars
|
||||||
) // {
|
) // {
|
||||||
|
|||||||
@@ -7,18 +7,19 @@ let
|
|||||||
# "Caedrel"
|
# "Caedrel"
|
||||||
# "EintrachtSpandau"
|
# "EintrachtSpandau"
|
||||||
# "GamesDoneQuick"
|
# "GamesDoneQuick"
|
||||||
"Odoamne"
|
# "Odoamne"
|
||||||
"iwdominate"
|
"iwdominate"
|
||||||
"imls"
|
# "imls"
|
||||||
"gdolphn"
|
"gdolphn"
|
||||||
"GRONKH"
|
"GRONKH"
|
||||||
"handofblood"
|
"handofblood"
|
||||||
"HisWattson"
|
"HisWattson"
|
||||||
"Jankos"
|
# "Jankos"
|
||||||
# "KuruHS"
|
# "KuruHS"
|
||||||
"LEC"
|
"LEC"
|
||||||
"lol_nemesis"
|
"lol_nemesis"
|
||||||
# "NASA"
|
# "NASA"
|
||||||
|
"nattynattlol"
|
||||||
"NoWay4u_Sir"
|
"NoWay4u_Sir"
|
||||||
# "OfficialMikeShinoda"
|
# "OfficialMikeShinoda"
|
||||||
"Rekkles"
|
"Rekkles"
|
||||||
@@ -50,7 +51,7 @@ in {
|
|||||||
|
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
chatterino2
|
unstable.chatterino2
|
||||||
streamlink
|
streamlink
|
||||||
# mpv
|
# mpv
|
||||||
];
|
];
|
||||||
@@ -191,7 +192,7 @@ in {
|
|||||||
},
|
},
|
||||||
"misc": {
|
"misc": {
|
||||||
"askOnTabVisibilityToggle": false,
|
"askOnTabVisibilityToggle": false,
|
||||||
"currentVersion": "2.5.3",
|
"currentVersion": "2.5.5",
|
||||||
"lockNotebookLayout": false
|
"lockNotebookLayout": false
|
||||||
},
|
},
|
||||||
"similarity": {
|
"similarity": {
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all; lib.mkIf (hyper.isPersonal) {
|
||||||
lib.mkIf (hyper.host != "NxACE")
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
thunderbird
|
thunderbird
|
||||||
];
|
];
|
||||||
@@ -136,36 +134,22 @@ lib.mkIf (hyper.host != "NxACE")
|
|||||||
settings = OAuth2Settings;
|
settings = OAuth2Settings;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
# pnx-nix = {
|
||||||
# hsmw = with secrets.email.hsmw; {
|
# address = secrets.email.pnx.mail;
|
||||||
# address = "${un}@hs-mittweida.de";
|
|
||||||
# userName = "${un}@hs-mittweida.de";
|
|
||||||
# realName = "Lennart J. Kurzweg";
|
# realName = "Lennart J. Kurzweg";
|
||||||
# imap = {
|
# flavor = "outlook.office365.com";
|
||||||
# port = 993;
|
|
||||||
# host = "xc.hs-mittweida.de";
|
|
||||||
# };
|
|
||||||
# smtp = {
|
|
||||||
# port = 587;
|
|
||||||
# host = "xc.hs-mittweida.de";
|
|
||||||
# tls.useStartTls = true;
|
|
||||||
# };
|
|
||||||
# signature = {
|
# signature = {
|
||||||
# text = ''
|
# text = ''
|
||||||
# MatNr: ${mnr}
|
# Phönix Metallbau GmbH
|
||||||
# SemGr: ${semgr}
|
# Tel: 036374 2270
|
||||||
# About Me: https://nx2.site/about-me
|
|
||||||
# Contact: https://nx2.site/contact
|
|
||||||
# GPG: https://nx2.site/gpg
|
|
||||||
# '';
|
# '';
|
||||||
# showSignature = "append";
|
# showSignature = "append";
|
||||||
# };
|
# };
|
||||||
# thunderbird = {
|
# thunderbird = mkIf config.thunderbird.enable {
|
||||||
# enable = true;
|
# enable = true;
|
||||||
# profiles = [ "nx2" ];
|
# profiles = [ "nx2" ];
|
||||||
# settings = id: {
|
# # The id given as argument is an automatically generated account identifier.
|
||||||
# "mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
|
# # settings = OAuth2Settings;
|
||||||
# };
|
|
||||||
# };
|
# };
|
||||||
# };
|
# };
|
||||||
tuda = with secrets.email.tuda; {
|
tuda = with secrets.email.tuda; {
|
||||||
@@ -195,9 +179,34 @@ lib.mkIf (hyper.host != "NxACE")
|
|||||||
thunderbird = {
|
thunderbird = {
|
||||||
enable = true;
|
enable = true;
|
||||||
profiles = [ "nx2" ];
|
profiles = [ "nx2" ];
|
||||||
settings = id: {
|
settings = id: { };
|
||||||
"mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
|
};
|
||||||
};
|
};
|
||||||
|
nx2site = {
|
||||||
|
address = "lennart@${hyper.domain}";
|
||||||
|
userName = "lennart@${hyper.domain}";
|
||||||
|
realName = "Lennart J. Kurzweg";
|
||||||
|
imap = {
|
||||||
|
port = 143;
|
||||||
|
host = "mail.${hyper.domain}";
|
||||||
|
tls.useStartTls = true;
|
||||||
|
};
|
||||||
|
smtp = {
|
||||||
|
port = 587;
|
||||||
|
host = "mail.${hyper.domain}";
|
||||||
|
tls.useStartTls = true;
|
||||||
|
};
|
||||||
|
signature = {
|
||||||
|
text = ''
|
||||||
|
About Me: https://nx2.site/about-me
|
||||||
|
Contact: https://nx2.site/contact
|
||||||
|
GPG: https://nx2.site/gpg
|
||||||
|
'';
|
||||||
|
showSignature = "append";
|
||||||
|
};
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
profiles = [ "nx2" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -205,3 +214,35 @@ lib.mkIf (hyper.host != "NxACE")
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# hsmw = with secrets.email.hsmw; {
|
||||||
|
# address = "${un}@hs-mittweida.de";
|
||||||
|
# userName = "${un}@hs-mittweida.de";
|
||||||
|
# realName = "Lennart J. Kurzweg";
|
||||||
|
# imap = {
|
||||||
|
# port = 993;
|
||||||
|
# host = "xc.hs-mittweida.de";
|
||||||
|
# };
|
||||||
|
# smtp = {
|
||||||
|
# port = 587;
|
||||||
|
# host = "xc.hs-mittweida.de";
|
||||||
|
# tls.useStartTls = true;
|
||||||
|
# };
|
||||||
|
# signature = {
|
||||||
|
# text = ''
|
||||||
|
# MatNr: ${mnr}
|
||||||
|
# SemGr: ${semgr}
|
||||||
|
# About Me: https://nx2.site/about-me
|
||||||
|
# Contact: https://nx2.site/contact
|
||||||
|
# GPG: https://nx2.site/gpg
|
||||||
|
# '';
|
||||||
|
# showSignature = "append";
|
||||||
|
# };
|
||||||
|
# thunderbird = {
|
||||||
|
# enable = true;
|
||||||
|
# profiles = [ "nx2" ];
|
||||||
|
# settings = id: {
|
||||||
|
# "mail.server.server_${id}.fcc_folder" = "imap://${un}%40hs-mittweida.de@xc.hs-mittweida.de/Sent";
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
figlet
|
figlet
|
||||||
(pkgs.writeShellScriptBin "fgl" ''
|
(pkgs.writeShellScriptBin "nxfgl" ''
|
||||||
figlet -f ${hyper.home}/.local/share/figlet/nx2.flf -w 9999
|
figlet -f ${hyper.home}/.local/share/figlet/nx2.flf -w 9999
|
||||||
'')
|
'')
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -65,7 +65,8 @@ in /* css */ ''
|
|||||||
|
|
||||||
background : linear-gradient(180deg,rgba(${f secondary.dark}, ${builtins.toString rice.transparency}) 0%, rgba(${f accent.dark}, ${builtins.toString rice.transparency}) 100%) !important;
|
background : linear-gradient(180deg,rgba(${f secondary.dark}, ${builtins.toString rice.transparency}) 0%, rgba(${f accent.dark}, ${builtins.toString rice.transparency}) 100%) !important;
|
||||||
}
|
}
|
||||||
.tabbrowser-tab[selected="true"] {
|
.tabbrowser-tab[selected="true"], .tab-text[selected=""],
|
||||||
|
.tab-close-button[selected=""] {
|
||||||
color: ${background} !important;
|
color: ${background} !important;
|
||||||
}
|
}
|
||||||
hbox#browser {
|
hbox#browser {
|
||||||
|
|||||||
@@ -39,6 +39,9 @@ in /* css */ ''
|
|||||||
body, html, .bg-neutral-background, .threadline, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar, comment-body-header, shreddit-comment-tree, #flex-left-nav-container {
|
body, html, .bg-neutral-background, .threadline, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar, comment-body-header, shreddit-comment-tree, #flex-left-nav-container {
|
||||||
background-color: transparent !important;
|
background-color: transparent !important;
|
||||||
}
|
}
|
||||||
|
#search-dropdown-results-container {
|
||||||
|
background: rgba(${f background},0.8) !important;
|
||||||
|
}
|
||||||
#main-content {
|
#main-content {
|
||||||
background-color: rgba(${f background},0.5)!important;
|
background-color: rgba(${f background},0.5)!important;
|
||||||
}
|
}
|
||||||
@@ -77,6 +80,11 @@ in /* css */ ''
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@-moz-document domain(gemini.google.com) {
|
||||||
|
input-container::before {
|
||||||
|
background: none !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media (prefers-color-scheme: dark) {
|
@media (prefers-color-scheme: dark) {
|
||||||
:root .theme-system {
|
:root .theme-system {
|
||||||
@@ -122,7 +130,17 @@ in /* css */ ''
|
|||||||
background-color: transparent !important;
|
background-color: transparent !important;
|
||||||
}
|
}
|
||||||
header, footer {
|
header, footer {
|
||||||
background-color: rgba(0,0,0,1) !important;
|
background-color: rgba(0,0,0,0.5) !important;
|
||||||
|
backdrop-filter: blur(100px);
|
||||||
|
border-radius: ${builtins.toString rice.rounding}px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@-moz-document domain(notebooklm.google.com) {
|
||||||
|
body, html, notebook, omnibar {
|
||||||
|
background-color: transparent !important;
|
||||||
|
}
|
||||||
|
header, footer, .studio-panel, .chat-panel, .source-panel {
|
||||||
|
background-color: rgba(0,0,0,0.5) !important;
|
||||||
backdrop-filter: blur(100px);
|
backdrop-filter: blur(100px);
|
||||||
border-radius: ${builtins.toString rice.rounding}px;
|
border-radius: ${builtins.toString rice.rounding}px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,11 +25,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 | sed 's/./\U&/')
|
$(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\&/')
|
||||||
$(echo -e "$logo" | sed -n 8p): ''$(uname -r | sed -E 's=(.+-.+-.+-.+)-.+=\1=g')
|
$(echo -e "$logo" | sed -n 8p): ''$(uname -r | 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 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | awk '{print toupper(substr($0,1,1)) substr($0,2)}')
|
||||||
$(echo -e "$logo" | sed -n 10p): $(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 | sed 's/./\U&/')
|
$(echo -e "$logo" | sed -n 11p): $(starship --version | head -n 1 | awk '{print toupper(substr($0,1,1)) substr($0,2)}')
|
||||||
"
|
"
|
||||||
echo -e "$msg"
|
echo -e "$msg"
|
||||||
'')
|
'')
|
||||||
@@ -96,16 +96,17 @@
|
|||||||
interactiveShellInit = /* fish */ ''
|
interactiveShellInit = /* fish */ ''
|
||||||
set -g fish_greeting
|
set -g fish_greeting
|
||||||
if not set -q IN_NIX_SHELL
|
if not set -q IN_NIX_SHELL
|
||||||
if set -q SESSION_FROM_DE
|
if set -q SESSION_FROM_DE; or set -q SESSION_CLONED_FROM_YAZI
|
||||||
|
set -e SESSION_FROM_DE
|
||||||
|
set -e SESSION_CLONED_FROM_YAZI
|
||||||
set tmp (mktemp -t "yazi-cwd.XXXXX")
|
set tmp (mktemp -t "yazi-cwd.XXXXX")
|
||||||
yazi --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" ]
|
||||||
builtin cd -- "$cwd"
|
builtin cd -- "$cwd"
|
||||||
end
|
end
|
||||||
rm -f -- "$tmp"
|
rm -f -- "$tmp"
|
||||||
end
|
end
|
||||||
nxfetch
|
nxfetch
|
||||||
set -e SESSION_FROM_DE
|
|
||||||
end
|
end
|
||||||
'';
|
'';
|
||||||
functions = {
|
functions = {
|
||||||
@@ -115,10 +116,21 @@
|
|||||||
'';
|
'';
|
||||||
nx_backup = let
|
nx_backup = let
|
||||||
destination = if hyper.host == "NxNORTH" then "${hyper.home}/shared/" else "${hyper.home}/backups/";
|
destination = if hyper.host == "NxNORTH" then "${hyper.home}/shared/" else "${hyper.home}/backups/";
|
||||||
in pkgs.lib.mkIf (hyper.host == "NxXPS" || hyper.host == "NxNORTH") ''
|
in pkgs.lib.mkIf (hyper.isPersonal) /* fish */ ''
|
||||||
set RPATH (curl -s https://${hyper.domain}/latest-backup)
|
set RPATH (curl -s https://${hyper.domain}/latest-backup)
|
||||||
rsync -avz --info=progress2 -e "ssh -p ${builtins.toString secrets.ssh.port}" ${hyper.user}@ssh.${hyper.domain}:"$RPATH" ${destination}
|
rsync -avz --info=progress2 -e "ssh -p ${builtins.toString secrets.ssh.port}" ${hyper.user}@ssh.${hyper.domain}:"$RPATH" ${destination}
|
||||||
'';
|
'';
|
||||||
|
nx_yazi_into_fish = /* fish */ ''
|
||||||
|
set tmp (mktemp -t "yazi-cwd.XXXXX")
|
||||||
|
echo "$PWD" > "$tmp"
|
||||||
|
yazi --cwd-file="$tmp"
|
||||||
|
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||||
|
builtin cd -- "$cwd"
|
||||||
|
end
|
||||||
|
rm -f "$tmp"
|
||||||
|
set -g SESSION_CLONED_FROM_YAZI TRUE
|
||||||
|
'';
|
||||||
|
|
||||||
# gpg = '';
|
# gpg = '';
|
||||||
# set bold \e[1m
|
# set bold \e[1m
|
||||||
# set green \e[32m
|
# set green \e[32m
|
||||||
|
|||||||
@@ -1,20 +1,19 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all; {
|
||||||
lib.mkIf (hyper.host == "NxNORTH")
|
|
||||||
{
|
|
||||||
home = {
|
home = {
|
||||||
packages = (with pkgs.unstable; [
|
packages = (with pkgs; [
|
||||||
protonup-ng
|
unstable.protonup-ng
|
||||||
mangohud
|
unstable.mangohud
|
||||||
|
]) ++ (if hyper.host == "NxNORTH" then (with pkgs; [
|
||||||
prismlauncher
|
unstable.prismlauncher
|
||||||
|
heroic
|
||||||
# heroic
|
|
||||||
|
|
||||||
# mindustry-wayland
|
# mindustry-wayland
|
||||||
]) ++ [ pkgs.heroic ];
|
]) else if hyper.host == "NxXPS" then (with pkgs; [
|
||||||
sessionVariables = {
|
heroic
|
||||||
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d";
|
]) else if hyper.host == "NxACE" then (with pkgs; [
|
||||||
};
|
heroic
|
||||||
|
]) else []);
|
||||||
|
|
||||||
|
sessionVariables.STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
package = pkgs.ghostty;
|
package = pkgs.ghostty;
|
||||||
settings = with rice.color; {
|
settings = with rice.color; {
|
||||||
background = background;
|
background = background;
|
||||||
|
window-padding-color = "extend";
|
||||||
background-opacity = builtins.toString rice.transparency;
|
background-opacity = builtins.toString rice.transparency;
|
||||||
clipboard-paste-protection = false;
|
clipboard-paste-protection = false;
|
||||||
clipboard-read = "allow";
|
clipboard-read = "allow";
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all; {
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# (gimp-with-plugins.override {
|
|
||||||
# plugins = with gimpPlugins; [ bimp ];
|
|
||||||
# })
|
|
||||||
gimp
|
gimp
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,13 +5,27 @@
|
|||||||
(writeShellScriptBin "gst" "awk -vOFS='' 'NR==FNR {all[i++] = $0; difffiles[$1] = $0; next;} ! ($2 in difffiles) {print; next;} {gsub($2, difffiles[$2]); print;} END {if (NR != FNR) {exit;} for (i in all) {print all[i];}}' <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') <(git -c color.status=always status -sb)")
|
(writeShellScriptBin "gst" "awk -vOFS='' 'NR==FNR {all[i++] = $0; difffiles[$1] = $0; next;} ! ($2 in difffiles) {print; next;} {gsub($2, difffiles[$2]); print;} END {if (NR != FNR) {exit;} for (i in all) {print all[i];}}' <(git diff --color --stat=$(($(tput cols) - 3)) HEAD | sed '$d; s/^ //') <(git -c color.status=always status -sb)")
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.git = {
|
programs = {
|
||||||
enable = true;
|
git = {
|
||||||
package = pkgs.gitFull;
|
enable = true;
|
||||||
userName = ''Lennart J. Kurzweg (Nx2)'';
|
package = pkgs.gitFull;
|
||||||
userEmail = "git@${hyper.domain}";
|
settings = {
|
||||||
|
user = {
|
||||||
|
Name = ''Lennart J. Kurzweg (Nx2)'';
|
||||||
|
Email = "git@${hyper.domain}";
|
||||||
|
};
|
||||||
|
credential = {
|
||||||
|
"https://git.da.dicos.de".username = lib.mkIf (hyper.host == "NxDCS") "lkurzweg";
|
||||||
|
"https://git.da.dicos.de".password = lib.mkIf (hyper.host == "NxDCS") "Test";
|
||||||
|
};
|
||||||
|
url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host == "NxDCS") "https://git.da.dicos.de/";
|
||||||
|
url."ssh://git@github.com/".insteadOf = "https://github.com/";
|
||||||
|
pull.rebase = false; # true
|
||||||
|
};
|
||||||
|
};
|
||||||
delta = {
|
delta = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
enableGitIntegration = true;
|
||||||
options = {
|
options = {
|
||||||
line-numbers = true;
|
line-numbers = true;
|
||||||
side-by-side = false;
|
side-by-side = false;
|
||||||
@@ -19,36 +33,27 @@
|
|||||||
whitespace-error-style = "22 reverse";
|
whitespace-error-style = "22 reverse";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
extraConfig = {
|
lazygit = {
|
||||||
credential = {
|
enable = true;
|
||||||
"https://git.da.dicos.de".username = lib.mkIf (hyper.host =="NxDCS") "lkurzweg";
|
package = pkgs.lazygit;
|
||||||
"https://git.da.dicos.de".password = lib.mkIf (hyper.host =="NxDCS") "Test";
|
settings = {
|
||||||
};
|
windowSize = "normal";
|
||||||
url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host =="NxDCS") "https://git.da.dicos.de/";
|
gui.theme = with rice.color; {
|
||||||
url."ssh://git@github.com/".insteadOf = "https://github.com/";
|
lightTheme = false;
|
||||||
pull.rebase = false; # true
|
activeBorderColor = [ foreground "bold" ];
|
||||||
};
|
inactiveBorderColor = [ border ];
|
||||||
};
|
optionsTextColor = [ tertiary.base ];
|
||||||
programs.lazygit = {
|
selectedLineBgColor = [ secondary.base ];
|
||||||
enable = true;
|
selectedRangeByColor = [ weird.bright ];
|
||||||
package = pkgs.lazygit;
|
showRandomTip = true;
|
||||||
settings = {
|
animateExplosion = true;
|
||||||
windowSize = "normal";
|
cherryPickedCommitFgColor = [ accent.base ]; # Foreground color of copied commit
|
||||||
gui.theme = with rice.color; {
|
cherryPickedCommitBgColor = [ secondary.dark ]; # Background color of copied commit
|
||||||
lightTheme = false;
|
markedBaseCommitFgColor = [ accent.base ]; # Foreground color of marked base commit (for rebase)
|
||||||
activeBorderColor = [ foreground "bold" ];
|
markedBaseCommitBgColor = [ secondary.dark ]; # Background color of marked base commit (for rebase)
|
||||||
inactiveBorderColor = [ border ];
|
unstagedChangesColor = [ negative.base ]; # Color for file with unstaged changes
|
||||||
optionsTextColor = [ tertiary.base ];
|
defaultFgColor = [ "default" ]; # Default text color
|
||||||
selectedLineBgColor = [ secondary.base ];
|
};
|
||||||
selectedRangeByColor = [ weird.bright ];
|
|
||||||
showRandomTip = true;
|
|
||||||
animateExplosion = true;
|
|
||||||
cherryPickedCommitFgColor = [ accent.base ]; # Foreground color of copied commit
|
|
||||||
cherryPickedCommitBgColor = [ secondary.dark ]; # Background color of copied commit
|
|
||||||
markedBaseCommitFgColor = [ accent.base ]; # Foreground color of marked base commit (for rebase)
|
|
||||||
markedBaseCommitBgColor = [ secondary.dark ]; # Background color of marked base commit (for rebase)
|
|
||||||
unstagedChangesColor = [ negative.base ]; # Color for file with unstaged changes
|
|
||||||
defaultFgColor = [ "default" ]; # Default text color
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
{ pkgs, ... }@all: with all; {
|
{ pkgs, ... }@all: with all; {
|
||||||
home.packages = with pkgs; [ pinentry-all ];
|
home.packages = with pkgs; [
|
||||||
|
# pinentry-all
|
||||||
|
# pinentry-curses
|
||||||
|
pinentry-gtk2
|
||||||
|
# pinentry-tty
|
||||||
|
];
|
||||||
programs.gpg = {
|
programs.gpg = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.gnupg;
|
package = pkgs.gnupg;
|
||||||
|
|||||||
@@ -98,7 +98,6 @@
|
|||||||
cursor-shape = {
|
cursor-shape = {
|
||||||
normal = "block";
|
normal = "block";
|
||||||
insert = "bar";
|
insert = "bar";
|
||||||
select = "underline";
|
|
||||||
};
|
};
|
||||||
file-picker = {
|
file-picker = {
|
||||||
hidden = false; # Enables ignoring hidden files
|
hidden = false; # Enables ignoring hidden files
|
||||||
@@ -190,7 +189,7 @@
|
|||||||
keys = {
|
keys = {
|
||||||
normal = {
|
normal = {
|
||||||
"C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ];
|
"C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ];
|
||||||
"C-i" = [ ":pipe fgl" "toggle_comments" ];
|
"C-m" = [ ":pipe nxfgl" "toggle_comments" ];
|
||||||
"A-`" = [ "no_op" ];
|
"A-`" = [ "no_op" ];
|
||||||
"`" = [ "no_op" ];
|
"`" = [ "no_op" ];
|
||||||
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
|
"ö" = { "s" = [ "switch_case" ]; "u" = [ "switch_to_uppercase" ]; "l" = [ "switch_to_lowercase" ]; };
|
||||||
@@ -212,14 +211,33 @@
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "typst";
|
name = "typst";
|
||||||
|
language-servers = [ "tinymist" ];
|
||||||
|
# language-servers = [ "language-tool" "tinymist" ];
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "typst-with-language-tool";
|
||||||
|
scope = "";
|
||||||
language-servers = [ "language-tool" "tinymist" ];
|
language-servers = [ "language-tool" "tinymist" ];
|
||||||
|
injection-regex = "";
|
||||||
|
file-types = [""];
|
||||||
|
comment-tokens = "//";
|
||||||
|
indent = { tab-width = 2; unit = " "; };
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
name = "markdown";
|
name = "markdown";
|
||||||
language-servers = [ "language-tool" "marksman" ];
|
language-servers = [ "marksman" ];
|
||||||
file-types = [ "md" "MD" ];
|
file-types = [ "md" "MD" ];
|
||||||
scope = "text.<name>";
|
scope = "text.<name>";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "markdown-with-language-tool";
|
||||||
|
language-servers = [ "language-tool" "marksman" ];
|
||||||
|
scope = "text.<name>";
|
||||||
|
injection-regex = "";
|
||||||
|
file-types = [""];
|
||||||
|
# blcok-comment-tokens = { start = "<!--"; end = "-->"; };
|
||||||
|
indent = { tab-width = 2; unit = " "; };
|
||||||
|
}
|
||||||
{
|
{
|
||||||
name = "python";
|
name = "python";
|
||||||
language-servers = [ "pyright" "ruff" ];
|
language-servers = [ "pyright" "ruff" ];
|
||||||
@@ -298,37 +316,45 @@
|
|||||||
base16 = with rice.color; {
|
base16 = with rice.color; {
|
||||||
"attributes" = foreground;
|
"attributes" = foreground;
|
||||||
"comment" = {
|
"comment" = {
|
||||||
fg = black.bright;
|
fg = subtle.base;
|
||||||
modifiers = [ "italic" ];
|
modifiers = [ "italic" ];
|
||||||
};
|
};
|
||||||
"constant" = accent.bright;
|
"constant" = accent.bright;
|
||||||
"constant.character.escape" = special.bright;
|
"constant.character.escape" = special.bright;
|
||||||
"constant.numeric" = foreground;
|
"constant.numeric" = foreground;
|
||||||
"constructor" = weird.base;
|
"constructor" = secondary.bright;
|
||||||
"debug" = yellow.base;
|
"debug" = yellow.base;
|
||||||
"diagnostic.modifiers" = [ "underline" ];
|
"diff.delta" = subtle.bright;
|
||||||
"diff.delta" = blue.bright;
|
|
||||||
"diff.minus" = negative.bright;
|
"diff.minus" = negative.bright;
|
||||||
"diff.plus" = positive.bright;
|
"diff.plus" = positive.bright;
|
||||||
"error" = red.base;
|
"error" = negative.base;
|
||||||
"function" = secondary.bright;
|
"function" = secondary.bright;
|
||||||
"hint" = tertiary.bright;
|
"hint" = tertiary.bright;
|
||||||
"info" = foreground;
|
"info" = foreground;
|
||||||
"keyword" = special.base;
|
"keyword" = {
|
||||||
"keyword.modifiers" = [ "italic" ];
|
fg = special.base;
|
||||||
|
modifiers = [ "bold" ];
|
||||||
|
};
|
||||||
"label" = foreground;
|
"label" = foreground;
|
||||||
"namespace" = weird.bright;
|
"namespace" = weird.bright;
|
||||||
"operator" = foreground;
|
"operator" = foreground;
|
||||||
"special" = special.base;
|
"special" = special.base;
|
||||||
"string" = secondary.bright;
|
"string" = secondary.bright;
|
||||||
"type" = red.base;
|
"type" = {
|
||||||
"variable" = accent.base;
|
fg = tertiary.base;
|
||||||
"variableother.member" = foreground;
|
};
|
||||||
"warning" = red.base;
|
"variable" = { fg = accent.base; };
|
||||||
|
"variable.builtin" = { fg = accent.base; bg = subtle.darker; };
|
||||||
|
"variable.parameter" = { fg = accent.base; bg = accent.darker; };
|
||||||
|
"warning" = yellow.base;
|
||||||
|
|
||||||
"markup.heading" = accent.base;
|
"markup.heading" = {
|
||||||
|
fg = accent.base;
|
||||||
|
bg = accent.darker;
|
||||||
|
modifiers = [ "bold" ];
|
||||||
|
};
|
||||||
"markup.bold" = {
|
"markup.bold" = {
|
||||||
fg = tertiary.bright;
|
fg = secondary.bright;
|
||||||
modifiers = [ "bold" ];
|
modifiers = [ "bold" ];
|
||||||
};
|
};
|
||||||
"italic" = {
|
"italic" = {
|
||||||
@@ -338,7 +364,7 @@
|
|||||||
"markup.linktext" = accent.base;
|
"markup.linktext" = accent.base;
|
||||||
"markup.linkurl" = {
|
"markup.linkurl" = {
|
||||||
fg = tertiary.dark;
|
fg = tertiary.dark;
|
||||||
modifiers = [ "underlined" ];
|
underline.style = "line";
|
||||||
};
|
};
|
||||||
"markup.list" = accent.bright;
|
"markup.list" = accent.bright;
|
||||||
"markup.quote" = weird.bright;
|
"markup.quote" = weird.bright;
|
||||||
@@ -355,7 +381,7 @@
|
|||||||
};
|
};
|
||||||
"ui.bufferline" = { # the top line ("tab"-line)
|
"ui.bufferline" = { # the top line ("tab"-line)
|
||||||
fg = accent.base;
|
fg = accent.base;
|
||||||
bg = black.base;
|
bg = accent.darker;
|
||||||
};
|
};
|
||||||
"ui.bufferline.active" = { # the active "tab"
|
"ui.bufferline.active" = { # the active "tab"
|
||||||
fg = background;
|
fg = background;
|
||||||
@@ -367,22 +393,22 @@
|
|||||||
modifiers = [ "reversed" ];
|
modifiers = [ "reversed" ];
|
||||||
};
|
};
|
||||||
"ui.cursorline.primary" = { # the line on which the cursor is on
|
"ui.cursorline.primary" = { # the line on which the cursor is on
|
||||||
bg = black.base;
|
bg = secondary.darker;
|
||||||
};
|
};
|
||||||
"ui.cursor.match" = { # Matching bracket etc.
|
"ui.cursor.match" = { # Matching bracket etc.
|
||||||
bg = green.dark;
|
bg = special.dark;
|
||||||
modifiers = [ ];
|
modifiers = [ ];
|
||||||
};
|
};
|
||||||
"ui.gutter" = {
|
"ui.gutter" = {
|
||||||
bg = black.base;
|
bg = accent.darker;
|
||||||
};
|
};
|
||||||
"ui.help" = {
|
"ui.help" = {
|
||||||
fg = green.base;
|
fg = accent.base;
|
||||||
bg = black.base;
|
bg = accent.darker;
|
||||||
};
|
};
|
||||||
"ui.linenr" = {
|
"ui.linenr" = {
|
||||||
fg = white.dark;
|
fg = accent.bright;
|
||||||
bg = black.base;
|
bg = accent.darker;
|
||||||
};
|
};
|
||||||
"ui.linenr.selected" = {
|
"ui.linenr.selected" = {
|
||||||
fg = accent.bright;
|
fg = accent.bright;
|
||||||
@@ -390,32 +416,32 @@
|
|||||||
};
|
};
|
||||||
"ui.menu" = {
|
"ui.menu" = {
|
||||||
fg = accent.base;
|
fg = accent.base;
|
||||||
bg = black.base;
|
bg = accent.darker;
|
||||||
};
|
};
|
||||||
"ui.menu.scroll" = {
|
"ui.menu.scroll" = {
|
||||||
fg = yellow.dark;
|
fg = subtle.base;
|
||||||
bg = background;
|
bg = background;
|
||||||
};
|
};
|
||||||
"ui.menu.selected" = {
|
"ui.menu.selected" = {
|
||||||
fg = red.base;
|
fg = secondary.bright;
|
||||||
bg = blue.dark;
|
bg = secondary.darker;
|
||||||
};
|
};
|
||||||
"ui.popup" = {
|
"ui.popup" = {
|
||||||
bg = black.base;
|
bg = accent.darker;
|
||||||
};
|
};
|
||||||
"ui.selection" = {
|
"ui.selection" = {
|
||||||
bg = white.dark;
|
bg = accent.dark;
|
||||||
};
|
};
|
||||||
"ui.selection.primary" = {
|
"ui.selection.primary" = {
|
||||||
bg = black.bright;
|
bg = accent.dark;
|
||||||
};
|
};
|
||||||
"ui.statusline" = {
|
"ui.statusline" = {
|
||||||
fg = blue.bright;
|
fg = accent.bright;
|
||||||
bg = black.base;
|
bg = accent.darker;
|
||||||
};
|
};
|
||||||
"ui.statusline.inactive" = {
|
"ui.statusline.inactive" = {
|
||||||
fg = red.bright;
|
fg = secondary.bright;
|
||||||
bg = red.dark;
|
bg = secondary.dark;
|
||||||
};
|
};
|
||||||
"ui.statusline.insert" = {
|
"ui.statusline.insert" = {
|
||||||
fg = green.bright;
|
fg = green.bright;
|
||||||
@@ -432,7 +458,7 @@
|
|||||||
"ui.text" = foreground;
|
"ui.text" = foreground;
|
||||||
"ui.text.focus" = accent.base;
|
"ui.text.focus" = accent.base;
|
||||||
"ui.virtual.indent-guide" = {
|
"ui.virtual.indent-guide" = {
|
||||||
fg = black.bright;
|
fg = subtle.dark;
|
||||||
};
|
};
|
||||||
"ui.virtual.inlay-hint" = {
|
"ui.virtual.inlay-hint" = {
|
||||||
fg = subtle.base;
|
fg = subtle.base;
|
||||||
@@ -443,12 +469,12 @@
|
|||||||
};
|
};
|
||||||
"ui.virtual.jump-label" = {
|
"ui.virtual.jump-label" = {
|
||||||
fg = special.base;
|
fg = special.base;
|
||||||
underline = {
|
bg = special.dark;
|
||||||
style = "dotted";
|
underline.style = "dotted";
|
||||||
};
|
modifiers = [ "bold" ];
|
||||||
};
|
};
|
||||||
"ui.window" = {
|
"ui.window" = {
|
||||||
bg = black.base;
|
bg = accent.darker;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,9 +5,22 @@
|
|||||||
terminal-exec = "ghostty --command=";
|
terminal-exec = "ghostty --command=";
|
||||||
monitors = {
|
monitors = {
|
||||||
xps = {
|
xps = {
|
||||||
main = { name = "eDP-1"; resolution = "1920x1200"; position = "1920x1080"; scale = "1.0"; };
|
# Home
|
||||||
second = { name = "desc:Sony SONY TV 0x01010101"; resolution = "1920x1080"; position = "1920x0"; scale = "1.0"; };
|
main = { name = "eDP-1"; resolution = "1920x1200"; position = "0x1080"; scale = "1.0"; };
|
||||||
third = { name = "DP-6"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; };
|
second = { name = "desc:Sony SONY TV 0x01010101"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; };
|
||||||
|
third = { name = ""; resolution = "preferred"; position = "auto"; scale ="1, mirror, eDP-1"; };
|
||||||
|
|
||||||
|
# Presentation
|
||||||
|
# main = { name = "eDP-1"; resolution = "1920x1080"; position = "1920x1080"; scale = "1.0"; };
|
||||||
|
# second = { name = ""; resolution = "preferred"; position = "auto"; scale ="1, mirror, eDP-1"; };
|
||||||
|
# third = { name = ""; resolution = "preferred"; position = "auto"; scale ="1, mirror, eDP-1"; };
|
||||||
|
|
||||||
|
# thunderbolt docking
|
||||||
|
# main = { name = "eDP-1"; resolution = "1920x1200"; position = "1920x1200"; scale = "1.0"; };
|
||||||
|
# second = { name = "DP-5"; resolution = "1920x1200"; position = "1920x0"; scale = "1.0"; };
|
||||||
|
# third = { name = "DP-4"; resolution = "1920x1200"; position = "0x0"; scale = "1.0"; };
|
||||||
|
# second = { name = "DP-6"; resolution = "1920x1200"; position = "0x0"; scale = "1.0"; };
|
||||||
|
# third = { name = "DP-7"; resolution = "1920x1200"; position = "1920x0"; scale = "1.0"; };
|
||||||
};
|
};
|
||||||
north = {
|
north = {
|
||||||
main = { name = "desc:Iiyama North America PL3270Q na"; resolution = "2560x1440"; position = "1920x0"; scale = "1.0"; };
|
main = { name = "desc:Iiyama North America PL3270Q na"; resolution = "2560x1440"; position = "1920x0"; scale = "1.0"; };
|
||||||
@@ -18,23 +31,24 @@
|
|||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
xdg-desktop-portal-hyprland
|
grim
|
||||||
|
hyprcursor
|
||||||
|
hypridle
|
||||||
hyprland-protocols
|
hyprland-protocols
|
||||||
hyprlock
|
hyprlock
|
||||||
hypridle
|
|
||||||
hyprshot
|
|
||||||
hyprpicker
|
hyprpicker
|
||||||
hyprcursor
|
hyprshade
|
||||||
grim
|
hyprshot
|
||||||
slurp
|
slurp
|
||||||
|
# xdg-desktop-portal-hyprland
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# package = pkgs-unstable.hyprland;
|
# package = pkgs-unstable.hyprland;
|
||||||
package = pkgs.hyprland;
|
# package = pkgs.hyprland;
|
||||||
# package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
package = inputs.hyprland.packages.${hyper.system}.hyprland;
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
plugins = [
|
plugins = [
|
||||||
@@ -159,10 +173,12 @@ in {
|
|||||||
dim_strength = "0.2";
|
dim_strength = "0.2";
|
||||||
dim_around = "0.8";
|
dim_around = "0.8";
|
||||||
|
|
||||||
|
# screen_shader = "/home/nx2/.config/hypr/shaders/e.glsl";
|
||||||
|
|
||||||
blur = {
|
blur = {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
size = "10";
|
size = "2";
|
||||||
passes = "2";
|
passes = "4";
|
||||||
xray = false;
|
xray = false;
|
||||||
vibrancy = 0.5;
|
vibrancy = 0.5;
|
||||||
ignore_opacity = true;
|
ignore_opacity = true;
|
||||||
@@ -184,10 +200,10 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
gestures = {
|
gestures = {
|
||||||
workspace_swipe = true;
|
|
||||||
workspace_swipe_fingers = "4";
|
|
||||||
workspace_swipe_distance = "300";
|
workspace_swipe_distance = "300";
|
||||||
|
# workspace_swipe_touch = true;
|
||||||
workspace_swipe_invert = true;
|
workspace_swipe_invert = true;
|
||||||
|
# workspace_swipe_touch_invert = true;
|
||||||
workspace_swipe_min_speed_to_force = "30";
|
workspace_swipe_min_speed_to_force = "30";
|
||||||
workspace_swipe_cancel_ratio = "0.5";
|
workspace_swipe_cancel_ratio = "0.5";
|
||||||
workspace_swipe_create_new = false;
|
workspace_swipe_create_new = false;
|
||||||
@@ -197,6 +213,14 @@ in {
|
|||||||
workspace_swipe_use_r = false;
|
workspace_swipe_use_r = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
gesture = [
|
||||||
|
"4, horizontal, workspace"
|
||||||
|
# "3, down, mod: ALT, close"
|
||||||
|
# "3, up, mod: SUPER, scale: 1.5, fullscreen"
|
||||||
|
# "3, left, scale: 1.5, float"
|
||||||
|
];
|
||||||
|
|
||||||
dwindle = {
|
dwindle = {
|
||||||
preserve_split = true; # you probably want this
|
preserve_split = true; # you probably want this
|
||||||
};
|
};
|
||||||
@@ -213,83 +237,85 @@ in {
|
|||||||
exec-once = [
|
exec-once = [
|
||||||
"waybar"
|
"waybar"
|
||||||
"swww-daemon"
|
"swww-daemon"
|
||||||
"hyprland-autoname-workspaces"
|
# "hyprland-autoname-workspaces"
|
||||||
"/usr/lib/polkit-kde-authentication-agent-1 "
|
"/usr/lib/polkit-kde-authentication-agent-1 "
|
||||||
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
"dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP"
|
||||||
"syncthing -no-browser"
|
"syncthing -no-browser"
|
||||||
"fcitx5"
|
"fcitx5"
|
||||||
# "ibus engine xkb:de::deu"
|
# "ibus engine xkb:de::deu"
|
||||||
"libinput-gestures"
|
"libinput-gestures"
|
||||||
|
"systemctl --user start hyprpanel"
|
||||||
# "hyprswitch --daemon"
|
# "hyprswitch --daemon"
|
||||||
];
|
];
|
||||||
|
|
||||||
windowrulev2 = [
|
windowrule = [
|
||||||
"bordercolor rgba(${rice.lib.nohash rice.color.special.bright}ff), pinned:1"
|
"border_color rgba(${rice.lib.nohash rice.color.special.bright}ff) rgba(${rice.lib.nohash rice.color.special.brighter}ff), match:pin 1"
|
||||||
|
|
||||||
"bordersize 0, floating:0, onworkspace:w[tv1]"
|
"border_size 0, match:float 0, match:workspace w[tv1]"
|
||||||
"rounding 0, floating:0, onworkspace:w[tv1]"
|
"rounding 0, match:float 0, match:workspace w[tv1]"
|
||||||
"bordersize 0, floating:0, onworkspace:f[1]"
|
"border_size 0, match:float 0, match:workspace f[1]"
|
||||||
"rounding 0, floating:0, onworkspace:f[1]"
|
"rounding 0, match:float 0, match:workspace f[1]"
|
||||||
] ++ [
|
] ++ [
|
||||||
"center 1,class:^(gimp)$"
|
"center 1,match:class ^(gimp)$"
|
||||||
|
|
||||||
"float, class:^(ibus-ui.*)$"
|
"float on, match:class ^(ibus-ui.*)$"
|
||||||
"float, class:^(ibus-ui-gtk3)$"
|
"float on, match:class ^(ibus-ui-gtk3)$"
|
||||||
"float, class:^(imv)$"
|
"float on, match:class ^(imv)$"
|
||||||
"float, class:^(org.kde.polkit-kde-authentication-agent-1)$"
|
"float on, match:class ^(org.kde.polkit-kde-authentication-agent-1)$"
|
||||||
"float, class:^(presenter)$" # sent
|
"float on, match:class ^(presenter)$" # sent
|
||||||
"float, class:^(thunderbird)$"
|
"float on, match:class ^(thunderbird)$"
|
||||||
"float, title:^(Compact folders)$"
|
"float on, match:title ^(Compact folders)$"
|
||||||
"float, title:^(Ibus-ui.*)$"
|
"float on, match:title ^(Ibus-ui.*)$"
|
||||||
"float, title:^(Ibus-ui-gtk3)$"
|
"float on, match:title ^(Ibus-ui-gtk3)$"
|
||||||
"float, title:^(Page Info — .*)$"
|
"float on, match:title ^(Page Info — .*)$"
|
||||||
"float, title:^(Picture-in-Picture)$"
|
"float on, match:title ^(Picture-in-Picture)$"
|
||||||
"float, title:^(wlogout)$"
|
"float on, match:title ^(wlogout)$"
|
||||||
|
|
||||||
"fullscreen, class:^(imv)$"
|
"fullscreen on, match:class ^(imv)$"
|
||||||
"fullscreen, class:^(sent)$"
|
"fullscreen on, match:class ^(sent)$"
|
||||||
"fullscreen, class:^(wlogout)$"
|
"fullscreen on, match:class ^(wlogout)$"
|
||||||
|
|
||||||
"noanim, class:^(imv)$"
|
"no_anim on, match:class ^(imv)$"
|
||||||
"noanim, class:^(presenter)$" # sent
|
"no_anim on, match:class ^(presenter)$" # sent
|
||||||
|
|
||||||
"opacity ${transparency}, class:^(Code)$"
|
"opacity ${transparency}, match:class ^(Code)$"
|
||||||
"opacity ${transparency}, class:^(code-oss)$"
|
"opacity ${transparency}, match:class ^(code-oss)$"
|
||||||
"opacity ${transparency}, class:^(discord)$"
|
"opacity ${transparency}, match:class ^(discord)$"
|
||||||
# "opacity ${transparency}, class:^(vesktop)$"
|
# "opacity ${transparency}, match:class ^(vesktop)$"
|
||||||
# "opacity ${transparency}, class:^(Element)$"
|
# "opacity ${transparency}, match:class ^(Element)$"
|
||||||
"opacity ${transparency}, class:^(lutris)$"
|
"opacity ${transparency}, match:class ^(lutris)$"
|
||||||
"opacity ${transparency}, class:^(neovide)$"
|
"opacity ${transparency}, match:class ^(neovide)$"
|
||||||
# "opacity ${transparency}, class:^(obsidian)$"
|
# "opacity ${transparency}, match:class ^(obsidian)$"
|
||||||
"opacity ${transparency}, class:^(VSCodium)$"
|
"opacity ${transparency}, match:class ^(VSCodium)$"
|
||||||
"opacity ${transparency}, title:^(wlogout)$"
|
"opacity ${transparency}, match:title ^(wlogout)$"
|
||||||
"opaque, title:^(GNU Image Manipulation Program)$"
|
"opaque on, match:title ^(GNU Image Manipulation Program)$"
|
||||||
"opaque, fullscreen:1"
|
"opaque on, match:fullscreen 1"
|
||||||
|
|
||||||
"pin, title:^(Picture-in-Picture)$"
|
"pin on, match:title ^(Picture-in-Picture)$"
|
||||||
|
|
||||||
"tile, class:^(sent)$"
|
"tile on, match:class ^(sent)$"
|
||||||
|
|
||||||
"workspace 100, class:^(gamescope)$"
|
"workspace 100, match:class ^(gamescope)$"
|
||||||
|
|
||||||
"float, title:^(terminal-file-picker)$"
|
"float on, match:title ^(terminal-file-picker)$"
|
||||||
"dimaround, title:^(terminal-file-picker)$"
|
"dim_around on, match:title ^(terminal-file-picker)$"
|
||||||
"center, title:^(terminal-file-picker)$"
|
"center on, match:title ^(terminal-file-picker)$"
|
||||||
"size 80% 80%, title:^(terminal-file-picker)$"
|
"size 80% 80%, match:title ^(terminal-file-picker)$"
|
||||||
"size: 30% 30%, initialTitle:^(Select Calendar)$"
|
|
||||||
];
|
"float on, match:initial_title ^(Select Calendar)$"
|
||||||
|
"size 30% 30%, match:initial_title ^(Select Calendar)$"
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
layerrule = [
|
layerrule = [
|
||||||
"blur,waybar"
|
"blur on, match:namespace waybar"
|
||||||
"blur,bar-0" # hyprpanel
|
"blur on, match:namespace bar-0" # hyprpanel
|
||||||
"blur,bar-1"
|
"blur on, match:namespace bar-1"
|
||||||
"blur,bar-2"
|
"blur on, match:namespace bar-2"
|
||||||
"blur,bar-3"
|
"blur on, match:namespace bar-3"
|
||||||
"blur,bar-4"
|
"blur on, match:namespace bar-4"
|
||||||
"dimaround,rofi"
|
"blur on, match:namespace rofi"
|
||||||
"blur,rofi"
|
"dim_around on, match:namespace rofi"
|
||||||
"xray,rofi"
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
@@ -354,7 +380,7 @@ in {
|
|||||||
## ROW 2:
|
## ROW 2:
|
||||||
|
|
||||||
# "SUPER, TAB, hycov:toggleoverview"
|
# "SUPER, TAB, hycov:toggleoverview"
|
||||||
"SUPER, TAB, overview:toggle"
|
# "SUPER, TAB, overview:toggle"
|
||||||
# "SUPER, TAB, hyprexpo:expo, toggle"
|
# "SUPER, TAB, hyprexpo:expo, toggle"
|
||||||
"ALT, TAB, focuscurrentorlast"
|
"ALT, TAB, focuscurrentorlast"
|
||||||
# "SUPER, TAB, exec, hyprswitch --daemon"
|
# "SUPER, TAB, exec, hyprswitch --daemon"
|
||||||
@@ -363,10 +389,11 @@ in {
|
|||||||
"SUPER, W, submap, browserSM "
|
"SUPER, W, submap, browserSM "
|
||||||
# "SUPER, E, exec, element-desktop"
|
# "SUPER, E, exec, element-desktop"
|
||||||
"SUPER, R, exec, rofi -show drun"
|
"SUPER, R, exec, rofi -show drun"
|
||||||
|
"SUPER SHIFT, 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 ${terminal}"
|
"SUPER, T, exec, SESSION_FROM_DE=TRUE ${terminal}"
|
||||||
"SUPER SHIFT, T, exec, ${terminal-exec}'ssh nxace'"
|
''SUPER SHIFT, T, exec, ${terminal-exec}'echo -e "\\e]11;#${rice.color.secondary.darker}\\e\\\\" && ssh nxace' '' # yes this is a double hash.
|
||||||
"SUPER, Z, exec, zathura"
|
"SUPER, Z, exec, zathura"
|
||||||
"SUPER, U, exec, [tile] thunderbird "
|
"SUPER, U, exec, [tile] thunderbird "
|
||||||
"SUPER, I, exec, ${terminal-exec}'hx ~/nix-dots/ && fish'"
|
"SUPER, I, exec, ${terminal-exec}'hx ~/nix-dots/ && fish'"
|
||||||
@@ -409,8 +436,10 @@ in {
|
|||||||
"SUPER SHIFT, C, exec, hyprpicker -n -a"
|
"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, layoutmsg, togglesplit"
|
||||||
# "SUPER, M, exec, /home/nx2/scripts/meme-full-screen/meme-full-screen.sh "
|
# "SUPER, M, exec, /home/nx2/scripts/meme-full-screen/meme-full-screen.sh "
|
||||||
|
''SUPER, M, exec, sh -c "hyprshade on $(find ${hyper.home}/.config/hypr/shaders -type f | sed -E 's-.*shaders/(.+)\.glsl-\1-g' | rofi -dmenu)"''
|
||||||
|
"SUPER Shift, M, exec, hyprshade off"
|
||||||
# "SUPER, comma, exec, /home/nx2/scripts/change-language.sh"
|
# "SUPER, comma, exec, /home/nx2/scripts/change-language.sh"
|
||||||
"SUPER, ., exec, echo key x:Prior | dotool"
|
"SUPER, ., exec, echo key x:Prior | dotool"
|
||||||
"SUPER, -, exec, echo key x:Next | dotool"
|
"SUPER, -, exec, echo key x:Next | dotool"
|
||||||
@@ -478,6 +507,10 @@ in {
|
|||||||
# "SUPER, TAB, exec, hyprswitch --daemon --do-initial-execute"
|
# "SUPER, TAB, exec, hyprswitch --daemon --do-initial-execute"
|
||||||
"SUPER, Next, resizeactive, 10% 10%"
|
"SUPER, Next, resizeactive, 10% 10%"
|
||||||
"SUPER, Prior, resizeactive, -10% -10%"
|
"SUPER, Prior, resizeactive, -10% -10%"
|
||||||
|
"SUPER ALT, j, resizeactive, 0% 7%"
|
||||||
|
"SUPER ALT, k, resizeactive, 0% -7%"
|
||||||
|
"SUPER ALT, l, resizeactive, 7% 0%"
|
||||||
|
"SUPER ALT, h, resizeactive, -7% 0%"
|
||||||
];
|
];
|
||||||
plugin = {
|
plugin = {
|
||||||
overview = {
|
overview = {
|
||||||
@@ -601,7 +634,9 @@ in {
|
|||||||
submap = screenshot
|
submap = screenshot
|
||||||
${action_simple { key = "W"; cmd = ''exec,hyprshot -m window''; }}
|
${action_simple { key = "W"; cmd = ''exec,hyprshot -m window''; }}
|
||||||
${action_simple { key = "M"; cmd = ''exec,hyprshot -m output''; }}
|
${action_simple { key = "M"; cmd = ''exec,hyprshot -m output''; }}
|
||||||
|
${action_simple { key = "S"; cmd = ''exec,hyprshot -m output''; }}
|
||||||
${action_simple { key = "R"; cmd = ''exec,hyprshot -m region''; }}
|
${action_simple { key = "R"; cmd = ''exec,hyprshot -m region''; }}
|
||||||
|
${action_simple { key = "A"; cmd = ''exec,hyprshot -m region''; }}
|
||||||
bind = , Escape, execr, submap_indicator unset
|
bind = , Escape, execr, submap_indicator unset
|
||||||
bind = , Escape, submap, reset
|
bind = , Escape, submap, reset
|
||||||
submap = reset
|
submap = reset
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all; {
|
||||||
lib.mkIf (hyper.host != "NxACE")
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
texlab # LSP
|
texlab # LSP
|
||||||
(texlive.combine { inherit (texlive) scheme-full xifthen ifmtarg framed paralist titlesec xcolor; })
|
(texlive.combine { inherit (texlive) scheme-full xifthen ifmtarg framed paralist titlesec xcolor; })
|
||||||
|
|||||||
5
home-modules/logitech.nix
Normal file
5
home-modules/logitech.nix
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
solaar
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -32,9 +32,11 @@
|
|||||||
thumbfast # thumbnails on timeline hover
|
thumbfast # thumbnails on timeline hover
|
||||||
# uosc # custom ui
|
# uosc # custom ui
|
||||||
sponsorblock
|
sponsorblock
|
||||||
|
# visualizer
|
||||||
];
|
];
|
||||||
bindings = {
|
bindings = {
|
||||||
"O" = ''no-osd cycle-values glsl-shaders "~~/shaders/invert.glsl" ""; show-text "Invert Shader"'';
|
"O" = ''no-osd cycle-values glsl-shaders "~~/shaders/invert.glsl" ""; show-text "Invert Shader"'';
|
||||||
|
"F5" = ''set contrast 0;set brightness 0;set gamma 0;set saturation 0;set hue 0;set sub-pos 100;set sub-scale 1;set panscan 0;set zoom 0;show-text default'';
|
||||||
# "tab" = ''script-binding uosc/toggle-ui'';
|
# "tab" = ''script-binding uosc/toggle-ui'';
|
||||||
# "space" = ''cycle pause; script-binding uosc/flash-pause-indicator'';
|
# "space" = ''cycle pause; script-binding uosc/flash-pause-indicator'';
|
||||||
# "right" = ''seek 5'';
|
# "right" = ''seek 5'';
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all; {
|
||||||
{
|
|
||||||
home.packages = [
|
home.packages = [
|
||||||
(pkgs.writeShellApplication {
|
(pkgs.writeShellApplication {
|
||||||
name = "nx_backup";
|
name = "nx_backup";
|
||||||
|
|||||||
@@ -1,29 +1,60 @@
|
|||||||
{ pkgs, ... }@all: with all; {
|
{ pkgs, ... }@all: with all; {
|
||||||
home = {
|
programs.opencode = {
|
||||||
packages = with pkgs; [
|
enable = true;
|
||||||
opencode
|
package = pkgs.opencode;
|
||||||
];
|
themes.theme = with rice.color; let
|
||||||
file.".config/opencode/opencode.json".text = let
|
dl = color: { dark = color; light = color; };
|
||||||
model = "qwen2.5-coder:7b";
|
in {
|
||||||
in builtins.toJSON {
|
accent = dl accent.base;
|
||||||
"$schema" = "https://opencode.ai/config.json";
|
background = dl background;
|
||||||
model = "ollama/${model}";
|
backgroundElement = dl subtle.dark;
|
||||||
theme = "matrix";
|
backgroundPanel = dl subtle.darker;
|
||||||
provider = {
|
border = dl subtle.base;
|
||||||
ollama = {
|
borderActive = dl border;
|
||||||
name = "Ollama (local)";
|
borderSubtle = dl subtle.dark;
|
||||||
npm = "@ai-sdk/openai-compatible";
|
diffAdded = dl positive.base;
|
||||||
options = {
|
diffAddedBg = dl positive.darker;
|
||||||
baseURL = "http://localhost:11434/v1";
|
diffAddedLineNumberBg = dl positive.dark;
|
||||||
};
|
diffContext = dl foreground;
|
||||||
models = {
|
diffContextBg = dl subtle.dark;
|
||||||
"${model}" = {
|
diffHighlightAdded = dl positive.bright;
|
||||||
tools = true;
|
diffHighlightRemoved = dl negative.bright;
|
||||||
};
|
diffHunkHeader = dl foreground;
|
||||||
};
|
diffLineNumber = dl subtle.base;
|
||||||
};
|
diffRemoved = dl negative.base;
|
||||||
};
|
diffRemovedBg = dl negative.darker;
|
||||||
|
diffRemovedLineNumberBg = dl negative.dark;
|
||||||
|
error = dl negative.dark;
|
||||||
|
info = dl special.base;
|
||||||
|
markdownBlockQuote = dl accent.base;
|
||||||
|
markdownCode = dl secondary.base;
|
||||||
|
markdownCodeBlock = dl secondary.base;
|
||||||
|
markdownEmph = dl accent.base;
|
||||||
|
markdownHeading = dl accent.base;
|
||||||
|
markdownHorizontalRule = dl border;
|
||||||
|
markdownImage = dl accent.base;
|
||||||
|
markdownImageText = dl accent.bright;
|
||||||
|
markdownLink = dl accent.base;
|
||||||
|
markdownLinkText = dl accent.bright;
|
||||||
|
markdownListEnumeration = dl foreground;
|
||||||
|
markdownListItem = dl foreground;
|
||||||
|
markdownStrong = dl accent.base;
|
||||||
|
markdownText = dl foreground;
|
||||||
|
primary = dl accent.base;
|
||||||
|
secondary = dl secondary.base;
|
||||||
|
success = dl positive.base;
|
||||||
|
syntaxComment = dl subtle.base;
|
||||||
|
syntaxFunction = dl accent.base;
|
||||||
|
syntaxKeyword = dl special.base;
|
||||||
|
syntaxNumber = dl tertiary.base;
|
||||||
|
syntaxOperator = dl accent.base;
|
||||||
|
syntaxPunctuation = dl foreground;
|
||||||
|
syntaxString = dl accent.base;
|
||||||
|
syntaxType = dl tertiary.base;
|
||||||
|
syntaxVariable = dl accent.base;
|
||||||
|
text = dl foreground;
|
||||||
|
textMuted = dl subtle.bright;
|
||||||
|
warning = dl weird.base;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,5 +14,6 @@
|
|||||||
wl-clipboard
|
wl-clipboard
|
||||||
xclip
|
xclip
|
||||||
wlr-randr
|
wlr-randr
|
||||||
|
cava
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,22 @@
|
|||||||
{ pkgs, hyper, ... }: {
|
{ pkgs, hyper, ... }: {
|
||||||
home.packages = with pkgs; [
|
home.packages = (with pkgs; [
|
||||||
chromium
|
chromium
|
||||||
gnome-clocks
|
gnome-clocks
|
||||||
gnome-calculator
|
gnome-calculator
|
||||||
gnome-characters
|
gnome-characters
|
||||||
gnome-2048
|
gnome-2048
|
||||||
element-desktop
|
|
||||||
qbittorrent
|
qbittorrent
|
||||||
wl-clipboard
|
wl-clipboard
|
||||||
xfce.thunar
|
xfce.thunar
|
||||||
] ++ (if (hyper.host != "NxACE") then [
|
]) ++ (if hyper.isWorkstation then (with pkgs; [
|
||||||
signal-desktop
|
signal-desktop
|
||||||
unstable.code-cursor-fhs
|
unstable.code-cursor-fhs
|
||||||
|
latest.antigravity
|
||||||
|
element-desktop
|
||||||
obsidian
|
obsidian
|
||||||
zoom-us
|
fontforge-gtk
|
||||||
inkscape
|
inkscape
|
||||||
audacity
|
audacity
|
||||||
] else []);
|
libreoffice
|
||||||
|
]) else []);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
{ pkgs, ... }@all: with all; {
|
{ pkgs, ... }@all: with all; {
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
|
asciinema
|
||||||
bat
|
bat
|
||||||
cmake
|
cmake
|
||||||
cmatrix
|
cmatrix
|
||||||
dig
|
dig
|
||||||
du-dust
|
dust
|
||||||
dysk
|
dysk
|
||||||
exiftool
|
exiftool
|
||||||
eza
|
eza
|
||||||
@@ -18,12 +19,14 @@
|
|||||||
htop
|
htop
|
||||||
imagemagick
|
imagemagick
|
||||||
jq
|
jq
|
||||||
|
libxml2
|
||||||
lolcat
|
lolcat
|
||||||
lynx
|
lynx
|
||||||
mediainfo
|
mediainfo
|
||||||
neofetch
|
neofetch
|
||||||
pastel
|
pastel
|
||||||
pdfgrep
|
pdfgrep
|
||||||
|
pdftk
|
||||||
pipes
|
pipes
|
||||||
pv
|
pv
|
||||||
reflex
|
reflex
|
||||||
@@ -33,8 +36,11 @@
|
|||||||
sssnake
|
sssnake
|
||||||
systemctl-tui
|
systemctl-tui
|
||||||
tldr
|
tldr
|
||||||
|
unstable.gemini-cli
|
||||||
|
unstable.yt-dlp
|
||||||
w3m
|
w3m
|
||||||
which
|
which
|
||||||
yt-dlp
|
unstable.gemini-cli
|
||||||
|
unstable.yt-dlp
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{ ... }: {
|
{ ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
./programming/c.nix
|
./programming/c.nix
|
||||||
./programming/gleam.nix
|
# ./programming/gleam.nix
|
||||||
./programming/glsl.nix
|
./programming/glsl.nix
|
||||||
./programming/go.nix
|
./programming/go.nix
|
||||||
./programming/java.nix
|
./programming/java.nix
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all; {
|
||||||
lib.mkIf (hyper.host != "NxACE")
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
erlang
|
erlang
|
||||||
rebar3
|
rebar3
|
||||||
|
|||||||
@@ -2,6 +2,6 @@
|
|||||||
programs.go = {
|
programs.go = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.go;
|
package = pkgs.go;
|
||||||
goPath = "${config.xdg.dataHome}/go";
|
env.goPath = "${config.xdg.dataHome}/go";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all; {
|
||||||
{
|
|
||||||
home = let
|
home = let
|
||||||
python-with-packages = pkgs.python3.withPackages (pp: with pp; [
|
python-with-packages = pkgs.python3.withPackages (pp: with pp; [
|
||||||
ipython
|
ipython
|
||||||
requests
|
requests
|
||||||
debugpy
|
# debugpy
|
||||||
black
|
black
|
||||||
|
uv
|
||||||
|
uv-build
|
||||||
]);
|
]);
|
||||||
in {
|
in {
|
||||||
packages = [
|
packages = [
|
||||||
python-with-packages
|
python-with-packages
|
||||||
] ++ (with pkgs; [
|
] ++ (with pkgs; [
|
||||||
python311Packages.python-lsp-server
|
python313Packages.python-lsp-server
|
||||||
ruff
|
ruff
|
||||||
pyright
|
pyright
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{ pkgs, ... }@all: with all; {
|
{ pkgs, ... }@all: with all; {
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
|
gdb
|
||||||
cargo
|
cargo
|
||||||
clippy
|
clippy
|
||||||
rustc
|
rustc
|
||||||
|
|||||||
@@ -1,114 +1,46 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all; {
|
||||||
{
|
home = {
|
||||||
home.packages = with pkgs; [
|
packages = with pkgs; [ rofi ];
|
||||||
rofi-wayland
|
file = let # the home-manager module sucks
|
||||||
];
|
trdr = "${rice.lib.float-to-drune rice.transparency}";
|
||||||
home.file = let
|
ts = builtins.toString;
|
||||||
trdr = "${rice.lib.float-to-drune rice.transparency}";
|
in with rice.color; {
|
||||||
in with rice.color; {
|
".config/rofi/config.rasi".text = ''
|
||||||
".config/rofi/config.rasi".text = ''
|
configuration {
|
||||||
configuration {
|
show-icons: false;
|
||||||
show-icons: false;
|
display-drun: "";
|
||||||
display-drun: "";
|
disable-history: false;
|
||||||
disable-history: false;
|
}
|
||||||
drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>] [<span weight='light' size='small'><i>({exec})</i></span>]";
|
* {
|
||||||
}
|
font: "${rice.font.code.name} 12";
|
||||||
|
foreground: ${foreground};
|
||||||
* {
|
text-color: ${foreground};
|
||||||
font: "${rice.font.code.name} 12";
|
background-color: transparent;
|
||||||
foreground: ${foreground};
|
padding: 0px;
|
||||||
background-color: ${background}${trdr};
|
margin: 0px;
|
||||||
padding: 0px;
|
spacing: 0px;
|
||||||
margin: 0px;
|
border-width: 0px;
|
||||||
spacing: 0px;
|
}
|
||||||
border-width: 0px;
|
window {
|
||||||
}
|
background-color: ${background}${trdr};
|
||||||
|
border: ${ts rice.border-width}px;
|
||||||
#window {
|
border-radius: ${ts rice.rounding}px;
|
||||||
background-color: ${background}${trdr};
|
border-color: ${ts rice.color.border};
|
||||||
border: ${builtins.toString rice.border-width}px;
|
}
|
||||||
border-radius: ${builtins.toString rice.rounding};
|
listview { scrollbar: false; }
|
||||||
border-color: ${border};
|
element { border-radius: ${ts rice.rounding}px; }
|
||||||
}
|
element.normal.normal { background-color: ${accent.darker}; text-color: ${accent.base}; }
|
||||||
#mainbox {
|
element.selected.normal { background-color: ${accent.base}; text-color: ${accent.darker}; }
|
||||||
border: 0;
|
element.alternate.normal { background-color: ${secondary.darker}; text-color: ${secondary.base}; }
|
||||||
padding: 0;
|
inputbar { children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; }
|
||||||
}
|
prompt { }
|
||||||
#message {
|
textbox-prompt-colon {
|
||||||
border: 0px;
|
expand: false;
|
||||||
}
|
str: ">";
|
||||||
#textbox {
|
}
|
||||||
text-color: ${foreground};
|
case-indicator { }
|
||||||
}
|
entry { placeholder: ""; }
|
||||||
#listview {
|
'';
|
||||||
fixed-height: 0;
|
};
|
||||||
border: 0px;
|
|
||||||
spacing: 0px ;
|
|
||||||
scrollbar: false;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#element {
|
|
||||||
border: 0;
|
|
||||||
padding: 0px;
|
|
||||||
border-radius: ${if rice.rounding > 0 then "2" else "0"}px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#element.normal.normal { background-color: ${background}${trdr}; text-color: ${accent.base}; }
|
|
||||||
#element.selected.normal { background-color: ${tertiary.base}${trdr}; text-color: ${background}; }
|
|
||||||
#element.alternate.normal { background-color: ${background}${trdr}; text-color: ${secondary.base}; }
|
|
||||||
|
|
||||||
|
|
||||||
#scrollbar {
|
|
||||||
width: ${builtins.toString rice.border-width}px ;
|
|
||||||
border: 0;
|
|
||||||
handle-width: 8px ;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
#sidebar {
|
|
||||||
border: ${builtins.toString rice.border-width}px dash;
|
|
||||||
}
|
|
||||||
#button.selected {
|
|
||||||
text-color: ${foreground};
|
|
||||||
}
|
|
||||||
#inputbar {
|
|
||||||
spacing: 0;
|
|
||||||
text-color: ${background};
|
|
||||||
background-color: ${accent.base}${trdr};
|
|
||||||
padding: 0;
|
|
||||||
margine-bottom: 2px;
|
|
||||||
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
|
|
||||||
}
|
|
||||||
#prompt {
|
|
||||||
spacing: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
text-color: ${foreground};
|
|
||||||
}
|
|
||||||
#textbox-prompt-colon {
|
|
||||||
expand: false;
|
|
||||||
str: ">";
|
|
||||||
margin: 0px 0.3em 0em 0em ;
|
|
||||||
text-color: ${background};
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
#case-indicator {
|
|
||||||
spacing: 0;
|
|
||||||
text-color: ${foreground};
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
#entry {
|
|
||||||
spacing: 0;
|
|
||||||
text-color: ${background};
|
|
||||||
background-color: transparent;
|
|
||||||
placeholder: "";
|
|
||||||
}
|
|
||||||
|
|
||||||
element-text, element-icon {
|
|
||||||
background-color: inherit;
|
|
||||||
text-color: inherit;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,30 +3,39 @@
|
|||||||
programs.ssh = {
|
programs.ssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.openssh;
|
package = pkgs.openssh;
|
||||||
addKeysToAgent = "yes";
|
enableDefaultConfig = false;
|
||||||
matchBlocks = let
|
matchBlocks = let
|
||||||
nxace = name: {
|
default = {
|
||||||
|
addKeysToAgent = "yes";
|
||||||
|
forwardAgent = false;
|
||||||
|
compression = false;
|
||||||
|
serverAliveInterval = 0;
|
||||||
|
serverAliveCountMax = 3;
|
||||||
|
hashKnownHosts = false;
|
||||||
|
userKnownHostsFile = "~/.ssh/known_hosts";
|
||||||
|
controlMaster = "no";
|
||||||
|
controlPath = "~/.ssh/master-%r@%n:%p";
|
||||||
|
controlPersist = "no";
|
||||||
|
};
|
||||||
|
nxace = name: default // {
|
||||||
host = name;
|
host = name;
|
||||||
hostname = "ssh.${hyper.domain}";
|
hostname = "ssh.${hyper.domain}";
|
||||||
user = "nx2";
|
user = "nx2";
|
||||||
port = 50022;
|
port = 50022;
|
||||||
identityFile = "${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}";
|
identityFile = [ "${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}" ];
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
"*".identityFile = [
|
"*" = default;
|
||||||
|
"ssh.nx2.site" = default // { identityFile = [
|
||||||
"${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}"
|
"${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}"
|
||||||
"${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}"
|
"${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}"
|
||||||
"${hyper.home}/vault/ssh/tg-dm-informatik-tuda"
|
]; };
|
||||||
];
|
"tg.dm.informatik.tu-darmstadt.de" = default // { identityFile = [ "${hyper.home}/vault/ssh/tg-dm-informatik-tuda" ]; };
|
||||||
"github.com".identityFile = [ "${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}" ];
|
"git.da.dicos.de" = default // { identityFile = [ "${hyper.home}/vault/ssh/dcsgit-lkurzweg-${hyper.host}" ]; };
|
||||||
"nxace" = nxace "nxace";
|
"github.com" = default // { identityFile = [ "${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}" ]; };
|
||||||
"nxacel" = (nxace "nxacel") // { hostname = "10.0.1.1"; };
|
"nxace" = (nxace "nxace" );
|
||||||
"nxrpli" = (nxace "nxrpil") // { hostname = "10.0.1.31"; port = 22; };
|
"nxacel" = (nxace "nxacel") // { hostname = "10.0.1.1"; };
|
||||||
"nxgit" = (nxace "nxgit") // {
|
"nxrpli" = (nxace "nxrpil") // { hostname = "10.0.1.31"; port = 22; };
|
||||||
user = "git";
|
|
||||||
identityFile = "${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}";
|
|
||||||
# addKeysToAgent = "1h";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
services.ssh-agent = {
|
services.ssh-agent = {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all;
|
||||||
{
|
{
|
||||||
home.packages = with pkgs; [
|
home.packages = [
|
||||||
(writers.writePython3Bin "change_colors_json" {
|
(pkgs.writers.writePython3Bin "change_colors_json" {
|
||||||
libraries = with python3Packages; [ numpy pillow scikit-learn ];
|
libraries = with pkgs.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
|
||||||
@@ -141,7 +141,10 @@
|
|||||||
foreground = alter_l(accent, 0.9)
|
foreground = alter_l(accent, 0.9)
|
||||||
background = alter_l(accent, 0.05)
|
background = alter_l(accent, 0.05)
|
||||||
|
|
||||||
d = {
|
with open("${hyper.home}/nix-dots/flake-modules/colors.json", "r") as f:
|
||||||
|
full_d = json.load(f)
|
||||||
|
|
||||||
|
full_d['${hyper.host}'] = {
|
||||||
"base": {
|
"base": {
|
||||||
"foreground": list_to_hex(foreground),
|
"foreground": list_to_hex(foreground),
|
||||||
"background": list_to_hex(background)
|
"background": list_to_hex(background)
|
||||||
@@ -155,8 +158,8 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
with open("/home/nx2/nix-dots/flake-modules/colors.json", "w") as f:
|
with open("${hyper.home}/nix-dots/flake-modules/colors.json", "w") as f:
|
||||||
f.write(json.dumps(d, indent=4))
|
f.write(json.dumps(full_d, indent=4))
|
||||||
'')
|
'')
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ pkgs, ... }@all: with all; let
|
{ pkgs, ... }@all: with all; let
|
||||||
nox-var = (pkgs.version != "24.05");
|
not-nod = (pkgs.pkgs-version != "24.05");
|
||||||
tfc = pkgs.unstable.xdg-desktop-portal-termfilechooser;
|
tfc = pkgs.unstable.xdg-desktop-portal-termfilechooser;
|
||||||
in {
|
in {
|
||||||
home.packages = [
|
home.packages = [
|
||||||
@@ -30,24 +30,24 @@ in {
|
|||||||
{ on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down 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 = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
|
||||||
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
|
||||||
{ on = [ "g" "g" ]; run = "arrow top"; desc = "Move cursor to the top"; }
|
|
||||||
{ on = [ "g" "e" ]; run = "arrow bot"; 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"; }
|
|
||||||
(pkgs.lib.mkIf (hyper.host == "NxACE") { on = [ "g" "s" ]; run = "cd /var/lib/hugo/nx2site"; desc = "Go to the Hugo Nx2.Site 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" "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" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; }
|
||||||
{ on = [ "g" "v" ]; run = "cd ~/Videos"; desc = "Go to the Videos directory"; }
|
|
||||||
{ on = [ "g" "t" ]; run = "cd /tmp"; desc = "Go to the /tmp 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" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; }
|
||||||
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
|
||||||
|
{ on = [ "g" "e" ]; run = "arrow bot"; desc = "Move cursor to the end"; }
|
||||||
|
{ on = [ "g" "g" ]; run = "arrow top"; desc = "Move cursor to the top"; }
|
||||||
|
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
|
||||||
|
{ on = [ "g" "l" ]; run = "cd ~/.locale"; desc = "Go to the .locale directory"; }
|
||||||
|
{ on = [ "g" "m" ]; run = "cd ~/media"; desc = "Go to the media (udiskie mount) 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" "p" ]; run = "cd ~/projects"; desc = "Go to the projects directory"; }
|
{ on = [ "g" "p" ]; run = "cd ~/projects"; desc = "Go to the projects directory"; }
|
||||||
|
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||||
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
|
||||||
|
{ on = [ "g" "t" ]; run = "cd /tmp"; desc = "Go to the /tmp directory"; }
|
||||||
|
{ on = [ "g" "v" ]; run = "cd ~/Videos"; desc = "Go to the Videos directory"; }
|
||||||
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
|
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
|
||||||
|
(pkgs.lib.mkIf (hyper.isServer) { on = [ "g" "s" ]; run = "cd /var/lib/hugo/nx2site"; desc = "Go to the Hugo Nx2.Site directory"; })
|
||||||
# Navigation
|
# Navigation
|
||||||
{ on = "h"; run = "leave"; desc = "Go back to the parent directory"; }
|
{ on = "h"; run = "leave"; desc = "Go back to the parent directory"; }
|
||||||
{ on = "l"; run = "enter"; desc = "Enter the child directory"; }
|
{ on = "l"; run = "enter"; desc = "Enter the child directory"; }
|
||||||
@@ -68,10 +68,10 @@ in {
|
|||||||
# Operation
|
# Operation
|
||||||
{ on = "o"; run = "open"; desc = "Open selected files"; }
|
{ on = "o"; run = "open"; desc = "Open selected files"; }
|
||||||
{ on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
{ on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
||||||
{ on = "<Enter>"; run = "open"; desc = "Open selected files"; }
|
{ on = "<Enter>"; run = "plugin smart-enter"; desc = "Open selected files"; }
|
||||||
|
# { on = "<Enter>"; run = "open"; desc = "Open selected files"; }
|
||||||
{ on = "<S-Enter>"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
{ on = "<S-Enter>"; run = "open --interactive"; desc = "Open selected files interactively"; }
|
||||||
{ on = "y"; run = [ ''shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list''
|
{ on = "y"; run = [ ''shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list'' "yank" ]; desc = "Yank selected files (copy)"; }
|
||||||
"yank" ]; desc = "Yank selected files (copy)"; }
|
|
||||||
{ on = "y"; run = "yank"; desc = "Yank selected files (copy)"; }
|
{ on = "y"; run = "yank"; desc = "Yank selected files (copy)"; }
|
||||||
{ on = "x"; run = "yank --cut"; desc = "Yank selected files (cut)"; }
|
{ on = "x"; run = "yank --cut"; desc = "Yank selected files (cut)"; }
|
||||||
{ on = "p"; run = "paste"; desc = "Paste yanked "; }
|
{ on = "p"; run = "paste"; desc = "Paste yanked "; }
|
||||||
@@ -158,8 +158,13 @@ in {
|
|||||||
{ on = "{"; run = "tab_swap -1"; desc = "Swap current tab with previous tab"; }
|
{ 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 wittab"; }
|
||||||
{ on = "}"; run = "tab_swap 1"; desc = "Swap current tab with next tab"; }
|
{ on = "}"; run = "tab_swap 1"; desc = "Swap current tab with next tab"; }
|
||||||
|
{ on = "<Tab>"; run = "spot"; desc = "Show Spot View"; }
|
||||||
# Tasks
|
# Tasks
|
||||||
{ on = "w"; run = "tasks:show"; desc = "Show Task View"; }
|
{ on = "w"; run = "tasks:show"; desc = "Show Task View"; }
|
||||||
|
# Magic
|
||||||
|
{ on = "<C-h>"; run = "shell 'hx .' --block"; desc = "Open current directoy in Helix"; }
|
||||||
|
{ on = "<C-g>"; run = "shell 'lazygit' --block"; desc = "Open current directoy in Lazygit"; }
|
||||||
|
{ on = "<C-y>"; run = ''shell 'ghostty --command="fish -C nx_yazi_into_fish"' --orphan ''; desc = "Open current directoy in a new ghostty window"; }
|
||||||
];
|
];
|
||||||
tasks.keymap = [
|
tasks.keymap = [
|
||||||
# Task
|
# Task
|
||||||
@@ -168,8 +173,8 @@ in {
|
|||||||
{ on = "<Esc>"; run = "close"; desc = "Close Task View"; }
|
{ on = "<Esc>"; run = "close"; desc = "Close Task View"; }
|
||||||
{ on = "c"; run = "cancel"; desc = "Cancel Task"; }
|
{ on = "c"; run = "cancel"; desc = "Cancel Task"; }
|
||||||
{ on = "i"; run = "inspect"; desc = "Inspect Task"; }
|
{ on = "i"; run = "inspect"; desc = "Inspect Task"; }
|
||||||
{ on = "j"; run = "arrow -1"; desc = "Up in list"; }
|
{ on = "k"; run = "arrow -1"; desc = "Up in list"; }
|
||||||
{ on = "k"; run = "arrow 1"; desc = "Down in list"; }
|
{ on = "j"; run = "arrow 1"; desc = "Down in list"; }
|
||||||
{ on = "u"; run = "arrow -5"; desc = "Up in list (fast)"; }
|
{ on = "u"; run = "arrow -5"; desc = "Up in list (fast)"; }
|
||||||
{ on = "d"; run = "arrow 5"; desc = "Down in list (fast)"; }
|
{ on = "d"; run = "arrow 5"; desc = "Down in list (fast)"; }
|
||||||
];
|
];
|
||||||
@@ -179,6 +184,19 @@ in {
|
|||||||
{ on = "?"; run = "help"; desc = "Open help"; }
|
{ on = "?"; run = "help"; desc = "Open help"; }
|
||||||
{ on = "<F1>"; run = "help"; desc = "Open help"; }
|
{ on = "<F1>"; run = "help"; desc = "Open help"; }
|
||||||
];
|
];
|
||||||
|
spot.keymap = [
|
||||||
|
# Spot
|
||||||
|
{ on = "<Tab>"; run = "close"; desc = "Close Spot View"; }
|
||||||
|
{ on = "q"; run = "close"; desc = "Close Spot View"; }
|
||||||
|
{ on = "<Esc>"; run = "close"; desc = "Close Spot View"; }
|
||||||
|
{ on = "k"; run = "arrow -1"; desc = "Up in list"; }
|
||||||
|
{ on = "j"; 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)"; }
|
||||||
|
{ on = [ "g" "g" ]; run = "arrow top"; desc = "Move cursor to the top"; }
|
||||||
|
{ on = [ "g" "e" ]; run = "arrow bot"; desc = "Move cursor to the end"; }
|
||||||
|
{ on = "c"; run = "copy cell"; desc = "Copy Selected Cell"; }
|
||||||
|
];
|
||||||
};
|
};
|
||||||
settings = {
|
settings = {
|
||||||
mgr = {
|
mgr = {
|
||||||
@@ -193,74 +211,74 @@ in {
|
|||||||
};
|
};
|
||||||
opener = {
|
opener = {
|
||||||
"edit" = [
|
"edit" = [
|
||||||
{ run = ''hx "$@"''; desc = "helix"; block = true; }
|
{ run = ''hx "$@"''; desc = "Helix"; block = true; }
|
||||||
{ run = ''codium "$@"''; desc = "code"; orphan = true; }
|
{ run = ''codium "$@"''; desc = "VS Code"; orphan = true; }
|
||||||
|
{ run = ''cat "$@" | wl-copy''; desc = "Copy Contents"; }
|
||||||
];
|
];
|
||||||
"play" = [
|
"play" = [
|
||||||
{ run = ''mpv "$@"''; desc = "mpv"; orphan = true; }
|
{ run = ''mpv "$@"''; desc = "MPV"; orphan = true; }
|
||||||
{ run = ''mpv --vf=negate "$@"''; desc = "mpv inverted"; orphan = true; }
|
{ run = ''mpv --vf=negate "$@"''; desc = "MPV inverted"; orphan = true; }
|
||||||
{ run = ''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; desc = "Show mediainfo"; }
|
{ run = ''mediainfo "$1"; echo "Press enter to return to yazi"; read''; block = true; desc = "Show mediainfo"; }
|
||||||
];
|
];
|
||||||
"archive" = [
|
"archive" = [
|
||||||
{ run = ''unar "$1"''; desc = "Extract here"; }
|
{ run = ''unar "$@"''; desc = "Extract here"; }
|
||||||
{ run = ''tar -x "$1"''; desc = "tar -x"; }
|
{ run = ''tar -x "$@"''; desc = "tar -x"; }
|
||||||
{ run = ''unzip "$1"''; desc = "unzip"; }
|
{ run = ''unzip "$@"''; desc = "unzip"; }
|
||||||
];
|
];
|
||||||
"image" = [
|
"image" = [
|
||||||
{ run = ''imv "$@"''; desc = "imv"; orphan = true; }
|
{ run = ''imv "$@"''; desc = "IMV"; orphan = true; }
|
||||||
{ run = ''gimp "$@"''; desc = "gimp"; orphan = true; }
|
{ 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 "$1"''; desc = "swww wallpaper"; }
|
||||||
{ run = ''exiftool "$@"; echo "Press enter to exit"; read''; desc = "View Exif Data"; }
|
{ run = ''exiftool "$1"; echo "Press enter to return to yazi"; read''; desc = "View Exif Data"; }
|
||||||
{ run = ''for f in "$@"; do magick "$f" -auto-orient "''${f%.*}.pdf"; done''; desc = "Convert to PDF"; }
|
{ run = ''for f in "$1"; do magick "$f" -auto-orient "''${f%.*}.pdf"; done''; desc = "Convert to PDF"; }
|
||||||
];
|
];
|
||||||
"svg" = [
|
"svg" = [
|
||||||
{ run = ''inkscape "$@"''; desc = "inkscape"; orphan = true; }
|
{ run = ''inkscape "$@"''; desc = "Inkscape"; orphan = true; }
|
||||||
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
|
{ run = ''firefox "$@"''; desc = "Firefox"; orphan = true; }
|
||||||
];
|
];
|
||||||
"font" = [
|
"font" = [
|
||||||
{ run = ''fontpreview "$@"''; desc = "fontpreview"; orphan = true; }
|
{ run = ''fontpreview "$@"''; desc = "Fontpreview"; orphan = true; }
|
||||||
{ run = ''fontforge "$@"''; desc = "fortforge"; orphan = true; }
|
{ run = ''fontforge "$@"''; desc = "Fortforge"; orphan = true; }
|
||||||
];
|
];
|
||||||
"document" = [
|
"document" = [
|
||||||
{ run = ''zathura "$@"''; desc = "zathura"; orphan = true; }
|
{ run = ''zathura "$@"''; desc = "Zathura"; orphan = true; }
|
||||||
{ run = ''xournal "$@"''; desc = "xournal"; orphan = true; }
|
{ run = ''firefox "$@"''; desc = "Firefox"; orphan = true; }
|
||||||
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
|
|
||||||
{ run = ''nxgs flip "$@"''; desc = "nxgs flip"; }
|
{ run = ''nxgs flip "$@"''; desc = "nxgs flip"; }
|
||||||
{ run = ''nxgs rotate "$@"''; desc = "nxgs rotate"; }
|
{ run = ''nxgs rotate "$@"''; desc = "nxgs rotate"; }
|
||||||
{ run = ''nxgs interactive-merge "$@"''; block = true; desc = "nxgs merge"; }
|
{ run = ''nxgs interactive-merge "$@"''; block = true; desc = "nxgs merge"; }
|
||||||
];
|
];
|
||||||
"browser" = [
|
"browser" = [
|
||||||
{ run = ''firefox "$@"''; desc = "firefox"; orphan = true; }
|
{ run = ''firefox "$@"''; desc = "Firefox"; orphan = true; }
|
||||||
{ run = ''zen "$@"''; desc = "zen"; orphan = true; }
|
{ run = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "Chromium"; orphan = true; }
|
||||||
{ 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"; orphan = true; }
|
{ run = ''libreoffice "$@"''; desc = "LibreOffice"; orphan = true; }
|
||||||
{ run = ''libreoffice --view "$@"''; desc = "libreoffice read-only"; orphan = true; }
|
{ run = ''libreoffice --view "$@"''; desc = "LibreOffice read-only"; orphan = true; }
|
||||||
];
|
];
|
||||||
"shell" = [
|
"shell" = [
|
||||||
{ run = ''bash -c "$@"''; desc = "bash -c"; }
|
{ run = ''bash -c "$1"; echo "Press enter to return to yazi"; read''; desc = "bash -c"; }
|
||||||
{ run = ''fish -c "$@"''; desc = "fish -c"; }
|
{ run = ''fish -c "$1"; echo "Press enter to return to yazi"; read''; desc = "fish -c"; }
|
||||||
{ run = ''sh -c "$@"''; desc = "sh -c"; }
|
{ run = ''sh -c "$1"; echo "Press enter to return to yazi"; read''; desc = "sh -c"; }
|
||||||
];
|
];
|
||||||
"python" = [
|
"python" = [
|
||||||
{ run = ''python "$@"''; desc = "python"; }
|
{ run = ''python "$@"; echo "Press enter to return to yazi"; read''; desc = "Python"; block = true; }
|
||||||
];
|
];
|
||||||
"directory" = [
|
"directory" = [
|
||||||
{ run = ''lazygit "$@"''; desc = "python"; }
|
{ run = ''lazygit "$1"''; desc = "LazyGit"; }
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
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-script.python"; use = [ "edit" "python" ]; }
|
||||||
|
{ mime = "text/script.python"; use = [ "edit" "python" ]; }
|
||||||
{ mime = "text/*"; use = "edit"; }
|
{ mime = "text/*"; use = "edit"; }
|
||||||
{ mime = "text"; use = "edit"; }
|
{ mime = "text"; use = "edit"; }
|
||||||
|
|
||||||
{ mine = "inode/x-empty"; use = "edit"; }
|
{ mime = "inode/x-empty"; use = "directory"; }
|
||||||
{ mine = "inode/directory"; use = "edit"; }
|
{ mime = "inode/directory"; use = "directory"; }
|
||||||
|
|
||||||
{ mime = "image/*"; use = "image"; }
|
{ mime = "image/*"; use = "image"; }
|
||||||
{ mime = "image/svg"; use = [ "image" "edit" ]; }
|
{ mime = "image/svg"; use = [ "image" "edit" ]; }
|
||||||
@@ -311,29 +329,73 @@ in {
|
|||||||
tabs = {
|
tabs = {
|
||||||
active = { fg = secondary.dark; bg = secondary.base; };
|
active = { fg = secondary.dark; bg = secondary.base; };
|
||||||
inactive = { fg = secondary.base; bg = secondary.dark; };
|
inactive = { fg = secondary.base; bg = secondary.dark; };
|
||||||
# sep_inner =
|
# sep_inner = { open = "[", close = "]" };
|
||||||
# sep_outer =
|
# sep_outer = { open = "[", close = "]" };
|
||||||
|
};
|
||||||
|
mode = {
|
||||||
|
main_main = { fg = yellow.bright; bg = yellow.dark; };
|
||||||
|
select_main = { fg = cyan.bright; bg = cyan.dark; };
|
||||||
|
unset_main = { fg = blue.bright; bg = blue.dark; };
|
||||||
|
main_alternative = { fg = yellow.brighter; bg = yellow.dark; };
|
||||||
|
select_alternative = { fg = cyan.brighter; bg = cyan.dark; };
|
||||||
|
unset_alternative = { fg = blue.brighter; bg = blue.dark; };
|
||||||
|
};
|
||||||
|
confirm = {
|
||||||
|
border = { fg = border; };
|
||||||
|
title = { fg = accent.bright; };
|
||||||
|
body = { fg = "#ff0000"; };
|
||||||
|
list = { fg = "#ff0000"; };
|
||||||
|
btn_yes = { fg = positive.base; bg = positive.dark; };
|
||||||
|
btn_no = { fg = negative.base; bg = negative.dark; };
|
||||||
|
btn_labels = [ " BET " " HELLNAW " ];
|
||||||
|
};
|
||||||
|
spot = {
|
||||||
|
border = { fg = border; };
|
||||||
|
title = { fg = accent.bright; };
|
||||||
|
tbl_col = { fg = accent.base; };
|
||||||
|
tbl_cell = { fg = secondary.base; };
|
||||||
|
};
|
||||||
|
notify = {
|
||||||
|
title_info = { fg = accent.base; };
|
||||||
|
title_warn = { fg = weird.base; };
|
||||||
|
title_error = { fg = special.base; };
|
||||||
|
};
|
||||||
|
pick = {
|
||||||
|
border = { fg = border; };
|
||||||
|
active = { fg = accent.bright; };
|
||||||
|
inactive = { fg = subtle.bright; };
|
||||||
};
|
};
|
||||||
status = {
|
status = {
|
||||||
separator_open = " "; #"";
|
# sep_right = { open = ""; close = ""; };
|
||||||
separator_close = " "; #"";
|
# sep_left = { open = ""; close = ""; };
|
||||||
separator_style = { fg = accent.base; bg = black.base; };
|
sepr_style = { fg = accent.base; bg = black.base; };
|
||||||
mode_normal = { fg = yellow.bright; bg = yellow.dark; };
|
|
||||||
mode_select = { fg = cyan.bright; bg = cyan.dark; };
|
|
||||||
mode_unset = { fg = blue.bright; bg = blue.dark; };
|
|
||||||
progress_label = { fg = secondary.base; bold = true; };
|
progress_label = { fg = secondary.base; bold = true; };
|
||||||
progress_normal = { fg = accent.base; bg = black.base; };
|
progress_normal = { fg = accent.base; bg = black.base; };
|
||||||
progress_error = { fg = negative.base; bg = black.base; };
|
progress_error = { fg = negative.base; bg = black.base; };
|
||||||
permissions_t = { fg = special.base; };
|
perm_type = { fg = special.base; };
|
||||||
permissions_r = { fg = accent.base; };
|
perm_read = { fg = accent.base; };
|
||||||
permissions_w = { fg = secondary.base; };
|
perm_write = { fg = secondary.base; };
|
||||||
permissions_x = { fg = tertiary.base; };
|
perm_exec = { fg = tertiary.base; };
|
||||||
permissions_s = { fg = special.base; };
|
perm_sep = { fg = special.base; };
|
||||||
|
};
|
||||||
|
indicator = { # your "cursor"
|
||||||
|
parent = { fg = secondary.darker; bg = secondary.base; };
|
||||||
|
current = { fg = accent.darker; bg = accent.base; };
|
||||||
|
preview = { fg = secondary.base; bg = secondary.darker; };
|
||||||
|
# padding = { open = " "; close = " "; };
|
||||||
|
};
|
||||||
|
cmp = {
|
||||||
|
border = { fg = border; };
|
||||||
|
active = { fg = accent.base; };
|
||||||
|
inactive = { fg = subtle.base; };
|
||||||
|
# icon_file =
|
||||||
|
# icon_folder =
|
||||||
|
# icon_command
|
||||||
};
|
};
|
||||||
input = {
|
input = {
|
||||||
border = { fg = border; };
|
border = { fg = border; };
|
||||||
title = {};
|
title = { fg = accent.bright; };
|
||||||
value = {};
|
value = { fg = foreground; };
|
||||||
selected = { reversed = true; };
|
selected = { reversed = true; };
|
||||||
};
|
};
|
||||||
select = {
|
select = {
|
||||||
@@ -343,8 +405,8 @@ in {
|
|||||||
};
|
};
|
||||||
tasks = {
|
tasks = {
|
||||||
border = { fg = border2; };
|
border = { fg = border2; };
|
||||||
title = {};
|
title = { fg = accent.base; bold = true; };
|
||||||
hovered = { underline = true; };
|
hovered = { fg = accent.bright; };
|
||||||
};
|
};
|
||||||
which = {
|
which = {
|
||||||
mask = { bg = black.base; };
|
mask = { bg = black.base; };
|
||||||
@@ -355,11 +417,11 @@ in {
|
|||||||
separator_style = { fg = foreground; };
|
separator_style = { fg = foreground; };
|
||||||
};
|
};
|
||||||
help = {
|
help = {
|
||||||
on = { fg = "#fe8019"; };
|
on = { fg = accent.base; };
|
||||||
exec = { fg = "#83a598"; };
|
run = { fg = secondary.base; };
|
||||||
desc = { fg = "#928374"; };
|
desc = { fg = tertiary.base; italic = true; };
|
||||||
hovered = { bg = "#504945"; bold = true; };
|
hovered = { bg = accent.bright; bold = true; };
|
||||||
footer = { fg = "#3c3836"; bg = "#a89984"; };
|
footer = { fg = accent.base; bg = subtle.dark; };
|
||||||
};
|
};
|
||||||
filetype = {
|
filetype = {
|
||||||
rules = [
|
rules = [
|
||||||
@@ -367,21 +429,21 @@ in {
|
|||||||
{ mime = "inode/x-empty"; fg = white.dark; }
|
{ mime = "inode/x-empty"; fg = white.dark; }
|
||||||
{ mime = "inode/directory"; fg = accent.base; }
|
{ mime = "inode/directory"; fg = accent.base; }
|
||||||
|
|
||||||
{ name = "*"; is = "link"; fg = tertiary.base; }
|
{ url = "*"; is = "link"; fg = tertiary.base; }
|
||||||
{ name = "*"; is = "orphan"; fg = negative.base; }
|
{ url = "*"; is = "orphan"; fg = negative.base; }
|
||||||
{ name = "*"; is = "block"; fg = special.base; }
|
{ url = "*"; is = "block"; fg = special.base; }
|
||||||
{ name = "*"; is = "char"; fg = special.bright; }
|
{ url = "*"; is = "char"; fg = special.bright; }
|
||||||
{ name = "*"; is = "exec"; fg = secondary.base; }
|
{ url = "*"; is = "exec"; fg = secondary.base; }
|
||||||
{ name = "*"; is = "fifo"; fg = weird.base; }
|
{ url = "*"; is = "fifo"; fg = weird.base; }
|
||||||
{ name = "*"; is = "sock"; fg = weird.bright; }
|
{ url = "*"; is = "sock"; fg = weird.bright; }
|
||||||
{ name = "*"; is = "sticky"; fg = special.base; }
|
{ url = "*"; is = "sticky"; fg = special.base; }
|
||||||
|
|
||||||
# Fallback
|
# Fallback
|
||||||
{ name = "*"; fg = foreground; }
|
{ url = "*"; fg = foreground; }
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
} // (if nox-var then {
|
} // (if not-nod then {
|
||||||
shellWrapperName = "ya";
|
shellWrapperName = "ya";
|
||||||
initLua = /* lua */ ''
|
initLua = /* lua */ ''
|
||||||
require("zoxide"):setup {
|
require("zoxide"):setup {
|
||||||
@@ -400,9 +462,16 @@ in {
|
|||||||
" ",
|
" ",
|
||||||
}
|
}
|
||||||
end, 500, Status.RIGHT)
|
end, 500, Status.RIGHT)
|
||||||
|
|
||||||
|
Header:children_add(function()
|
||||||
|
if ya.target_family() ~= "unix" then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
return ui.Span(ya.user_name() .. "@" .. ya.host_name() .. ":"):fg("blue")
|
||||||
|
end, 500, Header.LEFT)
|
||||||
'';
|
'';
|
||||||
plugins = with pkgs; {
|
plugins = { inherit (pkgs.yaziPlugins)
|
||||||
inherit glow git;
|
glow git smart-enter;
|
||||||
};
|
};
|
||||||
} else {});
|
} else {});
|
||||||
|
|
||||||
@@ -415,7 +484,7 @@ in {
|
|||||||
default_dir=$HOME
|
default_dir=$HOME
|
||||||
env=TERMCMD=ghostty --title="terminal-file-picker -e"
|
env=TERMCMD=ghostty --title="terminal-file-picker -e"
|
||||||
open_mode=suggested
|
open_mode=suggested
|
||||||
save_mode=last
|
save_mode=suggested
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
portal = {
|
portal = {
|
||||||
@@ -423,11 +492,9 @@ in {
|
|||||||
xdgOpenUsePortal = true;
|
xdgOpenUsePortal = true;
|
||||||
config.common."org.freedesktop.impl.portal.FileChooser" = "termfilechooser";
|
config.common."org.freedesktop.impl.portal.FileChooser" = "termfilechooser";
|
||||||
extraPortals = [ tfc ] ++ (with pkgs; [
|
extraPortals = [ tfc ] ++ (with pkgs; [
|
||||||
xdg-desktop-portal-hyprland
|
|
||||||
xdg-desktop-portal
|
xdg-desktop-portal
|
||||||
xdg-desktop-portal-gnome
|
xdg-desktop-portal-gnome
|
||||||
xdg-desktop-portal-gtk
|
xdg-desktop-portal-gtk
|
||||||
xdg-desktop-portal-hyprland
|
|
||||||
xdg-desktop-portal-wlr
|
xdg-desktop-portal-wlr
|
||||||
]);
|
]);
|
||||||
};
|
};
|
||||||
|
|||||||
9
home.nix
9
home.nix
@@ -25,7 +25,8 @@
|
|||||||
./home-modules/hyprland-autoname-workspaces.nix
|
./home-modules/hyprland-autoname-workspaces.nix
|
||||||
./home-modules/hyprland.nix
|
./home-modules/hyprland.nix
|
||||||
./home-modules/kitty.nix
|
./home-modules/kitty.nix
|
||||||
./home-modules/latex.nix
|
# ./home-modules/latex.nix
|
||||||
|
./home-modules/logitech.nix
|
||||||
./home-modules/mako.nix
|
./home-modules/mako.nix
|
||||||
# ./home-modules/matrix.nix
|
# ./home-modules/matrix.nix
|
||||||
./home-modules/mpv.nix
|
./home-modules/mpv.nix
|
||||||
@@ -34,7 +35,7 @@
|
|||||||
./home-modules/nvidia.nix
|
./home-modules/nvidia.nix
|
||||||
./home-modules/nxgs.nix
|
./home-modules/nxgs.nix
|
||||||
./home-modules/obs.nix
|
./home-modules/obs.nix
|
||||||
./home-modules/office.nix
|
# ./home-modules/office.nix
|
||||||
./home-modules/ollama.nix
|
./home-modules/ollama.nix
|
||||||
./home-modules/opencode.nix
|
./home-modules/opencode.nix
|
||||||
./home-modules/pandoc.nix
|
./home-modules/pandoc.nix
|
||||||
@@ -63,7 +64,7 @@
|
|||||||
./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 (hyper.host == "NxACE") then [
|
] ++ (if hyper.isServer then [
|
||||||
./home-modules/nx2site.nix
|
./home-modules/nx2site.nix
|
||||||
./home-modules/nx2site-backup.nix
|
./home-modules/nx2site-backup.nix
|
||||||
./home-modules/calendar-campuszeit-fix.nix
|
./home-modules/calendar-campuszeit-fix.nix
|
||||||
@@ -71,6 +72,6 @@
|
|||||||
home.username = hyper.user;
|
home.username = hyper.user;
|
||||||
home.homeDirectory = hyper.home;
|
home.homeDirectory = hyper.home;
|
||||||
# home.homeDirectory = "/home/${hyper.user}";
|
# home.homeDirectory = "/home/${hyper.user}";
|
||||||
home.stateVersion = hyper.pkgs-version;
|
home.stateVersion = hyper.main-pkgs-version;
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,96 +0,0 @@
|
|||||||
lib:
|
|
||||||
let
|
|
||||||
# takes in "ff0044" (no hash!) and returns { r = "ff", g = "00", b = "44" }
|
|
||||||
slice-hex = hex: with builtins; { r = substring 0 2 hex; g = substring 2 2 hex; b = substring 4 2 hex; };
|
|
||||||
|
|
||||||
# takes in "44" and returns 64
|
|
||||||
drune-to-255 = drune: with builtins; (rune-to-num (substring 0 1 drune)) * 16 + (rune-to-num (substring 1 1 drune));
|
|
||||||
num-to-drune = num: "${num-to-rune (num / 16)}${num-to-rune (num - ((num / 16) * 16))}";
|
|
||||||
|
|
||||||
# takes in "D" and returns 13
|
|
||||||
rune-to-num = rune: # inspiration from https://github.com/bertof/nix-rice
|
|
||||||
let
|
|
||||||
dict = {
|
|
||||||
"0" = 0;
|
|
||||||
"1" = 1;
|
|
||||||
"2" = 2;
|
|
||||||
"3" = 3;
|
|
||||||
"4" = 4;
|
|
||||||
"5" = 5;
|
|
||||||
"6" = 6;
|
|
||||||
"7" = 7;
|
|
||||||
"8" = 8;
|
|
||||||
"9" = 9;
|
|
||||||
"A" = 10;
|
|
||||||
"B" = 11;
|
|
||||||
"C" = 12;
|
|
||||||
"D" = 13;
|
|
||||||
"E" = 14;
|
|
||||||
"F" = 15;
|
|
||||||
};
|
|
||||||
in
|
|
||||||
assert(builtins.hasAttr (lib.strings.toUpper rune) dict);
|
|
||||||
builtins.getAttr (lib.strings.toUpper rune) dict;
|
|
||||||
|
|
||||||
# takes in 15 and returns "F"
|
|
||||||
num-to-rune = num:
|
|
||||||
let
|
|
||||||
num-string = builtins.toString num;
|
|
||||||
dict = {
|
|
||||||
"0" = "0";
|
|
||||||
"1" = "1";
|
|
||||||
"2" = "2";
|
|
||||||
"3" = "3";
|
|
||||||
"4" = "4";
|
|
||||||
"5" = "5";
|
|
||||||
"6" = "6";
|
|
||||||
"7" = "7";
|
|
||||||
"8" = "8";
|
|
||||||
"9" = "9";
|
|
||||||
"10" = "A";
|
|
||||||
"11" = "B";
|
|
||||||
"12" = "C";
|
|
||||||
"13" = "D";
|
|
||||||
"14" = "E";
|
|
||||||
"15" = "F";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
assert(builtins.hasAttr num-string dict);
|
|
||||||
builtins.getAttr num-string dict;
|
|
||||||
|
|
||||||
# Keeps num between 0 and 255
|
|
||||||
# Make sure to pass in an int not a float
|
|
||||||
cap-255 = num: (if (num>255) then 255 else if (num<0) then 0 else num);
|
|
||||||
|
|
||||||
nohash = hex: with builtins; assert((stringLength hex) == 7); substring 1 6 hex;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
|
|
||||||
## USEFUL FUNCTIONS
|
|
||||||
# --------------------------------------------------------------------------------
|
|
||||||
# takes in a string like "#ff0044" and returns "ff0044" symbol
|
|
||||||
inherit nohash;
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------------------
|
|
||||||
# This takes in something like "#ff0044" and returns "255,0,64"
|
|
||||||
hex-to-rgb-comma-string = hex:
|
|
||||||
with (slice-hex (nohash hex));
|
|
||||||
with builtins;
|
|
||||||
assert(isString hex);
|
|
||||||
"${toString (drune-to-255 r)},${toString (drune-to-255 g)},${toString (drune-to-255 b)}";
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------------------
|
|
||||||
# This is useful if you have a float (like a transparency value) and want a drune representation of it
|
|
||||||
# So 0.0 -> "00" and 1.0 -> "FF"
|
|
||||||
float-to-drune = f: with builtins; assert(isFloat f); "${num-to-rune (floor((255*f) / 16))}${num-to-rune (floor(255*f) - (floor((255*f) / 16) * 16))}";
|
|
||||||
|
|
||||||
# --------------------------------------------------------------------------------
|
|
||||||
# Takes in hex and a float. 0.5 is +50% brightness and (-0.5) is -50% brightness.
|
|
||||||
# So "#ff0044": 0.3 -> "#ff0055"
|
|
||||||
alter-luminace-hex = hex: amount:
|
|
||||||
let
|
|
||||||
color-num = with (slice-hex (nohash hex)); { r = drune-to-255 r; g = drune-to-255 g; b = drune-to-255 b; };
|
|
||||||
alter = num: (num-to-drune (cap-255 (builtins.floor ((125 * amount) + (num * (1+amount))) )));
|
|
||||||
in
|
|
||||||
with color-num; "#${alter r}${alter g}${alter b}";
|
|
||||||
}
|
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
./home-modules/git.nix
|
./home-modules/git.nix
|
||||||
./home-modules/gpg.nix
|
./home-modules/gpg.nix
|
||||||
./home-modules/helix.nix
|
./home-modules/helix.nix
|
||||||
./home-modules/latex.nix
|
# ./home-modules/latex.nix
|
||||||
./home-modules/nh.nix
|
./home-modules/nh.nix
|
||||||
./home-modules/nixd.nix
|
./home-modules/nixd.nix
|
||||||
./home-modules/nxgs.nix
|
./home-modules/nxgs.nix
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
home = {
|
home = {
|
||||||
username = hyper.user;
|
username = hyper.user;
|
||||||
homeDirectory = hyper.home;
|
homeDirectory = hyper.home;
|
||||||
stateVersion = pkgs.version;
|
stateVersion = hyper.main-pkgs-version;
|
||||||
};
|
};
|
||||||
xdg = {
|
xdg = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
BIN
splash.png
BIN
splash.png
Binary file not shown.
|
Before Width: | Height: | Size: 2.0 MiB |
BIN
splash.webp
Normal file
BIN
splash.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 200 KiB |
@@ -5,7 +5,7 @@ pkgs: with pkgs; [
|
|||||||
git-crypt
|
git-crypt
|
||||||
|
|
||||||
wget
|
wget
|
||||||
curlHTTP3
|
curl
|
||||||
zip
|
zip
|
||||||
unzip
|
unzip
|
||||||
p7zip
|
p7zip
|
||||||
|
|||||||
@@ -9,8 +9,10 @@
|
|||||||
device-boot = if hyper.host == "NxNORTH" then {
|
device-boot = if hyper.host == "NxNORTH" then {
|
||||||
kernelPackages = pkgs.linuxPackages_zen;
|
kernelPackages = pkgs.linuxPackages_zen;
|
||||||
kernelParams = [
|
kernelParams = [
|
||||||
"fbcon=margin:1"
|
# "fbcon=margin:1"
|
||||||
"fbcon=nodefer"
|
"fbcon=nodefer"
|
||||||
|
"video=DP-4:2560x1440@60"
|
||||||
|
# "video=HDMI-A-3:d"
|
||||||
];
|
];
|
||||||
lanzaboote = {
|
lanzaboote = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -66,5 +68,23 @@ in {
|
|||||||
config = {
|
config = {
|
||||||
environment.systemPackages = with pkgs; lib.mkIf ( host == "NxNORTH" ) [ sbctl ];
|
environment.systemPackages = with pkgs; lib.mkIf ( host == "NxNORTH" ) [ sbctl ];
|
||||||
boot = { tmp.useTmpfs = false; } // device-boot;
|
boot = { tmp.useTmpfs = false; } // device-boot;
|
||||||
|
# thx fxzzi
|
||||||
|
# sh*tty nvidia makes the tty on my 1440p monitor 1080p
|
||||||
|
# so just resize it to 1440p
|
||||||
|
systemd.services.fbset = lib.mkIf (hyper.host == "NxNORTH") {
|
||||||
|
enable = true;
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
unitConfig = {
|
||||||
|
Description = "Set framebuffer resolution";
|
||||||
|
Before = "display-manager.service";
|
||||||
|
};
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
ExecStart = "${lib.getExe pkgs.fbset} -xres 2560 -yres 1440 -match --all";
|
||||||
|
RemainAfterExit = "yes";
|
||||||
|
StandardOutput = "journal";
|
||||||
|
StandardError = "journal";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,8 @@ from ics import Calendar
|
|||||||
import requests
|
import requests
|
||||||
|
|
||||||
def filter_events(events):
|
def filter_events(events):
|
||||||
return [event for event in events if ("LR" in event.name)]
|
return [event for event in events if ("WT" in event.name)]
|
||||||
|
# return [event for event in events if ("LR" in event.name)]
|
||||||
# return [event for event in events if ("LR" in event.name) or ("TBD" in event.name)]
|
# return [event for event in events if ("LR" in event.name) or ("TBD" in event.name)]
|
||||||
|
|
||||||
def fetch_and_save_ical_events(ical_urls, save_path):
|
def fetch_and_save_ical_events(ical_urls, save_path):
|
||||||
@@ -62,7 +63,7 @@ def fetch_and_save_ical_events(ical_urls, save_path):
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Replace with your iCal URL and target file path
|
# Replace with your iCal URL and target file path
|
||||||
ICAL_URLS = [
|
ICAL_URLS = [
|
||||||
"https://zlypher.github.io/lol-events/cal/league-of-legends-nlc.ical",
|
# "https://zlypher.github.io/lol-events/cal/league-of-legends-nlc.ical",
|
||||||
"https://zlypher.github.io/lol-events/cal/league-of-legends-emea-masters.ical"
|
"https://zlypher.github.io/lol-events/cal/league-of-legends-emea-masters.ical"
|
||||||
]
|
]
|
||||||
SAVE_PATH = "${config.services.nginx.virtualHosts."${hyper.domain}".root}/lr.ics"
|
SAVE_PATH = "${config.services.nginx.virtualHosts."${hyper.domain}".root}/lr.ics"
|
||||||
|
|||||||
@@ -1,31 +1,87 @@
|
|||||||
{ pkgs, ... }@all: with all; {
|
{ config, pkgs, ... }@all: with all; {
|
||||||
services.greetd = {
|
# services.greetd = {
|
||||||
enable = true;
|
|
||||||
settings = rec {
|
|
||||||
hyprland = {
|
|
||||||
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --remember --cmd Hyprland --remember-user-session --window-padding 5";
|
|
||||||
user = hyper.user;
|
|
||||||
};
|
|
||||||
default_session = hyprland;
|
|
||||||
vt = 2;
|
|
||||||
};
|
|
||||||
# useTextGreeter = true;
|
|
||||||
};
|
|
||||||
# services.displayManager.ly = {
|
|
||||||
# enable = true;
|
# enable = true;
|
||||||
# package = pkgs.ly;
|
# settings = rec {
|
||||||
# settings = {
|
# hyprland = {
|
||||||
# # animation = "matrix";
|
# command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd Hyprland --remember-user-session --window-padding 5";
|
||||||
# # clear_password = true;
|
# user = hyper.user;
|
||||||
# clock = "%c";
|
# };
|
||||||
# lang = "de";
|
# default_session = hyprland;
|
||||||
# load = true;
|
# vt = 2;
|
||||||
# # numlock = false;
|
# };
|
||||||
# save = true;
|
# # useTextGreeter = true;
|
||||||
# };
|
|
||||||
# };
|
# };
|
||||||
|
services.xserver.displayManager.lightdm.enable = false;
|
||||||
|
services.displayManager.ly = pkgs.lib.mkIf (!hyper.isServer) {
|
||||||
|
# info and docs at https://codeberg.org/fairyglade/ly/src/branch/master/res/config.ini
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.ly;
|
||||||
|
settings = with rice.color; let h = rice.lib.nohash; in {
|
||||||
|
allow_empty_password = false;
|
||||||
|
# animation = "matrix";
|
||||||
|
animation = "gameoflife";
|
||||||
|
animation_timeout_sec = 0; # forever
|
||||||
|
asterisk = "*";
|
||||||
|
auth_fails = 10;
|
||||||
|
# auto_login_session = "hyprland";
|
||||||
|
# auto_login_user = hyper.user;
|
||||||
|
battery_id = if hyper.isMobile then "BAT0" else null;
|
||||||
|
bg = "0x00${h background}";
|
||||||
|
bigclock_12hr = false;
|
||||||
|
bigclock = "en";
|
||||||
|
bigclock_seconds = false;
|
||||||
|
blank_box = true; # not transparent
|
||||||
|
border_fg = "0x00${h border}";
|
||||||
|
box_title = " Optimistic Nihilism ";
|
||||||
|
clear_password = true;
|
||||||
|
clock = "%c";
|
||||||
|
cmatrix_fg = "0x00${h accent.base}";
|
||||||
|
cmatrix_head_col = "0x01${h accent.bright}";
|
||||||
|
cmatrix_max_codepoint = "0x7B";
|
||||||
|
cmatrix_min_codepoint = "0x21";
|
||||||
|
colormix_col1 = "0x00${h accent.base}";
|
||||||
|
colormix_col2 = "0x00${h secondary.base}";
|
||||||
|
colormix_col3 = "0x20${h tertiary.base}";
|
||||||
|
default_input = "password";
|
||||||
|
# doom_bottom_color = 0x00FFFFFF;
|
||||||
|
# doom_fire_height = 6; # 1-9
|
||||||
|
# doom_fire_spread = 2; # 0-4
|
||||||
|
# doom_middle_color = 0x00C78F17;
|
||||||
|
# doom_top_color = 0x009F2707;
|
||||||
|
# dur_file_path = $CONFIG_DIRECTORY/ly/example.dur;
|
||||||
|
# dur_offset_alignment = center; # Available inputs: topleft, topcenter, topright, centerleft, center, centerright, bottomleft, bottomcenter, bottomright
|
||||||
|
# Dur offset x direction (value is added to the current position determined by alignment, negatives are supported)
|
||||||
|
# dur_x_offset = 0;
|
||||||
|
# dur_y_offset = 0; # Dur offset y direction (value is added to the current position determined by alignment, negatives are supported)
|
||||||
|
# edge_margin = 0; # Set margin to the edges of the DM (useful for curved monitors)
|
||||||
|
error_bg = "0x00${h negative.darker}";
|
||||||
|
error_fg = "0x01${h negative.base}";
|
||||||
|
fg = "0x00${h foreground}";
|
||||||
|
full_color = true;
|
||||||
|
# gameoflife_entropy_interval = 20; # None
|
||||||
|
# gameoflife_fg = "0x00${h accent.base}";
|
||||||
|
# gameoflife_frame_delay = 6;
|
||||||
|
# gameoflife_initial_density = 0.4;
|
||||||
|
# # hibernate_cmd = null;
|
||||||
|
# # hibernate_key = F4;
|
||||||
|
hide_borders = false; # Remove main box borders
|
||||||
|
hide_keyboard_locks = false; # Remove keyboard lock states from the top right corner
|
||||||
|
hide_key_hints = false; # Remove power management command hints
|
||||||
|
hide_version_string = true;
|
||||||
|
# initial_info_text = "Login to ${hyper.host}";
|
||||||
|
# input_len = 35;
|
||||||
|
lang = "de";
|
||||||
|
save = true; # Save the current desktop and login as defaults, and load them on startup
|
||||||
|
# numlock = false;
|
||||||
|
# text_in_center = true; # Center the session name.
|
||||||
|
# vi_default_mode = "normal";
|
||||||
|
# vi_mode = true;
|
||||||
|
# xinitrc = null;
|
||||||
|
# xsessions = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
# environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# cmatrix
|
cmatrix
|
||||||
# ];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
variables = {
|
variables = {
|
||||||
EDITOR = "hx";
|
EDITOR = "hx";
|
||||||
VISUAL = "hx";
|
VISUAL = "hx";
|
||||||
|
TERMINAL = "ghostty";
|
||||||
};
|
};
|
||||||
systemPackages = with pkgs; [
|
systemPackages = with pkgs; [
|
||||||
helix
|
helix
|
||||||
|
|||||||
@@ -1,88 +1,14 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all; {
|
||||||
{
|
|
||||||
# i18n.inputMethod = {
|
|
||||||
# type = "fcitx5";
|
|
||||||
# enable = true;
|
|
||||||
# fcitx5.addons = with pkgs; [
|
|
||||||
# fcitx5-gtk # alternatively, kdePackages.fcitx5-qt
|
|
||||||
# fcitx5-chinese-addons # table input method support
|
|
||||||
# fcitx5-nord # a color theme
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
i18n.inputMethod = {
|
i18n.inputMethod = {
|
||||||
enable = true;
|
enable = true;
|
||||||
type = "fcitx5";
|
type = "fcitx5";
|
||||||
fcitx5.waylandFrontend = true;
|
fcitx5 = {
|
||||||
fcitx5.addons = with pkgs; [
|
waylandFrontend = true;
|
||||||
fcitx5-gtk # alternatively, kdePackages.fcitx5-qt
|
addons = with pkgs; [
|
||||||
fcitx5-chinese-addons # table input method support
|
fcitx5-gtk
|
||||||
fcitx5-nord # a color theme
|
kdePackages.fcitx5-chinese-addons
|
||||||
];
|
fcitx5-nord
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
# i18n.inputMethod = {
|
|
||||||
# enabled = "fcitx5";
|
|
||||||
# ignoreUserConfig = true;
|
|
||||||
# waylandFrontend = true;
|
|
||||||
# fcitx5 = {
|
|
||||||
# addons = with pkgs-unstable; [
|
|
||||||
# rime-data
|
|
||||||
# fcitx5-rime
|
|
||||||
|
|
||||||
# # Chinese
|
|
||||||
# fcitx5-chinese-addons
|
|
||||||
# fcitx5-table-extra
|
|
||||||
# fcitx5-pinyin-moegirl
|
|
||||||
# fcitx5-pinyin-zhwiki
|
|
||||||
|
|
||||||
# # Japanese
|
|
||||||
# # fcitx5-mozc
|
|
||||||
# ];
|
|
||||||
# settings = {
|
|
||||||
# globalOptions = {
|
|
||||||
# Hotkey = {
|
|
||||||
# # Enumerate when press trigger key repeatedly
|
|
||||||
# EnumerateWithTriggerKeys = "True";
|
|
||||||
# # Skip first input method while enumerating
|
|
||||||
# EnumerateSkipFirst = "False";
|
|
||||||
# };
|
|
||||||
# "Hotkey/EnumerateForwardKeys" = { "0" = "Control+space"; };
|
|
||||||
# "Hotkey/EnumerateBackwardKeys" = { "0" = "Control+Shift+space"; };
|
|
||||||
# "Hotkey/PrevPage" = { "0" = "Up"; };
|
|
||||||
# "Hotkey/NextPage" = { "0" = "Down"; };
|
|
||||||
# "Hotkey/PrevCandidate" = { "0" = "Shift+Tab"; };
|
|
||||||
# "Hotkey/NextCandidate" = { "0" = "Tab"; };
|
|
||||||
# Behavior = {
|
|
||||||
# ActiveByDefault = "False"; # Active By Default
|
|
||||||
# ShareInputState = "No"; # Share Input State
|
|
||||||
# PreeditEnabledByDefault = "True"; # Show preedit in application
|
|
||||||
# ShowInputMethodInformation = "True"; # Show Input Method Information when switch input method
|
|
||||||
# showInputMethodInformationWhenFocusIn = "False"; # Show Input Method Information when changing focus
|
|
||||||
# CompactInputMethodInformation = "True"; # Show compact input method information
|
|
||||||
# ShowFirstInputMethodInformation = "True"; # Show first input method information
|
|
||||||
# DefaultPageSize = "5"; # Default page size
|
|
||||||
# OverrideXkbOption = "False"; # Override Xkb Option
|
|
||||||
# PreloadInputMethod = "True"; # Preload input method to be used by default
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# inputMethod = {
|
|
||||||
# "Groups/0" = {
|
|
||||||
# "Name" = "Default";
|
|
||||||
# "Default Layout" = "us";
|
|
||||||
# "DefaultIM" = "mozc";
|
|
||||||
# };
|
|
||||||
# "Groups/0/Items/0" = {
|
|
||||||
# "Name" = "keyboard-us";
|
|
||||||
# "Layout" = null;
|
|
||||||
# };
|
|
||||||
# "Groups/0/Items/1" = {
|
|
||||||
# "Name" = "mozc";
|
|
||||||
# "Layout" = null;
|
|
||||||
# };
|
|
||||||
# "GroupOrder" = {
|
|
||||||
# "0" = "Default";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all;
|
||||||
{
|
{
|
||||||
fonts.packages = with pkgs; [
|
fonts.packages = with pkgs; [
|
||||||
|
atkinson-hyperlegible
|
||||||
|
nerd-fonts._3270
|
||||||
|
nerd-fonts.heavy-data
|
||||||
|
nerd-fonts.jetbrains-mono
|
||||||
|
nerd-fonts.profont
|
||||||
|
nerd-fonts.proggy-clean-tt
|
||||||
|
nerd-fonts.zed-mono
|
||||||
|
newcomputermodern
|
||||||
noto-fonts
|
noto-fonts
|
||||||
noto-fonts-cjk-sans
|
noto-fonts-cjk-sans
|
||||||
noto-fonts-cjk-serif
|
noto-fonts-cjk-serif
|
||||||
noto-fonts-emoji
|
noto-fonts-color-emoji
|
||||||
newcomputermodern
|
|
||||||
atkinson-hyperlegible
|
|
||||||
nerd-fonts.jetbrains-mono
|
|
||||||
nerd-fonts.zed-mono
|
|
||||||
nerd-fonts.profont
|
|
||||||
nerd-fonts.proggy-clean-tt
|
|
||||||
nerd-fonts.heavy-data
|
|
||||||
nerd-fonts._3270
|
|
||||||
] ++ (with rice.font; [
|
] ++ (with rice.font; [
|
||||||
base.package
|
base.package
|
||||||
code.package
|
code.package
|
||||||
|
|||||||
@@ -1,15 +1,7 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all; {
|
||||||
lib.mkIf (hyper.host == "NxNORTH" || hyper.host == "NxACE")
|
|
||||||
{
|
|
||||||
programs = {
|
programs = {
|
||||||
steam = {
|
steam.enable = true;
|
||||||
enable = true;
|
gamemode.enable = true;
|
||||||
};
|
gamescope.enable = true;
|
||||||
gamemode = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
gamescope = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{ ... }: {
|
{ pkgs, ... }@all: with all; {
|
||||||
programs.hyprland = {
|
programs.hyprland = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
package = inputs.hyprland.packages.${hyper.system}.hyprland;
|
||||||
xwayland.enable = true;
|
xwayland.enable = true;
|
||||||
};
|
};
|
||||||
services.xserver.enable = true;
|
services.xserver.enable = true;
|
||||||
|
|||||||
@@ -27,8 +27,6 @@
|
|||||||
"hsmw-vpn-secret" = { path = "/etc/ipsec.d/hsmw.secret"; mode = "600"; };
|
"hsmw-vpn-secret" = { path = "/etc/ipsec.d/hsmw.secret"; mode = "600"; };
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.networkmanager.enableStrongSwan = true;
|
|
||||||
|
|
||||||
services.strongswan = {
|
services.strongswan = {
|
||||||
enable = true;
|
enable = true;
|
||||||
setup = {
|
setup = {
|
||||||
|
|||||||
@@ -15,6 +15,8 @@
|
|||||||
443
|
443
|
||||||
8000
|
8000
|
||||||
8080
|
8080
|
||||||
|
(pkgs.lib.mkIf config.services.postfix.enable 587)
|
||||||
|
(pkgs.lib.mkIf config.services.dovecot2.enable 993)
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
14
system-modules/nix.nix
Normal file
14
system-modules/nix.nix
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{ ... }: {
|
||||||
|
nix.settings = {
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
substituters = [
|
||||||
|
"https://cache.nixos.org/"
|
||||||
|
"https://cache.nixos-cuda.org"
|
||||||
|
"https://nix-community.cachix.org"
|
||||||
|
];
|
||||||
|
trusted-public-keys = [
|
||||||
|
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
||||||
|
"cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M="
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{ pkgs, ... }@all: with all; lib.mkIf hyper.nvidia.enable {
|
{ pkgs, ... }@all: with all; lib.mkIf hyper.nvidia.enable {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
lshw
|
lshw
|
||||||
glxinfo
|
mesa-demos
|
||||||
(pkgs.writeShellScriptBin "nvidia-offload" ''
|
(pkgs.writeShellScriptBin "nvidia-offload" ''
|
||||||
export __NV_PRIME_RENDER_OFFLOAD=1
|
export __NV_PRIME_RENDER_OFFLOAD=1
|
||||||
export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
|
export __NV_PRIME_RENDER_OFFLOAD_PROVIDER=NVIDIA-G0
|
||||||
|
|||||||
@@ -40,13 +40,15 @@ let dns-user = "cloudflare"; in
|
|||||||
sub = "fc861353142bc05d5dbad1799178e6a1";
|
sub = "fc861353142bc05d5dbad1799178e6a1";
|
||||||
sub6 = "b8082b7afe9e80971fc9f9dda16ec284";
|
sub6 = "b8082b7afe9e80971fc9f9dda16ec284";
|
||||||
ssh = "c0f14f17f32d6595c202f041dd836eb3";
|
ssh = "c0f14f17f32d6595c202f041dd836eb3";
|
||||||
ssh6 = "f1ecb2d9d0522d4eec06437688ca76da";
|
ssh6 = "0067f396b3efb21e12f63e0c50643161";
|
||||||
dev = "80e76834acc9243696d9763759b22147";
|
dev = "80e76834acc9243696d9763759b22147";
|
||||||
|
mail = "d62a0dc01614b9f8f2b469219788fe0f";
|
||||||
|
mail6 = "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;
|
||||||
in pkgs.writers.writePython3Bin "dyn_dns" {
|
in pkgs.writers.writePython3Bin "dyn_dns" {
|
||||||
libraries = with pkgs.python3Packages; [ requests ];
|
libraries = with pkgs.python3Packages; [ requests ];
|
||||||
flakeIgnore = [ "E302" "E305" "E226" "E501" "E261" ];
|
flakeIgnore = [ "E302" "E305" "E226" "E501" "E261" "E241" ];
|
||||||
} /* python */ ''
|
} /* python */ ''
|
||||||
import requests
|
import requests
|
||||||
import subprocess
|
import subprocess
|
||||||
@@ -55,7 +57,7 @@ from time import sleep
|
|||||||
def get_public_ip(ipv6: bool = False) -> str:
|
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 update_record(record_id: str, record_name: str, ip: str, type: str, proxied: bool, pw: str) -> None:
|
def update_record(record_id: str, record_name: str, ip: str, type: str, proxied: bool, pw: str) -> requests.Response:
|
||||||
sleep(5)
|
sleep(5)
|
||||||
return requests.patch(
|
return requests.patch(
|
||||||
f'https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/{record_id}',
|
f'https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/{record_id}',
|
||||||
@@ -85,14 +87,16 @@ def main():
|
|||||||
|
|
||||||
# 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
|
||||||
print(f"${hyper.domain}: {update_record(record_id="${record_id.base}", record_name="${hyper.domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}", end=", ")
|
print(f"${hyper.domain}: {update_record(record_id="${record_id.base}", record_name="${hyper.domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}")
|
||||||
print(f"*.${hyper.domain}: {update_record(record_id="${record_id.sub}", record_name="*.${hyper.domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}", end=", ")
|
print(f"*.${hyper.domain}: {update_record(record_id="${record_id.sub}", record_name="*.${hyper.domain}", ip=my_ip, type="A", proxied=True, pw=pw).status_code}")
|
||||||
print(f"ssh.${hyper.domain}: {update_record(record_id="${record_id.ssh}", record_name="ssh.${hyper.domain}", ip=my_ip, type="A", proxied=False, pw=pw).status_code}", end=", ")
|
print(f"ssh.${hyper.domain}: {update_record(record_id="${record_id.ssh}", record_name="ssh.${hyper.domain}", ip=my_ip, type="A", proxied=False, pw=pw).status_code}")
|
||||||
print(f"dev.${hyper.domain}: {update_record(record_id="${record_id.dev}", record_name="dev.${hyper.domain}", ip=my_ip, type="A", proxied=False, pw=pw).status_code}", end=", ")
|
print(f"dev.${hyper.domain}: {update_record(record_id="${record_id.dev}", record_name="dev.${hyper.domain}", ip=my_ip, type="A", proxied=False, pw=pw).status_code}")
|
||||||
|
print(f"mail.${hyper.domain}: {update_record(record_id="${record_id.dev}", record_name="mail.${hyper.domain}", ip=my_ip, type="A", proxied=False, pw=pw).status_code}")
|
||||||
|
|
||||||
print(f"${hyper.domain}: {update_record(record_id="${record_id.base6}", record_name="${hyper.domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}", end=", ")
|
print(f"${hyper.domain}: {update_record(record_id="${record_id.base6}", record_name="${hyper.domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}")
|
||||||
print(f"*.${hyper.domain}: {update_record(record_id="${record_id.sub6}", record_name="*.${hyper.domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}", end=", ")
|
print(f"*.${hyper.domain}: {update_record(record_id="${record_id.sub6}", record_name="*.${hyper.domain}", ip=my_ip6, type="AAAA", proxied=True, pw=pw).status_code}")
|
||||||
print(f"ssh.${hyper.domain}: {update_record(record_id="${record_id.ssh6}", record_name="ssh.${hyper.domain}", ip=my_ip6, type="AAAA", proxied=False, pw=pw).status_code}", end="")
|
print(f"ssh.${hyper.domain}: {update_record(record_id="${record_id.ssh6}", record_name="ssh.${hyper.domain}", ip=my_ip6, type="AAAA", proxied=False, pw=pw).status_code}")
|
||||||
|
print(f"mail.${hyper.domain}: {update_record(record_id="${record_id.ssh6}", record_name="mail.${hyper.domain}", ip=my_ip6, type="AAAA", proxied=False, pw=pw).status_code}")
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|||||||
22
system-modules/nx2site/baikal.nix
Normal file
22
system-modules/nx2site/baikal.nix
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
services.baikal = {
|
||||||
|
enable = true;
|
||||||
|
# pool =
|
||||||
|
user = "baikal";
|
||||||
|
group = "baikal";
|
||||||
|
package = pkgs.php.buildComposerProject2 (finalAttrs: {
|
||||||
|
pname = "baikal";
|
||||||
|
version = "0.10.1";
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "sabre-io";
|
||||||
|
repo = "Baikal";
|
||||||
|
tag = "0.10.1";
|
||||||
|
hash = "sha256-YQQwTdwfHQZdUhO5HbScj/Bl8ype7TtPI3lHjvz2k04=";
|
||||||
|
};
|
||||||
|
# It doesn't provide a composer.lock file, we have to generate manually.
|
||||||
|
composerLock = ./composer.lock;
|
||||||
|
vendorHash = "sha256-dYg7cULL4gquR5EenA0lD9ZC9Ge4qNwFFDNhELKgSso=";
|
||||||
|
});
|
||||||
|
virtualHost = "baikal.${hyper.domain}";
|
||||||
|
};
|
||||||
|
}
|
||||||
3208
system-modules/nx2site/composer.lock
generated
Normal file
3208
system-modules/nx2site/composer.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
# THIS IS NOT USED
|
||||||
{
|
{ pkgs, ... }@all: with all; {
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
# "nx2site/namecheap.pw" = { };
|
# "nx2site/namecheap.pw" = { };
|
||||||
# "nx2site/cloudflare/api-token-dns-edit" = { };
|
# "nx2site/cloudflare/api-token-dns-edit" = { };
|
||||||
@@ -16,6 +16,8 @@
|
|||||||
"${hyper.domain}"
|
"${hyper.domain}"
|
||||||
"*.${hyper.domain}"
|
"*.${hyper.domain}"
|
||||||
"ssh.${hyper.domain}"
|
"ssh.${hyper.domain}"
|
||||||
|
"mail.${hyper.domain}"
|
||||||
|
"dev.${hyper.domain}"
|
||||||
];
|
];
|
||||||
proxied = true;
|
proxied = true;
|
||||||
apiTokenFile = config.sops.secrets."nx2site/cloudflare/global-api-key-env".path;
|
apiTokenFile = config.sops.secrets."nx2site/cloudflare/global-api-key-env".path;
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ let git-user = "git"; in
|
|||||||
user = git-user;
|
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 = ;
|
||||||
database = {
|
database = {
|
||||||
createDatabase = false; # default
|
createDatabase = false; # default
|
||||||
@@ -65,6 +65,8 @@ let git-user = "git"; in
|
|||||||
SSH_PORT = secrets.ssh.port;
|
SSH_PORT = secrets.ssh.port;
|
||||||
DOMAIN = "git.${hyper.domain}";
|
DOMAIN = "git.${hyper.domain}";
|
||||||
SSH_DOMAIN = "ssh.${hyper.domain}";
|
SSH_DOMAIN = "ssh.${hyper.domain}";
|
||||||
|
ENABLE_PUSH_CREATE_USER = true;
|
||||||
|
ENABLE_PUSH_CREATE_ORG = true;
|
||||||
# HTTP_ADDR = "${config.services.gitea.settings.server.DOMAIN}";
|
# HTTP_ADDR = "${config.services.gitea.settings.server.DOMAIN}";
|
||||||
# HTTP_PORT = 3000; # default
|
# HTTP_PORT = 3000; # default
|
||||||
# PROTOCOL = "http"; # default
|
# PROTOCOL = "http"; # default
|
||||||
|
|||||||
68
system-modules/nx2site/imap.nix
Normal file
68
system-modules/nx2site/imap.nix
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
{ config, pkgs, ... }@all: with all; {
|
||||||
|
sops.secrets = {
|
||||||
|
"nx2site/dovecot" = {
|
||||||
|
owner = "dovecot2";
|
||||||
|
group = "dovecot2";
|
||||||
|
mode = "600";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.dovecot2 = {
|
||||||
|
enable = true;
|
||||||
|
enablePAM = false; # independen from linux users
|
||||||
|
enableImap = true;
|
||||||
|
enableLmtp = true;
|
||||||
|
extraConfig = ''
|
||||||
|
# force to use full user name plus domain name
|
||||||
|
# for disambiguation
|
||||||
|
auth_username_format = %Lu
|
||||||
|
|
||||||
|
# Authentication configuration:
|
||||||
|
auth_mechanisms = plain
|
||||||
|
passdb {
|
||||||
|
driver = passwd-file
|
||||||
|
args = ${config.sops.secrets."nx2site/dovecot".path}
|
||||||
|
}
|
||||||
|
|
||||||
|
# for vitual users:
|
||||||
|
userdb {
|
||||||
|
driver = static
|
||||||
|
# the full e-mail address inside passwd-file is the username (%u)
|
||||||
|
# user@example.com
|
||||||
|
# %d for domain_name %n for user_name
|
||||||
|
args = uid=vmail gid=vmail username_format=%u home=/var/spool/mail/vmail/%d/%n
|
||||||
|
}
|
||||||
|
# for connecting with postfix
|
||||||
|
service lmtp {
|
||||||
|
unix_listener /var/spool/postfix/dovecot-lmtp {
|
||||||
|
mode = 0600
|
||||||
|
user = postfix
|
||||||
|
group = postfix
|
||||||
|
}
|
||||||
|
}
|
||||||
|
service auth {
|
||||||
|
unix_listener /var/spool/postfix/auth {
|
||||||
|
mode = 0600
|
||||||
|
user = postfix
|
||||||
|
group = postfix
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
createMailUser = true;
|
||||||
|
mailUser = "vmail";
|
||||||
|
mailGroup = "vmail";
|
||||||
|
mailLocation = "maildir:~/Maildir";
|
||||||
|
mailboxes = { # RFC standart
|
||||||
|
All = { auto = "create"; autoexpunge = null; specialUse = "All"; };
|
||||||
|
Archive = { auto = "create"; autoexpunge = null; specialUse = "Archive"; };
|
||||||
|
Drafts = { auto = "create"; autoexpunge = null; specialUse = "Drafts"; };
|
||||||
|
Flagged = { auto = "create"; autoexpunge = null; specialUse = "Flagged"; };
|
||||||
|
Junk = { auto = "create"; autoexpunge = "60d"; specialUse = "Junk"; };
|
||||||
|
Sent = { auto = "create"; autoexpunge = null; specialUse = "Sent"; };
|
||||||
|
Trash = { auto = "create"; autoexpunge = "60d"; specialUse = "Trash"; };
|
||||||
|
};
|
||||||
|
|
||||||
|
sslServerCert = "/var/lib/acme/${hyper.domain}/fullchain.pem";
|
||||||
|
sslServerKey = "/var/lib/acme/${hyper.domain}/key.pem";
|
||||||
|
sslCACert = "/var/lib/acme/${hyper.domain}/chain.pem";
|
||||||
|
};
|
||||||
|
}
|
||||||
45
system-modules/nx2site/maddy.nix
Normal file
45
system-modules/nx2site/maddy.nix
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
{ config, pkgs, ... }@all: with all; {
|
||||||
|
sops.secrets = {
|
||||||
|
"nx2site/maddy/nxcaldav_password" = { owner = "maddy"; group = "maddy"; mode = "600"; };
|
||||||
|
"nx2site/maddy/lennart_password" = { owner = "maddy"; group = "maddy"; mode = "600"; };
|
||||||
|
"nx2site/maddy/daniel_password" = { owner = "maddy"; group = "maddy"; mode = "600"; };
|
||||||
|
};
|
||||||
|
users.users."maddy" = {
|
||||||
|
extraGroups = [ "acme" "nginx" ];
|
||||||
|
};
|
||||||
|
services.maddy = {
|
||||||
|
enable = true;
|
||||||
|
primaryDomain = hyper.domain;
|
||||||
|
user = "maddy";
|
||||||
|
group = "maddy";
|
||||||
|
hostname = "mail.${hyper.domain}";
|
||||||
|
ensureAccounts = [
|
||||||
|
"nxcaldav@${hyper.domain}"
|
||||||
|
"lennart@${hyper.domain}"
|
||||||
|
"daniel@${hyper.domain}"
|
||||||
|
];
|
||||||
|
ensureCredentials = {
|
||||||
|
"nxcaldav@${hyper.domain}".passwordFile = config.sops.secrets."nx2site/maddy/nxcaldav_password".path;
|
||||||
|
"lennart@${hyper.domain}".passwordFile = config.sops.secrets."nx2site/maddy/lennart_password".path;
|
||||||
|
"daniel@${hyper.domain}".passwordFile = config.sops.secrets."nx2site/maddy/daniel_password".path;
|
||||||
|
};
|
||||||
|
|
||||||
|
openFirewall = true;
|
||||||
|
tls = {
|
||||||
|
loader = "file";
|
||||||
|
certificates = [{
|
||||||
|
keyPath = "/var/lib/acme/nx2.site/key.pem";
|
||||||
|
certPath = "/var/lib/acme/nx2.site/cert.pem";
|
||||||
|
}];
|
||||||
|
};
|
||||||
|
# Enable TLS listeners. Configuring this via the module is not yet
|
||||||
|
# implemented, see https://github.com/NixOS/nixpkgs/pull/153372
|
||||||
|
config = builtins.replaceStrings [
|
||||||
|
"imap tcp://0.0.0.0:143"
|
||||||
|
"submission tcp://0.0.0.0:587"
|
||||||
|
] [
|
||||||
|
"imap tls://0.0.0.0:993 tcp://0.0.0.0:143"
|
||||||
|
"submission tls://0.0.0.0:465 tcp://0.0.0.0:587"
|
||||||
|
] options.services.maddy.config.default;
|
||||||
|
};
|
||||||
|
}
|
||||||
117
system-modules/nx2site/nxcaldav.nix
Normal file
117
system-modules/nx2site/nxcaldav.nix
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
{ pkgs, ... }@all: with all; let
|
||||||
|
x = rec { version = "0.0.11";
|
||||||
|
user = "nxcaldav";
|
||||||
|
nxcsrc = pkgs.fetchFromGitea {
|
||||||
|
domain = "git.${hyper.domain}";
|
||||||
|
owner = "nx2";
|
||||||
|
repo = "NxCalDav";
|
||||||
|
rev = version;
|
||||||
|
hash = "sha256-Hk27BQCBtdRQ1aSHVEQ1EVjPrsC2jOUPDT4yuU9OCXQ=";
|
||||||
|
};
|
||||||
|
nxc = pkgs.buildGoModule {
|
||||||
|
pname = "NxCalDav";
|
||||||
|
inherit version;
|
||||||
|
src = nxcsrc;
|
||||||
|
vendorHash = "sha256-prstYDJuwS5E5uRwUkX0M+QdnIaQ0QewKe8HaoZ0Db4=";
|
||||||
|
};
|
||||||
|
nxc_helpers = pkgs.python3Packages.buildPythonApplication {
|
||||||
|
inherit version;
|
||||||
|
format = "other";
|
||||||
|
pname = "nxc_helpers";
|
||||||
|
src = nxcsrc;
|
||||||
|
propagatedBuildInputs = with pkgs.python313Packages; [ pyyaml psycopg2 ];
|
||||||
|
installPhase = ''
|
||||||
|
sed -i "15s|.*| parser.add_argument('--config', default='${cfg}', help='Path to config.yaml')|" ./export_events.py
|
||||||
|
sed -i "17s|.*| parser.add_argument('--config', default='${cfg}', help='Path to config.yaml')|" ./import_events.py
|
||||||
|
install -Dm755 "./export_events.py" "$out/bin/nxc_export"
|
||||||
|
install -Dm755 "./import_events.py" "$out/bin/nxc_import"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
cfg = (pkgs.formats.yaml { }).generate "nxcaldav-config.yaml" {
|
||||||
|
server = {
|
||||||
|
bind_address = "0.0.0.0:14243";
|
||||||
|
public_url = "http://nxc.${hyper.domain}/";
|
||||||
|
redaction_text = "[-]";
|
||||||
|
default_class = "CONFIDENTIAL";
|
||||||
|
};
|
||||||
|
database.url = "postgres://nxcaldav@localhost:5432/nxcaldav?sslmode=disable";
|
||||||
|
users = let dfu = name: {
|
||||||
|
name = name;
|
||||||
|
password_cmd = ''cat ${config.sops.secrets."nx2site/nxcaldav/${name}_password".path}'';
|
||||||
|
groups = [ "family" ];
|
||||||
|
}; in [
|
||||||
|
(dfu "lennart")
|
||||||
|
(dfu "daniel")
|
||||||
|
(dfu "diane")
|
||||||
|
(dfu "georg")
|
||||||
|
(dfu "tessa")
|
||||||
|
(dfu "shared")
|
||||||
|
];
|
||||||
|
calendars = [
|
||||||
|
{ owner = "lennart"; color = "#dddddd"; id = "preservation"; }
|
||||||
|
{ owner = "lennart"; color = "#dd2222"; id = "effort"; }
|
||||||
|
{ owner = "lennart"; color = "#2222dd"; id = "experience"; }
|
||||||
|
{ owner = "lennart"; color = "#22aa22"; id = "leisure"; }
|
||||||
|
{ id = "family";
|
||||||
|
owner = "shared";
|
||||||
|
color = "#dddd22";
|
||||||
|
access = [
|
||||||
|
{ group = "family"; mode = "read-write"; }
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
address_books = [
|
||||||
|
{ owner = "lennart"; id = "Others"; }
|
||||||
|
{ owner = "lennart"; id = "TUDa"; }
|
||||||
|
{ owner = "lennart"; id = "HSMW"; }
|
||||||
|
{ owner = "lennart"; id = "CWG"; }
|
||||||
|
{ owner = "lennart"; id = "Handball"; }
|
||||||
|
{ id = "Family & Freinds";
|
||||||
|
owner = "shared";
|
||||||
|
access = [
|
||||||
|
{ group = "family"; mode = "read-write"; }
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
aggregates = [
|
||||||
|
{ id = "lennart-aggregate";
|
||||||
|
owner = "shared";
|
||||||
|
sources = [ "preservation" "effort" "experience" "leisure" ];
|
||||||
|
access = [
|
||||||
|
{ group = "family" ; mode = "read-only"; }
|
||||||
|
{ ics = "future-only"; }
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}; in with x; {
|
||||||
|
sops.secrets = let ss = { owner = user; group = user; mode = "600"; }; in {
|
||||||
|
"nx2site/nxcaldav/lennart_password" = ss;
|
||||||
|
"nx2site/nxcaldav/daniel_password" = ss;
|
||||||
|
"nx2site/nxcaldav/diane_password" = ss;
|
||||||
|
"nx2site/nxcaldav/georg_password" = ss;
|
||||||
|
"nx2site/nxcaldav/tessa_password" = ss;
|
||||||
|
"nx2site/nxcaldav/shared_password" = ss;
|
||||||
|
};
|
||||||
|
users = {
|
||||||
|
groups."${user}" = {};
|
||||||
|
users = {
|
||||||
|
"${hyper.user}".extraGroups = [ user ];
|
||||||
|
"${user}" = {
|
||||||
|
isSystemUser = true;
|
||||||
|
isNormalUser = false;
|
||||||
|
group = user;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
environment.systemPackages = [ nxc_helpers ];
|
||||||
|
systemd.services."nxcaldav" = {
|
||||||
|
enable = true;
|
||||||
|
path = [ pkgs.bash pkgs.coreutils ];
|
||||||
|
serviceConfig = {
|
||||||
|
User = user;
|
||||||
|
Group = user;
|
||||||
|
ExecStart = ''${nxc}/bin/nxcaldav -c ${cfg}'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,9 +1,8 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all; {
|
||||||
{
|
|
||||||
services = {
|
services = {
|
||||||
open-web-calendar = {
|
open-web-calendar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
domain = "cal.${hyper.domain}";
|
domain = "owc.${hyper.domain}";
|
||||||
package = pkgs.open-web-calendar;
|
package = pkgs.open-web-calendar;
|
||||||
settings = {
|
settings = {
|
||||||
# PORT = 21342;
|
# PORT = 21342;
|
||||||
@@ -11,4 +10,5 @@
|
|||||||
calendarSettings = { };
|
calendarSettings = { };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
# proxy endpoint is done is done automatically
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
{ pkgs, ...}@all: with all;
|
{ pkgs, ...}@all: with all; {
|
||||||
{
|
|
||||||
sops.secrets = {
|
sops.secrets = {
|
||||||
"nx2site/sslCertificate.pem" = { owner = config.services.nginx.user; };
|
"nx2site/sslCertificate.pem" = { owner = config.services.nginx.user; };
|
||||||
"nx2site/sslCertificateKey.pem" = { owner = config.services.nginx.user; };
|
"nx2site/sslCertificateKey.pem" = { owner = config.services.nginx.user; };
|
||||||
@@ -14,19 +13,25 @@
|
|||||||
};
|
};
|
||||||
certs = {
|
certs = {
|
||||||
"${hyper.domain}" = {
|
"${hyper.domain}" = {
|
||||||
extraDomainNames = builtins.map (subd: "${subd}.${hyper.domain}") [ "sync" ];
|
extraDomainNames = builtins.map (subd: "${subd}.${hyper.domain}") [
|
||||||
|
"sync"
|
||||||
|
"mail"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
users.users."nginx" = {
|
users.users = {
|
||||||
extraGroups = [ "nginx" "acme" "copyparty" ];
|
"nginx" = {
|
||||||
useDefaultShell = false;
|
extraGroups = [ "nginx" "acme" "copyparty" ];
|
||||||
linger = true;
|
useDefaultShell = false;
|
||||||
home = "/var/nginx/";
|
linger = true;
|
||||||
homeMode = "770";
|
home = "/var/nginx/";
|
||||||
createHome = true;
|
homeMode = "770";
|
||||||
isSystemUser = true;
|
createHome = true;
|
||||||
isNormalUser = false;
|
isSystemUser = true;
|
||||||
|
isNormalUser = false;
|
||||||
|
};
|
||||||
|
"acme".extraGroups = [ "nginx" "acme" "hugo" ];
|
||||||
};
|
};
|
||||||
systemd.services.nginx.serviceConfig.ProtectHome = "read-only";
|
systemd.services.nginx.serviceConfig.ProtectHome = "read-only";
|
||||||
services.nginx = let
|
services.nginx = let
|
||||||
@@ -50,7 +55,7 @@
|
|||||||
defaultSSLListenPort = 443;
|
defaultSSLListenPort = 443;
|
||||||
enableQuicBPF = true;
|
enableQuicBPF = true;
|
||||||
enableReload = true;
|
enableReload = true;
|
||||||
package = pkgs.nginxQuic;
|
package = pkgs.nginx;
|
||||||
proxyResolveWhileRunning = false;
|
proxyResolveWhileRunning = false;
|
||||||
proxyTimeout = "20s";
|
proxyTimeout = "20s";
|
||||||
recommendedBrotliSettings = true;
|
recommendedBrotliSettings = true;
|
||||||
@@ -58,7 +63,7 @@
|
|||||||
recommendedOptimisation = true;
|
recommendedOptimisation = true;
|
||||||
recommendedProxySettings = true;
|
recommendedProxySettings = true;
|
||||||
recommendedTlsSettings = true;
|
recommendedTlsSettings = true;
|
||||||
recommendedZstdSettings = true;
|
# recommendedZstdSettings = true;
|
||||||
serverTokens = false;
|
serverTokens = false;
|
||||||
sslDhparam = config.sops.secrets."nx2site/dhparams.pem".path;
|
sslDhparam = config.sops.secrets."nx2site/dhparams.pem".path;
|
||||||
sslProtocols = "TLSv1.2 TLSv1.3";
|
sslProtocols = "TLSv1.2 TLSv1.3";
|
||||||
@@ -101,8 +106,16 @@
|
|||||||
"~ ^(/gpg)$".return = "301 /cards/gpg";
|
"~ ^(/gpg)$".return = "301 /cards/gpg";
|
||||||
"~ ^(/contact)$".return = "301 /cards/contact";
|
"~ ^(/contact)$".return = "301 /cards/contact";
|
||||||
"~ ^(/ba)$".return = "301 /BA.pdf";
|
"~ ^(/ba)$".return = "301 /BA.pdf";
|
||||||
|
"~ ^(/schedule)$".return = "301 https://owc.${hyper.domain}/calendar.html?specification_url=https://${hyper.domain}/owc-schedule.json?";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
"mail.${hyper.domain}" = {
|
||||||
|
listen = [
|
||||||
|
{ addr = "0.0.0.0"; port = 80; }
|
||||||
|
{ addr = "[::0]"; port = 80; }
|
||||||
|
];
|
||||||
|
locations."/.well-known/acme-challenge".root = "/var/lib/acme/acme-challenge";
|
||||||
|
};
|
||||||
"matrix.${hyper.domain}" = {
|
"matrix.${hyper.domain}" = {
|
||||||
listen = dl;
|
listen = dl;
|
||||||
locations."~.*".return = "502";
|
locations."~.*".return = "502";
|
||||||
@@ -156,6 +169,10 @@
|
|||||||
listen = dl;
|
listen = dl;
|
||||||
locations = { "/" = { proxyPass = "http://127.0.0.1:5232"; }; };
|
locations = { "/" = { proxyPass = "http://127.0.0.1:5232"; }; };
|
||||||
});
|
});
|
||||||
|
"nxc.${hyper.domain}" = (vh // {
|
||||||
|
listen = dl;
|
||||||
|
locations = { "/" = { proxyPass = "http://127.0.0.1:14243"; }; };
|
||||||
|
});
|
||||||
# "nc.${hyper.domain}" = vh // {
|
# "nc.${hyper.domain}" = vh // {
|
||||||
# # directly to nc
|
# # directly to nc
|
||||||
# };
|
# };
|
||||||
@@ -185,7 +202,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
# is done atomatically
|
# is done atomatically
|
||||||
# "cal.${hyper.domain}" = vh // {
|
# "owc.${hyper.domain}" = vh // {
|
||||||
# listen = dl;
|
# listen = dl;
|
||||||
# locations = { "/" = {
|
# locations = { "/" = {
|
||||||
# proxyPass = "http://unix:///run/open-web-calendar/socket";
|
# proxyPass = "http://unix:///run/open-web-calendar/socket";
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
|
||||||
{
|
|
||||||
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 ........ ?
|
|
||||||
# '';
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
||||||
60
system-modules/nx2site/smtp.nix
Normal file
60
system-modules/nx2site/smtp.nix
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
# Postfix: The SMTP server (MTA)
|
||||||
|
# Handles sending, receiving, and local delivery routing.
|
||||||
|
services.postfix = {
|
||||||
|
enable = true;
|
||||||
|
enableSubmission = true;
|
||||||
|
enableSubmissions = true;
|
||||||
|
|
||||||
|
# main.cf configuration
|
||||||
|
settings.main = {
|
||||||
|
hostname = "mail.${hyper.domain}";
|
||||||
|
domain = hyper.domain;
|
||||||
|
|
||||||
|
# Allow local services (like CalDAV) to send mail without authentication
|
||||||
|
networks = [ "127.0.0.0/8" "[::1]/128" ];
|
||||||
|
# TLS settings - using ACME certs from proxy.nix
|
||||||
|
smtpd_tls_security_level = "may";
|
||||||
|
smtpd_tls_auth_only = "yes";
|
||||||
|
smtpd_tls_cert_file = "/var/lib/acme/${hyper.domain}/fullchain.pem";
|
||||||
|
smtpd_tls_key_file = "/var/lib/acme/${hyper.domain}/key.pem";
|
||||||
|
|
||||||
|
# Use Dovecot for authentication (SASL)
|
||||||
|
smtpd_sasl_type = "dovecot";
|
||||||
|
smtpd_sasl_path = "/var/spool/postfix/auth";
|
||||||
|
smtpd_sasl_auth_enable = "yes";
|
||||||
|
smtpd_sasl_security_options = "noanonymous";
|
||||||
|
|
||||||
|
# Use Dovecot for delivery (LMTP)
|
||||||
|
virtual_transport = "lmtp:unix:/var/spool/postfix/dovecot-lmtp";
|
||||||
|
virtual_mailbox_domains = [ hyper.domain ];
|
||||||
|
mailbox_transport = "lmtp:unix:/var/spool/postfix/dovecot-lmtp";
|
||||||
|
|
||||||
|
|
||||||
|
# Basic relay restrictions
|
||||||
|
smtpd_recipient_restrictions = [
|
||||||
|
"permit_mynetworks"
|
||||||
|
"permit_sasl_authenticated"
|
||||||
|
"reject_unauth_destination"
|
||||||
|
];
|
||||||
|
|
||||||
|
# master.cf configuration: Enable submission (port 587) for mail clients
|
||||||
|
# submission-options = {
|
||||||
|
# type = "inet";
|
||||||
|
# private = false;
|
||||||
|
# command = "smtpd";
|
||||||
|
# args = [
|
||||||
|
# "-o smtpd_tls_security_level=encrypt"
|
||||||
|
# "-o smtpd_sasl_auth_enable=yes"
|
||||||
|
# "-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject"
|
||||||
|
# "-o milter_macro_daemon_name=ORIGINATING"
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
# create socket ala wiki
|
||||||
|
users.users."postfix" = {
|
||||||
|
createHome = true;
|
||||||
|
home = "/var/spool/postfix";
|
||||||
|
};
|
||||||
|
}
|
||||||
17
system-modules/nx2site/vmail.nix
Normal file
17
system-modules/nx2site/vmail.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{ ... }:{
|
||||||
|
users = {
|
||||||
|
groups."vmail" = {};
|
||||||
|
users = {
|
||||||
|
"vmail" = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "vmail";
|
||||||
|
home = "/var/spool/mail/vmail";
|
||||||
|
createHome = true;
|
||||||
|
};
|
||||||
|
# Permissions to allow Postfix and Dovecot to read ACME certificates
|
||||||
|
"postfix".extraGroups = [ "acme" ];
|
||||||
|
"dovecot2".extraGroups = [ "acme" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -28,6 +28,7 @@
|
|||||||
"vaultwarden"
|
"vaultwarden"
|
||||||
"paperless"
|
"paperless"
|
||||||
"nextcloud"
|
"nextcloud"
|
||||||
|
"nxcaldav"
|
||||||
];
|
];
|
||||||
settings = {
|
settings = {
|
||||||
port = 5432; # default
|
port = 5432; # default
|
||||||
@@ -54,6 +55,10 @@
|
|||||||
name = "paperless";
|
name = "paperless";
|
||||||
ensureDBOwnership = true;
|
ensureDBOwnership = true;
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
name = "nxcaldav";
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
postgresqlBackup = {
|
postgresqlBackup = {
|
||||||
|
|||||||
@@ -2,12 +2,9 @@
|
|||||||
{
|
{
|
||||||
hardware.keyboard.qmk.enable = true;
|
hardware.keyboard.qmk.enable = true;
|
||||||
|
|
||||||
# home.packages = with pkgs; [
|
|
||||||
# via
|
|
||||||
# ];
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
via
|
# via
|
||||||
qmk
|
qmk
|
||||||
];
|
];
|
||||||
services.udev.packages = [ pkgs.via ];
|
# services.udev.packages = [ pkgs.via ];
|
||||||
}
|
}
|
||||||
|
|||||||
31
system-modules/simple-postgres.nix
Normal file
31
system-modules/simple-postgres.nix
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
{ pkgs, ... }@all: with all; {
|
||||||
|
services.postgresql = lib.mkIf (!hyper.isServer) {
|
||||||
|
enable = false;
|
||||||
|
ensureUsers = [{
|
||||||
|
name = "nxcaldav";
|
||||||
|
ensureDBOwnership = true;
|
||||||
|
}];
|
||||||
|
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
|
||||||
|
enableJIT = false; # default
|
||||||
|
initdbArgs = []; # default
|
||||||
|
checkConfig = true; # default
|
||||||
|
enableTCPIP = false;
|
||||||
|
# # extraPlugins =
|
||||||
|
initialScript = null; # default
|
||||||
|
authentication = lib.mkForce ''
|
||||||
|
# TYPE DATABASE USER ADDRESS METHOD
|
||||||
|
local all all trust
|
||||||
|
host all all 127.0.0.1/32 trust #scram-sha-256
|
||||||
|
host all all ::1/128 trust #scram-sha-256
|
||||||
|
'';
|
||||||
|
settings = {
|
||||||
|
port = 5432; # default
|
||||||
|
listen_addresses = lib.mkForce "127.0.0.1";
|
||||||
|
log_line_prefix = "[%p] "; # default
|
||||||
|
shared_preload_libraries = [ ]; # default
|
||||||
|
};
|
||||||
|
ensureDatabases = [ "nxcaldav" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
{ pkgs, ... }@all: with all;
|
{ pkgs, ... }@all: with all; {
|
||||||
{
|
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
"ssl/certs/tuda-eduroam-root.crt".source = "${pkgs.cacert.unbundled}/etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2:1.crt";
|
"ssl/certs/tuda-eduroam-root.crt".source = "${pkgs.cacert.unbundled}/etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2:1.crt";
|
||||||
};
|
};
|
||||||
@@ -10,4 +9,23 @@
|
|||||||
path = "/etc/NetworkManager/system-connections/eduroam.nmconnection";
|
path = "/etc/NetworkManager/system-connections/eduroam.nmconnection";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
openconnect
|
||||||
|
networkmanager-openconnect
|
||||||
|
];
|
||||||
|
networking.openconnect = {
|
||||||
|
package = pkgs.openconnect;
|
||||||
|
interfaces = {
|
||||||
|
openconnect0 = {
|
||||||
|
autoStart = false;
|
||||||
|
certificate = "/home/nx2/tuda-rootcert.crt";
|
||||||
|
# extraOptions = { compression = "stateless"; no-dtls = true; no-http-keepalive = true; };
|
||||||
|
gateway = "vpn.hrz.tu-darmstadt.de";
|
||||||
|
# passwordFile = "/var/lib/secrets/openconnect-passwd";
|
||||||
|
# privateKey = "/var/lib/secrets/openconnect_private_key.pem";
|
||||||
|
protocol = "anyconnect";
|
||||||
|
user = secrets.email.tuda.tuid;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE5sYVtPLHXatTjrpol46xr9R4TidcB4t8axO6/ReNNR nxxps-nx2@nxace"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE5sYVtPLHXatTjrpol46xr9R4TidcB4t8axO6/ReNNR nxxps-nx2@nxace"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC/zcoYuYbamTPMOZPfsP1yQJ5Y6sDlPfBwui8MQjKWn nxnorth-nx2@nxace"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC/zcoYuYbamTPMOZPfsP1yQJ5Y6sDlPfBwui8MQjKWn nxnorth-nx2@nxace"
|
||||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMnbJx7nVeVi5jK1Eybm+jQoopiCTslewuHFLv2yCt4f nxdcs-nx2@nxace"
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMnbJx7nVeVi5jK1Eybm+jQoopiCTslewuHFLv2yCt4f nxdcs-nx2@nxace"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHOWa0xeARLSGbliVCqloGRvF7KlM6TcJSFhd+BxcvRt nxs23u-nx2@ssh.nx2.site"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
5
wsl.nix
5
wsl.nix
@@ -1,7 +1,6 @@
|
|||||||
{ pkgs, ... }@all: with all; {
|
{ pkgs, ... }@all: with all; {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.nixos-wsl.nixosModules.default
|
inputs.nixos-wsl.nixosModules.default
|
||||||
./system-modules/base-packages.nix
|
|
||||||
./system-modules/docker.nix
|
./system-modules/docker.nix
|
||||||
./system-modules/gc.nix
|
./system-modules/gc.nix
|
||||||
./system-modules/gpg.nix
|
./system-modules/gpg.nix
|
||||||
@@ -9,7 +8,8 @@
|
|||||||
./system-modules/nixd.nix
|
./system-modules/nixd.nix
|
||||||
./system-modules/users.nix
|
./system-modules/users.nix
|
||||||
];
|
];
|
||||||
system.stateVersion = pkgs.version;
|
environment.systemPackages = import ./system-modules/base-packages.nix pkgs;
|
||||||
|
system.stateVersion = hyper.main-pkgs-version;
|
||||||
wsl = {
|
wsl = {
|
||||||
defaultUser = hyper.user;
|
defaultUser = hyper.user;
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -27,4 +27,5 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
nixpkgs.hostPlatform = hyper.system;
|
nixpkgs.hostPlatform = hyper.system;
|
||||||
|
services.upower.enable = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user