Compare commits

..

3 commits

Author SHA1 Message Date
4482ec422a
niri: japanese numbers 2025-12-04 07:49:59 -08:00
6f199833bf
feat: whee 2025-12-04 07:46:50 -08:00
077753652f
feat: fuuuck 2025-12-04 03:40:39 -08:00
20 changed files with 209 additions and 101 deletions

18
TODO.md Normal file
View file

@ -0,0 +1,18 @@
# To-dos
- [ ] Make personal homepage o:
- [ ] Make my own quickshell config
## New service deployments
- [ ] Fauna
- [ ] Immich
## Migrations
- [ ] Move away from flakes to either npins or lon (not that they replied; https://github.com/nikstur/lon/issues/57#issue-3652308987)
- [ ] Move to a setup similar to https://notashelf.dev/posts/impermanence - investigate encrypted swap WITH hibernation support
- [ ] Move away from gmail fully
- [ ] Move away from Discord primarily
- [ ] Move away from Spotify fully
- [ ] Move away from Cloudflare for DNS and hosting

6
flake.lock generated
View file

@ -1006,11 +1006,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1753213430, "lastModified": 1764853849,
"narHash": "sha256-2FNsT26OnFO3mh/0L42i7BNAN2JJhlIbmn+KB05CJMU=", "narHash": "sha256-0J2wo7WLd5uRD769MXsCJqu1VwAhuA2hmIKr2+ltb6s=",
"owner": "kittywitch", "owner": "kittywitch",
"repo": "konawall-py", "repo": "konawall-py",
"rev": "c8877270497a34e0146342f942a093ef406c6fed", "rev": "fcbf702ab31286231ef71e0a7260e99cd7bbab86",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -44,16 +44,16 @@ in {
"Mod+Shift+Escape".action = sh ''${noctalia} sessionMenu toggle''; "Mod+Shift+Escape".action = sh ''${noctalia} sessionMenu toggle'';
#"Mod+Shift+Escape".action = sh ''${getExe config.programs.swaylock.package} -f''; #"Mod+Shift+Escape".action = sh ''${getExe config.programs.swaylock.package} -f'';
"Mod+L".action = sh ''${noctalia} lockScreen toggle''; "Mod+L".action = sh ''${noctalia} lockScreen toggle'';
"Mod+Tab" = { #"Mod+Tab" = {
#repeat = false; # #repeat = false;
cooldown-ms = 150; # cooldown-ms = 150;
action.spawn = ["${getExe' pkgs.glib "gdbus"}" "call" "--session" "--dest" "io.github.isaksamsten.Niriswitcher" "--object-path" "/io/github/isaksamsten/Niriswitcher" "--method" "io.github.isaksamsten.Niriswitcher.application"]; # action.spawn = ["${getExe' pkgs.glib "gdbus"}" "call" "--session" "--dest" "io.github.isaksamsten.Niriswitcher" "--object-path" "/io/github/isaksamsten/Niriswitcher" "--method" "io.github.isaksamsten.Niriswitcher.application"];
}; #};
"Mod+Shift+Tab" = { #"Mod+Shift+Tab" = {
cooldown-ms = 150; # cooldown-ms = 150;
#repeat = false; # #repeat = false;
action.spawn = ["${getExe' pkgs.glib "gdbus"}" "call" "--session" "--dest" "io.github.isaksamsten.Niriswitcher" "--object-path" "/io/github/isaksamsten/Niriswitcher" "--method" "io.github.isaksamsten.Niriswitcher.application"]; # action.spawn = ["${getExe' pkgs.glib "gdbus"}" "call" "--session" "--dest" "io.github.isaksamsten.Niriswitcher" "--object-path" "/io/github/isaksamsten/Niriswitcher" "--method" "io.github.isaksamsten.Niriswitcher.application"];
}; #};
"Mod+Shift+Ctrl+Page_Down".action.move-workspace-to-monitor-previous = {}; "Mod+Shift+Ctrl+Page_Down".action.move-workspace-to-monitor-previous = {};
"Mod+Shift+Ctrl+Page_Up".action.move-workspace-to-monitor-next = {}; "Mod+Shift+Ctrl+Page_Up".action.move-workspace-to-monitor-next = {};
}; };

