Compare commits

..

4 Commits

Author SHA1 Message Date
Lennart J. Kurzweg (Nx2)
767ad10197 Merge branch 'master' of ssh://ssh.nx2.site:50022/nx2/dotfiles 2025-06-02 14:38:55 +02:00
Lennart J. Kurzweg (Nx2)
01a3f83156 sort configuration.nix imports 2025-06-02 14:38:38 +02:00
Lennart J. Kurzweg (Nx2)
d548481108 new eduroam password 2025-06-02 14:38:18 +02:00
Lennart J. Kurzweg (Nx2)
f383afb89d xps docked or not 2025-06-02 14:37:49 +02:00
173 changed files with 3504 additions and 9372 deletions

15
.ignore
View File

@@ -1,15 +0,0 @@
flake.lock
*.remmina
*.pem
*.env
*.key
*.ovpn
sops-secrets.yaml
*.png
*.jpg
*.webp
*.gif
*.mp3
*.mp4

View File

@@ -1,10 +1,7 @@
keys: keys:
- &users: - &users:
- &nx2backup age1sgzc2jh8af30a3cp6g7l4hyzusqrn3x3xw7frghc4akvjaplwa3stfemxc
- &nx2 22FB2CC03DC5292AB81CF67D0AF27B383170E634 - &nx2 22FB2CC03DC5292AB81CF67D0AF27B383170E634
- &nx2_key_13 age1x2lpsennl74n0f5jl60uv2ffjcuqymzf9ap3frlz2quyv0x3hq3scnewwq
- &xps-home age1pn4utvwpqdrswn0xurfdexn5nks9cd06jxzwg3m3m6za25ap4vxqxd0p3k
- &ace-home age1ur5zpr325cv7w0yn49azz9f48xsxd73w2sytt22yrnw5qs9r34nsv3vl05
- &north-home age1jr72q042ccgxpdgdaaev0arzc0vh3r02etv2tzhhsejl0mfaxs3q9hhlaz
- &hosts: - &hosts:
- &north age1vkqn2nars5qmpr35tac0x9vshphrq6nnzjfyxwusgn27kt3zualssv0u8e - &north age1vkqn2nars5qmpr35tac0x9vshphrq6nnzjfyxwusgn27kt3zualssv0u8e
- &xps age1jvf2lyrt2dw9jfnwgvnhmj9fmvyq8vvtepqjpkyycc5dqkkd4edqhxsgv6 - &xps age1jvf2lyrt2dw9jfnwgvnhmj9fmvyq8vvtepqjpkyycc5dqkkd4edqhxsgv6
@@ -16,9 +13,6 @@ creation_rules:
- *north - *north
- *xps - *xps
- *ace - *ace
- *nx2_key_13 - *nx2backup
- *xps-home
- *ace-home
- *north-home
pgp: pgp:
- *nx2 - *nx2

View File

@@ -1,6 +1,6 @@
# ❄️ NixOS Dotfiles # ❄️ NixOS Dotfiles
![Screenshot of my desktop](splash.webp) ![Screenshot of my desktop](splash.png)
## Information ## Information

View File

@@ -1,84 +1,159 @@
{ pkgs, ... }@all: with all; { { pkgs, hyper, inputs, ... }:
imports = [ {
imports = ([
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops
./system-modules/adb.nix ./system-modules/adb.nix
./system-modules/auto-mount.nix ./system-modules/auto-mount.nix
./system-modules/tz.nix
./system-modules/bluetooth.nix
./system-modules/boot.nix ./system-modules/boot.nix
./system-modules/cache.nix ./system-modules/boot.nix
./system-modules/calendar.nix ./system-modules/calendar.nix
./system-modules/dm.nix ./system-modules/dm.nix
./system-modules/davfs.nix
./system-modules/docker.nix ./system-modules/docker.nix
./system-modules/fcitx5.nix ./system-modules/fcitx5.nix
./system-modules/fonts.nix ./system-modules/fonts.nix
./system-modules/fonts.nix
./system-modules/fuse.nix
./system-modules/fuse.nix ./system-modules/fuse.nix
./system-modules/games.nix ./system-modules/games.nix
./system-modules/gc.nix ./system-modules/gc.nix
./system-modules/gc.nix
./system-modules/gpg.nix ./system-modules/gpg.nix
./system-modules/hardware-configuration.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/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/nvidia.nix
./system-modules/ollama.nix ./system-modules/ollama.nix
./system-modules/qmk.nix ./system-modules/qmk.nix
./system-modules/scanning.nix ./system-modules/scanning.nix
./system-modules/sops.nix ./system-modules/sops.nix
./system-modules/sound.nix ./system-modules/sound.nix
./system-modules/sound.nix
./system-modules/sshd.nix ./system-modules/sshd.nix
./system-modules/input.nix
./system-modules/syncthing.nix ./system-modules/syncthing.nix
./system-modules/tuda.nix ./system-modules/tuda.nix
./system-modules/gui.nix ./system-modules/users.nix
./system-modules/editor.nix
./system-modules/printing.nix
./system-modules/security.nix
./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/stay-up.nix
./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/dyn_dns.nix
./system-modules/nx2site/nextcloud.nix
./system-modules/nx2site/nxcaldav.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
./system-modules/nx2site/radicale.nix ./system-modules/nx2site/radicale.nix
# ./system-modules/nx2site/nextcloud.nix
./system-modules/nx2site/vaultwarden.nix ./system-modules/nx2site/vaultwarden.nix
./system-modules/nx2site/paperless.nix ./system-modules/nx2site/paperless.nix
./system-modules/calendar/publish.nix
./system-modules/calendar/lec.nix
# ./system-modules/calendar/lr.nix
] else [ ]);
environment.systemPackages = import ./system-modules/base-packages.nix pkgs;
system.stateVersion = hyper.main-pkgs-version; ./system-modules/calendar-publish.nix
./system-modules/calendar-lec.nix
./system-modules/calendar-lr.nix
./system-modules/calendar-dicos.nix
] else [
]);
# Set your time zone.
time.timeZone = "Europe/Berlin";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
console.font = "Lat2-Terminus16";
console.keyMap = "de";
services.xserver = {
enable = true;
xkb = {
layout = "de";
options = "eurosign:e,caps:escape";
};
# lightdm in lightdm.nix
};
# Enable CUPS to print documents.
services.printing.enable = true;
# rtkit is optional but recommended
security.rtkit.enable = true;
# Enable touchpad support (enabled default in most desktopManager).
services.libinput.enable = true;
hardware.uinput.enable = true;
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
package = pkgs.bluez5-experimental;
settings.Policy.AutoEnable = "true";
settings.General.Enable = "Source,Sink,Media,Socket";
};
services.blueman.enable = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; ([
git
git-crypt
lazygit # home-manager module is bugged
wget
curlHTTP3
zip
unzip
p7zip
unar
nano
htop
direnv
openssl
blueman
dmidecode
file
parallel
# ]) ++ (with pkgs-unstable; [
# # sendme
]);
environment.variables = {
EDITOR = "hx";
VISUAL = "hx";
};
programs.hyprland = {
# config is done with home-manager
enable = true;
xwayland.enable = true;
};
systemd.extraConfig = "DefaultLimitNOFILE=2048";
boot.tmp.useTmpfs = false;
system.stateVersion = "25.05";
nixpkgs.config.allowUnfree = true;
nix = {
settings = {
experimental-features = [ "nix-command" "flakes" ];
substitute = true;
substituters = [
"https://yazi.cachix.org"
];
trusted-public-keys = [
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
];
};
};
programs.nix-ld.enable = true;
programs.bash.shellInit = '' programs.bash.shellInit = ''
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
fi
''; '';
} }

View File

@@ -1,31 +1,43 @@
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" {
"nvidia-settings" unfree = [
]; "discord"
licenses = [ "spotify"
"CUDA EULA" "obsidian"
"cuDNN EULA" "zoom-us"
"cuTENSOR EULA" "zoom"
"NVidia OptiX EULA"
]; # 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
# insecure = [ ]; "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"
];
inecure = [
# "electron-25.9.0"
];
} }

View File

@@ -1,54 +1,13 @@
{ {
"NxXPS": { "base": {
"base": { "foreground": "#dbd2f8",
"foreground": "#fccee9", "background": "#0f062c"
"background": "#18010e"
},
"to_alter": {
"accent": "#f43da7",
"secondary": "#3269ff",
"tertiary": "#d744ed",
"special": "#3cf48a",
"weird": "#f4c63c"
}
}, },
"NxACE": { "to_alter": {
"base": { "accent": "#724ce5",
"foreground": "#dddddd", "secondary": "#ff3271",
"background": "#111111" "tertiary": "#ffc932",
}, "special": "#bfe54b",
"to_alter": { "weird": "#e54b8b"
"accent": "#ff6666",
"secondary": "#ff8866",
"tertiary": "#ff6688",
"special": "#8888ff",
"weird": "#88ff66"
}
},
"NxNORTH": {
"base": {
"foreground": "#dbe7ef",
"background": "#070d11"
},
"to_alter": {
"accent": "#72a2bf",
"secondary": "#fc3535",
"tertiary": "#83ae8a",
"special": "#bf8f71",
"weird": "#a871bf"
}
},
"NxDCS": {
"base": {
"foreground": "#ddcccc",
"background": "#080707"
},
"to_alter": {
"accent": "#d23f36",
"secondary": "#355273",
"tertiary": "#1b789b",
"special": "#66dd66",
"weird": "#dddd66"
}
} }
} }

View File

@@ -1,46 +0,0 @@
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"; {}

4
flake-modules/nvidia.nix Normal file
View File

@@ -0,0 +1,4 @@
{
enable = false;
prime = false;
}

View File

@@ -1,43 +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
# 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}";
}

View File

@@ -1,29 +0,0 @@
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";
})];
}))
)

View File

@@ -1,33 +1,19 @@
pkgs: hyper: rec { pkgs: 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;
gap-size = 5; gap-size = 5;
border-width = 2; border-width = 2;
color = let color = let
dark = (-0.4); dark = (-0.5);
darker = (-0.6); bright = (0.5);
bright = 0.4; alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
brighter = 0.7; alter = let f = lib.alter-luminace-hex; in color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; };
alter-set = let f = lib.alter-luminace-hex; in color-name: color-value: {
base = color-value;
dark = f color-value dark;
darker = f color-value darker;
bright = f color-value bright;
brighter = f color-value brighter;
};
alter = let f = lib.alter-luminace-hex; in color-value: {
base = color-value;
dark = f color-value dark;
darker = f color-value darker;
bright = f color-value bright;
brighter = f color-value brighter;
};
# ccolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)); # ccolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json));
ccolor = builtins.mapAttrs alter-set { ccolor = builtins.mapAttrs alter-set {
black = "#040404"; # "#111111" "#001100"; black = "#111111"; # "#111111" "#001100";
white = "#dddddd"; # "#dddddd" "#66dd66"; white = "#dddddd"; # "#dddddd" "#66dd66";
blue = "#4444dd"; # "#3333dd" "#003300"; blue = "#4444dd"; # "#3333dd" "#003300";
cyan = "#44dddd"; # "#11dddd" "#00dd55"; cyan = "#44dddd"; # "#11dddd" "#00dd55";
@@ -36,13 +22,17 @@ pkgs: hyper: 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))."${hyper.host}".to_alter; facolor = builtins.mapAttrs alter-set (builtins.fromJSON (builtins.readFile ./colors.json)).to_alter;
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json))."${hyper.host}".base; fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).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";
subtle = { darker = "#111111"; dark = "#444444"; base = "#777777"; bright = "#999999"; brighter = "#cccccc"; }; # accent = blue;
# secondary = cyan;
# tertiary = magenta;
# special = yellow;
# weird = green;
positive = alter "#00dd00"; positive = alter "#00dd00";
negative = alter "#dd0000"; negative = alter "#dd0000";
border = accent.base; border = accent.base;
@@ -50,14 +40,17 @@ pkgs: hyper: rec {
}; };
in ccolor // fcolor // xcolor; in ccolor // fcolor // xcolor;
font = { font = {
code = rec { code = {
name = "JetBrainsMono Nerd Font"; name = "JetBrainsMono Nerd Font";
package = pkgs.nerd-fonts.jetbrains-mono; package = pkgs.nerd-fonts.jetbrains-mono;
regular-path = "${package}/share/fonts/truetype/NerdFonts/JetBrainsMonoNerdFont-Regular.ttf"; # name = "CascadiaCove-NF";
# package = (pkgs.nerdfonts.override { fonts = [ "CascadiaCode" ]; });
}; };
base = { base = {
# name = "NewComputerModern08";
# package = pkgs.newcomputermodern;
name = "Atkinson Hyperlegible"; name = "Atkinson Hyperlegible";
package = pkgs.atkinson-hyperlegible-next; package = pkgs.atkinson-hyperlegible;
}; };
}; };
cursor = { cursor = {

924
flake.lock generated

File diff suppressed because it is too large Load Diff

161
flake.nix
View File

@@ -2,90 +2,111 @@
description = "Multisystem NixOS Flake of Lennart J. Kurzweg"; description = "Multisystem NixOS Flake of Lennart J. Kurzweg";
inputs = { inputs = {
nixpkgs.url = "nixpkgs/nixos-25.11"; nixpkgs = { url = "nixpkgs/nixos-25.05"; };
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";
home-manager = { url = "github:nix-community/home-manager/release-25.11"; inputs.nixpkgs.follows = "nixpkgs"; }; home-manager = { url = "github:nix-community/home-manager/release-25.05"; inputs.nixpkgs.follows = "nixpkgs"; };
home-manager24 = { url = "github:nix-community/home-manager/release-24.05"; inputs.nixpkgs.follows = "nixpkgs24"; };
nix-on-droid = { nixos-wsl = { url = "github:nix-community/NixOS-WSL/main"; };
url = "github:nix-community/nix-on-droid/release-24.05"; nix-on-droid = { url = "github:nix-community/nix-on-droid/release-24.05"; inputs.nixpkgs.follows = "nixpkgs"; };
inputs = { nixpkgs.follows = "nixpkgs24"; home-manager.follows = "home-manager24"; };
};
nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; };
lanzaboote = { url = "github:nix-community/lanzaboote/v0.3.0"; };
sops-nix = { url = "github:Mic92/sops-nix"; inputs.nixpkgs.follows = "nixpkgs"; }; hyprland = { url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; };
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2"; hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; };
hyprswitch = { url = "github:h3rmt/hyprswitch/release"; };
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; yazi = { url = "github:sxyazi/yazi"; };
yazi.url = "github:sxyazi/yazi"; yazi-plugins = { url = "github:lordkekz/nix-yazi-plugins"; inputs.nixpkgs.follows = "nixpkgs"; };
copyparty.url = "github:9001/copyparty"; zen-browser = { url = "github:MarceColl/zen-browser-flake"; };
ghostty = { url = "github:ghostty-org/ghostty"; };
}; };
outputs = { ... }@inputs: with inputs; let outputs = { self, ... }@inputs: with inputs; let
system = "x86_64-linux"; system = "x86_64-linux";
simple-pkgs = import nixpkgs { inherit system; }; config = { allowUnfree = true; allowUnfreePredicate = pkg: builtins.elem (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; inherit system;
get-rice = import ./flake-modules/rice.nix simple-pkgs; user = "nx2";
in { domain = "nx2.site";
nixosConfigurations = let home = "/home/${user}/";
make-nixos-system = host: let };
hyper = get-hyper host;
rice = get-rice hyper; pkgs = import nixpkgs { inherit system config; } // {
in nixpkgs.lib.nixosSystem { unstable = import nixpkgs-unstable { inherit system config; };
pkgs = get-pkgs hyper; latest = import nixpkgs-latest { inherit system config; };
modules = [ ./configuration.nix ]; version = "25.05";
specialArgs = { inherit inputs hyper rice secrets; };
};
make-nixos-wsl-system = host: let hyper = get-hyper host; in nixpkgs.lib.nixosSystem {
pkgs = get-pkgs hyper;
modules = [ ./wsl.nix ];
specialArgs = { inherit inputs hyper rice; };
};
in {
NxNORTH = make-nixos-system "NxNORTH";
NxXPS = make-nixos-system "NxXPS";
NxACE = make-nixos-system "NxACE";
NxDCS = make-nixos-wsl-system "NxDCS";
}; };
nixOnDroidConfigurations = let nvidia-base = import ./flake-modules/nvidia.nix;
makeNODConfiguration = host: nix-on-droid.lib.nixOnDroidConfiguration rec { secrets = import ./git-crypt/secrets.nix;
hyper = get-hyper host; rice = import ./flake-modules/rice.nix pkgs;
pkgs = get-pkgs hyper;
modules = [ ./nod.nix ];
home-manager-path = home-manager24.outPath;
extraSpecialArgs = { inherit inputs hyper rice; };
};
in { NxS23U = makeNODConfiguration "NxS23U"; };
homeConfigurations = let in {
make-home-configuration = host: let nixosConfigurations = let
hyper = get-hyper host; make-nixos-system = host: nvidia-settings: nixpkgs.lib.nixosSystem {
rice = get-rice hyper; inherit system;
in home-manager.lib.homeManagerConfiguration { modules = [ ./configuration.nix ];
pkgs = get-pkgs hyper; specialArgs = let
modules = [ ./home.nix ]; hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
extraSpecialArgs = { inherit inputs hyper rice secrets; }; in { inherit pkgs inputs hyper rice secrets; };
}; };
make-shell-configuration = host: let make-nixos-wsl-system = host: nixpkgs.lib.nixosSystem {
hyper = get-hyper host; inherit system;
rice = get-rice hyper; modules = [ ./nixos-wsl.nix ];
in home-manager.lib.homeManagerConfiguration { specialArgs = let
pkgs = get-pkgs hyper; hyper = hyper-base // { inherit host; };
modules = [ ./shell-only.nix ]; in { inherit pkgs inputs hyper rice; };
extraSpecialArgs = { inherit inputs hyper rice secrets; }; };
make-nixondroid-system = host: nixpkgs.lib.nixosSystem {
inherit system;
modules = [ ./nix-on-droid.nix ];
specialArgs = let
pkgs.version = "24.05";
hyper = hyper-base // {
inherit host;
system = "aarch64-linux";
home = assert 1 == 2; "";
};
in { inherit pkgs inputs hyper rice; };
}; };
in { in {
"nx2@NxXPS" = make-home-configuration "NxXPS"; NxXPS = make-nixos-system "NxXPS" { enable = true; prime = true; };
"nx2@NxNORTH" = make-home-configuration "NxNORTH"; NxNORTH = make-nixos-system "NxNORTH" { enable = true; prime = false; };
"nx2@NxACE" = make-home-configuration "NxACE"; NxACE = make-nixos-system "NxACE" { enable = false; };
"nx2@NxDCS" = make-shell-configuration "NxDCS";
NxWSL = make-nixos-wsl-system "NxWSL";
NxS23U = make-nixondroid-system "NxS23U";
};
homeConfigurations = let
make-home-configuration = host: user: nvidia-settings: home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [ ./home.nix ];
extraSpecialArgs = let
hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
in { inherit pkgs inputs hyper rice secrets; };
};
make-shell-configuration = host: user: home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [ ./shell-only.nix ];
extraSpecialArgs = let
hyper = hyper-base // { inherit host; };
in { inherit pkgs inputs hyper rice secrets; };
};
in {
"${hyper-base.user}@NxXPS" = make-home-configuration "NxXPS" hyper-base.user { enable = true; prime = true; };
"${hyper-base.user}@NxNORTH" = make-home-configuration "NxNORTH" hyper-base.user { enable = true; prime = false; };
"${hyper-base.user}@NxACE" = make-home-configuration "NxACE" hyper-base.user { enable = false; };
"${hyper-base.user}@NxS23U" = make-shell-configuration "NxS23U" hyper-base.user;
"${hyper-base.user}@NxWSL" = make-shell-configuration "NxWSL" hyper-base.user;
}; };
}; };
} }

Binary file not shown.

View File

@@ -1,819 +0,0 @@
flf2a$ 8 8 17 -1 2
nx2.flf by nx2
July 10. 2025
$$@
$$@
$$@
$$@
$$@
$$@
$$@
$$@@
db$@
88$@
88$@
°°$@
..$@
YP$@
$@
$@@
.o. .o.$@
'8' '8'$@
$@
$@
$@
$@
$@
$@@
$@
db db $@
C88888D$@
88 88 $@
C88888D$@
YP YP $@
$@
$@@
8 $@
.d888b.$@
88 8 °°$@
'Y888b.$@
.. 8 8D$@
'Y888P'$@
8 $@
$@@
d8b dD$@
°8° d8'$@
d8' $@
d8' $@
d8'.8.$@
d8' Y8P$@
$@
$@@
.d888b. $@
8P 8D $@
'Vb d8' $@
d88C dD$@
C8' d8D $@
'888P Yb$@
$@
$@@
Cb$@
'D$@
'$@
$@
$@
$@
$@
$@@
dD$@
d8' $@
d8 $@
88 $@
V8 $@
V8. $@
VD$@
$@@
Cb. $@
'8b $@
8b$@
88$@
8P$@
.8P $@
CP' $@
$@@
$@
$@
d.8.b $@
X8K $@
Y'8'P $@
$@
$@
$@@
$@
db $@
88 $@
C888888D$@
88 $@
VP $@
$@
$@@
$@
$@
$@
$@
db$@
Y8$@
.V$@
$@@
$@
$@
$@
C8888D$@
$@
$@
$@
$@@
$@
$@
$@
$@
db$@
VP$@
$@
$@@
dD$@
d8'$@
d8' $@
d8' $@
d8' $@
C8' $@
$@
$@@
.d88b. $@
.8P 88.$@
88 d'88$@
88 d' 88$@
'88' d8'$@
'Y88P' $@
$@
$@@
d8b $@
dP88 $@
dP'88 $@
88 $@
88 $@
Y8888P$@
$@
$@@
.d888b.$@
VP '8D$@
odD'$@
.88' $@
j88. $@
888888D$@
$@
$@@
.d888b.$@
VP '8D$@
oooY'$@
°°Yb.$@
db 8D$@
'Y888P'$@
$@
$@@
j8b $@
j888 $@
j8'88 $@
j8' 88 $@
V88888D$@
VP $@
$@
$@@
d88888b$@
8D $@
Y888bo.$@
'88$@
do. .88$@
'Y888P'$@
$@
$@@
dD $@
d8' $@
d8' $@
d8888b.$@
88' '8D$@
'8888P $@
$@
$@@
d88888b$@
VP d8'$@
d8' $@
d8' $@
d8' $@
d8' $@
$@
$@@
.d888b.$@
88 8D$@
'VoooY'$@
.d°°°b.$@
88 8D$@
'Y888P'$@
$@
$@@
.d888b.$@
88' '8D$@
'V8o88'$@
d8' $@
d8' $@
d8' $@
$@
$@@
$@
db$@
VP$@
$@
db$@
VP$@
$@
$@@
$@
db$@
VP$@
$@
db$@
V8$@
P$@
$@@
$@
$@
.d9$@
.dP' $@
'Yb. $@
'Yb$@
$@
$@@
$@
C8888D$@
$@
C8888D$@
$@
$@
$@
$@@
$@
$@
0b. $@
'Yb.$@
.dP'$@
0Y' $@
$@
$@@
.d888b.$@
VP '8D$@
odD'$@
8P' $@
.. $@
VP $@
$@
$@@
.o888bo. $@
d8°' '°Y8 $@
d8' .o88b 88$@
8P dP d8 8P$@
8b 'V88P'8P $@
Yo. ...$@
'°Y8888P°' $@
$@@
d8b $@
dP'Yb $@
d8. .8b $@
d8888888b $@
d8' '8b$@
YP YP$@
$@
$@@
d8888b.$@
88 '8D$@
88oooY'$@
88°°Yb.$@
88 8D$@
Y8888P'$@
$@
$@@
.od88bo. $@
.8P°' '°YD$@
88 $@
88 $@
'8b. .dD$@
'°Y88P°' $@
$@
$@@
d8888bo. $@
88 '8b$@
88 88$@
88 88$@
88 .8P$@
Y8888P°' $@
$@
$@@
d888888b$@
88' $@
88oooo. $@
88°°°°' $@
88. $@
Y888888P$@
$@
$@@
d888888b$@
88' $@
88oooo. $@
88°°°°' $@
88 $@
YP $@
$@
$@@
.od88bo. $@
.8P°' '°YD$@
88 $@
88 d88b$@
'8b. .8D$@
'°Y88P°'V$@
$@
$@@
db db$@
88 88$@
88ooo88$@
88°°°88$@
88 88$@
YP YP$@
$@
$@@
d8888b$@
'88' $@
88 $@
88 $@
.88. $@
Y8888P$@
$@
$@@
d88b$@
'8P'$@
88 $@
88 $@
db..88 $@
'Y88P' $@
$@
$@@
db dD$@
88 .8P'$@
88o8P $@
88°8b $@
88 '88.$@
YP YD$@
$@
$@@
db $@
88 $@
88 $@
88 $@
88....$@
Y8888D$@
$@
$@@
d8b d8b$@
88Y8bd8P88$@
88 'YP' 88$@
88 88$@
88 88$@
YP YP$@
$@
$@@
d8b db$@
888b 88$@
88Y8b 88$@
88 Y8b88$@
88 Y888$@
YP Y8P$@
$@
$@@
.od88bo. $@
.8P' 'Y8.$@
88 88$@
88 88$@
'8b. .d8'$@
'°Y88P°' $@
$@
$@@
d88888b.$@
88' '8b$@
88. .8P$@
888888P'$@
88 $@
YP $@
$@
$@@
.od88bo. $@
.8P' 'Y8.$@
88 88$@
88 '8o 88$@
'8b. '8dP'$@
'°Y88P°8o $@
$@
$@@
d88888b.$@
88' '8b$@
88. .8P$@
888888P'$@
88 Y8b $@
YP Y8b$@
$@
$@@
.d8888.$@
88' YP$@
'8bo. $@
'Y8b.$@
db 8D$@
'8888Y'$@
$@
$@@
d888888b$@
'°°88°°'$@
88 $@
88 $@
88 $@
YP $@
$@
$@@
db db$@
88 88$@
88 88$@
88 88$@
Y8. .8P$@
°8888° $@
$@
$@@
db db$@
88 88$@
Y8 8P$@
'8b d8'$@
'8bd8' $@
YP $@
$@
$@@
db db$@
88 88$@
88 88$@
Y8 db 8P$@
'8bd88bd8'$@
'8P°°8P' $@
$@
$@@
db db$@
'8b d8'$@
'8bd8' $@
.dPYb. $@
.8P Y8.$@
YP YP$@
$@
$@@
db db$@
'8b d8'$@
'8bd8' $@
88 $@
88 $@
YP $@
$@
$@@
d88888D$@
YP d8'$@
d8' $@
d8' $@
d8' db$@
d88888P$@
$@
$@@
d88D$@
88 $@
88 $@
88 $@
88 $@
88 $@
L88D$@
$@@
Cb $@
'8b $@
'8b $@
'8b $@
'8b $@
'8D$@
$@
$@@
C88D$@
88$@
88$@
88$@
88$@
88$@
C888$@
$@@
db $@
.dPVb. $@
dP' 'Vb$@
$@
$@
$@
$@
$@@
$@
$@
$@
$@
$@
C88888D$@
$@
$@@
dD$@
C'$@
'$@
$@
$@
$@
$@
$@@
$@
.d8888bd8$@
d8°' '°88$@
88 88$@
88o. .o88$@
'Y8888P'8$@
$@
$@@
db $@
88od888b. $@
88°' '°88$@
88 88$@
88o. .o88$@
Y'Y8888P' $@
$@
$@@
$@
.od88bo.$@
.8P' 'YP$@
88 $@
'8b. .db$@
'°Y88P°'$@
$@
$@@
db$@
.d888bo88$@
d8°' '°88$@
88 88$@
88o. .o88$@
'Y8888P'V$@
$@
$@@
$@
.od88bo.$@
.8P' '88$@
88'°°°°°'$@
'8b. .oo$@
'°Y88P°'$@
$@
$@@
.d888b.$@
d8' '8b$@
888b $@
88 $@
d8 $@
YP $@
$@
$@@
$@
.d8888bd0$@
d8°' '°88$@
88 88$@
88o. .o88$@
'Y8888P'8$@
do. .oP$@
'Y8888P' $@@
db $@
88od888b. $@
88°' '°88$@
88 88$@
88 88$@
YP YP$@
$@
$@@
** $@
ooo $@
88 $@
88 $@
88 $@
088D$@
$@
$@@
**$@
ooo$@
88$@
88$@
88$@
8D$@
.88$@
d8P $@@
db $@
88 .oo$@
88.d8' $@
888K $@
88'Y8. $@
YP 'YD$@
$@
$@@
db $@
88 $@
88 $@
88 $@
88..$@
'Y8D$@
$@
$@@
$@
8.d8b.d8b.$@
88 '88 '88$@
88 88 88$@
88 88 88$@
YP YP YP$@
$@
$@@
$@
8bod888b. $@
88°' '°88$@
88 88$@
88 88$@
YP YP$@
$@
$@@
$@
.d8888b. $@
d8°' '°8b$@
88 88$@
Y8o. .o8P$@
'Y8888P' $@
$@
$@@
$@
.d8888b. $@
d8°' '°88$@
88 88$@
88o. .o88$@
88'8888P' $@
88 $@
YP $@@
$@
.d8888b. $@
d8°' '°88$@
88 88$@
Y8o. .o88$@
'Y8888'88$@
88$@
YP$@@
$@
8.d88D$@
88' $@
88 $@
88 $@
YP $@
$@
$@@
$@
.d888b.$@
88 °°$@
'Y888b.$@
.. 8D$@
'Y888P'$@
$@
$@@
db $@
88oo$@
88''$@
88 $@
88..$@
'Y8D$@
$@
$@@
$@
db db$@
88 88$@
88 88$@
Y8o. .o88$@
'Y8888P'8$@
$@
$@@
$@
db db$@
Y8 8P$@
'8b d8'$@
'8bd8' $@
YP $@
$@
$@@
$@
db db$@
88 88$@
Y8 db 8P$@
'8bd88bd8'$@
'8P°°8P' $@
$@
$@@
$@
db db$@
'Y8..8P'$@
)88( $@
.8P''Y8.$@
YP YP$@
$@
$@@
$@
88 88$@
d8 88$@
88 88$@
Y8o. .o88$@
'Y8888'88$@
do. .oP$@
'Y8888P' $@@
$@
d88888D$@
YP .8P'$@
.8P' $@
.8P db$@
d88888P$@
$@
$@@
.o8P$@
8' $@
.dP $@
C8K $@
'Yb $@
8. $@
'°8b$@
$@@
db$@
88$@
88$@
88$@
88$@
88$@
YP$@
$@@
88o. $@
'8 $@
Vb. $@
X8D$@
dP' $@
.8 $@
C8°' $@
$@@
$@
$@
.d8b. .db$@
dP' 'Y8P' $@
$@
$@
$@
$@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@
@
@
@
@
@
@
@
@@

View File

@@ -1,9 +0,0 @@
{ ... }: {
imports = [
# ./bar/submap-indicator.nix
./bar/cclock.nix
./bar/caldav-event.nix
# ./bar/waybar.nix
./bar/hyprpanel.nix
];
}

View File

@@ -1,136 +0,0 @@
{ pkgs, ... }@all: with all; let
username = "lennart";
in {
sops.secrets = {
"nx2site/nextcloud/lennart_pass" = { };
};
home.packages = [
(pkgs.writers.writePython3Bin "caldav_event" {
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
flakeIgnore = [ "E302" "E305" "E501" "E261" ];
} /* python */ ''
import json
from caldav import DAVClient
from datetime import datetime, timezone, timedelta
from ics import Calendar
from pytz import UTC
def get_password(password_file):
with open(password_file, "r") as file:
return file.read().strip()
def datetime_converter(obj):
if isinstance(obj, datetime):
return obj.isoformat()
return obj
def datetime_parser(dct):
for key, value in dct.items():
if isinstance(value, str):
try:
dct[key] = datetime.fromisoformat(value)
except ValueError:
pass
return dct
def load_cache(cache_file):
try:
with open(cache_file, "r") as file:
return json.load(file, object_hook=datetime_parser)
except (json.JSONDecodeError, FileNotFoundError):
return None
def save_cache(cache_file, data):
with open(cache_file, "w") as file:
data['last_checked'] = datetime.now(timezone.utc)
json.dump(data, file, default=datetime_converter, indent=4)
def get_ongoing_or_next_event(url, username, password):
now = datetime.now(timezone.utc)
try:
client = DAVClient(url, username=username, password=password)
principal = client.principal()
calendars = principal.calendars()
next_event_dict = {
'event_name': "fake",
'event_begin': datetime(9000, 1, 1, tzinfo=UTC), # in the year 9000
'event_end': datetime(9000, 1, 1, 8, tzinfo=UTC),
}
for calendar in calendars:
for event in calendar.search(start=now):
if "VEVENT" not in event.data:
continue
calendar_parsed = Calendar(event.data)
for ics_event in calendar_parsed.events:
event_dict = {}
event_dict['event_name'] = ics_event.name or "(No Title)"
event_dict['event_begin'] = ics_event.begin.astimezone(timezone.utc)
event_dict['event_end'] = ics_event.end.astimezone(timezone.utc)
if event_dict['event_begin'] <= now and now <= event_dict['event_end']:
return event_dict
elif event_dict['event_begin'] >= now and next_event_dict['event_begin'] > event_dict['event_begin']:
next_event_dict = event_dict
return next_event_dict
except Exception as e:
print(f"Error accessing {url}: {str(e)}".splitlines()[0])
return None
def is_expired(event_dict: dict):
now = datetime.now(timezone.utc).timestamp()
event_end = event_dict['event_end'].timestamp()
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__":
password_file = "${config.sops.secrets."nx2site/nextcloud/lennart_pass".path}" # Path to password file
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
url = "https://n.${hyper.domain}/remote.php/dav/calendars/${username}/"
username = "${username}"
password = get_password(password_file)
now = datetime.now(timezone.utc).timestamp()
event_dict = load_cache(cache_file)
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)
save_cache(cache_file, event_dict)
if event_dict is None: # none were found
print("* zen *")
exit(0)
event_start = event_dict['event_begin'].timestamp()
event_end = event_dict['event_end'].timestamp()
if event_start <= now <= event_end: # is currently ongoing
action_string = "ends"
t = event_end - now # time_remaining
else: # is in the future
action_string = "starts"
t = event_start - now # time_remaining
hours, rem = divmod(int(t), 3600)
minutes, _ = divmod(rem, 60)
hour_string = f"{hours} hour{'s ' if hours != 1 else ' '}" if hours > 0 else ""
minu_string = f"{minutes} minute{'s ' if minutes != 1 else ' '}" if minutes > 0 else ""
if hour_string == "" and minu_string == "":
time_string = "now"
elif hour_string == "" or minu_string == "":
time_string = "in " + hour_string + minu_string
else:
time_string = "in " + hour_string + "and " + minu_string
print(f"\'{event_dict['event_name']}\' {action_string} {time_string}".splitlines()[0])
'')
];
}

