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
151 changed files with 2599 additions and 4117 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,73 +1,159 @@
{ ... }@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/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/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/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 [ ]) ++ (if (hyper.host == "NxACE") then [
./system-modules/nx2site.nix ./system-modules/nx2site.nix
./system-modules/hugo.nix ./system-modules/hugo.nix
./system-modules/postgres.nix ./system-modules/postgres.nix
./system-modules/nx2site/proxy.nix ./system-modules/nx2site/proxy.nix
./system-modules/nx2site/audiobookshelf.nix ./system-modules/nx2site/audiobookshelf.nix
./system-modules/nx2site/copyparty.nix # ./system-modules/nx2site/dyn_dns.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-publish.nix
./system-modules/calendar/lr.nix ./system-modules/calendar-lec.nix
./system-modules/calendar/dicos.nix ./system-modules/calendar-lr.nix
./system-modules/calendar-dicos.nix
] else [ ] else [
]); ]);
environment.systemPackages = import ./system-modules/base-packages.nix pkgs;
# 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"; systemd.extraConfig = "DefaultLimitNOFILE=2048";
system.stateVersion = hyper.pkgs-version; boot.tmp.useTmpfs = false;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
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.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,12 +1,9 @@
{ {
unfree = [ unfree = [
"cursor"
"discord" "discord"
"spotify" "spotify"
"obsidian" "obsidian"
"steam"
"steam-unwrapped"
"zoom-us" "zoom-us"
"zoom" "zoom"
@@ -38,8 +35,6 @@
"libnvjitlink" "libnvjitlink"
"libcusparse" "libcusparse"
"libnpp" "libnpp"
"vscode-extension-mhutchie-git-graph"
]; ];
inecure = [ inecure = [

View File

@@ -1,13 +1,13 @@
{ {
"base": { "base": {
"foreground": "#eddbef", "foreground": "#dbd2f8",
"background": "#100711" "background": "#0f062c"
}, },
"to_alter": { "to_alter": {
"accent": "#ba71c0", "accent": "#724ce5",
"secondary": "#3266ff", "secondary": "#ff3271",
"tertiary": "#4bb6e6", "tertiary": "#ffc932",
"special": "#76c071", "special": "#bfe54b",
"weird": "#c08571" "weird": "#e54b8b"
} }
} }

View File

@@ -7,27 +7,13 @@ pkgs: rec {
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";
@@ -40,14 +26,13 @@ pkgs: rec {
fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base; fbcolor = (builtins.fromJSON (builtins.readFile ./colors.json)).base;
fcolor = facolor // fbcolor; fcolor = facolor // fbcolor;
xcolor = with ccolor; with fcolor; { xcolor = with ccolor; with fcolor; {
# background = "#000000"; background = "#000000";
# foreground = "#dddddd"; # foreground = "#dddddd";
# accent = blue; # accent = blue;
# secondary = cyan; # secondary = cyan;
# tertiary = magenta; # tertiary = magenta;
# special = yellow; # special = yellow;
# weird = green; # weird = green;
subtle = { darker = "#111111"; dark = "#444444"; base = "#777777"; bright = "#999999"; brighter = "#cccccc"; };
positive = alter "#00dd00"; positive = alter "#00dd00";
negative = alter "#dd0000"; negative = alter "#dd0000";
border = accent.base; border = accent.base;
@@ -55,16 +40,17 @@ pkgs: 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"; # name = "NewComputerModern08";
# package = pkgs.newcomputermodern; # package = pkgs.newcomputermodern;
name = "Atkinson Hyperlegible"; name = "Atkinson Hyperlegible";
package = pkgs.atkinson-hyperlegible-next; package = pkgs.atkinson-hyperlegible;
}; };
}; };
cursor = { cursor = {

763
flake.lock generated

File diff suppressed because it is too large Load Diff

145
flake.nix
View File

@@ -2,140 +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.05"; 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 = { home-manager = { url = "github:nix-community/home-manager/release-25.05"; inputs.nixpkgs.follows = "nixpkgs"; };
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";
inputs.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 ={ hyprland = { url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; };
url = "github:Mic92/sops-nix"; hyprland-plugins = { url = "github:hyprwm/hyprland-plugins"; inputs.hyprland.follows = "hyprland"; };
inputs.nixpkgs.follows = "nixpkgs"; hyprswitch = { url = "github:h3rmt/hyprswitch/release"; };
};
lanzaboote.url = "github:nix-community/lanzaboote/v0.4.2"; yazi = { url = "github:sxyazi/yazi"; };
yazi-plugins = { url = "github:lordkekz/nix-yazi-plugins"; inputs.nixpkgs.follows = "nixpkgs"; };
hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; zen-browser = { url = "github:MarceColl/zen-browser-flake"; };
hyprland-plugins = { ghostty = { url = "github:ghostty-org/ghostty"; };
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
};
yazi.url = "github:sxyazi/yazi";
copyparty.url = "github:9001/copyparty";
}; };
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; };
config = { allowUnfreePredicate = pkg: builtins.elem (simple-pkgs.lib.getName pkg) (import ./flake-modules/allowed.nix).unfree; };
hyper-base = rec { hyper-base = rec {
system = "x86_64-linux"; inherit system;
user = "nx2"; user = "nx2";
domain = "nx2.site"; domain = "nx2.site";
home = "/home/${user}"; home = "/home/${user}/";
webroot = "/var/lib/hugo/nx2site/public";
}; };
get-pkgs = { host, system?system, nixpkgs?inputs.nixpkgs, version?"25.05" }: import nixpkgs { pkgs = import nixpkgs { inherit system config; } // {
inherit system config; unstable = import nixpkgs-unstable { inherit system config; };
overlays = [(final: prev: { latest = import nixpkgs-latest { inherit system config; };
unstable = import nixpkgs-unstable { inherit system config; }; version = "25.05";
latest = import nixpkgs-latest { inherit system config; };
inherit version;
})] ++ (if host == "NxACE" then [
copyparty.overlays.default
] else []);
}; };
nvidia-base = import ./flake-modules/nvidia.nix; nvidia-base = import ./flake-modules/nvidia.nix;
secrets = import ./git-crypt/secrets.nix; secrets = import ./git-crypt/secrets.nix;
rice = import ./flake-modules/rice.nix simple-pkgs; rice = import ./flake-modules/rice.nix pkgs;
in { in {
nixosConfigurations = let nixosConfigurations = let
make-nixos-system = host: nvidia-settings: nixpkgs.lib.nixosSystem { make-nixos-system = host: nvidia-settings: nixpkgs.lib.nixosSystem {
pkgs = get-pkgs { inherit host; }; inherit system;
modules = [ ./configuration.nix ]; modules = [ ./configuration.nix ];
specialArgs = let specialArgs = let
hyper = hyper-base // { inherit host; nvidia = (nvidia-base // nvidia-settings); }; hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
in { inherit inputs hyper rice secrets; }; in { inherit pkgs inputs hyper rice secrets; };
}; };
make-nixos-wsl-system = host: nixpkgs.lib.nixosSystem { make-nixos-wsl-system = host: nixpkgs.lib.nixosSystem {
pkgs = get-pkgs { inherit host; }; inherit system;
modules = [ ./wsl.nix ]; modules = [ ./nixos-wsl.nix ];
specialArgs = let specialArgs = let
hyper = hyper-base // { inherit host; }; hyper = hyper-base // { inherit host; };
rice = import ./flake-modules/rice.nix pkgs; in { inherit pkgs inputs hyper rice; };
in { inherit inputs hyper rice; }; };
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 {
NxXPS = make-nixos-system "NxXPS" { enable = true; prime = true; }; NxXPS = make-nixos-system "NxXPS" { enable = true; prime = true; };
NxNORTH = make-nixos-system "NxNORTH" { enable = true; prime = false; }; NxNORTH = make-nixos-system "NxNORTH" { enable = true; prime = false; };
NxACE = make-nixos-system "NxACE" { enable = false; }; NxACE = make-nixos-system "NxACE" { enable = false; };
NxDCS = make-nixos-wsl-system "NxDCS";
};
nixOnDroidConfigurations = let NxWSL = make-nixos-wsl-system "NxWSL";
makeNODConfiguration = host: nix-on-droid.lib.nixOnDroidConfiguration rec {
pkgs = let NxS23U = make-nixondroid-system "NxS23U";
options = { inherit host; system = "aarch64-linux"; }; };
in (get-pkgs options) //
(get-pkgs (options // { version = "24.05"; nixpkgs = nixpkgs24; } )
);
modules = [ ./nod.nix ];
home-manager-path = home-manager24.outPath;
extraSpecialArgs = let
hyper = hyper-base // {
inherit host;
system = "aarch64-linux";
user = "nix-on-droid";
home = "/data/data/com.termux.nix/files/home";
};
rice = import ./flake-modules/rice.nix pkgs;
in { inherit inputs hyper rice; };
};
in { NxS23U = makeNODConfiguration "NxS23U"; };
homeConfigurations = let homeConfigurations = let
make-home-configuration = host: user: nvidia-settings: home-manager.lib.homeManagerConfiguration { make-home-configuration = host: user: nvidia-settings: home-manager.lib.homeManagerConfiguration {
pkgs = get-pkgs { inherit host; }; inherit pkgs;
modules = [ ./home.nix ]; modules = [ ./home.nix ];
extraSpecialArgs = let extraSpecialArgs = let
hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; }; hyper = hyper-base // { inherit host; nvidia = nvidia-base // nvidia-settings; };
in { inherit inputs hyper rice secrets; }; in { inherit pkgs inputs hyper rice secrets; };
}; };
make-shell-configuration = host: user: home-manager.lib.homeManagerConfiguration { make-shell-configuration = host: user: home-manager.lib.homeManagerConfiguration {
pkgs = get-pkgs { inherit host; }; inherit pkgs;
modules = [ ./shell-only.nix ]; modules = [ ./shell-only.nix ];
extraSpecialArgs = let extraSpecialArgs = let
hyper = hyper-base // { inherit host; }; hyper = hyper-base // { inherit host; };
in { inherit inputs hyper rice secrets; }; in { inherit pkgs inputs hyper rice secrets; };
}; };
in { in {
"${hyper-base.user}@NxXPS" = make-home-configuration "NxXPS" hyper-base.user { enable = true; prime = true; }; "${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}@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}@NxACE" = make-home-configuration "NxACE" hyper-base.user { enable = false; };
"${hyper-base.user}@NxDCS" = make-shell-configuration "NxDCS" hyper-base.user; "${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,126 +0,0 @@
{ pkgs, ... }@all: with all; {
sops.secrets = {
"nx2site/radicale/password" = { };
};
home.packages = [
(pkgs.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, 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):
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
def is_expired(event_dict: dict):
now = datetime.now(timezone.utc).timestamp()
event_end = event_dict['event_end'].timestamp()
return not (now <= event_end)
if __name__ == "__main__":
password_file = "${config.sops.secrets."nx2site/radicale/password".path}" # Path to password file
cache_file = "/tmp/caldav_event_cache.json" # Path to cache file
url = "https://dav.${hyper.domain}/"
username = "nx2"
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)):
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}")
'')
];
}

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.05") {
profileExtra = init;
}; };
} }

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
bitwarden 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,4 +1,4 @@
{ pkgs, ... }@all: with all; let { pkgs, hyper, secrets, ... }: let
calendars = with hyper; [ calendars = with hyper; [
{ {
name = "Preservation"; name = "Preservation";
@@ -47,13 +47,6 @@
read-only = true; read-only = true;
type = "ics"; type = "ics";
} }
{
name = "Worlds";
url = "https://zlypher.github.io/lol-events/cal/league-of-legends-world-championship.ical";
color = "#A4C3DE";
read-only = true;
type = "ics";
}
{ {
name = "Feiertage Hessen"; name = "Feiertage Hessen";
url = "https://ics.tools/Feiertage/hessen.ics"; url = "https://ics.tools/Feiertage/hessen.ics";
@@ -61,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 =
@@ -85,7 +85,7 @@ in {
userName = hyper.user; # my globally set username 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
@@ -93,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;
@@ -106,7 +106,7 @@ in {
"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,4 +1,4 @@
{ pkgs, ... }@all: with all; { config, pkgs, rice, user, secrets, ... }:
let let
channels = [ channels = [
"Caedrel" "Caedrel"
@@ -6,10 +6,7 @@ let
# "asmongold" # "asmongold"
# "Caedrel" # "Caedrel"
# "EintrachtSpandau" # "EintrachtSpandau"
# "GamesDoneQuick" "GamesDoneQuick"
"Odoamne"
"iwdominate"
"imls"
"gdolphn" "gdolphn"
"GRONKH" "GRONKH"
"handofblood" "handofblood"
@@ -20,13 +17,13 @@ let
"lol_nemesis" "lol_nemesis"
# "NASA" # "NASA"
"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"
@@ -46,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; [
chatterino2 chatterino2
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 */ ''
@@ -77,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,
@@ -112,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" },
@@ -139,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" },
@@ -182,15 +169,14 @@ 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.3",
"lockNotebookLayout": false "lockNotebookLayout": false
}, },
@@ -207,7 +193,7 @@ in {
"external": { "external": {
"streamlink": { "streamlink": {
"quality": "", "quality": "",
"options": "--config ${hyper.home}/.config/streamlink/config" "options": "--config /home/${user}/.config/streamlink/config"
} }
} }
} }
@@ -329,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,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,12 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, rice, secrets, ... }:
lib.mkIf (hyper.host != "NxACE") pkgs.lib.mkIf (hyper.host != "NxACE")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
thunderbird thunderbird
]; ];
programs.thunderbird = let programs.thunderbird = let
inherit (lib.generators) toJSON; inherit (pkgs.lib.generators) toJSON;
extensions = toJSON {} { extensions = toJSON {} {
"addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d"; "addon@darkreader.org" = "71d6c69d-55f9-4c56-888c-abdcf6efd73d";
}; };
@@ -137,37 +137,37 @@ lib.mkIf (hyper.host != "NxACE")
}; };
}; };
# hsmw = with secrets.email.hsmw; { hsmw = with secrets.email.hsmw; {
# address = "${un}@hs-mittweida.de"; address = "${un}@hs-mittweida.de";
# userName = "${un}@hs-mittweida.de"; userName = "${un}@hs-mittweida.de";
# realName = "Lennart J. Kurzweg"; realName = "Lennart J. Kurzweg";
# imap = { imap = {
# port = 993; port = 993;
# host = "xc.hs-mittweida.de"; host = "xc.hs-mittweida.de";
# }; };
# smtp = { smtp = {
# port = 587; port = 587;
# host = "xc.hs-mittweida.de"; host = "xc.hs-mittweida.de";
# tls.useStartTls = true; tls.useStartTls = true;
# }; };
# signature = { signature = {
# text = '' text = ''
# MatNr: ${mnr} MatNr: ${mnr}
# SemGr: ${semgr} SemGr: ${semgr}
# About Me: https://nx2.site/about-me About Me: https://nx2.site/about-me
# Contact: https://nx2.site/contact Contact: https://nx2.site/contact
# GPG: https://nx2.site/gpg GPG: https://nx2.site/gpg
# ''; '';
# showSignature = "append"; showSignature = "append";
# }; };
# 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"; "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;

