Compare commits

..

150 Commits

Author SHA1 Message Date
05b237f49c opencode: ditch chatgpt 2026-02-28 01:37:43 -05:00
daee9c3246 git: add opencode related file to .gitignore 2026-02-27 21:59:01 -05:00
70ca2d3323 steam: fix jovian-nixos (use my fork) 2026-02-27 01:00:27 -05:00
86ac120d54 steam: enable sddm (now required) 2026-02-26 19:22:08 -05:00
201436ef28 audio: disable rtkit to fix mumble 2026-02-26 19:17:26 -05:00
d453bc1bdd steam: upstream fix for switch-to-desktop 2026-02-25 14:39:37 -05:00
b8be06a8c7 opencode: glm-4.7 -> glm-5 2026-02-25 02:19:07 -05:00
d85434dff2 steam: add entry for prism launcher 2026-02-25 01:57:48 -05:00
b0fe816465 steam: fix switch-to-desktop
PR located here: https://github.com/Jovian-Experiments/Jovian-NixOS/pull/550
2026-02-24 22:44:03 -05:00
eaf550ded6 opencode: openrouter + glm 5 -> zai coding plan glm 4.7 2026-02-24 14:23:13 -05:00
a877826a68 update 2026-02-22 01:51:23 -05:00
1b0bd9b7f8 update 2026-02-20 14:15:01 -05:00
6c12b580e3 opencode: change models 2026-02-19 17:09:15 -05:00
fae2e84c99 update 2026-02-19 12:51:01 -05:00
2e11bf7f31 update 2026-02-18 12:47:42 -05:00
b6350e1170 update 2026-02-17 10:48:30 -05:00
00c98599d8 opencode: change multimodel looker model 2026-02-16 20:24:43 -05:00
52af5b3f47 opencode: change opus-model 2026-02-16 16:52:29 -05:00
99d51e77f0 update 2026-02-16 12:35:43 -05:00
32174c3ccb opencode: add note about autoupdate 2026-02-16 12:35:32 -05:00
eab28b1c44 opencode: fix oh-my-opencode build 2026-02-16 00:25:25 -05:00
9d663b346e update 2026-02-15 23:32:38 -05:00
de8da30b71 rust: stable -> nightly 2026-02-15 23:32:11 -05:00
5c7b5c8e9d opencode: fix playwright skill: 2 2026-02-11 19:22:46 -05:00
d8b380a9c0 opencode: fix playwright skill 2026-02-10 18:11:28 -05:00
b0650b59b7 update 2026-02-09 15:26:55 -05:00
ee5bba25b1 wifi: add network 2026-02-08 20:51:31 -05:00
13b65784b0 update 2026-02-07 01:22:32 -05:00
c767e881ba fmt 2026-02-05 15:05:09 -05:00
7d93b84ca5 opencode: fix ultrabrain model 2026-02-05 15:05:03 -05:00
587412b0be update 2026-02-05 13:26:57 -05:00
8950ee4644 emacs: all treesitter grammars 2026-02-04 15:20:29 -05:00
e2b9e27504 update 2026-02-04 14:08:24 -05:00
fc15c1369f opencode: add note about playwright browser_install 2026-02-03 14:45:15 -05:00
c505a71ab1 enable geoclue2 2026-02-03 13:32:46 -05:00
d5eda18b84 noctalia stuff 2026-02-03 13:29:34 -05:00
d6f7dab062 noctalia 2026-02-03 13:20:14 -05:00
d0de943224 opencode: don't use glm-4.7-flash 2026-02-03 12:54:53 -05:00
22823ff55f update 2026-02-03 12:49:33 -05:00
d1ceb9fa6f waydroid -> waydroid-nftables 2026-02-02 13:33:49 -05:00
f776045d82 vm: enable + android 2026-02-02 13:23:10 -05:00
ff4192b3fc update 2026-02-02 13:08:00 -05:00
d8e3ed76ee oh-my-opencode: update 2026-02-02 13:05:18 -05:00
c4656c11d5 Reapply "oh-my-opencode: move to fork and update"
This reverts commit bc6e196548.
2026-02-02 13:05:01 -05:00
f648c7444d update 2026-01-31 00:56:31 -05:00
bc6e196548 Revert "oh-my-opencode: move to fork and update"
This reverts commit 94f98ae34c.
2026-01-31 00:56:23 -05:00
498154eb15 1gb hugepages 2026-01-31 00:53:37 -05:00
83a5e1b278 fmt 2026-01-31 00:53:29 -05:00
70ddbb1bf5 opencode: add note about coordinates and UI interaction 2026-01-29 21:09:48 -05:00
94f98ae34c oh-my-opencode: move to fork and update 2026-01-29 21:09:28 -05:00
aae9549f8a update 2026-01-29 14:51:34 -05:00
1052b54dfb opencode: overhaul oh-my-opencode config 2026-01-28 13:38:41 -05:00
0e3b77cc59 opencode: fix oh-my-opencode Prometheus + Atlas 2026-01-28 12:47:43 -05:00
39352b10bc opencode: add oh-my-opencode as a plugin 2026-01-28 12:22:48 -05:00
c31a6cc09e opencode: use my fork of oh-my-opencode 2026-01-28 12:18:25 -05:00
cb031d3d66 Reapply "add oh-my-opencode"
This reverts commit 8297cd01f4.
2026-01-28 12:16:00 -05:00
5cbb10b245 opencode: move away from claude 2026-01-28 12:04:23 -05:00
8297cd01f4 Revert "add oh-my-opencode"
This reverts commit 2b912cc38e.
2026-01-28 11:49:04 -05:00
2b912cc38e add oh-my-opencode 2026-01-28 11:38:16 -05:00
60317ef61e update 2026-01-28 11:25:26 -05:00
0a868cf3dd opencode: add info about android app UI interaction 2026-01-27 23:26:01 -05:00
3c6c3592a3 grayjay 2026-01-27 13:52:12 -05:00
2b38c0ecdc yarn: set static ip 2026-01-26 17:57:50 -05:00
980f5feadd wlx-overlay-s -> wayvr 2026-01-26 00:46:00 -05:00
3da2197134 update 2026-01-25 00:40:31 -05:00
78a02d9e3d update 2026-01-23 13:09:33 -05:00
91f3c88347 fmt 2026-01-22 14:17:54 -05:00
9571c1a321 move to python313 to fix jaraco-test instead 2026-01-22 14:13:53 -05:00
3614d12466 fix python312 jaraco-test 2026-01-22 14:13:30 -05:00
a29b92984d update 2026-01-22 14:13:03 -05:00
8f3ad44d34 fix hostPlatform 2026-01-22 12:25:57 -05:00
43fce477fd hostPlatform -> targetPlatform 2026-01-21 15:23:01 -05:00
3b5f4b8fa4 opencode: abstract out haiku model name 2026-01-21 15:21:28 -05:00
681cbcb117 yarn: fix impermiance home directory 2026-01-19 23:34:08 -05:00
b52af2bea8 yarn: disable steamos-update 2026-01-19 23:33:50 -05:00
9cc7c52061 opencode: remove molmo model 2026-01-17 23:47:20 -05:00
d83ca9a3f5 opencode: fix molmo model 2026-01-17 23:45:52 -05:00
72cff90ae0 remove power profile things 2026-01-15 14:48:20 -05:00
e34911fda4 opencode: change models 2026-01-14 22:22:43 -05:00
f51e6789f3 mreow: try and fix graphical corruption issue 2026-01-14 11:22:21 -05:00
ac129e39ed opencode: make oh-my-opencode.json declarative also 2026-01-13 14:46:55 -05:00
a022550c4e fix no-gui nixfmt formatter package 2026-01-12 15:31:01 -05:00
237612fd4c fix pkgs.system deprecation 2026-01-12 15:27:12 -05:00
61325ee8d7 nixfmt -> nixfmt-tree 2026-01-12 15:22:16 -05:00
ee4fce8541 nixfmt-rfc-style -> nixfmt 2026-01-12 15:20:00 -05:00
63f6aa0f65 update (without nixpkgs) 2026-01-12 15:17:30 -05:00
896310a2d4 fix opencode + use free model 2026-01-12 14:20:19 -05:00
d2f7e1a376 opencode: minimax m2.1 2026-01-09 12:42:22 -05:00
a6a67b8543 opencode: fix glm4.7 2026-01-09 12:30:18 -05:00
b65bf47e90 flake: inline dependencies 2026-01-08 06:12:50 -05:00
ae0c0f0914 update 2026-01-07 14:18:46 -05:00
507ec8ffd9 update 2026-01-05 16:59:13 -05:00
6c96ba0e0f wifi: re-enable wifi power savings 2025-12-29 15:28:28 -05:00
67102b0967 wifi: move to ensureProfiles 2025-12-29 15:28:04 -05:00
2fc8710264 update 2025-12-29 14:40:05 -05:00
c5c0b7b797 update 2025-12-26 14:00:24 -05:00
fd58681a07 initrd: migrate to systemd-initrd 2025-12-25 04:19:35 -05:00
1d6b1fb341 llama-cpp: remove 2025-12-25 04:00:17 -05:00
6edbeb167b opencode: move to glm 4.7 (free) 2025-12-25 03:59:31 -05:00
fecc2d8652 update 2025-12-25 03:11:44 -05:00
5419adee40 update 2025-12-24 08:00:19 -05:00
9132392d92 fix mullvad version mismatch 2025-12-24 03:05:23 -05:00
9bb15ae4d2 llama.cpp things 2025-12-24 03:00:28 -05:00
8708d16dac update 2025-12-21 22:04:20 -05:00
567657e500 update 2025-12-20 01:18:41 -05:00
85b8906afa update 2025-12-16 03:45:27 -05:00
f6b9e81440 update 2025-12-13 00:39:40 -05:00
7d95bb4a75 update 2025-12-12 15:57:14 -05:00
accb90ca63 yarn: disable suspend + friends 2025-12-10 06:38:26 -05:00
f15f664b4e add tmux 2025-12-10 06:30:17 -05:00
94f261cf6f opencode: move to devstral 2025-12-09 21:52:46 -05:00
c9c98cd6e6 opencode: use llm-agents build 2025-12-09 21:52:29 -05:00
dd9bcc009a update 2025-12-09 18:45:33 -05:00
2c6036f39f update 2025-12-08 17:14:24 -05:00
c3e1e8d1b9 mreow: removed commented out config 2025-12-08 11:23:16 -05:00
9ae8b73a02 mreow: remove unneeded niri-session.desktop file creation 2025-12-07 23:56:21 -05:00
6d7564e860 mreow: disable custom vt used for greetd 2025-12-07 23:11:22 -05:00
f083a22def mreow: enable framework kmod again 2025-12-07 23:11:11 -05:00
c72cc5de43 mreow: re-enable nixos-hardware's audioEnchancement for fw13 2025-12-07 23:10:49 -05:00
bcd65b482f update 2025-12-07 15:02:09 -05:00
f91b94872d opencode: nix remove --rebuild usage 2025-12-05 10:34:54 -05:00
fa1b610684 update 2025-12-04 18:25:59 -05:00
3eaae0b22d cleanup 2025-12-02 15:56:25 -05:00
eb3b4f7531 fix amdgpu ppfeaturemask 2025-12-02 15:39:19 -05:00
c432a022cf opencode: nix specify git add usage 2025-12-02 00:39:29 -05:00
1f6d73234d update 2025-12-02 00:28:02 -05:00
4c1a40a877 update 2025-11-29 23:22:24 -05:00
2e70156bae update 2025-11-26 17:52:58 -05:00
662d8068f9 opencode: use only free models + stuff 2025-11-26 01:53:28 -05:00
b218f3aaea Revert "cachyos + cleanup"
This reverts commit 66b4931d08.
2025-11-25 19:44:29 -05:00
66b4931d08 cachyos + cleanup 2025-11-25 13:29:02 -05:00
594f7abdca update 2025-11-25 13:08:30 -05:00
59278188da update 2025-11-24 18:13:33 -05:00
7532efdc28 Revert "nixpkgs: patching test"
This reverts commit 6204949bdc.
2025-11-24 16:43:16 -05:00
6204949bdc nixpkgs: patching test 2025-11-24 16:43:12 -05:00
2f89e5f8c4 nix: re-enable optimise store 2025-11-24 11:44:39 -05:00
924bd28512 update 2025-11-24 10:35:31 -05:00
85dab64bcd update 2025-11-23 14:59:20 -05:00
71d5a5f44b fmt 2025-11-21 14:14:45 -05:00
26f39cf61e opencode: use gpt-oss 20b for small_model 2025-11-21 13:31:21 -05:00
35900f858d opencode: modify rules 2025-11-21 12:56:19 -05:00
6625a545ea opencode: use llama 3.1 8b for small_model 2025-11-21 12:29:27 -05:00
8a06e4560d etcnixos -> system 2025-11-21 12:19:28 -05:00
946d72b66b update 2025-11-21 10:34:00 -05:00
4e46b7fd3a use jovian-nixos + fixup niri display session handling 2025-11-21 10:14:31 -05:00
236cb914c5 steam: disable mangoapp 2025-11-20 22:35:20 -05:00
426a79f3a1 update 2025-11-20 22:21:25 -05:00
2b16ceb583 opencode: things 2025-11-20 22:20:19 -05:00
6597665864 eww: format 2025-11-20 22:20:16 -05:00
43f069962a update 2025-11-18 13:11:52 -05:00
34 changed files with 1011 additions and 465 deletions