View File

@@ -1,14 +0,0 @@
{ pkgs, ... }: let
sep = " ";
in {
home.packages = [
(pkgs.writeShellApplication { name = "cclock"; text = /* bash */ ''
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
if [ $# -eq 0 ]; then
echo "󰃮${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
elif [ "$1" = "--no-icons" ]; then
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
fi
'';})
];
}

View File

@@ -1,515 +0,0 @@
{ pkgs, ... }@all: with all; {
xdg.configFile = {
"hyprpanel/modules.scss".text = with rice.color; /* scss */ ''
@include styleModule('cmodule-cclock', (
'text-color': ${accent.base},
/* 'icon-color': , */
/* 'icon-background': , */
/* 'label-background': #242438, */
/* 'inner-spacing': 0.5em, */
/* 'border-enabled': false, */
/* 'border-color': #cba6f7, */
/* 'icon-size': 1.2em */
));
@include styleModule('cmodule-caldav_event', (
'text-color': ${accent.base},
));
'';
"hyprpanel/modules.json".text = builtins.toJSON {
"custom/cclock" = {
execute = "cclock";
executeOnAction = "";
label = "{}";
interval = 60000;
hideOnEmpty = true;
actions.onLeftClick = "menu:calendar";
};
"custom/caldav_event" = {
execute = "caldav_event";
label = "󰃰 {}";
interval = 60000;
hideOnEmpty = false;
actions = {};
};
};
};
programs.hyprpanel = {
enable = true;
package = pkgs.unstable.hyprpanel;
settings = with rice.color; let
t = builtins.toString (builtins.ceil (rice.transparency * 100));
in {
"bar.layouts" = {
"*" = {
"left" = [
"volume"
# "microphone"
# "cpu"
# "cputemp"
# "ram"
(pkgs.lib.mkIf (hyper.host == "NxXPS") "battery")
# "bluetooth"
"network"
"windowtitle"
"media"
];
"middle" = [ "workspaces" ];
"right" = [
"submap"
"custom/caldav_event"
"custom/cclock"
"notifications"
"systray"
];
};
};
"bar.bluetooth.label" = true;
"bar.customModules.submap.disabledIcon" = "";
"bar.customModules.submap.disabledText" = "";
"bar.customModules.submap.enabledIcon" = "";
"bar.customModules.submap.enabledText" = "[SUBMAP]";
"bar.customModules.submap.icon" = false;
"bar.customModules.submap.label" = true;
"bar.customModules.submap.showSubmapIcon" = false;
"bar.customModules.submap.showSubmapName" = false;
"bar.workspaces.applicationIconEmptyWorkspace" = "";
"bar.workspaces.applicationIconOncePerWorkspace" = false;
"bar.workspaces.numbered_active_indicator" = "color";
"bar.workspaces.scroll_speed" = 1;
"bar.workspaces.showAllActive" = false;
"bar.workspaces.showApplicationIcons" = true;
"bar.workspaces.show_icons" = false;
"bar.workspaces.show_numbered" = false;
"bar.workspaces.showWsIcons" = true;
"bar.workspaces.spacing" = 1;
"bar.workspaces.workspaceMask" = true;
"bar.workspaces.workspaces" = 5;
"theme.bar.background" = background;
"theme.bar.border.color" = accent.base;
"theme.bar.border_radius" = "0.2em";
"theme.bar.buttons.background" = background;
"theme.bar.buttons.background_opacity" = 0;
"theme.bar.buttons.spacing" = "0em";
"theme.bar.buttons.padding_x" = "0.5rem";
"theme.bar.buttons.battery.background" = background;
"theme.bar.buttons.battery.border" = accent.base;
"theme.bar.buttons.battery.icon_background" = background;
"theme.bar.buttons.battery.icon" = accent.base;
"theme.bar.buttons.battery.text" = accent.base;
"theme.bar.buttons.bluetooth.background" = background;
"theme.bar.buttons.bluetooth.border" = accent.base;
"theme.bar.buttons.bluetooth.icon_background" = background;
"theme.bar.buttons.bluetooth.icon" = accent.base;
"theme.bar.buttons.bluetooth.text" = accent.base;
"theme.bar.buttons.borderColor" = accent.base;
"theme.bar.buttons.clock.background" = background;
"theme.bar.buttons.clock.border" = accent.base;
"theme.bar.buttons.clock.icon_background" = background;
"theme.bar.buttons.clock.icon" = accent.base;
"theme.bar.buttons.clock.text" = accent.base;
"theme.bar.buttons.dashboard.background" = background;
"theme.bar.buttons.dashboard.border" = accent.base;
"theme.bar.buttons.dashboard.icon" = accent.base;
"theme.bar.buttons.icon_background" = background;
"theme.bar.buttons.icon" = accent.base;
"theme.bar.buttons.media.background" = background;
"theme.bar.buttons.media.border" = accent.base;
"theme.bar.buttons.media.icon_background" = background;
"theme.bar.buttons.media.icon" = accent.base;
"theme.bar.buttons.media.text" = accent.base;
"theme.bar.buttons.modules.cava.background" = background;
"theme.bar.buttons.modules.cava.border" = accent.base;
"theme.bar.buttons.modules.cava.icon_background" = background;
"theme.bar.buttons.modules.cava.icon" = accent.base;
"theme.bar.buttons.modules.cava.text" = accent.base;
"theme.bar.buttons.modules.cpu.background" = background;
"theme.bar.buttons.modules.cpu.border" = accent.base;
"theme.bar.buttons.modules.cpu.icon_background" = background;
"theme.bar.buttons.modules.cpu.icon" = accent.base;
"theme.bar.buttons.modules.cpu.text" = accent.base;
"theme.bar.buttons.modules.cpuTemp.background" = background;
"theme.bar.buttons.modules.cpuTemp.border" = accent.base;
"theme.bar.buttons.modules.cpuTemp.icon_background" = background;
"theme.bar.buttons.modules.cpuTemp.icon" = accent.base;
"theme.bar.buttons.modules.cpuTemp.text" = accent.base;
"theme.bar.buttons.modules.hypridle.background" = background;
"theme.bar.buttons.modules.hypridle.border" = accent.base;
"theme.bar.buttons.modules.hypridle.icon_background" = background;
"theme.bar.buttons.modules.hypridle.icon" = accent.base;
"theme.bar.buttons.modules.hypridle.text" = accent.base;
"theme.bar.buttons.modules.hyprsunset.background" = background;
"theme.bar.buttons.modules.hyprsunset.border" = accent.base;
"theme.bar.buttons.modules.hyprsunset.icon_background" = background;
"theme.bar.buttons.modules.hyprsunset.icon" = accent.base;
"theme.bar.buttons.modules.hyprsunset.text" = accent.base;
"theme.bar.buttons.modules.kbLayout.background" = background;
"theme.bar.buttons.modules.kbLayout.border" = accent.base;
"theme.bar.buttons.modules.kbLayout.icon_background" = background;
"theme.bar.buttons.modules.kbLayout.icon" = accent.base;
"theme.bar.buttons.modules.kbLayout.text" = accent.base;
"theme.bar.buttons.modules.microphone.background" = background;
"theme.bar.buttons.modules.microphone.border" = accent.base;
"theme.bar.buttons.modules.microphone.icon_background" = background;
"theme.bar.buttons.modules.microphone.icon" = accent.base;
"theme.bar.buttons.modules.microphone.text" = accent.base;
"theme.bar.buttons.modules.netstat.background" = background;
"theme.bar.buttons.modules.netstat.border" = accent.base;
"theme.bar.buttons.modules.netstat.icon_background" = background;
"theme.bar.buttons.modules.netstat.icon" = accent.base;
"theme.bar.buttons.modules.netstat.text" = accent.base;
"theme.bar.buttons.modules.power.background" = background;
"theme.bar.buttons.modules.power.border" = accent.base;
"theme.bar.buttons.modules.power.icon_background" = background;
"theme.bar.buttons.modules.power.icon" = accent.base;
"theme.bar.buttons.modules.ram.background" = background;
"theme.bar.buttons.modules.ram.border" = accent.base;
"theme.bar.buttons.modules.ram.icon_background" = background;
"theme.bar.buttons.modules.ram.icon" = accent.base;
"theme.bar.buttons.modules.ram.text" = accent.base;
"theme.bar.buttons.modules.storage.background" = background;
"theme.bar.buttons.modules.storage.border" = accent.base;
"theme.bar.buttons.modules.storage.icon_background" = background;
"theme.bar.buttons.modules.storage.icon" = accent.base;
"theme.bar.buttons.modules.storage.text" = accent.base;
"theme.bar.buttons.modules.submap.background" = background;
"theme.bar.buttons.modules.submap.border" = accent.base;
"theme.bar.buttons.modules.submap.icon_background" = background;
"theme.bar.buttons.modules.submap.icon" = accent.base;
"theme.bar.buttons.modules.submap.text" = special.base;
"theme.bar.buttons.modules.updates.background" = background;
"theme.bar.buttons.modules.updates.border" = accent.base;
"theme.bar.buttons.modules.updates.icon_background" = background;
"theme.bar.buttons.modules.updates.icon" = accent.base;
"theme.bar.buttons.modules.updates.text" = accent.base;
"theme.bar.buttons.modules.weather.background" = background;
"theme.bar.buttons.modules.weather.border" = accent.base;
"theme.bar.buttons.modules.weather.icon_background" = background;
"theme.bar.buttons.modules.weather.icon" = accent.base;
"theme.bar.buttons.modules.weather.text" = accent.base;
"theme.bar.buttons.modules.worldclock.background" = background;
"theme.bar.buttons.modules.worldclock.border" = accent.base;
"theme.bar.buttons.modules.worldclock.icon_background" = background;
"theme.bar.buttons.modules.worldclock.icon" = accent.base;
"theme.bar.buttons.modules.worldclock.text" = accent.base;
"theme.bar.buttons.monochrome" = false;
"theme.bar.buttons.network.background" = background;
"theme.bar.buttons.network.border" = accent.base;
"theme.bar.buttons.network.icon_background" = background;
"theme.bar.buttons.network.icon" = accent.base;
"theme.bar.buttons.network.text" = accent.base;
"theme.bar.buttons.notifications.background" = background;
"theme.bar.buttons.notifications.border" = accent.base;
"theme.bar.buttons.notifications.icon_background" = background;
"theme.bar.buttons.notifications.icon" = accent.base;
"theme.bar.buttons.notifications.total" = accent.base;
"theme.bar.buttons.opacity" = t;
"theme.bar.buttons.separator.color" = accent.base;
"theme.bar.buttons.style" = "default";
"theme.bar.buttons.systray.background" = background;
"theme.bar.buttons.systray.border" = accent.base;
"theme.bar.buttons.systray.customIcon" = accent.base;
"theme.bar.buttons.text" = accent.base;
"theme.bar.buttons.volume.background" = background;
"theme.bar.buttons.volume.border" = accent.base;
"theme.bar.buttons.volume.icon_background" = background;
"theme.bar.buttons.volume.icon" = accent.base;
"theme.bar.buttons.volume.text" = accent.base;
"theme.bar.buttons.windowtitle.background" = background;
"theme.bar.buttons.windowtitle.border" = secondary.base;
"theme.bar.buttons.windowtitle.icon_background" = background;
"theme.bar.buttons.windowtitle.icon" = secondary.base;
"theme.bar.buttons.windowtitle.text" = secondary.base;
"theme.bar.buttons.workspaces.active" = accent.bright;
"theme.bar.buttons.workspaces.available" = accent.base;
"theme.bar.buttons.workspaces.background" = background;
"theme.bar.buttons.workspaces.border" = accent.base;
"theme.bar.buttons.workspaces.hover" = foreground;
"theme.bar.buttons.workspaces.numbered_active_highlighted" = accent.base;
"theme.bar.buttons.workspaces.numbered_active_highlighted_text_color" = accent.dark;
"theme.bar.buttons.workspaces.numbered_active_highlight_padding" = "0.4em";
"theme.bar.buttons.workspaces.numbered_active_underline_color" = accent.bright;
"theme.bar.buttons.workspaces.numbered_inactive_padding" = "0.4em";
"theme.bar.buttons.workspaces.occupied" = secondary.base;
"theme.bar.buttons.workspaces.pill.width" = "4em";
"theme.bar.buttons.workspaces.smartHighlight" = true;
"theme.bar.buttons.y_margins" = "0em";
"theme.bar.location" = "bottom";
"theme.bar.menus.menu.battery.background.color" = background;
"theme.bar.menus.menu.battery.border.color" = accent.base;
"theme.bar.menus.menu.battery.card.color" = accent.dark;
"theme.bar.menus.menu.battery.icons.active" = accent.base;
"theme.bar.menus.menu.battery.icons.passive" = accent.base;
"theme.bar.menus.menu.battery.label.color" = accent.base;
"theme.bar.menus.menu.battery.listitems.active" = accent.base;
"theme.bar.menus.menu.battery.listitems.passive" = accent.base;
"theme.bar.menus.menu.battery.slider.background" = background;
"theme.bar.menus.menu.battery.slider.backgroundhover" = background;
"theme.bar.menus.menu.battery.slider.primary" = accent.base;
"theme.bar.menus.menu.battery.slider.puck" = accent.base;
"theme.bar.menus.menu.battery.text" = foreground;
"theme.bar.menus.menu.bluetooth.background.color" = background;
"theme.bar.menus.menu.bluetooth.border.color" = accent.base;
"theme.bar.menus.menu.bluetooth.card.color" = accent.dark;
"theme.bar.menus.menu.bluetooth.iconbutton.active" = accent.base;
"theme.bar.menus.menu.bluetooth.iconbutton.passive" = accent.base;
"theme.bar.menus.menu.bluetooth.icons.active" = accent.base;
"theme.bar.menus.menu.bluetooth.icons.passive" = accent.base;
"theme.bar.menus.menu.bluetooth.label.color" = accent.base;
"theme.bar.menus.menu.bluetooth.listitems.active" = accent.base;
"theme.bar.menus.menu.bluetooth.listitems.passive" = accent.base;
"theme.bar.menus.menu.bluetooth.scroller.color" = accent.base;
"theme.bar.menus.menu.bluetooth.status" = accent.base;
"theme.bar.menus.menu.bluetooth.switch.disabled" = accent.base;
"theme.bar.menus.menu.bluetooth.switch_divider" = accent.base;
"theme.bar.menus.menu.bluetooth.switch.enabled" = accent.base;
"theme.bar.menus.menu.bluetooth.switch.puck" = accent.base;
"theme.bar.menus.menu.bluetooth.text" = foreground;
"theme.bar.menus.menu.clock.background.color" = background;
"theme.bar.menus.menu.clock.border.color" = accent.base;
"theme.bar.menus.menu.clock.calendar.contextdays" = foreground;
"theme.bar.menus.menu.clock.calendar.currentday" = accent.base;
"theme.bar.menus.menu.clock.calendar.days" = accent.base;
"theme.bar.menus.menu.clock.calendar.paginator" = accent.base;
"theme.bar.menus.menu.clock.calendar.weekdays" = accent.base;
"theme.bar.menus.menu.clock.calendar.yearmonth" = accent.base;
"theme.bar.menus.menu.clock.card.color" = accent.dark;
"theme.bar.menus.menu.clock.text" = foreground;
"theme.bar.menus.menu.clock.time.time" = accent.base;
"theme.bar.menus.menu.clock.time.timeperiod" = accent.base;
"theme.bar.menus.menu.clock.weather.hourly.icon" = accent.base;
"theme.bar.menus.menu.clock.weather.hourly.temperature" = accent.base;
"theme.bar.menus.menu.clock.weather.hourly.time" = accent.base;
"theme.bar.menus.menu.clock.weather.icon" = accent.base;
"theme.bar.menus.menu.clock.weather.stats" = accent.base;
"theme.bar.menus.menu.clock.weather.status" = accent.base;
"theme.bar.menus.menu.clock.weather.temperature" = accent.base;
"theme.bar.menus.menu.clock.weather.thermometer.cold" = accent.base;
"theme.bar.menus.menu.clock.weather.thermometer.extremelycold" = accent.base;
"theme.bar.menus.menu.clock.weather.thermometer.extremelyhot" = accent.base;
"theme.bar.menus.menu.clock.weather.thermometer.hot" = accent.base;
"theme.bar.menus.menu.clock.weather.thermometer.moderate" = accent.base;
"theme.bar.menus.menu.dashboard.background.color" = background;
"theme.bar.menus.menu.dashboard.border.color" = accent.base;
"theme.bar.menus.menu.dashboard.card.color" = accent.dark;
"theme.bar.menus.menu.dashboard.controls.bluetooth.background" = background;
"theme.bar.menus.menu.dashboard.controls.bluetooth.text" = foreground;
"theme.bar.menus.menu.dashboard.controls.disabled" = accent.base;
"theme.bar.menus.menu.dashboard.controls.input.background" = background;
"theme.bar.menus.menu.dashboard.controls.input.text" = foreground;
"theme.bar.menus.menu.dashboard.controls.notifications.background" = background;
"theme.bar.menus.menu.dashboard.controls.notifications.text" = foreground;
"theme.bar.menus.menu.dashboard.controls.volume.background" = background;
"theme.bar.menus.menu.dashboard.controls.volume.text" = foreground;
"theme.bar.menus.menu.dashboard.controls.wifi.background" = background;
"theme.bar.menus.menu.dashboard.controls.wifi.text" = foreground;
"theme.bar.menus.menu.dashboard.directories.left.bottom.color" = accent.base;
"theme.bar.menus.menu.dashboard.directories.left.middle.color" = accent.base;
"theme.bar.menus.menu.dashboard.directories.left.top.color" = accent.base;
"theme.bar.menus.menu.dashboard.directories.right.bottom.color" = accent.base;
"theme.bar.menus.menu.dashboard.directories.right.middle.color" = accent.base;
"theme.bar.menus.menu.dashboard.directories.right.top.color" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.bar_background" = background;
"theme.bar.menus.menu.dashboard.monitors.cpu.bar" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.cpu.icon" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.cpu.label" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.disk.bar" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.disk.icon" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.disk.label" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.gpu.bar" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.gpu.icon" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.gpu.label" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.ram.bar" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.ram.icon" = accent.base;
"theme.bar.menus.menu.dashboard.monitors.ram.label" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.background" = background;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.body" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.border" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.button_text" = foreground;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.card" = accent.dark;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.confirm" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.deny" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.confirmation.label" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.logout" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.restart" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.shutdown" = accent.base;
"theme.bar.menus.menu.dashboard.powermenu.sleep" = accent.base;
"theme.bar.menus.menu.dashboard.profile.name" = accent.base;
"theme.bar.menus.menu.dashboard.shortcuts.background" = background;
"theme.bar.menus.menu.dashboard.shortcuts.recording" = accent.base;
"theme.bar.menus.menu.dashboard.shortcuts.text" = foreground;
"theme.bar.menus.menu.media.album" = accent.base;
"theme.bar.menus.menu.media.artist" = accent.base;
"theme.bar.menus.menu.media.background.color" = "#000000";
"theme.bar.menus.menu.media.border.color" = accent.base;
"theme.bar.menus.menu.media.buttons.background" = background;
"theme.bar.menus.menu.media.buttons.enabled" = accent.base;
"theme.bar.menus.menu.media.buttons.inactive" = accent.base;
"theme.bar.menus.menu.media.buttons.text" = foreground;
"theme.bar.menus.menu.media.card.color" = accent.dark;
"theme.bar.menus.menu.media.card.tint" = accent.dark;
"theme.bar.menus.menu.media.slider.background" = accent.dark;
"theme.bar.menus.menu.media.slider.backgroundhover" = secondary.dark;
"theme.bar.menus.menu.media.slider.primary" = accent.base;
"theme.bar.menus.menu.media.slider.puck" = accent.bright;
"theme.bar.menus.menu.media.song" = accent.base;
"theme.bar.menus.menu.media.timestamp" = accent.base;
"theme.bar.menus.menu.network.background.color" = background;
"theme.bar.menus.menu.network.border.color" = accent.base;
"theme.bar.menus.menu.network.card.color" = accent.dark;
"theme.bar.menus.menu.network.iconbuttons.active" = accent.base;
"theme.bar.menus.menu.network.iconbuttons.passive" = accent.base;
"theme.bar.menus.menu.network.icons.active" = accent.base;
"theme.bar.menus.menu.network.icons.passive" = accent.base;
"theme.bar.menus.menu.network.label.color" = accent.base;
"theme.bar.menus.menu.network.listitems.active" = accent.base;
"theme.bar.menus.menu.network.listitems.passive" = accent.base;
"theme.bar.menus.menu.network.scroller.color" = accent.base;
"theme.bar.menus.menu.network.status.color" = accent.base;
"theme.bar.menus.menu.network.switch.disabled" = accent.base;
"theme.bar.menus.menu.network.switch.enabled" = accent.base;
"theme.bar.menus.menu.network.switch.puck" = accent.base;
"theme.bar.menus.menu.network.text" = foreground;
"theme.bar.menus.menu.notifications.background" = background;
"theme.bar.menus.menu.notifications.border" = accent.base;
"theme.bar.menus.menu.notifications.card" = accent.dark;
"theme.bar.menus.menu.notifications.clear" = accent.base;
"theme.bar.menus.menu.notifications.label" = accent.base;
"theme.bar.menus.menu.notifications.no_notifications_label" = accent.base;
"theme.bar.menus.menu.notifications.pager.background" = background;
"theme.bar.menus.menu.notifications.pager.button" = accent.base;
"theme.bar.menus.menu.notifications.pager.label" = accent.bright;
"theme.bar.menus.menu.notifications.scrollbar.color" = accent.base;
"theme.bar.menus.menu.notifications.switch.disabled" = accent.base;
"theme.bar.menus.menu.notifications.switch_divider" = accent.base;
"theme.bar.menus.menu.notifications.switch.enabled" = accent.base;
"theme.bar.menus.menu.notifications.switch.puck" = accent.base;
"theme.bar.menus.menu.power.background.color" = background;
"theme.bar.menus.menu.power.border.color" = accent.base;
"theme.bar.menus.menu.power.buttons.logout.background" = background;
"theme.bar.menus.menu.power.buttons.logout.icon_background" = background;
"theme.bar.menus.menu.power.buttons.logout.icon" = accent.base;
"theme.bar.menus.menu.power.buttons.logout.text" = foreground;
"theme.bar.menus.menu.power.buttons.restart.background" = background;
"theme.bar.menus.menu.power.buttons.restart.icon_background" = background;
"theme.bar.menus.menu.power.buttons.restart.icon" = accent.base;
"theme.bar.menus.menu.power.buttons.restart.text" = foreground;
"theme.bar.menus.menu.power.buttons.shutdown.background" = background;
"theme.bar.menus.menu.power.buttons.shutdown.icon_background" = background;
"theme.bar.menus.menu.power.buttons.shutdown.icon" = accent.base;
"theme.bar.menus.menu.power.buttons.shutdown.text" = foreground;
"theme.bar.menus.menu.power.buttons.sleep.background" = background;
"theme.bar.menus.menu.power.buttons.sleep.icon_background" = background;
"theme.bar.menus.menu.power.buttons.sleep.icon" = accent.base;
"theme.bar.menus.menu.power.buttons.sleep.text" = foreground;
"theme.bar.menus.menu.systray.dropdownmenu.background" = background;
"theme.bar.menus.menu.systray.dropdownmenu.divider" = accent.base;
"theme.bar.menus.menu.systray.dropdownmenu.text" = foreground;
"theme.bar.menus.menu.volume.audio_slider.background" = background;
"theme.bar.menus.menu.volume.audio_slider.backgroundhover" = background;
"theme.bar.menus.menu.volume.audio_slider.primary" = accent.base;
"theme.bar.menus.menu.volume.audio_slider.puck" = accent.base;
"theme.bar.menus.menu.volume.background.color" = background;
"theme.bar.menus.menu.volume.border.color" = accent.base;
"theme.bar.menus.menu.volume.card.color" = accent.dark;
"theme.bar.menus.menu.volume.iconbutton.active" = accent.base;
"theme.bar.menus.menu.volume.iconbutton.passive" = accent.base;
"theme.bar.menus.menu.volume.input_slider.background" = background;
"theme.bar.menus.menu.volume.input_slider.backgroundhover" = background;
"theme.bar.menus.menu.volume.input_slider.primary" = accent.base;
"theme.bar.menus.menu.volume.input_slider.puck" = accent.base;
"theme.bar.menus.menu.volume.label.color" = accent.base;
"theme.bar.menus.menu.volume.listitems.active" = accent.base;
"theme.bar.menus.menu.volume.listitems.passive" = accent.base;
"theme.bar.menus.menu.volume.text" = foreground;
"theme.bar.menus.monochrome" = false;
"theme.bar.opacity" = t;
"theme.bar.outer_spacing" = "0em";
"theme.bar.transparent" = false;
"theme.font.name" = rice.font.code.name;
"theme.font.size" = "12px";
"theme.notification.actions.background" = background;
"theme.notification.actions.text" = foreground;
"theme.notification.background" = background;
"theme.notification.border" = border;
"theme.notification.close_button.background" = accent.dark;
"theme.notification.close_button.label" = accent.base;
"theme.notification.label" = accent.bright;
"theme.notification.labelicon" = accent.base;
"theme.notification.opacity" = 100;
"theme.notification.text" = foreground;
"theme.notification.time" = accent.base;
"theme.osd.bar_color" = accent.base;
"theme.osd.bar_container" = accent.dark;
"theme.osd.bar_empty_color" = accent.dark;
"theme.osd.bar_overflow_color" = accent.base;
"theme.osd.border.color" = border;
"theme.osd.icon_container" = secondary.dark;
"theme.osd.icon" = secondary.bright;
"theme.osd.label" = accent.bright;
"theme.osd.opacity" = t;
};
};
}

View File

@@ -1,37 +0,0 @@
{ pkgs, ... }: {
home.packages = [
(pkgs.writeShellApplication { name = "submap_indicator"; text = /*bash*/ ''
print_help() {
echo "Usage: submap_indicator {set <string>|unset}"
}
if [ $# -lt 1 ]; then
print_help; exit 1;
fi
case "$1" in
set)
# Check if there is a second argument for the 'set' operation
if [ $# -eq 2 ]; then
echo "$2" > /tmp/submap-indictor
pkill -RTMIN+8 waybar
pkill -RTMIN+8 hyprpanel
else
echo "Error: 'set' operation requires exactly one string argument."
print_help
exit 1
fi
;;
unset)
echo "" > /tmp/submap-indictor
pkill -RTMIN+8 waybar
pkill -RTMIN+8 hyprpanel
;;
*)
echo "Error: Unknown command '$1'"
print_help
exit 1
;;
esac
exit 0
'';})
];
}

