Compare commits

...

4 commits

Author SHA1 Message Date
e07d1e3187
update liminal, fix 1p fingerprint 2026-06-11 07:07:23 -07:00
8b673159c2
make more room on ruil 2026-05-12 08:18:34 -07:00
73b91347ec
buncha stuff 2026-05-09 09:15:55 -07:00
c53e9d23d4
Messing with llama stuff 2026-04-11 14:14:35 -07:00
15 changed files with 1090 additions and 895 deletions

View file

@ -21,6 +21,7 @@ in
[ [
./hardware-configuration.nix ./hardware-configuration.nix
"${impermanence}/nixos.nix" "${impermanence}/nixos.nix"
#./lemonade.nix
]; ];
boot.loader.grub.enable = true; boot.loader.grub.enable = true;

309
flake.lock generated
View file

@ -7,11 +7,11 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1770895252, "lastModified": 1779666993,
"narHash": "sha256-TUGZVDcC5xsrWVnpBNosAG1cTy+aWchCWXPyeLZdnGM=", "narHash": "sha256-W0yA7Y37oj5BBzl4ojO8dtv9MuOvdrIZDxtRjs7kpdg=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "2c86d41d07471f518e24f5cd1f586e4d2a32d12c", "rev": "9b7f47f7f394dce0a17a7b161e0d2fe391ce72b3",
"revCount": 1331, "revCount": 1366,
"type": "git", "type": "git",
"url": "https://codeberg.org/LGFae/awww" "url": "https://codeberg.org/LGFae/awww"
}, },
@ -20,28 +20,6 @@
"url": "https://codeberg.org/LGFae/awww" "url": "https://codeberg.org/LGFae/awww"
} }
}, },
"beads-flake": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs-25-11"
]
},
"locked": {
"lastModified": 1770530478,
"narHash": "sha256-zopOpBqaHC2t+tGYtrHyalOUsFDZai2NmZZOKJs2vfQ=",
"owner": "steveyegge",
"repo": "beads",
"rev": "c064f2aa99814d65a439b7b700fa02c44c4e0bb2",
"type": "github"
},
"original": {
"owner": "steveyegge",
"ref": "v0.49.6",
"repo": "beads",
"type": "github"
}
},
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -76,41 +54,23 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"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"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs-25-11" "nixpkgs-26-05"
] ]
}, },
"locked": { "locked": {
"lastModified": 1773681845, "lastModified": 1779726825,
"narHash": "sha256-o8hrZrigP0JYcwnglCp8Zi8jQafWsxbDtRRPzuVwFxY=", "narHash": "sha256-RUkMrREjKDQrA+dA9+xZviGAxM5W1aVdyOr/bSYpHrE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "0759e0e137305bc9d0c52c204c6d8dffe6f601a6", "rev": "b179bde238977f7d4454fc770b1a727eaf55111c",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-25.11", "ref": "release-26.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@ -204,11 +164,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1693660503, "lastModified": 1737420293,
"narHash": "sha256-B/g2V4v6gjirFmy+I5mwB2bCYc0l3j5scVfwgl6WOl8=", "narHash": "sha256-F1G5ifvqTpJq7fdkT34e/Jy9VCyzd5XfJ9TO8fHhJWE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-github-actions", "repo": "nix-github-actions",
"rev": "bd5bdbb52350e145c526108f4ef192eb8e554fa0", "rev": "f4158fa080ef4503c8f4c820967d946c2af31ec9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -217,31 +177,34 @@
"type": "github" "type": "github"
} }
}, },
"nix-steipete-tools": { "nix-openclaw-tools": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_4" "nixpkgs": "nixpkgs_5"
}, },
"locked": { "locked": {
"lastModified": 1773561580, "lastModified": 1778060041,
"narHash": "sha256-wT0bKTp45YnMkc4yXQvk943Zz/rksYiIjEXGdWzxnic=", "narHash": "sha256-tXWkN1VnwFG8XlRqW/e7VwbKnUfyU9tB7YDm9QHJXTY=",
"owner": "openclaw", "owner": "openclaw",
"repo": "nix-steipete-tools", "repo": "nix-openclaw-tools",
"rev": "cd4c429ff3b3aaef9f92e59812cf2baf5704b86f", "rev": "4c1cee3c7eaf68f9de0f756be1484534f5bb5f34",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "openclaw", "owner": "openclaw",
"repo": "nix-steipete-tools", "repo": "nix-openclaw-tools",
"type": "github" "type": "github"
} }
}, },
"nixos-hardware": { "nixos-hardware": {
"inputs": {
"nixpkgs": "nixpkgs_4"
},
"locked": { "locked": {
"lastModified": 1773533765, "lastModified": 1780065812,
"narHash": "sha256-qonGfS2lzCgCl59Zl63jF6dIRRpvW3AJooBGMaXjHiY=", "narHash": "sha256-SCSLUKBmwlSLGQ8Xbr8PjRFtiHNk0l9ktqkcmqdBkfE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "f8e82243fd601afb9f59ad230958bd073795cbfe", "rev": "b76b5639c0593e0aeb0b5879ad62d4b30596c144",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -268,11 +231,11 @@
}, },
"nixpkgs-25-11": { "nixpkgs-25-11": {
"locked": { "locked": {
"lastModified": 1773705440, "lastModified": 1779796641,
"narHash": "sha256-xB30bbAp0e7ogSEYyc126mAJMt4FRFh8wtm6ADE1xuM=", "narHash": "sha256-ZsIrKmhp4vbBXoXXmR/tBXA/UCsAQiJL9vsgZEduhVY=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "48652e9d5aea46e555b3df87354280d4f29cd3a3", "rev": "25f538306313eae3927264466c70d7001dcea1df",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -282,13 +245,45 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-unstable": { "nixpkgs-26-05": {
"locked": { "locked": {
"lastModified": 1773646010, "lastModified": 1780203844,
"narHash": "sha256-iYrs97hS7p5u4lQzuNWzuALGIOdkPXvjz7bviiBjUu8=", "narHash": "sha256-K5sT4jTpGs15ADhviMKNBH38REpPf5Q6mM1+N6cArVE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "5b2c2d84341b2afb5647081c1386a80d7a8d8605", "rev": "b51242d7d43689db2f3be91bd05d5b24fbb469c4",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-26.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1779560665,
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_10": {
"locked": {
"lastModified": 1775710090,
"narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4c1018dae018162ec878d42fec712642d214fdfa",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -331,6 +326,19 @@
} }
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": {
"lastModified": 1767892417,
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz"
},
"original": {
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
}
},
"nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1767364772, "lastModified": 1767364772,
"narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=", "narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=",
@ -346,7 +354,7 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_5": { "nixpkgs_6": {
"locked": { "locked": {
"lastModified": 1767767207, "lastModified": 1767767207,
"narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=", "narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=",
@ -362,13 +370,13 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_6": { "nixpkgs_7": {
"locked": { "locked": {
"lastModified": 1773646010, "lastModified": 1779560665,
"narHash": "sha256-iYrs97hS7p5u4lQzuNWzuALGIOdkPXvjz7bviiBjUu8=", "narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "5b2c2d84341b2afb5647081c1386a80d7a8d8605", "rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -378,13 +386,29 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_7": { "nixpkgs_8": {
"locked": { "locked": {
"lastModified": 1773507054, "lastModified": 1770107345,
"narHash": "sha256-Q8U5VXgrcxmCxPtCCJCIZkcAX3FCZwGh1GNVIXxMND0=", "narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "4533d9293756b63904b7238acb84ac8fe4c8c2c4",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_9": {
"locked": {
"lastModified": 1775888245,
"narHash": "sha256-nwASzrRDD1JBEu/o8ekKYEXm/oJW6EMCzCRdrwcLe90=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e80236013dc8b77aa49ca90e7a12d86f5d8d64c9", "rev": "13043924aaa7375ce482ebe2494338e058282925",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -394,35 +418,20 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_8": {
"locked": {
"lastModified": 1698318101,
"narHash": "sha256-gUihHt3yPD7bVqg+k/UVHgngyaJ3DMEBchbymBMvK1E=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "63678e9f3d3afecfeafa0acead6239cdb447574c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"openclaw-flake": { "openclaw-flake": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_2", "flake-utils": "flake-utils",
"home-manager": "home-manager_3", "home-manager": "home-manager_3",
"nix-steipete-tools": "nix-steipete-tools", "nix-openclaw-tools": "nix-openclaw-tools",
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_6",
"qmd": "qmd"
}, },
"locked": { "locked": {
"lastModified": 1773761774, "lastModified": 1780230011,
"narHash": "sha256-wCibqqrlSKReo5MHDdW97BLDAnor5qYezkox5Za8QxU=", "narHash": "sha256-AMJrXHEoL0iErcCtoksDJ6J9BgsYrH0UznmpxYh6E54=",
"owner": "openclaw", "owner": "openclaw",
"repo": "nix-openclaw", "repo": "nix-openclaw",
"rev": "57df3298491c49525324274e8b8cb5184bdd3458", "rev": "266284148647b425e48ec67335629a5c45880d4a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -434,11 +443,11 @@
"plover": { "plover": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1773500192, "lastModified": 1777008591,
"narHash": "sha256-153KePiQ21OJgtRRA4jLQLqR0lY2wbAXT9qbcWIBc6Y=", "narHash": "sha256-fb4EJ4REj8GW8+Z74oFiikgM/5yXgdon6I/NZYlZYLI=",
"owner": "openstenoproject", "owner": "openstenoproject",
"repo": "plover", "repo": "plover",
"rev": "b0470196a92295f5d5e6f26ab35320da603b01ae", "rev": "6b7a014100eca137e5e82961bb030156b114281a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -449,19 +458,20 @@
}, },
"plover-flake": { "plover-flake": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_6", "nixpkgs": "nixpkgs_7",
"plover": "plover", "plover": "plover",
"plover-stroke": "plover-stroke", "plover-stroke": "plover-stroke",
"plover2cat": "plover2cat", "plover2cat": "plover2cat",
"plover_plugins_registry": "plover_plugins_registry", "plover_plugins_registry": "plover_plugins_registry",
"rtf-tokenize": "rtf-tokenize" "rtf-tokenize": "rtf-tokenize",
"treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1773724054, "lastModified": 1780122855,
"narHash": "sha256-CXGYUnAbcqBHS2oQq1x1mHAcQebUZFSqfnbFb+mhpKk=", "narHash": "sha256-WDSnD4l6q3i7HAIp8mEHIw/5y4MuZudlKAwQ29Pl1aA=",
"owner": "openstenoproject", "owner": "openstenoproject",
"repo": "plover-flake", "repo": "plover-flake",
"rev": "529ac57c807581b6f24b9ab9d2c4cea784b5aa01", "rev": "93dc9e615fec8b645e1443c133441fc603dc5108",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -489,11 +499,11 @@
"plover2cat": { "plover2cat": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1771716484, "lastModified": 1777279531,
"narHash": "sha256-38gmfJbjC1n+lrHI2FZmhRvSyOZ2j72VicpteU1H4Hw=", "narHash": "sha256-+yHSp/HCJnqJqpGaiP6d68pZa4MR2woA3AnJtrEb/OM=",
"owner": "greenwyrt", "owner": "greenwyrt",
"repo": "plover2CAT", "repo": "plover2CAT",
"rev": "795eee5750e0841f77054f54487a3cdfe74c92d9", "rev": "36a590f22fa1612b96b7379a76fae8a0c581c793",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -518,15 +528,41 @@
"type": "github" "type": "github"
} }
}, },
"qmd": {
"inputs": {
"flake-utils": [
"openclaw-flake",
"flake-utils"
],
"nixpkgs": [
"openclaw-flake",
"nixpkgs"
]
},
"locked": {
"lastModified": 1775429264,
"narHash": "sha256-bqIVaNRTa8H5vrw3RwsD7QdtTa0xNvRuEVzlzE1hIBQ=",
"owner": "tobi",
"repo": "qmd",
"rev": "65cd1b3fd02891d1ee0eefa751620918664fa321",
"type": "github"
},
"original": {
"owner": "tobi",
"ref": "v2.1.0",
"repo": "qmd",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"awww": "awww", "awww": "awww",
"beads-flake": "beads-flake",
"home-manager": "home-manager", "home-manager": "home-manager",
"impermanence": "impermanence", "impermanence": "impermanence",
"niri": "niri", "niri": "niri",
"nixos-hardware": "nixos-hardware", "nixos-hardware": "nixos-hardware",
"nixpkgs-25-11": "nixpkgs-25-11", "nixpkgs-25-11": "nixpkgs-25-11",
"nixpkgs-26-05": "nixpkgs-26-05",
"nixpkgs-unstable": "nixpkgs-unstable", "nixpkgs-unstable": "nixpkgs-unstable",
"openclaw-flake": "openclaw-flake", "openclaw-flake": "openclaw-flake",
"plover-flake": "plover-flake", "plover-flake": "plover-flake",
@ -594,14 +630,14 @@
}, },
"sops-nix": { "sops-nix": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_7" "nixpkgs": "nixpkgs_9"
}, },
"locked": { "locked": {
"lastModified": 1773698643, "lastModified": 1777944972,
"narHash": "sha256-VCiDjE8kNs8uCAK73Ezk1r3fFuc4JepvW07YFqaN968=", "narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "8237de83e8200d16fe0c4467b02a1c608ff28044", "rev": "c591bf665727040c6cc5cb409079acb22dcce33c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -625,32 +661,17 @@
"type": "github" "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"
}
},
"talon-nix": { "talon-nix": {
"inputs": { "inputs": {
"nix-github-actions": "nix-github-actions", "nix-github-actions": "nix-github-actions",
"nixpkgs": "nixpkgs_8" "nixpkgs": "nixpkgs_10"
}, },
"locked": { "locked": {
"lastModified": 1746431176, "lastModified": 1776244716,
"narHash": "sha256-bwXLFy2pDpNE60EkVltrmiRgwNWLo4eYBesP997p8mg=", "narHash": "sha256-+qZasmBp556iAiIx5ZdiTS1yI4aiPZ7XHaCRk6UopME=",
"owner": "nix-community", "owner": "nix-community",
"repo": "talon-nix", "repo": "talon-nix",
"rev": "cc110629c5f0be12e839b2aea6a16880f1822706", "rev": "a13f95e0d7b87d0127079245236bcd8705c6b4dd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -658,6 +679,24 @@
"repo": "talon-nix", "repo": "talon-nix",
"type": "github" "type": "github"
} }
},
"treefmt-nix": {
"inputs": {
"nixpkgs": "nixpkgs_8"
},
"locked": {
"lastModified": 1775636079,
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

108
flake.nix
View file

@ -3,17 +3,18 @@
inputs = { inputs = {
nixpkgs-25-11.url = "github:NixOS/nixpkgs/nixos-25.11"; nixpkgs-25-11.url = "github:NixOS/nixpkgs/nixos-25.11";
nixpkgs-26-05.url = "github:NixOS/nixpkgs/nixos-26.05";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager/release-25.11"; home-manager.url = "github:nix-community/home-manager/release-26.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs-25-11"; home-manager.inputs.nixpkgs.follows = "nixpkgs-26-05";
sops-nix.url = "github:Mic92/sops-nix"; sops-nix.url = "github:Mic92/sops-nix";
nixos-hardware.url = "github:NixOS/nixos-hardware"; nixos-hardware.url = "github:NixOS/nixos-hardware";
impermanence.url = "github:nix-community/impermanence"; impermanence.url = "github:nix-community/impermanence";
talon-nix.url = "github:nix-community/talon-nix"; talon-nix.url = "github:nix-community/talon-nix";
openclaw-flake.url = "github:openclaw/nix-openclaw"; openclaw-flake.url = "github:openclaw/nix-openclaw";
plover-flake.url = "github:openstenoproject/plover-flake"; plover-flake.url = "github:openstenoproject/plover-flake";
beads-flake.url = "github:steveyegge/beads?ref=v0.49.6"; #beads-flake.url = "github:steveyegge/beads?ref=v0.49.6";
beads-flake.inputs.nixpkgs.follows = "nixpkgs-25-11"; #beads-flake.inputs.nixpkgs.follows = "nixpkgs-25-11";
awww.url = "git+https://codeberg.org/LGFae/awww"; awww.url = "git+https://codeberg.org/LGFae/awww";
niri.url = "github:hunner/niri/hunner/focus-to-workspace"; niri.url = "github:hunner/niri/hunner/focus-to-workspace";
#niri.inputs.nixpkgs.follows = "nixpkgs-25-11"; #niri.inputs.nixpkgs.follows = "nixpkgs-25-11";
@ -22,6 +23,7 @@
outputs = { outputs = {
self, self,
nixpkgs-25-11, nixpkgs-25-11,
nixpkgs-26-05,
nixpkgs-unstable, nixpkgs-unstable,
home-manager, home-manager,
sops-nix, sops-nix,
@ -30,7 +32,7 @@
talon-nix, talon-nix,
openclaw-flake, openclaw-flake,
plover-flake, plover-flake,
beads-flake, #beads-flake,
awww, awww,
niri, niri,
... ...
@ -101,54 +103,56 @@
}; };
overlay-local = final: prev: { overlay-local = final: prev: {
codex = prev.callPackage ./pkgs/codex/package.nix { }; lean-ctx = prev.callPackage ./pkgs/lean-ctx/package.nix { };
#codex = prev.callPackage ./pkgs/codex/package.nix { };
flow = prev.callPackage ./pkgs/flow/package.nix { }; flow = prev.callPackage ./pkgs/flow/package.nix { };
opencode = prev.callPackage ./pkgs/opencode/package.nix { }; opencode = prev.callPackage ./pkgs/opencode/package.nix { };
pi-coding-agent = prev.callPackage ./pkgs/pi-coding-agent/package.nix { }; pi-coding-agent = prev.callPackage ./pkgs/pi-coding-agent/package.nix { };
beads = xai-grok = prev.callPackage ./pkgs/xai-grok/package.nix { };
let #beads =
bdBase = # let
( # bdBase =
final.callPackage "${beads-flake}/default.nix" { # (
pkgs = final; # final.callPackage "${beads-flake}/default.nix" {
self = beads-flake; # pkgs = final;
} # self = beads-flake;
).overrideAttrs # }
(old: { # ).overrideAttrs
vendorHash = "sha256-RyOxrW0C+2E+ULhGeF2RbUhaUFt58sux7neHPei5QJI="; # (old: {
env = (old.env or { }) // { # vendorHash = "sha256-RyOxrW0C+2E+ULhGeF2RbUhaUFt58sux7neHPei5QJI=";
# Upstream pulls an ICU-backed regex dep; keep Nix build pure-Go. # env = (old.env or { }) // {
CGO_ENABLED = "0"; # # Upstream pulls an ICU-backed regex dep; keep Nix build pure-Go.
}; # CGO_ENABLED = "0";
postPatch = # };
(old.postPatch or "") # postPatch =
+ '' # (old.postPatch or "")
# Upstream source currently references a removed internal package. # + ''
rm -f cmd/bd/integration_test_stubs_test.go # # Upstream source currently references a removed internal package.
rm -rf examples/monitor-webui # rm -f cmd/bd/integration_test_stubs_test.go
''; # rm -rf examples/monitor-webui
}); # '';
in # });
final.stdenv.mkDerivation { # in
pname = "beads"; # final.stdenv.mkDerivation {
version = bdBase.version; # pname = "beads";
phases = [ "installPhase" ]; # version = bdBase.version;
installPhase = '' # phases = [ "installPhase" ];
mkdir -p $out/bin # installPhase = ''
cp ${bdBase}/bin/bd $out/bin/bd # mkdir -p $out/bin
# cp ${bdBase}/bin/bd $out/bin/bd
ln -s bd $out/bin/beads # ln -s bd $out/bin/beads
mkdir -p $out/share/fish/vendor_completions.d # mkdir -p $out/share/fish/vendor_completions.d
mkdir -p $out/share/bash-completion/completions # mkdir -p $out/share/bash-completion/completions
mkdir -p $out/share/zsh/site-functions # mkdir -p $out/share/zsh/site-functions
$out/bin/bd completion fish > $out/share/fish/vendor_completions.d/bd.fish # $out/bin/bd completion fish > $out/share/fish/vendor_completions.d/bd.fish
$out/bin/bd completion bash > $out/share/bash-completion/completions/bd # $out/bin/bd completion bash > $out/share/bash-completion/completions/bd
$out/bin/bd completion zsh > $out/share/zsh/site-functions/_bd # $out/bin/bd completion zsh > $out/share/zsh/site-functions/_bd
''; # '';
meta = bdBase.meta; # meta = bdBase.meta;
}; # };
}; };
in in
{ {
@ -176,18 +180,14 @@
nixosConfigurations.ruil = nixpkgs-25-11.lib.nixosSystem { nixosConfigurations.ruil = nixpkgs-25-11.lib.nixosSystem {
inherit system; inherit system;
specialArgs = {
inherit openclaw-flake;
};
modules = [ modules = [
({ ... }: { nixpkgs.overlays = [ overlay-unstable overlay-etherpad-fixes overlay-local openclaw-flake.overlays.default ]; }) ({ ... }: { nixpkgs.overlays = [ overlay-unstable overlay-etherpad-fixes overlay-local ]; })
home-manager.nixosModules.home-manager
./hosts/ruil/configuration.nix ./hosts/ruil/configuration.nix
sops-nix.nixosModules.sops sops-nix.nixosModules.sops
]; ];
}; };
nixosConfigurations.liminal = nixpkgs-25-11.lib.nixosSystem { nixosConfigurations.liminal = nixpkgs-26-05.lib.nixosSystem {
inherit system; inherit system;
specialArgs = { specialArgs = {
inherit inherit
@ -195,7 +195,7 @@
impermanence impermanence
talon-nix talon-nix
plover-flake plover-flake
beads-flake #beads-flake
awww awww
niri niri
; ;

View file

@ -138,8 +138,16 @@
# sops-nix secrets # sops-nix secrets
sops.defaultSopsFile = ./secrets/config.yaml; sops.defaultSopsFile = ./secrets/config.yaml;
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; sops.age.sshKeyPaths = [ "/persist/etc/ssh/ssh_host_ed25519_key" ];
sops.secrets.hashedPassword.neededForUsers = true; sops.secrets.hashedPassword.neededForUsers = true;
sops.secrets.hashedPassword-root.neededForUsers = true;
users.users.root = {
hashedPasswordFile = config.sops.secrets.hashedPassword-root.path;
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAqd6VkCyGOaFVfh61+hVKOvYaCZsCChQq3c6rNH/ifG me@hunner.dev"
];
};
# Define a user account # Define a user account
users.users.hunner = { users.users.hunner = {
@ -166,6 +174,8 @@
unzip unzip
lsof lsof
gnupg gnupg
znc
zncModules.palaver
]; ];
}; };

View file

@ -1,3 +1,4 @@
hashedPassword-root: ENC[AES256_GCM,data:50/GFDAyvI1QvDv8JNoXHTzeCHY+ZK0+DQdg+8cfpdm2Vx5CAKXQ5cBxUNv9dKqLugS5vDtZTbxtHB/MIXFvEtV4wN1k6xhC3A==,iv:jZXZrGhew33nymDKUrhcp/HGu3WLeb2zZhryoHcvVQ4=,tag:kya/1TH8dsk0PcnqSg4Skw==,type:str]
hashedPassword: ENC[AES256_GCM,data:iUN2iaC2RPDa/vq6H7Xp2KqHYcHfQHU6IhZ2FWXEuaNhByFzpyMbJC7N2bmbDUD3ERLudHg686Uqt6XJV2PevQoXa1iYhv9cLw==,iv:ekGMzP2TXSrxLkqZVclHgN1NQIv6OqtsVLHdvsTgXQc=,tag:RRSZCHjmhn8ClrUTYteWWA==,type:str] hashedPassword: ENC[AES256_GCM,data:iUN2iaC2RPDa/vq6H7Xp2KqHYcHfQHU6IhZ2FWXEuaNhByFzpyMbJC7N2bmbDUD3ERLudHg686Uqt6XJV2PevQoXa1iYhv9cLw==,iv:ekGMzP2TXSrxLkqZVclHgN1NQIv6OqtsVLHdvsTgXQc=,tag:RRSZCHjmhn8ClrUTYteWWA==,type:str]
syncoidSshKey: ENC[AES256_GCM,data:tfNUtOa40qTuoE/Ge5wBhQOTqBcYHvjlyhyBclFyqcbWSTSjZzh0WbkZaM5002YHO0izWD5V4TrK2lTgEYRq3wrMyWhkKgHj51LIBqJmw08Gk1+JQ9+hfRoM2ql6GtJLzUb0bOewPzY5aqDBNVNUrMPF5NyqYFDOoUfAbwWy3yOYdXVOsYwUnGMH+g8MnXdvnBT7RYVGZYLp8Kfj2qi6a+WDQh8qBwaJDKeNhVFOy3Ft00e8ykT5koK4pHSK5D8g5xNXzbMibB3CtGW90wTS2D/o1Ybxkh2ZjcescxD+U/NMIHhRuYdzv/1yiiu1IWnDYjcHCnLUfAiVac5IoCtu0IMmC+jy76Z1lxYmhQt6PINAeh4LHTrtp+5+RGKW+XIzVYguwTcH1WSJGOkHCe7a3VKyI0CrUkD9mhgEjvSLKPVOPgmU+vNggbqu9HrGUlCz53acvdYN8GQP9xKOZLjDgYk5d/zRW5NMj3H7PPW+eLpT/P9i+nISui0WDZQVnFo2IEiElRHkDu2pbENNUvKxDIMkb0nCR8BE+a2e,iv:okNdm2cKrP4DDPflGaN5XRZh/OMFhl30sdTdbbvqsGQ=,tag:O9fv2X1nAf9Ed0FN3xlV3A==,type:str] syncoidSshKey: ENC[AES256_GCM,data:tfNUtOa40qTuoE/Ge5wBhQOTqBcYHvjlyhyBclFyqcbWSTSjZzh0WbkZaM5002YHO0izWD5V4TrK2lTgEYRq3wrMyWhkKgHj51LIBqJmw08Gk1+JQ9+hfRoM2ql6GtJLzUb0bOewPzY5aqDBNVNUrMPF5NyqYFDOoUfAbwWy3yOYdXVOsYwUnGMH+g8MnXdvnBT7RYVGZYLp8Kfj2qi6a+WDQh8qBwaJDKeNhVFOy3Ft00e8ykT5koK4pHSK5D8g5xNXzbMibB3CtGW90wTS2D/o1Ybxkh2ZjcescxD+U/NMIHhRuYdzv/1yiiu1IWnDYjcHCnLUfAiVac5IoCtu0IMmC+jy76Z1lxYmhQt6PINAeh4LHTrtp+5+RGKW+XIzVYguwTcH1WSJGOkHCe7a3VKyI0CrUkD9mhgEjvSLKPVOPgmU+vNggbqu9HrGUlCz53acvdYN8GQP9xKOZLjDgYk5d/zRW5NMj3H7PPW+eLpT/P9i+nISui0WDZQVnFo2IEiElRHkDu2pbENNUvKxDIMkb0nCR8BE+a2e,iv:okNdm2cKrP4DDPflGaN5XRZh/OMFhl30sdTdbbvqsGQ=,tag:O9fv2X1nAf9Ed0FN3xlV3A==,type:str]
zimaKnownHosts: ENC[AES256_GCM,data:7osQI01DJ8OQBEOIYXt0HO1ZZg1iDW6dTfxEyo3luJ5er5DlgZqvxXHuiiHT6tMzjP+uyQCiN0SnQgDBjFP7lp4i7SIToF+4aAkGLbhCoTND4BjwtoBn4t+nbYgAgPkSFvvqhXgaKhdTYPUZBdxp0d8yUd+EA798mZwsS1k2rJYXcq0D1Dn2D7JmGAD1vD4GC76VP5L8XJC3Wc0MVYOTUeftqLHZQ7H5qCIu+QEFwlQw4CPt7IiClN0u2yx+y2yOwFkw6A3+F5/BqGzEh1KsxBXF+THDuzJpipLiCYzjnK04OZa9x/LR7r0A7XZrDkTMD+NSCLsoZzQOv+9cNw4+6qIYKBvarjAOIdZpP/EHiXrDYy53jrOeG3SU+P/NggL0ryq9aHEjUhX+idAXfspYl5EklrlXYw0JjZE8T6NbGP7706VPrcHzGoB1YjAvnAmQP8846ZH99yw8wWDuEoG6i8O0VaY0Q+RVfPZgKbUVqd0L936VMMN6t8jXSPvtOFCjviqgGCfTC9mcciQ2C83G+j9YWi0rM9/dX04m6a6eOBFtTAp4ryKRI6zoSn7Wh+nF1I3M8Yd+qUE7iVJpDOFb4IjJLNy6E+Xw/mTNlIRBET+2Pqmem+pcqmlr8opg4X0Rn2jp23PzDmH5mBrTJpfs/trPaOZLAZ5N+JKX1WLsKIZdT0AK4AVcs7CCj2FSIVicnrR8H9mwgVCY6HDHJvk7E460bo1Jg0YFYsauvd7FeNpCTk3VnFjsloR7WcXj9jrlkcSoR3d/AuelNreXT2XupVU5pHOHDYPd2fvqTd3i0ZEIhSm71p6Ely6HVONwUU9HHMwrnuXccW3YZyD2VsZKJ61AeG01WRSbOF/fPExSpsU1wiIqMrImD13Sh2je0gmznbJGvm+muvknUCUYprH7WORK0ib5mihfwYalPAnwLNHuECQJt+EdIRQJyGay8Ju5brA+N9o7ImeRWtG5ITdTCZba5QvJGN8+Cdkv1WpFkKnEXihdFBwnd/fuswkNGA04m5YSkg2JBstEKDkDIOq9yICtDfPVMi4H7obqbhJ3GAbQ2O6sPLt3NF4i1ib+TiH6,iv:thh4YjrSjpAdBtQgyW/M6fU3V3Sa/5X5EYKwPoJazn8=,tag:5VYDipu5iMnsI+qp0xNSTg==,type:str] zimaKnownHosts: ENC[AES256_GCM,data:7osQI01DJ8OQBEOIYXt0HO1ZZg1iDW6dTfxEyo3luJ5er5DlgZqvxXHuiiHT6tMzjP+uyQCiN0SnQgDBjFP7lp4i7SIToF+4aAkGLbhCoTND4BjwtoBn4t+nbYgAgPkSFvvqhXgaKhdTYPUZBdxp0d8yUd+EA798mZwsS1k2rJYXcq0D1Dn2D7JmGAD1vD4GC76VP5L8XJC3Wc0MVYOTUeftqLHZQ7H5qCIu+QEFwlQw4CPt7IiClN0u2yx+y2yOwFkw6A3+F5/BqGzEh1KsxBXF+THDuzJpipLiCYzjnK04OZa9x/LR7r0A7XZrDkTMD+NSCLsoZzQOv+9cNw4+6qIYKBvarjAOIdZpP/EHiXrDYy53jrOeG3SU+P/NggL0ryq9aHEjUhX+idAXfspYl5EklrlXYw0JjZE8T6NbGP7706VPrcHzGoB1YjAvnAmQP8846ZH99yw8wWDuEoG6i8O0VaY0Q+RVfPZgKbUVqd0L936VMMN6t8jXSPvtOFCjviqgGCfTC9mcciQ2C83G+j9YWi0rM9/dX04m6a6eOBFtTAp4ryKRI6zoSn7Wh+nF1I3M8Yd+qUE7iVJpDOFb4IjJLNy6E+Xw/mTNlIRBET+2Pqmem+pcqmlr8opg4X0Rn2jp23PzDmH5mBrTJpfs/trPaOZLAZ5N+JKX1WLsKIZdT0AK4AVcs7CCj2FSIVicnrR8H9mwgVCY6HDHJvk7E460bo1Jg0YFYsauvd7FeNpCTk3VnFjsloR7WcXj9jrlkcSoR3d/AuelNreXT2XupVU5pHOHDYPd2fvqTd3i0ZEIhSm71p6Ely6HVONwUU9HHMwrnuXccW3YZyD2VsZKJ61AeG01WRSbOF/fPExSpsU1wiIqMrImD13Sh2je0gmznbJGvm+muvknUCUYprH7WORK0ib5mihfwYalPAnwLNHuECQJt+EdIRQJyGay8Ju5brA+N9o7ImeRWtG5ITdTCZba5QvJGN8+Cdkv1WpFkKnEXihdFBwnd/fuswkNGA04m5YSkg2JBstEKDkDIOq9yICtDfPVMi4H7obqbhJ3GAbQ2O6sPLt3NF4i1ib+TiH6,iv:thh4YjrSjpAdBtQgyW/M6fU3V3Sa/5X5EYKwPoJazn8=,tag:5VYDipu5iMnsI+qp0xNSTg==,type:str]
@ -21,7 +22,7 @@ sops:
NDJWOEMyU1hwcHRXMUh6RkEzOFhndG8KY/fCz/+MfGQlnLC3Kzo5hYOmd0fRakDQ NDJWOEMyU1hwcHRXMUh6RkEzOFhndG8KY/fCz/+MfGQlnLC3Kzo5hYOmd0fRakDQ
JjVD+zxHFqN5b3U03iS9WIsdjF3hRFqqnZMOeXTUDezDfTNPdmUuMg== JjVD+zxHFqN5b3U03iS9WIsdjF3hRFqqnZMOeXTUDezDfTNPdmUuMg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2025-12-30T06:09:33Z" lastmodified: "2026-04-11T21:27:21Z"
mac: ENC[AES256_GCM,data:1Rwi9cvkH2aWmbkX4ZcvUu1MRPMgX5ZVFQ29pJ/q8RGBtYe+yH8c5ODqWkkvlO3Ok1gFg/8fPIoXfJ2il39MTdnt/jbng+z9TupK6raYsIonWcYEMz6hY0imASgF4m8OtS5GcVelRUUOPuYBVdQa9+VCRd1L3tM8HYt6AgiumHI=,iv:Dp0WVo3otn9BKKujtbILAqvdM/79ENum8QVgwSJpSmw=,tag:8+QhXLeDd3maSHj7ip34gg==,type:str] mac: ENC[AES256_GCM,data:FkaHQIBs3rgAPtrL28EZon8PbWFQNOBsG8zIe1YY+lUxC4EY1KkbUo6Hjvla2XA17jxLeNXxGl+3f9E86jknJ850eSd/ud1KbmH+ycF1AwTJtpYzItC3WxCtxIfyAMgQA4KFYcIBU3Zgi0I4Ae1VUAQcZlKrLUyvEJYxI3vmBVo=,iv:CoFgIfrsnZJB/+op1gz8fmdpy/pHK0LGmDKKp2UpCKc=,tag:16Dai5xHFKZ2V1tP6JYpUw==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.11.0 version: 3.12.1

View file

@ -7,7 +7,7 @@
impermanence, impermanence,
talon-nix, talon-nix,
plover-flake, plover-flake,
beads-flake, #beads-flake,
awww, awww,
niri, niri,
... }: ... }:
@ -74,10 +74,37 @@
enable = true; enable = true;
package = pkgs.unstable.ollama-vulkan; package = pkgs.unstable.ollama-vulkan;
loadModels = [ "qwen3.5" "gpt-oss" ]; loadModels = [ "qwen3.5" "gpt-oss" ];
acceleration = "vulkan"; #acceleration = "vulkan";
#acceleration = "rocm"; #acceleration = "rocm";
#rocmOverrideGfx = "11.0.2"; #rocmOverrideGfx = "11.0.2";
}; };
services.llama-swap = {
enable = false;
port = 11434;
settings = let
llamaServer = lib.getExe' pkgs.unstable.llama-cpp-vulkan "llama-server";
in {
hooks.on_startup.preload = [ "qwen3.5:4b" ];
models."qwen3.5:4b" = {
cmd = "${llamaServer} --port \${PORT} -m /var/lib/llama-swap/models/Qwen_Qwen3.5-4B-Q5_K_L.gguf -c 65536";
aliases = [ "qwen" ];
};
models."qwen3.5:35b" = {
cmd = "${llamaServer} --port \${PORT} -m /var/lib/llama-swap/models/Qwen_Qwen3.5-35B-A3B-Q5_K_L.gguf -c 65536 --mmap --gpu-layers 35";
aliases = [ "qwen3.5" ];
};
};
};
systemd.services.llama-swap = {
environment = {
HOME = "/var/lib/llama-swap";
XDG_CACHE_HOME = "/var/cache/llama-swap";
};
serviceConfig = {
StateDirectory = "llama-swap";
CacheDirectory = "llama-swap";
};
};
networking.hostId = "3294c9a2"; # Required for ZFS networking.hostId = "3294c9a2"; # Required for ZFS
networking.hostName = "liminal"; networking.hostName = "liminal";
@ -87,6 +114,7 @@
'' ''
127.0.0.1 keycloak 127.0.0.1 keycloak
127.0.0.1 k3d-cmvm 127.0.0.1 k3d-cmvm
172.17.0.1 docker.host.internal
''; '';
environment.persistence."/persist" = { environment.persistence."/persist" = {
@ -190,10 +218,16 @@
# Enable the X11 windowing system. # Enable the X11 windowing system.
services.xserver.enable = true; services.xserver.enable = true;
services.xserver.displayManager.sessionCommands = ''
(
sleep 2
${pkgs.xrandr}/bin/xrandr --output eDP --mode 2560x1600 --rate 120 --primary --auto || true
) &
'';
# Enable the GNOME Desktop Environment. # Enable the GNOME Desktop Environment.
services.displayManager.gdm.enable = true; services.displayManager.gdm.enable = true;
services.displayManager.gdm.wayland = true; #services.displayManager.gdm.wayland = true;
services.displayManager.gdm.autoSuspend = true; services.displayManager.gdm.autoSuspend = true;
services.desktopManager.gnome.enable = true; services.desktopManager.gnome.enable = true;
@ -217,6 +251,15 @@
pkgs.xdg-desktop-portal-gnome pkgs.xdg-desktop-portal-gnome
#pkgs.xdg-desktop-portal-hyprland #pkgs.xdg-desktop-portal-hyprland
]; ];
config = {
hyprland = {
default = [ "hyprland" "gtk" ];
"org.freedesktop.impl.portal.ScreenCast" = [ "hyprland" ];
"org.freedesktop.impl.portal.Screenshot" = [ "wlr" ];
"org.freedesktop.impl.portal.FileChooser" = [ "gtk" ];
};
};
}; };
# Enable CUPS to print documents. # Enable CUPS to print documents.
@ -261,7 +304,7 @@
# sops-nix secrets # sops-nix secrets
sops.defaultSopsFile = ./secrets/config.yaml; sops.defaultSopsFile = ./secrets/config.yaml;
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; sops.age.sshKeyPaths = [ "/persist/etc/ssh/ssh_host_ed25519_key" ];
sops.secrets.hashedPassword.neededForUsers = true; sops.secrets.hashedPassword.neededForUsers = true;
# Define user accounts # Define user accounts
@ -273,20 +316,21 @@
home = "/home/agents"; home = "/home/agents";
createHome = true; createHome = true;
homeMode = "0770"; homeMode = "0770";
extraGroups = [ "docker" "audio" "video" "dialout" ]; extraGroups = [ "docker" "audio" "video" "dialout" "input" ];
shell = pkgs.zsh; shell = pkgs.zsh;
packages = with pkgs; [ packages = with pkgs; [
nodejs nodejs_24
docker-credential-helpers docker-credential-helpers
pass pass
pkgs.unstable.claude-code pkgs.unstable.claude-code
codex pkgs.unstable.codex
just just
socat socat
pkgs.beads #pkgs.beads
gh gh
pkgs.unstable.opencode pkgs.unstable.opencode
pkgs.pi-coding-agent pkgs.pi-coding-agent
pkgs.xai-grok
python3 python3
clang clang
clangStdenv clangStdenv
@ -294,6 +338,7 @@
just just
dtach dtach
sox # claude voice sox # claude voice
#lean-ctx
]; ];
}; };
users.users.hunner = { users.users.hunner = {
@ -315,17 +360,17 @@
arandr arandr
xclip xclip
scrot scrot
xorg.xrandr xrandr
xorg.xsetroot xsetroot
xorg.xset xset
xorg.xev xev
hsetroot hsetroot
redshift redshift
pkgs.unstable.code-cursor pkgs.unstable.code-cursor
pkgs.unstable.cursor-cli pkgs.unstable.cursor-cli
pwvucontrol pwvucontrol
pamixer pamixer
helvum #helvum
#hp15c #hp15c
#nonpareil #nonpareil
kitty # for Hyprland kitty # for Hyprland
@ -336,6 +381,8 @@
alsa-scarlett-gui alsa-scarlett-gui
#pkgs.unstable.ndi-6 #pkgs.unstable.ndi-6
#(pkgs.unstable.flameshot.override { enableWlrSupport = true; }) #(pkgs.unstable.flameshot.override { enableWlrSupport = true; })
grim
slurp
hyprshot hyprshot
hyprpicker hyprpicker
flameshot flameshot
@ -348,10 +395,10 @@
pinentry-gnome3 pinentry-gnome3
gnupg gnupg
pkgs.unstable.firefox-devedition pkgs.unstable.firefox-devedition
nodejs nodejs_24
slack slack
mplayer mplayer
ffmpeg ffmpeg-full
docker-credential-helpers docker-credential-helpers
jetbrains-toolbox jetbrains-toolbox
pass pass
@ -369,8 +416,8 @@
#ruff # for zed #ruff # for zed
#goose-cli #goose-cli
pkgs.unstable.claude-code pkgs.unstable.claude-code
codex pkgs.unstable.codex
neofetch #neofetch
eww eww
quickshell quickshell
fuzzel fuzzel
@ -399,17 +446,23 @@
socat socat
#plover-flake.packages.${pkgs.stdenv.hostPlatform.system}.plover-full #plover-flake.packages.${pkgs.stdenv.hostPlatform.system}.plover-full
pkgs.unstable.zoom-us pkgs.unstable.zoom-us
pkgs.beads #pkgs.beads
awww.packages.${pkgs.stdenv.hostPlatform.system}.awww awww.packages.${pkgs.stdenv.hostPlatform.system}.awww
nix-index # for nix-locate nix-index # for nix-locate
sops sops
bitwarden-desktop #bitwarden-desktop
bitwarden-cli #bitwarden-cli
itch itch
dtach dtach
whois whois
plus42 plus42
sox # claude voice sox # claude voice
pkgs.pi-coding-agent
pkgs.xai-grok
xrandr-invert-colors
xcalib
#lean-ctx
kanata
]; ];
}; };
systemd.user.services = { systemd.user.services = {
@ -417,12 +470,15 @@
description = "PolKit Authentication Agent"; description = "PolKit Authentication Agent";
wantedBy = [ "graphical-session.target" ]; wantedBy = [ "graphical-session.target" ];
wants = [ "graphical-session.target" ]; wants = [ "graphical-session.target" ];
partOf = [ "graphical-session.target" ];
after = [ "graphical-session.target" ]; after = [ "graphical-session.target" ];
unitConfig.StartLimitIntervalSec = 0;
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
Environment = "GDK_BACKEND=wayland,x11";
Restart = "on-failure"; Restart = "on-failure";
RestartSec = 1; RestartSec = 5;
TimeoutStopSec = 10; TimeoutStopSec = 10;
}; };
}; };
@ -466,7 +522,7 @@
bat bat
git git
vim vim
emacs emacs-pgtk
wget wget
curl curl
htop htop
@ -486,8 +542,11 @@
devenv devenv
lsof lsof
sg3_utils sg3_utils
libimobiledevice
ifuse
]; ];
services.usbmuxd.enable = true;
services.clipmenu.enable = true; services.clipmenu.enable = true;
services.picom = { services.picom = {
enable = true; enable = true;
@ -510,7 +569,7 @@
}; };
programs._1password-gui = { programs._1password-gui = {
enable = true; enable = true;
polkitPolicyOwners = [ "hunner" ]; polkitPolicyOwners = [ "hunner" "agents" ];
}; };
programs.obs-studio = { programs.obs-studio = {
enable = true; enable = true;

View file

@ -1,4 +1,10 @@
{ config, lib, pkgs, modulesPath, openclaw-flake, ... }: {
config,
lib,
pkgs,
modulesPath,
...
}:
{ {
imports = [ imports = [
@ -16,9 +22,13 @@
# Enable nix flakes # Enable nix flakes
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [ "nix-command" "flakes" ];
# Keep a little headroom so remote deploys can still complete GC/DB updates.
nix.settings.min-free = 1024 * 1024 * 1024;
nix.settings.max-free = 2 * 1024 * 1024 * 1024;
nix.optimise.automatic = true; nix.optimise.automatic = true;
nix.gc.automatic = true; nix.gc.automatic = true;
nix.gc.options = "--delete-older-than 30d"; nix.gc.dates = "daily";
nix.gc.options = "--delete-older-than 7d";
# sops-nix secrets # sops-nix secrets
sops.defaultSopsFile = ./secrets/config.yaml; sops.defaultSopsFile = ./secrets/config.yaml;
@ -34,10 +44,10 @@
owner = "nginx"; owner = "nginx";
mode = "0400"; mode = "0400";
}; };
sops.secrets.openclaw-env = { #sops.secrets.openclaw-env = {
owner = "ruil"; # owner = "ruil";
mode = "0400"; # mode = "0400";
}; #};
# HTTPS certificates for proxied `*.hunner.dev` sites (Cloudflare Full strict). # HTTPS certificates for proxied `*.hunner.dev` sites (Cloudflare Full strict).
security.acme = { security.acme = {
@ -66,38 +76,12 @@
users.users.ruil = { users.users.ruil = {
uid = 1001; uid = 1001;
isNormalUser = true; isNormalUser = true;
linger = true;
hashedPasswordFile = config.sops.secrets.hashedPassword-ruil.path; hashedPasswordFile = config.sops.secrets.hashedPassword-ruil.path;
openssh.authorizedKeys.keys = [ openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAqd6VkCyGOaFVfh61+hVKOvYaCZsCChQq3c6rNH/ifG me@hunner.dev" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAqd6VkCyGOaFVfh61+hVKOvYaCZsCChQq3c6rNH/ifG me@hunner.dev"
]; ];
}; };
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.ruil = { lib, ... }: {
imports = [ openclaw-flake.homeManagerModules.openclaw ];
home.stateVersion = "25.11";
# Keep credentials in ruil-owned files to avoid root-only bot access.
programs.openclaw.enable = true;
# Keep ~/.openclaw/openclaw.json user-managed (Home Manager should not touch it).
home.file.".openclaw/openclaw.json".enable = lib.mkForce false;
home.activation.openclawConfigFiles = lib.mkForce (lib.hm.dag.entryAfter [ "openclawDirs" ] "");
# openclaw onboarding can exceed Node's default old-space limit on 1 GiB hosts.
home.sessionVariables.NODE_OPTIONS = "--max-old-space-size=1536";
# Environment file is provisioned by sops-nix (`sops.secrets.openclaw-env`).
systemd.user.services.openclaw-gateway = {
Install.WantedBy = [ "default.target" ];
Service.Environment = [ "NODE_OPTIONS=--max-old-space-size=1536" ];
Service.EnvironmentFile = [ config.sops.secrets.openclaw-env.path ];
};
};
# Packages # Packages
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vim vim
@ -114,6 +98,11 @@
services.openssh.settings.PasswordAuthentication = false; services.openssh.settings.PasswordAuthentication = false;
services.openssh.settings.KbdInteractiveAuthentication = false; services.openssh.settings.KbdInteractiveAuthentication = false;
services.journald.extraConfig = ''
SystemMaxUse=200M
RuntimeMaxUse=100M
'';
# Tailscale # Tailscale
services.tailscale = { services.tailscale = {
enable = true; enable = true;
@ -203,11 +192,13 @@
programs.zsh.enable = true; programs.zsh.enable = true;
boot.loader.grub.configurationLimit = 5;
# Add swap on small VPS instances to avoid OOM-kill loops. # Add swap on small VPS instances to avoid OOM-kill loops.
swapDevices = [ swapDevices = [
{ {
device = "/var/lib/swapfile"; device = "/var/lib/swapfile";
size = 4096; # MiB size = 2048; # MiB
} }
]; ];

View file

@ -83,7 +83,7 @@
# sops-nix secrets # sops-nix secrets
sops.defaultSopsFile = ./secrets/config.yaml; sops.defaultSopsFile = ./secrets/config.yaml;
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; sops.age.sshKeyPaths = [ "/persist/etc/ssh/ssh_host_ed25519_key" ];
sops.secrets.hashedPassword.neededForUsers = true; sops.secrets.hashedPassword.neededForUsers = true;
users.users."root".openssh.authorizedKeys.keys = [ users.users."root".openssh.authorizedKeys.keys = [

View file

@ -32,6 +32,10 @@ deploy-liminal:
deploy-zima: deploy-zima:
just deploy-auto zima root@zima just deploy-auto zima root@zima
# Shortcut: deploy cryochamber
deploy-cryochamber:
just deploy-auto cryochamber root@cryochamber
update-package package version="": update-package package version="":
if [ -n "{{version}}" ]; then scripts/update-local-package {{package}} --version {{version}}; else scripts/update-local-package {{package}}; fi if [ -n "{{version}}" ]; then scripts/update-local-package {{package}} --version {{version}}; else scripts/update-local-package {{package}}; fi

View file

@ -19,20 +19,20 @@
}: }:
rustPlatform.buildRustPackage (finalAttrs: { rustPlatform.buildRustPackage (finalAttrs: {
pname = "codex"; pname = "codex";
version = "0.110.0"; version = "0.122.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "openai"; owner = "openai";
repo = "codex"; repo = "codex";
tag = "rust-v${finalAttrs.version}"; tag = "rust-v${finalAttrs.version}";
#hash = lib.fakeHash; #hash = lib.fakeHash;
hash = "sha256-RoWKOZCW5qR+NyBqU/AoloVYGscfiVaHZqnaTISTj9w="; hash = "sha256-CpXWP64URsgt/PhQrUkrT87KG633hxRUIY0wWrTFmjk=";
}; };
sourceRoot = "${finalAttrs.src.name}/codex-rs"; sourceRoot = "${finalAttrs.src.name}/codex-rs";
#cargoHash = lib.fakeHash; #cargoHash = lib.fakeHash;
cargoHash = "sha256-tj0OAEvydpdT6haVtRXv5rWpeSFM3aYXVyH6jqvJKJ8="; cargoHash = "sha256-2qtMLWSdYWJ+blNfCHXtgmzizuM1HgpTGa5RQ3U/AEM=";
nativeBuildInputs = [ nativeBuildInputs = [
clang clang

35
pkgs/lean-ctx/package.nix Normal file
View file

@ -0,0 +1,35 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "lean-ctx";
version = "2.21.6";
src = fetchFromGitHub {
owner = "yvgude";
repo = "lean-ctx";
rev = "40b840c548a40d03fe91d5aa412fc7c92da4b9e0";
hash = "sha256-3/YAmN4iO7cngj2DbXm9vAutxiz483qf7a81odxQOl8=";
};
sourceRoot = "${finalAttrs.src.name}/rust";
cargoLock = {
lockFile = "${finalAttrs.src}/rust/Cargo.lock";
};
# Upstream's test suite exercises shell/sandbox behavior and is not stable
# under Nix builds, but the release binary itself builds fine.
doCheck = false;
meta = {
description = "Context Intelligence Engine with CCP";
homepage = "https://github.com/yvgude/lean-ctx";
license = lib.licenses.mit;
mainProgram = "lean-ctx";
platforms = lib.platforms.linux;
};
})

File diff suppressed because it is too large Load diff

View file

@ -3,6 +3,6 @@
"version": "1.0.0", "version": "1.0.0",
"private": true, "private": true,
"dependencies": { "dependencies": {
"@mariozechner/pi-coding-agent": "0.64.0" "@mariozechner/pi-coding-agent": "0.73.0"
} }
} }

View file

@ -5,10 +5,10 @@
}: }:
buildNpmPackage (finalAttrs: { buildNpmPackage (finalAttrs: {
pname = "pi-coding-agent"; pname = "pi-coding-agent";
version = "0.64.0"; version = "0.73.0";
src = ./.; src = ./.;
npmDepsHash = "sha256-CS9ZV08xjv7KIkMvnQIHQCMLbeoiYPI7PYtaQawOitE="; npmDepsHash = "sha256-rWNknuzbVsEMyahnOg5ku1e3xBn4/bG5EmkvvEr52Nw=";
inherit nodejs; inherit nodejs;
dontNpmBuild = true; dontNpmBuild = true;

39
pkgs/xai-grok/package.nix Normal file
View file

@ -0,0 +1,39 @@
{
lib,
stdenvNoCC,
fetchurl,
nodejs,
}:
stdenvNoCC.mkDerivation rec {
pname = "xai-grok";
version = "0.2.38";
src = fetchurl {
url = "https://registry.npmjs.org/@xai-official/grok-linux-x64/-/grok-linux-x64-${version}.tgz";
hash = "sha256-E023XTq3PwPH2zBuOh4jFoUh08o6p4IPfX0x7KFUleE=";
};
nativeBuildInputs = [ nodejs ];
unpackPhase = ''
tar -xzf $src
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
node -e "const fs=require('fs'),z=require('zlib'); const b=z.brotliDecompressSync(fs.readFileSync('package/bin/grok.br')); fs.writeFileSync('$out/bin/grok', b, {mode:0o755});"
runHook postInstall
'';
meta = {
description = "Official xAI Grok Build CLI";
homepage = "https://x.ai/cli";
license = lib.licenses.unfree;
mainProgram = "grok";
platforms = [ "x86_64-linux" ];
};
}