2
.gitattributes vendored
View File

@@ -1,2 +1,2 @@
/etcnixos/secrets/** filter=git-crypt diff=git-crypt
/system/secrets/** filter=git-crypt diff=git-crypt
/home-manager/secrets/** filter=git-crypt diff=git-crypt

View File

@@ -1,51 +0,0 @@
{
config,
lib,
pkgs,
...
}:
# from: https://discourse.nixos.org/t/imperative-declarative-wifi-networks-with-wpa-supplicant/12394/6
let
cfg = config.networking.networkmanager;
getFileName = lib.stringAsChars (x: if x == " " then "-" else x);
createWifi = ssid: opt: {
name = "NetworkManager/system-connections/${getFileName ssid}.nmconnection";
value = {
mode = "0400";
source = pkgs.writeText "${ssid}.nmconnection" ''
[connection]
id=${ssid}
type=wifi
[wifi]
ssid=${ssid}
[wifi-security]
${lib.optionalString (opt.psk != null) ''
key-mgmt=wpa-psk
psk=${opt.psk}''}
'';
};
};
keyFiles = lib.mapAttrs' createWifi config.networking.wireless.networks;
in
{
config = lib.mkIf cfg.enable {
environment.etc = keyFiles;
systemd.services.NetworkManager-predefined-connections = {
restartTriggers = lib.mapAttrsToList (name: value: value.source) keyFiles;
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart = "${pkgs.coreutils}/bin/true";
ExecReload = "${pkgs.networkmanager}/bin/nmcli connection reload";
};
reloadIfChanged = true;
wantedBy = [ "multi-user.target" ];
};
};
}

Binary file not shown.

View File

@@ -1,50 +0,0 @@
{
pkgs,
config,
lib,
...
}:
{
nixpkgs.config.allowUnfreePredicate =
pkg:
builtins.elem (lib.getName pkg) [
"steam"
"steam-original"
"steam-unwrapped"
"steam-run"
];
programs.steam = {
enable = true;
extraCompatPackages = with pkgs; [ proton-ge-bin ];
};
environment.systemPackages = with pkgs; [
steamtinkerlaunch
mangohud
goverlay
yad
];
# Create steam session script
environment.etc."steam-session-greetd".source = pkgs.writeShellScript "steam-session-greetd" ''
export STEAM_RUNTIME=1
export SDL_VIDEODRIVER=wayland
export QT_QPA_PLATFORM=wayland
export GDK_BACKEND=wayland
export XDG_CURRENT_DESKTOP=Steam
export XDG_SESSION_TYPE=wayland
exec ${pkgs.gamescope}/bin/gamescope --adaptive-sync --hdr-enabled --mangoapp --rt --steam -- ${pkgs.steam}/bin/steam -pipewire-dmabuf -tenfoot
'';
# Create system-wide session files
environment.etc."xdg/wayland-sessions/steam-session.desktop".text = ''
[Desktop Entry]
Name=Steam Session
Comment=Steam Deck-like gaming session with gamescope
Exec=/etc/steam-session-greetd
Type=Application
DesktopNames=steam
'';
}

View File

@@ -1,37 +0,0 @@
{
config,
pkgs,
lib,
username,
inputs,
...
}:
{
imports = [
./common.nix
./hardware_laptop.nix
inputs.nixos-hardware.nixosModules.framework-amd-ai-300-series
];
# completely and utterly broken
/*
hardware.framework.laptop13.audioEnhancement = {
enable = true;
# seems audio doesn't work without this
hideRawDevice = false;
};
*/
# PST
# time.timeZone = lib.mkForce "America/Los_Angeles";
# weird hack to get swaylock working? idk, if you don't put this here, password entry doesnt work
# if I move to another lock screen program, i will have to replace `swaylock`
security.pam.services.swaylock = { };
# disable framework kernel module
# https://github.com/NixOS/nixos-hardware/issues/1330
hardware.framework.enableKmod = false;
}