View File

@@ -1,165 +0,0 @@
{ pkgs, ... }@all: with all; let
sep = " ";
in {
programs.waybar = {
enable = false;
package = pkgs.waybar;
settings = {
bar = {
# height = 20;
layer = "top";
position = "bottom";
margin-top = 0;
# margin-left = rice.gap-size;
# margin-bottom = rice.gap-size;
# margin-right = rice.gap-size;
margin-left = 0;
margin-bottom = 0;
margin-right = 0;
spacing = 10;
fixed-center = true;
modules-left = [
# "cpu"
# "memory"
"wireplumber"
"backlight"
"battery"
"network"
"hyprland/window"
];
modules-center = [
"hyprland/workspaces"
];
modules-right = [
"custom/mode"
"custom/caldav_event"
"custom/cclock"
"tray"
];
"hyprland/workspaces" = {
on-click = "activate";
format = "{name}";
all-outputs = false;
active-only = false;
};
"hyprland/window" = {
# format = "${sep}{}";
format = "{}";
separate-outputs = true;
};
"custom/cclock" = {
exec = "cclock";
restart-interval = 60;
};
"custom/caldav_event" = {
format = "󰃰${sep}{}";
exec = "caldav_event";
restart-interval = 60;
max-width = 60;
};
"custom/mode" = {
exec = "cat /tmp/submap-indictor";
interval = "once";
signal = 8;
};
cpu = {
interval = 1;
format = "󰍛${sep}{}%";
max-length = 10;
};
memory = {
interval = 5;
format = "${sep}{avail:.0f}G free";
};
battery = {
interval = 60;
tooltip = false;
format = "{icon}${sep}{capacity}%";
states = {
warning = 15;
critical = 5;
};
format-icons = [ " " " " " " " " " " ];
format-charging = "{icon}${sep}+{capacity}%";
format-plugged = "{icon}${sep}P{capacity}%";
format-full = "{icon}${sep}F{capacity}%";
};
backlight = {
device = "eDP-1";
format = "{icon}${sep}{percent}%";
format-icons = [ "" "" "" "" "" "" "" "" "" ];
};
network = {
format-wifi = "${sep}{essid}";
format-ethernet = "󰈀${sep}Wired";
format-disconnected = "󰌙${sep}Disconnected";
};
wireplumber = {
format = "󰕾${sep}{volume}%";
format-muted = "󰝟${sep}--%";
};
};
};
style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in /* css */ ''
* {
font-family: ${rice.font.code.name};
font-size: 1em;
min-height: 0px;
margin: 0px;
padding: 0px;
}
window#waybar {
background: rgba(${f background},${builtins.toString rice.transparency});
}
#clock,
#custom-cclock,
#custom-mode,
#custom-caldav-event,
#battery,
#cpu,
#tray,
#disk,
#backlight,
#network,
#wireplumber,
#memory,
#window,
#workspaces {
padding: 0px 3px;
margin-top: 0.3em;
border-radius: ${builtins.toString rice.rounding}px;
color: rgb(${f accent.bright});
}
#workspaces button {
color: rgb(${f accent.base});
padding-left: 15px;
padding-right: 15px;
border-radius: ${builtins.toString rice.rounding}px;
}
#workspaces button.active { color: rgb(${f background}); background-color: rgb(${f accent.base}); }
#workspaces button:hover { color: rgb(${f tertiary.bright}); }
#workspaces button.urgent { background-color: rgba(${f magenta.base},${builtins.toString rice.transparency}); }
#window, #custom-caldav_event {
font-family: ${rice.font.base.name}, ${rice.font.code.name};
color: rgb(${f tertiary.bright});
}
#wireplumber.muted { color: rgb(${f tertiary.bright}); }
#wireplumber { padding-left: 10px; }
#battery.warning:not(.charging) { color: rgb(${f green.base});; }
#battery.charging { color: rgb(${f green.base}); }
#battery.critical {
background: rgb(${f negative.base});
color: rgb(${f foreground});
}
#custom-mode { color: rgb(${f red.base}); }
'';
};
}

View File

@@ -1,10 +1,6 @@
{ pkgs, ... }: { ... }:
{ {
programs.bash = let programs.bash = {
init = /* bash */ ''
source $HOME/.nix-profile/etc/profile.d/hm-session-vars.sh
'';
in {
enable = true; enable = true;
shellAliases = { shellAliases = {
ll = "ls -l"; ll = "ls -l";
@@ -19,10 +15,5 @@
"checkjobs" "checkjobs"
]; ];
enableCompletion = false; enableCompletion = false;
};
} // pkgs.lib.mkIf (pkgs.version != "24.05") {
shellInit = init;
} // pkgs.lib.mkIf (pkgs.version != "25.11") {
profileExtra = init;
};
} }

View File

@@ -1,6 +1,6 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
bitwarden-desktop bitwarden
]; ];
} }

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, user, ... }:
{ {
home.packages = let home.packages = let
u = pkgs.writers.writePython3Bin "nx_fix_campuszeit_python" { u = pkgs.writers.writePython3Bin "nx_fix_campuszeit_python" {
@@ -20,21 +20,22 @@ def replace_campus_timezone(directory):
with open(filepath, 'r', encoding='utf-8') as f: with open(filepath, 'r', encoding='utf-8') as f:
content = f.read() content = f.read()
start_idx = content.find('BEGIN:VTIMEZONE') if 'TZID:Europe/Berlin' in content or 'TZID="Europe/Berlin"' in content:
end_idx = content.find('END:VTIMEZONE', start_idx) # Remove VTIMEZONE block for CampusNetZeit (optional depending on needs)
if start_idx != -1 and end_idx != -1: # Use a regex if multiple VTIMEZONE blocks may exist
content = content[:start_idx] + content[end_idx + len('END:VTIMEZONE\n'):] start_idx = content.find('BEGIN:VTIMEZONE')
end_idx = content.find('END:VTIMEZONE', start_idx)
if start_idx != -1 and end_idx != -1:
content = content[:start_idx] + content[end_idx + len('END:VTIMEZONE\n'):]
# Replace all TZID references # Replace all TZID references
content = content.replace('TZID:CampusNetZeit', 'TZID:Europe/Berlin') content = content.replace('TZID:Europe/Berlin', 'TZID:Europe/Berlin')
content = content.replace('TZID=CampusNetZeit', 'TZID=Europe/Berlin') content = content.replace('TZID="Europe/Berlin"', 'TZID="Europe/Berlin"')
content = content.replace('TZID:"CampusNetZeit"', 'TZID:"Europe/Berlin"')
content = content.replace('TZID="CampusNetZeit"', 'TZID="Europe/Berlin"')
with open(filepath, 'w', encoding='utf-8') as f: with open(filepath, 'w', encoding='utf-8') as f:
f.write(content) f.write(content)
print(f"Updated time zone in: {filename}") print(f"Updated time zone in: {filename}")
if __name__ == "__main__": if __name__ == "__main__":
if len(sys.argv) != 2: if len(sys.argv) != 2:
@@ -48,7 +49,7 @@ if __name__ == "__main__":
text = /*bash*/ '' text = /*bash*/ ''
echo CHANGING OWNERSHIP OF "$(realpath "$1")" RECURSIVELY echo CHANGING OWNERSHIP OF "$(realpath "$1")" RECURSIVELY
read -r -p "Continue?" read -r -p "Continue?"
sudo chown -R ${hyper.user} "$1" sudo chown -R ${user} "$1"
${u}/bin/nx_fix_campuszeit_python "$1" ${u}/bin/nx_fix_campuszeit_python "$1"
sudo chown -R radicale "$1" sudo chown -R radicale "$1"
''; '';

View File

@@ -1,44 +1,31 @@
{ pkgs, ... }@all: with all; let { pkgs, hyper, secrets, ... }: let
v = "nxc"; calendars = with hyper; [
user = "lennart";
domain = hyper.domain;
calendars = let
bs = "https://n.${domain}/remote.php/dav/calendars/lennart";
in [
{ {
name = "Preservation"; name = "Preservation";
primary = true; primary = true;
url = "${bs}/preservation/"; url = "https://dav.${domain}/${user}/preservation/";
color = "#dddddd"; color = "#dddddd";
} }
{ {
name = "Effort"; name = "Effort";
url = "${bs}/effort/"; url = "https://dav.${domain}/${user}/effort/";
color = "#dd2222"; color = "#dd2222";
} }
{ {
name = "Experience"; name = "Experience";
url = "${bs}/experience/"; url = "https://dav.${domain}/${user}/experience/";
color = "#2222dd"; color = "#2222dd";
} }
{ {
name = "Leisure"; name = "Exposure";
# name = "Exposure"; url = "https://dav.${domain}/${user}/exposure/";
url = "${bs}/leisure/";
# url = "https://${v}.${domain}/${user}/exposure/";
color = "#22aa22"; color = "#22aa22";
} }
# { {
# name = "Engagement"; name = "Engagement";
# url = "https://${v}.${domain}/${user}/engagement/"; url = "https://dav.${domain}/${user}/engagement/";
# color = "#8800CC"; color = "#8800CC";
# } }
# {
# {
# name = "Family";
# url = "${bs}/family/";
# color = "#dddd22";
# }
{ {
name = "Sleep as Android"; name = "Sleep as Android";
url = secrets.calendar.sleep-as-android-url; url = secrets.calendar.sleep-as-android-url;
@@ -53,6 +40,13 @@
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 = "Feiertage Hessen"; name = "Feiertage Hessen";
url = "https://ics.tools/Feiertage/hessen.ics"; url = "https://ics.tools/Feiertage/hessen.ics";
@@ -60,6 +54,13 @@
read-only = true; read-only = true;
type = "ics"; type = "ics";
} }
# {
# name = "Handball Männer";
# url = "http://i.cal.to/ical/108/dhb/handball-nationalmannschaft/c687e97f.bc7c3eb6-11a0e356.ics";
# color = "#880023";
# read-only = true;
# type = "ics";
# }
]; ];
default_set = { default_set = {
# name = # name =
@@ -81,10 +82,10 @@ in {
inherit primary; inherit primary;
remote = { remote = {
inherit url name; inherit url name;
userName = user; userName = hyper.user; # my globally set username
}; };
}; };
in lib.attrsets.mergeAttrsList ( in pkgs.lib.attrsets.mergeAttrsList (
map (calendar: { map (calendar: {
"${calendar.name}" = transform_caledar_set ( default_set // calendar ); "${calendar.name}" = transform_caledar_set ( default_set // calendar );
}) calendars }) calendars
@@ -92,7 +93,7 @@ in {
programs.thunderbird.settings = let programs.thunderbird.settings = let
to_safe_name = name: (builtins.replaceStrings ["."] ["-"]) name; to_safe_name = name: (builtins.replaceStrings ["."] ["-"]) name;
in (lib.attrsets.mergeAttrsList ( in (pkgs.lib.attrsets.mergeAttrsList (
map (calendar: with ( default_set // calendar ); { map (calendar: with ( default_set // calendar ); {
"calendar.registry.${to_safe_name calendar.name}.cache.enabled" = true; "calendar.registry.${to_safe_name calendar.name}.cache.enabled" = true;
"calendar.registry.${to_safe_name calendar.name}.calendar-main-default" = primary; "calendar.registry.${to_safe_name calendar.name}.calendar-main-default" = primary;
@@ -101,11 +102,11 @@ 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" = user; "calendar.registry.${to_safe_name calendar.name}.username" = hyper.user;
"calendar.registry.${to_safe_name calendar.name}.readOnly" = read-only; "calendar.registry.${to_safe_name calendar.name}.readOnly" = read-only;
}) calendars }) calendars
) // { ) // {
"calendar.list.sortOrder" = lib.fold (calendar: acc: calendar.name + " " + acc) "" calendars; "calendar.list.sortOrder" = pkgs.lib.fold (calendar: acc: calendar.name + " " + acc) "" calendars;
"calendar.week.start" = 1; "calendar.week.start" = 1;
}); });
} }

View File

@@ -1,35 +1,30 @@
{ pkgs, ... }@all: with all; { config, pkgs, rice, user, secrets, ... }:
let let
channels = [ channels = [
"Caedrel" "Caedrel"
"Caedrel247"
# "agurin" # "agurin"
# "asmongold" # "asmongold"
# "Caedrel" # "Caedrel"
# "EintrachtSpandau" # "EintrachtSpandau"
# "GamesDoneQuick" "GamesDoneQuick"
# "Odoamne" "gdolphn"
# "iwdominate"
# "imls"
# "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"
"riotgames" "riotgames"
# "thebausffs" "thebausffs"
# "ThePrimeagen" "ThePrimeagen"
# "Tolkin" "Tolkin"
# "imperialhal__" # "TSM_ImperialHal"
# "velja_lol" "velja_lol"
# "Xisuma" # "Xisuma"
"zackrawrr" "zackrawrr"
]; ];
@@ -48,13 +43,13 @@ let
}; };
}; };
in { in {
# sops.secrets."streamlink/twitch-oauth" = { path = "%r/secrets/streamlink/twich-oauth"; }; sops.secrets."streamlink/twitch-oauth" = { path = "%r/secrets/streamlink/twich-oauth"; };
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
unstable.chatterino2 chatterino2
unstable.streamlink streamlink
# mpv mpv
]; ];
file = { file = {
".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; /* json */ '' ".local/share/chatterino/Settings/settings.json".text = with secrets.chatterino; /* json */ ''
@@ -79,27 +74,18 @@ in {
"separateMessages": true, "separateMessages": true,
"showTimestamps": false, "showTimestamps": false,
"timestampFormat": "h =mm", "timestampFormat": "h =mm",
"usernameDisplayMode": 1, "usernameDisplayMode": 1
"findAllUsernames": true
}, },
"showReplyButton": false,
"showTabCloseButton": false,
"showTabLiveButton": false,
"splitheader": { "splitheader": {
"showGame": true, "showGame": true,
"showTitle": true, "showTitle": true,
"showUptime": true, "showUptime": true,
"showViewerCount": true "showViewerCount": true
}, },
"tabStyle": "compact",
"tabVisibility": 0, "tabVisibility": 0,
"theme": { "name": "nxtheme.json" } "theme": { "name": "nxtheme.json" }
}, },
"behaviour": { "behaviour": {
"autocopletion": {
"ShowUsernameCompeltionMenu": false,
"userCompletinOnlyWithAt": true
},
"pauseOnHoverDuration": 5.0, "pauseOnHoverDuration": 5.0,
"showJoins": false, "showJoins": false,
"usernameRightClickBehavior": 0, "usernameRightClickBehavior": 0,
@@ -114,13 +100,13 @@ in {
{ "alert": false, "color": "#7f7f3f49", "displayName": "Broadcaster", "name": "broadcaster", "showInMentions": false, "sound": false, "soundUrl": "" }, { "alert": false, "color": "#7f7f3f49", "displayName": "Broadcaster", "name": "broadcaster", "showInMentions": false, "sound": false, "soundUrl": "" },
{ "alert": false, "color": "#7f7f3f49", "displayName": "Admin", "name": "admin", "showInMentions": false, "sound": false, "soundUrl": "" }, { "alert": false, "color": "#7f7f3f49", "displayName": "Admin", "name": "admin", "showInMentions": false, "sound": false, "soundUrl": "" },
{ "alert": false, "color": "#7f7f3f49", "displayName": "Staff", "name": "staff", "showInMentions": false, "sound": false, "soundUrl": "" }, { "alert": false, "color": "#7f7f3f49", "displayName": "Staff", "name": "staff", "showInMentions": false, "sound": false, "soundUrl": "" },
{ "alert": false, "color": "#7f7f3f49", "displayName": "Moderator", "name": "moderator", "showInMentions": false, "sound": false, "soundUrl": "" }, { "alert": false, "displayName": "Moderator", "name": "moderator", "showInMentions": false, "sound": false, "soundUrl": "" },
{ "alert": false, "color": "#7f7f3578", "displayName": "VIP", "name": "vip", "showInMentions": false, "sound": false, "soundUrl": "" } { "alert": false, "color": "#7f7f3578", "displayName": "VIP", "name": "vip", "showInMentions": false, "sound": false, "soundUrl": "" }
], ],
"selfMessageHighlight": { "color": "#73008cff", "enabled": true } "selfMessageHighlight": { "color": "#73008cff", "enabled": true }
}, },
"hotkeys": { "hotkeys": {
"addedDefaults": [ "change channel", "close popup window", "create clip", "delete", "emote picker", "focus down", "focus left", "focus right", "focus up", "go to end of input", "go to end of input with selection", "go to start of input", "go to start of input with selection", "new popup window", "new popup window from tab", "new split", "new tab", "next message", "open debug popup", "open overlay", "open quick switcher", "open settings", "popup accept", "popup focus search box", "popup reject", "popup scroll down", "popup scroll up", "popup select last tab", "popup select next tab", "popup select previous tab", "popup select tab #1", "popup select tab #2", "popup select tab #3", "popup select tab #4", "popup select tab #5", "popup select tab #6", "popup select tab #7", "popup select tab #8", "previous message", "reconnect", "reload emotes", "remove tab", "reopen split", "scroll page down", "scroll page up", "scroll to bottom", "scroll to top", "select last tab", "select next tab", "select previous tab", "select tab #1", "select tab #2", "select tab #3", "select tab #4", "select tab #5", "select tab #6", "select tab #7", "select tab #8", "send message", "send message and keep text", "show global search", "show search", "toggle live tabs only", "toggle local r9k", "toggle overlay click-through", "toggle tab visibility", "zoom in", "zoom out", "zoom reset" ], "addedDefaults": [ "change channel", "close popup window", "create clip", "delete", "emote picker", "focus down", "focus left", "focus right", "focus up", "go to end of input", "go to end of input with selection", "go to start of input", "go to start of input with selection", "new popup window", "new popup window from tab", "new split", "new tab", "next message", "open debug popup", "open quick switcher", "open settings", "popup accept", "popup focus search box", "popup reject", "popup scroll down", "popup scroll up", "popup select last tab", "popup select next tab", "popup select previous tab", "popup select tab #1", "popup select tab #2", "popup select tab #3", "popup select tab #4", "popup select tab #5", "popup select tab #6", "popup select tab #7", "popup select tab #8", "previous message", "reconnect", "reload emotes", "remove tab", "reopen split", "scroll page down", "scroll page up", "scroll to bottom", "scroll to top", "select last tab", "select next tab", "select previous tab", "select tab #1", "select tab #2", "select tab #3", "select tab #4", "select tab #5", "select tab #6", "select tab #7", "select tab #8", "send message", "send message and keep text", "show global search", "show search", "toggle live tabs only", "toggle local r9k", "toggle tab visibility", "zoom in", "zoom out", "zoom reset" ],
"change channel": { "action": "changeChannel", "arguments": [], "category": "split", "keySequence": "Ctrl+R" }, "change channel": { "action": "changeChannel", "arguments": [], "category": "split", "keySequence": "Ctrl+R" },
"close popup window": { "action": "delete", "arguments": [], "category": "popupWindow", "keySequence": "Esc" }, "close popup window": { "action": "delete", "arguments": [], "category": "popupWindow", "keySequence": "Esc" },
@@ -141,7 +127,6 @@ in {
"new tab": { "action": "newTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+T" }, "new tab": { "action": "newTab", "arguments": [], "category": "window", "keySequence": "Ctrl+Shift+T" },
"next message": { "action": "nextMessage", "arguments": [], "category": "splitInput", "keySequence": "Down" }, "next message": { "action": "nextMessage", "arguments": [], "category": "splitInput", "keySequence": "Down" },
"open debug popup": { "action": "debug", "arguments": [], "category": "split", "keySequence": "F10" }, "open debug popup": { "action": "debug", "arguments": [], "category": "split", "keySequence": "F10" },
"open overlay": { "action": "popupOverlay", "arguments": [], "category": "split", "keySequence": "Ctrl+Alt+N" },
"open quick switcher": { "action": "openQuickSwitcher", "arguments": [], "category": "window", "keySequence": "Ctrl+K" }, "open quick switcher": { "action": "openQuickSwitcher", "arguments": [], "category": "window", "keySequence": "Ctrl+K" },
"open settings": { "action": "openSettings", "arguments": [], "category": "window", "keySequence": "Ctrl+P" }, "open settings": { "action": "openSettings", "arguments": [], "category": "window", "keySequence": "Ctrl+P" },
"popup accept": { "action": "accept", "arguments": [], "category": "popupWindow", "keySequence": "Return" }, "popup accept": { "action": "accept", "arguments": [], "category": "popupWindow", "keySequence": "Return" },
@@ -184,16 +169,15 @@ in {
"send message and keep text": { "action": "sendMessage", "arguments": [ "keepInput" ], "category": "splitInput", "keySequence": "Ctrl+Return" }, "send message and keep text": { "action": "sendMessage", "arguments": [ "keepInput" ], "category": "splitInput", "keySequence": "Ctrl+Return" },
"show global search": { "action": "showGlobalSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+Shift+F" }, "show global search": { "action": "showGlobalSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+Shift+F" },
"show search": { "action": "showSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+F" }, "show search": { "action": "showSearch", "arguments": [], "category": "split", "keySequence": "Ctrl+F" },
"toggle live tabs only": { "action": "setTabVisibility", "arguments": [ "toggleLiveOnly" ], "category": "window", "keySequence": "Ctrl+Shift+L" },
"toggle local r9k": { "action": "toggleLocalR9K", "arguments": [], "category": "window", "keySequence": "Ctrl+H" }, "toggle local r9k": { "action": "toggleLocalR9K", "arguments": [], "category": "window", "keySequence": "Ctrl+H" },
"toggle overlay click-through": { "action": "toggleOverlayInertia", "arguments": [ "all" ], "category": "split", "keySequence": "Ctrl+Shift+U" },
"toggle tab visibility": { "action": "setTabVisibility", "arguments": [ "toggle" ], "category": "window", "keySequence": "Ctrl+U" }, "toggle tab visibility": { "action": "setTabVisibility", "arguments": [ "toggle" ], "category": "window", "keySequence": "Ctrl+U" },
"zoom in": { "action": "zoom", "arguments": [ "in" ], "category": "window", "keySequence": "Ctrl++" }, "zoom in": { "action": "zoom", "arguments": [ "in" ], "category": "window", "keySequence": "Ctrl++" },
"zoom out": { "action": "zoom", "arguments": [ "out" ], "category": "window", "keySequence": "Ctrl+-" }, "zoom out": { "action": "zoom", "arguments": [ "out" ], "category": "window", "keySequence": "Ctrl+-" },
"zoom reset": { "action": "zoom", "arguments": [ "reset" ], "category": "window", "keySequence": "Ctrl+0" } "zoom reset": { "action": "zoom", "arguments": [ "reset" ], "category": "window", "keySequence": "Ctrl+0" }
}, },
"misc": { "misc": {
"askOnTabVisibilityToggle": false, "currentVersion": "2.5.3",
"currentVersion": "2.5.5",
"lockNotebookLayout": false "lockNotebookLayout": false
}, },
"similarity": { "similarity": {
@@ -209,7 +193,7 @@ in {
"external": { "external": {
"streamlink": { "streamlink": {
"quality": "", "quality": "",
"options": "--config ${hyper.home}/.config/streamlink/config" "options": "--config /home/${user}/.config/streamlink/config"
} }
} }
} }
@@ -331,9 +315,10 @@ in {
] ]
} }
''; '';
".config/streamlink/config".text = /* ini */ '' ".config/streamlink/config".text = ''
twitch-api-header=Authorization=OAuth ${secrets.streamlink.twitch-oauth} twitch-api-header=Authorization=OAuth='$(cat ${config.sops.secrets."streamlink/twitch-oauth".path})'
player=mpv player=mpv
player-args='--no-terminal'
twitch-low-latency twitch-low-latency
default-stream=best default-stream=best
''; '';

View File

@@ -1,7 +0,0 @@
{ pkgs, ... }@all: with all;
{
services.clipman = {
package = pkgs.clipman;
enable = true;
};
}

View File

@@ -3,30 +3,20 @@
home.file.".config/color-pallete.html".text = with rice.color; let home.file.".config/color-pallete.html".text = with rice.color; let
cb = color-set: color-name: size: /* html */ '' cb = color-set: color-name: size: /* html */ ''
<div class="color-container" style="border-color: ${color-set.base}"> <div class="color-container" style="border-color: ${color-set.base}">
<div class="color-box" style="background: ${color-set.darker}; height: ${builtins.toString size}px;">
<p style="color: ${color-set.bright}"> ${color-name}.darker </p>
<p sktyle="color: ${color-set.bright}"> ${color-set.darker} </p>
</div>
<div class="color-box" style="background: ${color-set.dark}; height: ${builtins.toString size}px;"> <div class="color-box" style="background: ${color-set.dark}; height: ${builtins.toString size}px;">
<p style="color: ${color-set.brighter}"> ${color-name}.dark </p> <p style="color: ${color-set.bright}"> ${color-name}.dark </p>
<p style="color: ${color-set.brighter}"> ${color-set.dark} </p> <p style="color: ${color-set.bright}"> ${color-set.dark} </p>
</div> </div>
<div class="color-box" style="background: ${color-set.base}; height: ${builtins.toString size}px;"> <div class="color-box" style="background: ${color-set.base}; height: ${builtins.toString size}px;">
<p class="dynamic-text"> ${color-name}.base </p> <p class="dynamic-text"> ${color-name}.base </p>
<p class="dynamic-text"> ${color-set.base} </p> <p class="dynamic-text"> ${color-set.base} </p>
</div> </div>
<div class="color-box" style="background: ${color-set.bright}; height: ${builtins.toString size}px;"> <div class="color-box" style="background: ${color-set.bright}; height: ${builtins.toString size}px;">
<p style="color: ${color-set.darker}"> ${color-name}.bright </p> <p style="color: ${color-set.dark}"> ${color-name}.bright </p>
<p style="color: ${color-set.darker}"> ${color-set.bright} </p> <p style="color: ${color-set.dark}"> ${color-set.bright} </p>
</div>
<div class="color-box" style="background: ${color-set.brighter}; height: ${builtins.toString size}px;">
<p style="color: ${color-set.dark}"> ${color-name}.brighter </p>
<p style="color: ${color-set.dark}"> ${color-set.brighter} </p>
</div> </div>
</div> </div>
''; '';
rgb = rice.lib.hex-to-rgb-comma-string;
s = builtins.toString;
in /* html */ '' in /* html */ ''
<!DOCTYPE html> <!DOCTYPE html>
<head> <head>
@@ -40,26 +30,27 @@
padding: 0px; padding: 0px;
} }
html { html {
background: transparent; background: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency});
padding: auto;
} }
body { body {
font-family: ${rice.font.base.name}; font-family: ${rice.font.base.name};
color: ${foreground}; color: ${foreground};
width: fit-content; width: fit-content;
margin: 10px auto 10px auto; margin: 10px auto 10px auto;
background: rgba(${rgb background},${s rice.transparency}); background: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency});
border: ${s rice.border-width}px solid ${border}; border: ${builtins.toString rice.border-width}px solid ${border};
border-radius: ${s rice.rounding}px; border-radius: ${builtins.toString rice.rounding}px;
padding: ${s rice.gap-size}px; padding: ${builtins.toString rice.gap-size}px;
} }
h1 { h1 {
margin: ${s rice.gap-size}px; margin: ${builtins.toString rice.gap-size}px;
} }
.color-container { .color-container {
font-family: ${rice.font.code.name}; font-family: ${rice.font.code.name};
display: flex; display: flex;
gap: ${s rice.gap-size}px; gap: ${builtins.toString rice.gap-size}px;
margin: ${s rice.gap-size}px; margin: ${builtins.toString rice.gap-size}px;
} }
.color-box { .color-box {
width: 200px; width: 200px;
@@ -67,7 +58,7 @@
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
border-radius: ${s rice.rounding}px; border-radius: ${builtins.toString rice.rounding}px;
} }
</style> </style>
</head> </head>
@@ -76,9 +67,8 @@
${cb accent "accent" 100} ${cb accent "accent" 100}
${cb secondary "secondary" 100} ${cb secondary "secondary" 100}
${cb tertiary "tertiary" 100} ${cb tertiary "tertiary" 100}
${cb weird "weird" 80} ${cb weird "weird" 100}
${cb special "special" 80} ${cb special "special" 100}
${cb subtle "subtle" 80}
<br> <br>
${cb positive "positive" 70} ${cb positive "positive" 70}
${cb negative "negative" 70} ${cb negative "negative" 70}

View File

@@ -1,28 +0,0 @@
{ pkgs, ... }@all: with all; lib.mkIf (hyper.isPersonal) {
# sops.secrets."nx2site/nextcloud/lennart_pass".path = "nx2site/nextcloud/lennart_pass";
# accounts.contact = {
# basePath = "~/.local/share/contacts";
# accounts = let
# nc = name: { "${name}" = let
# un = "lennart";
# in {
# inherit name;
# remote = {
# url = "https://n.${hyper.domain}/remote.php/dav/addressbooks/users/${un}/${name}/";
# type = "carddav";
# username = un;
# passwordCommand = "cat /run/user/1000/secrets/nx2site/nextcloud/lennart_pass";
# thunderbird = {
# enable = builtins.trace config.programs.thunderbird.enable config.programs.thunderbird.enable;
# prifiles = [ hyper.user ];
# };
# };
# local = {
# type = "filesystem";
# path = "${name}";
# };
# };};
# in (pkgs.lib.mergeAttrsList (builtins.map nc [ "TUDa" "CWG" "HSMW" "DICOS" "Accounts" "Familie & Freunde" "Friedrich Schiller Grundschule" "Handball" "Phönix" "Util & Miscellaneous" ]));
# };
# };
}