View file

@ -75,32 +75,35 @@ in {
#deactivate-unfocused-windows = {}; #deactivate-unfocused-windows = {};
}; };
workspaces = { workspaces = {
"01-notes" = { "01" = {
name = "notes"; name = "";
}; };
"02-chat" = { "02" = {
name = "chat"; name = "";
}; };
"03-browser" = { "03" = {
name = "browser"; name = "";
}; };
"04-code" = { "04" = {
name = "code"; name = "";
}; };
"05-term" = { "05" = {
name = "term"; name = "";
}; };
"06-mail" = { "06" = {
name = "mail"; name = "";
}; };
"07-game" = { "07" = {
name = "game"; name = "";
}; };
"08-video" = { "08" = {
name = "video"; name = "";
}; };
"09-audio" = { "09" = {
name = "audio"; name = "";
};
"10" = {
name = "";
}; };
}; };
environment = { environment = {

View file

@ -14,7 +14,7 @@ in {
backgroundOpacity = 0.9; backgroundOpacity = 0.9;
monitors = []; monitors = [];
density = "comfortable"; density = "comfortable";
showCapsule = true; showCapsule = false;
floating = true; floating = true;
marginVertical = 0.25; marginVertical = 0.25;
marginHorizontal = 0.25; marginHorizontal = 0.25;
@ -22,7 +22,8 @@ in {
left = [ left = [
{ {
id = "Workspace"; id = "Workspace";
labelMode = "name"; labelMode = "index+name";
characterCount = 10;
} }
{ {
id = "ActiveWindow"; id = "ActiveWindow";
@ -30,6 +31,11 @@ in {
} }
]; ];
center = [ center = [
];
right = [
{
id = "Tray";
}
{ {
id = "MediaMini"; id = "MediaMini";
showAlbumArt = true; showAlbumArt = true;
@ -40,30 +46,6 @@ in {
# if not, rewrite their system for it o.o # if not, rewrite their system for it o.o
widgetWidth = 300; widgetWidth = 300;
} }
{
id = "Clock";
formatHorizontal = "yyyy-MM-dd HH:mm t";
}
{
id = "NightLight";
}
{
id = "DarkMode";
}
{
id = "KeepAwake";
}
{
id = "ScreenRecorder";
}
];
right = [
{
id = "SystemMonitor";
}
{
id = "Tray";
}
{ {
id = "NotificationHistory"; id = "NotificationHistory";
} }
@ -76,8 +58,25 @@ in {
{ {
id = "Brightness"; id = "Brightness";
} }
{
id = "NightLight";
}
{
id = "DarkMode";
}
{
id = "KeepAwake";
}
{
id = "ScreenRecorder";
}
{
id = "Clock";
formatHorizontal = "yyyy-MM-dd HH:mm t";
}
{ {
id = "ControlCenter"; id = "ControlCenter";
useDistroLogo = true;
} }
]; ];
}; };

View file

@ -25,16 +25,16 @@
polarity = "dark"; polarity = "dark";
fonts = { fonts = {
sansSerif = { sansSerif = {
name = "Atkinson Hyperlegible Next"; name = "M+2 Nerd Font";
package = pkgs.atkinson-hyperlegible-next; package = pkgs.nerd-fonts."m+";
}; };
serif = { serif = {
name = "Libre Baskerville"; name = "Libre Baskerville";
package = pkgs.libre-baskerville; package = pkgs.libre-baskerville;
}; };
monospace = { monospace = {
name = "Atkinson Hyperlegible Mono"; name = "M+1Code Nerd Font Mono";
package = pkgs.atkinson-hyperlegible-mono; package = pkgs.nerd-fonts."m+";
}; };
}; };
autoEnable = true; autoEnable = true;

View file

@ -2,7 +2,7 @@
stylix.targets.alacritty.enable = true; stylix.targets.alacritty.enable = true;
programs.alacritty = { programs.alacritty = {
enable = true; enable = true;
package = pkgs.alacritty-graphics; package = pkgs.alacritty;
settings = { settings = {
}; };
}; };

View file

@ -1,8 +1,6 @@
{pkgs, ...}: { {pkgs, ...}: {
home.packages = with pkgs; [ home.packages = with pkgs; [
anki anki
# Password manager
bitwarden
# Task managers # Task managers
btop btop
@ -10,8 +8,7 @@
aseprite aseprite
# Chat # Chat
tdesktop # Telegram telegram-desktop # Telegram
dino # XMPP
signal-desktop signal-desktop
mumble mumble
keymapp keymapp

View file

@ -23,6 +23,24 @@ _: {
flavor = "gmail.com"; flavor = "gmail.com";
}; };
in { in {
main =
mainEnable
// katIdentity
// {
flavor = "plain";
userName = "kat@dork.dev";
address = "kat@dork.dev";
imap = {
tls.enable = true;
host = "rinnosuke.inskip.me";
port = 993;
};
smtp = {
tls.enable = true;
host = "rinnosuke.inskip.me";
port = 465;
};
};
primary = primary =
gmailAccount gmailAccount
// katIdentity // katIdentity

View file

@ -26,16 +26,16 @@
polarity = "dark"; polarity = "dark";
fonts = { fonts = {
sansSerif = { sansSerif = {
name = "Atkinson Hyperlegible Next"; name = "M+2 Nerd Font";
package = pkgs.atkinson-hyperlegible-next; package = pkgs.nerd-fonts."m+";
}; };
serif = { serif = {
name = "Libre Baskerville"; name = "Libre Baskerville";
package = pkgs.libre-baskerville; package = pkgs.libre-baskerville;
}; };
monospace = { monospace = {
name = "Atkinson Hyperlegible Mono"; name = "M+1Code Nerd Font Mono";
package = pkgs.atkinson-hyperlegible-mono; package = pkgs.nerd-fonts."m+";
}; };
}; };
autoEnable = true; autoEnable = true;

View file

@ -3,6 +3,7 @@
blacklistedKernelModules = ["k10temp"]; blacklistedKernelModules = ["k10temp"];
extraModulePackages = [config.boot.kernelPackages.zenpower]; extraModulePackages = [config.boot.kernelPackages.zenpower];
kernelModules = ["zenpower"]; kernelModules = ["zenpower"];
kernelParams = ["microcode.amd_sha_check=off"];
}; };
services.ucodenix.enable = true; services.ucodenix.enable = true;
} }

View file

@ -4,5 +4,6 @@ _: {
grub.configurationLimit = 8; grub.configurationLimit = 8;
systemd-boot.configurationLimit = 8; systemd-boot.configurationLimit = 8;
}; };
lanzaboote.configurationLimit = 5;
}; };
} }

