diff --git a/blog/.gitignore b/blog/.gitignore deleted file mode 100644 index cf89879f..00000000 --- a/blog/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/themes -/public -/.hugo_build.lock -/resources/_gen diff --git a/blog/archetypes/default.md b/blog/archetypes/default.md deleted file mode 100644 index c6f3fcef..00000000 --- a/blog/archetypes/default.md +++ /dev/null @@ -1,5 +0,0 @@ -+++ -title = '{{ replace .File.ContentBaseName "-" " " | title }}' -date = {{ .Date }} -draft = true -+++ diff --git a/blog/content/_index.md b/blog/content/_index.md deleted file mode 100644 index 0f8df2d1..00000000 --- a/blog/content/_index.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -type: docs ---- - -嗨,我的朋友,欢迎你!我想我会喜欢你的(如果我们之前没有仇的话)。 - -左侧是这个网站的目录,你可以看到这个网站上有哪些文章。 -点进某一篇文章后,右侧会出现当前文章的目录。 -上方还有搜索框和一些外部网站的链接。 - -本站的主要内容被分为“文档”和“博客”两个部分。 -文档部分是一些比较系统化的内容,比如某些教程, - 会随着时间的推移而更新,并会翻译成英语(如果我觉得有必要的话)。 -博客部分是一些随手写的东西,大概写好之后就再也不会更新,其中的技术性内容也不保证完全正确, - 往往充满了我自己的主观猜测。 - -{{< callout emoji="​🏗️" >}} - 早期施工中,请戴好安全帽小心前行,谨防突然出现的 404。 -{{< /callout >}} diff --git a/blog/content/about.md b/blog/content/about.md deleted file mode 100644 index 48afbb48..00000000 --- a/blog/content/about.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: 关于本站 ---- - -嗨,我的朋友,欢迎你!我想我会喜欢你的(如果我们之前没有仇的话)。 - -左侧是这个网站的目录,你可以看到这个网站上有哪些文章。 -点进某一篇文章后,右侧会出现当前文章的目录。 -上方还有搜索框和一些外部网站的链接。 - -本站的主要内容被分为“文档”和“博客”两个部分。 -文档部分是一些比较系统化的内容,比如某些教程, - 会随着时间的推移而更新,并会翻译成英语(如果我觉得有必要的话)。 -博客部分是一些随手写的东西,大概写好之后就再也不会更新,其中的技术性内容也不保证完全正确, - 往往充满了我自己的主观猜测。 - -{{< callout emoji="​🏗️" >}} - 早期施工中,请戴好安全帽小心前行,谨防突然出现的 404。 -{{< /callout >}} diff --git a/blog/content/docs/example/_index.md b/blog/content/docs/example/_index.md deleted file mode 100644 index ab1861df..00000000 --- a/blog/content/docs/example/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -weight: 1 -bookFlatSection: true -title: "Example Site" ---- - -{{< callout emoji="​🏗️" >}} 施工中 {{< /callout >}} diff --git a/blog/content/posts/_index.md b/blog/content/posts/_index.md deleted file mode 100644 index fdd538f6..00000000 --- a/blog/content/posts/_index.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Blog ---- - -我得在这里写点什么 diff --git a/blog/content/posts/aaa.md b/blog/content/posts/aaa.md deleted file mode 100644 index 23773af6..00000000 --- a/blog/content/posts/aaa.md +++ /dev/null @@ -1,172 +0,0 @@ ---- -title = 'Aaa' -date = 2024-08-25T13:20:46+08:00 -draft = true ---- - -大家好,我是陈浩南,是 xmurp 的作者。 -前两天“页文选”的 up 主联系到我,说想让我聊聊相关事情的看法。 -那我就想,我干脆也在 b 站做个视频,那就有这个东西了。 -这个是我在 b 站的第一个投稿,废话比较多,没有专业麦克风,如果有什么口胡的话大家也可以提提意见。 -视频各个章节的传送链接会放到评论区,大家可以直接跳到自己感兴趣的地方。 - -# xmurp 是什么? - -它是几年前我写的一个装在**路由器**上的插件, - 那这个插件是用来让这个路由器在校园网里,也就是在学校宿舍里,也能正常使用。 -当时我们学校的网络你买了他的带宽带的套餐之后,只许你**一台**电脑插着网线上网, - 不管你是接路由器,还是电脑开个热点, - 只要手机或者平板通过这个宽带连上网,他们后台都会检测到,然后就会把你的网给断了,一次断二十分钟, - 等二十分钟恢复之后,如果它发现还是有手机或者平板通过这个宽带上网,就会再给你断网二十分钟,如此循环, - 直到你放弃折腾,老老实实就用一台电脑上网为止。 -然后我这个插件就是解决这个问题的,路由器装这个插件之后,它会把手机或者平板的一些数据特征给抹掉, - 那它在后台检测不到你的手机,就不会给你断网了。 -所以当时给插件起名叫 xmu 路由器补丁,简称 xmurp。 -然后我把这个源代码共享出去之后,才发现这个问题是很多学校都有的,我那个插件在很多学校都能用,然后,然后就流行起来了,是这么回事。 - -这个事情大概是2018年到2019年的时候发生的,现在都已经过去很多年了。 -前两天(8月20日左右,字幕备注)有个叫“页文选”的 up 主找到我, - 说想让我评价一下这个事情,就是校园网里不许装路由器的事情,以及大家去想办法绕过这个限制的事情, - 然后把我的评价做到她的视频结尾里。 -但是她也没有提出什么**非常具体**的问题,我这个人聊起天来又容易跑题跑到不知道哪里去,很容易就扯一大堆其它的东西。 -正好关于这个话题我也有一些想聊的事情,也想试试在 b 站发个视频看会怎么样,就干脆决定自己做一个视频了。 - -# 做这个插件的背景? - -其实我刚上大学的时候,当时宿舍是海韵1,那栋楼是可以正常用路由器的。 -大二也就是 2017 年刚放暑假的时候我搬到了另外一栋宿舍(海韵16)。 -这栋楼有网络限制,但限制的措施还不是我之前提到的那种情况。 -当时联网是需要用一个叫“深澜”的软件去联网的,这个软件只能运行在 Windows 上,就没法接路由器了。 -尤其我主要用的 linux,那就约等于不许我上网了,那这个事情我肯定得解决。 -后来乘着暑假我在网上找资料,发现有人提到那个软件其实就是个套壳 PPPoE,PPPoE 的账号怎么搞出来也有办法。 -一旦知道这点就好办了,路由器也就安排上,顺便在qq空间发了个帖子。 -暑假结束之后同学们返校之后发现判死刑的路由器又能用了,我总结的拨号的方法就被传播开了。 -开心地上了一年网之后,一年之后的暑假,路由器又突然不能用了,这次是我之前提到的那种情况。 -然后我就很生气,就是我什么都没干就突然把我网断了,完全就是无缘无故被欺负的感觉。 -经常欺负我的人都知道,我平时都很好说话的,沾我一点小便宜也都无所谓, - 但一旦过了一个度,我就会很生气,就一定会报复,做事情也会非常激进,当时就是这种情况。 -然后我就闷头搞了两周,其中第一周就各种尝试确定它是怎么检测的,第二周就是写代码,内核怎么编程,netfilter hook 怎么用,之类的。 -两周之后就肝出来了。但是比较可惜的是内核模块使用门槛还是有点高,在现实世界反而没怎么传开了。 -反而是在网上传开了,然后发现其它学校的情况也差不多。 - -# 是否会继续维护插件? - -大概率不会。因为我自己后来搬到别的宿舍了,那些宿舍都是可以正常用路由器的,所以我也就没太有动力继续维护这个插件了。 -而且后来这个检测似乎放松了很多,据我观察,很多同学直接接路由器,网络也基本可用。现在流量也便宜,身边人的需求也少了。 -也许会作为一个兴趣项目哪天把它捡起来再写写,但是大概率不会,毕竟我感兴趣的也不止这一件事情。 -如果还有很多其他人需要的话,也可能会继续维护。但也只是可能。毕竟使用门槛还是有点高,要会自己刷机自己编译才行,这能难倒 99% 的人了。 - -有其他人开发的项目,可以搜索到,用户态的程序。也有人开发内核态的软件,也挺好的。 - -# 如何看待校园网禁止共享 - -我觉得这个问题可能大家都会比较期待我从宏观上回答,去评价全中国的这种现象。 -这个问题我很难从宏观上来回答。我又不是这个行业的人,我也并不比大家知道更多的内幕。 -所以这个事情我只能从我个人亲身经历的角度来回答。 -如果你问我,想到这个事情,情绪上是怎样的,那我一定是想骂人的。这方面我觉得我和大多数看到这里的人是一样的。 -抛开情绪的话,我有两个事情想要讨论。 - -第一个事情是,这个事情到底是谁干的? -我个人觉得这个事情不是学校干的,也不是运营商干的。 -因为学校没有动力去赚那两个破钱的,培养一个本科生一年要花的钱、相关的财政补贴,应该都比这些多得多。 -而且学校一般也比较注重自己的名声,出这种事情学生第一反应肯定是怨学校。 -中国移动电信这些运营商倒是有动力赚这个钱,但我们这里运营商是存在竞争的,故意恶化自己的服务就是给对手送钱。 -我当时因为移动和电信资费一样而电信提供公网IP而换了电信,如果哪家运营商这样作死那就别想再赚钱了。 -实际上我在厦大住过几栋不同的宿舍楼,只有一栋楼是会有限制的。 -这栋楼的网络还有两个特点,一个是在这栋楼里,下载论文是没有付费墙的,就像是在学校的内网一样;另外一个是只有它是需要用深澜客户端登陆的。 -如果你去搜索深澜,它属于深信服,一个做to B的主要做网络安全和审计的公司。 -如果你稍微搜索一下,会发现很多公司和学校的网络安全都是他家做的,包括厦大的vpn easyconnect也是他家做的。 -搜索“深澜认证计费软件解决方案 百度文库”,里面就有关于限制代理的内容。 -所以我觉得应该是这栋楼的网络因为什么原因想划到校园网内部,需要做一些网络安全上的事情,这个事情就交给深信服去做了。 - 这中间有决策者一刀切,然后就成这样了。至于决策者是谁,那就不知道了,但直接干这个事情的公司应该是深信服。 -限制用户的直接目的也不是赚钱,而是行政决策上的不周全,这是我的观点。 - -第二个事情是,如果技术一直升级下去,检测代理的技术进步反检测的技术也进步,那最后会是谁赢呢? -我个人的观点是,我们会赢。 -因为上网这个事情是有正当性的,至少单个设备的正常上网是有正当性的。 -反代理检测是这样的,我们要做的事情比较简单,只要把特征抹除得足够干净,让它的误报率降不下来就行。 -深信服要考虑的就多了,误报率不能太高,设备成本不能太高,其实他们要考虑的很多,他们的技术升级的难度是比较大的。 -我们就灵活多了,都不需要科班出身的人,物理系的本科生努力两个星期也就绕过去了。 -总之就是,哪怕仅仅是从技术上来说,检测的技术难度也比反检测要大很多,再加上行政成本,只要你想,肯定是能绕过去的。 - -# 你的博客呢? - -有人可能看到过我的一篇文章,和 xmurp 配套的,发在我自己博客上。 -但是我自己博客迁移过好多次,你可能现在也找不到了(我自己没丢)。 -实际上最近几年都没有认真写过东西,感觉这几年有点太浮躁了,没有沉下心来写东西。但我内心其实是有写作的欲望的。 -最近我应该会把博客恢复起来。包括这个稿子也会整理一下放到上面。 - -# 对这个 up 主的视频怎么看? - -我有点担心她的视频发出去后会让一些人失望。 -因为我看预告的视频下面的评论区,一些朋友期待看这个视频学到一些技术。 -我提前看过她的视频的文字大纲,按照我的理解,她的视频主要目的并不是技术教学, - 主要目的有两个方面,一方面是尝试一些视频特效,另一方面是记录一下自己探索的过程。 -如果你之前完全没有接触过这些东西,它可以解答“有什么”的问题,让你眼熟一些名词,知道有这么回事。 -但是它没法解答“为什么”和“怎么做”,也就是没法带你理解技术细节,也没法教明白怎么操作。 -换句话说,看视频只要半个小时,你可能会觉得“原来如此,なるほど”, - 但是你要想真的去做的话,大概率会遇到比看上去多很多的细碎但是又相当硌脚的一些困难。 -实际上如果真的教这些技术细节的话,她的视频也不会只有半个小时了。 -比如b站上有详细的教你怎么编译openwrt,只是编译这**一个**事情就要讲半个小时, - 没有linux操作经验的话,从装虚拟机到编译出来要花费的时间绝对不止半个小时,如果他三四个小时能做出来我都觉得是神速。 -总之大家还是要有一个心理预期。虽然你们的条件比我当年好了很多,(不需要一个人闷声干一星期), - 但这个事情还是没有那么容易。 - -# 为什么要做这个视频? - -xmurp 是我本科的时候做的**最**骄傲的一个事情,虽然它不是我专业的,虽然它的代码质量在我现在看来就是依托答辩, - 但它确实是我内心最认可的作品。 -当时能做出这个事情来,其实有一个我觉得很重要的原因我在之前都没有提到,那就是我当时是放暑假,我**一个人**在宿舍生活。 -我不知道别的i人是什么感觉,反正我是个很内向的人,但对我来说,和别人相处是一个非常耗费精力的事情。 -一方面我得考虑我干什么会不会打扰到别人,另外一方面我也需要考虑别人如何理解我表达或者正在做的事情,等等。 -但是当我一个人的时候,我就可以完全不用考虑这些事情。 -一旦没有什么干扰,精力自然而然就会聚焦到一件事情上,这个时候一旦决定做什么事情,力量就会非常大。 -为什么提这件事情呢,是因为我这个暑假又搬宿舍了,这次是单人间。 -逐渐习惯之后,那种长时间专注、充满掌控力的感觉就又回来了。 - -就在这个时候呢,这个 up 主呢就来联系我了。 -可是我当时不知道他是个up主,我也没注意到我其实还看过她的视频, - 她上来也不做自我介绍,直接丢给我一个我根本看不明白的word文档,关键是同样的内容我在邮件的垃圾箱里也看到过,就把我整蒙了。 -后来又看了好几遍才终于看明白,她是想让我聊聊我对这个事情的看法。 -这种直率又缺少经验的感觉就很像我以前做事的感觉,我其实就是在她这个年龄,用和她差不多的方式,做了一个 xmurp 出来。 -我内心就挺感动的,她是一个遇到问题就直接朝着问题撞过去的开拓者,虽然她很缺乏和人沟通的经验, - 她的视频最后做得好不好我没法预知,但她做的事情是独一份的,你在b站上找不到类似的。 -“勇敢牛牛不怕困难”,我不知道为什么会想到这句话。 -我自己在过去几年其实过得挺消沉的,原因的话也很复杂,不只是和别人住在一起导致的,概括来说的话就是和身边的世界妥协得太多了, - 一些该割舍的情感一直犹豫着没有割舍(不是指恋爱),心里想要的东西一直不敢去追求。 -或者说,就是出格的事情干得太少了,少得自己都忘了自己是一个主动的**人**,那种感觉。 -我不好说这个到底是怎么回事吧,就蛮神奇的,触动了我一根已经很久没有被触动的神经。 - -我稿子写到这里是8月25号晚上11点了,接下来我非常清楚我要做什么事情,我整理一下,今天晚上或者明天把稿子录个音, - 然后简单做个视频,这个事情就算结束,等到时间发布就行。 -之后的工作,我要先做什么,再做什么,我要争取什么结果,我都非常非常清楚。 -我很久没有这种感觉了,我觉得我应该要感谢这个 up 主,谢谢xx。 - -# 为什么公开反检测的技术,不会导致反检测技术无效化? - -反检测很简单,只要把它要找的那一点点特征藏起来就行了,但检测的时候要考虑的就多了。 -那他们得考虑设备成本不能太高,误报率不能太高,技术人员的工资也得给人家发,不能影响用户正常上网,还得行政上合规,这些东西很麻烦的。 - -# 对比一下校园内有线宽带和蜂窝网络的区别? - -各取所需嘛,现在流量费用也很便宜了,很多人单纯手机流量就够了,根本不需要折腾这些。 -如果确实需要宽带,又有兴趣折腾,那就搞呗,谁要是说你不应该搞的话那是他没素质。 - -# 对反检测路由器商业化的看法? - -我其实觉得商业化本身是很好的,相当于给不愿意折腾的人节省了很多时间。 -至于商家不尊重开源协议,那这个确实该骂。openwrt是gpl协议发布的,gpl的意思是说,你可以卖钱,但同时必须开源,不然就是违法。现在国内司法实践有这种判例,但是很少,这块还是缺少发展的。 -以次充好、价格虚高,我觉得得看他有没有虚假宣传。如果没有虚假宣传的话只是不值那个价格,那就是市场的问题,应该交给市场调节。要是有虚假宣传,比如宣传八核实际卖四核,那就是违法。但实际上市场上假货还很多,你去淘宝上搜石墨烯,99%都是假的,什么石墨烯电热毯石墨烯散热器都是扯淡。 - -# 代理检测原本是用于企业的安全技术,为什么会用于宿舍的网络? - -学校里的网络也和企业一样,需要保证安全。至于为什么宿舍的网络也要被划分到校园网里处理,我觉得这是个行政决策上的错误。据我体验厦大大部分宿舍楼都是没有划分到校园网里的,就和小区里的网络一样,爱怎么用怎么用,我住过五栋,只有一栋是划分在校园网里管理的,当年搞得很麻烦。实际上我住的那栋后来也基本上放开了,我看其它同学接普通路由器也能用。 - -# 代理检测厂商的技术改进方向? - -这个你应该问深信服的人(我不知道这个算不算他们的商业机密),但我觉得这个事情已经基本上到头了,检测ua或者个别应用的特殊软件包这个已经是极限了。不是说不可能继续升级,但是考虑到成本(经济成本,合规成本)的话,我觉得已经到头了。 -实际上我已经不在这个圈里很久了,我写xmurp是五年前了,五年过去了我看技术也没什么改进。 - -# 反检测的改进方向? - -以前是“见招拆招”,他们检测什么我们改什么。现在已经把所有的招都拆过一遍了,再改进的话就是让软件更易用,让使用成本更低。比如说能不能做到一键编译openwrt软件包,再一键安装上去,我觉得其实是可以的。说到这里我就要安利一个我自己正在用的一个东西,叫nix,它就是一个一键可复现地构建一个软件,甚至可复现地构建并且帮你配置好整个linux系统,这个就叫NixOS。我觉得这个东西非常好,我有空可以试试能不能搓一个一键构建和安装xmurp的网页,这个我其实挺有兴趣的。当然我不懂前端,所以搓出来的网页很可能会比较丑。 diff --git a/blog/content/posts/bbb.md b/blog/content/posts/bbb.md deleted file mode 100644 index d4cf8e31..00000000 --- a/blog/content/posts/bbb.md +++ /dev/null @@ -1,95 +0,0 @@ -I think such decomposition does generally exist. The decomposition could be done in the following steps: - -1. Decompose the matrix M into the production of a series of elementary matrices. This could be done by doing some row operations to first transform M into an upper triangular matrix, then into a diagonal matrix. The row operators could be considered as multiplying a series of elementary matrices on the left of M, and the resulting diagonal matrix could also be considered as the production of a series of elementary matrices. Thus we have: - -$$ - P_{m+1}^{-1}P_{m+2}^{-1} \cdots P_n M = P_{1} \cdots P_m \\ - M = P_{1} \cdots P_n -$$ - - where $P_i$ are elementary matrics. - -2. In the series of $P_i$, "exchange" the position of the row multiplication matrix with its left neighbor one by one, and finally make all row multiplication matrices at the left of the others. The "exchange" rules would make the multiplication result does not change. I will explain the rule in detail, let's say $A$ is a row multiplication matrix, $B$ is a row-switching matrix, $C$ is a row addition matrix: - - * if $A$ and $B$ operate on different rows, it could be exchanged directly: $AB = BA$. Same for $A$ and $C$. - - * if $B$ switched the row $A$ multiplied, let "switched $A$" multiply on another row operated by $B$. for example: - -$$ -\begin{pmatrix} - 0 & 1 & 0 \\ - 1 & 0 & 0 \\ - 0 & 0 & 1 - \end{pmatrix} - \begin{pmatrix} - r & 0 & 0 \\ - 0 & 1 & 0 \\ - 0 & 0 & 1 - \end{pmatrix} = - \begin{pmatrix} - 1 & 0 & 0 \\ - 0 & r & 0 \\ - 0 & 0 & 1 - \end{pmatrix} - \begin{pmatrix} - 0 & 1 & 0 \\ - 1 & 0 & 0 \\ - 0 & 0 & 1 -\end{pmatrix} -$$ - -* if $C$ added the row operated by $A$ on another row, the "switched $C$" should be modified, for example: - -$$ -\begin{pmatrix} - 1 & 0 & 0 \\ - s & 1 & 0 \\ - 0 & 0 & 1 - \end{pmatrix} - \begin{pmatrix} - r & 0 & 0 \\ - 0 & 1 & 0 \\ - 0 & 0 & 1 - \end{pmatrix} = - \begin{pmatrix} - r & 0 & 0 \\ - 0 & 1 & 0 \\ - 0 & 0 & 1 - \end{pmatrix} - \begin{pmatrix} - 1 & 0 & 0 \\ - rs & 1 & 0 \\ - 0 & 0 & 1 -\end{pmatrix} -$$ - -* if $C$ added another row to the row operated by $A$,also do some modify on "switched $C$", for example: - $$ - \begin{pmatrix} - 1 & s & 0 \\ - 0 & 1 & 0 \\ - 0 & 0 & 1 - \end{pmatrix} - \begin{pmatrix} - r & 0 & 0 \\ - 0 & 1 & 0 \\ - 0 & 0 & 1 - \end{pmatrix} = - \begin{pmatrix} - r & 0 & 0 \\ - 0 & 1 & 0 \\ - 0 & 0 & 1 - \end{pmatrix} - \begin{pmatrix} - 1 & s/r & 0 \\ - 0 & 1 & 0 \\ - 0 & 0 & 1 - \end{pmatrix} - $$ - Finally we would get: - $$ - M = R_1R_2\cdots R_p S_1S_2\cdots S_q - $$ - Where $R_i$ are row multiplication matrix, $S_i$ are row-switching matrix or row addition matrix. - -3. It could be easily validated that $R_1R_2\cdots R_p$ gives a diagonal matrix, $S_1S_2\cdots S_q$ gives a orthogonal matrix. \ No newline at end of file diff --git a/blog/content/posts/helloworld.md b/blog/content/posts/helloworld.md deleted file mode 100644 index 55f73a18..00000000 --- a/blog/content/posts/helloworld.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Helloworld -date: 2024-08-24T20:13:59+08:00 -draft: false -summary: 为什么不问问神奇海螺呢? -math: true ---- - -# 一级标题 - -## 二级标题 - -### 三级标题 - -hello world! - -* 无序列表1 -* 无序列表2 -* 无序列表3 - -1. 有序列表1 -2. 有序列表2 -3. 有序列表3 - -> 这是一个引用 -> 写了两行 - -如果段与段之间 -没有空行 -会怎样? - -```c++ -#include -using namespace std; -int main() { - cout << "Hello, World!" << endl; - return 0; -} -``` - -这是一个行内代码`printf("Hello, World!\n");`,和行内公式 $E=mc^2$。 - -$$ -\int_{-\infty}^{+\infty} e^{-x^2} \dd x = \sqrt{\pi} -$$ - -**这是粗体文本**,*这是斜体文本*。 - -[这是一个链接](https://www.example.com) diff --git a/blog/data/icons.yaml b/blog/data/icons.yaml deleted file mode 100644 index 136bc972..00000000 --- a/blog/data/icons.yaml +++ /dev/null @@ -1,6 +0,0 @@ -misskey: -fediverse: -matrix: -wechat: -qq: -gitea: diff --git a/blog/default.nix b/blog/default.nix deleted file mode 100644 index d49d276c..00000000 --- a/blog/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ stdenv, hextra, hugo }: stdenv.mkDerivation -{ - name = "blog"; - src = ./.; - nativeBuildInputs = [ hugo ]; - configurePhase = - '' - mkdir themes - ln -s ${hextra} themes/hextra - ''; - buildPhase = "hugo"; - installPhase = "cp -r public $out"; -} diff --git a/blog/hugo.yaml b/blog/hugo.yaml deleted file mode 100644 index 4dfa1e09..00000000 --- a/blog/hugo.yaml +++ /dev/null @@ -1,132 +0,0 @@ -baseURL: https://blog.chn.moe/ -theme: hextra - -enableRobotsTXT: true -enableGitInfo: false -enableEmoji: true -hasCJKLanguage: true - -# services: -# googleAnalytics: -# ID: G-MEASUREMENT_ID - -outputs: - home: [ html ] - page: [ html ] - section: [ html, rss ] - -defaultContentLanguage: zh-cn -languages: - zh-cn: - languageName: 简体中文 - languageCode: zh-CN - weight: 1 - title: My New Hugo Site - en: - languageName: English - weight: 2 - title: My New Hugo Site - contentDir: content/en - -# Needed for mermaid/katex shortcodes -markup: - goldmark: - renderer: - unsafe: true - highlight: - noClasses: false - -enableInlineShortcodes: true - -menu: - main: - - name: Search - weight: 1 - params: - type: search - - sidebar: - - identifier: more - name: More - params: - type: separator - weight: 1 - - identifier: welcome - name: 欢迎页 - pageRef: / - weight: 2 - - identifier: about - name: 关于本站 - pageRef: /about - weight: 3 - - identifier: contact - name: 联系我 - pageRef: /contact - weight: 4 - -params: - description: Modern, responsive, batteries-included Hugo theme for creating beautiful static websites. - navbar: - displayTitle: true - displayLogo: true - logo: - path: images/logo.svg - dark: images/logo-dark.svg - # width: 40 - # height: 20 - # link: / - width: wide - page: - # full (100%), wide (90rem), normal (1280px) - width: normal - theme: - # light | dark | system - default: system - displayToggle: true - footer: - enable: true - displayCopyright: true - displayPoweredBy: true - width: normal - displayUpdatedDate: true - dateFormat: "January 2, 2006" - search: - enable: true - type: flexsearch - flexsearch: - # index page by: content | summary | heading | title - index: content - # full | forward | reverse | strict - # https://github.com/nextapps-de/flexsearch/#tokenizer-prefix-search - tokenize: forward - editURL: - enable: true - base: "https://github.com/imfing/hextra/edit/main/exampleSite/content" - blog: - list: - displayTags: true - # date | lastmod | publishDate | title | weight - sortBy: date - sortOrder: desc # or "asc" - highlight: - copy: - enable: true - # hover | always - display: hover - comments: - # TODO: enable cusdis - enable: false - type: giscus - # https://giscus.app/ - giscus: - repo: imfing/hextra - repoId: R_kgDOJ9fJag - category: General - categoryId: DIC_kwDOJ9fJas4CY7gW - # mapping: pathname - # strict: 0 - # reactionsEnabled: 1 - # emitMetadata: 0 - # inputPosition: top - # lang: en - math: true diff --git a/flake.lock b/flake.lock index c0708048..4ce4b9c1 100644 --- a/flake.lock +++ b/flake.lock @@ -21,6 +21,22 @@ "type": "github" } }, + "blog": { + "flake": false, + "locked": { + "lastModified": 1726563057, + "narHash": "sha256-0BuPxaijAnZvkYCFACLqhj3DRcb1gPJh6fXb+rfjOwc=", + "ref": "refs/heads/main", + "rev": "837cd77a8ea5217bc18d155c977c28c73e29db15", + "revCount": 1, + "type": "git", + "url": "https://git.chn.moe/chn/blog.git" + }, + "original": { + "type": "git", + "url": "https://git.chn.moe/chn/blog.git" + } + }, "blurred-wallpaper": { "flake": false, "locked": { @@ -1369,6 +1385,7 @@ "root": { "inputs": { "aagl": "aagl", + "blog": "blog", "blurred-wallpaper": "blurred-wallpaper", "bscpkgs": "bscpkgs", "catppuccin": "catppuccin", diff --git a/flake.nix b/flake.nix index f309cdaa..e732eb68 100644 --- a/flake.nix +++ b/flake.nix @@ -71,6 +71,7 @@ nu-scripts = { url = "github:nushell/nu_scripts"; flake = false; }; py4vasp = { url = "github:vasp-dev/py4vasp"; flake = false; }; pocketfft = { url = "github:/mreineck/pocketfft"; flake = false; }; + blog = { url = "git+https://git.chn.moe/chn/blog.git"; flake = false; }; # does not support lfs yet # nixos-wallpaper = { url = "git+https://git.chn.moe/chn/nixos-wallpaper.git"; flake = false; }; diff --git a/flake/packages.nix b/flake/packages.nix index c14b43cb..106adcf6 100644 --- a/flake/packages.nix +++ b/flake/packages.nix @@ -14,7 +14,7 @@ in pkgs.pkgsStatic.localPackages.hpcstat.override { inherit openssh duc; standalone = true; version = inputs.self.rev or "dirty"; }; chn-bsub = pkgs.pkgsStatic.localPackages.chn-bsub; - blog = pkgs.callPackage ../blog { inherit (inputs) hextra; }; + blog = pkgs.callPackage inputs.blog { inherit (inputs) hextra; }; } // (builtins.listToAttrs (builtins.map (system: { inherit (system) name; value = system.value.config.system.build.toplevel; })