feat: hyprland improvements, terraform email

This commit is contained in:
Kat Inskip 2025-12-18 15:30:52 -08:00
parent 4759970fe8
commit c7c485f955
20 changed files with 205 additions and 100 deletions

21
flake.lock generated
View file

@ -1803,6 +1803,26 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-unfree": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1755249704,
"narHash": "sha256-J1mqsd/gqZ32G3YOzWk9sppLbXXLEpu37hrZfRcTtdg=",
"owner": "numtide",
"repo": "nixpkgs-unfree",
"rev": "12d82a604d21a65df008bdb1515eecb96f9e55dc",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "nixpkgs-unfree",
"type": "github"
}
},
"nixpkgs-xr": { "nixpkgs-xr": {
"inputs": { "inputs": {
"flake-compat": [ "flake-compat": [
@ -2233,6 +2253,7 @@
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_4",
"nixpkgs-lib": "nixpkgs-lib_2", "nixpkgs-lib": "nixpkgs-lib_2",
"nixpkgs-unfree": "nixpkgs-unfree",
"nixpkgs-xr": "nixpkgs-xr", "nixpkgs-xr": "nixpkgs-xr",
"nixvim": "nixvim", "nixvim": "nixvim",
"noctalia": "noctalia", "noctalia": "noctalia",

View file

@ -117,6 +117,10 @@
url = "github:nixos/nixpkgs/nixos-unstable"; url = "github:nixos/nixpkgs/nixos-unstable";
#inputs.nixpkgs.follows = "chaotic/nixpkgs"; #inputs.nixpkgs.follows = "chaotic/nixpkgs";
}; };
nixpkgs-unfree = {
url = "github:numtide/nixpkgs-unfree";
inputs.nixpkgs.follows = "nixpkgs";
};
qml-niri = { qml-niri = {
url = "github:juuyokka/qml-niri/feat-nix-flake"; url = "github:juuyokka/qml-niri/feat-nix-flake";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";

View file

@ -125,8 +125,9 @@
in [ in [
"$mod, ${ws}, workspace, ${toString (x + 1)}" "$mod, ${ws}, workspace, ${toString (x + 1)}"
"$mod SHIFT, ${ws}, hy3:movetoworkspace, ${toString (x + 1)}" "$mod SHIFT, ${ws}, hy3:movetoworkspace, ${toString (x + 1)}"
"$mod, F${ws}, workspace, ${toString (x + 11)}" # using F keys was confusing, as was using mod+alt, so now we use Alt instead of Super
"$mod SHIFT, F${ws}, hy3:movetoworkspace, ${toString (x + 11)}" "ALT, ${ws}, workspace, ${toString (x + 11)}"
"ALT SHIFT, F${ws}, hy3:movetoworkspace, ${toString (x + 11)}"
] ]
) )
10) 10)

View file

@ -44,8 +44,11 @@ in {
"CLUTTER_BACKEND,wayland" "CLUTTER_BACKEND,wayland"
]; ];
render = { render = {
direct_scanout = true; #direct_scanout = true;
new_render_scheduling = true; #new_render_scheduling = true;
};
misc = {
vfr = true;
}; };
#debug.disable_logs = false; #debug.disable_logs = false;
exec-once = [ exec-once = [

View file

@ -2,14 +2,14 @@
inherit (std) list; inherit (std) list;
in { in {
wayland.windowManager.hyprland.settings.workspace = let wayland.windowManager.hyprland.settings.workspace = let
commonOptions = "gapsin:0,gapsout:0,rounding:false"; commonOptions = "gapsin:5,gapsout:5,rounding:true,persistent:true";
in in
["1,monitor:DP-1,default:true,${commonOptions}"] ["1,default:true,${commonOptions}"]
++ (list.map ( ++ (list.map (
workspace: "${toString workspace},monitor:DP-1${commonOptions}" workspace: "${toString workspace},${commonOptions}"
) (list.range 2 10)) ) (list.range 2 10))
++ ["11,monitor:HDMI-A-1,default:true"] ++ ["11,${commonOptions}"]
++ (list.map ( ++ (list.map (
workspace: "${toString workspace},monitor:HDMI-A-1${commonOptions}" workspace: "${toString workspace},${commonOptions}"
) (list.range 12 20)); ) (list.range 12 20));
} }

View file

@ -29,6 +29,8 @@ in {
{ {
id = "Workspace"; id = "Workspace";
labelMode = "label"; labelMode = "label";
hideUnoccupied = false;
showLabelsOnlyWhenOccupied = false;
#characterCount = 10; #characterCount = 10;
} }
{ {
@ -37,15 +39,10 @@ in {
} }
]; ];
center = [ center = [
];
right = [
{
id = "Tray";
}
{ {
id = "MediaMini"; id = "MediaMini";
showAlbumArt = true; showAlbumArt = true;
showVisualizer = true; showVisualizer = false;
scrollingMode = "always"; scrollingMode = "always";
autoHide = true; autoHide = true;
# check if this works, # check if this works,
@ -53,16 +50,8 @@ in {
widgetWidth = 300; widgetWidth = 300;
} }
{ {
id = "NotificationHistory"; id = "Clock";
} formatHorizontal = "yyyy-MM-dd HH:mm t";
{
id = "Battery";
}
{
id = "Volume";
}
{
id = "Brightness";
} }
{ {
id = "NightLight"; id = "NightLight";
@ -76,9 +65,22 @@ in {
{ {
id = "ScreenRecorder"; id = "ScreenRecorder";
} }
];
right = [
{ {
id = "Clock"; id = "Tray";
formatHorizontal = "yyyy-MM-dd HH:mm t"; }
{
id = "NotificationHistory";
}
{
id = "Battery";
}
{
id = "Volume";
}
{
id = "Brightness";
} }
{ {
id = "ControlCenter"; id = "ControlCenter";

View file

@ -10,13 +10,6 @@
#portalPackage = inputs.hyprland.packages."${pkgs.system}".xdg-desktop-portal-hyprland; #portalPackage = inputs.hyprland.packages."${pkgs.system}".xdg-desktop-portal-hyprland;
}; };
# auto launch hyprland on tty1
environment.loginShellInit = ''
if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = 1 ] && uwsm check may-start; then
exec uwsm start hyprland-uwsm.desktop
fi
'';
services = { services = {
noctalia-shell.enable = true; noctalia-shell.enable = true;
clipboard-sync.enable = true; clipboard-sync.enable = true;

View file

@ -1,16 +0,0 @@
{
config,
lib,
...
}: let
inherit (lib.modules) mkForce;
in {
programs.regreet = {
enable = true;
theme = mkForce config.home-manager.users.kat.gtk.theme;
};
stylix.targets.regreet.enable = true;
services.greetd = {
enable = true;
};
}

View file

@ -10,5 +10,4 @@
enable = true; enable = true;
package = pkgs.niri-unstable; package = pkgs.niri-unstable;
}; };
services.noctalia-shell.enable = true;
} }

View file

@ -1,6 +1,7 @@
{ {
pkgs, pkgs,
lib, lib,
inputs,
... ...
}: let }: let
inherit (lib.lists) singleton; inherit (lib.lists) singleton;
@ -33,8 +34,8 @@ in {
U_PACING_APP_IMMEDIATE_WAIT_FRAME_RETURN="1"; U_PACING_APP_IMMEDIATE_WAIT_FRAME_RETURN="1";
XRT_COMPOSITOR_FORCE_WAYLAND_DIRECT = "1"; XRT_COMPOSITOR_FORCE_WAYLAND_DIRECT = "1";
}; };
package = pkgs.wivrn.override { cudaSupport = true; };
highPriority = true; highPriority = true;
package = pkgs.wivrn;
defaultRuntime = true; defaultRuntime = true;
config = { config = {
enable = true; enable = true;
@ -59,7 +60,6 @@ in {
}; };
}; };
}; };
services.lact.enable = true;
# SlimeVR ports # SlimeVR ports
networking.firewall = let networking.firewall = let
@ -83,7 +83,6 @@ in {
monado-vulkan-layers monado-vulkan-layers
bs-manager bs-manager
vrcx vrcx
lact
appimage-run appimage-run
(unityhub.override { (unityhub.override {
extraLibs = unityhubPkgs: [ extraLibs = unityhubPkgs: [

View file

@ -5,6 +5,7 @@
}: let }: let
inherit (lib.modules) mkForce; inherit (lib.modules) mkForce;
in { in {
services.noctalia-shell.enable = true;
programs.regreet = { programs.regreet = {
enable = true; enable = true;
theme = mkForce config.home-manager.users.kat.gtk.theme; theme = mkForce config.home-manager.users.kat.gtk.theme;

View file

@ -6,7 +6,7 @@
enable = true; enable = true;
stateVersion = 3; stateVersion = 3;
fqdn = "rinnosuke.inskip.me"; fqdn = "rinnosuke.inskip.me";
domains = ["dork.dev"]; domains = ["dork.dev" "kittywit.ch" "inskip.me"];
fullTextSearch.enable = true; fullTextSearch.enable = true;
@ -17,9 +17,13 @@
hashedPasswordFile = config.sops.secrets.kat-password.path; hashedPasswordFile = config.sops.secrets.kat-password.path;
aliases = [ aliases = [
"@dork.dev" "@dork.dev"
"@inskip.me"
"@kittywit.ch"
]; ];
catchAll = [ catchAll = [
"dork.dev" "dork.dev"
"inskip.me"
"kittywit.ch"
]; ];
}; };
}; };

View file

@ -32,9 +32,6 @@
hash = "sha256-8UWf1RKsRNWJ8CC6ceDeIOv4eY3ybxZ9tv5MCHx80NY="; hash = "sha256-8UWf1RKsRNWJ8CC6ceDeIOv4eY3ybxZ9tv5MCHx80NY=";
}; };
}; };
wivrn = prev.wivrn.overrideAttrs (old: {
cudaSupport = true;
});
}) })
inputs.rbw-bitw.overlays.default inputs.rbw-bitw.overlays.default
#inputs.arcexprs.overlays.default #inputs.arcexprs.overlays.default
@ -45,4 +42,9 @@
inputs.niri.overlays.niri inputs.niri.overlays.niri
inputs.proton-cachyos.overlays.default inputs.proton-cachyos.overlays.default
(import tree.packages.default {inherit inputs tree;}) (import tree.packages.default {inherit inputs tree;})
(_final: prev: {
wivrn = prev.wivrn.overrideAttrs (old: {
cudaSupport = true;
});
})
] ]

