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": {
"lastModified": 1753213430,
"narHash": "sha256-2FNsT26OnFO3mh/0L42i7BNAN2JJhlIbmn+KB05CJMU=",
"lastModified": 1764853849,
"narHash": "sha256-0J2wo7WLd5uRD769MXsCJqu1VwAhuA2hmIKr2+ltb6s=",
"owner": "kittywitch",
"repo": "konawall-py",
"rev": "c8877270497a34e0146342f942a093ef406c6fed",
"rev": "fcbf702ab31286231ef71e0a7260e99cd7bbab86",
"type": "github"
},
"original": {

View file

@ -44,16 +44,16 @@ in {
"Mod+Shift+Escape".action = sh ''${noctalia} sessionMenu toggle'';
#"Mod+Shift+Escape".action = sh ''${getExe config.programs.swaylock.package} -f'';
"Mod+L".action = sh ''${noctalia} lockScreen toggle'';
"Mod+Tab" = {
#repeat = false;
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"];
};
"Mod+Shift+Tab" = {
cooldown-ms = 150;
#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"];
};
#"Mod+Tab" = {
# #repeat = false;
# 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"];
#};
#"Mod+Shift+Tab" = {
# cooldown-ms = 150;
# #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"];
#};
"Mod+Shift+Ctrl+Page_Down".action.move-workspace-to-monitor-previous = {};
"Mod+Shift+Ctrl+Page_Up".action.move-workspace-to-monitor-next = {};
};

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -23,6 +23,24 @@ _: {
flavor = "gmail.com";
};
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 =
gmailAccount
// katIdentity

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,6 +1,8 @@
_: let
hostConfig = {
tree,
pkgs,
utils,
lib,
...
}: let
@ -37,9 +39,9 @@ _: let
};
};
swap = rec {
raw = "/dev/disk/by-id/nvme-CT1000P5PSSD8_22343AC9A481-part2";
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
};
};
@ -54,8 +56,8 @@ _: let
quiet-boot
wireless
laptop
gaming
performance
secureboot
])
++ (with tree.nixos.environments; [
niri
@ -88,19 +90,87 @@ _: let
datasetEntries
// {
"/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 = [
drives.swap.result
];
environment.systemPackages = [
pkgs.e2fsprogs
];
powerManagement.enable = true;
boot = {
loader = {
grub.useOSProber = true;
#systemd-boot.enable = lib.mkForce false;
systemd-boot.enable = true;
};
zfs = {
forceImportRoot = false;

View file

@ -93,8 +93,8 @@ resource "cloudflare_record" "webmail" {
proxied = false
ttl = 3600
type = "CNAME"
value = "rinnosukeinskip.me"
zone_id = local.zone_ids.kittywitch
value = "rinnosuke.inskip.me"
zone_id = local.zone_ids.dork
}
resource "cloudflare_record" "dork_mail_mx" {
@ -121,7 +121,7 @@ resource "cloudflare_record" "dork_mail_dkim" {
proxied = false
ttl = 10800
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
}

File diff suppressed because one or more lines are too long