View File

@@ -1,61 +0,0 @@
{
config,
pkgs,
lib,
username,
inputs,
...
}:
{
imports = [
./impermanence-disk-config.nix
./common.nix
./impermanence.nix
./no-rgb.nix
./vr.nix
inputs.nixos-hardware.nixosModules.common-cpu-amd-pstate
inputs.nixos-hardware.nixosModules.common-cpu-amd-zenpower
inputs.impermanence.nixosModules.impermanence
inputs.disko.nixosModules.disko
];
fileSystems."/media/games" = {
device = "/dev/disk/by-uuid/1878136e-765d-4784-b204-3536ab4fdac8";
fsType = "f2fs";
options = [ "nofail" ];
};
networking.hostId = "abf570f9";
services.openssh = {
enable = true;
ports = [ 22 ];
settings = {
PasswordAuthentication = false;
PermitRootLogin = "yes";
};
};
users.users.${username}.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4jL6gYOunUlUtPvGdML0cpbKSsPNqQ1jit4E7U1RyH" # laptop
];
users.users.root.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4jL6gYOunUlUtPvGdML0cpbKSsPNqQ1jit4E7U1RyH" # laptop
];
programs.steam = {
remotePlay.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
# LACT (Linux AMDGPU Configuration Tool): https://github.com/ilya-zlobintsev/LACT
environment.systemPackages = with pkgs; [
lact
];
systemd.packages = with pkgs; [ lact ];
systemd.services.lactd.wantedBy = [ "multi-user.target" ];
systemd.services.lactd.serviceConfig.ExecStartPre = "${lib.getExe pkgs.bash} -c \"sleep 3s\"";
}

View File

@@ -1,61 +0,0 @@
{
pkgs,
username,
lib,
...
}:
{
programs.virt-manager.enable = true;
users.groups.libvirtd.members = [ username ];
virtualisation.libvirtd = {
enable = true;
package = pkgs.libvirt;
qemu = {
package = (
pkgs.qemu_kvm.overrideAttrs (old: {
patches = old.patches ++ [
# amd?
(pkgs.fetchpatch {
url = "https://github.com/Scrut1ny/Hypervisor-Phantom/raw/d09d66813570704e2b05440f290d6f9bdf2d26c7/Hypervisor-Phantom/patches/QEMU/amd-qemu-9.2.0.patch";
sha256 = "BbzgjRa3qaYH1yXXqU6M/S68SxXWpAc9ObTG5qXu6YA=";
})
# or intel!
/*
(pkgs.fetchpatch {
url = "https://github.com/Scrut1ny/Hypervisor-Phantom/raw/d09d66813570704e2b05440f290d6f9bdf2d26c7/Hypervisor-Phantom/patches/QEMU/intel-qemu-9.2.0.patch";
sha256 = "kXY6R/0Tsotf0mGUIevDLlLWHEznnF1dt0K2ayX7XAg=";
})
*/
];
})
);
ovmf.packages = lib.mkForce [
(pkgs.OVMF.overrideAttrs (old: {
secureBoot = true;
tpmSupport = true;
# TODO! add patches from: https://github.com/Scrut1ny/Hypervisor-Phantom/tree/main/Hypervisor-Phantom/patches/EDK2
})).fd
];
};
};
virtualisation.spiceUSBRedirection.enable = true;
users.users."${username}".extraGroups = [ "libvirtd" ];
# boot.kernelPatches = [
# {
# name = "undetected-kvm";
# patch = pkgs.fetchurl {
# url = "https://raw.githubusercontent.com/Scrut1ny/Hypervisor-Phantom/d09d66813570704e2b05440f290d6f9bdf2d26c7/Hypervisor-Phantom/patches/Kernel/linux-6.13-svm.patch";
# sha256 = "zz18xerutulLGzlHhnu26WCY8rVQXApyeoDtCjbejIk=";
# };
# }
# ];
}

445
flake.lock generated
View File