View File

@@ -1,200 +1,199 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, ... }:
lib.mkIf (hyper.host != "NxACE") pkgs.lib.mkIf (hyper.host != "NxACE")
{ {
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
vesktop vesktop
# discord
]; ];
# file.".config/vesktop/settings/settings.json".text = let file.".config/vesktop/settings/settings.json".text = let
# settingsSyncVersion = "1729179678715"; settingsSyncVersion = "1729179678715";
# in /* json */ ''{ in /* json */ ''{
# "notifyAboutUpdates": true, "notifyAboutUpdates": true,
# "autoUpdate": false, "autoUpdate": false,
# "autoUpdateNotification": true, "autoUpdateNotification": true,
# "useQuickCss": true, "useQuickCss": true,
# "themeLinks": [ "themeLinks": [
# "https://luckfire.github.io/amoled-cord/src/amoled-cord.css" "https://luckfire.github.io/amoled-cord/src/amoled-cord.css"
# ], ],
# "enabledThemes": [], "enabledThemes": [],
# "enableReactDevtools": false, "enableReactDevtools": false,
# "frameless": false, "frameless": false,
# "transparent": true, "transparent": true,
# "winCtrlQ": false, "winCtrlQ": false,
# "macosTranslucency": false, "macosTranslucency": false,
# "disableMinSize": false, "disableMinSize": false,
# "winNativeTitleBar": false, "winNativeTitleBar": false,
# "plugins": { "plugins": {
# "BadgeAPI": { "enabled": true }, "BadgeAPI": { "enabled": true },
# "CommandsAPI": { "enabled": true }, "CommandsAPI": { "enabled": true },
# "ContextMenuAPI": { "enabled": true }, "ContextMenuAPI": { "enabled": true },
# "MemberListDecoratorsAPI": { "enabled": false }, "MemberListDecoratorsAPI": { "enabled": false },
# "MessageAccessoriesAPI": { "enabled": false }, "MessageAccessoriesAPI": { "enabled": false },
# "MessageDecorationsAPI": { "enabled": false }, "MessageDecorationsAPI": { "enabled": false },
# "MessageEventsAPI": { "enabled": false }, "MessageEventsAPI": { "enabled": false },
# "MessagePopoverAPI": { "enabled": false }, "MessagePopoverAPI": { "enabled": false },
# "NoticesAPI": { "enabled": true }, "NoticesAPI": { "enabled": true },
# "ServerListAPI": { "enabled": false }, "ServerListAPI": { "enabled": false },
# "NoTrack": { "enabled": true }, "NoTrack": { "enabled": true },
# "Settings": { "Settings": {
# "enabled": true, "enabled": true,
# "settingsLocation": "aboveActivity" "settingsLocation": "aboveActivity"
# }, },
# "SupportHelper": { "enabled": true }, "SupportHelper": { "enabled": true },
# "ChatInputButtonAPI": { "enabled": false }, "ChatInputButtonAPI": { "enabled": false },
# "AlwaysAnimate": { "enabled": true }, "AlwaysAnimate": { "enabled": true },
# "AlwaysTrust": { "enabled": true }, "AlwaysTrust": { "enabled": true },
# "AnonymiseFileNames": { "enabled": false }, "AnonymiseFileNames": { "enabled": false },
# "WebRichPresence (arRPC)": { "enabled": false }, "WebRichPresence (arRPC)": { "enabled": false },
# "BANger": { "enabled": false }, "BANger": { "enabled": false },
# "BetterFolders": { "enabled": false }, "BetterFolders": { "enabled": false },
# "BetterGifAltText": { "enabled": false }, "BetterGifAltText": { "enabled": false },
# "BetterGifPicker": { "enabled": false }, "BetterGifPicker": { "enabled": false },
# "BetterNotesBox": { "enabled": false }, "BetterNotesBox": { "enabled": false },
# "BetterRoleDot": { "enabled": false }, "BetterRoleDot": { "enabled": false },
# "BetterUploadButton": { "enabled": false }, "BetterUploadButton": { "enabled": false },
# "BiggerStreamPreview": { "enabled": false }, "BiggerStreamPreview": { "enabled": false },
# "BlurNSFW": { "enabled": false }, "BlurNSFW": { "enabled": false },
# "CallTimer": { "enabled": false }, "CallTimer": { "enabled": false },
# "ClearURLs": { "enabled": false }, "ClearURLs": { "enabled": false },
# "ClientTheme": { "enabled": false }, "ClientTheme": { "enabled": false },
# "ColorSighted": { "enabled": false }, "ColorSighted": { "enabled": false },
# "ConsoleShortcuts": { "enabled": false }, "ConsoleShortcuts": { "enabled": false },
# "CopyUserURLs": { "enabled": false }, "CopyUserURLs": { "enabled": false },
# "CrashHandler": { "enabled": true }, "CrashHandler": { "enabled": true },
# "CustomRPC": { "enabled": false }, "CustomRPC": { "enabled": false },
# "Dearrow": { "enabled": false }, "Dearrow": { "enabled": false },
# "Decor": { "enabled": false }, "Decor": { "enabled": false },
# "DisableCallIdle": { "enabled": false }, "DisableCallIdle": { "enabled": false },
# "EmoteCloner": { "enabled": false }, "EmoteCloner": { "enabled": false },
# "Experiments": { "enabled": false }, "Experiments": { "enabled": false },
# "F8Break": { "enabled": false }, "F8Break": { "enabled": false },
# "FakeNitro": { "enabled": false }, "FakeNitro": { "enabled": false },
# "FakeProfileThemes": { "enabled": true }, "FakeProfileThemes": { "enabled": true },
# "FavoriteEmojiFirst": { "enabled": false }, "FavoriteEmojiFirst": { "enabled": false },
# "FavoriteGifSearch": { "enabled": false }, "FavoriteGifSearch": { "enabled": false },
# "FixCodeblockGap": { "enabled": false }, "FixCodeblockGap": { "enabled": false },
# "FixSpotifyEmbeds": { "enabled": false }, "FixSpotifyEmbeds": { "enabled": false },
# "FixYoutubeEmbeds": { "enabled": false }, "FixYoutubeEmbeds": { "enabled": false },
# "ForceOwnerCrown": { "enabled": false }, "ForceOwnerCrown": { "enabled": false },
# "FriendInvites": { "enabled": false }, "FriendInvites": { "enabled": false },
# "GameActivityToggle": { "enabled": false }, "GameActivityToggle": { "enabled": false },
# "GifPaste": { "enabled": false }, "GifPaste": { "enabled": false },
# "GreetStickerPicker": { "enabled": false }, "GreetStickerPicker": { "enabled": false },
# "HideAttachments": { "enabled": false }, "HideAttachments": { "enabled": false },
# "iLoveSpam": { "enabled": false }, "iLoveSpam": { "enabled": false },
# "IgnoreActivities": { "enabled": false }, "IgnoreActivities": { "enabled": false },
# "ImageZoom": { "enabled": false }, "ImageZoom": { "enabled": false },
# "InvisibleChat": { "enabled": false }, "InvisibleChat": { "enabled": false },
# "KeepCurrentChannel": { "enabled": false }, "KeepCurrentChannel": { "enabled": false },
# "LastFMRichPresence": { "enabled": false }, "LastFMRichPresence": { "enabled": false },
# "LoadingQuotes": { "enabled": false }, "LoadingQuotes": { "enabled": false },
# "MemberCount": { "enabled": false }, "MemberCount": { "enabled": false },
# "MessageClickActions": { "enabled": false }, "MessageClickActions": { "enabled": false },
# "MessageLinkEmbeds": { "enabled": false }, "MessageLinkEmbeds": { "enabled": false },
# "MessageLogger": { "enabled": false }, "MessageLogger": { "enabled": false },
# "MessageTags": { "enabled": false }, "MessageTags": { "enabled": false },
# "MoreCommands": { "enabled": false }, "MoreCommands": { "enabled": false },
# "MoreKaomoji": { "enabled": false }, "MoreKaomoji": { "enabled": false },
# "MoreUserTags": { "enabled": false }, "MoreUserTags": { "enabled": false },
# "Moyai": { "enabled": false }, "Moyai": { "enabled": false },
# "MutualGroupDMs": { "enabled": false }, "MutualGroupDMs": { "enabled": false },
# "NewGuildSettings": { "enabled": false }, "NewGuildSettings": { "enabled": false },
# "NoBlockedMessages": { "enabled": false }, "NoBlockedMessages": { "enabled": false },
# "NoDevtoolsWarning": { "enabled": false }, "NoDevtoolsWarning": { "enabled": false },
# "NoF1": { "enabled": false }, "NoF1": { "enabled": false },
# "NoMosaic": { "enabled": false }, "NoMosaic": { "enabled": false },
# "NoPendingCount": { "enabled": false }, "NoPendingCount": { "enabled": false },
# "NoProfileThemes": { "enabled": false }, "NoProfileThemes": { "enabled": false },
# "NoReplyMention": { "enabled": false }, "NoReplyMention": { "enabled": false },
# "NoScreensharePreview": { "enabled": false }, "NoScreensharePreview": { "enabled": false },
# "NoTypingAnimation": { "enabled": false }, "NoTypingAnimation": { "enabled": false },
# "NoUnblockToJump": { "enabled": false }, "NoUnblockToJump": { "enabled": false },
# "NormalizeMessageLinks": { "enabled": false }, "NormalizeMessageLinks": { "enabled": false },
# "NotificationVolume": { "enabled": false }, "NotificationVolume": { "enabled": false },
# "NSFWGateBypass": { "enabled": false }, "NSFWGateBypass": { "enabled": false },
# "OnePingPerDM": { "enabled": false }, "OnePingPerDM": { "enabled": false },
# "oneko": { "enabled": false }, "oneko": { "enabled": false },
# "OpenInApp": { "enabled": false }, "OpenInApp": { "enabled": false },
# "Party mode 🎉": { "enabled": false }, "Party mode 🎉": { "enabled": false },
# "PermissionFreeWill": { "enabled": false }, "PermissionFreeWill": { "enabled": false },
# "PermissionsViewer": { "enabled": false }, "PermissionsViewer": { "enabled": false },
# "petpet": { "enabled": false }, "petpet": { "enabled": false },
# "PictureInPicture": { "enabled": false }, "PictureInPicture": { "enabled": false },
# "PinDMs": { "enabled": false }, "PinDMs": { "enabled": false },
# "PlainFolderIcon": { "enabled": false }, "PlainFolderIcon": { "enabled": false },
# "PlatformIndicators": { "enabled": false }, "PlatformIndicators": { "enabled": false },
# "PreviewMessage": { "enabled": false }, "PreviewMessage": { "enabled": false },
# "PronounDB": { "enabled": false }, "PronounDB": { "enabled": false },
# "QuickMention": { "enabled": false }, "QuickMention": { "enabled": false },
# "QuickReply": { "enabled": false }, "QuickReply": { "enabled": false },
# "ReactErrorDecoder": { "enabled": false }, "ReactErrorDecoder": { "enabled": false },
# "ReadAllNotificationsButton": { "enabled": false }, "ReadAllNotificationsButton": { "enabled": false },
# "RelationshipNotifier": { "enabled": false }, "RelationshipNotifier": { "enabled": false },
# "RevealAllSpoilers": { "enabled": false }, "RevealAllSpoilers": { "enabled": false },
# "ReverseImageSearch": { "enabled": false }, "ReverseImageSearch": { "enabled": false },
# "ReviewDB": { "enabled": false }, "ReviewDB": { "enabled": false },
# "RoleColorEverywhere": { "enabled": true }, "RoleColorEverywhere": { "enabled": true },
# "SearchReply": { "enabled": false }, "SearchReply": { "enabled": false },
# "SecretRingToneEnabler": { "enabled": false }, "SecretRingToneEnabler": { "enabled": false },
# "SendTimestamps": { "enabled": false }, "SendTimestamps": { "enabled": false },
# "ServerListIndicators": { "enabled": false }, "ServerListIndicators": { "enabled": false },
# "ServerProfile": { "enabled": false }, "ServerProfile": { "enabled": false },
# "ShikiCodeblocks": { "enabled": false }, "ShikiCodeblocks": { "enabled": false },
# "ShowAllMessageButtons": { "enabled": false }, "ShowAllMessageButtons": { "enabled": false },
# "ShowConnections": { "enabled": false }, "ShowConnections": { "enabled": false },
# "ShowHiddenChannels": { "enabled": false }, "ShowHiddenChannels": { "enabled": false },
# "ShowMeYourName": { "enabled": false }, "ShowMeYourName": { "enabled": false },
# "ShowTimeouts": { "enabled": false }, "ShowTimeouts": { "enabled": false },
# "SilentMessageToggle": { "enabled": false }, "SilentMessageToggle": { "enabled": false },
# "SilentTyping": { "enabled": false }, "SilentTyping": { "enabled": false },
# "SortFriendRequests": { "enabled": false }, "SortFriendRequests": { "enabled": false },
# "SpotifyControls": { "enabled": false }, "SpotifyControls": { "enabled": false },
# "SpotifyCrack": { "enabled": false }, "SpotifyCrack": { "enabled": false },
# "SpotifyShareCommands": { "enabled": false }, "SpotifyShareCommands": { "enabled": false },
# "StartupTimings": { "enabled": false }, "StartupTimings": { "enabled": false },
# "SuperReactionTweaks": { "enabled": false }, "SuperReactionTweaks": { "enabled": false },
# "TextReplace": { "enabled": false }, "TextReplace": { "enabled": false },
# "ThemeAttributes": { "enabled": false }, "ThemeAttributes": { "enabled": false },
# "TimeBarAllActivities": { "enabled": false }, "TimeBarAllActivities": { "enabled": false },
# "Translate": { "enabled": false }, "Translate": { "enabled": false },
# "TypingIndicator": { "enabled": false }, "TypingIndicator": { "enabled": false },
# "TypingTweaks": { "enabled": false }, "TypingTweaks": { "enabled": false },
# "Unindent": { "enabled": false }, "Unindent": { "enabled": false },
# "UnsuppressEmbeds": { "enabled": false }, "UnsuppressEmbeds": { "enabled": false },
# "UrbanDictionary": { "enabled": false }, "UrbanDictionary": { "enabled": false },
# "UserVoiceShow": { "enabled": false }, "UserVoiceShow": { "enabled": false },
# "USRBG": { "enabled": false }, "USRBG": { "enabled": false },
# "ValidUser": { "enabled": false }, "ValidUser": { "enabled": false },
# "VoiceChatDoubleClick": { "enabled": false }, "VoiceChatDoubleClick": { "enabled": false },
# "VcNarrator": { "enabled": false }, "VcNarrator": { "enabled": false },
# "VencordToolbox": { "enabled": false }, "VencordToolbox": { "enabled": false },
# "ViewIcons": { "enabled": false }, "ViewIcons": { "enabled": false },
# "ViewRaw": { "enabled": false }, "ViewRaw": { "enabled": false },
# "VoiceMessages": { "enabled": false }, "VoiceMessages": { "enabled": false },
# "WebContextMenus": { "WebContextMenus": {
# "enabled": true, "enabled": true,
# "addBack": true }, "addBack": true },
# "WebKeybinds": { "enabled": true }, "WebKeybinds": { "enabled": true },
# "WhoReacted": { "enabled": false }, "WhoReacted": { "enabled": false },
# "Wikisearch": { "enabled": false }, "Wikisearch": { "enabled": false },
# "XSOverlay": { "enabled": false } "XSOverlay": { "enabled": false }
# }, },
# "notifications": { "notifications": {
# "timeout": 5000, "timeout": 5000,
# "position": "bottom-right", "position": "bottom-right",
# "useNative": "not-focused", "useNative": "not-focused",
# "logLimit": 50 "logLimit": 50
# }, },
# "cloud": { "cloud": {
# "authenticated": false, "authenticated": false,
# "url": "https://api.vencord.dev/", "url": "https://api.vencord.dev/",
# "settingsSync": false, "settingsSync": false,
# "settingsSyncVersion": ${settingsSyncVersion} "settingsSyncVersion": ${settingsSyncVersion}
# } }
# } }
# ''; '';
}; };
} }

View File

@@ -1,12 +1,102 @@
{ pkgs, ... }@all: with all; lib.mkIf (hyper.isPersonal) { { pkgs, hyper, rice, secrets, ... }:
pkgs.lib.mkIf (hyper.host != "NxACE")
{
home.packages = with pkgs; [
thunderbird
];
programs.thunderbird = let
inherit (pkgs.lib.generators) toJSON;
extensions = toJSON {} {
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
};
in {
enable = true;
profiles = {
"${hyper.user}" = {
isDefault = true;
settings = with rice.color; {
"calendar.alarms.showmissed" = false;
"calendar.alarms.playsound" = false;
"calendar.alarms.show" = false;
"extensions.webextensions.uuids" = extensions;
"mail.startup.enabledMailCheckOnce" = true;
"mailnews.mark_message_read.delay" = true;
"mailnews.mark_message_read.delay.interval" = 3;
"mailnews.tags.$label1.color" = red.base;
"mailnews.tags.$label1.tag" = "Important";
"mailnews.tags.$label2.color" = yellow.base;
"mailnews.tags.$label2.tag" = "Work";
"mailnews.tags.$label3.color" = green.base;
"mailnews.tags.$label3.tag" = "Personal";
"mailnews.tags.$label4.color" = cyan.base;
"mailnews.tags.$label4.tag" = "To Do";
"mailnews.tags.$label5.color" = blue.base;
"mailnews.tags.$label5.tag" = "Later";
"mailnews.headers.showMessageId" = true;
"mailnews.headers.showOrganization" = true;
"mailnews.headers.showReferences" = true;
"mailnews.headers.showSender" = true;
"mailnews.headers.showUserAgent" = true;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
};
userChrome = with rice.color; /* css */ ''
body,
#navigation-toolbox,
#calendarContent,
#calSidebar,
#tabpanelcontainer,
#spacesToolbar,
#tabs-toolbar,
#calMinimonth,
#primaryButtonSidePanel *,
.minimonth-week,
.multiday-header-corner, .day-column-heading, calendar-header-container, calendar-event-column, .multiday-hour-box,
#view-box,
#tabs-toolbar,
#status-bar,
.calview-toggle,
#calview-toggle-item,
#folderPaneHeaderBar,
#folderPane,
#threadPaneHeaderBar,
#threadTree,
#tabs-toolbar {
color: ${foreground} !important;
font-family: ${rice.font.base.name} !important;
background-color: transparent !important;
background-image: none !important;
border: none !important;
-moz-appearance: none !important;
}
.minimonth-nav-section {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
border: ${builtins.toString rice.border-width}px solid ${border};
}
.button,
.button-primary,
.tab-content[selected] {
background-color: ${accent.base};
color: ${background};
background-image: none;
}
html {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
}
'';
};
};
};
accounts.email.accounts = let accounts.email.accounts = let
OAuth2Settings = id: { OAuth2Settings = id: {
"mail.smtpserver.smtp_${id}.authMethod" = 10; "mail.smtpserver.smtp_${id}.authMethod" = 10;
"mail.server.server_${id}.authMethod" = 10; "mail.server.server_${id}.authMethod" = 10;
}; };
in { in {
gmail-online-accounts = { gmail-online = {
address = secrets.email.gmail-online-accounts.mail; address = secrets.email.gmail-online.mail;
realName = "Lennart J. Kurzweg"; realName = "Lennart J. Kurzweg";
flavor = "gmail.com"; flavor = "gmail.com";
primary = true; primary = true;
@@ -27,8 +117,8 @@
}; };
}; };
gmail-ljk = { gmail-business = {
address = secrets.email.gmail-ljk.mail; address = secrets.email.gmail-business.mail;
realName = "Lennart J. Kurzweg"; realName = "Lennart J. Kurzweg";
flavor = "gmail.com"; flavor = "gmail.com";
signature = { signature = {
@@ -46,24 +136,38 @@
settings = OAuth2Settings; settings = OAuth2Settings;
}; };
}; };
# pnx-nix = {
# address = secrets.email.pnx.mail; hsmw = with secrets.email.hsmw; {
# realName = "Lennart J. Kurzweg"; address = "${un}@hs-mittweida.de";
# flavor = "outlook.office365.com"; userName = "${un}@hs-mittweida.de";
# signature = { realName = "Lennart J. Kurzweg";
# text = '' imap = {
# Phönix Metallbau GmbH port = 993;
# Tel: 036374 2270 host = "xc.hs-mittweida.de";
# ''; };
# showSignature = "append"; smtp = {
# }; port = 587;
# thunderbird = mkIf config.thunderbird.enable { host = "xc.hs-mittweida.de";
# enable = true; tls.useStartTls = true;
# profiles = [ "nx2" ]; };
# # The id given as argument is an automatically generated account identifier. signature = {
# # settings = OAuth2Settings; 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";
};
};
};
tuda = with secrets.email.tuda; { tuda = with secrets.email.tuda; {
address = "${un}@stud.tu-darmstadt.de"; address = "${un}@stud.tu-darmstadt.de";
userName = tuid; userName = tuid;
@@ -91,37 +195,9 @@
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 = 993;
host = "ssh.${hyper.domain}";
tls.enable = true;
};
smtp = {
port = 465;
host = "mail-eu.smtp2go.com";
tls.enable = true;
# 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" ];
}; };
}; };
}; };
@@ -129,35 +205,3 @@
# 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";
# };
# };
# };

View File

@@ -1,12 +0,0 @@
{ pkgs, hyper, ... }:
{
home = {
packages = with pkgs; [
figlet
(pkgs.writeShellScriptBin "nxfgl" ''
figlet -f ${hyper.home}/.local/share/figlet/nx2.flf -w 9999
'')
];
file.".local/share/figlet/nx2.flf".text = builtins.readFile ./assets/nx2.flf;
};
}

View File

@@ -1,16 +1,262 @@
{ pkgs, ... }@all: with all; { { pkgs, hyper, rice, ... }:
programs.firefox.profiles."{hyper.user}".settings = { # browser.tabs.allow_transparent_browser
"widget.use-xdg-desktop-portal.file-picker" = 1; # https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
}; {
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
firefox firefox
]; ];
file = { file = with rice.color; let
".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = import ./userChrome.nix rice; blur = builtins.toString 20;
".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = import ./userContent.nix rice; in {
".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = /* css */ ''
:root{
/* Popup panels */
--arrowpanel-background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--arrowpanel-border-color : ${border} !important;
--arrowpanel-color : ${secondary.base} !important;
--arrowpanel-dimmed : rgba(${rice.lib.hex-to-rgb-comma-string background},0.4) !important;
--arrowpanel-dimmed-further : rgba(${rice.lib.hex-to-rgb-comma-string background},0.6) !important;
--arrowpanel-dimmed-even-further : rgba(${rice.lib.hex-to-rgb-comma-string background},0.8) !important;
/* Autocomplete */
--autocomplete-popup-background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--autocomplete-popup-color : ${foreground} !important;
--autocomplete-popup-highlight-background: ${accent.base} !important;
--autocomplete-popup-highlight-color : ${foreground} !important;
/* Toolbar background */
--toolbar-bgcolor : rgba(${rice.lib.hex-to-rgb-comma-string background},0.4) !important;
--toolbar-non-lwt-bgcolor : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--toolbar-non-lwt-bgimage : none !important;
--toolbar-color : ${foreground} !important;
/* Tabs */
--tab-selected-bgcolor : ${accent.base} !important;
--tabs-border-color : ${border} !important;
--tab-line-color : ${accent.base} !important;
--tab-loader-size : 16px !important;
/* Sidebar */
--lwt-sidebar-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--lwt-sidebar-text-color : ${foreground} !important;
--sidebar-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--sidebar-text-color : ${foreground} !important;
--sidebar-border-color : ${border} !important;
/* URL bar */
--urlbar-popup-url-color : ${foreground} !important;
--urlbar-popup-action-color : ${secondary.base} !important;
--toolbar-field-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--toolbar-field-focus-background-color : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--toolbar-field-color : ${accent.base} !important;
--toolbar-field-focus-color : ${foreground} !important;
--toolbar-field-focus-border-color : ${accent.base} !important;
/* Buttons */
--toolbarbutton-icon-fill : ${foreground} !important;
--toolbarbutton-hover-background : rgba(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.2) !important;
--toolbarbutton-active-background : rgba(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.4) !important;
/* Notification and panel */
--panel-disabled-color : rgba(${rice.lib.hex-to-rgb-comma-string foreground},0.3) !important;
--panel-separator-color : ${border} !important;
/* New tab page */
--newtab-background-color : ${background} !important;
--newtab-background-color-secondary : ${background} !important;
--newtab-text-primary-color : ${foreground} !important;
--newtab-text-secondary-color : ${secondary.base} !important;
--newtab-search-icon-color : ${accent.base} !important;
--tabpanel-background-color : transparent !important;
background : rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
}
.tabbrowser-tab[selected="true"] {
color: ${background} !important;
}
#appcontent {
background: transparent !important;
}
#navigator-toolbox {
--tabs-border-color: transparent !important;
}
#toolbar-menubar, #TabsToolbar, #PersonalToolbar, #navigator-toolbox, #sidebar-box {
background-color: transparent !important;
-moz-appearance: none !important;
background-image: none !important;
}
window, #nav-bar{
background-color: transparent !important;
-moz-appearance: none !important;
background-image: none !important;
}
'';
".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = /* css */ ''
/* Removes the white loading page */
/* url(about:newtab), url(about:home) */
@-moz-document url(about:blank) {
html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay {
background: ${background} !important;
}
}
/* Sets up minimal incognito scrollbar */
@-moz-document url(about:privatebrowsing) {
:root{
scrollbar-width: thin !important;
scrollbar-color: rgb(161, 161, 161) transparent !important;
}
}
/* new-tab */
@-moz-document url-prefix(about:home), url-prefix(about:newtab) {
:root{
--newtab-background-color-secondary: ${background} !important;
}
body, html {
background: transparent !important;
}
.tile, .search-handoff-button {
border: ${builtins.toString rice.border-width}px solid ${border} !important;
}
}
@-moz-document domain(reddit.com) {
header {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(${blur}px);
}
body, html, .bg-neutral-background, .threadline, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar, comment-body-header, shreddit-comment-tree{
background-color: transparent !important;
}
}
@-moz-document domain(reddit.com) {
header {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
}
body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{
background-color: transparent !important;
}
}
@-moz-document domain(google.com) {
.sfbg {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(${blur}px);
}
body, html, div#search > * {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
}
.g, .appbar {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
}
div#rso {
* {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
}
}
div#cnt > div {
}
}
@media (prefers-color-scheme: dark) {
:root .theme-system {
--color-bg: transtparent !important;
--color-text: ${rice.color.foreground}
}
}
@-moz-document domain(developer.mozilla.org) {
html, body {
background-color: transparent !important;
}
.top-navigation, .article-actions-container {
background-color: rgba(0,0,0,1) !important;
backdrop-filter: blur(100px);
border-radius: ${builtins.toString rice.rounding}px;
}
}
@-moz-document domain(github.com) {
body, html, header, #repository-container-header, .bgColor-muted, section {
background-color: transparent !important;
}
}
@-moz-document domain(mynixos.com) {
body, html {
background-color: transparent !important;
}
header, footer {
background-color: rgba(0,0,0,1) !important;
backdrop-filter: blur(100px);
border-radius: ${builtins.toString rice.rounding}px;
}
}
@-moz-document domain(moodle.informatik.tu-darmstadt.de) {
body, html , .main-inner, .main-inner * {
background-color: transparent !important;
}
.bg-primary {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string accent.base}, 0.5) !important!
}
}
@-moz-document url-prefix("https://nx2.site/") {
html {
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
background-repeat: repeat !important;
background-size: 2vmin 2vmin !important;
}
}
@-moz-document url-prefix("pw.nx2.site") {
html {
background: black;
}
}
@-moz-document url-prefix("pw.nx2.site") {
html {
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
background-repeat: repeat !important;
background-size: 2vmin 2vmin !important;
}
body, .tw-bg-background-alt3, main, .card-header, .card-body, .modal-body {
background-color: transparent !important;
}
.modal-open, .modal-header, form.modal-content, .modal-footer {
background-color: rgba(0,0,0,0.8) !important;
backdrop-filter: blur(5px);
}
.cdk-virtual-scroll-content-wrapper, .card, .tw-bg-background, .modal-content {
background-color: rgba(0,0,0,0.8) !important;
border-radius: 10px !important;
border: ${toString rice.border-width}px solid ${border} !important;
}
}
@-moz-document domain(chatgpt.com) {
body, html , .bg-token-sidebar-surface-primary {
background-color: transparent !important;
}
.bg-token-main-surface-primary {
background-color: rgba(0,0,0,1) !important;
backdrop-filter: blur(100px) !important;
border-radius: ${builtins.toString rice.rounding}px !important;
}
}
'';
}; };
}; };
} }
# browser.tabs.allow_transparent_browser
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/

View File

@@ -1,19 +0,0 @@
{ pkgs, ... }@all: with all;
# browser.tabs.allow_transparent_browser
# https://www.reddit.com/r/FirefoxCSS/comments/1dqws4b/firefox_128_will_allow_the_main_browser_content/
{
programs.firefox.profiles."{hyper.user}".settings = {
"widget.use-xdg-desktop-portal.file-picker" = 1;
};
home = {
packages = with pkgs; [
firefox
];
file = with rice.color; let
blur = builtins.toString 20;
f = rice.lib.hex-to-rgb-comma-string;
in {
".mozilla/firefox/${hyper.user}/chrome/userChrome.css".text = import ./userChrome.nix rice;
".mozilla/firefox/${hyper.user}/chrome/userContent.css".text = import ./userContent.nix rice; };
};
}

View File