View File

@@ -1,12 +0,0 @@
{ pkgs, hyper, ... }:
{
home = {
packages = with pkgs; [
figlet
(pkgs.writeShellScriptBin "fgl" ''
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,92 +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 : linear-gradient(180deg,rgba(${f secondary.dark}, ${builtins.toString rice.transparency}) 0%, rgba(${f accent.dark}, ${builtins.toString rice.transparency}) 100%) !important;
}
.tabbrowser-tab[selected="true"] {
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,226 +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 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;
}
#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 {
}
}
@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,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 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/./\U&/') $(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' | sed 's/./\U&/') $(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 | sed 's/./\U&/') 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
@@ -105,7 +100,6 @@
rm -f -- "$tmp" rm -f -- "$tmp"
end end
nxfetch nxfetch
set -e SESSION_FROM_DE
end end
''; '';
functions = { functions = {
@@ -113,12 +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.host == "NxXPS" || hyper.host == "NxNORTH") ''
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}
'';
# gpg = ''; # gpg = '';
# set bold \e[1m # set bold \e[1m
# set green \e[32m # set green \e[32m

View File

@@ -1,9 +1,9 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, ... }:
lib.mkIf (hyper.host == "NxNORTH") pkgs.lib.mkIf (hyper.host == "NxNORTH")
{ {
home = { home = {
packages = (with pkgs.unstable; [ packages = (with pkgs.unstable; [
protonup-ng protonup
mangohud mangohud
prismlauncher prismlauncher

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,48 +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
background-opacity = builtins.toString rice.transparency; # clipboard-write=allow
clipboard-paste-protection = false; # clipboard-read=deny
clipboard-read = "allow"; # clipboard-write=deny
clipboard-trim-trailing-spaces = true; clipboard-trim-trailing-spaces=true
confirm-close-surface = false; clipboard-paste-protection=false
cursor-color = special.bright;
cursor-opacity = 0.8; window-decoration=false
font-family = "${rice.font.code.name}"; confirm-close-surface=false
foreground = foreground;
keybind = [ window-padding-x=5
"ctrl+comma=reload_config" window-padding-y=5
"ctrl+equal=increase_font_size:1"
"ctrl+minus=decrease_font_size:1" keybind=ctrl+comma=reload_config
"ctrl+shift+v=paste_from_clipboard" keybind=ctrl+equal=increase_font_size:1
]; keybind=ctrl+minus=decrease_font_size:1
palette = with rice; [ keybind=ctrl+shift+v=paste_from_clipboard
"0=${black.base}"
"8=${black.bright}" background=${background}
"1=${red.base}" foreground=${foreground}
"9=${red.bright}"
"2=${green.base}" background-opacity=${builtins.toString rice.transparency}
"10=${green.bright}"
"3=${yellow.base}" cursor-color=${special.bright}
"11=${yellow.bright}" cursor-opacity=0.8
"4=${blue.base}"
"12=${blue.bright}" palette=0=${black.base}
"5=${magenta.base}" palette=8=${black.bright}
"13=${magenta.bright}" palette=1=${red.base}
"6=${cyan.base}" palette=9=${red.bright}
"14=${cyan.bright}" palette=2=${green.base}
"7=${white.base}" palette=10=${green.bright}
"15=${white.bright}" palette=3=${yellow.base}
]; palette=11=${yellow.bright}
selection-background = accent.base; palette=4=${blue.base}
selection-foreground = background; palette=12=${blue.bright}
window-decoration = false; palette=5=${magenta.base}
window-padding-x = 5; palette=13=${magenta.bright}
window-padding-y = 5; palette=6=${cyan.base}
}; palette=14=${cyan.bright}
palette=7=${white.base}
palette=15=${white.bright}
selection-background=${accent.base}
selection-foreground=${background}
'';
}; };
} }

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
# (gimp-with-plugins.override { # (gimp-with-plugins.override {

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, rice, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
delta delta
@@ -21,17 +21,15 @@
}; };
extraConfig = { extraConfig = {
credential = { credential = {
"https://git.da.dicos.de".username = lib.mkIf (hyper.host =="NxDCS") "lkurzweg"; "https://git.da.dicos.de".username = pkgs.lib.mkIf (hyper.host =="NxWSL") "lkurzweg";
"https://git.da.dicos.de".password = lib.mkIf (hyper.host =="NxDCS") "Test"; "https://git.da.dicos.de".password = pkgs.lib.mkIf (hyper.host =="NxWSL") "Test";
}; };
url."ssh://git@git.da.dicos.de/".insteadOf = lib.mkIf (hyper.host =="NxDCS") "https://git.da.dicos.de/"; url."ssh://git@git.da.dicos.de/".insteadOf = pkgs.lib.mkIf (hyper.host =="NxWSL") "https://git.da.dicos.de/";
url."ssh://git@github.com/".insteadOf = "https://github.com/";
pull.rebase = false; # true pull.rebase = false; # true
}; };
}; };
programs.lazygit = { programs.lazygit = {
enable = true; enable = true;
package = pkgs.lazygit;
settings = { settings = {
windowSize = "normal"; windowSize = "normal";
gui.theme = with rice.color; { gui.theme = with rice.color; {

View File

@@ -1,36 +1,17 @@
{ pkgs, ... }@all: with all; { { pkgs, ... }:
home.packages = with pkgs; [ pinentry-all ]; {
programs.gpg = { # there also is a system module
enable = true; home.packages = with pkgs; [
package = pkgs.gnupg; gnupg
homedir = "${hyper.home}/vault/gnupg"; gpg-tui
settings = { pinentry-all
armor = true; ];
cert-digest-algo = "SHA512";
charset = "utf-8"; # services.pcscd.enable = true;
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
@@ -39,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
@@ -177,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
@@ -190,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-i" = [ ":pipe fgl" "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" ]; };
@@ -204,18 +207,18 @@
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 = [ "language-tool" "tinymist" ];
}
{ {
name = "markdown"; name = "markdown";
# language-servers = [ "marksman" "style-check" "language-tool" ];
language-servers = [ "language-tool" "marksman" ]; language-servers = [ "language-tool" "marksman" ];
file-types = [ "md" "MD" ]; file-types = [ "md" "MD" ];
scope = "text.<name>"; scope = "text.<name>";
@@ -268,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";
@@ -284,7 +287,7 @@
]; ];
}; };
"llm" = { "llm" = {
command = lib.getExe pkgs.helix-gpt; command = pkgs.lib.getExe pkgs.helix-gpt;
args = [ args = [
"--handler" "--handler"
"ollama" "ollama"
@@ -435,8 +438,8 @@
fg = black.bright; 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;

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,33 +1,82 @@
{ 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 = {
main = { name = "eDP-1"; resolution = "1920x1200"; position = "1920x1080"; scale = "1.0"; }; main = if docked then {
second = { name = "desc:Sony SONY TV 0x01010101"; resolution = "1920x1080"; position = "1920x0"; scale = "1.0"; }; name = "DP-5";
third = { name = "DP-6"; resolution = "1920x1080"; position = "0x0"; scale = "1.0"; }; resolution = "1920x1080";
position = "1920x0";
scale = "1.0";
} else {
name = "eDP-1";
resolution = "1920x1200";
position = "0x1080";
scale = "1.0";
};
second = if docked then {
name = "DP-6";
resolution = "1920x1080";
position = "0x0";
scale = "1.0";
} else {
name = "DP-3";
resolution = "1920x1080";
position = "0x0";
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; [
xdg-desktop-portal-hyprland # hyprland itself is a system package
hyprland-protocols hyprland-protocols
hyprlock hyprlock
hypridle hypridle
hyprshot
hyprpicker hyprpicker
hyprcursor hyprcursor
grim grim
slurp slurp
];
# ]) ++ (with pkgs-unstable; [
]) ++ (with inputs; [
hyprswitch.packages.x86_64-linux.default
]);
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
@@ -41,8 +90,7 @@ in {
# inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo # inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo
# inputs.hyprfocus.packages.${pkgs.system}.hyprfocus # inputs.hyprfocus.packages.${pkgs.system}.hyprfocus
# inputs.hycov.packages.${pkgs.system}.hycov # inputs.hycov.packages.${pkgs.system}.hycov
# pkgs.hyprlandPlugins.hyprspace # inputs.Hyprspace.packages.${pkgs.system}.Hyprspace
# inputs.hyprspace.packages.${pkgs.system}.Hyprspace
]; ];
settings = { settings = {
@@ -50,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}"
@@ -62,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 [
@@ -86,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}"
@@ -161,7 +208,7 @@ in {
blur = { blur = {
enabled = true; enabled = true;
size = "10"; size = "3";
passes = "2"; passes = "2";
xray = false; xray = false;
vibrancy = 0.5; vibrancy = 0.5;
@@ -171,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"
@@ -217,6 +263,7 @@ in {
"/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"
@@ -224,69 +271,73 @@ in {
]; ];
windowrulev2 = [ windowrulev2 = [
"bordercolor rgba(${rice.lib.nohash rice.color.special.bright}ff), pinned:1" "bordercolor rgba(${rice.lib.nohash rice.color.magenta.bright}ff), pinned:1"
"noanim, class:^(presenter)$" # sent
"float, class:^(presenter)$" # sent
"noanim, class:^(imv)$"
"float, class:^(imv)$"
"fullscreen, class:^(imv)$"
# "float, initialTitle:^(Edit Item)$" # thunderbid calendar
# "dimaround on, initialTitle:^(Edit Item)$" # thunderbid calendar
"float,class:^(thunderbird)$"
# "float,class:^(thunderbird)$,title:^(.*)(Reminder)(.*)$"
# "float,class:^(thunderbird)$,title:^About(.*)$"
# "float,class:^(thunderbird)$,title:^(Check Spelling)$"
"center 1,class:^(gimp)$"
] ++ [
"bordersize 0, floating:0, onworkspace:w[tv1]" "bordersize 0, floating:0, onworkspace:w[tv1]"
"rounding 0, floating:0, onworkspace:w[tv1]" "rounding 0, floating:0, onworkspace:w[tv1]"
"bordersize 0, floating:0, onworkspace:f[1]" "bordersize 0, floating:0, onworkspace:f[1]"
"rounding 0, floating:0, onworkspace:f[1]" "rounding 0, floating:0, onworkspace:f[1]"
] ++ [
"center 1,class:^(gimp)$"
"float, class:^(ibus-ui.*)$" # "opacity ${transparency}, firefox"
"float, class:^(ibus-ui-gtk3)$"
"float, class:^(imv)$"
"float, class:^(org.kde.polkit-kde-authentication-agent-1)$"
"float, class:^(presenter)$" # sent
"float, class:^(thunderbird)$"
"float, title:^(Compact folders)$"
"float, title:^(Ibus-ui.*)$"
"float, title:^(Ibus-ui-gtk3)$"
"float, title:^(Page Info .*)$"
"float, title:^(Picture-in-Picture)$"
"float, title:^(wlogout)$"
"fullscreen, class:^(imv)$"
"fullscreen, class:^(sent)$"
"fullscreen, class:^(wlogout)$"
"noanim, class:^(imv)$"
"noanim, class:^(presenter)$" # sent
"opacity ${transparency}, class:^(Code)$"
"opacity ${transparency}, class:^(code-oss)$" "opacity ${transparency}, class:^(code-oss)$"
"opacity ${transparency}, class:^(discord)$"
# "opacity ${transparency}, class:^(vesktop)$"
# "opacity ${transparency}, class:^(Element)$"
"opacity ${transparency}, class:^(lutris)$"
"opacity ${transparency}, class:^(neovide)$"
# "opacity ${transparency}, class:^(obsidian)$"
"opacity ${transparency}, class:^(VSCodium)$" "opacity ${transparency}, class:^(VSCodium)$"
"opacity ${transparency}, class:^(Code)$"
# "opacity ${transparency}, sent"
"opacity ${transparency}, class:^(neovide)$"
"opacity ${transparency}, class:^(obsidian)$"
# "opacity ${transparency}, zathura"
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), Alacritty"
# "bordercolor rgba(${rice.lib.nohash rice.color.foreground}ff) rgba(${rice.lib.nohash rice.color.background}${rice.lib.float-to-drune rice.transparency}), ${terminal}"
"opacity ${transparency}, class:^(discord)$"
"opacity ${transparency}, class:^(vesktop)$"
"opacity ${transparency}, class:^(Element)$"
"opacity ${transparency}, class:^(lutris)$"
"opacity ${transparency}, class:^(element)$"
# "opacity ${transparency}, ^([sS]potify)$"
# "opacity ${transparency}, virt-manager"
# "opacity ${transparency}, thunar"
"opacity ${transparency}, title:^(wlogout)$" "opacity ${transparency}, title:^(wlogout)$"
"opaque, title:^(GNU Image Manipulation Program)$" "opaque, title:^(GNU Image Manipulation Program)$"
"opaque, fullscreen:1" "float, title:^(Picture-in-Picture)$"
# "float, class:^(Ibus-ui.*)$"
# "float, ^(ibus-ui.*)$"
# "float, ^(ibus-ui-gtk3)$"
"float, title:^(Ibus-ui-gtk3)$"
"pin, title:^(Picture-in-Picture)$" "pin, title:^(Picture-in-Picture)$"
"float, class:^(org.kde.polkit-kde-authentication-agent-1)$"
"float, title:^(wlogout)$"
"float, class:^(imv)$"
"float, title:^(Page Info .*)$"
"float, title:^(Compact folders)$"
"tile, class:^(sent)$" "tile, class:^(sent)$"
"fullscreen, class:^(wlogout)$"
"fullscreen, class:^(sent)$"
"workspace 14, class:^(lutris)$"
"workspace 100, title:^(Apex Legends)$"
# "workspace 100, ^(cyberpunk2077.exe)$"
"workspace 100, title:^(No Man.s Sky)$"
"workspace 100, class:^(gamescope)$" "workspace 100, class:^(gamescope)$"
"float, title:^(terminal-file-picker)$"
"dimaround, title:^(terminal-file-picker)$"
"center, title:^(terminal-file-picker)$"
"size 80% 80%, title:^(terminal-file-picker)$"
"size: 30% 30%, initialTitle:^(Select Calendar)$"
]; ];
layerrule = [ layerrule = [
"blur,waybar" "blur,waybar"
"blur,bar-0" # hyprpanel
"blur,bar-1"
"blur,bar-2"
"blur,bar-3"
"blur,bar-4"
"dimaround,rofi" "dimaround,rofi"
"blur,rofi" "blur,rofi"
"xray,rofi" "xray,rofi"
@@ -303,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"
@@ -353,15 +405,15 @@ 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"
"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, 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""
@@ -372,7 +424,7 @@ in {
"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, +,"
@@ -382,11 +434,10 @@ 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," # "SUPER, G,"
"SUPER, H, movefocus, l" "SUPER, H, movefocus, l"
@@ -401,14 +452,14 @@ 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, 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, comma, exec, /home/nx2/scripts/change-language.sh" # "SUPER, comma, exec, /home/nx2/scripts/change-language.sh"
@@ -420,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, , "
@@ -440,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
@@ -479,39 +528,6 @@ in {
"SUPER, Next, resizeactive, 10% 10%" "SUPER, Next, resizeactive, 10% 10%"
"SUPER, Prior, resizeactive, -10% -10%" "SUPER, Prior, resizeactive, -10% -10%"
]; ];
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;
};
};
}; };
@@ -524,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
''; '';
@@ -558,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
@@ -594,17 +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 = "R"; cmd = ''exec,hyprshot -m region''; }}
bind = , Escape, execr, submap_indicator unset
bind = , Escape, submap, reset
submap = reset
''; '';
}; };
@@ -682,7 +691,7 @@ in {
valign = bottom valign = bottom
} }
''; '';
}; };
} }

View File

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

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,80 +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
];
bindings = {
"O" = ''no-osd cycle-values glsl-shaders "~~/shaders/invert.glsl" ""; show-text "Invert Shader"'';
# "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,11 +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 */ ''
@@ -59,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,29 +0,0 @@
{ pkgs, ... }@all: with all; {
home = {
packages = with pkgs; [
opencode
];
file.".config/opencode/opencode.json".text = let
model = "qwen2.5-coder:7b";
in builtins.toJSON {
"$schema" = "https://opencode.ai/config.json";
model = "ollama/${model}";
theme = "matrix";
provider = {
ollama = {
name = "Ollama (local)";
npm = "@ai-sdk/openai-compatible";
options = {
baseURL = "http://localhost:11434/v1";
};
models = {
"${model}" = {
tools = true;
};
};
};
};
};
};
}

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,18 +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
];
}

View File

@@ -1,20 +0,0 @@
{ pkgs, hyper, ... }: {
home.packages = with pkgs; [
chromium
gnome-clocks
gnome-calculator
gnome-characters
gnome-2048
element-desktop
qbittorrent
wl-clipboard
xfce.thunar
] ++ (if (hyper.host != "NxACE") then [
signal-desktop
unstable.code-cursor-fhs
obsidian
zoom-us
inkscape
audacity
] else []);
}

View File

@@ -1,17 +1,16 @@
{ pkgs, ... }@all: with all; { { pkgs, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
bat bat
browsh
cmake cmake
cmatrix
dig dig
du-dust du-dust
dysk
exiftool exiftool
eza eza
ffmpeg ffmpeg
figlet figlet
fzf fzf
gh
glib glib
glow glow
gnumake gnumake
@@ -21,8 +20,8 @@
lolcat lolcat
lynx lynx
mediainfo mediainfo
mpv
neofetch neofetch
pastel
pdfgrep pdfgrep
pipes pipes
pv pv
@@ -34,7 +33,6 @@
systemctl-tui systemctl-tui
tldr tldr
w3m w3m
which
yt-dlp 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,5 +1,5 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, ... }:
lib.mkIf (hyper.host != "NxACE") pkgs.lib.mkIf (hyper.host != "NxACE")
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
erlang erlang

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; [
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,20 +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
google google-api-python-client google-auth-httplib2 google-auth-oauthlib
debugpy debugpy
black black
]); ]);
in { in {
packages = [ packages = [
python-with-packages python-with-packages
] ++ (with pkgs; [ ];
python311Packages.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,11 +0,0 @@
{ pkgs, ... }@all: with all; {
home = {
packages = with pkgs; [
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,5 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, rice, ... }: {
{
home.packages = with pkgs; [ home.packages = with pkgs; [
rofi-wayland rofi-wayland
]; ];

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,56 +0,0 @@
{ pkgs, ... }@all: with all;
{
home.packages = with pkgs; [
unstable.spotify
];
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 = secondary.base; };
selection = { bg = accent.dark; };
table_header = { fg = tertiary.bright; };
# playback_progress_bar_unfilled (Specific to progress_bar_type as Line) = "";
};
}];
};
}

View File

@@ -1,37 +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 = ''
addKeysToAgent = "yes"; HOST nxace
matchBlocks = let HostName ssh.${hyper.domain}
nxace = name: { User ${hyper.user}
host = name; Port 50022
hostname = "ssh.${hyper.domain}";
user = "nx2"; HOST nxacel
port = 50022; HostName 10.0.1.1
identityFile = "${hyper.home}/vault/ssh/nxace-nx2-${hyper.host}"; User ${hyper.user}
}; Port 50022
in {
"*".identityFile = [ HOST nxrpil
"${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}" HostName 10.0.1.31
"${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}" User ${hyper.user}
"${hyper.home}/vault/ssh/tg-dm-informatik-tuda" Port 22
];
"github.com".identityFile = [ "${hyper.home}/vault/ssh/github-noggynoggy-${hyper.host}" ]; HOST nxgit
"nxace" = nxace "nxace"; HostName ssh.${hyper.domain}
"nxacel" = (nxace "nxacel") // { hostname = "10.0.1.1"; }; User git
"nxrpli" = (nxace "nxrpil") // { hostname = "10.0.1.31"; port = 22; }; Port 50022
"nxgit" = (nxace "nxgit") // { '';
user = "git";
identityFile = "${hyper.home}/vault/ssh/nxgit-nx2-${hyper.host}";
# addKeysToAgent = "1h";
};
};
};
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,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,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
(writers.writePython3Bin "change_colors_json" { (writers.writePython3Bin "change_colors_json" {
@@ -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,7 +139,7 @@
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)
d = { d = {
"base": { "base": {

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, ... }:
nox-var = (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,11 +34,10 @@ in {
{ on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; } { on = "<C-f>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
{ on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; } { on = "<PageUp>"; run = "arrow -100%"; desc = "Move cursor up one page"; }
{ on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; } { on = "<PageDown>"; run = "arrow 100%"; desc = "Move cursor down one page"; }
{ on = [ "g" "g" ]; run = "arrow top"; desc = "Move cursor to the top"; } { on = [ "g" "g" ]; run = "arrow down"; desc = "Move cursor to the top"; }
{ on = [ "g" "e" ]; run = "arrow bot"; desc = "Move cursor to the end"; } { on = [ "g" "e" ]; run = "arrow up"; desc = "Move cursor to the end"; }
{ on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; } { on = [ "g" "h" ]; run = "cd ~"; desc = "Go to the home directory"; }
{ on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; } { on = [ "g" "n" ]; run = "cd ~/nix-dots"; desc = "Go to the Nix-Dotfiles directory"; }
(pkgs.lib.mkIf (hyper.host == "NxACE") { on = [ "g" "s" ]; run = "cd /var/lib/hugo/nx2site"; desc = "Go to the Hugo Nx2.Site directory"; })
{ on = [ "g" "n" ]; run = "cd /nix/store"; desc = "Go to the Nix-Store"; } { on = [ "g" "n" ]; run = "cd /nix/store"; desc = "Go to the Nix-Store"; }
{ on = [ "g" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; } { on = [ "g" "c" ]; run = "cd ~/.config"; desc = "Go to the config directory"; }
{ on = [ "g" "l" ]; run = "cd ~/.locale"; desc = "Go to the .locale directory"; } { on = [ "g" "l" ]; run = "cd ~/.locale"; desc = "Go to the .locale directory"; }
@@ -45,7 +48,6 @@ in {
{ on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; } { on = [ "g" "d" ]; run = "cd ~/Downloads"; desc = "Go to the downloads directory"; }
{ on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; } { on = [ "g" "D" ]; run = "cd ~/Documents"; desc = "Go to the Documents directory"; }
{ on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; } { on = [ "g" "r" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
{ on = [ "g" "p" ]; run = "cd ~/projects"; desc = "Go to the projects directory"; }
{ on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; } { on = [ "g" "/" ]; run = "cd /"; desc = "Go to the root (/) directory"; }
{ on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; } { on = [ "g" "<Space>" ]; run = "cd --interactive"; desc = "Go to a directory interactively"; }
# Navigation # Navigation
@@ -70,8 +72,6 @@ in {
{ on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; } { on = "O"; run = "open --interactive"; desc = "Open selected files interactively"; }
{ on = "<Enter>"; run = "open"; desc = "Open selected files"; } { on = "<Enter>"; run = "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 "; }
@@ -159,7 +159,7 @@ in {
{ 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"; }
# Tasks # Tasks
{ on = "w"; run = "tasks:show"; desc = "Show Task View"; } { on = "w"; run = "tasks_show"; desc = "Show task manager"; }
]; ];
tasks.keymap = [ tasks.keymap = [
# Task # Task
@@ -181,7 +181,7 @@ in {
]; ];
}; };
settings = { settings = {
mgr = { manager = {
layout = [2 3 4]; layout = [2 3 4];
sort_by = "natural"; sort_by = "natural";
sort_sensitive = true; sort_sensitive = true;
@@ -293,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; };
@@ -308,12 +308,6 @@ 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 =
# sep_outer =
};
status = { status = {
separator_open = " "; #""; separator_open = " "; #"";
separator_close = " "; #""; separator_close = " "; #"";
@@ -381,56 +375,5 @@ in {
]; ];
}; };
}; };
} // (if nox-var 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)
'';
plugins = with pkgs; {
inherit glow git;
};
} 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=last
'';
};
portal = {
enable = true;
xdgOpenUsePortal = true;
config.common."org.freedesktop.impl.portal.FileChooser" = "termfilechooser";
extraPortals = [ tfc ] ++ (with pkgs; [
xdg-desktop-portal-hyprland
xdg-desktop-portal
xdg-desktop-portal-gnome
xdg-desktop-portal-gtk
xdg-desktop-portal-hyprland
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)";

127
home.nix
View File

@@ -1,18 +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/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
@@ -28,7 +26,7 @@
./home-modules/latex.nix ./home-modules/latex.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
@@ -36,41 +34,132 @@
./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/pkgs-list/programs.nix
./home-modules/pkgs-list/shell.nix
./home-modules/pnx.nix ./home-modules/pnx.nix
./home-modules/programming.nix ./home-modules/programming/c.nix
./home-modules/programming/gleam.nix
./home-modules/programming/go.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/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.host == "NxACE") 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.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; };
};
}

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }@all: with all; { { pkgs, hyper, ... }:
{
imports = [ imports = [
./home-modules/bash.nix ./home-modules/bash.nix
./home-modules/color-pallete.nix ./home-modules/color-pallete.nix
@@ -12,7 +13,7 @@
./home-modules/nixd.nix ./home-modules/nixd.nix
./home-modules/nxgs.nix ./home-modules/nxgs.nix
./home-modules/pandoc.nix ./home-modules/pandoc.nix
# ./home-modules/programming/c.nix ./home-modules/programming/c.nix
./home-modules/programming/gleam.nix ./home-modules/programming/gleam.nix
./home-modules/programming/go.nix ./home-modules/programming/go.nix
./home-modules/programming/java.nix ./home-modules/programming/java.nix
@@ -27,11 +28,10 @@
./home-modules/pkgs-list/shell.nix ./home-modules/pkgs-list/shell.nix
]; ];
home = { home.username = hyper.user;
username = hyper.user; # home.homeDirectory = hyper.home; # for some reason you cant use hyper.home here
homeDirectory = hyper.home; home.homeDirectory = "/home/${hyper.user}";
stateVersion = pkgs.version; home.stateVersion = pkgs.version;
};
xdg = { xdg = {
enable = true; enable = true;
configHome = "${hyper.home}/.config"; configHome = "${hyper.home}/.config";

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, hyper, lib, ... }:
lib.mkIf (hyper.host != "NxACE") lib.mkIf (hyper.host != "NxACE")
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [

View File

@@ -1,18 +0,0 @@
pkgs: with pkgs; [
busybox
# coreutils-full
gitFull
git-crypt
wget
curlHTTP3
zip
unzip
p7zip
unar
vim
htop
openssl
dmidecode
file
]

View File

@@ -1,10 +0,0 @@
{ pkgs, ... }@all: with all; {
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;
}

View File

@@ -1,4 +1,5 @@
{ pkgs, ... }@all: with all; let { config, pkgs, hyper, inputs, ... }:
let
grub-theme-ascii-diana = (pkgs.fetchFromGitea { grub-theme-ascii-diana = (pkgs.fetchFromGitea {
domain = "git.${hyper.domain}"; domain = "git.${hyper.domain}";
owner = "nx2"; owner = "nx2";
@@ -6,65 +7,118 @@
rev = "0.5.0"; rev = "0.5.0";
hash = "sha256-e+55NYsSsWY6GPbYUtdVEB9krueuCAWT3Ce/Ghops1g="; hash = "sha256-e+55NYsSsWY6GPbYUtdVEB9krueuCAWT3Ce/Ghops1g=";
}); });
device-boot = if hyper.host == "NxNORTH" then { in
kernelPackages = pkgs.linuxPackages_zen; {
kernelParams = [
"fbcon=margin:1"
"fbcon=nodefer"
];
lanzaboote = {
enable = true;
pkiBundle = "/var/lib/sbctl";
};
loader.systemd-boot = {
enable = false; # let lanzaboote install systemd-boot
consoleMode = "max";
configurationLimit = 10;
};
} else if hyper.host == "NxXPS" then {
kernelPackages = pkgs.linuxPackages;
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
kernelModules = [ "v4l2loopback" ];
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS VCam" exclusive_caps=1'';
loader = {
efi.canTouchEfiVariables = true;
grub = {
enable = true;
configurationLimit = 30;
device = "nodev";
# useOSProber = true;
efiSupport = true;
theme = grub-theme-ascii-diana;
font = "${grub-theme-ascii-diana}/unicode.pf2";
fontSize = 50;
extraEntries = ''
menuentry 'Windows 11' --class windows --class os $menuentry_id_option 'osprober-efi-0A97-7A2D' {
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 0A97-7A2D
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
'';
};
};
} else if hyper.host == "NxACE" then {
kernelPackages = pkgs.linuxPackages_6_12;
loader = {
efi.canTouchEfiVariables = true;
grub = {
enable = true;
device = "nodev";
devices = [];
efiSupport = true;
};
};
} else assert 1 == "Unknown host"; {};
in {
imports = if hyper.host == "NxNORTH" then [ imports = if hyper.host == "NxNORTH" then [
inputs.lanzaboote.nixosModules.lanzaboote inputs.lanzaboote.nixosModules.lanzaboote
] else []; ] else [];
config = { config = if hyper.host == "NxNORTH" then {
environment.systemPackages = with pkgs; lib.mkIf ( host == "NxNORTH" ) [ sbctl ]; # I have to boot with secureboot becasue of the chinese spyware called Vanguard
boot = { tmp.useTmpfs = false; } // device-boot;
environment.systemPackages = with pkgs; [ sbctl ];
boot = {
lanzaboote = let
windows-efi-shell-fs-alias = "HD0a65535a2";
in {
enable = true;
pkiBundle = "/etc/secureboot";
package = pkgs.lib.mkForce (pkgs.writeShellApplication {
name = "lzbt";
runtimeInputs = [
inputs.lanzaboote.packages.x86_64-linux.tool
pkgs.coreutils
pkgs.sbctl
];
# https://forum.endeavouros.com/t/tutorial-add-a-systemd-boot-loader-menu-entry-for-a-windows-installation-using-a-separate-esp-partition/37431
text = /*bash*/ ''
# execute normal lanazboote functionality
lzbt "$@"
# Create windows.nsh file
ESP='${config.boot.loader.efi.efiSysMountPoint}'
echo "${windows-efi-shell-fs-alias}:EFI\Microsoft\Boot\Bootmgfw.efi" > "$ESP/windows.nsh"
# cp efi-shell boot file
# systemd-boot will automatically add an entry for it
cp -f '${pkgs.edk2-uefi-shell.efi}' "$ESP/shellx64.efi"
# should exist already
mkdir -p "$ESP/loader/entries"
# sign shell file
sbctl sign -s "$ESP/shellx64.efi"
# Create windows.conf boot entry
cat << EOF > "$ESP/loader/entries/windows.conf"
title Windows-Hack
efi /shellx64.efi
options -nointerrupt -noconsolein -noconsoleout windows.nsh
EOF
'';
});
};
loader.systemd-boot = {
enable = false; # let lanzaboote install systemd-boot
consoleMode = "max";
configurationLimit = 10;
# extraEntries = {
# "Windo7s-11.conf" = ''
# Windows eleven
# search --file --no-floppy --set=root /EFI/Microsoft/Boot/bootmgfw.efi
# chainloader (''${root})/EFI/Microsoft/Boot/bootmgfw.efi
# '';
# "Firmware.conf" = ''
# Firmware
# fwsetup
# '';
# "Shutdown.conf" = ''
# title Shutdown
# halt
# '';
# };
};
kernelPackages = pkgs.linuxPackages_zen;
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
kernelModules = [ "v4l2loopback" ];
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1'';
};
security.polkit.enable = true;
} else if hyper.host == "NxXPS" then {
boot = {
loader = {
efi.canTouchEfiVariables = true;
grub = {
enable = true;
configurationLimit = 30;
device = "nodev";
# useOSProber = true;
efiSupport = true;
theme = grub-theme-ascii-diana;
font = "${grub-theme-ascii-diana}/unicode.pf2";
fontSize = 50;
extraEntries = ''
menuentry 'Windows 11' --class windows --class os $menuentry_id_option 'osprober-efi-0A97-7A2D' {
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 0A97-7A2D
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
'';
};
};
kernelPackages = pkgs.linuxPackages_latest;
extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
kernelModules = [ "v4l2loopback" ];
extraModprobeConfig = ''options v4l2loopback devices=1 video_nr=1 card_label="OBS VCam" exclusive_caps=1'';
};
} else { # NxACE
boot = {
loader = {
efi.canTouchEfiVariables = true;
grub = {
enable = true;
device = "nodev";
efiSupport = true;
};
};
kernelPackages = pkgs.linuxPackages_6_12;
};
}; };
} }

View File

@@ -1,11 +0,0 @@
{ ... }: {
nix.settings = {
substitute = true;
substituters = [
"https://yazi.cachix.org"
];
trusted-public-keys = [
"yazi.cachix.org-1:Dcdz63NZKfvUCbDGngQDAZq6kOroIrFoyO064uvLh8k="
];
};
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }@all: with all; { pkgs, ... }:
{ {
systemd.timers."nx_cal_dicos" = { systemd.timers."nx_cal_dicos" = {
enable = true; enable = true;

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