Compare commits

..

No commits in common. "e07d1e3187dcb1871cb86106813372aa0d4b8283" and "781572c561eacf42373ce26a764f495deaf43cff" have entirely different histories.

15 changed files with 892 additions and 1087 deletions

View file

@ -21,7 +21,6 @@ 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;

303
flake.lock generated
View file

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

108
flake.nix
View file

@ -3,18 +3,17 @@
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-26.05"; home-manager.url = "github:nix-community/home-manager/release-25.11";
home-manager.inputs.nixpkgs.follows = "nixpkgs-26-05"; home-manager.inputs.nixpkgs.follows = "nixpkgs-25-11";
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";
@ -23,7 +22,6 @@
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,
@ -32,7 +30,7 @@
talon-nix, talon-nix,
openclaw-flake, openclaw-flake,
plover-flake, plover-flake,
#beads-flake, beads-flake,
awww, awww,
niri, niri,
... ...
@ -103,56 +101,54 @@
}; };
overlay-local = final: prev: { overlay-local = final: prev: {
lean-ctx = prev.callPackage ./pkgs/lean-ctx/package.nix { }; codex = prev.callPackage ./pkgs/codex/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 { };
xai-grok = prev.callPackage ./pkgs/xai-grok/package.nix { }; beads =
#beads = let
# let bdBase =
# bdBase = (
# ( final.callPackage "${beads-flake}/default.nix" {
# final.callPackage "${beads-flake}/default.nix" { pkgs = final;
# pkgs = final; self = beads-flake;
# self = beads-flake; }
# } ).overrideAttrs
# ).overrideAttrs (old: {
# (old: { vendorHash = "sha256-RyOxrW0C+2E+ULhGeF2RbUhaUFt58sux7neHPei5QJI=";
# vendorHash = "sha256-RyOxrW0C+2E+ULhGeF2RbUhaUFt58sux7neHPei5QJI="; env = (old.env or { }) // {
# env = (old.env or { }) // { # Upstream pulls an ICU-backed regex dep; keep Nix build pure-Go.
# # Upstream pulls an ICU-backed regex dep; keep Nix build pure-Go. CGO_ENABLED = "0";
# CGO_ENABLED = "0"; };
# }; postPatch =
# postPatch = (old.postPatch or "")
# (old.postPatch or "") + ''
# + '' # Upstream source currently references a removed internal package.
# # Upstream source currently references a removed internal package. rm -f cmd/bd/integration_test_stubs_test.go
# rm -f cmd/bd/integration_test_stubs_test.go rm -rf examples/monitor-webui
# rm -rf examples/monitor-webui '';
# ''; });
# }); in
# in final.stdenv.mkDerivation {
# final.stdenv.mkDerivation { pname = "beads";
# pname = "beads"; version = bdBase.version;
# version = bdBase.version; phases = [ "installPhase" ];
# phases = [ "installPhase" ]; installPhase = ''
# installPhase = '' mkdir -p $out/bin
# mkdir -p $out/bin cp ${bdBase}/bin/bd $out/bin/bd
# 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
{ {
@ -180,14 +176,18 @@
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 ]; }) ({ ... }: { nixpkgs.overlays = [ overlay-unstable overlay-etherpad-fixes overlay-local openclaw-flake.overlays.default ]; })
home-manager.nixosModules.home-manager
./hosts/ruil/configuration.nix ./hosts/ruil/configuration.nix
sops-nix.nixosModules.sops sops-nix.nixosModules.sops
]; ];
}; };
nixosConfigurations.liminal = nixpkgs-26-05.lib.nixosSystem { nixosConfigurations.liminal = nixpkgs-25-11.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,16 +138,8 @@
# sops-nix secrets # sops-nix secrets
sops.defaultSopsFile = ./secrets/config.yaml; sops.defaultSopsFile = ./secrets/config.yaml;
sops.age.sshKeyPaths = [ "/persist/etc/ssh/ssh_host_ed25519_key" ]; sops.age.sshKeyPaths = [ "/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 = {
@ -174,8 +166,6 @@
unzip unzip
lsof lsof
gnupg gnupg
znc
zncModules.palaver
]; ];
}; };

View file