View file

@ -1,7 +1,6 @@
{ {
pkgs, pkgs,
lib, lib,
inputs,
... ...
}: let }: let
inherit (lib.lists) singleton; inherit (lib.lists) singleton;
@ -21,21 +20,21 @@ in {
monadoEnvironment = { monadoEnvironment = {
XRT_COMPOSITOR_COMPUTE = "1"; XRT_COMPOSITOR_COMPUTE = "1";
}; };
package = pkgs.wivrn.overrideAttrs (old: rec { package = pkgs.wivrn.overrideAttrs (_old: rec {
cudaSupport = true; cudaSupport = true;
version = "84e5203be3019278925ac03708567f2982360f8a"; #version = "84e5203be3019278925ac03708567f2982360f8a";
src = pkgs.fetchFromGitHub { #src = pkgs.fetchFromGitHub {
owner = "notpeelz"; # owner = "notpeelz";
repo = "WiVRn"; # repo = "WiVRn";
rev = version; # rev = version;
# This will throw an error when evaluating and give you the correct hash - put that here # # This will throw an error when evaluating and give you the correct hash - put that here
hash = "sha256-2s3j6vRtIRf6x+lQPobcuT1vzlCh1lMA54EUiCnxoFI="; # hash = "sha256-2s3j6vRtIRf6x+lQPobcuT1vzlCh1lMA54EUiCnxoFI=";
}; #};
cmakeFlags = #cmakeFlags =
old.cmakeFlags # old.cmakeFlags
++ [ # ++ [
(lib.cmakeBool "WIVRN_FEATURE_SOLARXR" true) # (lib.cmakeBool "WIVRN_FEATURE_SOLARXR" true)
]; # ];
}); });
defaultRuntime = true; defaultRuntime = true;
config = { config = {
@ -93,8 +92,8 @@ in {
'') '')
]; ];
}) })
slimevr #slimevr
slimevr-server #slimevr-server
inputs.slimevr-wrangler.packages.${pkgs.system}.slimevr-wrangler #inputs.slimevr-wrangler.packages.${pkgs.system}.slimevr-wrangler
]; ];
} }