@@ -1,12 +1,34 @@
{
"nodes": {
"blueprint": {
"inputs": {
"nixpkgs": [
"llm-agents",
"nixpkgs"
],
"systems": "systems_3"
},
"locked": {
"lastModified": 1771437256,
"narHash": "sha256-bLqwib+rtyBRRVBWhMuBXPCL/OThfokA+j6+uH7jDGU=",
"owner": "numtide",
"repo": "blueprint",
"rev": "06ee7190dc2620ea98af9eb225aa9627b68b0e33",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "blueprint",
"type": "github"
}
},
"crane": {
"locked": {
"lastModified": 1762538466,
"narHash": "sha256-8zrIPl6J+wLm9MH5ksHcW7BUHo7jSNOu0/hA0ohOOaM=",
"lastModified": 1771121070,
"narHash": "sha256-aIlv7FRXF9q70DNJPI237dEDAznSKaXmL5lfK/Id/bI=",
"owner": "ipetkov",
"repo": "crane",
"rev": "0cea393fffb39575c46b7a0318386467272182fe",
"rev": "a2812c19f1ed2e5ed5ce2ef7109798b575c180e1",
"type": "github"
},
"original": {
@@ -24,11 +46,11 @@
"utils": "utils"
},
"locked": {
"lastModified": 1762286984,
"narHash": "sha256-9I2H9x5We6Pl+DBYHjR1s3UT8wgwcpAH03kn9CqtdQc=",
"lastModified": 1770019181,
"narHash": "sha256-hwsYgDnby50JNVpTRYlF3UR/Rrpt01OrxVuryF40CFY=",
"owner": "serokell",
"repo": "deploy-rs",
"rev": "9c870f63e28ec1e83305f7f6cb73c941e699f74f",
"rev": "77c906c0ba56aabdbc72041bf9111b565cdd6171",
"type": "github"
},
"original": {
@@ -44,11 +66,11 @@
]
},
"locked": {
"lastModified": 1746728054,
"narHash": "sha256-eDoSOhxGEm2PykZFa/x9QG5eTH0MJdiJ9aR00VAofXE=",
"lastModified": 1768920986,
"narHash": "sha256-CNzzBsRhq7gg4BMBuTDObiWDH/rFYHEuDRVOwCcwXw4=",
"owner": "nix-community",
"repo": "disko",
"rev": "ff442f5d1425feb86344c028298548024f21256d",
"rev": "de5708739256238fb912c62f03988815db89ec9a",
"type": "github"
},
"original": {
@@ -61,11 +83,11 @@
"doomemacs": {
"flake": false,
"locked": {
"lastModified": 1762312706,
"narHash": "sha256-R3I8NErGSCd6kSTUBNe7SNcRDUtJ1xl8zvD13C6SrRg=",
"lastModified": 1771637851,
"narHash": "sha256-GmrqCINhfdO3EthpVG8ZsoTdfzj3vaEdz9soJwiI2HY=",
"owner": "doomemacs",
"repo": "doomemacs",
"rev": "ead254e15269bf8564625df4c8d2af6690a0df49",
"rev": "ac649cce2abd1eb9d6d3f161928f9a7665b63310",
"type": "github"
},
"original": {
@@ -84,11 +106,11 @@
]
},
"locked": {
"lastModified": 1763371146,
"narHash": "sha256-9n/PIfFd2GKhHJzL/VpMqCZ7zxuEii2SqMeYV1sUBOY=",
"lastModified": 1771728721,
"narHash": "sha256-03w1Ka71dJlerySoIT5ZGm/+bx0qONZIjELY4ghkxIo=",
"owner": "nix-community",
"repo": "emacs-overlay",
"rev": "310c28bf9dfb03c2205cdf57ac64a9197d61ecf8",
"rev": "d7e50ce0c6e1ca698217a251d432799683d23831",
"type": "github"
},
"original": {
@@ -97,28 +119,6 @@
"type": "github"
}
},
"fenix": {
"inputs": {
"nixpkgs": [
"lanzaboote",
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1763361733,
"narHash": "sha256-ka7dpwH3HIXCyD2wl5F7cPLeRbqZoY2ullALsvxdPt8=",
"owner": "nix-community",
"repo": "fenix",
"rev": "6c8d48e3b0ae371b19ac1485744687b788e80193",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
@@ -138,37 +138,52 @@
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1761588595,
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
"owner": "edolstra",
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "edolstra",
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"flake-utils": {
"inputs": {
"nixpkgs-lib": [
"lanzaboote",
"nixpkgs"
]
"systems": "systems_2"
},
"locked": {
"lastModified": 1762980239,
"narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "52a2caecc898d0b46b2b905f058ccc5081f842da",
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_5"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
@@ -176,7 +191,7 @@
"inputs": {
"nixpkgs": [
"lanzaboote",
"pre-commit-hooks-nix",
"pre-commit",
"nixpkgs"
]
},
@@ -201,11 +216,11 @@
]
},
"locked": {
"lastModified": 1763313531,
"narHash": "sha256-yvdCYUL85zEDp2NzPUBmaNBXP6KnWEOhAk3j7PTfsKw=",
"lastModified": 1771683283,
"narHash": "sha256-WxAEkAbo8dP7qiyPM6VN4ZGAxfuBVlNBNPkrqkrXVEc=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3670a78eee49deebe4825fc8ecc46b172d1a8391",
"rev": "c6ed3eab64d23520bcbb858aa53fe2b533725d4a",
"type": "github"
},
"original": {
@@ -215,12 +230,20 @@
}
},
"impermanence": {
"inputs": {
"home-manager": [
"home-manager"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1737831083,
"narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=",
"lastModified": 1769548169,
"narHash": "sha256-03+JxvzmfwRu+5JafM0DLbxgHttOQZkUtDWBmeUkN8Y=",
"owner": "nix-community",
"repo": "impermanence",
"rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170",
"rev": "7b1d382faf603b6d264f58627330f9faa5cba149",
"type": "github"
},
"original": {
@@ -229,23 +252,66 @@
"type": "github"
}
},
"jovian-nixos": {
"inputs": {
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1772169624,
"narHash": "sha256-YHaTNllFu90LdXqiNNoeDFnKwioa6lT+gXGGBOAvlfo=",
"owner": "Titaniumtown",
"repo": "Jovian-NixOS",
"rev": "68f2a686a27f0b6899b085fd6e653fffa59db444",
"type": "github"
},
"original": {
"owner": "Titaniumtown",
"ref": "pr/fix-sddm-switch-to-desktop",
"repo": "Jovian-NixOS",
"type": "github"
}
},
"json2steamshortcut": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1763116114,
"narHash": "sha256-0gI7PnQUDZTFjhHgg0eP1SCJOvW5gw3sQ2UAMspipnQ=",
"owner": "ChrisOboe",
"repo": "json2steamshortcut",
"rev": "b829fe2871fd1736d2406724e4abbb492527cb08",
"type": "github"
},
"original": {
"owner": "ChrisOboe",
"repo": "json2steamshortcut",
"type": "github"
}
},
"lanzaboote": {
"inputs": {
"crane": "crane",
"fenix": "fenix",
"flake-compat": "flake-compat_2",
"flake-parts": "flake-parts",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks-nix": "pre-commit-hooks-nix"
"pre-commit": "pre-commit",
"rust-overlay": [
"rust-overlay"
]
},
"locked": {
"lastModified": 1763376718,
"narHash": "sha256-bIYjIla2w6bzozkohYxsU/BP0hLs9w48ZwxBfg3cShE=",
"lastModified": 1771492583,
"narHash": "sha256-nQzvnU4BGu8dA6BsPPCqmVcab/3ebVmHtX3ZWbW3Hxc=",
"owner": "nix-community",
"repo": "lanzaboote",
"rev": "0859944b08039342a9bb069e7edc1e62bb4d0e65",
"rev": "5e9380994665ef66c87ab8e22c913ff837174ce4",
"type": "github"
},
"original": {
@@ -254,6 +320,28 @@
"type": "github"
}
},
"llm-agents": {
"inputs": {
"blueprint": "blueprint",
"nixpkgs": [
"nixpkgs"
],
"treefmt-nix": "treefmt-nix"
},
"locked": {
"lastModified": 1771730908,
"narHash": "sha256-AkmTeSJSGniBsCbc+Oy5emrQflyTzUweOVcQLf69z1A=",
"owner": "numtide",
"repo": "llm-agents.nix",
"rev": "352ee8c439a3c2c7987f6cfaebddcf87c924959a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "llm-agents.nix",
"type": "github"
}
},
"niri": {
"inputs": {
"niri-stable": "niri-stable",
@@ -268,11 +356,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1763376268,
"narHash": "sha256-B1IJKNni8sIjMSdtnvgWsDvhb+FpUBIitq8cidysZGo=",
"lastModified": 1771638124,
"narHash": "sha256-rIF69lE48tBvOMFiIyserOa0MF3SXh1ZiRqv7WqlUew=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "9b0c42a79bd092971e183d102365e549e4280002",
"rev": "a1dac2b08c329af22200104c3c4b18de5ded6034",
"type": "github"
},
"original": {
@@ -301,11 +389,11 @@
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1763370666,
"narHash": "sha256-Y4IYBfaTxffpm6UIbhY1Xfpij+aVh/C+tF9Tdg6nYig=",
"lastModified": 1771305475,
"narHash": "sha256-lqweVTwHhYc+9T33cysp38gVwxaibGJHriOPZXWyhCY=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "7f19d268b3563e3683eaca02d9665fed66ce862e",
"rev": "a2a52911757cb3b497db9407592f9b4c439571ea",
"type": "github"
},
"original": {
@@ -323,14 +411,14 @@
"nixpkgs": [
"nixpkgs"
],
"systems": "systems_2"
"systems": "systems_4"
},
"locked": {
"lastModified": 1763282415,
"narHash": "sha256-Blb9l3DjFXjhYOqR7RoA/TQUS7BnBN4VufpRvG4XSlo=",
"lastModified": 1771663801,
"narHash": "sha256-gh0OVgAERhv1uSXzTgd0p7GioEG1Jg44FVxc72aM//A=",
"owner": "marienz",
"repo": "nix-doom-emacs-unstraightened",
"rev": "b04d4b93dc60bc586224b28564b116f0692ce05c",
"rev": "0bf7a181e28a8c3d1e89b18f79b15d516f2fb670",
"type": "github"
},
"original": {
@@ -341,11 +429,11 @@
},
"nix-flatpak": {
"locked": {
"lastModified": 1754777568,
"narHash": "sha256-0bBqT+3XncgF8F03RFAamw9vdf0VmaDoIJLTGkjfQZs=",
"lastModified": 1768656715,
"narHash": "sha256-Sbh037scxKFm7xL0ahgSCw+X2/5ZKeOwI2clqrYr9j4=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "62f636b87ef6050760a8cb325cadb90674d1e23e",
"rev": "123fe29340a5b8671367055b75a6e7c320d6f89a",
"type": "github"
},
"original": {
@@ -354,13 +442,35 @@
"type": "github"
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"jovian-nixos",
"nixpkgs"
]
},
"locked": {
"lastModified": 1729697500,
"narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=",
"owner": "zhaofengli",
"repo": "nix-github-actions",
"rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf",
"type": "github"
},
"original": {
"owner": "zhaofengli",
"ref": "matrix-name",
"repo": "nix-github-actions",
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1762847253,
"narHash": "sha256-BWWnUUT01lPwCWUvS0p6Px5UOBFeXJ8jR+ZdLX8IbrU=",
"lastModified": 1771423359,
"narHash": "sha256-yRKJ7gpVmXbX2ZcA8nFi6CMPkJXZGjie2unsiMzj3Ig=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "899dc449bc6428b9ee6b3b8f771ca2b0ef945ab9",
"rev": "740a22363033e9f1bb6270fbfb5a9574067af15b",
"type": "github"
},
"original": {
@@ -372,11 +482,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1763283776,
"narHash": "sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c+i7novT85Uk=",
"lastModified": 1771369470,
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a",
"rev": "0182a361324364ae3f436a63005877674cf45efb",
"type": "github"
},
"original": {
@@ -386,12 +496,51 @@
"type": "github"
}
},
"pre-commit-hooks-nix": {
"noctalia": {
"inputs": {
"flake-compat": [
"lanzaboote",
"flake-compat"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1771732280,
"narHash": "sha256-pwfFptl7m1Xu+I7eSjapRfIBtVH9rsLpzuaCouraz9U=",
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"rev": "341c5ee138d688ac1a7ffb1543ce2a3c9801aa34",
"type": "github"
},
"original": {
"owner": "noctalia-dev",
"repo": "noctalia-shell",
"type": "github"
}
},
"oh-my-opencode": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1770618333,
"narHash": "sha256-7Y9e2nrsi4yKwBXZ7RUF1B5FN4RJUT4rYI1SvA0vDEw=",
"owner": "yebei199",
"repo": "oh-my-opencode",
"rev": "bde5264e4c3a91ded482acd35c8ed239d21d1de2",
"type": "github"
},
"original": {
"owner": "yebei199",
"ref": "nix",
"repo": "oh-my-opencode",
"type": "github"
}
},
"pre-commit": {
"inputs": {
"flake-compat": "flake-compat_2",
"gitignore": "gitignore",
"nixpkgs": [
"lanzaboote",
@@ -399,11 +548,11 @@
]
},
"locked": {
"lastModified": 1763319842,
"narHash": "sha256-YG19IyrTdnVn0l3DvcUYm85u3PaqBt6tI6VvolcuHnA=",
"lastModified": 1770726378,
"narHash": "sha256-kck+vIbGOaM/dHea7aTBxdFYpeUl/jHOy5W3eyRvVx8=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "7275fa67fbbb75891c16d9dee7d88e58aea2d761",
"rev": "5eaaedde414f6eb1aea8b8525c466dc37bba95ae",
"type": "github"
},
"original": {
@@ -419,33 +568,21 @@
"emacs-overlay": "emacs-overlay",
"home-manager": "home-manager",
"impermanence": "impermanence",
"jovian-nixos": "jovian-nixos",
"json2steamshortcut": "json2steamshortcut",
"lanzaboote": "lanzaboote",
"llm-agents": "llm-agents",
"niri": "niri",
"nix-doom-emacs-unstraightened": "nix-doom-emacs-unstraightened",
"nix-flatpak": "nix-flatpak",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs",
"noctalia": "noctalia",
"oh-my-opencode": "oh-my-opencode",
"rust-overlay": "rust-overlay",
"zen-browser": "zen-browser"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1762860488,
"narHash": "sha256-rMfWMCOo/pPefM2We0iMBLi2kLBAnYoB9thi4qS7uk4=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "2efc80078029894eec0699f62ec8d5c1a56af763",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
@@ -453,11 +590,11 @@
]
},
"locked": {
"lastModified": 1763347184,
"narHash": "sha256-6QH8hpCYJxifvyHEYg+Da0BotUn03BwLIvYo3JAxuqQ=",
"lastModified": 1771729765,
"narHash": "sha256-HNsDSR5bhLSrIpi9bTb2uTK1qnPo1xFSBxs6YmFyprk=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "08895cce80433978d5bfd668efa41c5e24578cbd",
"rev": "be926cb1a76e8450ab2b92121b2e88d09fa4d41c",
"type": "github"
},
"original": {
@@ -496,6 +633,72 @@
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_5": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"llm-agents",
"nixpkgs"
]
},
"locked": {
"lastModified": 1770228511,
"narHash": "sha256-wQ6NJSuFqAEmIg2VMnLdCnUc0b7vslUohqqGGD+Fyxk=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "337a4fe074be1042a35086f15481d763b8ddc0e7",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
},
"utils": {
"inputs": {
"systems": "systems"
@@ -534,11 +737,11 @@
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1762747449,
"narHash": "sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk=",
"lastModified": 1771195969,
"narHash": "sha256-BUE41HjLIGPjq3U8VXPjf8asH8GaMI7FYdgrIHKFMXA=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "6338574bc5c036487486acde264f38f39ea15fad",
"rev": "536bd32efc935bf876d6de385ec18a1b715c9358",
"type": "github"
},
"original": {
@@ -557,11 +760,11 @@
]
},
"locked": {
"lastModified": 1763353619,
"narHash": "sha256-y30wSzjr7QiO4OVB/Tt7dnLRLIuK2EpaftpKeMMLGu0=",
"lastModified": 1771719171,
"narHash": "sha256-ZDE3//9Hg+9X5xXcDJ4k/d6qcOVQ4MrTmvf1zv/omZY=",
"owner": "0xc000022070",
"repo": "zen-browser-flake",
"rev": "7463345c68cfdd9e92e2d40e390b1a802b0f2add",
"rev": "2a71f2e720db962f2522b38704e23e11163e91ae",
"type": "github"
},
"original": {

View File

@@ -7,6 +7,7 @@
lanzaboote = {
url = "github:nix-community/lanzaboote";
inputs.nixpkgs.follows = "nixpkgs";
inputs.rust-overlay.follows = "rust-overlay";
};
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
@@ -54,12 +55,40 @@
impermanence = {
url = "github:nix-community/impermanence";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
deploy-rs = {
url = "github:serokell/deploy-rs";
inputs.nixpkgs.follows = "nixpkgs";
};
jovian-nixos = {
url = "github:Titaniumtown/Jovian-NixOS/pr/fix-sddm-switch-to-desktop";
inputs.nixpkgs.follows = "nixpkgs";
};
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "nixpkgs";
};
llm-agents = {
url = "github:numtide/llm-agents.nix";
inputs.nixpkgs.follows = "nixpkgs";
};
# wait for https://github.com/code-yeongyu/oh-my-opencode/pull/921 to be merged
oh-my-opencode = {
url = "github:yebei199/oh-my-opencode/nix";
inputs.nixpkgs.follows = "nixpkgs";
};
json2steamshortcut = {
url = "github:ChrisOboe/json2steamshortcut";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs =
@@ -70,6 +99,7 @@
nixos-hardware,
home-manager,
deploy-rs,
jovian-nixos,
...
}@inputs:
let
@@ -79,9 +109,10 @@
"mreow"
"yarn"
];
niri-package = inputs.niri.packages.${system}.niri-unstable;
in
{
formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-rfc-style;
formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-tree;
nixosConfigurations = nixpkgs.lib.foldl' (
config: hostname:
@@ -93,6 +124,7 @@
inputs
username
hostname
niri-package
;
};
modules = [
@@ -103,14 +135,19 @@
# home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = {
inherit inputs hostname username;
inherit
inputs
hostname
username
niri-package
;
homeDirectory = "/home/${username}";
stateVersion = config.system.stateVersion;
};
home-manager.users.${username} = import ./home-manager/home-${hostname}.nix;
}
)
./etcnixos/system-${hostname}.nix
./system/system-${hostname}.nix
];
};
}