View file

@ -1,3 +1,3 @@
#!/usr/bin/env bash #!/usr/bin/env bash
adb reverse tcp:9757 tcp:9757 adb reverse tcp:9757 tcp:9757
adb shell am start -a android.intent.action.VIEW -d "wivrn+tcp://localhost" org.meumeu.wivrn.github.nightly adb shell am start -a android.intent.action.VIEW -d "wivrn+tcp://localhost" org.meumeu.wivrn.github

View file

@ -4,6 +4,7 @@ _: let
lib, lib,
pkgs, pkgs,
tree, tree,
std,
inputs, inputs,
... ...
}: let }: let
@ -52,10 +53,11 @@ _: let
gaming gaming
performance performance
dev dev
tiling
]) ])
++ (with tree.nixos.environments; [ ++ (with tree.nixos.environments; [
hyprland hyprland
#niri niri
]) ])
++ (with tree.nixos.servers; [ ++ (with tree.nixos.servers; [
forgejo-runner forgejo-runner
@ -129,44 +131,56 @@ _: let
# return-type = ""; # return-type = "";
# }; # };
# }; # };
# niri.settings = { niri.settings = {
# outputs = { outputs = {
# "LG Electronics LG Ultra HD 0x0001AC91" = { "LG Electronics LG Ultra HD 0x0001AC91" = {
# scale = 1.0; scale = 1.0;
# position = { position = {
# x = 1920; x = 1920;
# y = 0; y = 0;
# }; };
# mode = { mode = {
# width = 2560; width = 2560;
# height = 1440; height = 1440;
# refresh = 59.951; refresh = 59.951;
# }; };
# }; };
# "Samsung Electric Company SAMSUNG Unknown" = { "Samsung Electric Company SAMSUNG Unknown" = {
# position = { position = {
# x = 0; x = 0;
# y = 0; y = 0;
# }; };
# }; };
# "PNP(XXX) Beyond TV 0x00010000" = { "PNP(XXX) Beyond TV 0x00010000" = {
# mode = { mode = {
# width = 2560; width = 2560;
# height = 1440; height = 1440;
# refresh = 119.998; refresh = 119.998;
# }; };
# }; };
# }; };
# environment = { environment = {
# NVD_BACKEND = "direct"; NVD_BACKEND = "direct";
# ELECTRON_OZONE_PLATFORM_HINT = "auto"; ELECTRON_OZONE_PLATFORM_HINT = "auto";
# LIBVA_DRIVER_NAME = "nvidia"; LIBVA_DRIVER_NAME = "nvidia";
# NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";
# QT_QTA_PLATFORM = "wayland;xcb"; QT_QTA_PLATFORM = "wayland;xcb";
# }; };
# }; };
}; };
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
wayland.windowManager.hyprland.settings.workspace = let
inherit (std) list;
commonOptions = "gapsin:5,gapsout:5,rounding:true,persistent:true";
in lib.mkForce (
["1,monitor:DP-2,default:true,${commonOptions}"]
++ (list.map (
workspace: "${toString workspace},monitor:DP-2,${commonOptions}"
) (list.range 2 10))
++ ["11,monitor:HDMI-A-1,default:true,${commonOptions}"]
++ (list.map (
workspace: "${toString workspace},monitor:HDMI-A-1,${commonOptions}"
) (list.range 12 20)));
monitor = [ monitor = [
"HDMI-A-1, 1920x1080, 0x0, 1" "HDMI-A-1, 1920x1080, 0x0, 1"
"DP-2, 2560x1440, auto-right, 1" "DP-2, 2560x1440, auto-right, 1"
@ -177,7 +191,6 @@ _: let
"LIBVA_DRIVER_NAME,nvidia" "LIBVA_DRIVER_NAME,nvidia"
"__GLX_VENDOR_LIBRARY_NAME,nvidia" "__GLX_VENDOR_LIBRARY_NAME,nvidia"
"NIXOS_OZONE_WL,1" "NIXOS_OZONE_WL,1"
"__NV_DISABLE_EXPLICIT_SYNC,1"
"QT_QPA_PLATFORM,wayland;xcb" "QT_QPA_PLATFORM,wayland;xcb"
]; ];
}; };
@ -188,7 +201,7 @@ _: let
]) ])
++ (with tree.home.environments; [ ++ (with tree.home.environments; [
hyprland hyprland
#niri niri
]); ]);
}; };