@@ -1,107 +0,0 @@
rice: with rice.color; let
f = rice.lib.hex-to-rgb-comma-string;
# blur = builtins.toString 20;
in /* css */ ''
:root{
/* Popup panels */
--arrowpanel-background : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--arrowpanel-border-color : ${border} !important;
--arrowpanel-color : ${secondary.base} !important;
--arrowpanel-dimmed : rgba(${f background},0.4) !important;
--arrowpanel-dimmed-further : rgba(${f background},0.6) !important;
--arrowpanel-dimmed-even-further : rgba(${f background},0.8) !important;
/* Autocomplete */
--autocomplete-popup-background : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--autocomplete-popup-color : ${foreground} !important;
--autocomplete-popup-highlight-background: ${accent.base} !important;
--autocomplete-popup-highlight-color : ${foreground} !important;
/* Toolbar background */
--toolbar-bgcolor : transparent !important;
--toolbar-non-lwt-bgcolor : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--toolbar-non-lwt-bgimage : none !important;
--toolbar-color : ${foreground} !important;
/* Tabs */
--tab-selected-bgcolor : ${accent.base} !important;
--tabs-border-color : ${border} !important;
--tab-line-color : ${accent.base} !important;
--tab-loader-size : 16px !important;
/* Sidebar */
--lwt-sidebar-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--lwt-sidebar-text-color : ${foreground} !important;
--sidebar-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--sidebar-text-color : ${foreground} !important;
--sidebar-border-color : ${border} !important;
/* URL bar */
--urlbar-popup-url-color : ${foreground} !important;
--urlbar-popup-action-color : ${secondary.base} !important;
--toolbar-field-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--toolbar-field-focus-background-color : rgba(${f background}, ${builtins.toString rice.transparency}) !important;
--toolbar-field-color : ${accent.base} !important;
--toolbar-field-focus-color : ${foreground} !important;
--toolbar-field-focus-border-color : ${accent.base} !important;
/* Buttons */
--toolbarbutton-icon-fill : ${foreground} !important;
--toolbarbutton-hover-background : rgba(${f accent.base}, 0.2) !important;
--toolbarbutton-active-background : rgba(${f accent.base}, 0.4) !important;
/* Notification and panel */
--panel-disabled-color : rgba(${f foreground},0.3) !important;
--panel-separator-color : ${border} !important;
/* New tab page */
--newtab-background-color : transparent !important;
--newtab-background-color-secondary : ${secondary.dark} !important;
--newtab-text-primary-color : ${foreground} !important;
--newtab-text-secondary-color : ${secondary.base} !important;
--newtab-search-icon-color : ${accent.base} !important;
--newtab-background-card : ${accent.dark} !important;
--tabpanel-background-color : transparent !important;
background : transparent !important;
}
body {
background-color: unset !important;
background-color: transparent !important;
background-image: linear-gradient(0deg,rgba(${f accent.dark}, ${builtins.toString rice.transparency}) 0%, rgba(${f secondary.dark}, ${builtins.toString rice.transparency}) 100%) !important;
background-size: 100% 150% !important;
background-position: 0% 0% !important;
will-change: background-position;
transition: background-position 300ms !important;
&:-moz-window-inactive {
background-position: 0% 50% !important;
background-color: transparent !important;
}
}
.tabbrowser-tab[selected="true"], .tab-text[selected=""],
.tab-close-button[selected=""] {
color: ${background} !important;
}
hbox#browser {
backround-color: transparent: !important;
}
#appcontent {
background: transparent !important;
}
#navigator-toolbox {
--tabs-border-color: transparent !important;
}
#toolbar-menubar, #TabsToolbar, #PersonalToolbar, #navigator-toolbox, #sidebar-box {
background-color: transparent !important;
-moz-appearance: none !important;
background-image: none !important;
}
window, #nav-bar{
background-color: transparent !important;
-moz-appearance: none !important;
background-image: none !important;
}
''

View File

@@ -1,271 +0,0 @@
rice: with rice.color; let
f = rice.lib.hex-to-rgb-comma-string;
blur = builtins.toString 20;
in /* css */ ''
/* Removes the white loading page */
/* url(about:newtab), url(about:home) */
@-moz-document url(about:blank) {
html:not(#ublock0-epicker), html:not(#ublock0-epicker) body, #newtab-customize-overlay {
background: transparent !important;
}
}
/* Sets up minimal incognito scrollbar */
@-moz-document url(about:privatebrowsing) {
:root{
scrollbar-width: thin !important;
scrollbar-color: rgb(161, 161, 161) transparent !important;
}
}
/* new-tab */
@-moz-document url-prefix(about:home), url-prefix(about:newtab) {
:root {
--newtab-background-color-secondary: rgba(${f background},0.5) !important;
}
body, html {
background: transparent !important;
}
.tile, .search-handoff-button {
border: ${builtins.toString rice.border-width}px solid ${border} !important;
}
}
@-moz-document url-prefix("https://n.nx2.site/") {
:root, [data-theme-dark] {
--color-main-background: #00000055;
--color-main-background-rgb: 0,0,0;
--color-primary-element-light: #550000;
}
.app-navigation, .app-content {
background: rgba(0,0,0,0.8) !important;
backdrop-filter: blur(5px) !important;
}
.files-list__row-head, .files-list__tfoot {
background: rgba(0,0,0,0.5) !important;
}
.fc-day-today {
background: #ff000055 !important;
}
.files-list__thead {
background: transparent !important;
}
}
@-moz-document domain(reddit.com) {
header {
background-color: rgba(${f background},${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(${blur}px);
}
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;
}
#search-dropdown-results-container {
background: rgba(${f background},0.8) !important;
}
#main-content {
background-color: rgba(${f background},0.5)!important;
}
}
@-moz-document domain(reddit.com) {
header {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
}
body, html, reddit-sidebar-nav, shreddit-post, aside, .reddit-search-bar{
background-color: transparent !important;
}
}
@-moz-document domain(google.com) {
.sfbg {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(${blur}px);
}
body, html, div#search > * {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
}
.g, .appbar {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
}
div#rso {
* {
background-color: transparent !important;
border: ${builtins.toString rice.border-width} solid ${border};
}
}
div#cnt > div {
}
}
@-moz-document domain(gemini.google.com) {
input-container, input-container::before {
background: transparent !important;
}
bard-sidenav {
background: rgba(${rice.lib.hex-to-rgb-comma-string background},0.5) !important;
}
}
@media (prefers-color-scheme: dark) {
:root .theme-system {
--color-bg: transtparent !important;
--color-text: ${rice.color.foreground}
}
}
@-moz-document domain(developer.mozilla.org) {
html, body {
background-color: transparent !important;
}
.top-navigation, .article-actions-container {
background-color: rgba(0,0,0,1) !important;
backdrop-filter: blur(100px);
border-radius: ${builtins.toString rice.rounding}px;
}
}
@-moz-document domain(github.com) {
body, html, header, #repository-container-header, .bgColor-muted, section {
background-color: transparent !important;
}
}
@-moz-document domain(youtube.com) {
body, html, div#content, ytd-app, #frosted-glass.with-chipbar.ytd-app, ytd-shorts[is-dark] #cinematic-shorts-scrim.ytd-shorts {
background-color: transparent !important;
}
#background.ytd-masthead, div#background {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
backdrop-filter: blur(100px);
}
* {
--yt-spec-base-background: transparent;
--yt-spec-raised-background: rgba(${rice.lib.hex-to-rgb-comma-string background}, ${builtins.toString rice.transparency}) !important;
--yt-spec-menu-background: rgba(${rice.lib.hex-to-rgb-comma-string accent.dark}, ${builtins.toString rice.transparency}) !important;
--yt-spec-inverted-background: rgba(${rice.lib.hex-to-rgb-comma-string secondary.dark}, ${builtins.toString rice.transparency}) !important;
}
}
@-moz-document domain(mynixos.com) {
body, html {
background-color: transparent !important;
}
header, footer {
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);
border-radius: ${builtins.toString rice.rounding}px;
}
}
@-moz-document domain(moodle.informatik.tu-darmstadt.de) {
body, html , .main-inner, .main-inner * {
background-color: transparent !important;
}
.bg-primary {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string accent.base},0.5) !important;
}
}
@-moz-document domain(wikipedia.org) {
body, html, div.mw-page-container, .vector-header, .mw-header {
background-color: transparent !important;
}
:root {
--color-base: ${foreground} !important;
--color-base--hover: ${accent.bright} !important;
--color-emphasized: ${accent.base} !important;
--color-progressive: ${accent.base} !important;
--color-progressive--hover: ${accent.brighter} !important;
--color-progressive--active: ${secondary.bright} !important;
--color-destructive: ${negative.base} !important;
--color-destructive--hover: ${negative.brighter} !important;
--color-destructive--active: ${negative.bright} !important;
--color-visited: ${secondary.base} !important;
--color-visited--hover: ${secondary.brighter} !important;
--color-visited--active: ${secondary.bright} !important;
--color-error: ${negative.base} !important;
--color-error--hover: ${negative.bright} !important;
--color-error--active: ${negative.bright} !important;
--color-warning: ${weird.base} !important;
--color-success: ${positive.base} !important;
--color-notice: ${special.base} !important;
--color-content-added: ${positive.base} !important;
--color-content-removed: ${negative.base} !important;
--color-base--subtle: ${accent.dark} !important;
--box-shadow-color-base: ${black.base} !important;
--background-color-base: transparent !important;
--background-color-neutral: transparent !important;
--background-color-neutral-subtle: transparent !important;
--background-color-interactive: ${accent.darker} !important;
--background-color-interactive--hover: ${accent.dark} !important;
--background-color-interactive--active: ${secondary.dark} !important;
--background-color-interactive-subtle: ${subtle.darker} !important;
--background-color-interactive-subtle--hover: ${subtle.dark} !important;
--background-color-interactive-subtle--active: ${subtle.base} !important;
--border-color-base: ${border} !important;
--border-color-emphasized: ${border2} !important;
--border-color-subtle: ${subtle.base} !important;
--border-color-muted: ${subtle.dark} !important;
}
}
@-moz-document url-prefix("https://nx2.site/") {
html {
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
background-repeat: repeat !important;
background-size: 2vmin 2vmin !important;
}
}
@-moz-document url-prefix("pw.nx2.site") {
html {
background: black;
}
}
@-moz-document url-prefix("pw.nx2.site") {
html {
background: radial-gradient(rgba(255, 255, 255, 0.8) 5%, transparent 5%) !important;
background-repeat: repeat !important;
background-size: 2vmin 2vmin !important;
}
body, .tw-bg-background-alt3, main, .card-header, .card-body, .modal-body {
background-color: transparent !important;
}
.modal-open, .modal-header, form.modal-content, .modal-footer {
background-color: rgba(0,0,0,0.8) !important;
backdrop-filter: blur(5px);
}
.cdk-virtual-scroll-content-wrapper, .card, .tw-bg-background, .modal-content {
background-color: rgba(0,0,0,0.8) !important;
border-radius: 10px !important;
border: ${toString rice.border-width}px solid ${border} !important;
}
}
''
# @-moz-document domain(chatgpt.com) {
# body, html , .bg-token-sidebar-surface-primary {
# background-color: transparent !important;
# }
# .bg-token-main-surface-primary {
# background-color: rgba(0,0,0,1) !important;
# backdrop-filter: blur(100px) !important;
# border-radius: ${builtins.toString rice.rounding}px !important;
# }
# }

View File

@@ -1,37 +1,36 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
fish
any-nix-shell any-nix-shell
(writeShellScriptBin "nxfetch" /* bash */ '' (writeShellScriptBin "nxfetch" ''
logo=$(echo -e " logo=$(echo -e "
OS OS
DE/WM DE/WM
TERM TERM
SHELL SHELL
ISHELL ISHELL
KERNEL KERNEL
EDITOR EDITOR
TFM TFM
PROMPT PROMPT
" | lolcat --force 2> /dev/null) " | lolcat --force 2> /dev/null)
release_line=$(cat /etc/*-release 2> /dev/null || echo 'PRETTY_NAME="[No Release]"') msg="
$(echo -e "$logo" | sed -n 3p): $(cat /etc/*-release | grep PRETTY_NAME | cut -c 14- | rev | cut -c 2- | rev)
msg=" $(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^}
$(echo -e "$logo" | sed -n 3p): $(echo "$release_line" | grep PRETTY_NAME | cut -c 14- | rev | cut -c 2- | rev) $(echo -e "$logo" | sed -n 5p): ''${TERM^}
$(echo -e "$logo" | sed -n 4p): ''${XDG_CURRENT_DESKTOP^} $(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 5p): ''${TERM^} $(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\U&/')
$(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 8p): ''$(uname -r)
$(echo -e "$logo" | sed -n 7p): fish $(fish --version | rev | cut -f 1 -d' ' | rev | sed 's/./\&/') $(echo -e "$logo" | sed -n 9p): $($EDITOR --version | head -n 1 | sed -E 's-(.+?) \(.*-\1-g' | sed 's/./\U&/')
$(echo -e "$logo" | sed -n 8p): ''$(uname -r | sed -E 's=(.+-.+-.+-.+)-.+=\1=g') $(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g')
$(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 11p): $(starship --version | head -n 1 | sed 's/./\U&/')
$(echo -e "$logo" | sed -n 10p): $(yazi --version | sed -E 's-(.*?) \(.*-\1-g') "
$(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"
'') '')
]; ];
@@ -39,7 +38,6 @@
programs.fish = { programs.fish = {
enable = true; enable = true;
package = pkgs.fish;
shellAliases = let shellAliases = let
base-eza = "eza --icons --git --smart-group --group-directories-first"; base-eza = "eza --icons --git --smart-group --group-directories-first";
in { in {
@@ -82,12 +80,9 @@
gsw = "git switch"; gsw = "git switch";
gft = "git fetch"; gft = "git fetch";
ns = "nix-shell"; ns = "nix-shell";
nd = "nix develop -c fish";
lzd = "lazydocker"; lzd = "lazydocker";
d = "docker"; d = "docker";
dcmp = "docker compose"; dcmp = "docker compose";
stui = "sudo systemctl-tui";
wlc = "wl-copy";
# nxsent = ''sent -c \${rice.color.foreground} -b \${rice.color.background}''; # nxsent = ''sent -c \${rice.color.foreground} -b \${rice.color.background}'';
# ya = "yazi"; # function # ya = "yazi"; # function
@@ -96,11 +91,9 @@
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; or set -q SESSION_CLONED_FROM_YAZI if set -q SESSION_FROM_DE
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
@@ -114,23 +107,6 @@
mkdir $argv mkdir $argv
cd $argv cd $argv
''; '';
nx_backup = let
destination = if hyper.host == "NxNORTH" then "${hyper.home}/shared/" else "${hyper.home}/backups/";
in pkgs.lib.mkIf (hyper.isPersonal) /* fish */ ''
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}
'';
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

View File

@@ -1,19 +1,20 @@
{ pkgs, ... }@all: with all; { { pkgs, hyper, ... }:
pkgs.lib.mkIf (hyper.host == "NxNORTH")
{
home = { home = {
packages = (with pkgs; [ packages = (with pkgs.unstable; [
unstable.protonup-ng protonup
unstable.mangohud mangohud
]) ++ (if hyper.host == "NxNORTH" then (with pkgs; [
unstable.prismlauncher
heroic
# mindustry-wayland
]) else if hyper.host == "NxXPS" then (with pkgs; [
heroic
]) else if hyper.host == "NxACE" then (with pkgs; [
heroic
]) else []);
sessionVariables.STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d"; prismlauncher
# heroic
# mindustry-wayland
]) ++ [ pkgs.heroic ];
sessionVariables = {
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "\${HOME}/.steam/root/compatibilitytools.d";
};
}; };
} }

View File

@@ -1,5 +1,5 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, ... }:
lib.mkIf (hyper.host == "NxXPS") pkgs.lib.mkIf (hyper.host == "NxXPS")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
libinput-gestures libinput-gestures

View File

@@ -1,49 +1,54 @@
{ pkgs, ... }@all: with all; { config, rice, hyper, inputs, ... }:
{ {
programs.ghostty = { home = {
enable = true; packages = [ inputs.ghostty.packages.${hyper.system}.default ];
package = pkgs.ghostty; file."${config.xdg.configHome}/ghostty/config".text = with rice.color; /* ini */ ''
settings = with rice.color; { font-family="${rice.font.code.name}"
background = background; clipboard-read=allow
window-padding-color = "extend"; # clipboard-write=allow
background-opacity = builtins.toString rice.transparency; # clipboard-read=deny
clipboard-paste-protection = false; # clipboard-write=deny
clipboard-read = "allow"; clipboard-trim-trailing-spaces=true
clipboard-trim-trailing-spaces = true; clipboard-paste-protection=false
confirm-close-surface = false;
cursor-color = special.bright; window-decoration=false
cursor-opacity = 0.8; confirm-close-surface=false
font-family = "${rice.font.code.name}";
foreground = foreground; window-padding-x=5
keybind = [ window-padding-y=5
"ctrl+comma=reload_config"
"ctrl+equal=increase_font_size:1" keybind=ctrl+comma=reload_config
"ctrl+minus=decrease_font_size:1" keybind=ctrl+equal=increase_font_size:1
"ctrl+shift+v=paste_from_clipboard" keybind=ctrl+minus=decrease_font_size:1
]; keybind=ctrl+shift+v=paste_from_clipboard
palette = with rice; [
"0=${black.base}" background=${background}
"8=${black.bright}" foreground=${foreground}
"1=${red.base}"
"9=${red.bright}" background-opacity=${builtins.toString rice.transparency}
"2=${green.base}"
"10=${green.bright}" cursor-color=${special.bright}
"3=${yellow.base}" cursor-opacity=0.8
"11=${yellow.bright}"
"4=${blue.base}" palette=0=${black.base}
"12=${blue.bright}" palette=8=${black.bright}
"5=${magenta.base}" palette=1=${red.base}
"13=${magenta.bright}" palette=9=${red.bright}
"6=${cyan.base}" palette=2=${green.base}
"14=${cyan.bright}" palette=10=${green.bright}
"7=${white.base}" palette=3=${yellow.base}
"15=${white.bright}" palette=11=${yellow.bright}
]; palette=4=${blue.base}
selection-background = accent.base; palette=12=${blue.bright}
selection-foreground = background; palette=5=${magenta.base}
window-decoration = false; palette=13=${magenta.bright}
window-padding-x = 5; palette=6=${cyan.base}
window-padding-y = 5; palette=14=${cyan.bright}
}; palette=7=${white.base}
palette=15=${white.bright}
selection-background=${accent.base}
selection-foreground=${background}
'';
}; };
} }

View File

@@ -1,5 +1,9 @@
{ pkgs, ... }@all: with all; { { pkgs, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
# (gimp-with-plugins.override {
# plugins = with gimpPlugins; [ bimp ];
# })
gimp gimp
]; ];
} }

View File

@@ -1,31 +1,17 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, rice, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
delta delta
(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 = { programs.git = {
git = { enable = true;
enable = true; package = pkgs.gitFull;
package = pkgs.gitFull; userName = ''Lennart J. Kurzweg (Nx2)'';
settings = { userEmail = "git@${hyper.domain}";
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;
@@ -33,27 +19,34 @@
whitespace-error-style = "22 reverse"; whitespace-error-style = "22 reverse";
}; };
}; };
lazygit = { extraConfig = {
enable = true; credential = {
package = pkgs.lazygit; "https://git.da.dicos.de".username = pkgs.lib.mkIf (hyper.host =="NxWSL") "lkurzweg";
settings = { "https://git.da.dicos.de".password = pkgs.lib.mkIf (hyper.host =="NxWSL") "Test";
windowSize = "normal"; };
gui.theme = with rice.color; { url."ssh://git@git.da.dicos.de/".insteadOf = pkgs.lib.mkIf (hyper.host =="NxWSL") "https://git.da.dicos.de/";
lightTheme = false; pull.rebase = false; # true
activeBorderColor = [ foreground "bold" ]; };
inactiveBorderColor = [ border ]; };
optionsTextColor = [ tertiary.base ]; programs.lazygit = {
selectedLineBgColor = [ secondary.base ]; enable = true;
selectedRangeByColor = [ weird.bright ]; settings = {
showRandomTip = true; windowSize = "normal";
animateExplosion = true; gui.theme = with rice.color; {
cherryPickedCommitFgColor = [ accent.base ]; # Foreground color of copied commit lightTheme = false;
cherryPickedCommitBgColor = [ secondary.dark ]; # Background color of copied commit activeBorderColor = [ foreground "bold" ];
markedBaseCommitFgColor = [ accent.base ]; # Foreground color of marked base commit (for rebase) inactiveBorderColor = [ border ];
markedBaseCommitBgColor = [ secondary.dark ]; # Background color of marked base commit (for rebase) optionsTextColor = [ tertiary.base ];
unstagedChangesColor = [ negative.base ]; # Color for file with unstaged changes selectedLineBgColor = [ secondary.base ];
defaultFgColor = [ "default" ]; # Default text color 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
}; };
}; };
}; };

View File