View file

@ -4,7 +4,7 @@
noto-fonts-cjk-sans noto-fonts-cjk-sans
twitter-color-emoji twitter-color-emoji
corefonts corefonts
vistafonts vista-fonts
open-dyslexic open-dyslexic
ubuntu-sans ubuntu-sans
monaspace monaspace

View file

@ -4,11 +4,12 @@
... ...
}: { }: {
boot.extraModulePackages = with config.boot.kernelPackages; [ boot.extraModulePackages = with config.boot.kernelPackages; [
v4l2loopback # TODO: check if working post 2025-12-04
#v4l2loopback
]; ];
programs.obs-studio = { programs.obs-studio = {
enable = true; enable = true;
enableVirtualCamera = true; #enableVirtualCamera = true;
plugins = with pkgs.obs-studio-plugins; [ plugins = with pkgs.obs-studio-plugins; [
#obs-vaapi #obs-vaapi
#obs-tuna #obs-tuna

View file

@ -6,7 +6,6 @@
imagemagick imagemagick
]; ];
services.udev.packages = [ services.udev.packages = [
pkgs.android-udev-rules
pkgs.zsa-udev-rules pkgs.zsa-udev-rules
pkgs.via pkgs.via
]; ];

View file

@ -8,6 +8,8 @@
fqdn = "rinnosuke.inskip.me"; fqdn = "rinnosuke.inskip.me";
domains = ["dork.dev"]; domains = ["dork.dev"];
fullTextSearch.enable = true;
# A list of all login accounts. To create the password hashes, use # A list of all login accounts. To create the password hashes, use
# nix-shell -p mkpasswd --run 'mkpasswd -sm bcrypt' # nix-shell -p mkpasswd --run 'mkpasswd -sm bcrypt'
loginAccounts = { loginAccounts = {

View file

@ -1,6 +1,8 @@
_: let _: let
hostConfig = { hostConfig = {
tree, tree,
pkgs,
utils,
lib, lib,
... ...
}: let }: let
@ -37,9 +39,9 @@ _: let
}; };
}; };
swap = rec { swap = rec {
raw = "/dev/disk/by-id/nvme-CT1000P5PSSD8_22343AC9A481-part2";
result = { result = {
device = raw; device = "/dev/mapper/cryptswap";
options = ["x-systemd.device-timeout=15s" "nofail" "x-systemd.wants=systemd-cryptsetup@cryptswap.service"];
randomEncryption = false; # fix hibernation randomEncryption = false; # fix hibernation
}; };
}; };
@ -54,8 +56,8 @@ _: let
quiet-boot quiet-boot
wireless wireless
laptop laptop
gaming
performance performance
secureboot
]) ])
++ (with tree.nixos.environments; [ ++ (with tree.nixos.environments; [
niri niri
@ -88,19 +90,87 @@ _: let
datasetEntries datasetEntries
// { // {
"/boot" = drives.boot.result; "/boot" = drives.boot.result;
"/boot-keystore" = {
#neededForBoot = true;
device = "/dev/mapper/boot-keystore";
fsType = "ext4";
noCheck = true;
options = ["ro"];
};
}; };
systemd.enableEmergencyMode = true;
boot.initrd = {
systemd = {
emergencyAccess = true;
mounts = let
inherit (utils) escapeSystemdPath;
# maybe add a require for the /dev/mapper
sysrooty = escapeSystemdPath "/sysroot";
requiredBy = [
"${sysrooty}.mount"
]; #"systemd-cryptsetup@cryptswap.service" ];
requires = ["systemd-cryptsetup@boot-keystore.service"];
in [
{
where = "/boot-keystore";
what = "/dev/mapper/boot-keystore";
type = "ext4";
options = "ro";
unitConfig = {
};
before = requiredBy;
wantedBy = requiredBy;
inherit requires;
after = requires;
}
{
where = "/sysroot/boot-keystore";
what = "/boot-keystore";
type = "none";
options = "bind";
unitConfig = {
RequiresMountsFor = [
"/boot-keystore"
"/sysroot"
];
};
}
];
};
luks.devices = {
"boot-keystore".device = "/dev/disk/by-uuid/d80f77bb-fd82-43dd-9aa4-05da8d2b6154";
"cryptswap" = {
device = "/dev/disk/by-uuid/94948ee7-8c89-4b60-bd8c-68171b488d19";
keyFile = "/boot-keystore/swapkey";
};
};
};
environment.etc.crypttab = let
raw = "/dev/disk/by-uuid/94948ee7-8c89-4b60-bd8c-68171b488d19";
in {
mode = "0600";
text = ''
cryptswap ${raw} /boot-keystore/swapkey keyfile-timeout=5s
'';
};
#boot.resumeDevice = "/dev/mapper/cryptswap";
swapDevices = [ swapDevices = [
drives.swap.result drives.swap.result
]; ];
environment.systemPackages = [
pkgs.e2fsprogs
];
powerManagement.enable = true; powerManagement.enable = true;
boot = { boot = {
loader = { loader = {
grub.useOSProber = true;
#systemd-boot.enable = lib.mkForce false; #systemd-boot.enable = lib.mkForce false;
systemd-boot.enable = true;
}; };
zfs = { zfs = {
forceImportRoot = false; forceImportRoot = false;

View file

@ -93,8 +93,8 @@ resource "cloudflare_record" "webmail" {
proxied = false proxied = false
ttl = 3600 ttl = 3600
type = "CNAME" type = "CNAME"
value = "rinnosukeinskip.me" value = "rinnosuke.inskip.me"
zone_id = local.zone_ids.kittywitch zone_id = local.zone_ids.dork
} }
resource "cloudflare_record" "dork_mail_mx" { resource "cloudflare_record" "dork_mail_mx" {
@ -121,7 +121,7 @@ resource "cloudflare_record" "dork_mail_dkim" {
proxied = false proxied = false
ttl = 10800 ttl = 10800
type = "TXT" type = "TXT"
value = "v=DKIM1; k=rsa; s=email; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsfSxe5JNdrSyHoPuESnOles7KxP5NtHD60YZ7SXLANNkEb8/tSHmg4nGqLhqKrA7+gcrurjowibDYs4hAM/ozkMNch53n2ZVKRl1ExMSRAPlGl5ZNCGGYVuRQlTMGvek2tIp3GbxafGF6QWSG1sA63fI9pxGosf/qc3wX5gtHxmKB9jn1Q6d9SDuJN72StIRjl81zaJFQJswvKx5keNvbW9oOP/xBVFPbnNZq52f/MsIpo4R33Vk0CrFvj5lnEKh5t6Bx1XUpJnkzQE934h+x1B+ypLkAPpLw4VnbDBMNc/ZkGbfJuM9YsasoEYgeoAtWKkyJV2WKZfppo1pUtR7swIDAQAB" value = "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsfSxe5JNdrSyHoPuESnOles7KxP5NtHD60YZ7SXLANNkEb8/tSHmg4nGqLhqKrA7+gcrurjowibDYs4hAM/ozkMNch53n2ZVKRl1ExMSRAPlGl5ZNCGGYVuRQlTMGvek2tIp3GbxafGF6QWSG1sA63fI9pxGosf/qc3wX5gtHxmKB9jn1Q6d9SDuJN72StIRjl81zaJFQJswvKx5keNvbW9oOP/xBVFPbnNZq52f/MsIpo4R33Vk0CrFvj5lnEKh5t6Bx1XUpJnkzQE934h+x1B+ypLkAPpLw4VnbDBMNc/ZkGbfJuM9YsasoEYgeoAtWKkyJV2WKZfppo1pUtR7swIDAQAB"
zone_id = local.zone_ids.dork zone_id = local.zone_ids.dork
} }

File diff suppressed because one or more lines are too long