View File

@@ -10,13 +10,16 @@
./progs/niri.nix
# statusbar
./progs/eww/eww.nix
# ./progs/eww/eww.nix
# lockscreen
./progs/swaylock.nix
# notification daemon
./progs/dunst.nix
# noctalia desktop shell
./progs/noctalia.nix
];
home.packages = with pkgs; [

View File

@@ -18,6 +18,7 @@
pkg:
builtins.elem (lib.getName pkg) [
"apple_cursor"
"grayjay"
];
home.packages =
@@ -34,6 +35,7 @@
[
tor-browser
inputs.zen-browser.packages."${system}".twilight
grayjay
]
# music library management

View File

@@ -9,6 +9,7 @@
imports = [
./gui.nix
./desktop.nix
inputs.json2steamshortcut.homeModules.default
];
home.packages = with pkgs; [
@@ -26,4 +27,18 @@
obs-pipewire-audio-capture
];
};
services.steam-shortcuts = {
enable = true;
overwriteExisting = true;
steamUserId = lib.strings.toInt (lib.strings.trim (builtins.readFile ./secrets/steam-user-id));
shortcuts = [
{
AppName = "Prism Launcher";
Exe = "${pkgs.prismlauncher}/bin/prismlauncher";
Icon = "${pkgs.prismlauncher}/share/icons/hicolor/scalable/apps/org.prismlauncher.PrismLauncher.svg";
Tags = [ "Game" ];
}
];
};
}