@@ -1,41 +1,17 @@
{ pkgs, ... }@all: with all; { { pkgs, ... }:
{
# there also is a system module
home.packages = with pkgs; [ home.packages = with pkgs; [
# pinentry-all gnupg
# pinentry-curses gpg-tui
pinentry-gtk2 pinentry-all
# pinentry-tty
]; ];
programs.gpg = {
enable = true; # services.pcscd.enable = true;
package = pkgs.gnupg;
homedir = "${hyper.home}/vault/gnupg";
settings = {
armor = true;
cert-digest-algo = "SHA512";
charset = "utf-8";
default-preference-list = "SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed";
keyid-format = "0xlong";
list-options = "show-uid-validity";
no-comments = true;
no-emit-version = true;
no-greeting = true;
no-symkey-cache = true;
personal-cipher-preferences = "AES256 AES192 AES";
personal-compress-preferences = "ZLIB BZIP2 ZIP Uncompressed";
personal-digest-preferences = "SHA512 SHA384 SHA256";
pinentry-mode = "loopback";
require-cross-certification = true;
s2k-cipher-algo = "AES256";
s2k-digest-algo = "SHA512";
use-agent = true;
verify-options = "show-uid-validity";
with-fingerprint = true;
};
};
services.gpg-agent = let services.gpg-agent = let
min2sec = min: (min * 60); min2sec = min: (min * 60);
in { in {
enable = false; enable = true;
verbose = true; verbose = true;
sshKeys = [ sshKeys = [
"97081264F7FD72D890D496E839AA9A4C7892A7D8" # Keygrip (not Fingerprint!) of [A] Subkey "97081264F7FD72D890D496E839AA9A4C7892A7D8" # Keygrip (not Fingerprint!) of [A] Subkey
@@ -44,8 +20,48 @@
enableFishIntegration = true; enableFishIntegration = true;
defaultCacheTtlSsh = min2sec 60; defaultCacheTtlSsh = min2sec 60;
defaultCacheTtl = min2sec 30; defaultCacheTtl = min2sec 30;
extraConfig = '' # pinentryPackage = pkgs.pinentry-curses;
allow-loopback-pinentry
'';
}; };
home.file.".gnupg/gpg.conf".text = ''
# Use AES256, 192, or 128 as cipher
personal-cipher-preferences AES256 AES192 AES
# Use SHA512, 384, or 256 as digest
personal-digest-preferences SHA512 SHA384 SHA256
# Use ZLIB, BZIP2, ZIP, or no compression
personal-compress-preferences ZLIB BZIP2 ZIP Uncompressed
# Default preferences for new keys
default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES ZLIB BZIP2 ZIP Uncompressed
# SHA512 as digest to sign keys
cert-digest-algo SHA512
# SHA512 as digest for symmetric ops
s2k-digest-algo SHA512
# AES256 as cipher for symmetric ops
s2k-cipher-algo AES256
# UTF-8 support for compatibility
charset utf-8
# No comments in messages
no-comments
# No version in output
no-emit-version
# Disable banner
no-greeting
# Long key id format
keyid-format 0xlong
# Display UID validity
list-options show-uid-validity
verify-options show-uid-validity
# Display all keys and their fingerprints
with-fingerprint
# Display key origins and updates
#with-key-origin
# Cross-certify subkeys are present and valid
require-cross-certification
# Disable caching of passphrase for symmetrical ops
no-symkey-cache
# Output ASCII instead of binary
armor
# Enable smartcard
# use-agent
'';
} }

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { config, pkgs, rice, ... }:
let let
# theme-name = "Colloid-Pink-Dark-Compact"; # theme-name = "Colloid-Pink-Dark-Compact";
# theme-package = pkgs.colloid-gtk-theme.override { # theme-package = pkgs.colloid-gtk-theme.override {

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }@all: with all; { { pkgs, hyper, rice, ... }:
{
home = { home = {
packages = with pkgs; [ packages = with pkgs; [
# nixfmt-classic # nix formater # nixfmt-classic # nix formater
@@ -6,7 +7,10 @@
# nixd # specified in nixd.nix # nixd # specified in nixd.nix
gopls gopls
delve delve
python311Packages.python-lsp-server
jdt-language-server jdt-language-server
ruff
pyright
lldb # debugger for llvm stuff lldb # debugger for llvm stuff
yaml-language-server # yaml yaml-language-server # yaml
marksman # markdown marksman # markdown
@@ -98,6 +102,7 @@
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
@@ -176,10 +181,10 @@
}; };
smart-tab = { smart-tab = {
enable = false; enable = false;
supersede-menu = false; supersend-menu = false;
}; };
inline-diagnostics = { inline-diagnostics = {
cursor-line = "warning"; cursor-line = "hint";
other-lines = "disable"; other-lines = "disable";
prefix-len = 1; prefix-len = 1;
# max-wrap = set above # max-wrap = set above
@@ -189,7 +194,6 @@
keys = { keys = {
normal = { normal = {
"C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ]; "C-g" = [ ":new" ":insert-output lazygit" ":buffer-close!" ":redraw" ];
"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" ]; };
@@ -203,41 +207,22 @@
language = [ language = [
{ {
name = "nix"; name = "nix";
language-servers = [ "nixd" ]; language-servers = [
"nixd"
# "llm"
];
} }
{ {
name = "latex"; name = "latex";
language-servers = [ "texlab" "language-tool" ]; language-servers = [ "texlab" "language-tool" ];
} }
{
name = "typst";
language-servers = [ "tinymist" ];
# language-servers = [ "language-tool" "tinymist" ];
}
{
name = "typst-with-language-tool";
scope = "";
language-servers = [ "language-tool" "tinymist" ];
injection-regex = "";
file-types = [""];
comment-tokens = "//";
indent = { tab-width = 2; unit = " "; };
}
{ {
name = "markdown"; name = "markdown";
language-servers = [ "marksman" ]; # language-servers = [ "marksman" "style-check" "language-tool" ];
language-servers = [ "language-tool" "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" ];
@@ -286,7 +271,7 @@
command = "nixd"; command = "nixd";
}; };
"style-check" = { "style-check" = {
command = lib.getExe pkgs.vale-ls; command = pkgs.lib.getExe pkgs.vale-ls;
}; };
"language-tool" = { "language-tool" = {
command = "${pkgs.ltex-ls}/bin/ltex-ls"; command = "${pkgs.ltex-ls}/bin/ltex-ls";
@@ -302,7 +287,7 @@
]; ];
}; };
"llm" = { "llm" = {
command = lib.getExe pkgs.helix-gpt; command = pkgs.lib.getExe pkgs.helix-gpt;
args = [ args = [
"--handler" "--handler"
"ollama" "ollama"
@@ -316,45 +301,37 @@
base16 = with rice.color; { base16 = with rice.color; {
"attributes" = foreground; "attributes" = foreground;
"comment" = { "comment" = {
fg = subtle.base; fg = black.bright;
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" = secondary.bright; "constructor" = weird.base;
"debug" = yellow.base; "debug" = yellow.base;
"diff.delta" = subtle.bright; "diagnostic.modifiers" = [ "underline" ];
"diff.delta" = blue.bright;
"diff.minus" = negative.bright; "diff.minus" = negative.bright;
"diff.plus" = positive.bright; "diff.plus" = positive.bright;
"error" = negative.base; "error" = red.base;
"function" = secondary.bright; "function" = secondary.bright;
"hint" = tertiary.bright; "hint" = tertiary.bright;
"info" = foreground; "info" = foreground;
"keyword" = { "keyword" = special.base;
fg = special.base; "keyword.modifiers" = [ "italic" ];
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" = { "type" = red.base;
fg = tertiary.base; "variable" = accent.base;
}; "variableother.member" = foreground;
"variable" = { fg = accent.base; }; "warning" = red.base;
"variable.builtin" = { fg = accent.base; bg = subtle.darker; };
"variable.parameter" = { fg = accent.base; bg = accent.darker; };
"warning" = yellow.base;
"markup.heading" = { "markup.heading" = accent.base;
fg = accent.base;
bg = accent.darker;
modifiers = [ "bold" ];
};
"markup.bold" = { "markup.bold" = {
fg = secondary.bright; fg = tertiary.bright;
modifiers = [ "bold" ]; modifiers = [ "bold" ];
}; };
"italic" = { "italic" = {
@@ -364,7 +341,7 @@
"markup.linktext" = accent.base; "markup.linktext" = accent.base;
"markup.linkurl" = { "markup.linkurl" = {
fg = tertiary.dark; fg = tertiary.dark;
underline.style = "line"; modifiers = [ "underlined" ];
}; };
"markup.list" = accent.bright; "markup.list" = accent.bright;
"markup.quote" = weird.bright; "markup.quote" = weird.bright;
@@ -381,7 +358,7 @@
}; };
"ui.bufferline" = { # the top line ("tab"-line) "ui.bufferline" = { # the top line ("tab"-line)
fg = accent.base; fg = accent.base;
bg = accent.darker; bg = black.base;
}; };
"ui.bufferline.active" = { # the active "tab" "ui.bufferline.active" = { # the active "tab"
fg = background; fg = background;
@@ -393,22 +370,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 = secondary.darker; bg = black.base;
}; };
"ui.cursor.match" = { # Matching bracket etc. "ui.cursor.match" = { # Matching bracket etc.
bg = special.dark; bg = green.dark;
modifiers = [ ]; modifiers = [ ];
}; };
"ui.gutter" = { "ui.gutter" = {
bg = accent.darker; bg = black.base;
}; };
"ui.help" = { "ui.help" = {
fg = accent.base; fg = green.base;
bg = accent.darker; bg = black.base;
}; };
"ui.linenr" = { "ui.linenr" = {
fg = accent.bright; fg = white.dark;
bg = accent.darker; bg = black.base;
}; };
"ui.linenr.selected" = { "ui.linenr.selected" = {
fg = accent.bright; fg = accent.bright;
@@ -416,32 +393,32 @@
}; };
"ui.menu" = { "ui.menu" = {
fg = accent.base; fg = accent.base;
bg = accent.darker; bg = black.base;
}; };
"ui.menu.scroll" = { "ui.menu.scroll" = {
fg = subtle.base; fg = yellow.dark;
bg = background; bg = background;
}; };
"ui.menu.selected" = { "ui.menu.selected" = {
fg = secondary.bright; fg = red.base;
bg = secondary.darker; bg = blue.dark;
}; };
"ui.popup" = { "ui.popup" = {
bg = accent.darker; bg = black.base;
}; };
"ui.selection" = { "ui.selection" = {
bg = accent.dark; bg = white.dark;
}; };
"ui.selection.primary" = { "ui.selection.primary" = {
bg = accent.dark; bg = black.bright;
}; };
"ui.statusline" = { "ui.statusline" = {
fg = accent.bright; fg = blue.bright;
bg = accent.darker; bg = black.base;
}; };
"ui.statusline.inactive" = { "ui.statusline.inactive" = {
fg = secondary.bright; fg = red.bright;
bg = secondary.dark; bg = red.dark;
}; };
"ui.statusline.insert" = { "ui.statusline.insert" = {
fg = green.bright; fg = green.bright;
@@ -458,23 +435,23 @@
"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 = subtle.dark; fg = black.bright;
}; };
"ui.virtual.inlay-hint" = { "ui.virtual.inlay-hint" = {
fg = subtle.base; fg = weird.dark;
bg = subtle.dark; bg = weird.base;
}; };
"ui.virtual.ruler" = { "ui.virtual.ruler" = {
bg = background; bg = background;
}; };
"ui.virtual.jump-label" = { "ui.virtual.jump-label" = {
fg = special.base; fg = special.base;
bg = special.dark; underline = {
underline.style = "dotted"; style = "dotted";
modifiers = [ "bold" ]; };
}; };
"ui.window" = { "ui.window" = {
bg = accent.darker; bg = black.base;
}; };
}; };
}; };

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home = { home = {
packages = with pkgs; [ hyprland-autoname-workspaces ]; packages = with pkgs; [ hyprland-autoname-workspaces ];
@@ -10,7 +10,6 @@
"blueman-manager" = "󰂯" "blueman-manager" = "󰂯"
"chatterino" = "" "chatterino" = ""
"Chromium" = "" "Chromium" = ""
"chromium-browser" = ""
"code" = "󰨞" "code" = "󰨞"
"code-oss" = "󰨞" "code-oss" = "󰨞"
"codium" = "󰨞" "codium" = "󰨞"
@@ -23,7 +22,7 @@
".*.exe" = "" ".*.exe" = ""
"firefox" = "󰈹" "firefox" = "󰈹"
"galaxyclient.exe" = "󰮡" "galaxyclient.exe" = "󰮡"
"\\.?[gG]imp-.*" = "" "\\.?gimp-.*" = ""
"F?imv.*" = "󰋩" "F?imv.*" = "󰋩"
"KiCad" = "" "KiCad" = ""
"kitty" = "" "kitty" = ""
@@ -34,7 +33,6 @@
"obsidian" = "󰠮" "obsidian" = "󰠮"
"org.inkscape.Inkscape" = "󰕙" "org.inkscape.Inkscape" = "󰕙"
"org.remmina.Remmina" = "󰢹" "org.remmina.Remmina" = "󰢹"
"org.prismlauncher.*" = "󰍳"
"pavucontrol" = "󰕾" "pavucontrol" = "󰕾"
"pcbnew" = "" "pcbnew" = ""
"Signal" = "󱅵" "Signal" = "󱅵"

View File

@@ -1,68 +1,96 @@
{ pkgs, ... }@all: with all; let { config, pkgs, hyper, inputs, rice, ... }:
let
animation-speed = "5"; animation-speed = "5";
transparency = builtins.toString rice.transparency; transparency = builtins.toString rice.transparency;
terminal = "ghostty"; terminal = "ghostty";
terminal-exec = "ghostty --command="; terminal-exec = "ghostty --command=";
monitors = { monitors = let
docked = false;
in {
xps = { xps = {
# def main = if docked then {
# main = { name = "eDP-1"; resolution = "preferred"; position = "0x0"; scale = "1.0"; }; name = "DP-5";
# second = { name = "eDP-1"; resolution = "preferred"; position = "0x0"; scale = "1.0"; }; resolution = "1920x1080";
# third = { name = "eDP-1"; resolution = "preferred"; position = "0x0"; scale = "1.0"; }; position = "1920x0";
scale = "1.0";
# Home } else {
main = { name = "eDP-1"; resolution = "1920x1200"; position = "0x1080"; scale = "1.0"; }; name = "eDP-1";
second = { name = "desc:Sony SONY TV 0x01010101"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; }; resolution = "1920x1200";
third = { name = ""; resolution = "preferred"; position = "auto"; scale ="1, mirror, eDP-1"; }; position = "0x1080";
scale = "1.0";
# Presentation };
# main = { name = "eDP-1"; resolution = "1920x1080"; position = "1920x1080"; scale = "1.0"; }; second = if docked then {
# second = { name = ""; resolution = "preferred"; position = "auto"; scale ="1, mirror, eDP-1"; }; name = "DP-6";
# third = { name = ""; resolution = "preferred"; position = "auto"; scale ="1, mirror, eDP-1"; }; resolution = "1920x1080";
position = "0x0";
# thunderbolt docking scale = "1.0";
# main = { name = "eDP-1"; resolution = "1920x1200"; position = "1920x1200"; scale = "1.0"; }; } else {
# second = { name = "DP-5"; resolution = "1920x1200"; position = "1920x0"; scale = "1.0"; }; name = "DP-3";
# third = { name = "DP-4"; resolution = "1920x1200"; position = "0x0"; scale = "1.0"; }; resolution = "1920x1080";
# second = { name = "DP-6"; resolution = "1920x1200"; position = "0x0"; scale = "1.0"; }; position = "0x0";
# third = { name = "DP-7"; resolution = "1920x1200"; position = "1920x0"; scale = "1.0"; }; scale = "1.0";
};
}; };
north = { north = {
main = { name = "desc:Iiyama North America PL3270Q na"; resolution = "2560x1440"; position = "1920x0"; scale = "1.0"; }; main = {
left = { name = "desc:Philips Consumer Electronics Company 273PLPH AU11423002132"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; }; name = "DP-4";
# right = { name = "HDMI-A-2"; resolution = "1920x1080"; position = "4480x360"; scale = "1.0"; }; resolution = "2560x1440";
position = "1920x150";
scale = "1.0";
};
left = {
name = "HDMI-A-2";
resolution = "1920x1080";
position = "0x0";
scale = "1.0";
};
# right = {
# name = "HDMI-A-2";
# resolution = "1920x1080";
# position = "4480x360";
# scale = "1.0";
# };
};
ace = {
main = {
name = "HDMI-A-1";
resolution = "3840x2160";
position = "0x0";
scale = "2.0";
};
}; };
ace.main = { name = "HDMI-A-1"; resolution = "3840x2160"; position = "0x0"; scale = "2.0"; };
}; };
in { in {
home.packages = with pkgs; [ home.packages = (with pkgs; [
grim # hyprland itself is a system package
hyprcursor
hypridle
hyprland-protocols hyprland-protocols
hyprlock hyprlock
hypridle
hyprpicker hyprpicker
hyprshade hyprcursor
hyprshot
grim
slurp slurp
# xdg-desktop-portal-hyprland
]; # ]) ++ (with pkgs-unstable; [
]) ++ (with inputs; [
hyprswitch.packages.x86_64-linux.default
]);
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
enable = true; enable = true;
# package = pkgs.hyprland; # package = pkgs-unstable.hyprland;
package = inputs.hyprland.packages.${hyper.system}.hyprland; package = pkgs.hyprland;
# package = config.programs.hyprland.package; # package = inputs.hyprland.packages.${pkgs.system}.hyprland;
xwayland.enable = true; xwayland.enable = true;
systemd.enable = true; systemd.enable = true;
plugins = let s = pkgs.stdenv.hostPlatform.system; in [ plugins = [
# inputs.hyprland-plugins.packages.${s}.hyprexpo # inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo
# inputs.hyprfocus.packages.${s}.hyprfocus # inputs.hyprfocus.packages.${pkgs.system}.hyprfocus
# inputs.hycov.packages.${s}.hycov # inputs.hycov.packages.${pkgs.system}.hycov
# inputs.hyprspace.packages.${s}.Hyprspace # inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
# inputs.hyprtasking.packages.${s}.hyprtasking
# inputs.hyprland-easymotion.packages.${s}.hyprland-easymotion
]; ];
settings = { settings = {
@@ -70,7 +98,6 @@ in {
if hyper.host == "NxXPS" then (with monitors.xps; [ if hyper.host == "NxXPS" then (with monitors.xps; [
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}" "${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
"${second.name}, ${second.resolution}, ${second.position}, ${second.scale}" "${second.name}, ${second.resolution}, ${second.position}, ${second.scale}"
"${third.name}, ${third.resolution}, ${third.position}, ${third.scale}"
]) else (if hyper.host == "NxNORTH" then (with monitors.north; [ ]) else (if hyper.host == "NxNORTH" then (with monitors.north; [
"${main.name}, ${main.resolution}, ${main.position}, ${main.scale}" "${main.name}, ${main.resolution}, ${main.position}, ${main.scale}"
"${left.name}, ${left.resolution}, ${left.position}, ${left.scale}" "${left.name}, ${left.resolution}, ${left.position}, ${left.scale}"
@@ -82,7 +109,7 @@ in {
workspace = let workspace = let
d1 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name); d1 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
d2 = if hyper.host == "NxXPS" then monitors.xps.second.name else (if hyper.host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name); d2 = if hyper.host == "NxXPS" then monitors.xps.second.name else (if hyper.host == "NxNORTH" then monitors.north.left.name else monitors.ace.main.name);
d3 = if hyper.host == "NxXPS" then monitors.xps.third.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name); d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.host == "NxNORTH" then monitors.north.main.name else monitors.ace.main.name);
# d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.hyper.host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name); # d3 = if hyper.host == "NxXPS" then monitors.xps.main.name else (if hyper.hyper.host == "NxNORTH" then monitors.north.right.name else monitors.ace.main.name);
compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false"; compact = "gapsin:0, gapsout:0, bordersize:1, rounding:false";
in [ in [
@@ -106,8 +133,8 @@ in {
"27, monitor:${d2}" "27, monitor:${d2}"
"28, monitor:${d2}" "28, monitor:${d2}"
"29, monitor:${d2}" "29, monitor:${d2}"
"20, monitor:${d2}, ${compact}" "20, monitor:${d2}"
"31, monitor:${d3}, default:${let x = if hyper.host == "NxNORTH" then "true" else "false"; in x}, ${compact}" "31, monitor:${d3}, default:${let x = if hyper.host == "NxNORTH" then "true" else "false"; in x}"
"32, monitor:${d3}" "32, monitor:${d3}"
"33, monitor:${d3}" "33, monitor:${d3}"
"34, monitor:${d3}" "34, monitor:${d3}"
@@ -179,12 +206,10 @@ 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 = "2"; size = "3";
passes = "4"; passes = "2";
xray = false; xray = false;
vibrancy = 0.5; vibrancy = 0.5;
ignore_opacity = true; ignore_opacity = true;
@@ -193,10 +218,9 @@ in {
animations = { animations = {
enabled = true; enabled = true;
bezier = "myBezier, 0.01, 0.9, 0.1, 1.0"; #o # bezier = "myBezier, 0.01, 0.9, 0.1, 1.0"; #o
# bezier = "myBezier, 0.83, 0, 0.17, 1"; # io # bezier = "myBezier, 0.83, 0, 0.17, 1"; # io
# bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; bezier = "myBezier, 0.33, 1, 0.68, 1";
# bezier = "myBezier, 0.33, 1, 0.68, 1";
animation = let direction = if hyper.host == "NxXPS" then "slide" else "slidevert"; in [ animation = let direction = if hyper.host == "NxXPS" then "slide" else "slidevert"; in [
"windows, 1, ${animation-speed}, myBezier, slide" "windows, 1, ${animation-speed}, myBezier, slide"
"border, 1, ${animation-speed}, myBezier" "border, 1, ${animation-speed}, myBezier"
@@ -206,10 +230,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;
@@ -219,14 +243,6 @@ 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
}; };
@@ -243,85 +259,88 @@ 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"
"mako"
"fcitx5" "fcitx5"
# "ibus engine xkb:de::deu" # "ibus engine xkb:de::deu"
"libinput-gestures" "libinput-gestures"
"systemctl --user start hyprpanel"
# "hyprswitch --daemon" # "hyprswitch --daemon"
]; ];
windowrule = [ windowrulev2 = [
"border_color rgba(${rice.lib.nohash rice.color.special.bright}ff) rgba(${rice.lib.nohash rice.color.special.brighter}ff), match:pin 1" "bordercolor rgba(${rice.lib.nohash rice.color.magenta.bright}ff), pinned:1"
"border_size 0, match:float 0, match:workspace w[tv1]" "noanim, class:^(presenter)$" # sent
"rounding 0, match:float 0, match:workspace w[tv1]" "float, class:^(presenter)$" # sent
"border_size 0, match:float 0, match:workspace f[1]"
"rounding 0, match:float 0, match:workspace f[1]" "noanim, class:^(imv)$"
"float, class:^(imv)$"
"fullscreen, class:^(imv)$"
# "float, initialTitle:^(Edit Item)$" # thunderbid calendar
# "dimaround on, initialTitle:^(Edit Item)$" # thunderbid calendar
"float,class:^(thunderbird)$"
# "float,class:^(thunderbird)$,title:^(.*)(Reminder)(.*)$"
# "float,class:^(thunderbird)$,title:^About(.*)$"
# "float,class:^(thunderbird)$,title:^(Check Spelling)$"
"center 1,class:^(gimp)$"
] ++ [ ] ++ [
"center 1,match:class ^(gimp)$" "bordersize 0, floating:0, onworkspace:w[tv1]"
"rounding 0, floating:0, onworkspace:w[tv1]"
"bordersize 0, floating:0, onworkspace:f[1]"
"rounding 0, floating:0, onworkspace:f[1]"
"float on, match:class ^(ibus-ui.*)$" # "opacity ${transparency}, firefox"
"float on, match:class ^(ibus-ui-gtk3)$" "opacity ${transparency}, class:^(code-oss)$"
"float on, match:class ^(imv)$" "opacity ${transparency}, class:^(VSCodium)$"
"float on, match:class ^(org.kde.polkit-kde-authentication-agent-1)$" "opacity ${transparency}, class:^(Code)$"
"float on, match:class ^(presenter)$" # sent # "opacity ${transparency}, sent"
"float on, match:class ^(thunderbird)$" "opacity ${transparency}, class:^(neovide)$"
"float on, match:title ^(Compact folders)$" "opacity ${transparency}, class:^(obsidian)$"
"float on, match:title ^(Ibus-ui.*)$" # "opacity ${transparency}, zathura"
"float on, match:title ^(Ibus-ui-gtk3)$" # "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Alacritty"
"float on, match:title ^(Page Info .*)$" # "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), ${terminal}"
"float on, match:title ^(Picture-in-Picture)$" "opacity ${transparency}, class:^(discord)$"
"float on, match:title ^(wlogout)$" "opacity ${transparency}, class:^(vesktop)$"
"opacity ${transparency}, class:^(Element)$"
"fullscreen on, match:class ^(imv)$" "opacity ${transparency}, class:^(lutris)$"
"fullscreen on, match:class ^(sent)$" "opacity ${transparency}, class:^(element)$"
"fullscreen on, match:class ^(wlogout)$" # "opacity ${transparency}, ^([sS]potify)$"
# "opacity ${transparency}, virt-manager"
"no_anim on, match:class ^(imv)$" # "opacity ${transparency}, thunar"
"no_anim on, match:class ^(presenter)$" # sent "opacity ${transparency}, title:^(wlogout)$"
"opaque, title:^(GNU Image Manipulation Program)$"
"opacity ${transparency}, match:class ^(Code)$" "float, title:^(Picture-in-Picture)$"
"opacity ${transparency}, match:class ^(code-oss)$" # "float, class:^(Ibus-ui.*)$"
"opacity ${transparency}, match:class ^(discord)$" # "float, ^(ibus-ui.*)$"
# "opacity ${transparency}, match:class ^(vesktop)$" # "float, ^(ibus-ui-gtk3)$"
# "opacity ${transparency}, match:class ^(Element)$" "float, title:^(Ibus-ui-gtk3)$"
"opacity ${transparency}, match:class ^(lutris)$" "pin, title:^(Picture-in-Picture)$"
"opacity ${transparency}, match:class ^(neovide)$" "float, class:^(org.kde.polkit-kde-authentication-agent-1)$"
# "opacity ${transparency}, match:class ^(obsidian)$" "float, title:^(wlogout)$"
"opacity ${transparency}, match:class ^(VSCodium)$" "float, class:^(imv)$"
"opacity ${transparency}, match:title ^(wlogout)$" "float, title:^(Page Info .*)$"
"opaque on, match:title ^(GNU Image Manipulation Program)$" "float, title:^(Compact folders)$"
"opaque on, match:fullscreen 1" "tile, class:^(sent)$"
"fullscreen, class:^(wlogout)$"
"pin on, match:title ^(Picture-in-Picture)$" "fullscreen, class:^(sent)$"
"workspace 14, class:^(lutris)$"
"tile on, match:class ^(sent)$" "workspace 100, title:^(Apex Legends)$"
# "workspace 100, ^(cyberpunk2077.exe)$"
"workspace 100, match:class ^(gamescope)$" "workspace 100, title:^(No Man.s Sky)$"
"workspace 100, class:^(gamescope)$"
"float on, match:title ^(terminal-file-picker)$" ];
"dim_around on, match:title ^(terminal-file-picker)$"
"center on, match:title ^(terminal-file-picker)$"
"size 80% 80%, match:title ^(terminal-file-picker)$"
"float on, match:initial_title ^(Select Calendar)$"
"size 30% 30%, match:initial_title ^(Select Calendar)$"
];
layerrule = [ layerrule = [
"blur on, match:namespace waybar" "blur,waybar"
"blur on, match:namespace bar-0" # hyprpanel "dimaround,rofi"
"blur on, match:namespace bar-1" "blur,rofi"
"blur on, match:namespace bar-2" "xray,rofi"
"blur on, match:namespace bar-3"
"blur on, match:namespace bar-4"
"blur on, match:namespace rofi"
"dim_around on, match:namespace rofi"
]; ];
@@ -335,17 +354,18 @@ in {
########################################################################### ###########################################################################
## ROW 0: ## ROW 0:
bind = [ bind = [
"SUPER SHIFT, Escape, exit, "
"SUPER, F1, workspace, 100" "SUPER, F1, workspace, 100"
"SUPER SHIFT, F1, movetoworkspace, 100" "SUPER SHIFT, F1, movetoworkspace, 100"
# "SUPER, F2," # "SUPER, F2,"
# "SUPER, F3, toggleopaque" # "SUPER, F3, toggleopaque"
"SUPER, F4, exec, rm /tmp/caldav_event_cache.json && notify-send 'NxCaldavEvent' 'Cleared saved event cache!' ''" "SUPER, F4, exec, rm /tmp/caldav_event_cache.json && notify-send 'Cleared Saved Event!' ''"
# "SUPER, F5, exec, nx_gcal_event force-lookup" "SUPER, F5, exec, nx_gcal_event force-lookup"
# "SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate" "SUPER SHIFT, F5, exec, nx_gcal_event reauthenticate"
"SUPER, F6, exec, ${terminal-exec}'htop'" "SUPER, F6, exec, ${terminal-exec}'htop'"
"SUPER, F7, exec, ${terminal-exec}'nmtui'" "SUPER, F7, exec, ${terminal-exec}'nmtui'"
''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs -d '\n' swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 --transition-duration 2'' ''SUPER, F8, exec, find ~/Pictures/wallpapers/* -type f -not -path "~/Pictures/wallpapers/.git/*" | sort -R | head -n 1 | xargs -d '\n' swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 --transition-duration 2''
"SUPER, F9, execr, submap_indicator set '󰸉 '" "SUPER, F9, execr, waybar_mode set '󰸉 '"
"SUPER, F9, submap, color" "SUPER, F9, submap, color"
# "SUPER, F10, hyprload,update" # "SUPER, F10, hyprload,update"
"SUPER, F11, exec, waybar" "SUPER, F11, exec, waybar"
@@ -385,29 +405,26 @@ in {
########################################################################### ###########################################################################
## ROW 2: ## ROW 2:
# "SUPER, TAB, hycov:toggleoverview" #bind = SUPER, TAB, hycov:toggleoverview
# "SUPER, TAB, overview:toggle" # "SUPER, TAB, overview:toggle"
# "SUPER, TAB, hyprexpo:expo, toggle" # "SUPER, TAB, hyprexpo:expo, toggle"
# "SUPER, TAB, hyprtasking:killhovered"
# ", Escape, hyprtasking:if_active, hyprtasking:toggle cursor"
"ALT, TAB, focuscurrentorlast" "ALT, TAB, focuscurrentorlast"
# "SUPER, TAB, exec, hyprswitch --daemon" # "SUPER, TAB, exec, hyprswitch --daemon"
"SUPER, Q, killactive" "SUPER, Q, killactive"
"SUPER, W, exec, submap_indicator set '󰈹 '" "SUPER, W, exec, waybar_mode set '󰈹 '"
"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}'echo -e "\\e]11;#${rice.color.secondary.darker}\\e\\\\" && ssh nxace' '' # yes this is a double hash. "SUPER SHIFT, T, exec, ${terminal-exec}'ssh nxace'"
"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'"
"SUPER SHIFT, I, exec, ${terminal-exec}'nh home switch || read'" "SUPER SHIFT, I, exec, ${terminal-exec}'nh home switch || read'"
"SUPER CTRL, I, exec, ${terminal-exec}'nh os switch || read'" "SUPER CTRL, I, exec, ${terminal-exec}'nh os switch || read'"
# "SUPER, O, exec, obsidian " "SUPER, O, exec, obsidian "
"SUPER, P, pin " "SUPER, P, pin "
# "SUPER, Ü," # "SUPER, Ü,"
# "SUPER, +," # "SUPER, +,"
@@ -417,13 +434,12 @@ in {
########################################################################### ###########################################################################
## ROW 3: ## ROW 3:
"SUPER, A, execr, submap_indicator set ' 󰹑 '" "SUPER, A, execr, waybar_mode set ' 󰹑 '"
"SUPER, A, submap, scrL" "SUPER, A, submap, scrL"
"SUPER, S, exec, spotify" "SUPER, S, exec, spotify"
"SUPER, D, exec, vesktop" "SUPER, D, exec, vesktop --disable-gpu-compositing"
# "SUPER, D, exec, discord"
"SUPER, F, fullscreen" "SUPER, F, fullscreen"
# "SUPER, G, action:hyprctl dispatch focuswindow address:{}" # "SUPER, G,"
"SUPER, H, movefocus, l" "SUPER, H, movefocus, l"
"SUPER, J, movefocus, d" "SUPER, J, movefocus, d"
"SUPER, K, movefocus, u" "SUPER, K, movefocus, u"
@@ -436,18 +452,16 @@ in {
## ROW 4: ## ROW 4:
# "SUPER, <, overview:toggle" # "SUPER, <, overview:toggle"
"SUPER, Y, execr, submap_indicator set '󰹑 '" "SUPER, Y, execr, waybar_mode set '󰹑 '"
"SUPER, Y, submap, scrR" "SUPER, Y, submap, scrR"
"SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3" "SUPER, X, exec, pkill wlogout || wlogout --protocol layer-shell -b 3"
# "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh " # "SUPER, C, exec, /home/nx2/scripts/quickconfig/quickconfig.sh "
"SUPER, C, exec, chatterino" "SUPER, C, exec, chatterino"
"SUPER SHIFT, C, exec, hyprpicker -n -a" "SUPER SHIFT, C, exec, hyprpicker -n -a"
"SUPER, V, togglefloating, " "SUPER, V, togglefloating, "
# "SUPER, B, exec, bitwarden" "SUPER, B, exec, bitwarden"
"SUPER, N, layoutmsg, togglesplit" "SUPER, N, 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"
@@ -457,7 +471,7 @@ in {
# bindr = SUPER, Ctrl, exec, # ?? # bindr = SUPER, Ctrl, exec, # ??
# bindr = SUPERALT, Alt_L, exec, # bindr = SUPERALT, Alt_L, exec,
# "SUPER, Space, cyclenext" "SUPER, Space, cyclenext"
"SUPER SHIFT, Space, swapnext" "SUPER SHIFT, Space, swapnext"
# "SUPER, , " # "SUPER, , "
# "SUPER, , " # "SUPER, , "
@@ -477,9 +491,7 @@ in {
########################################################################### ###########################################################################
## MEGA KEYS: ## MEGA KEYS:
", Print, execr, submap_indicator set '󰄀 '" '' , Print, exec, grim -g "$(slurp)"''
", Print, submap, screenshot"
# "SUPER, Next, resizeactive, 5% 5%" # binde # "SUPER, Next, resizeactive, 5% 5%" # binde
# "SUPER, Prior, resizeactive, -5% -5%" # binde # "SUPER, Prior, resizeactive, -5% -5%" # binde
@@ -515,97 +527,7 @@ 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 = {
overview = {
# panelHeight =
# panelBorderWidth =
onBottom = false; # whether if panel should be on bottom instead of top
# workspaceMargin = # spacing of workspaces with eachother and the edge of the panel
# reservedArea = # padding on top of the panel, for Macbook camera notch
workspaceBorderSize = rice.border-width; #
centerAligned = true; # whether if workspaces should be aligned at the center (KDE / macOS style) or at the left (Windows style)
hideBackgroundLayers = true; # do not draw background and bottom layers in overview
hideTopLayers = false; # do not draw top layers in overview
hideOverlayLayers = false; # do not draw overlay layers in overview
hideRealLayers = false; # whether to hide layers in actual workspace
drawActiveWorkspace = true; # draw the active workspace in overview as-is
overrideGaps = false; # whether if overview should override the layout gaps in the current workspace using the following values
# gapsIn = #
# gapsOut = #
affectStrut = false; # whether the panel should push window aside, disabling this option also
dots_center = true;
autoDrag = true; # mouse click always drags window when overview is open
autoScroll = true; # mouse scroll on active workspace area always switch workspace
exitOnClick = true; # mouse click without dragging exits overview
switchOnDrop = true; # switch to the workspace when a window is droppped into it
exitOnSwitch = true; # overview exits when overview is switched by clicking on workspace view or by switchOnDrop
showNewWorkspace = false; # add a new empty workspace at the end of workspaces view
showEmptyWorkspace = false; # show empty workspaces that are inbetween non-empty workspaces
showSpecialWorkspace = false; # defaults to false
disableGestures = true;
reverseSwipe = true; # reverses the direction of swipe gesture, for macOS peeps?
exitKey = true;
};
hypertasking = {
layout = "grid";
gap_size = 20;
bg_color = "0xff${rice.color.background}";
border_size = 4;
exit_on_hovered = false;
warp_on_move_window = 1;
close_overview_on_reload = true;
drag_button = "0x110"; # left mouse button
select_button = "0x111"; # right mouse button
# for other mouse buttons see <linux/input-event-codes.h>
gestures = {
enabled = true;
move_fingers = 3;
move_distance = 300;
open_fingers = 4;
open_distance = 300;
open_positive = true;
};
grid = {
rows = 3;
cols = 3;
loop = false;
layers = 2;
loop_layers = true;
gaps_use_aspect_ratio = false;
};
linear ={
top = false;
height = 400;
scroll_speed = 1.0;
blur = false;
};
};
easymotion = {
textsize = 15;
textcolor = "rgba(ffffffff)";
bgcolor = "rgba(000000ff)";
blur = 0;
blurA = 1.0;
xray = 0;
textfont = "Sans";
textpadding = 0;
bordersize = 0;
bordercolor = "rgba(ffffffff)";
rounding = 0;
fullscreen_action = "none";
motionkeys = "abcdefghijklmnopqrstuvwxyz1234567890";
motionlabels = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
only_special = "true";
};
};
}; };
@@ -618,18 +540,18 @@ in {
# '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y' # '8888Y' 'Y8888P' Y8888P' YP YP 88 YP YP '8888Y'
extraConfig = let extraConfig = let
action_simple = { mods ? "", key, cmd }: '' action_simple = { mods ? "", key, cmd }: ''
bind=${mods},${key},execr,submap_indicator unset bind=${mods},${key},execr,waybar_mode unset
bind=${mods},${key},${cmd} bind=${mods},${key},${cmd}
bind=${mods},${key},submap,reset bind=${mods},${key},submap,reset
''; '';
extra_workspace = { key, wsnumber }: '' extra_workspace = { key, wsnumber }: ''
bind=,${key},execr,submap_indicator unset bind=,${key},execr,waybar_mode unset
bind=,${key},workspace,${wsnumber} bind=,${key},workspace,${wsnumber}
bind=,${key},submap,reset bind=,${key},submap,reset
bind=SUPER,${key},execr,submap_indicator unset bind=SUPER,${key},execr,waybar_mode unset
bind=SUPER,${key},workspace,${wsnumber} bind=SUPER,${key},workspace,${wsnumber}
bind=SUPER,${key},submap,reset bind=SUPER,${key},submap,reset
bind=SUPER SHIFT,${key},execr, submap_indicator unset bind=SUPER SHIFT,${key},execr, waybar_mode unset
bind=SUPER SHIFT,${key},movetoworkspace,${wsnumber} bind=SUPER SHIFT,${key},movetoworkspace,${wsnumber}
bind=SUPER SHIFT,${key},submap,reset bind=SUPER SHIFT,${key},submap,reset
''; '';
@@ -652,35 +574,35 @@ in {
${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}} ${action_simple { key = "Y"; cmd = "exec,firefox https://youtube.com";}}
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}} ${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}} ${action_simple { key = "P"; cmd = "exec,firefox https://pw.nx2.site";}}
bind=,Z,exec,submap_indicator set ' ' bind=,Z,exec,waybar_mode set ' '
bind=,Z,submap,tuda bind=,Z,submap,tuda
bind=,Z,submap,reset bind=,Z,submap,reset
bind=,Escape,exec,submap_indicator unset bind=,Escape,exec,waybar_mode unset
bind=,Escape,submap,reset bind=,Escape,submap,reset
submap = reset submap = reset
submap = scrL submap = scrL
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "2" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])} ${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "2" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
bind = , A, execr, submap_indicator unset bind = , A, execr, waybar_mode unset
bind = , A, submap, reset bind = , A, submap, reset
bind = , Escape, execr, submap_indicator unset bind = , Escape, execr, waybar_mode unset
bind = , Escape, submap, reset bind = , Escape, submap, reset
submap = reset submap = reset
submap = scrR submap = scrR
${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "3" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])} ${builtins.concatStringsSep "\n" (builtins.map (num: extra_workspace { key = builtins.toString num; wsnumber = "3" + builtins.toString num;}) [1 2 3 4 5 6 7 8 9 0])}
bind = , Y, execr, submap_indicator unset bind = , Y, execr, waybar_mode unset
bind = , Y, submap, reset bind = , Y, submap, reset
bind = , Escape, execr, submap_indicator unset bind = , Escape, execr, waybar_mode unset
bind = , Escape, submap, reset bind = , Escape, submap, reset
submap = reset submap = reset
submap = color submap = color
${action_simple { key = "W"; cmd = ''exec,swww query | sed -n 1p | sed -E 's-.*image: (.*)-"\1"-g' | xargs change_colors_json img && notify-send 'NxTheme' 'change_colors_json img successfull' ''; }} ${action_simple { key = "W"; cmd = ''exec,swww query | sed -n 1p | sed -E 's-.*image: (.*)-"\1"-g' | xargs change_colors_json img && notify-send 'change_colors_json img successfull' ''; }}
${action_simple { key = "M"; cmd = ''exec,change_colors_json manual && notify-send 'NxTheme' 'change_colors_json manual successfull' ''; }} ${action_simple { key = "M"; cmd = ''exec,change_colors_json manual && notify-send 'change_colors_json manual successfull' ''; }}
${action_simple { key = "D"; cmd = ''exec,firefox ${hyper.home}/.config/color-pallete.html''; }} ${action_simple { key = "D"; cmd = ''exec,firefox ${hyper.home}/.config/color-pallete.html''; }}
bind = , Escape, execr, submap_indicator unset bind = , Escape, execr, waybar_mode unset
bind = , Escape, submap, reset bind = , Escape, submap, reset
submap = reset submap = reset
@@ -688,19 +610,10 @@ in {
${action_simple { key = "T"; cmd = ''exec,firefox https://www.tucan.tu-darmstadt.de/''; }} ${action_simple { key = "T"; cmd = ''exec,firefox https://www.tucan.tu-darmstadt.de/''; }}
${action_simple { key = "M"; cmd = ''exec,firefox https://moodle.tu-darmstadt.de/''; }} ${action_simple { key = "M"; cmd = ''exec,firefox https://moodle.tu-darmstadt.de/''; }}
${action_simple { key = "I"; cmd = ''exec,firefox https://moodle.informatik.tu-darmstadt.de/''; }} ${action_simple { key = "I"; cmd = ''exec,firefox https://moodle.informatik.tu-darmstadt.de/''; }}
bind = , Escape, execr, submap_indicator unset bind = , Escape, execr, waybar_mode unset
bind = , Escape, submap, reset bind = , Escape, submap, reset
submap = reset submap = reset
submap = screenshot
${action_simple { key = "W"; cmd = ''exec,hyprshot -m window''; }}
${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 = "A"; cmd = ''exec,hyprshot -m region''; }}
bind = , Escape, execr, submap_indicator unset
bind = , Escape, submap, reset
submap = reset
''; '';
}; };
@@ -778,7 +691,7 @@ in {
valign = bottom valign = bottom
} }
''; '';
}; };
} }

View File

@@ -1,4 +1,6 @@
{ pkgs, ... }@all: with all; { { pkgs, hyper, ... }:
pkgs.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; })

View File

@@ -1,5 +0,0 @@
{ pkgs, ... }@all: with all; {
home.packages = with pkgs; [
solaar
];
}

View File

@@ -1,15 +1,16 @@
{ config, pkgs, ... }@all: with all; { { pkgs, rice, ... }:
{
home.packages = with pkgs; [ libnotify ]; home.packages = with pkgs; [ libnotify ];
services.mako = with rice; { services.mako = with rice; {
enable = if config.programs.hyprpanel.enable then false else true; enable = true;
settings = { settings = {
default-timeout = 5000; # in ms defaultTimeout = 10000; # in ms
background-color = color.background; backgroundColor = color.background;
text-color = color.foreground; textColor = color.foreground;
borderColor = color.border;
borderSize = border-width;
font = font.code.name; font = font.code.name;
border-size = border-width; borderRadius = rounding;
border-radius = rounding;
border-color = color.border;
anchor = "top-right"; anchor = "top-right";
margin = builtins.toString (gap-size * 2) ; margin = builtins.toString (gap-size * 2) ;
}; };

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
# cinny-desktop # cinny-desktop

View File

@@ -1,82 +0,0 @@
{ pkgs, ... }@all: with all; {
programs.mpv = {
enable = true;
package = pkgs.mpv;
config = {
# osc = false; # Disables the on-screen controller (seekbar, volume, etc.)
# osd-bar = false; # Disables the on-screen display progress bar
demuxer-max-back-bytes = 4294967296; # Sets the maximum number of bytes to buffer for seeking backwards
demuxer-max-bytes = 4294967296; # Sets the maximum number of bytes to buffer for seeking forwards
interpolation = true; # Enables frame interpolation for smoother playback
video-sync = "display-resample"; # Synchronizes video playback to the display's refresh rate
sub-visibility = true; # Hides subtitles by default
sub-auto = "fuzzy"; # Automatically loads subtitles if their filename is similar to the video file
sub-font = rice.font.base.name;
# sub-blur = 10; # this blurs the whole thing, text aswell
sub-color = rice.color.accent.bright;
sub-back-color = "${rice.color.background}${rice.lib.float-to-drune 0.8}"; # does not seem to work
# sub-border-size = 0;
sub-border-style = "opaque-box";
background-color = "${rice.color.background}"; # transparency breaks blur on hyprland sometimes, so just rgb
alang = "en,eng,de,ger"; # Sets preferred audio languages in order
slang = "en,eng,de,ger"; # Sets preferred subtitle languages in order
vlang = "en,eng,de,ger"; # Sets preferred video languages in order
save-position-on-quit = true; # Saves the playback position when quitting
ignore-path-in-watch-later-config = true; # Ignores the path in the watch-later configuration
ytdl-format = "bestvideo[height<=?1080]+bestaudio/best"; # Sets the format for downloading YouTube videos
vo = pkgs.lib.mkIf hyper.nvidia.enable "gpu";
hwdec = if hyper.nvidia.enable then "no" else "no"; # bugged
};
scripts = with pkgs.mpvScripts; [
mpris # use media keys
thumbfast # thumbnails on timeline hover
# uosc # custom ui
sponsorblock
# visualizer
];
bindings = {
"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'';
# "space" = ''cycle pause; script-binding uosc/flash-pause-indicator'';
# "right" = ''seek 5'';
# "left" = ''seek -5'';
# "shift+right" = ''seek 30; script-binding uosc/flash-timeline'';
# "shift+left" = ''seek -30; script-binding uosc/flash-timeline'';
# "m" = ''no-osd cycle mute; script-binding uosc/flash-volume'';
# "up" = ''no-osd add volume 10; script-binding uosc/flash-volume'';
# "down" = ''no-osd add volume -10; script-binding uosc/flash-volume'';
# "[" = ''no-osd add speed -0.25; script-binding uosc/flash-speed'';
# "]" = ''no-osd add speed 0.25; script-binding uosc/flash-speed'';
# "\\" = ''no-osd set speed 1; script-binding uosc/flash-speed'';
# ">" = ''script-binding uosc/next; script-message-to uosc flash-elements top_bar,timeline'';
# "<" = ''script-binding uosc/prev; script-message-to uosc flash-elements top_bar,timeline>'';
};
scriptOpts = {
thumbfast = {
spawn_first = true;
network = true;
hwdec = true;
};
uosc = {
timeline_size = 25;
timeline_persistency = "paused,audio";
progress = "always";
progress_size = 4;
progress_line_width = 4;
controls = "subtitles,<has_many_audio>audio,<has_many_video>video,<has_many_edition>editions,<stream>stream-quality";
top_bar = "never";
refine = "text_width";
};
};
};
xdg.configFile."mpv/shaders/invert.glsl".text = /* glsl */ ''
//!HOOK LUMA
//!BIND HOOKED
vec4 hook()
{
float luma = LUMA_texOff(0).x;
return vec4(1.0 - luma);
}
'';
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, ... }:
{ {
home = { home = {
packages = with pkgs; [ packages = with pkgs; [

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
nixd nixd

View File

@@ -1,5 +1,5 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, ... }:
lib.mkIf (hyper.nvidia.enable == true) pkgs.lib.mkIf (hyper.nvidia.enable == true)
{ {
home = { home = {
packages = with pkgs; [ packages = with pkgs; [

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; let { config, pkgs, secrets, ... }: let
sep = " "; sep = " ";
in { in {
home = { home = {

View File

@@ -1,10 +1,11 @@
{ pkgs, ... }@all: with all; { { pkgs, ... }:
{
home.packages = [ home.packages = [
(pkgs.writeShellApplication { (pkgs.writeShellApplication {
name = "nx_backup"; name = "nx_backup";
runtimeInputs = [ ]; runtimeInputs = [ ];
text = let text = let
web-root = hyper.webroot; web-root = "/var/nginx/webroot";
gitea-backup = "/var/backup/gitea"; gitea-backup = "/var/backup/gitea";
postgres-backup = "/var/backup/postgresql"; postgres-backup = "/var/backup/postgresql";
in /* bash */ '' in /* bash */ ''
@@ -58,7 +59,8 @@
echo "Backup and encryption complete: $DESTINATION" echo "Backup and encryption complete: $DESTINATION"
echo "Space remaining:" echo "Space remaining:"
dysk df -h | head -n 1
df -h | grep -P "^/dev.+? "
''; '';
}) })
]; ];

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
(writeShellApplication { (writeShellApplication {

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
ghostscript ghostscript

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, ... }:
pkgs.lib.mkIf (hyper.host != "NxACE")
{ {
# home.packages = with pkgs; [ # home.packages = with pkgs; [
# obs-studio # obs-studio

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
libreoffice libreoffice

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
ollama ollama
@@ -16,10 +16,10 @@ if len(sys.argv) < 2:
system_message = sys.argv[1] system_message = sys.argv[1]
input_text = sys.stdin.read() input_text = sys.stdin.read()
try: try:
response = ollama.chat(model='gemma3:4b', messages=[ response = ollama.chat(model='llama3.1:8b', messages=[
{ {
'role': 'system', 'role': 'system',
'content': system_message, 'content': "You are a text transformer. Follow the folling instruction:\n\n" + system_message + "\n\nOnly output the transformed text. Do not add any addidional conversation around the output. Just the result.",
}, },
{ {
'role': 'user', 'role': 'user',

View File

@@ -1,60 +0,0 @@
{ pkgs, ... }@all: with all; {
programs.opencode = {
enable = true;
package = pkgs.opencode;
themes.theme = with rice.color; let
dl = color: { dark = color; light = color; };
in {
accent = dl accent.base;
background = dl background;
backgroundElement = dl subtle.dark;
backgroundPanel = dl subtle.darker;
border = dl subtle.base;
borderActive = dl border;
borderSubtle = dl subtle.dark;
diffAdded = dl positive.base;
diffAddedBg = dl positive.darker;
diffAddedLineNumberBg = dl positive.dark;
diffContext = dl foreground;
diffContextBg = dl subtle.dark;
diffHighlightAdded = dl positive.bright;
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;
};
};
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { config, pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
pandoc pandoc

View File

@@ -1,19 +0,0 @@
{ pkgs, ... }@all: with all; {
home.packages = with pkgs; [
xdg-desktop-portal
brightnessctl
blueman
fontpreview
gtk3
gsettings-desktop-schemas
imv
pavucontrol
playerctl
swww
wev
wl-clipboard
xclip
wlr-randr
cava
];
}

View File

@@ -1,22 +0,0 @@
{ pkgs, hyper, ... }: {
home.packages = (with pkgs; [
chromium
gnome-clocks
gnome-calculator
gnome-characters
gnome-2048
qbittorrent
wl-clipboard
xfce.thunar
]) ++ (if hyper.isWorkstation then (with pkgs; [
signal-desktop
unstable.code-cursor-fhs
latest.antigravity
element-desktop
obsidian
fontforge-gtk
inkscape
audacity
libreoffice
]) else []);
}

View File

@@ -1,33 +1,28 @@
{ pkgs, ... }@all: with all; { { pkgs, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
asciinema
bat bat
browsh
cmake cmake
cmatrix
dig dig
dust du-dust
dysk
exiftool exiftool
eza eza
ffmpeg ffmpeg
figlet figlet
fzf fzf
gh
glib glib
glow glow
gnumake gnumake
htop htop
imagemagick imagemagick
jq jq
libxml2
lolcat lolcat
lynx lynx
mediainfo mediainfo
mpv
neofetch neofetch
nmap
pastel
pdfgrep pdfgrep
pdftk
pipes pipes
pv pv
reflex reflex
@@ -37,11 +32,7 @@
sssnake sssnake
systemctl-tui systemctl-tui
tldr tldr
unstable.gemini-cli
unstable.gemini-cli
unstable.yt-dlp
unstable.yt-dlp
w3m w3m
which yt-dlp
]; ];
} }

View File

@@ -1,5 +1,5 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, secrets, ... }:
lib.mkIf (hyper.host != "NxACE") pkgs.lib.mkIf (hyper.host != "NxACE")
{ {
home.packages = [ home.packages = [
pkgs.remmina pkgs.remmina

View File

@@ -1,12 +0,0 @@
{ ... }: {
imports = [
./programming/c.nix
# ./programming/gleam.nix
./programming/glsl.nix
./programming/go.nix
./programming/java.nix
./programming/js.nix
./programming/python.nix
./programming/rust.nix
];
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home = { home = {
packages = with pkgs; [ packages = with pkgs; [

View File

@@ -1,4 +1,6 @@
{ pkgs, ... }@all: with all; { { pkgs, hyper, ... }:
pkgs.lib.mkIf (hyper.host != "NxACE")
{
home.packages = with pkgs; [ home.packages = with pkgs; [
erlang erlang
rebar3 rebar3

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }@all: with all;
{
home = {
packages = with pkgs; [
glsl_analyzer
];
};
}

View File

@@ -1,7 +1,8 @@
{ pkgs, ... }@all: with all; { { pkgs, ... }:
programs.go = { {
enable = true; home = {
package = pkgs.go; packages = with pkgs; [
env.goPath = "${config.xdg.dataHome}/go"; go
];
}; };
} }

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home = { home = {
packages = with pkgs; [ packages = with pkgs; [

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
nodejs nodejs

View File

@@ -1,21 +1,18 @@
{ pkgs, ... }@all: with all; { { pkgs, ... }:
{
home = let home = let
python-with-packages = pkgs.python3.withPackages (pp: with pp; [ python-with-packages = pkgs.python3.withPackages (pp: with pp; [
ipython ipython
pipdeptree
requests requests
# debugpy google google-api-python-client google-auth-httplib2 google-auth-oauthlib
debugpy
black black
uv
uv-build
]); ]);
in { in {
packages = [ packages = [
python-with-packages python-with-packages
] ++ (with pkgs; [ ];
python313Packages.python-lsp-server
ruff
pyright
]);
sessionVariables = { sessionVariables = {
PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}"; PYTHONPATH = "${python-with-packages}/${python-with-packages.sitePackages}";
}; };

View File

@@ -1,12 +0,0 @@
{ pkgs, ... }@all: with all; {
home = {
packages = with pkgs; [
gdb
cargo
clippy
rustc
rustfmt
rust-analyzer
];
};
}

View File

@@ -1,31 +0,0 @@
{ pkgs, ... }@all: with all; {
home.packages = with pkgs; [ rclone ];
sops.secrets."nx2site/copyparty/user-password/${hyper.user}".path = "%r/secrets/copyparty/user-password/${hyper.user}";
programs.rclone = {
enable = true;
package = pkgs.rclone;
remotes = {
"file.${hyper.domain}" = {
config = {
type = "webdav";
vendor = "owncloud"; # copyparty
url = "https://file.${hyper.domain}/";
user = hyper.user;
pacer_min_sleep = "0.01ms";
};
mounts = {
"" = {
enable = true;
mountPoint = "${hyper.home}/file.nx2.site/";
options = {
vfs-cache-mode = "writes";
dir-cache-time = "5s";
};
};
};
secrets.pass = "/run/user/1000/secrets/copyparty/user-password/${hyper.user}";
};
};
};
}

View File

@@ -1,46 +1,113 @@
{ pkgs, ... }@all: with all; { { pkgs, rice, ... }: {
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;
}
'';
}; };
} }

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
xsane xsane

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, rice, ... }:
let let
my-sent = pkgs.sent.override { my-sent = pkgs.sent.override {
patches = [ patches = [

View File

@@ -1,7 +1,23 @@
{ pkgs, ... }@all: with all; { { hyper, inputs, ... }:
imports = [ inputs.sops-nix.homeManagerModules.sops ]; {
imports = [
inputs.sops-nix.homeManagerModules.sops
];
sops = { sops = {
age.keyFile = "${hyper.home}/vault/age/sopsnix-${hyper.host}-home.key"; # age.keyFile = "/home/${user}/.config/sops/age/keys.txt";
gnupg.home = "${hyper.home}/.gnupg";
defaultSopsFile = ../sops-secrets.yaml; defaultSopsFile = ../sops-secrets.yaml;
# %r is $XDG_RUNTIME_DIR
secrets = {
"example" = {
path = "%r/secrets/example";
};
# "sops-age-private-key" = { # Bootstrapping doens't work
# mode = "0400";
# path = "/home/${user}/.config/sops/age/keys.txt";
# };
};
}; };
} }

View File

@@ -1,57 +0,0 @@
{ pkgs, ... }@all: with all;
{
home.packages = with pkgs; [
unstable.spotify
unstable.spicetify-cli
];
services.librespot = {
enable = true;
package = pkgs.unstable.librespot;
};
sops.secrets."spotify/spotiy-player-clinet-id" = { path = "%r/secrets/spotify/spotiy-player-clinet-id"; };
programs.spotify-player = {
enable = true;
package = pkgs.unstable.spotify-player;
settings = {
border_type = "Rounded";
client_id_command = "cat $XDG_RUNTIME_DIR/secrets/spotify/spotiy-player-clinet-id";
copy_command.command = "wl-copy";
cover_img_length = 20;
cover_img_scale = 1; # if this is not 1 it doesnt fit in the box (for me)
cover_img_width = 9; # this ratio depends on your terminal font
device.normalization = true;
genre_num = 32; # all of them
liked_icon = "";
name = "spotify-player-${hyper.host}";
pause_icon = "";
playback_window_position = "Bottom";
play_icon = "";
progress_bar_position = "Right"; # "Bottom"
progress_bar_type = "Rectangle"; # "Line"
theme = "${hyper.user}";
};
themes = [{
name = "${hyper.user}";
component_style = with rice.color; {
block_title = { fg = accent.bright; };
border = { fg = border; };
current_playing = { fg = special.base; bg = special.darker; modifiers = ["Italic"]; };
like = { fg = positive.base; };
lyrics_played = { fg = subtle.base; };
lyrics_playing = { fg = special.base; };
page_desc = { fg = secondary.base; };
playback_album = { fg = secondary.base; };
playback_artists = { fg = secondary.base; };
playback_genres = { fg = subtle.base; };
playback_metadata = { fg = accent.base; bg = background; };
playback_progress_bar = { fg = accent.brighter; bg = accent.dark; modifiers = ["Bold"]; };
playback_status = { fg = accent.bright; };
playback_track = { fg = accent.bright; modifiers = ["Bold"]; };
secondary_row = { fg = accent.brighter; };
selection = { bg = accent.dark; };
table_header = { fg = tertiary.bright; };
# playback_progress_bar_unfilled (Specific to progress_bar_type as Line) = "";
};
}];
};
}

View File

@@ -1,52 +1,27 @@
{ pkgs, ... }@all: with all; { { pkgs, hyper, ... }:
home.packages = with pkgs; [ sshfs ]; {
programs.ssh = { home = {
enable = true; packages = with pkgs; [ sshfs ];
package = pkgs.openssh; file.".ssh/config".text = ''
enableDefaultConfig = false; HOST nxace
matchBlocks = let HostName ssh.${hyper.domain}
default = { User ${hyper.user}
addKeysToAgent = "yes"; Port 50022
forwardAgent = false;
compression = false; HOST nxacel
serverAliveInterval = 0; HostName 10.0.1.1
serverAliveCountMax = 3; User ${hyper.user}
hashKnownHosts = false; Port 50022
userKnownHostsFile = "~/.ssh/known_hosts";
controlMaster = "no"; HOST nxrpil
controlPath = "~/.ssh/master-%r@%n:%p"; HostName 10.0.1.31
controlPersist = "no"; User ${hyper.user}
}; Port 22
nxace = name: default // {
host = name; HOST nxgit
hostname = "ssh.${hyper.domain}"; HostName ssh.${hyper.domain}
user = "nx2"; User git
port = 50022; Port 50022
identityFile = [ "${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}" ]; '';
};
in {
"*" = default;
"ssh.nx2.site" = default // { identityFile = [
"${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}"
"${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}"
]; };
"tg.dm.informatik.tu-darmstadt.de" = default // { identityFile = [ "${hyper.home}/vault/ssh/tg-dm-informatik-tuda" ]; };
"git.da.dicos.de" = default // { identityFile = [ "${hyper.home}/vault/ssh/dcsgit-lkurzweg-${hyper.host}" ]; };
"github.com" = default // { identityFile = [ "${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}" ]; };
"nxace" = (nxace "nxace" );
"nxacel" = (nxace "nxacel") // { hostname = "10.0.1.1"; };
"nxrpli" = (nxace "nxrpil") // { hostname = "10.0.1.31"; port = 22; };
"nx2s-email-relay" = default // {
identityFile = "${hyper.home}/vault/ssh/nx2s-email-relay";
hostname = "35.243.218.208";
port = 22;
user = secrets.ssh.nx2s-email-relay-user;
};
};
};
services.ssh-agent = {
enable = true;
# socket = "ssh-agent"; # suffix to $XDG_RUNTIME_DIR
# package = pkgs.openssh;
}; };
} }

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, rice, ... }:
{ {
programs.starship = { programs.starship = {
enable = true; enable = true;
@@ -7,7 +7,7 @@
enableFishIntegration = true; enableFishIntegration = true;
settings = with rice.color; { settings = with rice.color; {
add_newline = false; add_newline = false;
format = lib.strings.concatMapStrings (x: "$" + x) [ format = pkgs.lib.strings.concatMapStrings (x: "$" + x) [
"jobs" "jobs"
"battery" "battery"
"username" "username"

View File

@@ -1,84 +0,0 @@
{ pkgs, ... }@all: with all; lib.mkIf (hyper.isPersonal) {
programs.thunderbird = let
inherit (lib.generators) toJSON;
extensions = toJSON {} {
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
};
in {
enable = true;
profiles = {
"${hyper.user}" = {
isDefault = true;
settings = with rice.color; {
"calendar.alarms.showmissed" = false;
"calendar.alarms.playsound" = false;
"calendar.alarms.show" = false;
"extensions.webextensions.uuids" = extensions;
"mail.startup.enabledMailCheckOnce" = true;
"mailnews.mark_message_read.delay" = true;
"mailnews.mark_message_read.delay.interval" = 3;
"mailnews.tags.$label1.color" = red.base;
"mailnews.tags.$label1.tag" = "Important";
"mailnews.tags.$label2.color" = yellow.base;
"mailnews.tags.$label2.tag" = "Work";
"mailnews.tags.$label3.color" = green.base;
"mailnews.tags.$label3.tag" = "Personal";
"mailnews.tags.$label4.color" = cyan.base;
"mailnews.tags.$label4.tag" = "To Do";
"mailnews.tags.$label5.color" = blue.base;
"mailnews.tags.$label5.tag" = "Later";
"mailnews.headers.showMessageId" = true;
"mailnews.headers.showOrganization" = true;
"mailnews.headers.showReferences" = true;
"mailnews.headers.showSender" = true;
"mailnews.headers.showUserAgent" = true;
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
};
userChrome = with rice.color; /* css */ ''
body,
#navigation-toolbox,
#calendarContent,
#calSidebar,
#tabpanelcontainer,
#spacesToolbar,
#tabs-toolbar,
#calMinimonth,
#primaryButtonSidePanel *,
.minimonth-week,
.multiday-header-corner, .day-column-heading, calendar-header-container, calendar-event-column, .multiday-hour-box,
#view-box,
#tabs-toolbar,
#status-bar,
.calview-toggle,
#calview-toggle-item,
#folderPaneHeaderBar,
#folderPane,
#threadPaneHeaderBar,
#threadTree,
#tabs-toolbar {
color: ${foreground} !important;
font-family: ${rice.font.base.name} !important;
background-color: transparent !important;
background-image: none !important;
border: none !important;
-moz-appearance: none !important;
}
.minimonth-nav-section {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
border: ${builtins.toString rice.border-width}px solid ${border};
}
.button,
.button-primary,
.tab-content[selected] {
background-color: ${accent.base};
color: ${background};
background-image: none;
}
html {
background-color: rgba(${rice.lib.hex-to-rgb-comma-string background},${builtins.toString rice.transparency}) !important;
}
'';
};
};
};
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
(writeShellApplication { (writeShellApplication {

View File

@@ -1,8 +0,0 @@
{ pkgs, ... }@all: with all;
lib.mkIf (hyper.host != "NxACE")
{
home.packages = with pkgs; [
typst
tinymist
];
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; let { pkgs, ... }: let
vws = pkgs.vale.withStyles (s: [ s.alex s.google ]); vws = pkgs.vale.withStyles (s: [ s.alex s.google ]);
in { in {
home = { home = {

View File

@@ -1,5 +1,5 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, ... }:
lib.mkIf (hyper.host == "NxNORTH") pkgs.lib.mkIf (hyper.host == "NxNORTH")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
virt-manager virt-manager

View File

@@ -1,6 +1,6 @@
{ pkgs, ... }@all: with all; { config, pkgs, hyper, rice, ... }:
{ {
config = lib.mkIf (hyper.host != "NxACE") { config = pkgs.lib.mkIf (hyper.host != "NxACE") {
home.packages = [ home.packages = [
pkgs.vscodium pkgs.vscodium
pkgs.nixpkgs-fmt pkgs.nixpkgs-fmt
@@ -92,13 +92,13 @@
# url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/mutability.nix"; # url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/mutability.nix";
# sha256 = "4b5ca670c1ac865927e98ac5bf5c131eca46cc20abf0bd0612db955bfc979de8"; # sha256 = "4b5ca670c1ac865927e98ac5bf5c131eca46cc20abf0bd0612db955bfc979de8";
# }) # })
# { inherit config pkgs; lib = lib; }) # { inherit config pkgs; lib = pkgs.lib; })
# (import # (import
# (builtins.fetchurl { # (builtins.fetchurl {
# url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/vscode.nix"; # url = "https://gist.githubusercontent.com/piousdeer/b29c272eaeba398b864da6abf6cb5daa/raw/41e569ba110eb6ebbb463a6b1f5d9fe4f9e82375/vscode.nix";
# sha256 = "fed877fa1eefd94bc4806641cea87138df78a47af89c7818ac5e76ebacbd025f"; # sha256 = "fed877fa1eefd94bc4806641cea87138df78a47af89c7818ac5e76ebacbd025f";
# }) # })
# { inherit config pkgs; lib = lib; }) # { inherit config pkgs; lib = pkgs.lib; })
# ] else []; # ] else [];
} }

View File

@@ -1,8 +1,8 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home.packages = [ home.packages = with pkgs; [
(pkgs.writers.writePython3Bin "change_colors_json" { (writers.writePython3Bin "change_colors_json" {
libraries = with pkgs.python3Packages; [ numpy pillow scikit-learn ]; libraries = with python3Packages; [ numpy pillow scikit-learn ];
flakeIgnore = [ "E302" "E305" "E226" "E501" ]; flakeIgnore = [ "E302" "E305" "E226" "E501" ];
} /*python */ '' } /*python */ ''
from colorsys import hls_to_rgb, rgb_to_hls from colorsys import hls_to_rgb, rgb_to_hls
@@ -119,7 +119,7 @@
return Palette(colors) return Palette(colors)
def hyprpicker() -> Color: def hyprpicker() -> Color:
ret = str(subprocess.run(["bash", "-c", "${pkgs.hyprpicker}/bin/hyprpicker -n -f rgb | tail -n 1"], capture_output=True).stdout)[2:-3] ret = str(subprocess.run(["${pkgs.hyprpicker}/bin/hyprpicker", "-n", "-f", "rgb"], capture_output=True).stdout)[2:-3]
return Color([int(c) for c in ret.split(" ")]) return Color([int(c) for c in ret.split(" ")])
if __name__ == "__main__": if __name__ == "__main__":
@@ -139,12 +139,9 @@
weird = alter_hue(ilist=accent, hue=80) weird = alter_hue(ilist=accent, hue=80)
special = alter_hue(ilist=accent, hue=180) special = alter_hue(ilist=accent, hue=180)
foreground = alter_l(accent, 0.9) foreground = alter_l(accent, 0.9)
background = alter_l(accent, 0.05) background = alter_l(accent, 0.1)
with open("${hyper.home}/nix-dots/flake-modules/colors.json", "r") as f: d = {
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)
@@ -158,8 +155,8 @@
} }
} }
with open("${hyper.home}/nix-dots/flake-modules/colors.json", "w") as f: with open("/home/nx2/nix-dots/flake-modules/colors.json", "w") as f:
f.write(json.dumps(full_d, indent=4)) f.write(json.dumps(d, indent=4))
'') '')
]; ];
} }

372
home-modules/waybar.nix Normal file
View File

@@ -0,0 +1,372 @@
{ pkgs, hyper, rice, ... }:
let
sep = " ";
in {
sops.secrets = {
"nx2site/radicale/password" = { };
};
home.packages = with pkgs; [
(writeShellApplication { name = "waybar_mode"; text = /*bash*/ ''
print_help() {
echo "Usage: waybar_mode {set <string>|unset}"
}
if [ $# -lt 1 ]; then
print_help; exit 1;
fi
case "$1" in
set)
# Check if there is a second argument for the 'set' operation
if [ $# -eq 2 ]; then
echo "$2" > /tmp/waybar-mode
pkill -RTMIN+8 waybar
else
echo "Error: 'set' operation requires exactly one string argument."
print_help
exit 1
fi
;;
unset)
echo "" > /tmp/waybar-mode
pkill -RTMIN+8 waybar
;;
*)
echo "Error: Unknown command '$1'"
print_help
exit 1
;;
esac
exit 0
'';})
(writeShellApplication { name = "cclock"; text = /*bash*/ ''
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
if [ $# -eq 0 ]; then
echo "󰃮${sep}$(date +'%A the')" "$ord" "of" "$(date +'%B')" " ${sep}$(date +'%R')"
elif [ "$1" = "--no-icons" ]; then
echo "$(date +'%A the')" "$ord" "of" "$(date +'%B')" "$(date +'%R')"
fi
'';})
(writers.writePython3Bin "caldav_event" {
libraries = with pkgs.python3Packages; [ caldav ics pytz ];
flakeIgnore = [ "E302" "E305""E501" "E261" ];
} /* python */ ''
import os
import json
from caldav import DAVClient
from datetime import datetime, timezone
from ics import Calendar
from pytz import UTC
def get_password(password_file):
with open(password_file, "r") as file:
return file.read().strip()
def datetime_converter(obj):
if isinstance(obj, datetime):
return obj.isoformat()
return obj
def datetime_parser(dct):
for key, value in dct.items():
if isinstance(value, str):
try:
dct[key] = datetime.fromisoformat(value)
except ValueError:
pass
return dct
def load_cache(cache_file):
if os.path.exists(cache_file):
with open(cache_file, "r") as file:
return json.load(file, object_hook=datetime_parser)
return None
def save_cache(cache_file, data):
with open(cache_file, "w") as file:
json.dump(data, file, default=datetime_converter)
def get_ongoing_or_next_event(url, username, password):
now = datetime.now(timezone.utc)
try:
client = DAVClient(url, username=username, password=password)
principal = client.principal()
calendars = principal.calendars()
next_event_dict = {
'event_name': "fake",
'event_begin': datetime(9000, 1, 1, tzinfo=UTC), # in the year 9000
'event_end': datetime(9000, 1, 1, 8, tzinfo=UTC),
}
for calendar in calendars:
for event in calendar.events():
calendar_parsed = Calendar(event.data)
for ics_event in calendar_parsed.events:
event_dict = {}
event_dict['event_name'] = ics_event.name or "(No Title)"
event_dict['event_begin'] = ics_event.begin.astimezone(timezone.utc)
event_dict['event_end'] = ics_event.end.astimezone(timezone.utc)
if event_dict['event_begin'] <= now and now <= event_dict['event_end']:
return event_dict
elif event_dict['event_begin'] >= now and next_event_dict['event_begin'] > event_dict['event_begin']:
next_event_dict = event_dict
return next_event_dict
except Exception as e:
print(f"Error accessing {url}: {e}")
return None
if __name__ == "__main__":
password_file = "/home/nx2/.config/sops-nix/secrets/nx2site/radicale/password" # Path to password file
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
url = "https://dav.${hyper.domain}/"
username = "${hyper.user}"
password = get_password(password_file)
event_dict = load_cache(cache_file)
now = datetime.now(timezone.utc).timestamp()
if event_dict is None or event_dict['event_begin'].timestamp() <= now and now < event_dict['event_end'].timestamp():
event_dict = get_ongoing_or_next_event(url, username, password)
if event_dict is None:
print("No upcoming events found.")
exit(0)
cache_data = {
"event_name": event_dict['event_name'] if event_dict is not None else None,
"event_begin": event_dict['event_begin'] if event_dict is not None else None,
"event_end": event_dict['event_end'] if event_dict is not None else None
}
save_cache(cache_file, cache_data)
if event_dict:
event_start = event_dict['event_begin'].timestamp()
event_end = event_dict['event_end'].timestamp()
if event_start <= now <= event_end:
time_remaining = event_end - now
hours, rem = divmod(int(time_remaining), 3600)
minutes, _ = divmod(rem, 60)
print(f"{event_dict['event_name']} ends in {hours} hour{'s ' if hours != 1 else ' '}and {minutes} minute{'s ' if minutes != 1 else ' '}")
else:
time_until_start = event_start - now
hours, rem = divmod(int(time_until_start), 3600)
minutes, _ = divmod(rem, 60)
print(f"{event_dict['event_name']} starts in {hours} hour{'s ' if hours != 1 else ' '}and {minutes} minute{'s ' if minutes != 1 else ' '}")
else:
print("No upcoming events found.")
'')
];
programs.waybar = {
enable = true;
package = pkgs.waybar;
settings = {
bar = {
# height = 20;
layer = "top";
position = "bottom";
margin-top = 0;
# margin-left = rice.gap-size;
# margin-bottom = rice.gap-size;
# margin-right = rice.gap-size;
margin-left = 0;
margin-bottom = 0;
margin-right = 0;
spacing = 10;
fixed-center = true;
modules-left = [
# "cpu"
# "memory"
"wireplumber"
"backlight"
"battery"
"network"
"hyprland/window"
];
modules-center = [
"hyprland/workspaces"
];
modules-right = [
"custom/mode"
# "custom/caldav_event"
"custom/cclock"
"tray"
];
"hyprland/workspaces" = {
on-click = "activate";
format = "{name}";
all-outputs = false;
active-only = false;
};
"hyprland/window" = {
# format = "${sep}{}";
format = "{}";
separate-outputs = true;
};
"custom/cclock" = {
exec = "cclock";
restart-interval = 60;
};
"custom/caldav_event" = {
format = "󰃰${sep}{}";
exec = "caldav_event";
restart-interval = 60;
max-width = 60;
};
"custom/mode" = {
exec = "cat /tmp/waybar-mode";
interval = "once";
signal = 8;
};
cpu = {
interval = 1;
format = "󰍛${sep}{}%";
max-length = 10;
};
memory = {
interval = 5;
format = "${sep}{avail:.0f}G free";
};
battery = {
interval = 60;
tooltip = false;
format = "{icon}${sep}{capacity}%";
states = {
warning = 15;
critical = 5;
};
format-icons = [
" "
" "
" "
" "
" "
];
format-charging = "{icon}${sep}+{capacity}%";
format-plugged = "{icon}${sep}P{capacity}%";
format-full = "{icon}${sep}F{capacity}%";
};
backlight = {
device = "eDP-1";
format = "{icon}${sep}{percent}%";
format-icons = [
""
""
""
""
""
""
""
""
""
];
};
network = {
format-wifi = "${sep}{essid}";
format-ethernet = "󰈀${sep}Wired";
format-disconnected = "󰌙${sep}Disconnected";
};
wireplumber = {
format = "󰕾${sep}{volume}%";
format-muted = "󰝟${sep}--%";
};
};
};
style = with rice.color; let f = rice.lib.hex-to-rgb-comma-string; in ''
* {
font-family: ${rice.font.code.name};
font-size: 1em;
min-height: 0px;
margin: 0px;
padding: 0px;
}
window#waybar {
background-color: rgba(${f background},${builtins.toString rice.transparency});
transition-duration: 5s;
transition-property: background-color;
/* border: ${builtins.toString rice.border-width}px solid rgb(${f border}); */
/* margin: ${builtins.toString rice.gap-size}px; */
/* border-radius: ${builtins.toString rice.rounding}px; */
}
#clock,
#custom-cclock,
#custom-mode,
#custom-caldav-event,
#battery,
#cpu,
#tray,
#disk,
#backlight,
#network,
#wireplumber,
#memory,
#window,
#workspaces {
padding: 0px 3px;
margin-top: 0.3em;
border-radius: ${builtins.toString rice.rounding}px;
color: rgb(${f accent.bright});
}
#workspaces {
font-family: ${rice.font.code.name};
}
#workspaces button {
color: rgb(${f accent.base});
padding-left: 15px;
padding-right: 15px;
border-radius: ${builtins.toString rice.rounding}px;
}
#workspaces button.active {
color: rgb(${f background});
background-color: rgb(${f accent.base});
}
#workspaces button:hover {
color: rgb(${f tertiary.bright});
}
#workspaces button.urgent {
background-color: rgba(${f magenta.base},${builtins.toString rice.transparency});
}
#custom-mode {
color: rgb(${f red.base});
}
#window, #custom-caldav_event {
font-family: ${rice.font.base.name}, ${rice.font.code.name};
color: rgb(${f tertiary.bright});
}
#wireplumber.muted {
color: rgb(${f tertiary.bright});
}
#wireplumber {
padding-left: 10px;
}
#battery.warning:not(.charging) {
color: rgb(${f green.base});;
}
#battery.charging {
color: rgb(${f green.base});
}
#battery.critical {
background: rgb(${f negative.base});
color: rgb(${f foreground});
}
'';
#battery.critical:not(.charging) {
};
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, rice,... }:
{ {
home = { home = {
packages = with pkgs; [ wlogout ]; packages = with pkgs; [ wlogout ];

View File

@@ -1,32 +0,0 @@
{ pkgs, ... }@all: with all; {
xdg = {
enable = true;
configHome = "${hyper.home}/.config";
cacheHome = "${hyper.home}/.cache";
dataHome = "${hyper.home}/.local/share";
stateHome = "${hyper.home}/.local/state";
mimeApps = {
enable = true;
defaultApplications = let
browser = "firefox.desktop";
image = "imv.desktop";
in {
"default-web-browser" = [ browser ];
"text/html" = [ browser ];
"text/htm" = [ browser ];
"x-scheme-handler/http" = [ browser ];
"x-scheme-handler/https" = [ browser ];
"x-scheme-handler/about" = [ browser ];
"x-scheme-handler/unknown" = [ browser ];
"x-scheme-handler/mailto" = "thunderbird.desktop";
"image/png" = image;
"image/jpg" = image;
"image/jpeg" = image;
"image/webp" = image;
"image/gif" = image;
"application/pdf" = "zathura.desktop";
"inode/directory" = "thunar.desktop";
};
};
};
}

View File

@@ -1,19 +1,23 @@
{ pkgs, ... }@all: with all; let { pkgs, hyper, rice, inputs, ... }:
not-nod = (pkgs.pkgs-version != "24.05"); {
tfc = pkgs.unstable.xdg-desktop-portal-termfilechooser; home.packages = with pkgs; [
in { unar
home.packages = [
pkgs.unar
tfc
]; ];
programs.yazi = { programs.yazi = {
enable = true; enable = true;
# package = pkgs.yazi; # package = pkgs.yazi;
package = inputs.yazi.packages.${hyper.system}.default; package = inputs.yazi.packages.${hyper.system}.default;
enableFishIntegration = true; enableFishIntegration = true;
# initLua = /* lua */ '' ''; # down shellWrapperName = "ya";
plugins = with inputs.yazi-plugins.packages.${hyper.system}; {
inherit
# chmod
starship;
};
# initLua = /* lua */ '' '';
keymap = { keymap = {
mgr.keymap = [ manager.keymap = [
{ on = "<Esc>"; run = "escape"; desc = "Exit visual mode, clear selected, or cancel search"; } { on = "<Esc>"; run = "escape"; desc = "Exit visual mode, clear selected, or cancel search"; }
{ on = "q"; run = "quit"; desc = "Exit the process"; } { on = "q"; run = "quit"; desc = "Exit the process"; }
{ on = "Q"; run = "quit --no-cwd-file"; desc = "Exit the process without writing cwd-file"; } { on = "Q"; run = "quit --no-cwd-file"; desc = "Exit the process without writing cwd-file"; }
@@ -30,24 +34,22 @@ 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" "C" ]; run = "cd ~/.cache"; desc = "Go to the .cache directory"; } { on = [ "g" "g" ]; run = "arrow down"; desc = "Move cursor to the top"; }
{ on = [ "g" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; } { on = [ "g" "e" ]; run = "arrow up"; desc = "Move cursor to the end"; }
{ on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents 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" "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-dots"; desc = "Go to the Nix-Dotfiles directory"; }
{ on = [ "g" "N" ]; run = "cd /nix/store"; desc = "Go to the Nix-Store"; } { 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" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; }
{ on = [ "g" "l" ]; run = "cd ~/.locale"; desc = "Go to the .locale directory"; }
{ on = [ "g" "C" ]; run = "cd ~/.cache"; desc = "Go to the .cache directory"; }
{ on = [ "g" "m" ]; run = "cd ~/media"; desc = "Go to the media (udiskie mount) directory"; }
{ on = [ "g" "v" ]; run = "cd ~/Videos"; desc = "Go to the Videos directory"; }
{ on = [ "g" "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" "r" ]; run = "cd /"; desc = "Go to the root (/) 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 +70,8 @@ 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 = "plugin smart-enter"; desc = "Open selected files"; } { on = "<Enter>"; run = "open"; 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'' "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 "; }
@@ -88,8 +88,8 @@ in {
{ on = ";"; run = "shell --interactive"; desc = "Run a shell command"; } { on = ";"; run = "shell --interactive"; desc = "Run a shell command"; }
{ on = ":"; run = "shell --block --interactive"; desc = "Run a shell command (block until finishes)"; } { on = ":"; run = "shell --block --interactive"; desc = "Run a shell command (block until finishes)"; }
{ on = "."; run = "hidden toggle"; desc = "Toggle the visibility of hidden files"; } { on = "."; run = "hidden toggle"; desc = "Toggle the visibility of hidden files"; }
{ on = "s"; run = "search --via=fd"; desc = "Search files by name using fd"; } { on = "s"; run = "search fd"; desc = "Search files by name using fd"; }
{ on = "S"; run = "search --via=rg"; desc = "Search files by content using ripgrep"; } { on = "S"; run = "search rg"; desc = "Search files by content using ripgrep"; }
{ on = "<C-s>"; run = "escape --search"; desc = "Cancel the ongoing search"; } { on = "<C-s>"; run = "escape --search"; desc = "Cancel the ongoing search"; }
{ on = "z"; run = "plugin zoxide"; desc = "Jump to a directory using zoxide"; } { on = "z"; run = "plugin zoxide"; desc = "Jump to a directory using zoxide"; }
{ on = "Z"; run = "plugin fzf"; desc = "Jump to a directory or reveal a file using fzf"; } { on = "Z"; run = "plugin fzf"; desc = "Jump to a directory or reveal a file using fzf"; }
@@ -158,13 +158,8 @@ 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 manager"; }
# 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
@@ -173,8 +168,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 = "k"; run = "arrow -1"; desc = "Up in list"; } { on = "j"; run = "arrow -1"; desc = "Up in list"; }
{ on = "j"; run = "arrow 1"; desc = "Down in list"; } { on = "k"; 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)"; }
]; ];
@@ -184,22 +179,9 @@ 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 = { manager = {
layout = [2 3 4]; layout = [2 3 4];
sort_by = "natural"; sort_by = "natural";
sort_sensitive = true; sort_sensitive = true;
@@ -211,74 +193,74 @@ in {
}; };
opener = { opener = {
"edit" = [ "edit" = [
{ run = ''hx "$@"''; desc = "Helix"; block = true; } { run = ''hx "$@"''; desc = "helix"; block = true; }
{ run = ''codium "$@"''; desc = "VS Code"; orphan = true; } { run = ''codium "$@"''; desc = "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 return to yazi"; read''; block = true; desc = "Show mediainfo"; } { run = ''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; desc = "Show mediainfo"; }
]; ];
"archive" = [ "archive" = [
{ run = ''unar "$@"''; desc = "Extract here"; } { run = ''unar "$1"''; desc = "Extract here"; }
{ run = ''tar -x "$@"''; desc = "tar -x"; } { run = ''tar -x "$1"''; desc = "tar -x"; }
{ run = ''unzip "$@"''; desc = "unzip"; } { run = ''unzip "$1"''; 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 "$1"''; desc = "swww wallpaper"; } { run = ''swww img --transition-type wipe --transition-angle 60 --transition-step 120 --transition-fps 120 "$@"''; desc = "swww wallpaper"; }
{ run = ''exiftool "$1"; echo "Press enter to return to yazi"; read''; desc = "View Exif Data"; } { run = ''exiftool "$@"; echo "Press enter to exit"; read''; desc = "View Exif Data"; }
{ run = ''for f in "$1"; do magick "$f" -auto-orient "''${f%.*}.pdf"; done''; desc = "Convert to PDF"; } { run = ''for f in "$@"; 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 = ''firefox "$@"''; desc = "Firefox"; orphan = true; } { run = ''xournal "$@"''; desc = "xournal"; 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 = ''chromium --enable-features=UseOzonePlatform --ozone-platform=wayland "$@"''; desc = "Chromium"; orphan = true; } { run = ''zen "$@"''; desc = "zen"; 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 "$1"; echo "Press enter to return to yazi"; read''; desc = "bash -c"; } { run = ''bash -c "$@"''; desc = "bash -c"; }
{ run = ''fish -c "$1"; echo "Press enter to return to yazi"; read''; desc = "fish -c"; } { run = ''fish -c "$@"''; desc = "fish -c"; }
{ run = ''sh -c "$1"; echo "Press enter to return to yazi"; read''; desc = "sh -c"; } { run = ''sh -c "$@"''; desc = "sh -c"; }
]; ];
"python" = [ "python" = [
{ run = ''python "$@"; echo "Press enter to return to yazi"; read''; desc = "Python"; block = true; } { run = ''python "$@"''; desc = "python"; }
]; ];
"directory" = [ "directory" = [
{ run = ''lazygit "$1"''; desc = "LazyGit"; } { run = ''lazygit "$@"''; desc = "python"; }
]; ];
}; };
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-script.python"; use = [ "edit" "python" ]; } { mime = "text/x-python"; use = "python"; }
{ mime = "text/script.python"; use = [ "edit" "python" ]; }
{ mime = "text/*"; use = "edit"; } { mime = "text/*"; use = "edit"; }
{ mime = "text"; use = "edit"; } { mime = "text"; use = "edit"; }
{ mime = "inode/x-empty"; use = "directory"; } { mine = "inode/x-empty"; use = "edit"; }
{ mime = "inode/directory"; use = "directory"; } { mine = "inode/directory"; use = "edit"; }
{ mime = "image/*"; use = "image"; } { mime = "image/*"; use = "image"; }
{ mime = "image/svg"; use = [ "image" "edit" ]; } { mime = "image/svg"; use = [ "image" "edit" ]; }
@@ -311,7 +293,7 @@ in {
]; ];
}; };
theme = with rice.color; { theme = with rice.color; {
mgr = { manager = {
cwd = { fg = foreground; bg = background; }; cwd = { fg = foreground; bg = background; };
hovered = { fg = background; bg = accent.base; }; hovered = { fg = background; bg = accent.base; };
preview_hovered = { underline = false; }; preview_hovered = { underline = false; };
@@ -326,76 +308,26 @@ in {
border_symbol = ""; border_symbol = "";
border_style = { fg = border; }; border_style = { fg = border; };
}; };
tabs = {
active = { fg = secondary.dark; bg = secondary.base; };
inactive = { fg = secondary.base; bg = secondary.dark; };
# sep_inner = { open = "[", close = "]" };
# 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 = {
# sep_right = { open = ""; close = ""; }; separator_open = " "; #"";
# sep_left = { open = ""; close = ""; }; separator_close = " "; #"";
sepr_style = { fg = accent.base; bg = black.base; }; separator_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; };
perm_type = { fg = special.base; }; permissions_t = { fg = special.base; };
perm_read = { fg = accent.base; }; permissions_r = { fg = accent.base; };
perm_write = { fg = secondary.base; }; permissions_w = { fg = secondary.base; };
perm_exec = { fg = tertiary.base; }; permissions_x = { fg = tertiary.base; };
perm_sep = { fg = special.base; }; permissions_s = { 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 = { fg = accent.bright; }; title = {};
value = { fg = foreground; }; value = {};
selected = { reversed = true; }; selected = { reversed = true; };
}; };
select = { select = {
@@ -405,8 +337,8 @@ in {
}; };
tasks = { tasks = {
border = { fg = border2; }; border = { fg = border2; };
title = { fg = accent.base; bold = true; }; title = {};
hovered = { fg = accent.bright; }; hovered = { underline = true; };
}; };
which = { which = {
mask = { bg = black.base; }; mask = { bg = black.base; };
@@ -417,11 +349,11 @@ in {
separator_style = { fg = foreground; }; separator_style = { fg = foreground; };
}; };
help = { help = {
on = { fg = accent.base; }; on = { fg = "#fe8019"; };
run = { fg = secondary.base; }; exec = { fg = "#83a598"; };
desc = { fg = tertiary.base; italic = true; }; desc = { fg = "#928374"; };
hovered = { bg = accent.bright; bold = true; }; hovered = { bg = "#504945"; bold = true; };
footer = { fg = accent.base; bg = subtle.dark; }; footer = { fg = "#3c3836"; bg = "#a89984"; };
}; };
filetype = { filetype = {
rules = [ rules = [
@@ -429,75 +361,19 @@ 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; }
{ url = "*"; is = "link"; fg = tertiary.base; } { name = "*"; is = "link"; fg = tertiary.base; }
{ url = "*"; is = "orphan"; fg = negative.base; } { name = "*"; is = "orphan"; fg = negative.base; }
{ url = "*"; is = "block"; fg = special.base; } { name = "*"; is = "block"; fg = special.base; }
{ url = "*"; is = "char"; fg = special.bright; } { name = "*"; is = "char"; fg = special.bright; }
{ url = "*"; is = "exec"; fg = secondary.base; } { name = "*"; is = "exec"; fg = secondary.base; }
{ url = "*"; is = "fifo"; fg = weird.base; } { name = "*"; is = "fifo"; fg = weird.base; }
{ url = "*"; is = "sock"; fg = weird.bright; } { name = "*"; is = "sock"; fg = weird.bright; }
{ url = "*"; is = "sticky"; fg = special.base; } { name = "*"; is = "sticky"; fg = special.base; }
# Fallback # Fallback
{ url = "*"; fg = foreground; } { name = "*"; fg = foreground; }
]; ];
}; };
}; };
} // (if not-nod then {
shellWrapperName = "ya";
initLua = /* lua */ ''
require("zoxide"):setup {
update_db = true,
}
Status:children_add(function()
local h = cx.active.current.hovered
if not h or ya.target_family() ~= "unix" then
return ""
end
return ui.Line {
ui.Span(ya.user_name(h.cha.uid) or tostring(h.cha.uid)):fg("magenta"),
":",
ui.Span(ya.group_name(h.cha.gid) or tostring(h.cha.gid)):fg("magenta"),
" ",
}
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 = { inherit (pkgs.yaziPlugins)
glow git smart-enter;
};
} else {});
xdg = {
configFile."xdg-desktop-portal-termfilechooser/config" = {
force = true;
text = ''
[filechooser]
cmd=${tfc}/share/xdg-desktop-portal-termfilechooser/yazi-wrapper.sh
default_dir=$HOME
env=TERMCMD=ghostty --title="terminal-file-picker -e"
open_mode=suggested
save_mode=suggested
'';
};
portal = {
enable = true;
xdgOpenUsePortal = true;
config.common."org.freedesktop.impl.portal.FileChooser" = "termfilechooser";
extraPortals = [ tfc ] ++ (with pkgs; [
xdg-desktop-portal
xdg-desktop-portal-gnome
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
]);
};
}; };
home.sessionVariables."GTK_USE_PORTAL" = "1";
} }

View File

@@ -10,7 +10,7 @@
completion-fg = foreground; completion-fg = foreground;
completion-highlight-bg = background; completion-highlight-bg = background;
completion-highlight-fg = accent.base; completion-highlight-fg = accent.base;
default-bg = "rgba(${f accent.dark},${t})"; default-bg = "rgba(${f background},${t})";
default-fg = foreground; default-fg = foreground;
highlight-active-color = "rgba(${f accent.base},0.5)"; highlight-active-color = "rgba(${f accent.base},0.5)";
highlight-color = "rgba(${f secondary.base},0.5)"; highlight-color = "rgba(${f secondary.base},0.5)";

138
home.nix
View File

@@ -1,19 +1,16 @@
{ pkgs, ... }@all: with all; { { pkgs, hyper, inputs, ... }:
{
imports = [ imports = [
./home-modules/auto-mount.nix ./home-modules/auto-mount.nix
./home-modules/bar.nix
./home-modules/bash.nix ./home-modules/bash.nix
./home-modules/bitwarden.nix ./home-modules/bitwarden.nix
./home-modules/calendar.nix ./home-modules/calendar.nix
./home-modules/chatterino.nix ./home-modules/chatterino.nix
./home-modules/clipboard.nix
./home-modules/color-pallete.nix ./home-modules/color-pallete.nix
./home-modules/contact.nix
./home-modules/direnv.nix ./home-modules/direnv.nix
./home-modules/discord.nix ./home-modules/discord.nix
./home-modules/email.nix ./home-modules/email.nix
./home-modules/figlet.nix ./home-modules/firefox.nix
./home-modules/firefox/firefox.nix
./home-modules/fish.nix ./home-modules/fish.nix
./home-modules/games.nix ./home-modules/games.nix
./home-modules/gestures.nix ./home-modules/gestures.nix
@@ -26,54 +23,143 @@
./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/nm.nix
./home-modules/nh.nix ./home-modules/nh.nix
./home-modules/nixd.nix ./home-modules/nixd.nix
./home-modules/nvidia.nix ./home-modules/nvidia.nix
./home-modules/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/pandoc.nix ./home-modules/pandoc.nix
./home-modules/pkgs-list/desktop.nix ./home-modules/pnx.nix
./home-modules/pkgs-list/programs.nix ./home-modules/programming/c.nix
./home-modules/pkgs-list/shell.nix ./home-modules/programming/gleam.nix
# ./home-modules/pnx.nix ./home-modules/programming/go.nix
./home-modules/programming.nix ./home-modules/programming/java.nix
./home-modules/programming/js.nix
./home-modules/programming/python.nix
./home-modules/qt.nix ./home-modules/qt.nix
./home-modules/rclone.nix
./home-modules/rofi.nix ./home-modules/rofi.nix
./home-modules/scanning.nix ./home-modules/scanning.nix
./home-modules/sent.nix ./home-modules/sent.nix
./home-modules/sops.nix ./home-modules/sops.nix
./home-modules/spotify.nix
./home-modules/ssh.nix ./home-modules/ssh.nix
./home-modules/starship.nix ./home-modules/starship.nix
./home-modules/thunderbird.nix
./home-modules/tts.nix ./home-modules/tts.nix
./home-modules/typst.nix
./home-modules/vale.nix ./home-modules/vale.nix
./home-modules/virt-manager.nix ./home-modules/virt-manager.nix
./home-modules/vscode.nix ./home-modules/vscode.nix
./home-modules/wallpaper-to-colors.nix ./home-modules/wallpaper-to-colors.nix
./home-modules/waybar.nix
./home-modules/wlogout.nix ./home-modules/wlogout.nix
./home-modules/xdg.nix
./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.isServer then [ ] ++ (if (hyper.host == "NxACE") 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
] else []); ] else []);
home.username = hyper.user; home.username = hyper.user;
home.homeDirectory = hyper.home; # home.homeDirectory = hyper.home; # for some reason you cant use hyper.home here
# home.homeDirectory = "/home/${hyper.user}"; home.homeDirectory = "/home/${hyper.user}";
home.stateVersion = hyper.main-pkgs-version; home.stateVersion = pkgs.version;
home.packages = with pkgs; [
bat
brightnessctl
browsh
chromium
cmake
dig
du-dust
exiftool
eza
ffmpeg
figlet
fontpreview
fzf
glib
glow
gnumake
gsettings-desktop-schemas
imagemagick
imv
jq
lolcat
lynx
mediainfo
mpv
neofetch
pavucontrol
pdfgrep
piper-tts
pipes
playerctl
pv
qbittorrent
reflex
ripgrep
screen
# speedtest-go
spicetify-cli
sssnake
swww
systemctl-tui
tldr
unstable.firefox
unstable.spotify
w3m
wev
wl-clipboard
xclip
xfce.thunar
# xournal
yt-dlp
inputs.zen-browser.packages."${system}".default
] ++ (if (hyper.host != "NxACE") then [
signal-desktop
obsidian
zoom-us
inkscape
] else []);
xdg = {
enable = true;
configHome = "${hyper.home}.config";
cacheHome = "${hyper.home}.cache";
dataHome = "${hyper.home}.local/share";
stateHome = "${hyper.home}.local/state";
mimeApps = {
enable = true;
defaultApplications = let
browser = "firefox.desktop";
in {
"default-web-browser" = [ browser ];
"text/html" = [ browser ];
"text/htm" = [ browser ];
"x-scheme-handler/http" = [ browser ];
"x-scheme-handler/https" = [ browser ];
"x-scheme-handler/about" = [ browser ];
"x-scheme-handler/unknown" = [ browser ];
"x-scheme-handler/mailto" = "thunderbird.desktop";
"image/png" = "imv.desktop";
"image/jpg" = "imv.desktop";
"image/jpeg" = "imv.desktop";
"image/webp" = "imv.desktop";
"image/gif" = "imv.desktop";
"application/pdf" = "zathura.desktop";
"inode/directory" = "thunar.desktop";
};
};
};
# Wayland, X, etc. support for session vars
# systemd.user.sessionVariables = home.sessionVariables;
# Let Home Manager install and manage itself.
programs.home-manager.enable = true; programs.home-manager.enable = true;
} }

22
nixos-wsl.nix Normal file
View File

@@ -0,0 +1,22 @@
{ pkgs, hyper, inputs, ... }:
{
imports = [
inputs.nixos-wsl.nixosModules.default
./system-modules/users.nix
./system-modules/gc.nix
./system-modules/docker.nix
./system-modules/gpg.nix
./system-modules/networking.nix
./system-modules/nixd.nix
# ./system-modules/sops.nix
# ./system-modules/sshd.nix
# ./system-modules/syncthing.nix
];
system.stateVersion = pkgs.version;
# system.stateVersion = "24.11";
wsl = {
defaultUser = hyper.user;
enable = true;
};
nix.settings.experimental-features = [ "nix-command" "flakes" ];
}

32
nod.nix
View File

@@ -1,32 +0,0 @@
{ pkgs, ... }@all: with all; {
environment = {
packages = import ./system-modules/base-packages.nix pkgs;
etcBackupExtension = ".bak";
motd = "";
};
terminal = {
font = rice.font.code.regular-path;
};
android-integration = {
termux-setup-storage.enable = true;
};
system.stateVersion = pkgs.version;
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
user ={
shell = "${pkgs.fish}/bin/fish";
# userName = pkgs.lib.mkForce hyper.user; if its read-only, whats the point of this option???
};
# Set your time zone
time.timeZone = "Europe/Berlin";
home-manager = {
config = import ./shell-only.nix;
useGlobalPkgs = true;
backupFileExtension = "backup";
extraSpecialArgs = { inherit (all) inputs hyper rice; };
};
}

Some files were not shown because too many files have changed in this diff Show More