@ -1,4 +1,3 @@
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]
@ -22,7 +21,7 @@ sops:
NDJWOEMyU1hwcHRXMUh6RkEzOFhndG8KY/fCz/+MfGQlnLC3Kzo5hYOmd0fRakDQ NDJWOEMyU1hwcHRXMUh6RkEzOFhndG8KY/fCz/+MfGQlnLC3Kzo5hYOmd0fRakDQ
JjVD+zxHFqN5b3U03iS9WIsdjF3hRFqqnZMOeXTUDezDfTNPdmUuMg== JjVD+zxHFqN5b3U03iS9WIsdjF3hRFqqnZMOeXTUDezDfTNPdmUuMg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2026-04-11T21:27:21Z" lastmodified: "2025-12-30T06:09:33Z"
mac: ENC[AES256_GCM,data:FkaHQIBs3rgAPtrL28EZon8PbWFQNOBsG8zIe1YY+lUxC4EY1KkbUo6Hjvla2XA17jxLeNXxGl+3f9E86jknJ850eSd/ud1KbmH+ycF1AwTJtpYzItC3WxCtxIfyAMgQA4KFYcIBU3Zgi0I4Ae1VUAQcZlKrLUyvEJYxI3vmBVo=,iv:CoFgIfrsnZJB/+op1gz8fmdpy/pHK0LGmDKKp2UpCKc=,tag:16Dai5xHFKZ2V1tP6JYpUw==,type:str] mac: ENC[AES256_GCM,data:1Rwi9cvkH2aWmbkX4ZcvUu1MRPMgX5ZVFQ29pJ/q8RGBtYe+yH8c5ODqWkkvlO3Ok1gFg/8fPIoXfJ2il39MTdnt/jbng+z9TupK6raYsIonWcYEMz6hY0imASgF4m8OtS5GcVelRUUOPuYBVdQa9+VCRd1L3tM8HYt6AgiumHI=,iv:Dp0WVo3otn9BKKujtbILAqvdM/79ENum8QVgwSJpSmw=,tag:8+QhXLeDd3maSHj7ip34gg==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.12.1 version: 3.11.0

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,37 +74,10 @@
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";
@ -114,7 +87,6 @@
'' ''
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" = {
@ -218,16 +190,10 @@
# 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;
@ -251,15 +217,6 @@
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.
@ -304,7 +261,7 @@
# sops-nix secrets # sops-nix secrets
sops.defaultSopsFile = ./secrets/config.yaml; sops.defaultSopsFile = ./secrets/config.yaml;
sops.age.sshKeyPaths = [ "/persist/etc/ssh/ssh_host_ed25519_key" ]; sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
sops.secrets.hashedPassword.neededForUsers = true; sops.secrets.hashedPassword.neededForUsers = true;
# Define user accounts # Define user accounts
@ -316,21 +273,20 @@
home = "/home/agents"; home = "/home/agents";
createHome = true; createHome = true;
homeMode = "0770"; homeMode = "0770";
extraGroups = [ "docker" "audio" "video" "dialout" "input" ]; extraGroups = [ "docker" "audio" "video" "dialout" ];
shell = pkgs.zsh; shell = pkgs.zsh;
packages = with pkgs; [ packages = with pkgs; [
nodejs_24 nodejs
docker-credential-helpers docker-credential-helpers
pass pass
pkgs.unstable.claude-code pkgs.unstable.claude-code
pkgs.unstable.codex 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
@ -338,7 +294,6 @@
just just
dtach dtach
sox # claude voice sox # claude voice
#lean-ctx
]; ];
}; };
users.users.hunner = { users.users.hunner = {
@ -360,17 +315,17 @@
arandr arandr
xclip xclip
scrot scrot
xrandr xorg.xrandr
xsetroot xorg.xsetroot
xset xorg.xset
xev xorg.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
@ -381,8 +336,6 @@
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
@ -395,10 +348,10 @@
pinentry-gnome3 pinentry-gnome3
gnupg gnupg
pkgs.unstable.firefox-devedition pkgs.unstable.firefox-devedition
nodejs_24 nodejs
slack slack
mplayer mplayer
ffmpeg-full ffmpeg
docker-credential-helpers docker-credential-helpers
jetbrains-toolbox jetbrains-toolbox
pass pass
@ -416,8 +369,8 @@
#ruff # for zed #ruff # for zed
#goose-cli #goose-cli
pkgs.unstable.claude-code pkgs.unstable.claude-code
pkgs.unstable.codex codex
#neofetch neofetch
eww eww
quickshell quickshell
fuzzel fuzzel
@ -446,23 +399,17 @@
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 = {
@ -470,15 +417,12 @@
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 = 5; RestartSec = 1;
TimeoutStopSec = 10; TimeoutStopSec = 10;
}; };
}; };
@ -522,7 +466,7 @@
bat bat
git git
vim vim
emacs-pgtk emacs
wget wget
curl curl
htop htop
@ -542,11 +486,8 @@
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;
@ -569,7 +510,7 @@
}; };
programs._1password-gui = { programs._1password-gui = {
enable = true; enable = true;
polkitPolicyOwners = [ "hunner" "agents" ]; polkitPolicyOwners = [ "hunner" ];
}; };
programs.obs-studio = { programs.obs-studio = {
enable = true; enable = true;

View file

@ -1,10 +1,4 @@
{ { config, lib, pkgs, modulesPath, openclaw-flake, ... }:
config,
lib,
pkgs,
modulesPath,
...
}:
{ {
imports = [ imports = [
@ -22,13 +16,9 @@
# 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.dates = "daily"; nix.gc.options = "--delete-older-than 30d";
nix.gc.options = "--delete-older-than 7d";
# sops-nix secrets # sops-nix secrets
sops.defaultSopsFile = ./secrets/config.yaml; sops.defaultSopsFile = ./secrets/config.yaml;
@ -44,10 +34,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 = {
@ -76,12 +66,38 @@
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
@ -98,11 +114,6 @@
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;
@ -192,13 +203,11 @@
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 = 2048; # MiB size = 4096; # 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 = [ "/persist/etc/ssh/ssh_host_ed25519_key" ]; sops.age.sshKeyPaths = [ "/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,10 +32,6 @@ 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.122.0"; version = "0.110.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-CpXWP64URsgt/PhQrUkrT87KG633hxRUIY0wWrTFmjk="; hash = "sha256-RoWKOZCW5qR+NyBqU/AoloVYGscfiVaHZqnaTISTj9w=";
}; };
sourceRoot = "${finalAttrs.src.name}/codex-rs"; sourceRoot = "${finalAttrs.src.name}/codex-rs";
#cargoHash = lib.fakeHash; #cargoHash = lib.fakeHash;
cargoHash = "sha256-2qtMLWSdYWJ+blNfCHXtgmzizuM1HgpTGa5RQ3U/AEM="; cargoHash = "sha256-tj0OAEvydpdT6haVtRXv5rWpeSFM3aYXVyH6jqvJKJ8=";
nativeBuildInputs = [ nativeBuildInputs = [
clang clang

View file

@ -1,35 +0,0 @@
{
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.73.0" "@mariozechner/pi-coding-agent": "0.64.0"
} }
} }

View file

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

View file

@ -1,39 +0,0 @@
{
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" ];
};
}