View file

@ -58,6 +58,7 @@ _: let
laptop laptop
performance performance
secureboot secureboot
tiling
]) ])
++ (with tree.nixos.environments; [ ++ (with tree.nixos.environments; [
#niri #niri

View file

@ -7,6 +7,7 @@ locals {
} }
module "inskip-gmail" { module "inskip-gmail" {
enable = false
source = "./gmail_dns" source = "./gmail_dns"
cloudflare_api_key = var.cloudflare_api_key cloudflare_api_key = var.cloudflare_api_key
zone_id = local.zone_ids.inskip zone_id = local.zone_ids.inskip
@ -22,6 +23,7 @@ module "dork-gmail" {
dkim = local.dkims.dork dkim = local.dkims.dork
} }
module "kittywitch-gmail" { module "kittywitch-gmail" {
enable = false
source = "./gmail_dns" source = "./gmail_dns"
cloudflare_api_key = var.cloudflare_api_key cloudflare_api_key = var.cloudflare_api_key
zone_id = local.zone_ids.kittywitch zone_id = local.zone_ids.kittywitch

View file

@ -107,6 +107,26 @@ resource "cloudflare_record" "dork_mail_mx" {
zone_id = local.zone_ids.dork zone_id = local.zone_ids.dork
} }
resource "cloudflare_record" "inskip_mail_mx" {
name = "@"
proxied = false
ttl = 3600
type = "MX"
priority = 10
value = "rinnosuke.inskip.me"
zone_id = local.zone_ids.inskip
}
resource "cloudflare_record" "kittywitch_mail_mx" {
name = "@"
proxied = false
ttl = 3600
type = "MX"
priority = 10
value = "rinnosuke.inskip.me"
zone_id = local.zone_ids.kittywitch
}
resource "cloudflare_record" "dork_mail_spf" { resource "cloudflare_record" "dork_mail_spf" {
name = "@" name = "@"
proxied = false proxied = false
@ -116,6 +136,24 @@ resource "cloudflare_record" "dork_mail_spf" {
zone_id = local.zone_ids.dork zone_id = local.zone_ids.dork
} }
resource "cloudflare_record" "inskip_mail_spf" {
name = "@"
proxied = false
ttl = 10800
type = "TXT"
value = "v=spf1 a:rinnosuke.inskip.me -all"
zone_id = local.zone_ids.inskip
}
resource "cloudflare_record" "kittywitch_mail_spf" {
name = "@"
proxied = false
ttl = 10800
type = "TXT"
value = "v=spf1 a:rinnosuke.inskip.me -all"
zone_id = local.zone_ids.kittywitch
}
resource "cloudflare_record" "dork_mail_dkim" { resource "cloudflare_record" "dork_mail_dkim" {
name = "mail._domainkey" name = "mail._domainkey"
proxied = false proxied = false
@ -125,6 +163,25 @@ resource "cloudflare_record" "dork_mail_dkim" {
zone_id = local.zone_ids.dork zone_id = local.zone_ids.dork
} }
resource "cloudflare_record" "inskip_mail_dkim" {
name = "mail._domainkey"
proxied = false
ttl = 10800
type = "TXT"
value = "v=DKIM1; k=rsa; s=email; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAn266Z2suvJyv+vISWfjajWwIdImqHjZPOJCIZ/uJ8gStp8e8X8LMnRbzG4XVmTpx5IxnACcIZz2XVzxZspub6VZsbpDbcpApSk700UpPE1zag5QCA1zKs/smOFAtN3EIcwvbQ48HrKKlQSZdV7qHsS1BPrlK1hjwi1D6JlILCg9COQR8Sscxkjvg7pNP6Q1RVK7dtbzlQnqHikHjdXUTlaf5+EVPvdP4c4Of4YI1KaJMZDcs7LpQuvGNsZmEfybA066TWIaHq+F5WSmSsUhPlTnAygGBRFic0efWn9Ij/GVwI6yDq96IWjeT9L2C7+tkfj/NAmgFoITgpAiq/2l/OwIDAQAB"
zone_id = local.zone_ids.dork
}
resource "cloudflare_record" "kittywitch_mail_dkim" {
name = "mail._domainkey"
proxied = false
ttl = 10800
type = "TXT"
value = "v=DKIM1; k=rsa; s=email; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApzVUOBiZic/cB3WYOADAgEu//H9dG6VNz8kzgopoKhAZ6AhM8o4nW5kAoFxjJP1c21ugghoYtlJJHaHqQg93nuaW8f48jsjQErMa12hMo8xeFviSBkv7G9gasviborHZIxJVHIIwSga+YZfjNmdCQHH4ABud95utZJc8AmCSJj/kE0NozmXL8HLaMLg9cFMMYB8Pv+GDsDaXCD4H0qJANqCQos/NCynmRkQHYEW7C4lm9FNJUB3wpPuTY4/i6QZcd5Ex4bPYcc9FO4km/rqSbmsZDfN2P+iofpXGIxtCm4iOJlBMjPDIhV/8jAK5t1wIWRq1+3F2DkppGL2F4DkwfQIDAQAB"
zone_id = local.zone_ids.dork
}
resource "cloudflare_record" "dork_mail_dmarc" { resource "cloudflare_record" "dork_mail_dmarc" {
name = "_dmarc" name = "_dmarc"
proxied = false proxied = false
@ -134,6 +191,25 @@ resource "cloudflare_record" "dork_mail_dmarc" {
zone_id = local.zone_ids.dork zone_id = local.zone_ids.dork
} }
resource "cloudflare_record" "inskip_mail_dmarc" {
name = "_dmarc"
proxied = false
ttl = 10800
type = "TXT"
value = "v=DMARC1; p=none"
zone_id = local.zone_ids.inskip
}
resource "cloudflare_record" "kittywitch_mail_dmarc" {
name = "_dmarc"
proxied = false
ttl = 10800
type = "TXT"
value = "v=DMARC1; p=none"
zone_id = local.zone_ids.kittywitch
}
resource "cloudflare_record" "dork_mail_submission_autodiscover" { resource "cloudflare_record" "dork_mail_submission_autodiscover" {
name = "_submission._tcp" name = "_submission._tcp"
proxied = false proxied = false

File diff suppressed because one or more lines are too long

View file

@ -91,7 +91,7 @@
infrastructure.nixosModules.default infrastructure.nixosModules.default
lanzaboote.nixosModules.lanzaboote lanzaboote.nixosModules.lanzaboote
solaar.nixosModules.default solaar.nixosModules.default
nixpkgs-xr.nixosModules.nixpkgs-xr #nixpkgs-xr.nixosModules.nixpkgs-xr
spicetify-nix.nixosModules.spicetify spicetify-nix.nixosModules.spicetify
clipboard-sync.nixosModules.default clipboard-sync.nixosModules.default
nixos-cli.nixosModules.nixos-cli nixos-cli.nixosModules.nixos-cli