Compare commits
211 Commits
4cc39dffe8
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
05b237f49c
|
|||
|
daee9c3246
|
|||
|
70ca2d3323
|
|||
|
86ac120d54
|
|||
|
201436ef28
|
|||
|
d453bc1bdd
|
|||
|
b8be06a8c7
|
|||
|
d85434dff2
|
|||
|
b0fe816465
|
|||
|
eaf550ded6
|
|||
|
a877826a68
|
|||
|
1b0bd9b7f8
|
|||
|
6c12b580e3
|
|||
|
fae2e84c99
|
|||
|
2e11bf7f31
|
|||
|
b6350e1170
|
|||
|
00c98599d8
|
|||
|
52af5b3f47
|
|||
|
99d51e77f0
|
|||
|
32174c3ccb
|
|||
|
eab28b1c44
|
|||
|
9d663b346e
|
|||
|
de8da30b71
|
|||
|
5c7b5c8e9d
|
|||
|
d8b380a9c0
|
|||
|
b0650b59b7
|
|||
|
ee5bba25b1
|
|||
|
13b65784b0
|
|||
|
c767e881ba
|
|||
|
7d93b84ca5
|
|||
|
587412b0be
|
|||
|
8950ee4644
|
|||
|
e2b9e27504
|
|||
|
fc15c1369f
|
|||
|
c505a71ab1
|
|||
|
d5eda18b84
|
|||
|
d6f7dab062
|
|||
|
d0de943224
|
|||
|
22823ff55f
|
|||
|
d1ceb9fa6f
|
|||
|
f776045d82
|
|||
|
ff4192b3fc
|
|||
|
d8e3ed76ee
|
|||
|
c4656c11d5
|
|||
|
f648c7444d
|
|||
|
bc6e196548
|
|||
|
498154eb15
|
|||
|
83a5e1b278
|
|||
|
70ddbb1bf5
|
|||
|
94f98ae34c
|
|||
|
aae9549f8a
|
|||
|
1052b54dfb
|
|||
|
0e3b77cc59
|
|||
|
39352b10bc
|
|||
|
c31a6cc09e
|
|||
|
cb031d3d66
|
|||
|
5cbb10b245
|
|||
|
8297cd01f4
|
|||
|
2b912cc38e
|
|||
|
60317ef61e
|
|||
|
0a868cf3dd
|
|||
|
3c6c3592a3
|
|||
|
2b38c0ecdc
|
|||
|
980f5feadd
|
|||
|
3da2197134
|
|||
|
78a02d9e3d
|
|||
|
91f3c88347
|
|||
|
9571c1a321
|
|||
|
3614d12466
|
|||
|
a29b92984d
|
|||
|
8f3ad44d34
|
|||
|
43fce477fd
|
|||
|
3b5f4b8fa4
|
|||
|
681cbcb117
|
|||
|
b52af2bea8
|
|||
|
9cc7c52061
|
|||
|
d83ca9a3f5
|
|||
|
72cff90ae0
|
|||
|
e34911fda4
|
|||
|
f51e6789f3
|
|||
|
ac129e39ed
|
|||
|
a022550c4e
|
|||
|
237612fd4c
|
|||
|
61325ee8d7
|
|||
|
ee4fce8541
|
|||
|
63f6aa0f65
|
|||
|
896310a2d4
|
|||
|
d2f7e1a376
|
|||
|
a6a67b8543
|
|||
|
b65bf47e90
|
|||
|
ae0c0f0914
|
|||
|
507ec8ffd9
|
|||
|
6c96ba0e0f
|
|||
|
67102b0967
|
|||
|
2fc8710264
|
|||
|
c5c0b7b797
|
|||
|
fd58681a07
|
|||
|
1d6b1fb341
|
|||
|
6edbeb167b
|
|||
|
fecc2d8652
|
|||
|
5419adee40
|
|||
|
9132392d92
|
|||
|
9bb15ae4d2
|
|||
|
8708d16dac
|
|||
|
567657e500
|
|||
|
85b8906afa
|
|||
|
f6b9e81440
|
|||
|
7d95bb4a75
|
|||
|
accb90ca63
|
|||
|
f15f664b4e
|
|||
|
94f261cf6f
|
|||
|
c9c98cd6e6
|
|||
|
dd9bcc009a
|
|||
|
2c6036f39f
|
|||
|
c3e1e8d1b9
|
|||
|
9ae8b73a02
|
|||
|
6d7564e860
|
|||
|
f083a22def
|
|||
|
c72cc5de43
|
|||
|
bcd65b482f
|
|||
|
f91b94872d
|
|||
|
fa1b610684
|
|||
|
3eaae0b22d
|
|||
|
eb3b4f7531
|
|||
|
c432a022cf
|
|||
|
1f6d73234d
|
|||
|
4c1a40a877
|
|||
|
2e70156bae
|
|||
|
662d8068f9
|
|||
|
b218f3aaea
|
|||
|
66b4931d08
|
|||
|
594f7abdca
|
|||
|
59278188da
|
|||
|
7532efdc28
|
|||
|
6204949bdc
|
|||
|
2f89e5f8c4
|
|||
|
924bd28512
|
|||
|
85dab64bcd
|
|||
|
71d5a5f44b
|
|||
|
26f39cf61e
|
|||
|
35900f858d
|
|||
|
6625a545ea
|
|||
|
8a06e4560d
|
|||
|
946d72b66b
|
|||
|
4e46b7fd3a
|
|||
|
236cb914c5
|
|||
|
426a79f3a1
|
|||
|
2b16ceb583
|
|||
|
6597665864
|
|||
|
43f069962a
|
|||
|
8359fa14e2
|
|||
|
f9f1e027e4
|
|||
|
b7dc8a7345
|
|||
|
efa66e7347
|
|||
|
13c0c4926f
|
|||
|
727fc66b7d
|
|||
|
aa411bb43b
|
|||
|
122f813a48
|
|||
|
916adf37ee
|
|||
|
6d3736c6db
|
|||
|
ca3242c568
|
|||
|
ff84a3bb94
|
|||
|
84136a4af6
|
|||
|
9c42e82508
|
|||
|
90c2a071cd
|
|||
|
ef6d2e2179
|
|||
|
7a67120d15
|
|||
|
0758715282
|
|||
|
7bfdc0f222
|
|||
|
5806ad0bc0
|
|||
|
89f2be5a48
|
|||
|
3313cb76cb
|
|||
|
2993952882
|
|||
|
06a7210579
|
|||
|
8f0492f03b
|
|||
|
1db6fe09da
|
|||
|
8667e9b168
|
|||
|
ce481fbc9e
|
|||
|
4790958b4d
|
|||
|
1b76daf66a
|
|||
|
cc710bc74f
|
|||
|
4d34992d81
|
|||
|
711aa3e3e0
|
|||
|
1ccafaf534
|
|||
|
e0d7305d3c
|
|||
|
9723f07d80
|
|||
|
ba23808419
|
|||
|
f1faaabd1d
|
|||
|
16c5c65001
|
|||
|
13d57aebfa
|
|||
|
8cfb2d4f54
|
|||
|
ab40e8e3ec
|
|||
|
49166c19b9
|
|||
|
b7feeff19c
|
|||
|
4509ba8a61
|
|||
|
d840d5dbca
|
|||
|
a8ec0e6b10
|
|||
|
d15a13c429
|
|||
|
181c3780df
|
|||
|
a72524ce22
|
|||
|
f60d4b9bc9
|
|||
|
bcf208b08e
|
|||
|
6fa2e207a0
|
|||
|
4adbeb5e17
|
|||
|
8a091a2bfe
|
|||
|
b59ee1ed72
|
|||
|
9279a2ed8b
|
|||
|
d23aff0cbe
|
|||
|
fc3e982361
|
|||
|
d6c6ac50b8
|
|||
|
e4e5e1d05c
|
6
.gitattributes
vendored
6
.gitattributes
vendored
@@ -1,4 +1,2 @@
|
||||
etcnixos/secrets/secureboot.tar filter=git-crypt diff=git-crypt
|
||||
etcnixos/secrets/wifi-passwords.nix filter=git-crypt diff=git-crypt
|
||||
etcnixos/secrets/disk-password filter=git-crypt diff=git-crypt
|
||||
etcnixos/secrets/password-hash filter=git-crypt diff=git-crypt
|
||||
/system/secrets/** filter=git-crypt diff=git-crypt
|
||||
/home-manager/secrets/** filter=git-crypt diff=git-crypt
|
||||
|
||||
@@ -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" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
modulesPath,
|
||||
...
|
||||
}:
|
||||
{
|
||||
fileSystems."/" = {
|
||||
device = "/dev/disk/by-uuid/ff51be5a-b87b-4e6a-9c1d-796ceeaca153";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" = {
|
||||
device = "/dev/disk/by-uuid/3D37-E610";
|
||||
fsType = "vfat";
|
||||
options = [
|
||||
"fmask=0022"
|
||||
"dmask=0022"
|
||||
];
|
||||
};
|
||||
|
||||
fileSystems."/media/games" = {
|
||||
device = "/dev/disk/by-uuid/1878136e-765d-4784-b204-3536ab4fdac8";
|
||||
fsType = "f2fs";
|
||||
options = [ "nofail" ];
|
||||
};
|
||||
|
||||
}
|
||||
Binary file not shown.
@@ -1,55 +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";
|
||||
|
||||
services.greetd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default_session = {
|
||||
command = "${lib.getExe pkgs.greetd.tuigreet} --time --cmd niri-session";
|
||||
user = username;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
system.activationScripts = {
|
||||
# FIX: https://github.com/NixOS/nix/issues/2982
|
||||
"profile-channel-dummy".text = ''
|
||||
#!/bin/sh
|
||||
mkdir -p /nix/var/nix/profiles/per-user/root/channels
|
||||
'';
|
||||
};
|
||||
|
||||
# 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;
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
username,
|
||||
inputs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
./common.nix
|
||||
./hardware_desktop.nix
|
||||
./no-rgb.nix
|
||||
./vr.nix
|
||||
|
||||
inputs.nixos-hardware.nixosModules.common-cpu-amd-pstate
|
||||
inputs.nixos-hardware.nixosModules.common-cpu-amd-zenpower
|
||||
];
|
||||
networking.hostId = "abf570f9";
|
||||
boot = {
|
||||
kernelModules = [
|
||||
# kernel module for case fan control
|
||||
"nct6775"
|
||||
];
|
||||
};
|
||||
|
||||
# services.openssh = {
|
||||
# enable = true;
|
||||
# ports = [ 22 ];
|
||||
# settings = {
|
||||
# PasswordAuthentication = true;
|
||||
# AllowUsers = null; # Allows all users by default. Can be [ "user1" "user2" ]
|
||||
# UseDns = true;
|
||||
# X11Forwarding = false;
|
||||
# PermitRootLogin = "no"; # "yes", "without-password", "prohibit-password", "forced-commands-only", "no"
|
||||
# };
|
||||
# };
|
||||
|
||||
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\"";
|
||||
|
||||
# control case fans with gpu temperature
|
||||
# I have case fans attached to my gpu for better cooling
|
||||
hardware.fancontrol = {
|
||||
enable = false;
|
||||
config =
|
||||
let
|
||||
select_hwmon = "hwmon/hwmon[[:print:]]*";
|
||||
gpu_path = "/sys/bus/pci/drivers/amdgpu/0000:0c:00.0/${select_hwmon}";
|
||||
mobo_path = "/sys/devices/platform/nct6775.656/${select_hwmon}";
|
||||
fan_speed = "${mobo_path}/pwm4";
|
||||
in
|
||||
''
|
||||
INTERVAL=10
|
||||
FCTEMPS=${fan_speed}=${gpu_path}/temp1_input
|
||||
FCFANS= ${fan_speed}=${mobo_path}/fan4_input
|
||||
MINTEMP=${fan_speed}=40
|
||||
MAXTEMP=${fan_speed}=80
|
||||
MINSTART=${fan_speed}=150
|
||||
MINSTOP=${fan_speed}=0
|
||||
MAXPWM=${fan_speed}=255
|
||||
'';
|
||||
};
|
||||
|
||||
systemd.services.fancontrol.serviceConfig.ExecStartPre = "${lib.getExe pkgs.bash} -c \"sleep 3s\"";
|
||||
}
|
||||
@@ -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=";
|
||||
# };
|
||||
# }
|
||||
# ];
|
||||
}
|
||||
524
flake.lock
generated
524
flake.lock
generated
@@ -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": 1754269165,
|
||||
"narHash": "sha256-0tcS8FHd4QjbCVoxN9jI+PjHgA4vc/IjkUSp+N3zy0U=",
|
||||
"lastModified": 1771121070,
|
||||
"narHash": "sha256-aIlv7FRXF9q70DNJPI237dEDAznSKaXmL5lfK/Id/bI=",
|
||||
"owner": "ipetkov",
|
||||
"repo": "crane",
|
||||
"rev": "444e81206df3f7d92780680e45858e31d2f07a08",
|
||||
"rev": "a2812c19f1ed2e5ed5ce2ef7109798b575c180e1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -15,6 +37,28 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"deploy-rs": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1770019181,
|
||||
"narHash": "sha256-hwsYgDnby50JNVpTRYlF3UR/Rrpt01OrxVuryF40CFY=",
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"rev": "77c906c0ba56aabdbc72041bf9111b565cdd6171",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"disko": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -22,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": {
|
||||
@@ -36,6 +80,22 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"doomemacs": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1771637851,
|
||||
"narHash": "sha256-GmrqCINhfdO3EthpVG8ZsoTdfzj3vaEdz9soJwiI2HY=",
|
||||
"owner": "doomemacs",
|
||||
"repo": "doomemacs",
|
||||
"rev": "ac649cce2abd1eb9d6d3f161928f9a7665b63310",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "doomemacs",
|
||||
"repo": "doomemacs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"emacs-overlay": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -46,11 +106,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1760519558,
|
||||
"narHash": "sha256-BNUghToLW/CS+P0W9C4FTUrvH3t450VgFJxFy6z/aUU=",
|
||||
"lastModified": 1771728721,
|
||||
"narHash": "sha256-03w1Ka71dJlerySoIT5ZGm/+bx0qONZIjELY4ghkxIo=",
|
||||
"owner": "nix-community",
|
||||
"repo": "emacs-overlay",
|
||||
"rev": "04cf435756383e46051466944ab0b2b437bb6ec4",
|
||||
"rev": "d7e50ce0c6e1ca698217a251d432799683d23831",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -62,11 +122,11 @@
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1747046372,
|
||||
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
|
||||
"lastModified": 1733328505,
|
||||
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
|
||||
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -75,24 +135,55 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-parts": {
|
||||
"inputs": {
|
||||
"nixpkgs-lib": [
|
||||
"lanzaboote",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1754091436,
|
||||
"narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd",
|
||||
"lastModified": 1767039857,
|
||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
@@ -100,7 +191,7 @@
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"lanzaboote",
|
||||
"pre-commit-hooks-nix",
|
||||
"pre-commit",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
@@ -125,39 +216,102 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1758463745,
|
||||
"narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
|
||||
"lastModified": 1771683283,
|
||||
"narHash": "sha256-WxAEkAbo8dP7qiyPM6VN4ZGAxfuBVlNBNPkrqkrXVEc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
|
||||
"rev": "c6ed3eab64d23520bcbb858aa53fe2b533725d4a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-25.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"impermanence": {
|
||||
"inputs": {
|
||||
"home-manager": [
|
||||
"home-manager"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1769548169,
|
||||
"narHash": "sha256-03+JxvzmfwRu+5JafM0DLbxgHttOQZkUtDWBmeUkN8Y=",
|
||||
"owner": "nix-community",
|
||||
"repo": "impermanence",
|
||||
"rev": "7b1d382faf603b6d264f58627330f9faa5cba149",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "impermanence",
|
||||
"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",
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-parts": "flake-parts",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"pre-commit-hooks-nix": "pre-commit-hooks-nix",
|
||||
"pre-commit": "pre-commit",
|
||||
"rust-overlay": [
|
||||
"rust-overlay"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1756744479,
|
||||
"narHash": "sha256-EyZXusK/wRD3V9vDh00W2Re3Eg8UQ+LjVBQrrH9dq1U=",
|
||||
"lastModified": 1771492583,
|
||||
"narHash": "sha256-nQzvnU4BGu8dA6BsPPCqmVcab/3ebVmHtX3ZWbW3Hxc=",
|
||||
"owner": "nix-community",
|
||||
"repo": "lanzaboote",
|
||||
"rev": "747b7912f49e2885090c83364d88cf853a020ac1",
|
||||
"rev": "5e9380994665ef66c87ab8e22c913ff837174ce4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -166,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",
|
||||
@@ -180,11 +356,11 @@
|
||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1760529168,
|
||||
"narHash": "sha256-ZYtMroQXu6VBQkLb5UyuxxtvqUCttPrbfzMy+XLERFU=",
|
||||
"lastModified": 1771638124,
|
||||
"narHash": "sha256-rIF69lE48tBvOMFiIyserOa0MF3SXh1ZiRqv7WqlUew=",
|
||||
"owner": "sodiboo",
|
||||
"repo": "niri-flake",
|
||||
"rev": "645aadf4f84988c9f1aa0d49b30702e52d00b656",
|
||||
"rev": "a1dac2b08c329af22200104c3c4b18de5ded6034",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -213,11 +389,11 @@
|
||||
"niri-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1760524031,
|
||||
"narHash": "sha256-hcyRViwdsrNUjHTcY0VGygcAawcyU4zYEq7ZZObFwkw=",
|
||||
"lastModified": 1771305475,
|
||||
"narHash": "sha256-lqweVTwHhYc+9T33cysp38gVwxaibGJHriOPZXWyhCY=",
|
||||
"owner": "YaLTeR",
|
||||
"repo": "niri",
|
||||
"rev": "2776005c5fc4fbb85636672213b8b84a319dfb01",
|
||||
"rev": "a2a52911757cb3b497db9407592f9b4c439571ea",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -226,13 +402,38 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-doom-emacs-unstraightened": {
|
||||
"inputs": {
|
||||
"doomemacs": "doomemacs",
|
||||
"emacs-overlay": [
|
||||
"emacs-overlay"
|
||||
],
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1771663801,
|
||||
"narHash": "sha256-gh0OVgAERhv1uSXzTgd0p7GioEG1Jg44FVxc72aM//A=",
|
||||
"owner": "marienz",
|
||||
"repo": "nix-doom-emacs-unstraightened",
|
||||
"rev": "0bf7a181e28a8c3d1e89b18f79b15d516f2fb670",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "marienz",
|
||||
"repo": "nix-doom-emacs-unstraightened",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
@@ -241,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": 1760106635,
|
||||
"narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=",
|
||||
"lastModified": 1771423359,
|
||||
"narHash": "sha256-yRKJ7gpVmXbX2ZcA8nFi6CMPkJXZGjie2unsiMzj3Ig=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903",
|
||||
"rev": "740a22363033e9f1bb6270fbfb5a9574067af15b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -259,26 +482,65 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1760423683,
|
||||
"narHash": "sha256-Tb+NYuJhWZieDZUxN6PgglB16yuqBYQeMJyYBGCXlt8=",
|
||||
"lastModified": 1771369470,
|
||||
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a493e93b4a259cd9fea8073f89a7ed9b1c5a1da2",
|
||||
"rev": "0182a361324364ae3f436a63005877674cf45efb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-25.05",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"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",
|
||||
@@ -286,11 +548,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1750779888,
|
||||
"narHash": "sha256-wibppH3g/E2lxU43ZQHC5yA/7kIKLGxVEnsnVK1BtRg=",
|
||||
"lastModified": 1770726378,
|
||||
"narHash": "sha256-kck+vIbGOaM/dHea7aTBxdFYpeUl/jHOy5W3eyRvVx8=",
|
||||
"owner": "cachix",
|
||||
"repo": "pre-commit-hooks.nix",
|
||||
"rev": "16ec914f6fb6f599ce988427d9d94efddf25fe6d",
|
||||
"rev": "5eaaedde414f6eb1aea8b8525c466dc37bba95ae",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -301,14 +563,22 @@
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"deploy-rs": "deploy-rs",
|
||||
"disko": "disko",
|
||||
"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"
|
||||
}
|
||||
@@ -320,11 +590,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1760495781,
|
||||
"narHash": "sha256-3OGPAQNJswy6L4VJyX3U9/z7fwgPFvK6zQtB2NHBV0Y=",
|
||||
"lastModified": 1771729765,
|
||||
"narHash": "sha256-HNsDSR5bhLSrIpi9bTb2uTK1qnPo1xFSBxs6YmFyprk=",
|
||||
"owner": "oxalica",
|
||||
"repo": "rust-overlay",
|
||||
"rev": "11e0852a2aa3a65955db5824262d76933750e299",
|
||||
"rev": "be926cb1a76e8450ab2b92121b2e88d09fa4d41c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -333,6 +603,120 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_2": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"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"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"xwayland-satellite-stable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@@ -353,11 +737,11 @@
|
||||
"xwayland-satellite-unstable": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1759707084,
|
||||
"narHash": "sha256-0pkftKs6/LReNvxw7DVTN2AJEheZVgyeK0Aarbagi70=",
|
||||
"lastModified": 1771195969,
|
||||
"narHash": "sha256-BUE41HjLIGPjq3U8VXPjf8asH8GaMI7FYdgrIHKFMXA=",
|
||||
"owner": "Supreeeme",
|
||||
"repo": "xwayland-satellite",
|
||||
"rev": "a9188e70bd748118b4d56a529871b9de5adb9988",
|
||||
"rev": "536bd32efc935bf876d6de385ec18a1b715c9358",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -376,11 +760,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1760466542,
|
||||
"narHash": "sha256-q2QZhrrjHbvW4eFzoEGkj/wUHNU6bVGPyflurx5ka6U=",
|
||||
"lastModified": 1771719171,
|
||||
"narHash": "sha256-ZDE3//9Hg+9X5xXcDJ4k/d6qcOVQ4MrTmvf1zv/omZY=",
|
||||
"owner": "0xc000022070",
|
||||
"repo": "zen-browser-flake",
|
||||
"rev": "3446bcbf5f46ecb18e82244888730c4983c30b22",
|
||||
"rev": "2a71f2e720db962f2522b38704e23e11163e91ae",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
72
flake.nix
72
flake.nix
@@ -2,7 +2,7 @@
|
||||
description = "System nixOS flake";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
|
||||
lanzaboote = {
|
||||
url = "github:nix-community/lanzaboote";
|
||||
@@ -13,7 +13,7 @@
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-25.05";
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
@@ -46,6 +46,49 @@
|
||||
};
|
||||
|
||||
nix-flatpak.url = "github:gmodena/nix-flatpak/";
|
||||
|
||||
nix-doom-emacs-unstraightened = {
|
||||
url = "github:marienz/nix-doom-emacs-unstraightened";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
inputs.emacs-overlay.follows = "emacs-overlay";
|
||||
};
|
||||
|
||||
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 =
|
||||
@@ -55,6 +98,8 @@
|
||||
lanzaboote,
|
||||
nixos-hardware,
|
||||
home-manager,
|
||||
deploy-rs,
|
||||
jovian-nixos,
|
||||
...
|
||||
}@inputs:
|
||||
let
|
||||
@@ -64,9 +109,11 @@
|
||||
"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:
|
||||
config
|
||||
@@ -77,6 +124,7 @@
|
||||
inputs
|
||||
username
|
||||
hostname
|
||||
niri-package
|
||||
;
|
||||
};
|
||||
modules = [
|
||||
@@ -87,17 +135,31 @@
|
||||
# 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
|
||||
];
|
||||
};
|
||||
}
|
||||
) { } hostnames;
|
||||
|
||||
# Deploy-rs configuration for yarn host only
|
||||
deploy.nodes.yarn = {
|
||||
hostname = "desktop";
|
||||
profiles.system = {
|
||||
sshUser = "root";
|
||||
path = deploy-rs.lib.${system}.activate.nixos self.nixosConfigurations.yarn;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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; [
|
||||
|
||||
@@ -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
|
||||
@@ -62,7 +64,7 @@
|
||||
|
||||
#fonts
|
||||
noto-fonts
|
||||
noto-fonts-emoji
|
||||
noto-fonts-color-emoji
|
||||
liberation_ttf
|
||||
|
||||
#for ebook reading
|
||||
@@ -131,6 +133,9 @@
|
||||
|
||||
# openstreetmap
|
||||
josm
|
||||
|
||||
# in unstable ATM, gotta wait for it to hit stable
|
||||
# video-trimmer
|
||||
]
|
||||
# all the fonts
|
||||
(builtins.filter lib.isDerivation (builtins.attrValues nerd-fonts))
|
||||
|
||||
@@ -10,7 +10,8 @@
|
||||
./desktop.nix
|
||||
./progs/borg.nix
|
||||
|
||||
./progs/framework-13-easyeffects.nix
|
||||
# effects headphones too
|
||||
# ./progs/framework-13-easyeffects.nix
|
||||
];
|
||||
|
||||
# media controls
|
||||
|
||||
@@ -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" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
@@ -20,7 +20,10 @@ let
|
||||
"cargo"
|
||||
];
|
||||
# thumbv7m-none-eabi target for stm32
|
||||
targets = [ "thumbv7m-none-eabi" ];
|
||||
targets = [
|
||||
"thumbv7m-none-eabi"
|
||||
"wasm32-unknown-unknown"
|
||||
];
|
||||
}))
|
||||
cargo-expand
|
||||
cargo-edit # cargo upgrade and stuff
|
||||
@@ -43,6 +46,8 @@ let
|
||||
marksman # markdown lsp
|
||||
typescript-language-server # typescript lsp
|
||||
cmake-language-server # cmake lsp
|
||||
|
||||
typescript
|
||||
];
|
||||
|
||||
java_tools = with pkgs; [
|
||||
@@ -109,6 +114,7 @@ in
|
||||
imports = [
|
||||
./progs/fish.nix
|
||||
./progs/helix.nix
|
||||
./progs/opencode.nix
|
||||
(
|
||||
{ ... }:
|
||||
{
|
||||
@@ -141,7 +147,7 @@ in
|
||||
sshfs
|
||||
|
||||
# nix formatter
|
||||
nixfmt-rfc-style
|
||||
nixfmt-tree
|
||||
|
||||
# serial viewer
|
||||
minicom
|
||||
@@ -152,9 +158,9 @@ in
|
||||
ffmpeg-full
|
||||
|
||||
# microcontroller tooling
|
||||
probe-rs
|
||||
probe-rs-tools
|
||||
|
||||
(python312.withPackages (
|
||||
(python313.withPackages (
|
||||
ps: with ps; [
|
||||
mypy # type checking
|
||||
types-requests # add types for requests methods
|
||||
@@ -212,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"]
|
||||
'';
|
||||
@@ -221,20 +227,21 @@ in
|
||||
programs.git = {
|
||||
enable = true;
|
||||
package = pkgs.git;
|
||||
userName = "Simon Gardling";
|
||||
userEmail = "titaniumtown@proton.me";
|
||||
|
||||
# better way to view diffs
|
||||
delta.enable = true;
|
||||
|
||||
lfs.enable = true;
|
||||
|
||||
extraConfig = {
|
||||
ignores = [ ".sisyphus" ];
|
||||
|
||||
settings = {
|
||||
init = {
|
||||
# master -> main
|
||||
defaultBranch = "main";
|
||||
};
|
||||
push.autoSetupRemote = true;
|
||||
user = {
|
||||
name = "Simon Gardling";
|
||||
email = "titaniumtown@proton.me";
|
||||
};
|
||||
};
|
||||
|
||||
# gpg signing keys
|
||||
@@ -243,4 +250,10 @@ in
|
||||
signByDefault = true;
|
||||
};
|
||||
};
|
||||
|
||||
# better way to view diffs
|
||||
programs.delta = {
|
||||
enable = true;
|
||||
enableGitIntegration = true;
|
||||
};
|
||||
}
|
||||
|
||||
86
home-manager/progs/doom.d/config.el
Normal file
86
home-manager/progs/doom.d/config.el
Normal file
@@ -0,0 +1,86 @@
|
||||
;;; $DOOMDIR/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; Place your private configuration here! Remember, you do not need to run 'doom
|
||||
;; sync' after modifying this file!
|
||||
|
||||
|
||||
;; Some functionality uses this to identify you, e.g. GPG configuration, email
|
||||
;; clients, file templates and snippets. It is optional.
|
||||
;; (setq user-full-name "John Doe"
|
||||
;; user-mail-address "john@doe.com")
|
||||
|
||||
;; Doom exposes five (optional) variables for controlling fonts in Doom:
|
||||
;;
|
||||
;; - `doom-font' -- the primary font to use
|
||||
;; - `doom-variable-pitch-font' -- a non-monospace font (where applicable)
|
||||
;; - `doom-big-font' -- used for `doom-big-font-mode'; use this for
|
||||
;; presentations or streaming.
|
||||
;; - `doom-symbol-font' -- for symbols
|
||||
;; - `doom-serif-font' -- for the `fixed-pitch-serif' face
|
||||
;;
|
||||
;; See 'C-h v doom-font' for documentation and more examples of what they
|
||||
;; accept. For example:
|
||||
;;
|
||||
;;(setq doom-font (font-spec :family "Fira Code" :size 12 :weight 'semi-light)
|
||||
;; doom-variable-pitch-font (font-spec :family "Fira Sans" :size 13))
|
||||
;;
|
||||
;; If you or Emacs can't find your font, use 'M-x describe-font' to look them
|
||||
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
|
||||
;; refresh your font settings. If Emacs still can't find your font, it likely
|
||||
;; wasn't installed correctly. Font issues are rarely Doom issues!
|
||||
|
||||
;; There are two ways to load a theme. Both assume the theme is installed and
|
||||
;; available. You can either set `doom-theme' or manually load a theme with the
|
||||
;; `load-theme' function. This is the default:
|
||||
(setq doom-theme 'doom-one)
|
||||
|
||||
;; This determines the style of line numbers in effect. If set to `nil', line
|
||||
;; numbers are disabled. For relative line numbers, set this to `relative'.
|
||||
(setq display-line-numbers-type t)
|
||||
|
||||
;; If you use `org' and don't want your org files in the default location below,
|
||||
;; change `org-directory'. It must be set before org loads!
|
||||
(setq org-directory "~/org/")
|
||||
|
||||
|
||||
;; Whenever you reconfigure a package, make sure to wrap your config in an
|
||||
;; `after!' block, otherwise Doom's defaults may override your settings. E.g.
|
||||
;;
|
||||
;; (after! PACKAGE
|
||||
;; (setq x y))
|
||||
;;
|
||||
;; The exceptions to this rule:
|
||||
;;
|
||||
;; - Setting file/directory variables (like `org-directory')
|
||||
;; - Setting variables which explicitly tell you to set them before their
|
||||
;; package is loaded (see 'C-h v VARIABLE' to look up their documentation).
|
||||
;; - Setting doom variables (which start with 'doom-' or '+').
|
||||
;;
|
||||
;; Here are some additional functions/macros that will help you configure Doom.
|
||||
;;
|
||||
;; - `load!' for loading external *.el files relative to this one
|
||||
;; - `use-package!' for configuring packages
|
||||
;; - `after!' for running code after a package has loaded
|
||||
;; - `add-load-path!' for adding directories to the `load-path', relative to
|
||||
;; this file. Emacs searches the `load-path' when you load packages with
|
||||
;; `require' or `use-package'.
|
||||
;; - `map!' for binding new keys
|
||||
;;
|
||||
;; To get information about any of these functions/macros, move the cursor over
|
||||
;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k').
|
||||
;; This will open documentation for it, including demos of how they are used.
|
||||
;; Alternatively, use `C-h o' to look up a symbol (functions, variables, faces,
|
||||
;; etc).
|
||||
;;
|
||||
;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how
|
||||
;; they are implemented.
|
||||
|
||||
|
||||
;; Ctrl + Shift + / = redo
|
||||
;; Ctrl + / = undo
|
||||
(after! undo-fu
|
||||
(map! :map undo-fu-mode-map "C-?" #'undo-fu-only-redo))
|
||||
|
||||
|
||||
;; line wrapping
|
||||
(visual-line-mode t)
|
||||
195
home-manager/progs/doom.d/init.el
Normal file
195
home-manager/progs/doom.d/init.el
Normal file
@@ -0,0 +1,195 @@
|
||||
;;; init.el -*- lexical-binding: t; -*-
|
||||
|
||||
;; This file controls what Doom modules are enabled and what order they load
|
||||
;; in. Remember to run 'doom sync' after modifying it!
|
||||
|
||||
;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's
|
||||
;; documentation. There you'll find a link to Doom's Module Index where all
|
||||
;; of our modules are listed, including what flags they support.
|
||||
|
||||
;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or
|
||||
;; 'C-c c k' for non-vim users) to view its documentation. This works on
|
||||
;; flags as well (those symbols that start with a plus).
|
||||
;;
|
||||
;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its
|
||||
;; directory (for easy access to its source code).
|
||||
|
||||
(doom! :input
|
||||
;;bidi ; (tfel ot) thgir etirw uoy gnipleh
|
||||
;;chinese
|
||||
;;japanese
|
||||
;;layout ; auie,ctsrnm is the superior home row
|
||||
|
||||
:completion
|
||||
;;company ; the ultimate code completion backend
|
||||
(corfu +orderless) ; complete with cap(f), cape and a flying feather!
|
||||
;;helm ; the *other* search engine for love and life
|
||||
;;ido ; the other *other* search engine...
|
||||
;;ivy ; a search engine for love and life
|
||||
vertico ; the search engine of the future
|
||||
|
||||
:ui
|
||||
;;deft ; notational velocity for Emacs
|
||||
doom ; what makes DOOM look the way it does
|
||||
doom-dashboard ; a nifty splash screen for Emacs
|
||||
;;doom-quit ; DOOM quit-message prompts when you quit Emacs
|
||||
;;(emoji +unicode) ; 🙂
|
||||
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
|
||||
indent-guides ; highlighted indent columns
|
||||
ligatures ; ligatures and symbols to make your code pretty again
|
||||
;;minimap ; show a map of the code on the side
|
||||
modeline ; snazzy, Atom-inspired modeline, plus API
|
||||
;;nav-flash ; blink cursor line after big motions
|
||||
;;neotree ; a project drawer, like NERDTree for vim
|
||||
ophints ; highlight the region an operation acts on
|
||||
(popup +defaults) ; tame sudden yet inevitable temporary windows
|
||||
smooth-scroll ; So smooth you won't believe it's not butter
|
||||
;;tabs ; a tab bar for Emacs
|
||||
;;treemacs ; a project drawer, like neotree but cooler
|
||||
unicode ; extended unicode support for various languages
|
||||
(vc-gutter +pretty) ; vcs diff in the fringe
|
||||
vi-tilde-fringe ; fringe tildes to mark beyond EOB
|
||||
;;window-select ; visually switch windows
|
||||
workspaces ; tab emulation, persistence & separate workspaces
|
||||
;;zen ; distraction-free coding or writing
|
||||
|
||||
:editor
|
||||
(evil +everywhere); come to the dark side, we have cookies
|
||||
file-templates ; auto-snippets for empty files
|
||||
fold ; (nigh) universal code folding
|
||||
(format +onsave) ; automated prettiness
|
||||
;;god ; run Emacs commands without modifier keys
|
||||
;;lispy ; vim for lisp, for people who don't like vim
|
||||
;;multiple-cursors ; editing in many places at once
|
||||
;;objed ; text object editing for the innocent
|
||||
;;parinfer ; turn lisp into python, sort of
|
||||
;;rotate-text ; cycle region at point between text candidates
|
||||
snippets ; my elves. They type so I don't have to
|
||||
word-wrap ; soft wrapping with language-aware indent
|
||||
|
||||
:emacs
|
||||
dired ; making dired pretty [functional]
|
||||
electric ; smarter, keyword-based electric-indent
|
||||
;;eww ; the internet is gross
|
||||
;;ibuffer ; interactive buffer management
|
||||
undo ; persistent, smarter undo for your inevitable mistakes
|
||||
vc ; version-control and Emacs, sitting in a tree
|
||||
|
||||
:term
|
||||
;;eshell ; the elisp shell that works everywhere
|
||||
;;shell ; simple shell REPL for Emacs
|
||||
;;term ; basic terminal emulator for Emacs
|
||||
;;vterm ; the best terminal emulation in Emacs
|
||||
|
||||
:checkers
|
||||
syntax ; tasing you for every semicolon you forget
|
||||
(spell +flyspell) ; tasing you for misspelling mispelling
|
||||
grammar ; tasing grammar mistake every you make
|
||||
|
||||
:tools
|
||||
;;ansible
|
||||
;;biblio ; Writes a PhD for you (citation needed)
|
||||
;;collab ; buffers with friends
|
||||
;;debugger ; FIXME stepping through code, to help you add bugs
|
||||
;;direnv
|
||||
;;docker
|
||||
;;editorconfig ; let someone else argue about tabs vs spaces
|
||||
;;ein ; tame Jupyter notebooks with emacs
|
||||
(eval +overlay) ; run code, run (also, repls)
|
||||
lookup ; navigate your code and its documentation
|
||||
;;llm ; when I said you needed friends, I didn't mean...
|
||||
lsp ; M-x vscode
|
||||
magit ; a git porcelain for Emacs
|
||||
;;make ; run make tasks from Emacs
|
||||
;;pass ; password manager for nerds
|
||||
pdf ; pdf enhancements
|
||||
;;terraform ; infrastructure as code
|
||||
;;tmux ; an API for interacting with tmux
|
||||
tree-sitter ; syntax and parsing, sitting in a tree...
|
||||
;;upload ; map local to remote projects via ssh/ftp
|
||||
|
||||
:os
|
||||
(:if (featurep :system 'macos) macos) ; improve compatibility with macOS
|
||||
;;tty ; improve the terminal Emacs experience
|
||||
|
||||
:lang
|
||||
;;agda ; types of types of types of types...
|
||||
;;beancount ; mind the GAAP
|
||||
(cc +lsp) ; C > C++ == 1
|
||||
;;clojure ; java with a lisp
|
||||
;;common-lisp ; if you've seen one lisp, you've seen them all
|
||||
;;coq ; proofs-as-programs
|
||||
;;crystal ; ruby at the speed of c
|
||||
;;csharp ; unity, .NET, and mono shenanigans
|
||||
;;data ; config/data formats
|
||||
;;(dart +flutter) ; paint ui and not much else
|
||||
;;dhall
|
||||
;;elixir ; erlang done right
|
||||
;;elm ; care for a cup of TEA?
|
||||
emacs-lisp ; drown in parentheses
|
||||
;;erlang ; an elegant language for a more civilized age
|
||||
;;ess ; emacs speaks statistics
|
||||
;;factor
|
||||
;;faust ; dsp, but you get to keep your soul
|
||||
;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER)
|
||||
;;fsharp ; ML stands for Microsoft's Language
|
||||
;;fstar ; (dependent) types and (monadic) effects and Z3
|
||||
;;gdscript ; the language you waited for
|
||||
;;(go +lsp) ; the hipster dialect
|
||||
;;(graphql +lsp) ; Give queries a REST
|
||||
;;(haskell +lsp) ; a language that's lazier than I am
|
||||
;;hy ; readability of scheme w/ speed of python
|
||||
;;idris ; a language you can depend on
|
||||
json ; At least it ain't XML
|
||||
;;janet ; Fun fact: Janet is me!
|
||||
(java +lsp) ; the poster child for carpal tunnel syndrome
|
||||
(javascript +lsp +tree-sitter) ; all(hope(abandon(ye(who(enter(here))))))
|
||||
;;julia ; a better, faster MATLAB
|
||||
;;kotlin ; a better, slicker Java(Script)
|
||||
;;latex ; writing papers in Emacs has never been so fun
|
||||
;;lean ; for folks with too much to prove
|
||||
;;ledger ; be audit you can be
|
||||
;;lua ; one-based indices? one-based indices
|
||||
markdown ; writing docs for people to ignore
|
||||
;;nim ; python + lisp at the speed of c
|
||||
nix ; I hereby declare "nix geht mehr!"
|
||||
;;ocaml ; an objective camel
|
||||
org ; organize your plain life in plain text
|
||||
;;php ; perl's insecure younger brother
|
||||
;;plantuml ; diagrams for confusing people more
|
||||
;;graphviz ; diagrams for confusing yourself even more
|
||||
;;purescript ; javascript, but functional
|
||||
python ; beautiful is better than ugly
|
||||
;;qt ; the 'cutest' gui framework ever
|
||||
;;racket ; a DSL for DSLs
|
||||
;;raku ; the artist formerly known as perl6
|
||||
;;rest ; Emacs as a REST client
|
||||
rst ; ReST in peace
|
||||
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
|
||||
(rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
|
||||
;;scala ; java, but good
|
||||
;;(scheme +guile) ; a fully conniving family of lisps
|
||||
sh ; she sells {ba,z,fi}sh shells on the C xor
|
||||
;;sml
|
||||
;;solidity ; do you need a blockchain? No.
|
||||
;;swift ; who asked for emoji variables?
|
||||
;;terra ; Earth and Moon in alignment for performance.
|
||||
;;web ; the tubes
|
||||
yaml ; JSON, but readable
|
||||
;;zig ; C, but simpler
|
||||
|
||||
:email
|
||||
;;(mu4e +org +gmail)
|
||||
;;notmuch
|
||||
;;(wanderlust +gmail)
|
||||
|
||||
:app
|
||||
;;calendar
|
||||
;;emms
|
||||
;;everywhere ; *leave* Emacs!? You must be joking
|
||||
;;irc ; how neckbeards socialize
|
||||
;;(rss +org) ; emacs as an RSS reader
|
||||
|
||||
:config
|
||||
;;literate
|
||||
(default +bindings +smartparens))
|
||||
52
home-manager/progs/doom.d/packages.el
Normal file
52
home-manager/progs/doom.d/packages.el
Normal file
@@ -0,0 +1,52 @@
|
||||
;; -*- no-byte-compile: t; -*-
|
||||
;;; $DOOMDIR/packages.el
|
||||
|
||||
;; To install a package with Doom you must declare them here and run 'doom sync'
|
||||
;; on the command line, then restart Emacs for the changes to take effect -- or
|
||||
|
||||
|
||||
;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror:
|
||||
;; (package! some-package)
|
||||
|
||||
;; To install a package directly from a remote git repo, you must specify a
|
||||
;; `:recipe'. You'll find documentation on what `:recipe' accepts here:
|
||||
;; https://github.com/radian-software/straight.el#the-recipe-format
|
||||
;; (package! another-package
|
||||
;; :recipe (:host github :repo "username/repo"))
|
||||
|
||||
;; If the package you are trying to install does not contain a PACKAGENAME.el
|
||||
;; file, or is located in a subdirectory of the repo, you'll need to specify
|
||||
;; `:files' in the `:recipe':
|
||||
;; (package! this-package
|
||||
;; :recipe (:host github :repo "username/repo"
|
||||
;; :files ("some-file.el" "src/lisp/*.el")))
|
||||
|
||||
;; If you'd like to disable a package included with Doom, you can do so here
|
||||
;; with the `:disable' property:
|
||||
;; (package! builtin-package :disable t)
|
||||
|
||||
;; You can override the recipe of a built in package without having to specify
|
||||
;; all the properties for `:recipe'. These will inherit the rest of its recipe
|
||||
;; from Doom or MELPA/ELPA/Emacsmirror:
|
||||
;; (package! builtin-package :recipe (:nonrecursive t))
|
||||
;; (package! builtin-package-2 :recipe (:repo "myfork/package"))
|
||||
|
||||
;; Specify a `:branch' to install a package from a particular branch or tag.
|
||||
;; This is required for some packages whose default branch isn't 'master' (which
|
||||
;; our package manager can't deal with; see radian-software/straight.el#279)
|
||||
;; (package! builtin-package :recipe (:branch "develop"))
|
||||
|
||||
;; Use `:pin' to specify a particular commit to install.
|
||||
;; (package! builtin-package :pin "1a2b3c4d5e")
|
||||
|
||||
|
||||
;; Doom's packages are pinned to a specific commit and updated from release to
|
||||
;; release. The `unpin!' macro allows you to unpin single packages...
|
||||
;; (unpin! pinned-package)
|
||||
;; ...or multiple packages
|
||||
;; (unpin! pinned-package another-pinned-package)
|
||||
;; ...Or *all* packages (NOT RECOMMENDED; will likely break things)
|
||||
;; (unpin! t)
|
||||
|
||||
|
||||
(package! yuck-mode)
|
||||
@@ -6,27 +6,38 @@
|
||||
}:
|
||||
{
|
||||
imports = [
|
||||
inputs.nix-doom-emacs-unstraightened.homeModule
|
||||
(
|
||||
{ ... }:
|
||||
{
|
||||
nixpkgs.overlays = [
|
||||
inputs.nix-doom-emacs-unstraightened.overlays.default
|
||||
inputs.emacs-overlay.overlays.default
|
||||
];
|
||||
}
|
||||
)
|
||||
|
||||
];
|
||||
|
||||
programs.emacs = {
|
||||
programs.doom-emacs = {
|
||||
enable = true;
|
||||
package = pkgs.emacs-unstable-pgtk;
|
||||
extraPackages = epkgs: [
|
||||
epkgs.dracula-theme
|
||||
|
||||
pkgs.shellcheck
|
||||
doomDir = ./doom.d;
|
||||
emacs = pkgs.emacs-unstable-pgtk;
|
||||
extraPackages =
|
||||
epkgs:
|
||||
with epkgs;
|
||||
[
|
||||
dracula-theme
|
||||
treesit-grammars.with-all-grammars
|
||||
]
|
||||
++ (with pkgs; [
|
||||
shellcheck
|
||||
shfmt
|
||||
|
||||
# for file search
|
||||
pkgs.fd
|
||||
];
|
||||
extraConfig = "";
|
||||
fd
|
||||
|
||||
pandoc
|
||||
]);
|
||||
};
|
||||
}
|
||||
|
||||
58
home-manager/progs/eww/config/scripts/power_bat.rs
Executable file
58
home-manager/progs/eww/config/scripts/power_bat.rs
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env rust-script
|
||||
|
||||
use std::{fmt, fs::read_to_string, str::FromStr};
|
||||
|
||||
const BASE_PATH: &str = "/sys/class/power_supply/BAT1/";
|
||||
const CURRENT_NOW_PATH: &str = "current_now";
|
||||
const VOLTAGE_NOW_PATH: &str = "voltage_now";
|
||||
const STATUS_PATH: &str = "status";
|
||||
const FACTOR: f32 = 1e6_f32;
|
||||
|
||||
#[derive(Debug)]
|
||||
enum Status {
|
||||
Charging,
|
||||
Discharging,
|
||||
NotCharging,
|
||||
}
|
||||
|
||||
impl FromStr for Status {
|
||||
type Err = &'static str;
|
||||
|
||||
fn from_str(input: &str) -> Result<Status, Self::Err> {
|
||||
match input {
|
||||
"Charging" => Ok(Status::Charging),
|
||||
"Discharging" => Ok(Status::Discharging),
|
||||
"Not charging" => Ok(Status::NotCharging),
|
||||
_ => Err("unknown state"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Status {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fmt::Debug::fmt(self, f)
|
||||
}
|
||||
}
|
||||
|
||||
fn fetch_and_trim_into<T: FromStr<Err = impl fmt::Debug>>(path: &str) -> T {
|
||||
let mut content = read_to_string(BASE_PATH.to_owned() + path).unwrap();
|
||||
content.pop();
|
||||
T::from_str(&content).unwrap()
|
||||
}
|
||||
|
||||
fn fetch_bat_info(path: &str) -> f32 {
|
||||
let value: f32 = fetch_and_trim_into(path);
|
||||
value / FACTOR
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let current_now: f32 = fetch_bat_info(CURRENT_NOW_PATH);
|
||||
let voltage_now: f32 = fetch_bat_info(VOLTAGE_NOW_PATH);
|
||||
let watts: f32 = current_now * voltage_now;
|
||||
let status: Status = fetch_and_trim_into(STATUS_PATH);
|
||||
|
||||
println!(
|
||||
"voltage: {:.4}\ncurrent: {:.4}\nwatts: {:.4}\nstatus: {}",
|
||||
voltage_now, current_now, watts, status
|
||||
);
|
||||
}
|
||||
@@ -79,7 +79,7 @@
|
||||
:text "${bluetooth-name} ")))
|
||||
|
||||
; `FNR == 1 + head -c 30` so the name doesn't explode the screen
|
||||
(defpoll bluetooth-name :interval "10s" `bluetoothctl devices Connected | awk 'FNR == 1 {print substr($0,1,30)}'`)
|
||||
(defpoll bluetooth-name :interval "10s" `bluetoothctl devices Connected | awk '$1 == "Device" {print $0}' | cut -d' ' -f3-`)
|
||||
|
||||
(defwidget time []
|
||||
(box
|
||||
@@ -92,8 +92,7 @@
|
||||
|
||||
(defpoll time :interval "1s" `date +'{"long":"%a %b %e %H:%M:%S %Z %Y","hour":"%H","minute":"%M"}'`)
|
||||
|
||||
; TODO: make this a package or something, not using rust-script
|
||||
(defpoll powerstats :interval "2s" `~/Documents/power_bat.rs`)
|
||||
(defpoll powerstats :interval "2s" `power_bat`)
|
||||
|
||||
(defwidget battery []
|
||||
(box :space-evenly false
|
||||
|
||||
@@ -1,13 +1,40 @@
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
zsh
|
||||
bluez
|
||||
brightnessctl
|
||||
(callPackage ./power_bat.nix { })
|
||||
];
|
||||
|
||||
programs.eww = {
|
||||
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}"
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
4
home-manager/progs/eww/power_bat.nix
Normal file
4
home-manager/progs/eww/power_bat.nix
Normal file
@@ -0,0 +1,4 @@
|
||||
{ pkgs, lib, ... }:
|
||||
pkgs.writeShellScriptBin "power_bat" ''
|
||||
exec ${lib.getExe pkgs.rust-script} ${./config/scripts/power_bat.rs} "$@"
|
||||
''
|
||||
@@ -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;
|
||||
|
||||
@@ -36,10 +37,6 @@ in
|
||||
disable-primary = true;
|
||||
};
|
||||
|
||||
environment = {
|
||||
DISPLAY = ":0";
|
||||
};
|
||||
|
||||
# skip the hotkey menu thingy
|
||||
hotkey-overlay.skip-at-startup = true;
|
||||
|
||||
@@ -61,34 +58,7 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
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}"
|
||||
];
|
||||
}
|
||||
|
||||
# Xwayland on niri via xwayland-satellite
|
||||
{
|
||||
command = [
|
||||
(lib.getExe pkgs.xwayland-satellite)
|
||||
config.programs.niri.settings.environment.DISPLAY
|
||||
];
|
||||
}
|
||||
];
|
||||
xwayland-satellite.path = lib.getExe pkgs.xwayland-satellite;
|
||||
|
||||
window-rules = [
|
||||
{ draw-border-with-background = false; }
|
||||
@@ -140,6 +110,9 @@ in
|
||||
# Application launcher
|
||||
"Mod+Space".action = spawn (lib.getExe pkgs.fuzzel);
|
||||
|
||||
# TODO! make this work
|
||||
"Mod+E".action = spawn "${config.programs.doom-emacs.finalDoomPackage}/bin/doom-emacs";
|
||||
|
||||
"Mod+O".action = toggle-overview;
|
||||
|
||||
# open a terminal
|
||||
@@ -149,11 +122,11 @@ in
|
||||
"Mod+X".action = spawn (lib.getExe pkgs.swaylock);
|
||||
|
||||
# screenshotting
|
||||
"Print".action = screenshot;
|
||||
"Print".action.screenshot = [ ];
|
||||
|
||||
# https://github.com/sodiboo/niri-flake/commit/a7949bd0f5551fdfffd04cb9735ad3cd3167d624#r153571513
|
||||
# "Ctrl+Print".action = screenshot-screen;
|
||||
"Alt+Print".action = screenshot-window;
|
||||
"Alt+Print".action.screenshot-window = [ ];
|
||||
|
||||
# Volume control
|
||||
"XF86AudioRaiseVolume".action = spawn [
|
||||
|
||||
92
home-manager/progs/noctalia.nix
Normal file
92
home-manager/progs/noctalia.nix
Normal 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");
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
206
home-manager/progs/opencode.nix
Normal file
206
home-manager/progs/opencode.nix
Normal file
@@ -0,0 +1,206 @@
|
||||
{
|
||||
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.
|
||||
|
||||
## 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 = opus-model;
|
||||
# small model used for titles
|
||||
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 = {
|
||||
"openai/gpt-oss-20b:free" = { };
|
||||
};
|
||||
options = {
|
||||
# TODO! use agenix here instead
|
||||
apiKey = "{file:${../secrets/openrouter_api_key}}";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
BIN
home-manager/secrets/openrouter_api_key
Normal file
BIN
home-manager/secrets/openrouter_api_key
Normal file
Binary file not shown.
BIN
home-manager/secrets/steam-user-id
Normal file
BIN
home-manager/secrets/steam-user-id
Normal file
Binary file not shown.
@@ -6,40 +6,42 @@
|
||||
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;
|
||||
|
||||
nixpkgs.config.allowUnfree = 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.greetd = {
|
||||
services.kmscon.enable = true;
|
||||
|
||||
# Add niri to display manager session packages
|
||||
services.displayManager.sessionPackages = [ niri-package ];
|
||||
|
||||
programs = {
|
||||
gamescope = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default_session = {
|
||||
command = "${lib.getExe pkgs.greetd.tuigreet} --time --cmd niri-session";
|
||||
user = username;
|
||||
capSysNice = true;
|
||||
};
|
||||
steam = {
|
||||
enable = true;
|
||||
gamescopeSession.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -66,7 +68,7 @@
|
||||
|
||||
nix = {
|
||||
# optimize the store
|
||||
optimise.automatic = false;
|
||||
optimise.automatic = true;
|
||||
|
||||
# enable flakes!
|
||||
settings.experimental-features = [
|
||||
@@ -102,6 +104,7 @@
|
||||
};
|
||||
|
||||
initrd = {
|
||||
systemd.enable = true;
|
||||
compressor = "zstd";
|
||||
availableKernelModules = [
|
||||
"xhci_pci"
|
||||
@@ -117,7 +120,15 @@
|
||||
"ip_tables"
|
||||
"iptable_nat"
|
||||
"msr"
|
||||
"btusb"
|
||||
];
|
||||
|
||||
kernelParams = [
|
||||
# 1gb huge pages
|
||||
"hugepagesz=1G"
|
||||
"hugepages=3"
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
environment.etc = {
|
||||
@@ -153,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
|
||||
@@ -189,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;
|
||||
@@ -214,8 +232,6 @@
|
||||
services.gvfs.enable = true;
|
||||
programs.gphoto2.enable = true;
|
||||
|
||||
programs.adb.enable = true;
|
||||
|
||||
# Enable thermal data
|
||||
services.thermald.enable = true;
|
||||
|
||||
@@ -228,7 +244,7 @@
|
||||
|
||||
# System packages
|
||||
environment.systemPackages = with pkgs; [
|
||||
mullvad-vpn
|
||||
# mullvad-vpn is provided by services.mullvad-vpn.enable
|
||||
|
||||
#secureboot ctl
|
||||
sbctl
|
||||
@@ -245,6 +261,9 @@
|
||||
|
||||
# needed for home-manager
|
||||
git
|
||||
|
||||
tmux
|
||||
android-tools
|
||||
];
|
||||
|
||||
# wayland with electron/chromium applications
|
||||
52
system/disk_yarn.nix
Normal file
52
system/disk_yarn.nix
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
disko.devices = {
|
||||
disk = {
|
||||
main = {
|
||||
type = "disk";
|
||||
content = {
|
||||
type = "gpt";
|
||||
partitions = {
|
||||
ESP = {
|
||||
type = "EF00";
|
||||
size = "500M";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "vfat";
|
||||
mountpoint = "/boot";
|
||||
};
|
||||
};
|
||||
persistent = {
|
||||
size = "100%";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "f2fs";
|
||||
mountpoint = "/persistent";
|
||||
};
|
||||
};
|
||||
nix = {
|
||||
size = "200G";
|
||||
content = {
|
||||
type = "filesystem";
|
||||
format = "f2fs";
|
||||
mountpoint = "/nix";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
nodev = {
|
||||
"/" = {
|
||||
fsType = "tmpfs";
|
||||
mountOptions = [
|
||||
"defaults"
|
||||
"size=2G"
|
||||
"mode=755"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
fileSystems."/persistent".neededForBoot = true;
|
||||
fileSystems."/nix".neededForBoot = true;
|
||||
}
|
||||
38
system/impermanence.nix
Normal file
38
system/impermanence.nix
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
username,
|
||||
...
|
||||
}:
|
||||
{
|
||||
environment.persistence."/persistent" = {
|
||||
hideMounts = true;
|
||||
directories = [
|
||||
"/var/log"
|
||||
"/var/lib/systemd/coredump"
|
||||
"/var/lib/nixos"
|
||||
"/var/lib/systemd/timers"
|
||||
];
|
||||
|
||||
files = [
|
||||
"/etc/ssh/ssh_host_ed25519_key"
|
||||
"/etc/ssh/ssh_host_ed25519_key.pub"
|
||||
"/etc/ssh/ssh_host_rsa_key"
|
||||
"/etc/ssh/ssh_host_rsa_key.pub"
|
||||
"/etc/machine-id"
|
||||
];
|
||||
};
|
||||
|
||||
# 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 = [
|
||||
"d /etc 755 root"
|
||||
];
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
};
|
||||
}
|
||||
BIN
system/secrets/wifi-passwords.nix
Normal file
BIN
system/secrets/wifi-passwords.nix
Normal file
Binary file not shown.
@@ -21,5 +21,8 @@
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
steamtinkerlaunch
|
||||
mangohud
|
||||
goverlay
|
||||
yad
|
||||
];
|
||||
}
|
||||
43
system/system-mreow.nix
Normal file
43
system/system-mreow.nix
Normal 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
175
system/system-yarn.nix
Normal 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
39
system/vm.nix
Normal 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=";
|
||||
# };
|
||||
# }
|
||||
# ];
|
||||
}
|
||||
@@ -14,15 +14,6 @@
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
|
||||
package = (
|
||||
# https://github.com/NixOS/nixpkgs/pull/391367
|
||||
pkgs.wivrn.overrideAttrs (old: {
|
||||
cmakeFlags = old.cmakeFlags ++ [
|
||||
(lib.cmakeFeature "OPENCOMPOSITE_SEARCH_PATH" "${pkgs.opencomposite}/lib/opencomposite")
|
||||
];
|
||||
})
|
||||
);
|
||||
|
||||
# Write information to /etc/xdg/openxr/1/active_runtime.json, VR applications
|
||||
# will automatically read this and work with wivrn
|
||||
defaultRuntime = true;
|
||||
@@ -51,7 +42,7 @@
|
||||
}
|
||||
];
|
||||
|
||||
application = [ pkgs.wlx-overlay-s ];
|
||||
application = [ pkgs.wayvr ];
|
||||
};
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user