View File

@@ -10,7 +10,7 @@
}:
let
rust_pkgs = with pkgs; [
(rust-bin.stable.latest.default.override ({
(rust-bin.nightly.latest.default.override ({
extensions = [
"rust-src"
"rust-analyzer"
@@ -147,7 +147,7 @@ in
sshfs
# nix formatter
nixfmt-rfc-style
nixfmt-tree
# serial viewer
minicom
@@ -160,7 +160,7 @@ in
# microcontroller tooling
probe-rs-tools
(python312.withPackages (
(python313.withPackages (
ps: with ps; [
mypy # type checking
types-requests # add types for requests methods
@@ -218,7 +218,7 @@ in
# https://github.com/flamegraph-rs/flamegraph
home.file.".cargo/config.toml".text = ''
[target.${lib.strings.removeSuffix "-linux" pkgs.system}-unknown-linux-gnu]
[target.${lib.strings.removeSuffix "-linux" pkgs.stdenv.hostPlatform.system}-unknown-linux-gnu]
linker = "${lib.getExe pkgs.clang}"
rustflags = ["-Clink-arg=-Wl,--no-rosegment"]
'';
@@ -230,6 +230,8 @@ in
lfs.enable = true;
ignores = [ ".sisyphus" ];
settings = {
init = {
# master -> main

View File

@@ -25,8 +25,10 @@
emacs = pkgs.emacs-unstable-pgtk;
extraPackages =
epkgs:
with epkgs;
[
epkgs.dracula-theme
dracula-theme
treesit-grammars.with-all-grammars
]
++ (with pkgs; [
shellcheck

View File

@@ -1,4 +1,9 @@
{ pkgs, ... }:
{
pkgs,
lib,
config,
...
}:
{
home.packages = with pkgs; [
zsh
@@ -11,4 +16,25 @@
enable = true;
configDir = ./config;
};
programs.niri.settings.spawn-at-startup = [
{
command = [
(lib.getExe config.programs.eww.package)
"-c"
"${config.programs.eww.configDir}"
"open"
"statusbar"
];
}
# swaybg works on more than just sway (sets a wallpaper)
{
command = [
(lib.getExe pkgs.swaybg)
"-i"
"${../wallpaper.png}"
];
}
];
}

View File

@@ -3,6 +3,7 @@
pkgs,
lib,
inputs,
niri-package,
...
}:
let
@@ -22,7 +23,7 @@ in
];
programs.niri = {
package = pkgs.niri-unstable;
package = niri-package;
settings = {
prefer-no-csd = true;
@@ -59,27 +60,6 @@ in
xwayland-satellite.path = lib.getExe pkgs.xwayland-satellite;
spawn-at-startup = [
{
command = [
(lib.getExe config.programs.eww.package)
"-c"
"${config.programs.eww.configDir}"
"open"
"statusbar"
];
}
# swaybg works on more than just sway (sets a wallpaper)
{
command = [
(lib.getExe pkgs.swaybg)
"-i"
"${../wallpaper.png}"
];
}
];
window-rules = [
{ draw-border-with-background = false; }
{

View File

@@ -0,0 +1,92 @@
{
pkgs,
inputs,
config,
lib,
...
}:
{
imports = [
inputs.noctalia.homeModules.default
];
programs.noctalia-shell = {
enable = true;
settings = {
bar = {
position = "top";
floating = true;
backgroundOpacity = 0.93;
};
general = {
animationSpeed = 1.5;
radiusRatio = 1.2;
};
colorSchemes = {
darkMode = true;
useWallpaperColors = true;
};
location = {
weatherEnabled = false;
};
wallpaper = {
enabled = true;
};
};
};
home.file.".cache/noctalia/wallpapers.json" = {
text = builtins.toJSON {
defaultWallpaper = "${../wallpaper.png}";
wallpapers = { };
};
};
programs.niri.settings = {
spawn-at-startup = [
{
command = [
"noctalia-shell"
];
}
]; # place noctalia overview wallpaper on the backdrop layer
layer-rules = [
{
matches = [
{ namespace = "^noctalia-overview*"; }
];
place-within-backdrop = true;
}
];
# allow notification actions and window activation from noctalia
debug = {
honor-xdg-activation-with-invalid-serial = [ ];
};
binds =
with config.lib.niri.actions;
let
noctalia =
cmd:
[
"noctalia-shell"
"ipc"
"call"
]
++ (lib.splitString " " cmd);
in
{
# noctalia shell keybinds
"Mod+D".action = spawn (noctalia "launcher toggle");
"Mod+A".action = spawn (noctalia "controlCenter toggle");
"Mod+Escape".action = spawn (noctalia "sessionMenu toggle");
"Mod+Shift+X".action = spawn (noctalia "lockScreen lock");
"Mod+N".action = spawn (noctalia "notifications toggleHistory");
};
};
}

View File

@@ -2,38 +2,198 @@
config,
lib,
pkgs,
inputs,
...
}:
let
# what model should be used in place of haiku?
haiku-model = "zai-coding-plan/glm-5";
opus-model = "zai-coding-plan/glm-5";
ohMyOpencodeConfig = {
"$schema" =
"https://raw.githubusercontent.com/code-yeongyu/oh-my-opencode/master/assets/oh-my-opencode.schema.json";
agents = {
sisyphus.model = opus-model;
sisyphus-junior.model = opus-model;
oracle = opus-model;
librarian.model = haiku-model;
explore.model = haiku-model;
multimodal-looker.model = "openrouter/qwen/qwen3-vl-30b-a3b-thinking";
prometheus.model = opus-model;
metis.model = opus-model;
momus = opus-model;
atlas.model = opus-model;
};
categories = {
visual-engineering.model = "openrouter/google/gemini-3-pro";
ultrabrain = opus-model;
artistry = {
model = "openrouter/google/gemini-3-pro";
variant = "max";
};
quick.model = haiku-model;
deep.model = opus-model;
writing.model = "openrouter/google/gemini-3-flash-preview";
};
};
in
{
home.packages =
let
ohMyOpencode =
let
orig = inputs.oh-my-opencode.packages.${pkgs.stdenv.hostPlatform.system};
fixed-node_modules = orig.node_modules.overrideAttrs (_: {
outputHash = "sha256-qq/eEoxFELVdt4qaJkrw8XNZ/Ph/RJdsyIp7LteQE5A=";
});
in
orig.oh-my-opencode.overrideAttrs (_: {
buildPhase = ''
cp -r ${fixed-node_modules}/node_modules .
chmod -R u+w node_modules
patchShebangs node_modules/
export HOME=$(mktemp -d)
bun run build
'';
});
in
[
ohMyOpencode
pkgs.playwright-driver.browsers
];
home.sessionVariables = {
PLAYWRIGHT_BROWSERS_PATH = "${pkgs.playwright-driver.browsers}";
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD = "1";
};
xdg.configFile."opencode/oh-my-opencode.json".text = builtins.toJSON ohMyOpencodeConfig;
xdg.configFile."opencode/skills/playwright.md".text =
let
browsers = pkgs.playwright-driver.browsers;
chromiumDir = builtins.head (
builtins.filter (n: builtins.match "chromium-[0-9]+" n != null) (
builtins.attrNames browsers.passthru.entries
)
);
chromiumPath = "${browsers}/${chromiumDir}/chrome-linux64/chrome";
in
''
---
name: playwright
description: "MUST USE for any browser-related tasks. Browser automation via Playwright MCP - verification, browsing, information gathering, web scraping, testing, screenshots, and all browser interactions."
mcp:
playwright:
command: npx
args:
- "@playwright/mcp@latest"
- "--executable-path"
- "${chromiumPath}"
- "--user-data-dir"
- "${config.home.homeDirectory}/.cache/playwright-mcp"
---
# Playwright Browser Automation
This skill provides browser automation capabilities via the Playwright MCP server.
'';
programs.opencode = {
package = inputs.llm-agents.packages.${pkgs.stdenv.targetPlatform.system}.opencode;
enable = true;
rules = ''
You are an intelligent and observant agent.
If instructed to commit, disable gpg signing.
You are on nixOS, if you don't have access to a tool, you can access it via the `nix-shell` command.
## Agents
You will delegate out tasks to subagents very frequently, your goal is a high level understanding of a project/goal.
## Think deeply about everything.
When given a problem, break it down, abstract it out, understand the fundamentals, then solve it in the real world.
## Misc
For long-running commands, make sure you set the timeout of the Bash tool provided to a larger value.
Do NOT read secret files. Do not directly read files that are api keys or are contextually sensitive.
Do NOT run `skill_mcp [mcp_name=playwright, tool_name=browser_install]` as browsers are provided by NixOS via PLAYWRIGHT_BROWSERS_PATH.
## Behavior
Do not be sycophantic in your responses.
Do not use emojis unless explicitly asked to. This includes in code.
Use Test Driven Development methodology.
## Nix
For using `nix build` append `-L` to get better visibility into the logs.
If you get an error that a file can't be found, always try to `git add` the file before trying other troubleshooting steps.
## Android UI Interaction Workflow Summary
1. Taking Screenshots
adb exec-out screencap -p > /tmp/screen.png
Captures the current screen state as a PNG image.
2. Analyzing Screenshots
I delegate screenshot analysis to an explore agent rather than analyzing images directly:
mcp_task(subagent_type="explore", prompt="Analyze /tmp/screen.png. What screen is this? What elements are visible?")
The agent describes the UI, identifies elements, and estimates Y coordinates.
3. Getting Precise Element Coordinates
UI Automator dump - extracts the full UI hierarchy as XML:
adb shell uiautomator dump /sdcard/ui.xml && adb pull /sdcard/ui.xml /tmp/ui.xml
Then grep for specific elements:
# Find by text
grep -oP 'text="Login".*?bounds="[^"]*"' /tmp/ui.xml
# Find by class
grep -oP 'class="android.widget.EditText".*?bounds="[^"]*"' /tmp/ui.xml
Bounds format: [left,top][right,bottom] tap center: ((left+right)/2, (top+bottom)/2)
4. Tapping Elements
adb shell input tap X Y
Where X, Y are pixel coordinates from the bounds.
5. Text Input
adb shell input text "some_text"
Note: Special characters need escaping (\!, \;, etc.)
6. Other Gestures
# Swipe/scroll
adb shell input swipe startX startY endX endY duration_ms
# Key events
adb shell input keyevent KEYCODE_BACK
adb shell input keyevent KEYCODE_ENTER
7. WebView Limitation
- UI Automator can see WebView content if accessibility is enabled
- Touch events on iframe content (like Cloudflare Turnstile) often fail due to cross-origin isolation
- Form fields in WebViews work if you get exact bounds from the UI dump
Typical Flow
1. Take screenshot analyze with explore agent (get rough layout)
2. Dump UI hierarchy grep for exact element bounds
- NEVER ASSUME COORDINATES. You must ALWAYS check first.
- Do this before ANY tap action as elements on the screen may of changed.
3. Calculate center coordinates from bounds
4. Tap/interact
5. Wait screenshot verify result
'';
settings = {
theme = "opencode";
model = "z-ai/glm-4.6:floor";
model = opus-model;
# small model used for titles
small_model = "z-ai/glm-4-32b:floor";
small_model = "openrouter/openai/gpt-oss-20b:free";
autoshare = false;
# note: this updates opencode (and plugins like oh-my-opencode) at launch,
# bypassing the version pinned in flake.lock
autoupdate = true;
agent = { };
plugin = [ "oh-my-opencode" ];
provider = {
openrouter = {
models = {
# put models here
"openai/gpt-oss-20b:free" = { };
};
options = {
# TODO! use agenix here instead

Binary file not shown.

View File

@@ -6,34 +6,34 @@
system,
hostname,
inputs,
niri-package,
...
}:
{
imports = [
./declarative-nm.nix
# ./vm.nix
./vm.nix
./steam.nix
./networking.nix
inputs.nixos-hardware.nixosModules.common-pc-ssd
inputs.disko.nixosModules.disko
inputs.lanzaboote.nixosModules.lanzaboote
inputs.nixos-hardware.nixosModules.common-cpu-amd-pstate
inputs.nixos-hardware.nixosModules.common-cpu-amd-zenpower
inputs.nixos-hardware.nixosModules.common-pc-ssd
];
# use tuned instead of tlp or ppd
services.power-profiles-daemon.enable = false;
services.tlp.enable = false;
services.tuned.enable = true;
# allow overclocking (I actually underclock but lol)
hardware.amdgpu.overdrive.ppfeaturemask = "0xFFF7FFFF";
hardware.amdgpu.overdrive.ppfeaturemask = "0xFFFFFFFF";
hardware.enableRedistributableFirmware = true;
hardware.cpu.amd.updateMicrocode = true;
services.kmscon.enable = true;
# Gamescope configuration for Steam Deck-like experience
# Add niri to display manager session packages
services.displayManager.sessionPackages = [ niri-package ];
programs = {
gamescope = {
enable = true;
@@ -45,26 +45,6 @@
};
};
services.greetd = {
enable = true;
settings = {
default_session = {
command = "${lib.getExe pkgs.tuigreet} --sessions /etc/xdg/wayland-sessions/ --time";
user = username;
};
terminal.vt = lib.mkForce 2;
};
};
environment.etc."xdg/wayland-sessions/niri-session.desktop".text = ''
[Desktop Entry]
Name=Niri Session
Comment=Niri Wayland compositor
Exec=niri-session
Type=Application
DesktopNames=niri
'';
system.activationScripts = {
# FIX: https://github.com/NixOS/nix/issues/2982
"profile-channel-dummy".text = ''
@@ -88,7 +68,7 @@
nix = {
# optimize the store
optimise.automatic = false;
optimise.automatic = true;
# enable flakes!
settings.experimental-features = [
@@ -124,6 +104,7 @@
};
initrd = {
systemd.enable = true;
compressor = "zstd";
availableKernelModules = [
"xhci_pci"
@@ -141,6 +122,13 @@
"msr"
"btusb"
];
kernelParams = [
# 1gb huge pages
"hugepagesz=1G"
"hugepages=3"
];
};
environment.etc = {
@@ -176,6 +164,12 @@
# power statistics
upower.enable = true;
# power profiles for noctalia shell
power-profiles-daemon.enable = true;
# geolocation (uses beacondb.net by default)
geoclue2.enable = true;
};
# EST
@@ -212,7 +206,8 @@
# Enable sound with pipewire.
services.pulseaudio.enable = false; # pipewire >>>>>>> pulseaudio
security.rtkit.enable = true;
# BUG! disable rtkit in order to fix mumble: https://github.com/NixOS/nixpkgs/issues/392992#issuecomment-2799867278
security.rtkit.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
@@ -237,8 +232,6 @@
services.gvfs.enable = true;
programs.gphoto2.enable = true;
programs.adb.enable = true;
# Enable thermal data
services.thermald.enable = true;
@@ -251,7 +244,7 @@
# System packages
environment.systemPackages = with pkgs; [
mullvad-vpn
# mullvad-vpn is provided by services.mullvad-vpn.enable
#secureboot ctl
sbctl
@@ -268,6 +261,9 @@
# needed for home-manager
git
tmux
android-tools
];
# wayland with electron/chromium applications

View File

@@ -21,12 +21,15 @@
"/etc/ssh/ssh_host_rsa_key.pub"
"/etc/machine-id"
];
users.${username} = {
directories = [
"."
];
};
# Bind mount entire home directory from persistent storage
# (impermanence doesn't support "." so we do this directly)
fileSystems."/home/${username}" = {
device = "/persistent/home/${username}";
fsType = "none";
options = [ "bind" ];
neededForBoot = true;
};
systemd.tmpfiles.rules = [

View File

@@ -17,10 +17,10 @@
wifi = {
scanRandMacAddress = true;
# fix suspend issue
powersave = false;
};
# powersave = false;
};
wireless.networks = import ./secrets/wifi-passwords.nix;
ensureProfiles.profiles = import ./secrets/wifi-passwords.nix;
};
};
}

Binary file not shown.

28
system/steam.nix Normal file
View File

@@ -0,0 +1,28 @@
{
pkgs,
config,
lib,
...
}:
{
nixpkgs.config.allowUnfreePredicate =
pkg:
builtins.elem (lib.getName pkg) [
"steam"
"steam-original"
"steam-unwrapped"
"steam-run"
];
programs.steam = {
enable = true;
extraCompatPackages = with pkgs; [ proton-ge-bin ];
};
environment.systemPackages = with pkgs; [
steamtinkerlaunch
mangohud
goverlay
yad
];
}

43
system/system-mreow.nix Normal file
View File

@@ -0,0 +1,43 @@
{
config,
pkgs,
lib,
username,
inputs,
...
}:
{
imports = [
./common.nix
./disk_mreow.nix
inputs.nixos-hardware.nixosModules.framework-amd-ai-300-series
];
# Disable PSR, PSR-SU, and Panel Replay to fix display hangs and corruption.
# Panel Replay requires PSR/PSR-SU to also be disabled to avoid issues.
# This overrides nixos-hardware's 0x10 with 0x410 (last value wins in kernel cmdline).
# https://github.com/NixOS/nixos-hardware/pull/1692
boot.kernelParams = lib.mkAfter [ "amdgpu.dcdebugmask=0x410" ];
hardware.framework.laptop13.audioEnhancement.rawDeviceName =
lib.mkDefault "alsa_output.pci-0000_c1_00.6.analog-stereo";
# PST
# time.timeZone = lib.mkForce "America/Los_Angeles";
# weird hack to get swaylock working? idk, if you don't put this here, password entry doesnt work
# if I move to another lock screen program, i will have to replace `swaylock`
security.pam.services.swaylock = { };
# Greetd display manager
services.greetd = {
enable = true;
settings = {
default_session = {
command = "${lib.getExe pkgs.tuigreet} --time";
user = username;
};
};
};
}

175
system/system-yarn.nix Normal file
View File

@@ -0,0 +1,175 @@
{
config,
pkgs,
lib,
username,
inputs,
...
}:
{
imports = [
./disk_yarn.nix
./common.nix
./impermanence.nix
./no-rgb.nix
./vr.nix
inputs.impermanence.nixosModules.impermanence
inputs.jovian-nixos.nixosModules.default
];
fileSystems."/media/games" = {
device = "/dev/disk/by-uuid/1878136e-765d-4784-b204-3536ab4fdac8";
fsType = "f2fs";
options = [ "nofail" ];
};
systemd.targets = {
sleep.enable = false;
suspend.enable = false;
hibernate.enable = false;
hybrid-sleep.enable = false;
};
networking.hostId = "abf570f9";
# Static IP for consistent SSH access
networking.networkmanager.ensureProfiles.profiles.enp7s0-static = {
connection = {
id = "enp7s0-static";
type = "ethernet";
interface-name = "enp7s0";
autoconnect = true;
};
ipv4 = {
method = "manual";
address1 = "192.168.1.223/24,192.168.1.1";
dns = "1.1.1.1;9.9.9.9;";
};
ipv6.method = "disabled";
};
services.openssh = {
enable = true;
ports = [ 22 ];
settings = {
PasswordAuthentication = false;
PermitRootLogin = "yes";
};
};
users.users.${username}.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4jL6gYOunUlUtPvGdML0cpbKSsPNqQ1jit4E7U1RyH" # laptop
];
users.users.root.openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO4jL6gYOunUlUtPvGdML0cpbKSsPNqQ1jit4E7U1RyH" # laptop
];
programs.steam = {
remotePlay.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
# LACT (Linux AMDGPU Configuration Tool): https://github.com/ilya-zlobintsev/LACT
environment.systemPackages = with pkgs; [
lact
];
systemd.packages = with pkgs; [ lact ];
systemd.services.lactd.wantedBy = [ "multi-user.target" ];
systemd.services.lactd.serviceConfig.ExecStartPre = "${lib.getExe pkgs.bash} -c \"sleep 3s\"";
nixpkgs.config.allowUnfreePredicate =
pkg:
builtins.elem (lib.getName pkg) [
"steamdeck-hw-theme"
"steam-jupiter-unwrapped"
"steam"
"steam-original"
"steam-unwrapped"
"steam-run"
];
# Override jovian-stubs to disable steamos-update kernel check
# This prevents Steam from requesting reboots for "system updates"
# Steam client updates will still work normally
nixpkgs.overlays = [
(final: prev: {
jovian-stubs = prev.stdenv.mkDerivation {
name = "jovian-stubs-no-update";
dontUnpack = true;
installPhase = ''
mkdir -p $out/bin
# steamos-update: always report "no update available" (exit 7)
# This disables the kernel mismatch check that triggers reboot prompts
cat > $out/bin/steamos-update << 'STUB'
#!/bin/sh
>&2 echo "[JOVIAN] $0: stub called with: $* (system updates disabled)"
exit 7
STUB
# steamos-reboot: reboot the system
cat > $out/bin/steamos-reboot << 'STUB'
#!/bin/sh
>&2 echo "[JOVIAN] $0: stub called with: $*"
systemctl reboot
STUB
# steamos-select-branch: no-op stub
cat > $out/bin/steamos-select-branch << 'STUB'
#!/bin/sh
>&2 echo "[JOVIAN] $0: stub called with: $*"
exit 0
STUB
# steamos-factory-reset-config: no-op stub
cat > $out/bin/steamos-factory-reset-config << 'STUB'
#!/bin/sh
>&2 echo "[JOVIAN] $0: stub called with: $*"
exit 0
STUB
# steamos-firmware-update: no-op stub
cat > $out/bin/steamos-firmware-update << 'STUB'
#!/bin/sh
>&2 echo "[JOVIAN] $0: stub called with: $*"
exit 0
STUB
# pkexec: pass through to real pkexec
cat > $out/bin/pkexec << 'STUB'
#!/bin/sh
exec /run/wrappers/bin/pkexec "$@"
STUB
# sudo: pass through to doas
cat > $out/bin/sudo << 'STUB'
#!/bin/sh
exec /run/wrappers/bin/doas "$@"
STUB
chmod 755 $out/bin/*
'';
};
})
];
jovian = {
devices.steamdeck.enable = false;
steam = {
enable = true;
autoStart = true;
desktopSession = "niri";
user = username;
};
};
# Jovian-NixOS requires sddm
# https://github.com/Jovian-Experiments/Jovian-NixOS/commit/52f140c07493f8bb6cd0773c7e1afe3e1fd1d1fa
services.displayManager.sddm.wayland.enable = true;
# Disable gamescope from common.nix to avoid conflict with jovian-nixos
programs.gamescope.enable = lib.mkForce false;
}

39
system/vm.nix Normal file
View File

@@ -0,0 +1,39 @@
{
pkgs,
username,
lib,
...
}:
{
# android virtualization
virtualisation.waydroid = {
enable = true;
# https://github.com/NixOS/nixpkgs/pull/466473
package = pkgs.waydroid-nftables;
};
programs.virt-manager.enable = true;
users.groups.libvirtd.members = [ username ];
virtualisation.libvirtd = {
enable = true;
package = pkgs.libvirt;
};
virtualisation.spiceUSBRedirection.enable = true;
users.users."${username}".extraGroups = [ "libvirtd" ];
# boot.kernelPatches = [
# {
# name = "undetected-kvm";
# patch = pkgs.fetchurl {
# url = "https://raw.githubusercontent.com/Scrut1ny/Hypervisor-Phantom/d09d66813570704e2b05440f290d6f9bdf2d26c7/Hypervisor-Phantom/patches/Kernel/linux-6.13-svm.patch";
# sha256 = "zz18xerutulLGzlHhnu26WCY8rVQXApyeoDtCjbejIk=";
# };
# }
# ];
}

View File

@@ -42,7 +42,7 @@
}
];
application = [ pkgs.wlx-overlay-s ];
application = [ pkgs.wayvr ];
};
};
};