commit 971c5ece0ac3b39cc450d6574fbdd8f7b4281f29 Author: chn Date: Tue Apr 30 18:45:53 2024 +0800 init diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..1fe265f --- /dev/null +++ b/.clangd @@ -0,0 +1,3 @@ +CompileFlags: +Add: [ -Wall, -Wextra, -std=c++23 ] +Compiler: gcc diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..8392d15 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c1904c2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.vscode +.direnv +build +result +.cache diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..aa1442f --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,27 @@ +cmake_minimum_required(VERSION 3.14) +project(hpcstat VERSION 0.0.0 LANGUAGES CXX) +enable_testing() +include(GNUInstallDirs) + +set_property(GLOBAL PROPERTY CXX_STANDARD 23) +set_property(GLOBAL PROPERTY CXX_STANDARD_REQUIRED ON) +set_property(GLOBAL PROPERTY CXX_EXTENSIONS OFF) + +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + message("Setting build type to 'Release' as none was specified.") + set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") +endif() + +find_package(fmt REQUIRED) +find_package(Boost REQUIRED COMPONENTS headers filesystem) +find_package(zxorm REQUIRED) + +add_executable(hpcstat src/main.cpp) +target_link_libraries(hpcstat PRIVATE fmt::fmt Boost::headers Boost::filesystem zxorm::zxorm) + +install(TARGETS hpcstat RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + +get_property(ImportedTargets DIRECTORY "${CMAKE_SOURCE_DIR}" PROPERTY IMPORTED_TARGETS) +message("Imported targets: ${ImportedTargets}") +message("List of compile features: ${CMAKE_CXX_COMPILE_FEATURES}") diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..28764fd --- /dev/null +++ b/flake.lock @@ -0,0 +1,2888 @@ +{ + "nodes": { + "aagl": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": [ + "nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712185015, + "narHash": "sha256-mL3VSJRkyDJbMh/QqUeOhGOsEOTS7Jw9Tqw4fM+VjB4=", + "owner": "ezKEa", + "repo": "aagl-gtk-on-nix", + "rev": "1dbb1c233a249e8cbc03907e965bd2a48d880262", + "type": "github" + }, + "original": { + "owner": "ezKEa", + "repo": "aagl-gtk-on-nix", + "type": "github" + } + }, + "attic": { + "inputs": { + "crane": [ + "nixos", + "chaotic", + "crane" + ], + "flake-compat": [ + "nixos", + "chaotic", + "flake-compat" + ], + "flake-utils": [ + "nixos", + "chaotic", + "flake-utils" + ], + "nixpkgs": [ + "nixos", + "chaotic", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1711742460, + "narHash": "sha256-0O4v6e4a1toxXZ2gf5INhg4WPE5C5T+SVvsBt+45Mcc=", + "rev": "4dbdbee45728d8ce5788db6461aaaa89d98081f0", + "revCount": 197, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/zhaofengli/attic/0.1.197%2Brev-4dbdbee45728d8ce5788db6461aaaa89d98081f0/018e8bce-1229-7d78-a052-5121272f0341/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/zhaofengli/attic/0.1.%2A.tar.gz" + } + }, + "blurred-wallpaper": { + "flake": false, + "locked": { + "lastModified": 1700747921, + "narHash": "sha256-mCqf03cXlTl4vuJIzVEiYhHQsAPG3i6yHQ3Xdt06HfA=", + "owner": "bouteillerAlan", + "repo": "blurredwallpaper", + "rev": "aecc88d43e458a0962a0091dcdb7baac34e263be", + "type": "github" + }, + "original": { + "owner": "bouteillerAlan", + "repo": "blurredwallpaper", + "rev": "aecc88d43e458a0962a0091dcdb7baac34e263be", + "type": "github" + } + }, + "catppuccin": { + "locked": { + "lastModified": 1713285896, + "narHash": "sha256-hUJ+yeAsmieJUZh19d4p/AUDvGEr8iwbr7b1DhEqFcs=", + "owner": "catppuccin", + "repo": "nix", + "rev": "d2f4a13bd9a4926f90ad80df1c3539e45102f135", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "nix", + "type": "github" + } + }, + "chaotic": { + "inputs": { + "attic": "attic", + "compare-to": "compare-to", + "conduit": "conduit", + "crane": "crane", + "fenix": "fenix", + "flake-compat": "flake-compat_2", + "flake-schemas": "flake-schemas", + "flake-utils": "flake-utils", + "home-manager": [ + "nixos", + "home-manager" + ], + "jovian": "jovian", + "jujutsu": "jujutsu", + "niri": "niri", + "nix-filter": "nix-filter", + "nixpkgs": [ + "nixos", + "nixpkgs" + ], + "systems": "systems", + "yafas": "yafas" + }, + "locked": { + "lastModified": 1712904719, + "narHash": "sha256-WrXAwOyAQN+Pz7rHUo+6YNa4fp+zSLLt3eI2J0jigBY=", + "owner": "chaotic-cx", + "repo": "nyx", + "rev": "6f1068b044655f27f2be6cf62ccab6c65b1a2717", + "type": "github" + }, + "original": { + "owner": "chaotic-cx", + "repo": "nyx", + "type": "github" + } + }, + "citation-style-language": { + "flake": false, + "locked": { + "lastModified": 1710229389, + "narHash": "sha256-0kkO3hRKLPAaoCmhp/a6X8kCShnNcTY6OcsVYtyqy0g=", + "ref": "refs/heads/main", + "rev": "4febfb5c6c228189619cfbb586ab6943d8a5b383", + "revCount": 645, + "submodules": true, + "type": "git", + "url": "https://github.com/zepinglee/citeproc-lua" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://github.com/zepinglee/citeproc-lua" + } + }, + "cjktty": { + "flake": false, + "locked": { + "lastModified": 1704026380, + "narHash": "sha256-2PifENv3HD9a1q+uPsMnFp5RHdGcV4qOyX4e5dmDHK4=", + "owner": "zhmars", + "repo": "cjktty-patches", + "rev": "0d0015730edd2190dee7233f87dd72c423bb75e9", + "type": "github" + }, + "original": { + "owner": "zhmars", + "repo": "cjktty-patches", + "type": "github" + } + }, + "compare-to": { + "locked": { + "lastModified": 1695341185, + "narHash": "sha256-htO6DSbWyCgaDkxi7foPjXwJFPzGjVt3RRUbPSpNtZY=", + "rev": "98b8e330823a3570d328720f87a1153f8a7f2224", + "revCount": 2, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/chaotic-cx/nix-empty-flake/0.1.2%2Brev-98b8e330823a3570d328720f87a1153f8a7f2224/018aba35-d228-7fa9-b205-7616c89ef4e0/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/chaotic-cx/nix-empty-flake/%3D0.1.2.tar.gz" + } + }, + "concurrencpp": { + "flake": false, + "locked": { + "lastModified": 1689417705, + "narHash": "sha256-4qT29YVjKEWcMrI5R5Ps8aD4grAAgz5VOxANjpp1oTo=", + "owner": "David-Haim", + "repo": "concurrencpp", + "rev": "7a88f5401e15e1b64acae70077e40df1a5a9f6bf", + "type": "github" + }, + "original": { + "owner": "David-Haim", + "repo": "concurrencpp", + "type": "github" + } + }, + "conduit": { + "inputs": { + "attic": [ + "nixos", + "chaotic", + "attic" + ], + "crane": [ + "nixos", + "chaotic", + "crane" + ], + "fenix": [ + "nixos", + "chaotic", + "fenix" + ], + "flake-compat": [ + "nixos", + "chaotic", + "flake-compat" + ], + "flake-utils": [ + "nixos", + "chaotic", + "flake-utils" + ], + "nix-filter": [ + "nixos", + "chaotic", + "nix-filter" + ], + "nixpkgs": [ + "nixos", + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712765734, + "narHash": "sha256-HakehmZVdhbXHNaTzoSwIHdvy1A3A7XXEIUHV2cC7d8=", + "owner": "girlbossceo", + "repo": "conduwuit", + "rev": "7d92cad55f58ef55d5c95ecf3753e0fa75ab11e1", + "type": "github" + }, + "original": { + "owner": "girlbossceo", + "repo": "conduwuit", + "type": "github" + } + }, + "cppcoro": { + "flake": false, + "locked": { + "lastModified": 1609835084, + "narHash": "sha256-luBkf1x5kqXaVbQM01yWRmA5QvrQNZkFVCjRctJdnXc=", + "owner": "Garcia6l20", + "repo": "cppcoro", + "rev": "e1d53e620b0eee828915ada179cd7ca8e66ca855", + "type": "github" + }, + "original": { + "owner": "Garcia6l20", + "repo": "cppcoro", + "type": "github" + } + }, + "crane": { + "inputs": { + "nixpkgs": [ + "nixos", + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1706473297, + "narHash": "sha256-FbxuYIrHaXpsYCLtI1gCNJhd+qvERjPibXL3ctmVaCs=", + "rev": "fe812ef0dad5bb93a56c599d318be176d080281d", + "revCount": 493, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/ipetkov/crane/0.16.1/018d51be-1c17-765e-babc-c9e3bc8a5a14/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/ipetkov/crane/%2A.tar.gz" + } + }, + "crane_2": { + "flake": false, + "locked": { + "lastModified": 1699217310, + "narHash": "sha256-xpW3VFUG7yE6UE6Wl0dhqencuENSkV7qpnpe9I8VbPw=", + "owner": "ipetkov", + "repo": "crane", + "rev": "d535642bbe6f377077f7c23f0febb78b1463f449", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "ref": "v0.15.0", + "repo": "crane", + "type": "github" + } + }, + "date": { + "flake": false, + "locked": { + "lastModified": 1710625255, + "narHash": "sha256-xFZ1AjvnWsa4s+T4uCLvPObjpEsVDm9R4V/u8Cog3QU=", + "owner": "HowardHinnant", + "repo": "date", + "rev": "0e65940a7fbc4ed617a1ee111a60311eccbead9a", + "type": "github" + }, + "original": { + "owner": "HowardHinnant", + "repo": "date", + "type": "github" + } + }, + "deploy-rs": { + "inputs": { + "flake-compat": "flake-compat_3", + "nixpkgs": [ + "nixos", + "nixpkgs" + ], + "utils": "utils" + }, + "locked": { + "lastModified": 1711973905, + "narHash": "sha256-UFKME/N1pbUtn+2Aqnk+agUt8CekbpuqwzljivfIme8=", + "owner": "serokell", + "repo": "deploy-rs", + "rev": "88b3059b020da69cbe16526b8d639bd5e0b51c8b", + "type": "github" + }, + "original": { + "owner": "serokell", + "repo": "deploy-rs", + "type": "github" + } + }, + "devshell": { + "inputs": { + "flake-utils": [ + "nixos", + "nur-linyinfeng", + "flake-utils" + ], + "nixpkgs": [ + "nixos", + "nur-linyinfeng", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1711099426, + "narHash": "sha256-HzpgM/wc3aqpnHJJ2oDqPBkNsqWbW0WfWUO8lKu8nGk=", + "owner": "numtide", + "repo": "devshell", + "rev": "2d45b54ca4a183f2fdcf4b19c895b64fbf620ee8", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "doom-emacs": { + "flake": false, + "locked": { + "lastModified": 1662497747, + "narHash": "sha256-4n7E1fqda7cn5/F2jTkOnKw1juG6XMS/FI9gqODL3aU=", + "owner": "doomemacs", + "repo": "doomemacs", + "rev": "3853dff5e11655e858d0bfae64b70cb12ef685ac", + "type": "github" + }, + "original": { + "owner": "doomemacs", + "repo": "doomemacs", + "rev": "3853dff5e11655e858d0bfae64b70cb12ef685ac", + "type": "github" + } + }, + "doom-snippets": { + "flake": false, + "locked": { + "lastModified": 1694887483, + "narHash": "sha256-KlKhruPSLPSKqUnr5/U65arm16VrY9ORzm+XKNZhpTQ=", + "owner": "doomemacs", + "repo": "snippets", + "rev": "f022984ee1318a4015d5d081b3c3dab5a60dc6ff", + "type": "github" + }, + "original": { + "owner": "doomemacs", + "repo": "snippets", + "type": "github" + } + }, + "dream2nix": { + "inputs": { + "nixpkgs": [ + "nixos", + "nix-inspect", + "nci", + "nixpkgs" + ], + "purescript-overlay": "purescript-overlay", + "pyproject-nix": "pyproject-nix" + }, + "locked": { + "lastModified": 1709959559, + "narHash": "sha256-Gb+tUU+clGKVBwiznTQf0emZZ+heALqoVwUgI0O13L8=", + "owner": "nix-community", + "repo": "dream2nix", + "rev": "42838c590971da17a4b6483962707b7fb7b8b9a7", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "dream2nix", + "type": "github" + } + }, + "eigen": { + "flake": false, + "locked": { + "lastModified": 1712885537, + "narHash": "sha256-iu13sWXE9qI4VYrR0jBRQrV+1yq7lJ2kDovrd+bLpKs=", + "owner": "libeigen", + "repo": "eigen", + "rev": "5226566a14ddb4d84214c40809531038f087d187", + "type": "gitlab" + }, + "original": { + "owner": "libeigen", + "repo": "eigen", + "type": "gitlab" + } + }, + "emacs-overlay": { + "flake": false, + "locked": { + "lastModified": 1676366521, + "narHash": "sha256-i4UAY8t9Au9SJtsgYppa3NHSVf1YkV6yqnNIQd+Km4g=", + "owner": "nix-community", + "repo": "emacs-overlay", + "rev": "c16be6de78ea878aedd0292aa5d4a1ee0a5da501", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "emacs-overlay", + "rev": "c16be6de78ea878aedd0292aa5d4a1ee0a5da501", + "type": "github" + } + }, + "emacs-so-long": { + "flake": false, + "locked": { + "lastModified": 1575031854, + "narHash": "sha256-xIa5zO0ZaToDrec1OFjBK6l39AbA4l/CE4LInVu2hi0=", + "owner": "hlissner", + "repo": "emacs-so-long", + "rev": "ed666b0716f60e8988c455804de24b55919e71ca", + "type": "github" + }, + "original": { + "owner": "hlissner", + "repo": "emacs-so-long", + "type": "github" + } + }, + "envfs": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixos", + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1712395886, + "narHash": "sha256-jy9VcKgbysDPZP5NUTVuLB3+jMprKVT7f/+9GUHuCt4=", + "owner": "Mic92", + "repo": "envfs", + "rev": "7cfbba8819911116adf2aeada81532ad9f5c9b46", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "envfs", + "type": "github" + } + }, + "evil-escape": { + "flake": false, + "locked": { + "lastModified": 1588439096, + "narHash": "sha256-aB2Ge5o/93B18tPf4fN1c+O46CNh/nOqwLJbox4c8Gw=", + "owner": "hlissner", + "repo": "evil-escape", + "rev": "819f1ee1cf3f69a1ae920e6004f2c0baeebbe077", + "type": "github" + }, + "original": { + "owner": "hlissner", + "repo": "evil-escape", + "type": "github" + } + }, + "evil-markdown": { + "flake": false, + "locked": { + "lastModified": 1626852210, + "narHash": "sha256-HBBuZ1VWIn6kwK5CtGIvHM1+9eiNiKPH0GUsyvpUVN8=", + "owner": "Somelauw", + "repo": "evil-markdown", + "rev": "8e6cc68af83914b2fa9fd3a3b8472573dbcef477", + "type": "github" + }, + "original": { + "owner": "Somelauw", + "repo": "evil-markdown", + "type": "github" + } + }, + "evil-org-mode": { + "flake": false, + "locked": { + "lastModified": 1607203864, + "narHash": "sha256-JxwqVYDN6OIJEH15MVI6XOZAPtUWUhJQWHyzcrUvrFg=", + "owner": "hlissner", + "repo": "evil-org-mode", + "rev": "a9706da260c45b98601bcd72b1d2c0a24a017700", + "type": "github" + }, + "original": { + "owner": "hlissner", + "repo": "evil-org-mode", + "type": "github" + } + }, + "evil-quick-diff": { + "flake": false, + "locked": { + "lastModified": 1575189609, + "narHash": "sha256-oGzl1ayW9rIuq0haoiFS7RZsS8NFMdEA7K1BSozgnJU=", + "owner": "rgrinberg", + "repo": "evil-quick-diff", + "rev": "69c883720b30a892c63bc89f49d4f0e8b8028908", + "type": "github" + }, + "original": { + "owner": "rgrinberg", + "repo": "evil-quick-diff", + "type": "github" + } + }, + "explain-pause-mode": { + "flake": false, + "locked": { + "lastModified": 1595842060, + "narHash": "sha256-++znrjiDSx+cy4okFBBXUBkRFdtnE2x+trkmqjB3Njs=", + "owner": "lastquestion", + "repo": "explain-pause-mode", + "rev": "2356c8c3639cbeeb9751744dbe737267849b4b51", + "type": "github" + }, + "original": { + "owner": "lastquestion", + "repo": "explain-pause-mode", + "type": "github" + } + }, + "fenix": { + "inputs": { + "nixpkgs": [ + "nixos", + "chaotic", + "nixpkgs" + ], + "rust-analyzer-src": "rust-analyzer-src" + }, + "locked": { + "lastModified": 1711952616, + "narHash": "sha256-WJvDdOph001fA1Ap3AyaQtz/afJAe7meSG5uJAdSE+A=", + "rev": "209048d7c545905c470f6f8c05c5061f391031a8", + "revCount": 1822, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/nix-community/fenix/0.1.1822%2Brev-209048d7c545905c470f6f8c05c5061f391031a8/018e98ba-d842-7dad-9d6a-0d0ee173b6b1/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/nix-community/fenix/0.1.%2A.tar.gz" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/%2A.tar.gz" + } + }, + "flake-compat_3": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_4": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_5": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_6": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_7": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixos", + "envfs", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709336216, + "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1698882062, + "narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8c9fa2545007b49a5db5f650ae91f227672c3877", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1709336216, + "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_4": { + "inputs": { + "nixpkgs-lib": [ + "nixos", + "nixpak", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1706830856, + "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": [ + "nixos", + "nur-linyinfeng", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-schemas": { + "locked": { + "lastModified": 1693491534, + "narHash": "sha256-ifw8Td8kD08J8DxFbYjeIx5naHcDLz7s2IFP3X42I/U=", + "rev": "c702cbb663d6d70bbb716584a2ee3aeb35017279", + "revCount": 21, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.1/018a4c59-80e1-708a-bb4d-854930c20f72/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.1.tar.gz" + } + }, + "flake-utils": { + "inputs": { + "systems": [ + "nixos", + "chaotic", + "systems" + ] + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "revCount": 92, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/numtide/flake-utils/0.1.92%2Brev-b1d9ab70662946ef0850d488da1c9019f3a9752a/018e2ca5-e5a2-7f80-9261-445a8cecd4d7/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/numtide/flake-utils/0.1.%2A.tar.gz" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_3": { + "inputs": { + "systems": "systems_4" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_4": { + "inputs": { + "systems": "systems_5" + }, + "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_5": { + "locked": { + "lastModified": 1638122382, + "narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "74f7e4319258e287b0f9cb95426c9853b282730b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_6": { + "inputs": { + "systems": "systems_6" + }, + "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_7": { + "inputs": { + "systems": "systems_7" + }, + "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_8": { + "inputs": { + "systems": "systems_8" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "fluent-kde": { + "flake": false, + "locked": { + "lastModified": 1685119052, + "narHash": "sha256-jm8ztgoWV8sewCYbFxReiVPjuHY97NslKM1AIoooSiY=", + "owner": "vinceliuice", + "repo": "Fluent-kde", + "rev": "83d5cc2013751aa9eeb944dafa3a3460652690ce", + "type": "github" + }, + "original": { + "owner": "vinceliuice", + "repo": "Fluent-kde", + "type": "github" + } + }, + "format-all": { + "flake": false, + "locked": { + "lastModified": 1581716637, + "narHash": "sha256-ul7LCe60W8TIvUmUtZtZRo8489TK9iTPDsLHmzxY57M=", + "owner": "lassik", + "repo": "emacs-format-all-the-code", + "rev": "47d862d40a088ca089c92cd393c6dca4628f87d3", + "type": "github" + }, + "original": { + "owner": "lassik", + "repo": "emacs-format-all-the-code", + "rev": "47d862d40a088ca089c92cd393c6dca4628f87d3", + "type": "github" + } + }, + "gricad": { + "flake": false, + "locked": { + "lastModified": 1709199491, + "narHash": "sha256-J32quO+kCOrOLkYQzFZpiPhUXJHE6GIrmb0VSlECKLM=", + "owner": "Gricad", + "repo": "nur-packages", + "rev": "4b4a489297f3a11b8d0883b02c0d154ce37f24e0", + "type": "github" + }, + "original": { + "owner": "Gricad", + "repo": "nur-packages", + "type": "github" + } + }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": [ + "nixos", + "nixpak", + "flake-parts" + ], + "nixpkgs": [ + "nixos", + "nixpak", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1704029560, + "narHash": "sha256-a4Iu7x1OP+uSYpqadOu8VCPY+MPF3+f6KIi+MAxlgyw=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "d5cbf433a6ae9cae05400189a8dbc6412a03ba16", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712386041, + "narHash": "sha256-dA82pOMQNnCJMAsPG7AXG35VmCSMZsJHTFlTHizpKWQ=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "d6bb9f934f2870e5cbc5b94c79e9db22246141ff", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-23.11", + "repo": "home-manager", + "type": "github" + } + }, + "impermanence": { + "locked": { + "lastModified": 1708968331, + "narHash": "sha256-VUXLaPusCBvwM3zhGbRIJVeYluh2uWuqtj4WirQ1L9Y=", + "owner": "nix-community", + "repo": "impermanence", + "rev": "a33ef102a02ce77d3e39c25197664b7a636f9c30", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "impermanence", + "type": "github" + } + }, + "jovian": { + "inputs": { + "nix-github-actions": "nix-github-actions", + "nixpkgs": [ + "nixos", + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712521891, + "narHash": "sha256-qJRkB7QZo2mdR/nABeHQKi3xkQxUsSGjVVQXTSHQocI=", + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "rev": "ec53086c76303dc8880fa7ba06c45abcae8b3398", + "type": "github" + }, + "original": { + "owner": "Jovian-Experiments", + "repo": "Jovian-NixOS", + "type": "github" + } + }, + "jujutsu": { + "inputs": { + "flake-utils": [ + "nixos", + "chaotic", + "flake-utils" + ], + "nixpkgs": [ + "nixos", + "chaotic", + "nixpkgs" + ], + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1712768022, + "narHash": "sha256-wpOfdrywFHjXLzUuNuuHixVZytPkxAUEsYY4GzcE09k=", + "owner": "martinvonz", + "repo": "jj", + "rev": "a786802b4017f6e20cc3ecde054e249e4f8ec005", + "type": "github" + }, + "original": { + "owner": "martinvonz", + "repo": "jj", + "type": "github" + } + }, + "kylin-virtual-keyboard": { + "flake": false, + "locked": { + "lastModified": 1710313521, + "narHash": "sha256-A8Y+lvAPlh0HeTxTaHCdAD/CilQCQwsX4C+fBBKaqTU=", + "ref": "refs/heads/upstream", + "rev": "a8ec88762d63d676aae4f5f1e6d9d1dedf07cf28", + "revCount": 161, + "type": "git", + "url": "https://gitee.com/openkylin/kylin-virtual-keyboard.git" + }, + "original": { + "type": "git", + "url": "https://gitee.com/openkylin/kylin-virtual-keyboard.git" + } + }, + "lepton": { + "flake": false, + "locked": { + "lastModified": 1711209012, + "narHash": "sha256-FJbVZ9t/IQBASaX4EfpuUmge9uZ/7rWlcTp6yWxEFRI=", + "owner": "black7375", + "repo": "Firefox-UI-Fix", + "rev": "ba16a40b1dc36d43b433ae5ebb518bd6281be9ec", + "type": "github" + }, + "original": { + "owner": "black7375", + "repo": "Firefox-UI-Fix", + "type": "github" + } + }, + "linux-surface": { + "flake": false, + "locked": { + "lastModified": 1712763056, + "narHash": "sha256-fB4VWGdSnk4AyueLpnd9gHIJtqrwZXQdLpTcj/45scI=", + "owner": "linux-surface", + "repo": "linux-surface", + "rev": "ff7468d74931455d0163bcf0a9bc908e92a3bc71", + "type": "github" + }, + "original": { + "owner": "linux-surface", + "repo": "linux-surface", + "type": "github" + } + }, + "lmod": { + "flake": false, + "locked": { + "lastModified": 1710702673, + "narHash": "sha256-E13kbKTLn7p4qd327d2ZJK5AC9MWjlDNtadIx41L8fE=", + "owner": "TACC", + "repo": "Lmod", + "rev": "603f7e789cb8dfd02415bd1257a25b2d4dc69c04", + "type": "github" + }, + "original": { + "owner": "TACC", + "repo": "Lmod", + "type": "github" + } + }, + "matplotplusplus": { + "flake": false, + "locked": { + "lastModified": 1712716029, + "narHash": "sha256-R/skGbIyD67f/wGKebFkhqDxsFNw9exIK/tEauqaHCs=", + "owner": "alandefreitas", + "repo": "matplotplusplus", + "rev": "734e4876611ae6ed216da47a7eb5c4b8e39785ce", + "type": "github" + }, + "original": { + "owner": "alandefreitas", + "repo": "matplotplusplus", + "type": "github" + } + }, + "misskey": { + "flake": false, + "locked": { + "lastModified": 1709515934, + "narHash": "sha256-3zMW1Rrv9j/sFENs+vFguRGJtsxKmtl4prvRnd2SBxI=", + "ref": "refs/heads/chn-mod", + "rev": "00527b3167f07f10a407adb5ad86759449181554", + "revCount": 25465, + "submodules": true, + "type": "git", + "url": "https://github.com/CHN-beta/misskey" + }, + "original": { + "submodules": true, + "type": "git", + "url": "https://github.com/CHN-beta/misskey" + } + }, + "mk-naked-shell": { + "flake": false, + "locked": { + "lastModified": 1681286841, + "narHash": "sha256-3XlJrwlR0nBiREnuogoa5i1b4+w/XPe0z8bbrJASw0g=", + "owner": "yusdacra", + "repo": "mk-naked-shell", + "rev": "7612f828dd6f22b7fb332cc69440e839d7ffe6bd", + "type": "github" + }, + "original": { + "owner": "yusdacra", + "repo": "mk-naked-shell", + "type": "github" + } + }, + "mumax": { + "flake": false, + "locked": { + "lastModified": 1709298542, + "narHash": "sha256-w3VuxnEqkwwplNXwzdhC2mVMuVG7bBdzzzRcWZ4nRM8=", + "owner": "CHN-beta", + "repo": "mumax", + "rev": "3658ac4ec975a58ba3ad5e7ede61bd26bdadfe23", + "type": "github" + }, + "original": { + "owner": "CHN-beta", + "repo": "mumax", + "type": "github" + } + }, + "nameof": { + "flake": false, + "locked": { + "lastModified": 1706711212, + "narHash": "sha256-g3VwgCloqFnghG7OB7aK3uB/1RNKe8h6Nu7pbIGqrEQ=", + "owner": "Neargye", + "repo": "nameof", + "rev": "3d4c9820fc88837a8ec3081544d3e52a75813c40", + "type": "github" + }, + "original": { + "owner": "Neargye", + "repo": "nameof", + "type": "github" + } + }, + "napalm": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1703102458, + "narHash": "sha256-3pOV731qi34Q2G8e2SqjUXqnftuFrbcq+NdagEZXISo=", + "owner": "nix-community", + "repo": "napalm", + "rev": "edcb26c266ca37c9521f6a97f33234633cbec186", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "napalm", + "type": "github" + } + }, + "nci": { + "inputs": { + "crane": "crane_2", + "dream2nix": "dream2nix", + "mk-naked-shell": "mk-naked-shell", + "nixpkgs": [ + "nixos", + "nix-inspect", + "nixpkgs" + ], + "parts": "parts", + "rust-overlay": "rust-overlay_2", + "treefmt": "treefmt" + }, + "locked": { + "lastModified": 1710137478, + "narHash": "sha256-+hbUWY1PEItyx3CBOGsHlJEDO2wRY2N1mpBhiLBblck=", + "owner": "yusdacra", + "repo": "nix-cargo-integration", + "rev": "f3cc8751427e16ec48c0467357b3f3979a53ae9c", + "type": "github" + }, + "original": { + "owner": "yusdacra", + "repo": "nix-cargo-integration", + "type": "github" + } + }, + "niri": { + "inputs": { + "crane": [ + "nixos", + "chaotic", + "crane" + ], + "fenix": [ + "nixos", + "chaotic", + "fenix" + ], + "flake-utils": [ + "nixos", + "chaotic", + "flake-utils" + ], + "nix-filter": [ + "nixos", + "chaotic", + "nix-filter" + ], + "nixpkgs": [ + "nixos", + "chaotic", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712736594, + "narHash": "sha256-r9i9cZUB02l0qhJ7Q4g3zXM8uClM4zxjEYM1AAFq48I=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "0cd149c939c1f756a96381a84801073021ac1e63", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "repo": "niri", + "type": "github" + } + }, + "nix-doom-emacs": { + "inputs": { + "doom-emacs": "doom-emacs", + "doom-snippets": "doom-snippets", + "emacs-overlay": "emacs-overlay", + "emacs-so-long": "emacs-so-long", + "evil-escape": "evil-escape", + "evil-markdown": "evil-markdown", + "evil-org-mode": "evil-org-mode", + "evil-quick-diff": "evil-quick-diff", + "explain-pause-mode": "explain-pause-mode", + "flake-compat": "flake-compat_4", + "flake-utils": "flake-utils_3", + "format-all": "format-all", + "nix-straight": "nix-straight", + "nixpkgs": [ + "nixos", + "nixpkgs" + ], + "nose": "nose", + "ob-racket": "ob-racket", + "org": "org", + "org-contrib": "org-contrib", + "org-yt": "org-yt", + "php-extras": "php-extras", + "revealjs": "revealjs", + "rotate-text": "rotate-text", + "sln-mode": "sln-mode", + "ts-fold": "ts-fold", + "ws-butler": "ws-butler" + }, + "locked": { + "lastModified": 1701264882, + "narHash": "sha256-MBXR7x7Ua8qystlGr+lenwjQd7dsFNFpEFmtHhh10zM=", + "owner": "nix-community", + "repo": "nix-doom-emacs", + "rev": "f7413022370f24bb53cb450bfb2803233510113e", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-doom-emacs", + "type": "github" + } + }, + "nix-fast-build": { + "inputs": { + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "nixos", + "nixpkgs" + ], + "treefmt-nix": "treefmt-nix_2" + }, + "locked": { + "lastModified": 1709911523, + "narHash": "sha256-XNutwbRI6h57ybeKy0yYupfngWYcfcIqE0b0LgXnyxs=", + "owner": "Mic92", + "repo": "nix-fast-build", + "rev": "692fe3e98f36b60c678d637235271b57910a7f80", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "nix-fast-build", + "type": "github" + } + }, + "nix-filter": { + "locked": { + "lastModified": 1710156097, + "narHash": "sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj+rL8sRQsSM=", + "owner": "numtide", + "repo": "nix-filter", + "rev": "3342559a24e85fc164b295c3444e8a139924675b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "nix-filter", + "type": "github" + } + }, + "nix-flatpak": { + "locked": { + "lastModified": 1711997375, + "narHash": "sha256-KvU4gOtuFMS9Il67glRGtdNfguAINT9pCaXtvCL8uI8=", + "owner": "gmodena", + "repo": "nix-flatpak", + "rev": "45bf66f7068db79b552da864c0e87452be624d6c", + "type": "github" + }, + "original": { + "owner": "gmodena", + "repo": "nix-flatpak", + "type": "github" + } + }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "nixos", + "chaotic", + "jovian", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1690328911, + "narHash": "sha256-fxtExYk+aGf2YbjeWQ8JY9/n9dwuEt+ma1eUFzF8Jeo=", + "owner": "zhaofengli", + "repo": "nix-github-actions", + "rev": "96df4a39c52f53cb7098b923224d8ce941b64747", + "type": "github" + }, + "original": { + "owner": "zhaofengli", + "ref": "matrix-name", + "repo": "nix-github-actions", + "type": "github" + } + }, + "nix-index-database": { + "inputs": { + "nixpkgs": [ + "nixos", + "nixpkgs-unstable" + ] + }, + "locked": { + "lastModified": 1712459390, + "narHash": "sha256-e12bNDottaGoBgd0AdH/bQvk854xunlWAdZwr/oHO1c=", + "owner": "Mic92", + "repo": "nix-index-database", + "rev": "4676d72d872459e1e3a248d049609f110c570e9a", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "nix-index-database", + "type": "github" + } + }, + "nix-inspect": { + "inputs": { + "nci": "nci", + "nixpkgs": "nixpkgs", + "parts": "parts_2" + }, + "locked": { + "lastModified": 1713195291, + "narHash": "sha256-UoenVdkDb4mL+Hf4KNzxLwctJJ78BmPSDdGkv1mRL2g=", + "owner": "bluskript", + "repo": "nix-inspect", + "rev": "e22da2a40e92d8180714ff4027c8768c422d6cd9", + "type": "github" + }, + "original": { + "owner": "bluskript", + "repo": "nix-inspect", + "type": "github" + } + }, + "nix-straight": { + "flake": false, + "locked": { + "lastModified": 1694361489, + "narHash": "sha256-kjDp+j6OtrmqbtjQB5uuOtjS08+kgJQuxFqhWE1Y9Rw=", + "owner": "nix-community", + "repo": "nix-straight.el", + "rev": "748be99b84be0b130e946288099806a0f16d6e57", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-straight.el", + "type": "github" + } + }, + "nix-vscode-extensions": { + "inputs": { + "flake-compat": "flake-compat_5", + "flake-utils": "flake-utils_4", + "nixpkgs": [ + "nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712907804, + "narHash": "sha256-T1wv1UTuwskzQ16rRPscPPRTviIDF1lmOJhqL/CbtQQ=", + "owner": "nix-community", + "repo": "nix-vscode-extensions", + "rev": "967df647ce97d2d5cf78676e16fe6ceae0247355", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-vscode-extensions", + "type": "github" + } + }, + "nixd": { + "inputs": { + "flake-parts": "flake-parts_3", + "nixpkgs": [ + "nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712829501, + "narHash": "sha256-tbXTbuifD64M8mt8Ve/WIXnFJKVQXMEeo47cXS9jC8c=", + "owner": "nix-community", + "repo": "nixd", + "rev": "7837528a19884373268a4aac781a228698cfb310", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixd", + "type": "github" + } + }, + "nixos": { + "inputs": { + "aagl": "aagl", + "blurred-wallpaper": "blurred-wallpaper", + "catppuccin": "catppuccin", + "chaotic": "chaotic", + "citation-style-language": "citation-style-language", + "cjktty": "cjktty", + "concurrencpp": "concurrencpp", + "cppcoro": "cppcoro", + "date": "date", + "deploy-rs": "deploy-rs", + "eigen": "eigen", + "envfs": "envfs", + "fluent-kde": "fluent-kde", + "gricad": "gricad", + "home-manager": "home-manager", + "impermanence": "impermanence", + "kylin-virtual-keyboard": "kylin-virtual-keyboard", + "lepton": "lepton", + "linux-surface": "linux-surface", + "lmod": "lmod", + "matplotplusplus": "matplotplusplus", + "misskey": "misskey", + "mumax": "mumax", + "nameof": "nameof", + "napalm": "napalm", + "nix-doom-emacs": "nix-doom-emacs", + "nix-fast-build": "nix-fast-build", + "nix-flatpak": "nix-flatpak", + "nix-index-database": "nix-index-database", + "nix-inspect": "nix-inspect", + "nix-vscode-extensions": "nix-vscode-extensions", + "nixd": "nixd", + "nixos-cn": "nixos-cn", + "nixos-hardware": "nixos-hardware", + "nixpak": "nixpak", + "nixpkgs": "nixpkgs_2", + "nixpkgs-22.05": "nixpkgs-22.05", + "nixpkgs-22.11": "nixpkgs-22.11", + "nixpkgs-23.05": "nixpkgs-23.05", + "nixpkgs-unstable": "nixpkgs-unstable", + "nodesoup": "nodesoup", + "nur": "nur", + "nur-linyinfeng": "nur-linyinfeng", + "nur-xddxdd": "nur-xddxdd", + "plasma-manager": "plasma-manager", + "pnpm2nix-nzbr": "pnpm2nix-nzbr", + "qchem": "qchem", + "rsshub": "rsshub", + "rycee": "rycee", + "slate": "slate", + "sops-nix": "sops-nix", + "tgbot-cpp": "tgbot-cpp", + "v-sim": "v-sim", + "win11os-kde": "win11os-kde", + "zpp-bits": "zpp-bits", + "zxorm": "zxorm" + }, + "locked": { + "lastModified": 1714468512, + "narHash": "sha256-7UOlepLVQXlPEqSiTmpDbYgSsgaaXtzhrXMwxv44r4o=", + "owner": "CHN-beta", + "repo": "nixos", + "rev": "405dc14ce7c3bc04eaafae9b4d0e1cc4102c317b", + "type": "github" + }, + "original": { + "owner": "CHN-beta", + "repo": "nixos", + "type": "github" + } + }, + "nixos-cn": { + "inputs": { + "flake-utils": "flake-utils_5", + "nixpkgs": [ + "nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1682818384, + "narHash": "sha256-l8jh9BQj6nfjPDYGyrZkZwX1GaOqBX+pBHU+7fFZU3w=", + "owner": "nixos-cn", + "repo": "flakes", + "rev": "2d475ec68cca251ef6c6c69a9224db5c264c5e5b", + "type": "github" + }, + "original": { + "owner": "nixos-cn", + "repo": "flakes", + "type": "github" + } + }, + "nixos-hardware": { + "locked": { + "lastModified": 1709128941, + "narHash": "sha256-Cy38sKmRBdqmFYlwRic7dMZW1SvKI9JSEaX982asqpc=", + "owner": "CHN-beta", + "repo": "nixos-hardware", + "rev": "06e3254e9de0cc6849e02d1c4c6f6db99990839e", + "type": "github" + }, + "original": { + "owner": "CHN-beta", + "repo": "nixos-hardware", + "type": "github" + } + }, + "nixos-stable": { + "locked": { + "lastModified": 1712741485, + "narHash": "sha256-bCs0+MSTra80oXAsnM6Oq62WsirOIaijQ/BbUY59tR4=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "b2cf36f43f9ef2ded5711b30b1f393ac423d8f72", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpak": { + "inputs": { + "flake-parts": "flake-parts_4", + "hercules-ci-effects": "hercules-ci-effects", + "nixpkgs": [ + "nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709985524, + "narHash": "sha256-29ZwMJBErP41ZPis1MskhdheDRgt+reDuf53jONSkc8=", + "owner": "nixpak", + "repo": "nixpak", + "rev": "b0862a125da8fe5d179633d6cc7aed57d5316871", + "type": "github" + }, + "original": { + "owner": "nixpak", + "repo": "nixpak", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1712963716, + "narHash": "sha256-WKm9CvgCldeIVvRz87iOMi8CFVB1apJlkUT4GGvA0iM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "cfd6b5fc90b15709b780a5a1619695a88505a176", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-22.05": { + "locked": { + "lastModified": 1685573264, + "narHash": "sha256-Zffu01pONhs/pqH07cjlF10NnMDLok8ix5Uk4rhOnZQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "380be19fbd2d9079f677978361792cb25e8a3635", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-22.11": { + "locked": { + "lastModified": 1688392541, + "narHash": "sha256-lHrKvEkCPTUO+7tPfjIcb7Trk6k31rz18vkyqmkeJfY=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ea4c80b39be4c09702b0cb3b42eab59e2ba4f24b", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-23.05": { + "locked": { + "lastModified": 1701326464, + "narHash": "sha256-WGt5wjvkzCgRVXCS7OHd6vyv2xX6RZDpZk5i/vxLc1U=", + "owner": "CHN-beta", + "repo": "nixpkgs", + "rev": "76376edf425b9ddc8fb71d5cc4d3a3cb4f2486f6", + "type": "github" + }, + "original": { + "owner": "CHN-beta", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1698611440, + "narHash": "sha256-jPjHjrerhYDy3q9+s5EAsuhyhuknNfowY6yt6pjn9pc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0cbe9f69c234a7700596e943bfae7ef27a31b735", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "dir": "lib", + "lastModified": 1709237383, + "narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1711460390, + "narHash": "sha256-akSgjDZL6pVHEfSE6sz1DNSXuYX6hq+P/1Z5IoYWs7E=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "44733514b72e732bd49f5511bd0203dea9b9a434", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1712791164, + "narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=", + "owner": "CHN-beta", + "repo": "nixpkgs", + "rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5", + "type": "github" + }, + "original": { + "owner": "CHN-beta", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1712908828, + "narHash": "sha256-ihB9lz4wN/BHOUfW5wrQVZxR4KmcDpg35elFVQGRzWM=", + "owner": "CHN-beta", + "repo": "nixpkgs", + "rev": "f55ccc3452e34030cd6f555095bcb5f95229e798", + "type": "github" + }, + "original": { + "owner": "CHN-beta", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1714253743, + "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nodesoup": { + "flake": false, + "locked": { + "lastModified": 1599307935, + "narHash": "sha256-tFLq6QC3U3uvcuWsdRy2wnwcmAfH2MkI2oMcAiUBHSo=", + "owner": "olvb", + "repo": "nodesoup", + "rev": "3158ad082bb0cd1abee75418b12b35522dbca74f", + "type": "github" + }, + "original": { + "owner": "olvb", + "repo": "nodesoup", + "type": "github" + } + }, + "nose": { + "flake": false, + "locked": { + "lastModified": 1400604510, + "narHash": "sha256-daEi8Kta1oGaDEmUUDDQMahTTPOpvNpDKk22rlr7cB0=", + "owner": "emacsattic", + "repo": "nose", + "rev": "f8528297519eba911696c4e68fa88892de9a7b72", + "type": "github" + }, + "original": { + "owner": "emacsattic", + "repo": "nose", + "type": "github" + } + }, + "nur": { + "locked": { + "lastModified": 1712906890, + "narHash": "sha256-MkhmSqGqQ5cDa1VzqkA76h6+9rYCY2IJzSRglNV+Vr4=", + "owner": "nix-community", + "repo": "NUR", + "rev": "0fb8bccadea16d13d87210c21fbae09b26c28e07", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "nur-linyinfeng": { + "inputs": { + "devshell": "devshell", + "flake-compat": "flake-compat_6", + "flake-parts": "flake-parts_5", + "flake-utils": "flake-utils_6", + "nixos-stable": "nixos-stable", + "nixpkgs": [ + "nixos", + "nixpkgs" + ], + "nvfetcher": "nvfetcher", + "treefmt-nix": "treefmt-nix_3" + }, + "locked": { + "lastModified": 1712903050, + "narHash": "sha256-/V5ugz8raxWyqdtCSw/clZplQRxyp9WkxBE5jeJBpf8=", + "owner": "linyinfeng", + "repo": "nur-packages", + "rev": "f1c2d98518d8d223fc700d86c6eb63abd5de40cb", + "type": "github" + }, + "original": { + "owner": "linyinfeng", + "repo": "nur-packages", + "type": "github" + } + }, + "nur-xddxdd": { + "inputs": { + "flake-utils": "flake-utils_7", + "nixpkgs": [ + "nixos", + "nixpkgs" + ], + "nvfetcher": "nvfetcher_2" + }, + "locked": { + "lastModified": 1709022575, + "narHash": "sha256-R0/vakXPB0brUHHjzRA6y9R3XP1Fd0byKrsmrJbqLZQ=", + "owner": "xddxdd", + "repo": "nur-packages", + "rev": "404bc382a29f3d78b03871b96016579d6a0aa305", + "type": "github" + }, + "original": { + "owner": "xddxdd", + "repo": "nur-packages", + "rev": "404bc382a29f3d78b03871b96016579d6a0aa305", + "type": "github" + } + }, + "nvfetcher": { + "inputs": { + "flake-compat": [ + "nixos", + "nur-linyinfeng", + "flake-compat" + ], + "flake-utils": [ + "nixos", + "nur-linyinfeng", + "flake-utils" + ], + "nixpkgs": [ + "nixos", + "nur-linyinfeng", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712538578, + "narHash": "sha256-+fFOtg2fQK6kafSucYDpMG8ENXgo52+YSQtCoXv/+Ik=", + "owner": "berberman", + "repo": "nvfetcher", + "rev": "1463db224a54cbc9499860ef5a51a9b6bf7c3180", + "type": "github" + }, + "original": { + "owner": "berberman", + "repo": "nvfetcher", + "type": "github" + } + }, + "nvfetcher_2": { + "inputs": { + "flake-compat": "flake-compat_7", + "flake-utils": [ + "nixos", + "nur-xddxdd", + "flake-utils" + ], + "nixpkgs": [ + "nixos", + "nur-xddxdd", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712538578, + "narHash": "sha256-+fFOtg2fQK6kafSucYDpMG8ENXgo52+YSQtCoXv/+Ik=", + "owner": "berberman", + "repo": "nvfetcher", + "rev": "1463db224a54cbc9499860ef5a51a9b6bf7c3180", + "type": "github" + }, + "original": { + "owner": "berberman", + "repo": "nvfetcher", + "type": "github" + } + }, + "ob-racket": { + "flake": false, + "locked": { + "lastModified": 1584656173, + "narHash": "sha256-rBUYDDCXb+3D4xTPQo9UocbTPZ32kWV1Uya/1DmZknU=", + "owner": "xchrishawk", + "repo": "ob-racket", + "rev": "83457ec9e1e96a29fd2086ed19432b9d75787673", + "type": "github" + }, + "original": { + "owner": "xchrishawk", + "repo": "ob-racket", + "type": "github" + } + }, + "org": { + "flake": false, + "locked": { + "lastModified": 1695726851, + "narHash": "sha256-qgbjspklSoI8M3cbCJOcUdjuijRgsL/+PSyEOW9VX4I=", + "owner": "emacs-straight", + "repo": "org-mode", + "rev": "aa9177e1a8b039c357d369c1c9aaab710bb247a9", + "type": "github" + }, + "original": { + "owner": "emacs-straight", + "repo": "org-mode", + "type": "github" + } + }, + "org-contrib": { + "flake": false, + "locked": { + "lastModified": 1694946041, + "narHash": "sha256-X/HFG6NZe5BY00KvGbcsIuf9R6Lg8x7Uhd0Y5+Q3qZU=", + "owner": "emacsmirror", + "repo": "org-contrib", + "rev": "5eabbf22bdd4523c922a30787e98ee66c24221aa", + "type": "github" + }, + "original": { + "owner": "emacsmirror", + "repo": "org-contrib", + "type": "github" + } + }, + "org-yt": { + "flake": false, + "locked": { + "lastModified": 1527381913, + "narHash": "sha256-dzQ6B7ryzatHCTLyEnRSbWO0VUiX/FHYnpHTs74aVUs=", + "owner": "TobiasZawada", + "repo": "org-yt", + "rev": "40cc1ac76d741055cbefa13860d9f070a7ade001", + "type": "github" + }, + "original": { + "owner": "TobiasZawada", + "repo": "org-yt", + "type": "github" + } + }, + "parts": { + "inputs": { + "nixpkgs-lib": [ + "nixos", + "nix-inspect", + "nci", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709336216, + "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "parts_2": { + "inputs": { + "nixpkgs-lib": [ + "nixos", + "nix-inspect", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709336216, + "narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "php-extras": { + "flake": false, + "locked": { + "lastModified": 1573312690, + "narHash": "sha256-r4WyVbzvT0ra4Z6JywNBOw5RxOEYd6Qe2IpebHXkj1U=", + "owner": "arnested", + "repo": "php-extras", + "rev": "d410c5af663c30c01d461ac476d1cbfbacb49367", + "type": "github" + }, + "original": { + "owner": "arnested", + "repo": "php-extras", + "type": "github" + } + }, + "plasma-manager": { + "inputs": { + "home-manager": [ + "nixos", + "home-manager" + ], + "nixpkgs": [ + "nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712907244, + "narHash": "sha256-uLNzw3ZRWob9/FfOXUNhlzKNCPWNtWfF4QYoc3Hs1Fw=", + "owner": "pjones", + "repo": "plasma-manager", + "rev": "27014d611e79bba47d5ee12f5790baf121045506", + "type": "github" + }, + "original": { + "owner": "pjones", + "repo": "plasma-manager", + "type": "github" + } + }, + "pnpm2nix-nzbr": { + "inputs": { + "flake-utils": "flake-utils_8", + "nixpkgs": [ + "nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708175105, + "narHash": "sha256-in16QROQJUoZ1NFvBo2jwKJAhOes1w7kR+jQZr42glQ=", + "owner": "CHN-beta", + "repo": "pnpm2nix-nzbr", + "rev": "6b9e77486722b925f51077e891c41dd5c64fabdb", + "type": "github" + }, + "original": { + "owner": "CHN-beta", + "repo": "pnpm2nix-nzbr", + "type": "github" + } + }, + "purescript-overlay": { + "inputs": { + "nixpkgs": [ + "nixos", + "nix-inspect", + "nci", + "dream2nix", + "nixpkgs" + ], + "slimlock": "slimlock" + }, + "locked": { + "lastModified": 1696022621, + "narHash": "sha256-eMjFmsj2G1E0Q5XiibUNgFjTiSz0GxIeSSzzVdoN730=", + "owner": "thomashoneyman", + "repo": "purescript-overlay", + "rev": "047c7933abd6da8aa239904422e22d190ce55ead", + "type": "github" + }, + "original": { + "owner": "thomashoneyman", + "repo": "purescript-overlay", + "type": "github" + } + }, + "pyproject-nix": { + "flake": false, + "locked": { + "lastModified": 1702448246, + "narHash": "sha256-hFg5s/hoJFv7tDpiGvEvXP0UfFvFEDgTdyHIjDVHu1I=", + "owner": "davhau", + "repo": "pyproject.nix", + "rev": "5a06a2697b228c04dd2f35659b4b659ca74f7aeb", + "type": "github" + }, + "original": { + "owner": "davhau", + "ref": "dream2nix", + "repo": "pyproject.nix", + "type": "github" + } + }, + "qchem": { + "inputs": { + "nixpkgs": [ + "nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1704154229, + "narHash": "sha256-lO4jZeftNUN+DEgWs/y69IMAzCUT7joxKih92Iu59fs=", + "owner": "Nix-QChem", + "repo": "NixOS-QChem", + "rev": "0bbfe8a5c936861b3e14ce4217f6dae46760859c", + "type": "github" + }, + "original": { + "owner": "Nix-QChem", + "ref": "release-23.11", + "repo": "NixOS-QChem", + "type": "github" + } + }, + "revealjs": { + "flake": false, + "locked": { + "lastModified": 1695738029, + "narHash": "sha256-Z9c9Q41jMkj/DyXOiZYyIa7Gmn8VB8yauTyWrSsT+ps=", + "owner": "hakimel", + "repo": "reveal.js", + "rev": "88fbfc5751ad01e3f6adee5819eabeb9e73c3757", + "type": "github" + }, + "original": { + "owner": "hakimel", + "repo": "reveal.js", + "type": "github" + } + }, + "root": { + "inputs": { + "nixos": "nixos", + "nixpkgs": "nixpkgs_3" + } + }, + "rotate-text": { + "flake": false, + "locked": { + "lastModified": 1322962747, + "narHash": "sha256-SOeOgSlcEIsKhUiYDJv0p+mLUb420s9E2BmvZQvZ0wk=", + "owner": "debug-ito", + "repo": "rotate-text.el", + "rev": "48f193697db996855aee1ad2bc99b38c6646fe76", + "type": "github" + }, + "original": { + "owner": "debug-ito", + "repo": "rotate-text.el", + "type": "github" + } + }, + "rsshub": { + "flake": false, + "locked": { + "lastModified": 1712907942, + "narHash": "sha256-xzJ/NC4eqIqPrL4NsPCBzL7cJicDHAeAT8DHCnwFFdg=", + "owner": "DIYgod", + "repo": "RSSHub", + "rev": "95cd0ea7b41743312e64b1f0b3ad1bfe15dbecd5", + "type": "github" + }, + "original": { + "owner": "DIYgod", + "repo": "RSSHub", + "type": "github" + } + }, + "rust-analyzer-src": { + "flake": false, + "locked": { + "lastModified": 1711885694, + "narHash": "sha256-dyezzeSbWMpflma+E9USmvSxuLgGcNGcGw3cOnX36ko=", + "owner": "rust-lang", + "repo": "rust-analyzer", + "rev": "e4a405f877efd820bef9c0e77a02494e47c17512", + "type": "github" + }, + "original": { + "owner": "rust-lang", + "ref": "nightly", + "repo": "rust-analyzer", + "type": "github" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "nixos", + "chaotic", + "jujutsu", + "flake-utils" + ], + "nixpkgs": [ + "nixos", + "chaotic", + "jujutsu", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1707444620, + "narHash": "sha256-P8kRkiJLFttN+hbAOlm11wPxUrQZqKle+QtVCqFiGXY=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "78503e9199010a4df714f29a4f9c00eb2ccae071", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rust-overlay_2": { + "flake": false, + "locked": { + "lastModified": 1710123130, + "narHash": "sha256-EoGL/WSM1M2L099Q91mPKO/FRV2iu2ZLOEp3y5sLfiE=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "73aca260afe5d41d3ebce932c8d896399c9d5174", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "rycee": { + "flake": false, + "locked": { + "lastModified": 1712894663, + "narHash": "sha256-aNvgxHiDCJ2dnkkpU8W5ufHb5KY2P8wupzovGiOijqY=", + "owner": "rycee", + "repo": "nur-expressions", + "rev": "9f5c9aad284a476a7b99e3f91a76e8e137605763", + "type": "gitlab" + }, + "original": { + "owner": "rycee", + "repo": "nur-expressions", + "type": "gitlab" + } + }, + "slate": { + "flake": false, + "locked": { + "lastModified": 1626631298, + "narHash": "sha256-3tbB16sWVUqiHAfeFc0FnFb0Cf6ZFxYWsYAyexeZVxk=", + "owner": "TheBigWazz", + "repo": "Slate", + "rev": "ff21b49c6e49b5a9f89497e4fea49a5a0c39bd6b", + "type": "github" + }, + "original": { + "owner": "TheBigWazz", + "repo": "Slate", + "type": "github" + } + }, + "slimlock": { + "inputs": { + "nixpkgs": [ + "nixos", + "nix-inspect", + "nci", + "dream2nix", + "purescript-overlay", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1688610262, + "narHash": "sha256-Wg0ViDotFWGWqKIQzyYCgayeH8s4U1OZcTiWTQYdAp4=", + "owner": "thomashoneyman", + "repo": "slimlock", + "rev": "b5c6cdcaf636ebbebd0a1f32520929394493f1a6", + "type": "github" + }, + "original": { + "owner": "thomashoneyman", + "repo": "slimlock", + "type": "github" + } + }, + "sln-mode": { + "flake": false, + "locked": { + "lastModified": 1423727528, + "narHash": "sha256-XqkqPyEJuTtFslOz1fpTf/Klbd/zA7IGpzpmum/MGao=", + "owner": "sensorflo", + "repo": "sln-mode", + "rev": "0f91d1b957c7d2a7bab9278ec57b54d57f1dbd9c", + "type": "github" + }, + "original": { + "owner": "sensorflo", + "repo": "sln-mode", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": [ + "nixos", + "nixpkgs" + ], + "nixpkgs-stable": [ + "nixos", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712617241, + "narHash": "sha256-a4hbls4vlLRMciv62YrYT/Xs/3Cubce8WFHPUDWwzf8=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "538c114cfdf1f0458f507087b1dcf018ce1c0c4c", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "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" + } + }, + "systems_6": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_7": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_8": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tgbot-cpp": { + "flake": false, + "locked": { + "lastModified": 1711436193, + "narHash": "sha256-HHj3uRMW4dU2pVnqxO8wctVQXUmOb8kymPsE2C1bc1U=", + "owner": "reo7sp", + "repo": "tgbot-cpp", + "rev": "0910c166a920cdac931d40bcb63bfb28039005f1", + "type": "github" + }, + "original": { + "owner": "reo7sp", + "repo": "tgbot-cpp", + "type": "github" + } + }, + "treefmt": { + "inputs": { + "nixpkgs": [ + "nixos", + "nix-inspect", + "nci", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1710088047, + "narHash": "sha256-eSqKs6ZCsX9xJyNYLeMDMrxzIDsYtaWClfZCOp0ok6Y=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "720322c5352d7b7bd2cb3601a9176b0e91d1de7d", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nixos", + "envfs", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1710781103, + "narHash": "sha256-nehQK/XTFxfa6rYKtbi8M1w+IU1v5twYhiyA4dg1vpg=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "7ee5aaac63c30d3c97a8c56efe89f3b2aa9ae564", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_2": { + "inputs": { + "nixpkgs": [ + "nixos", + "nix-fast-build", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1698438538, + "narHash": "sha256-AWxaKTDL3MtxaVTVU5lYBvSnlspOS0Fjt8GxBgnU0Do=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "5deb8dc125a9f83b65ca86cf0c8167c46593e0b1", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "treefmt-nix_3": { + "inputs": { + "nixpkgs": [ + "nixos", + "nur-linyinfeng", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1711963903, + "narHash": "sha256-N3QDhoaX+paWXHbEXZapqd1r95mdshxToGowtjtYkGI=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "49dc4a92b02b8e68798abd99184f228243b6e3ac", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, + "ts-fold": { + "flake": false, + "locked": { + "lastModified": 1695278494, + "narHash": "sha256-O4NcUC1u08W8ZslqoA/i+iTaLotKwheURXQWBxLLMFc=", + "owner": "jcs-elpa", + "repo": "ts-fold", + "rev": "70b2c79ff4daa7351d4e2917b0343b9a18d4d4f2", + "type": "github" + }, + "original": { + "owner": "jcs-elpa", + "repo": "ts-fold", + "type": "github" + } + }, + "utils": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "v-sim": { + "flake": false, + "locked": { + "lastModified": 1712840468, + "narHash": "sha256-l8ExpbdRoYuivHAMtl+CDnnTOVFMXhTDEhOFufSfiBs=", + "owner": "l_sim", + "repo": "v_sim", + "rev": "3a3ca930bf0161e557a308013e1680e2dcf426c9", + "type": "gitlab" + }, + "original": { + "owner": "l_sim", + "repo": "v_sim", + "type": "gitlab" + } + }, + "win11os-kde": { + "flake": false, + "locked": { + "lastModified": 1684014177, + "narHash": "sha256-uumpEiPkrTf98oqYe+rR3zmb7H8esy1vXLuv1WiOV7M=", + "owner": "yeyushengfan258", + "repo": "Win11OS-kde", + "rev": "b5daaa322c312e016ff1508850287c32a8123693", + "type": "github" + }, + "original": { + "owner": "yeyushengfan258", + "repo": "Win11OS-kde", + "type": "github" + } + }, + "ws-butler": { + "flake": false, + "locked": { + "lastModified": 1634511126, + "narHash": "sha256-c0y0ZPtxxICPk+eaNbbQf6t+FRCliNY54CCz9QHQ8ZI=", + "owner": "hlissner", + "repo": "ws-butler", + "rev": "572a10c11b6cb88293de48acbb59a059d36f9ba5", + "type": "github" + }, + "original": { + "owner": "hlissner", + "repo": "ws-butler", + "type": "github" + } + }, + "yafas": { + "inputs": { + "flake-schemas": [ + "nixos", + "chaotic", + "flake-schemas" + ], + "systems": [ + "nixos", + "chaotic", + "systems" + ] + }, + "locked": { + "lastModified": 1695926485, + "narHash": "sha256-wNFFnItckgSs8XeYhhv8vlJs2WF09fSQaWgw4xkDqHQ=", + "rev": "7772afd6686458ca0ddbc599a52cf5d337367653", + "revCount": 4, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/UbiqueLambda/yafas/0.1.4%2Brev-7772afd6686458ca0ddbc599a52cf5d337367653/018add18-ebb4-72c6-93fe-d1d8da361703/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/UbiqueLambda/yafas/0.1.%2A.tar.gz" + } + }, + "zpp-bits": { + "flake": false, + "locked": { + "lastModified": 1711999196, + "narHash": "sha256-TUXzo8vl3noLwVy00ygj3IOVhU/qES6jlAbHVzbPWl0=", + "owner": "eyalz800", + "repo": "zpp_bits", + "rev": "03cc83a5440d5c003cda952df5b9badbf8b0589f", + "type": "github" + }, + "original": { + "owner": "eyalz800", + "repo": "zpp_bits", + "type": "github" + } + }, + "zxorm": { + "flake": false, + "locked": { + "lastModified": 1689774784, + "narHash": "sha256-QO0jrZqYcYxIdL1EWnEjaODr+q9inlbBgKaDSlu+ot0=", + "owner": "crabmandable", + "repo": "zxorm", + "rev": "92cd52ec0530fb3e66061058548916fb879879e7", + "type": "github" + }, + "original": { + "owner": "crabmandable", + "repo": "zxorm", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..eb389c6 --- /dev/null +++ b/flake.nix @@ -0,0 +1,41 @@ +{ + inputs.nixos.url = "github:CHN-beta/nixos"; + inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + + outputs = inputs: + let + pkgs = (import inputs.nixpkgs + { + system = "x86_64-linux"; + config.allowUnfree = true; + overlays = [(final: prev: + { + localPackages = import "${inputs.nixos}/local/pkgs" + { pkgs = final; inherit (inputs.nixpkgs) lib; topInputs = inputs.nixos.inputs; }; + })]; + }); + in + { + packages.x86_64-linux = rec + { + hpcstat = pkgs.stdenv.mkDerivation + { + name = "hpcstat"; + src = ./.; + buildInputs = with pkgs.pkgsStatic; [ boost fmt sqlitecpp ]; + nativeBuildInputs = with pkgs; [ cmake pkg-config ]; + postInstall = "cp ${openssh}/bin/ssh-add $out/bin"; + }; + default = hpcstat; + openssh = (pkgs.pkgsStatic.openssh.override { withLdns = false; }).overrideAttrs { doCheck = false; }; + }; + devShell.x86_64-linux = pkgs.mkShell + { + nativeBuildInputs = with pkgs; [ pkg-config cmake clang-tools_18 ]; + buildInputs = (with pkgs.pkgsStatic; [ fmt boost localPackages.zxorm ]); + # hardeningDisable = [ "all" ]; + # NIX_DEBUG = "1"; + CMAKE_EXPORT_COMPILE_COMMANDS = "1"; + }; + }; +} diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..272826a --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,199 @@ +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include + +using namespace std::literals; + +// ssh fingerprint -> username +const std::map Username +{ + { "LNoYfq/SM7l8sFAy325WpC+li+kZl3jwST7TmP72Tz8", "Haonan Chen" } +}; + +// program path, set at start of main, e.g. /gpfs01/.../bin/hpcstat +std::filesystem::path Program; + +// run a program, wait until it exit, return its stdout and stderr if it return 0, otherwise nullopt +std::optional exec(boost::filesystem::path program, std::vector args) +{ + namespace bp = boost::process; + bp::ipstream output; + auto process = bp::child(program, bp::args(args), bp::std_out > output, bp::std_err > bp::null); + process.wait(); + if (process.exit_code() != 0) return std::nullopt; + std::stringstream ss; + ss << output.rdbuf(); + return ss.str(); +} + +// detect ssh fingerprint using ssh-add +std::optional> fingerprints() +{ + auto output = + exec(Program.replace_filename("ssh-add"), { "-l" }); + if (!output) return std::nullopt; + auto fingerprint = output->substr(0, 47); + // search for all strings that match the fingerprint pattern: sha256:... + std::regex pattern(R"r(\b(?:sha|SHA)256:([0-9A-Za-z+/=]{43})\b)r"); + std::smatch match; + std::vector fingerprints; + for (auto i = std::sregex_iterator(output->begin(), output->end(), pattern); i != std::sregex_iterator(); i++) + fingerprints.push_back(i->str(1)); + return fingerprints; +} + +// get an authenticated fingerprint and username +std::optional> authenticated() +{ + auto fps = fingerprints(); + if (!fps) return std::nullopt; + for (auto& fp : *fps) + if (Username.contains(fp)) return std::make_pair(fp, Username.at(fp)); + return std::nullopt; +} + +// initialize the database +// std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(); +struct LoginData +{ + unsigned Id = 0; + long Time = 0; + std::string Key; + std::string SessionId; + bool Interactive; +}; +using LoginTable = zxorm::Table +< + "login", LoginData, + zxorm::Column<"id", &LoginData::Id, zxorm::PrimaryKey<>>, + zxorm::Column<"time", &LoginData::Time>, + zxorm::Column<"key", &LoginData::Key>, + zxorm::Column<"session_id", &LoginData::SessionId> +>; +struct LogoutData +{ + unsigned Id = 0; + long Time = 0; + std::string SessionId; +}; +using LogoutTable = zxorm::Table +< + "logout", LogoutData, + zxorm::Column<"id", &LogoutData::Id, zxorm::PrimaryKey<>>, + zxorm::Column<"time", &LogoutData::Time>, + zxorm::Column<"session_id", &LogoutData::SessionId> +>; +// struct SubmitData +// { +// unsigned Id; +// long Time; +// std::string Key; +// std::string SessionId; +// unsigned JobId; +// std::string JobWorkdir; +// std::string JobCommand; +// }; +// struct FinishData +// { +// unsigned Id; +// long Time; +// unsigned JobId; +// std::string JobResult; +// double CpuTime; +// }; +void initdb() +{ + auto dbfile = Program.replace_filename("hpcstat.db").string(); + zxorm::Connection conn(dbfile.c_str()); + conn.create_tables(); +} +void writedb(auto value) +{ + auto dbfile = Program.replace_filename("hpcstat.db").string(); + zxorm::Connection conn(dbfile.c_str()); + value.Time = std::chrono::duration_cast + (std::chrono::system_clock::now().time_since_epoch()).count(); + conn.insert_record(value); +} + +bool interactive() +{ + return isatty(fileno(stdin)); +} + +// get value of XDG_SESSION_ID +std::optional session_id() +{ + auto value = std::getenv("XDG_SESSION_ID"); + if (!value) return std::nullopt; else return value; +} + +int main(int argc, const char** argv) +{ + std::vector args(argv, argv + argc); + Program = args[0]; + + if (args.size() == 1) + { + std::cout << "Usage: hpcstat initdb|login|logout|submitjob|finishjob\n"; + return 1; + } + else if (args[1] == "initdb") + initdb(); + else if (args[1] == "login") + { + auto key = authenticated(); + if (!key) + { + auto fps = fingerprints(); + if (!fingerprints()) + std::cerr << "Failed to get ssh fingerprints\n"; + else + std::cerr << fmt::format("No valid fingerprint found, available fingerprints: {}\n", *fps); + return 1; + } + auto session = session_id(); + if (!session) + { + std::cerr << "Failed to get session id\n"; + return 1; + } + writedb(LoginData{.Key = key->first, .SessionId = *session, .Interactive = interactive()}); + } + else if (args[1] == "logout") + { + auto session = session_id(); + if (!session) + { + std::cerr << "Failed to get session id\n"; + return 1; + } + writedb(LogoutData{.SessionId = *session}); + } + else if (args[1] == "submitjob") + { + // TODO + } + else if (args[1] == "finishjob") + { + // TODO + } + else + { + std::cerr << "Unknown command\n"; + return 1; + } + + return 0; +}