Compare commits

..

No commits in common. "main" and "openssh-164ea4-fix" have entirely different histories.

38 changed files with 585 additions and 468 deletions

View File

@ -71,7 +71,6 @@ if [ "$1" = "update" ]; then
nix flake update --commit-lock-file
fi
nix flake archive
exit $?
fi
if [ "$1" = "diff" ]; then

View File

@ -123,12 +123,6 @@ here.
* Packages
** yaml
#+begin_src emacs-lisp
(use-package yaml-mode)
#+end_src
** rust-mode
#+begin_src emacs-lisp
(use-package rust-mode)
@ -311,29 +305,6 @@ easier for me to treat it like a regular shell.
* Language Configurations
** OCaml
#+begin_src emacs-lisp
(use-package ocamlformat
:custom (ocamlformat-enable 'enable-outside-detected-project)
:hook (before-save . ocamlformat-before-save))
(use-package tuareg
:mode ("\\.ml$" . tuareg-mode))
(use-package merlin
:config
(add-hook 'tuareg-mode-hook #'merlin-mode))
#+end_src
** firewall stuff
*** nftables
#+begin_src emacs-lisp
(use-package nftables-mode)
#+end_src
** Shell
#+begin_src emacs-lisp
@ -720,39 +691,46 @@ Extending org with the ability to transclude makes for a powerhouse!
:after org)
#+end_src
* Mail
** gnus
* gnus
[2024-08-22 Thu] Might need to switch go gnus. mu4e has been not showing new
mail for some things and having to sync state between two sources is a pita.
#+begin_src emacs-lisp
(use-package gnus
:custom
(gnus-use-cache t)
(gnus-use-full-window nil)
(gnus-suppress-duplicates t)
(gnus-inhibit-startup-message t)
(gnus-asynchronous t)
(gnus-sum-thread-tree-false-root "")
(gnus-sum-thread-tree-indent " ")
(gnus-sum-thread-tree-leaf-with-other "├► ")
(gnus-sum-thread-tree-root "")
(gnus-sum-thread-tree-single-leaf "╰► ")
(gnus-sum-thread-tree-vertical "│")
(gnus-summary-line-format "%U%R%z %(%&user-date>; %-15,15f %B%s%)\n")
(gnus-summary-thread-gathering-function 'gnus-gather-threads-by-references)
(gnus-thread-sort-functions '(gnus-thread-sort-by-date))
(gnus-user-date-format-alist '((t . "%Y-%m-%d %H:%M")))
(gnus-select-method '(nnimap "imap.fastmail.com"
(nnimap-server-port "imaps")
(nnimap-stream ssl)
(nnimap-expunge 'on-exit)))
(gnus-secondary-select-methods '((nntp "news.gmane.io"))))
(setq gnus-use-full-window nil
gnus-fetch-old-headers t
gnus-select-method '(nnimap "imap.fastmail.com")
gnus-secondary-select-methods '((nntp "news.gwene.org"))
gnus-sum-thread-tree-false-root ""
gnus-sum-thread-tree-indent " "
gnus-sum-thread-tree-leaf-with-other "├► "
gnus-sum-thread-tree-root ""
gnus-sum-thread-tree-single-leaf "╰► "
gnus-sum-thread-tree-vertical "│"
gnus-summary-line-format "%U%R%z %(%&user-date>; %-15,15f %B%s%)\n"
gnus-summary-thread-gathering-function 'gnus-gather-threads-by-references
gnus-thread-sort-functions '(gnus-thread-sort-by-date)
gnus-user-date-format-alist '((t . "%Y-%m-%d %H:%M")))
(with-eval-after-load 'gnus
(setq gnus-select-method '(nnimap "imap.fastmail.com")
gnus-secondary-select-methods '((nntp "news.gwene.org"))))
#+end_src
** SMTP
* mu4e
~mu~ has been the best mail client for me on emacs.
** Initializing mu
The defaults ~mu~ uses make no sense. ~~/.cache~ is for .. caching data, not
persistent databases.. So we init things with sane defaults:
#+begin_src shell
mu init --muhome=/home/qbit/.mu -m /home/qbit/Maildir/fastmail/ --my-address="aaron@bolddaemon.com"
#+end_src
** General mail configuration
#+begin_src emacs-lisp
(require 'smtpmail)
@ -766,3 +744,64 @@ mail for some things and having to sync state between two sources is a pita.
smtpmail-default-smtp-server "smtp.fastmail.com"
smtpmail-stream-type 'ssl)
#+end_src
** mu4e specific configs
#+begin_src emacs-lisp
(use-package mu4e
:init
(setq mail-user-agent 'mu4e-user-agent
read-mail-command 'mu4e
mu4e-get-mail-command "mbsync fastmail"
mu4e-update-interval 420
mu4e-compose-context-policy nil
mu4e-context-policy 'pick-first
mu4e-drafts-folder "/Drafts"
mu4e-sent-folder "/Sent Items"
mu4e-trash-folder "/Trash"
mu4e-maildir-shortcuts
'( ("/INBOX" . ?i)
("/Archive" . ?a)
("/Sent Items" . ?s))
org-mu4e-link-query-in-headers-mode nil
mu4e-attachment-dir
(lambda (fname mtype)
(cond
((and fname (string-match "\\.diff$" fname)) "~/patches")
((and fname (string-match "\\.patch$" fname)) "~/patches")
((and fname (string-match "\\.diff.gz$" fname)) "~/patches")
(t "~/Downloads")))
mu4e-bookmarks
`(( :name "Inbox"
:query "maildir:/Inbox AND NOT flag:trashed"
:key ?i)
( :name "TODO"
:query "maildir:/TODO AND NOT flag:trashed"
:key ?T)
( :name "Unread messages"
:query "flag:unread AND NOT flag:trashed AND NOT list:ports-changes.openbsd.org AND NOT list:source-changes.openbsd.org"
:key ?u)
( :name "Today's messages"
:query "date:today..now"
:key ?d)
( :name "Hackers"
:query "list:hackers.openbsd.org AND NOT flag:trashed"
:key ?h)
( :name "Bugs"
:query "list:bugs.openbsd.org AND NOT flag:trashed"
:key ?b)
( :name "Tech"
:query "list:tech.openbsd.org AND NOT flag:trashed"
:key ?t)
( :name "Ports"
:query "list:ports.openbsd.org AND NOT flag:trashed"
:key ?p)
( :name "Misc"
:query "list:misc.openbsd.org AND NOT flag:trashed"
:key ?m)
( :name "9front"
:query "list:9front.9front.org AND NOT flag:trashed"
:key ?9)
( :name "GOT"
:query "list:gameoftrees.openbsd.org AND NOT flag:trashed"
:key ?g))))
#+end_src

View File

@ -35,7 +35,7 @@ let
haskell-vim
neoformat
neogit
nvim-cmp
nvim-compe
nvim-lspconfig
nvim-tree-lua
nvim-treesitter.withAllGrammars

View File

@ -102,7 +102,7 @@ in
];
panes = [
{
commands = [ "ssh stan-kvm" ];
commands = [ "ssh stan" ];
}
];
}

View File

@ -9,60 +9,24 @@ let
tailnetACLs =
let
acls = {
nodeAttrs = [
{
target = [ "tag:laptop" "tag:mobile" ];
attr = [
"drive:access"
];
}
{
target = [ "tag:internal-server" ];
attr = [
"drive:share"
];
}
{
target = [ "namish" ];
attr = [
"drive:share"
];
}
];
grants = [
{
src = [ "europa" "sputnik" "skunk" "graphy" "plq" ];
dst = [ "box" ];
app = {
"tailscale.com/cap/drive" = [{
shares = [ "*" ];
access = "rw";
}];
};
}
];
hosts = {
box = "100.115.16.150";
console = "100.83.166.33";
display = "100.77.35.34";
europa = "100.64.26.122";
faf = "100.80.94.131";
gitle = "100.111.162.87";
graphy = "100.123.184.55";
h = "100.83.77.133";
il = "100.86.182.99";
invidious = "100.71.57.99";
namish = "100.86.184.141";
nbc = "100.74.8.55";
ollama = "100.121.227.121";
plq = "100.90.214.142";
pwntie = "100.84.170.57";
rimgo = "100.121.77.91";
skunk = "100.79.26.78";
sputnik = "100.78.154.31";
startpage = "127.0.0.1";
tsns = "100.73.115.100";
gitle = "100.111.162.87";
faf = "100.80.94.131";
h = "100.83.77.133";
box = "100.115.16.150";
pwntie = "100.84.170.57";
sputnik = "100.78.154.31";
europa = "100.64.26.122";
il = "100.86.182.99";
tv = "100.118.196.38";
ollama = "100.121.227.121";
display = "100.77.35.34";
rimgo = "100.121.77.91";
invidious = "100.71.57.99";
tsns = "100.73.115.100";
};
tagOwners = {
@ -79,11 +43,6 @@ let
};
acls = [
{
action = "accept";
src = [ "tag:mobile" "tag:laptop" ];
dst = [ "h:6697" ];
}
{
action = "accept";
src = [ "europa" ];

View File

@ -35,9 +35,9 @@ in
./bins
];
# disabledModules = [
# "services/web-apps/gotosocial.nix"
# ];
disabledModules = [
"services/web-apps/gotosocial.nix"
];
options.myconf = {
managementPubKeys = lib.mkOption rec {
@ -148,10 +148,6 @@ in
};
};
system.nixos = {
distroName = "XinOS";
};
environment = {
etc = {
"ssh/ca.pub" = { text = caPubKeys; };

161
flake.lock generated
View File

@ -36,26 +36,6 @@
"type": "gitlab"
}
},
"calnow": {
"inputs": {
"nixpkgs": [
"unstable"
]
},
"locked": {
"lastModified": 1732392602,
"narHash": "sha256-KEU7yKYk+qBFjpkU66YUtQCWGL3bckB81Uos6JSbOM4=",
"owner": "qbit",
"repo": "calnow",
"rev": "636dc7ac12a325806f9303ee5836cfb2ab1a574f",
"type": "github"
},
"original": {
"owner": "qbit",
"repo": "calnow",
"type": "github"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
@ -63,11 +43,11 @@
]
},
"locked": {
"lastModified": 1732603785,
"narHash": "sha256-AEjWTJwOmSnVYsSJCojKgoguGfFfwel6z/6ud6UFMU8=",
"lastModified": 1728385805,
"narHash": "sha256-mUd38b0vhB7yzgAjNOaFz7VY9xIVzlbn3P2wjGBcVV0=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "6ab87b7c84d4ee873e937108c4ff80c015a40c7a",
"rev": "48b50b3b137be5cfb9f4d006835ce7c3fe558ccc",
"type": "github"
},
"original": {
@ -78,6 +58,7 @@
},
"emacs-overlay": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"unstable"
],
@ -86,11 +67,11 @@
]
},
"locked": {
"lastModified": 1732759838,
"narHash": "sha256-bBghlNpHztnrUb1o7BAinp+rrWZMpaVNPrxnefhk1LY=",
"lastModified": 1728525896,
"narHash": "sha256-XpR0FJTAWDMUQhiwEdUWym2kbmz9XS6fifv8PWrm5VI=",
"owner": "nix-community",
"repo": "emacs-overlay",
"rev": "f704f6f113bef121c7e38f807e3397f7dbe1aee0",
"rev": "75650e84f17566e47b40ae75e21dff1e4f97fd3d",
"type": "github"
},
"original": {
@ -133,6 +114,24 @@
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flakey-profile": {
"locked": {
"lastModified": 1712898590,
@ -148,26 +147,6 @@
"type": "github"
}
},
"fynado": {
"inputs": {
"nixpkgs": [
"unstable"
]
},
"locked": {
"lastModified": 1732041949,
"narHash": "sha256-cfOQ8VB5ip1/Q1AXwBPxSEPuK9DewzIyIyEZM2AyWwE=",
"owner": "qbit",
"repo": "fynado",
"rev": "82002187ce242807eb8734ddcaabae34d3457a75",
"type": "github"
},
"original": {
"owner": "qbit",
"repo": "fynado",
"type": "github"
}
},
"gostart": {
"inputs": {
"nixpkgs": [
@ -227,20 +206,20 @@
"lix": {
"flake": false,
"locked": {
"lastModified": 1729298361,
"narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=",
"rev": "ad9d06f7838a25beec425ff406fe68721fef73be",
"lastModified": 1723503926,
"narHash": "sha256-Rosl9iA9MybF5Bud4BTAQ9adbY81aGmPfV8dDBGl34s=",
"rev": "bcaeb6388b8916ac6d1736e3aa2b13313e6a6bd2",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be"
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/bcaeb6388b8916ac6d1736e3aa2b13313e6a6bd2.tar.gz?rev=bcaeb6388b8916ac6d1736e3aa2b13313e6a6bd2"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz"
"url": "https://git.lix.systems/lix-project/lix/archive/2.91.0.tar.gz"
}
},
"lix-module": {
"inputs": {
"flake-utils": "flake-utils",
"flake-utils": "flake-utils_2",
"flakey-profile": "flakey-profile",
"lix": "lix",
"nixpkgs": [
@ -248,15 +227,15 @@
]
},
"locked": {
"lastModified": 1729360442,
"narHash": "sha256-6U0CyPycIBc04hbYy2hBINnVso58n/ZyywY2BD3hu+s=",
"rev": "9098ac95768f7006d7e070b88bae76939f6034e6",
"lastModified": 1723510904,
"narHash": "sha256-zNW/rqNJwhq2lYmQf19wJerRuNimjhxHKmzrWWFJYts=",
"rev": "622a2253a071a1fb97a4d3c8103a91114acc1140",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/9098ac95768f7006d7e070b88bae76939f6034e6.tar.gz?rev=9098ac95768f7006d7e070b88bae76939f6034e6"
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/622a2253a071a1fb97a4d3c8103a91114acc1140.tar.gz?rev=622a2253a071a1fb97a4d3c8103a91114acc1140"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz"
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.0.tar.gz"
}
},
"mcchunkie": {
@ -322,11 +301,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1732483221,
"narHash": "sha256-kF6rDeCshoCgmQz+7uiuPdREVFuzhIorGOoPXMalL2U=",
"lastModified": 1728269138,
"narHash": "sha256-oKxDImsOvgUZMY4NwXVyUc/c1HiU2qInX+b5BU0yXls=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "45348ad6fb8ac0e8415f6e5e96efe47dd7f39405",
"rev": "ecfcd787f373f43307d764762e139a7cdeb9c22b",
"type": "github"
},
"original": {
@ -414,10 +393,8 @@
"root": {
"inputs": {
"beyt": "beyt",
"calnow": "calnow",
"darwin": "darwin",
"emacs-overlay": "emacs-overlay",
"fynado": "fynado",
"gostart": "gostart",
"gqrss": "gqrss",
"kogs": "kogs",
@ -470,14 +447,17 @@
"inputs": {
"nixpkgs": [
"unstable"
],
"nixpkgs-stable": [
"stable"
]
},
"locked": {
"lastModified": 1732575825,
"narHash": "sha256-xtt95+c7OUMoqZf4OvA/7AemiH3aVuWHQbErYQoPwFk=",
"lastModified": 1728345710,
"narHash": "sha256-lpunY1+bf90ts+sA2/FgxVNIegPDKCpEoWwOPu4ITTQ=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "3433ea14fbd9e6671d0ff0dd45ed15ee4c156ffa",
"rev": "06535d0e3d0201e6a8080dd32dbfde339b94f01b",
"type": "github"
},
"original": {
@ -488,16 +468,16 @@
},
"stable": {
"locked": {
"lastModified": 1732698966,
"narHash": "sha256-EAOMYlOltx993ZzkHwKvFfZcKyxt1q+n39riqsZkWuM=",
"lastModified": 1728500571,
"narHash": "sha256-dOymOQ3AfNI4Z337yEwHGohrVQb4yPODCW9MDUyAc4w=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f1f029e5cb5ff2d181552406a5d0a51177f5599d",
"rev": "d51c28603def282a24fa034bcb007e2bcb5b5dd0",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11-small",
"ref": "nixos-24.05-small",
"repo": "nixpkgs",
"type": "github"
}
@ -532,6 +512,21 @@
"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"
}
},
"traygent": {
"inputs": {
"nixpkgs": [
@ -614,11 +609,11 @@
},
"unstable": {
"locked": {
"lastModified": 1732771228,
"narHash": "sha256-Exlf1f78MrtTlzW0zGM9KSysO2tf5wnSvVQr8ordQi8=",
"lastModified": 1728537394,
"narHash": "sha256-ZSteBGamZ8ud2SOxZgd0kjKPbp9e9NQxhHVms52l2mE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "258e563d2cb35cc9d7d9297263ea725791391be2",
"rev": "3f16bb4a40a55753cb84be9a54cd42c16222de6e",
"type": "github"
},
"original": {
@ -629,11 +624,11 @@
},
"unstableSmall": {
"locked": {
"lastModified": 1732718005,
"narHash": "sha256-rBd/tZyE0iw6C/xPOwqXZwIOi6sLA29t0ZXNomhBkqw=",
"lastModified": 1728492678,
"narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e245a698cd491e8d91cabc22901fd8c8cedf2e23",
"rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
"type": "github"
},
"original": {
@ -645,7 +640,7 @@
},
"utils": {
"inputs": {
"systems": "systems_2"
"systems": "systems_3"
},
"locked": {
"lastModified": 1709126324,
@ -675,11 +670,11 @@
]
},
"locked": {
"lastModified": 1732725082,
"narHash": "sha256-gglsLwqmmRsZwujpUvAQ2Jm7HrulRaiYhGKFkScw7E0=",
"lastModified": 1724811887,
"narHash": "sha256-qdmkUW++w+pz9QCCgds80q3hrZwO/72OOvrsdl2Q7hM=",
"ref": "main",
"rev": "e3961bc9fd7300ff340b9edad0655dd0b4ad26b6",
"revCount": 167,
"rev": "fe6198b35411668a42e4dbc6bc657b3ace730e4e",
"revCount": 157,
"type": "git",
"url": "ssh://xin-secrets-ro/qbit/xin-secrets.git"
},
@ -696,11 +691,11 @@
]
},
"locked": {
"lastModified": 1730388045,
"narHash": "sha256-LNUfkhfdGluL5GZh2lYBENl/yJ1cTfVal4su9SfD/wI=",
"lastModified": 1724627027,
"narHash": "sha256-p3ItKGMp7G5fVotT2tUlkTJdP7t/UjEl9ivQaTkqfyg=",
"owner": "qbit",
"repo": "xintray",
"rev": "16ae5189a200d44cdc2145edc37eadb75ba5e363",
"rev": "fc459ec9564d20c090fd4364f21e982ae7073c61",
"type": "github"
},
"original": {

View File

@ -5,16 +5,17 @@
unstable.url = "github:NixOS/nixpkgs";
unstableSmall.url = "github:NixOS/nixpkgs/nixos-unstable-small";
stable.url = "github:NixOS/nixpkgs/nixos-24.11-small";
stable.url = "github:NixOS/nixpkgs/nixos-24.05-small";
lix-module = {
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz";
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.0.tar.gz";
inputs.nixpkgs.follows = "unstable";
};
sops-nix = {
url = "github:Mic92/sops-nix";
inputs = {
nixpkgs-stable.follows = "stable";
nixpkgs.follows = "unstable";
};
};
@ -102,14 +103,7 @@
url = "github:qbit/traygent";
inputs.nixpkgs.follows = "unstable";
};
fynado = {
url = "github:qbit/fynado";
inputs.nixpkgs.follows = "unstable";
};
calnow = {
url = "github:qbit/calnow";
inputs.nixpkgs.follows = "unstable";
};
gqrss = {
url = "github:qbit/gqrss";
flake = false;
@ -119,7 +113,6 @@
outputs =
{ self
, beyt
, calnow
, darwin
, emacs-overlay
, gostart
@ -134,7 +127,6 @@
, simple-nixos-mailserver
, stable
, traygent
, fynado
, ts-reverse-proxy
, tsns
, tsvnstat
@ -329,7 +321,6 @@
inherit spkgs;
isUnstable = true;
};
irken = upkgs.tclPackages.callPackage ./pkgs/irken.nix { };
ttfs = upkgs.callPackage ./pkgs/ttfs.nix { };
intiface-engine = upkgs.callPackage ./pkgs/intiface-engine.nix { };
flake-warn =
@ -364,8 +355,12 @@
promnesia = upkgs.python3Packages.callPackage ./pkgs/promnesia.nix {
inherit upkgs;
};
sliding-sync =
spkgs.callPackage ./pkgs/sliding-sync.nix { inherit spkgs; };
gokrazy = upkgs.callPackage ./pkgs/gokrazy.nix { inherit upkgs; };
gosignify = spkgs.callPackage ./pkgs/gosignify.nix { inherit spkgs; };
gotosocial =
spkgs.callPackage ./pkgs/gotosocial.nix { inherit spkgs; };
zutty = upkgs.callPackage ./pkgs/zutty.nix {
inherit upkgs;
};
@ -380,14 +375,11 @@
inherit (ts-reverse-proxy.packages.${system}) ts-reverse-proxy;
inherit (tsns.packages.${system}) tsns;
inherit (traygent.packages.${system}) traygent;
inherit (fynado.packages.${system}) fynado;
inherit (calnow.packages.${system}) calnow;
inherit (spkgs) matrix-synapse;
xin = upkgs.callPackage ./bins/xin { inherit upkgs; };
openssh = upkgs.pkgsMusl.callPackage ./pkgs/openssh.nix { inherit upkgs; };
matrix = self.nixosConfigurations.h.pkgs.matrix-synapse;
});
templates = {

View File

@ -8,9 +8,7 @@
let
inherit (builtins) toJSON;
inherit (inputs.traygent.packages.${pkgs.system}) traygent;
inherit (inputs.fynado.packages.${pkgs.system}) fynado;
inherit (inputs.beyt.packages.${pkgs.system}) beyt;
inherit (inputs.calnow.packages.${pkgs.system}) calnow;
firefox = import ../configs/firefox.nix { inherit pkgs; };
rage = pkgs.writeScriptBin "rage" (import ../bins/rage.nix { inherit pkgs; });
rpr =
@ -44,7 +42,7 @@ let
];
traygentCmds = toJSON [
{
command_path = "${pkgs.kdePackages.ksshaskpass}/bin/ksshaskpass";
command_path = "${pkgs.ksshaskpass}/bin/ksshaskpass";
#command_path = "${pkgs.ssh-askpass-fullscreen}/bin/ssh-askpass-fullscreen";
event = "sign";
msg_format = "Allow access to key %q?";
@ -110,7 +108,6 @@ with lib; {
bc
beyt
black
calnow
drawterm-wayland
exiftool
go-font
@ -125,7 +122,6 @@ with lib; {
recoll
rpr
traygent
fynado
trayscale
vlc
zeal

View File

@ -58,14 +58,11 @@ with pkgs;
NIXOS_OZONE_WL = 1;
};
systemPackages = with kdePackages; [
akonadi-calendar-tools
kcolorchooser
kconnect
kontact
konversation
korganizer
kzones
merkuro
];
};
};

View File

@ -78,11 +78,6 @@ in
owner = config.users.users.restic.name;
sopsFile = config.xin-secrets.box.secrets.certs;
};
invidious_extra = {
owner = "root";
mode = "444";
sopsFile = config.xin-secrets.box.secrets.services;
};
books_cert = mkNginxSecret;
books_key = mkNginxSecret;
@ -195,10 +190,6 @@ in
allowUnfree = true;
permittedInsecurePackages = todo "figure out what is using openssl-1.1.1w" [
"openssl-1.1.1w"
"aspnetcore-runtime-wrapped-6.0.36"
"aspnetcore-runtime-6.0.36"
"dotnet-sdk-wrapped-6.0.428"
"dotnet-sdk-6.0.428"
];
};
#overlays = [
@ -444,8 +435,6 @@ in
database = {
createLocally = true;
};
sig-helper.enable = true;
extraSettingsFile = "/run/secrets/invidious_extra";
address = "127.0.0.1";
port = 1538;
settings = {
@ -797,10 +786,8 @@ in
START_SSH_SERVER = true;
SSH_SERVER_HOST_KEYS = "ssh/gitea-ed25519";
SSH_PORT = 2222;
COOKIE_SECURE = true;
};
service = {
DISABLE_REGISTRATION = true;
COOKIE_SECURE = true;
};
};

View File

@ -168,7 +168,7 @@ in
'';
shellAliases = {
"gh" = "op plugin run -- gh";
"nixpkgs-review" = "env GITHUB_TOKEN=$(op item get nixpkgs-review --field token --reveal) nixpkgs-review";
"nixpkgs-review" = "env GITHUB_TOKEN=$(op item get nixpkgs-review --field token) nixpkgs-review";
"godeps" = "go list -m -f '{{if not (or .Indirect .Main)}}{{.Path}}{{end}}' all";
"sync-music" = "rsync -av --progress --delete ~/Music/ suah.dev:/var/lib/music/";
"load-agent" = ''op item get signer --field 'private key' --reveal | sed '/"/d; s/\r//' | ssh-add -'';
@ -243,7 +243,7 @@ in
};
pcscd.enable = true;
vnstat.enable = true;
clamav.updater.enable = true;
# clamav.updater.enable = true;
tor = {
enable = true;
client.enable = true;
@ -331,7 +331,6 @@ in
chirp # stable
deadbeef-with-plugins
deluge
dino
direwolf
element-desktop
element-desktop-wayland
@ -382,6 +381,7 @@ in
rtl-sdr
sdrpp
signal-desktop
signal-desktop-beta
tcpdump
tea
tigervnc
@ -395,13 +395,24 @@ in
zig
(callPackage ../../pkgs/ttfs.nix { })
(python3Packages.callPackage ../../pkgs/kobuddy.nix { })
(callPackage ../../pkgs/kobuddy.nix {
inherit pkgs;
inherit
(pkgs.python39Packages)
buildPythonPackage
fetchPypi
setuptools-scm
pytz
banal
sqlalchemy
alembic
;
})
(callPackage ../../pkgs/gokrazy.nix { })
(callPackage ../../pkgs/mvoice.nix { })
(callPackage ../../pkgs/zutty.nix { })
(python3Packages.callPackage ../../pkgs/watchmap.nix { })
#(python3Packages.callPackage ../../pkgs/watchmap.nix { })
(python3Packages.callPackage ../../pkgs/ble-serial.nix { })
(tclPackages.callPackage ../../pkgs/irken.nix { })
restic
];

View File

@ -1 +0,0 @@
suah.dev

View File

@ -5,10 +5,9 @@
, ...
}:
with pkgs; let
sojuUser = "soju";
maxUploadSize = "150M";
gqrss = callPackage ../../pkgs/gqrss.nix { inherit isUnstable; };
icbirc = callPackage ../../pkgs/icbirc.nix { inherit isUnstable; };
slidingSyncPkg = callPackage ../../pkgs/sliding-sync.nix { };
weepushover =
python3Packages.callPackage ../../pkgs/weepushover.nix { inherit pkgs; };
pgBackupDir = "/var/backups/postgresql";
@ -44,6 +43,13 @@ with pkgs; let
mkMatrixWellKnown = p: ''
return 200 '${builtins.toJSON p}';
'';
mkMatrixSliderLoc = {
proxyWebsockets = true;
proxyPass = "http://${config.services.sliding-sync.address}:${
toString config.services.sliding-sync.port
}";
};
mkMatrixLoc = {
proxyWebsockets = true;
proxyPass = "http://${mtxCfg.address}:${toString mtxCfg.port}";
@ -135,6 +141,11 @@ in
mode = "400";
sopsFile = config.xin-secrets.h.secrets.services;
};
sliding_sync_env = {
owner = config.services.sliding-sync.user;
mode = "400";
sopsFile = config.xin-secrets.h.secrets.services;
};
pr_status_env = {
mode = "400";
owner = config.services.ts-reverse-proxy.servers."pr-status-reverse".user;
@ -150,16 +161,6 @@ in
owner = "root";
sopsFile = config.xin-secrets.h.secrets.services;
};
bounce_cert = {
mode = "400";
owner = sojuUser;
sopsFile = config.xin-secrets.h.secrets.services;
};
bounce_key = {
mode = "400";
owner = sojuUser;
sopsFile = config.xin-secrets.h.secrets.services;
};
};
networking = {
@ -206,12 +207,8 @@ in
};
firewall = {
interfaces = {
"tailscale0" = {
allowedTCPPorts = [ 9002 config.services.shiori.port 6697 ];
};
};
allowedTCPPorts = [ 22 80 443 2222 53589 5222 5269 ];
interfaces = { "tailscale0" = { allowedTCPPorts = [ 9002 config.services.shiori.port ]; }; };
allowedTCPPorts = [ 22 80 443 2222 53589 ];
allowedUDPPorts = [ 7122 ];
allowedUDPPortRanges = [
{
@ -248,53 +245,17 @@ in
security.acme = {
acceptTerms = true;
defaults.email = "aaron@bolddaemon.com";
certs = {
"suah.dev" = {
group = "prognx";
extraDomainNames = [
"upload.suah.dev"
"conference.suah.dev"
];
};
"segfault.rodeo" = {
group = "prognx";
extraDomainNames = [
"upload.segfault.rodeo"
"conference.segfault.rodeo"
];
};
};
};
users = {
groups = {
${sojuUser} = { };
prognx = {
members = [
config.services.prosody.user
config.services.nginx.user
];
};
};
users = {
root = userBase;
qbit = userBase;
"${sojuUser}" = {
isSystemUser = true;
group = sojuUser;
};
};
};
systemd = {
services = {
soju = {
serviceConfig = {
User = sojuUser;
Group = sojuUser;
after = [ "network-online.target" "tailscaled.service" ];
};
};
mcchunkie = {
serviceConfig = {
ExecStart = lib.mkForce "${pkgs.mcchunkie}/bin/mcchunkie -db /var/lib/mcchunkie/db";
@ -356,60 +317,6 @@ in
};
services = {
prosody = {
enable = true;
httpPorts = [ 5280 ];
httpsPorts = [ 5281 ];
virtualHosts."suah.dev" = {
enabled = true;
domain = "suah.dev";
ssl = {
cert = "/var/lib/acme/suah.dev/fullchain.pem";
key = "/var/lib/acme/suah.dev/key.pem";
};
};
virtualHosts."segfault.rodeo" = {
enabled = true;
domain = "segfault.rodeo";
ssl = {
cert = "/var/lib/acme/segfault.rodeo/fullchain.pem";
key = "/var/lib/acme/segfault.rodeo/key.pem";
};
};
uploadHttp = {
domain = "upload.suah.dev";
uploadExpireAfter = "60 * 60 * 24 * 7 * 4";
};
muc = [
{
domain = "conference.suah.dev";
maxHistoryMessages = 1024;
}
{
domain = "conference.segfault.rodeo";
maxHistoryMessages = 2048;
}
];
allowRegistration = false;
admins = [
"qbit@suah.dev"
"qbit@segfault.rodeo"
];
};
soju = {
enable = true;
listen = [ "100.83.77.133:6697" ];
hostName = "bounce.bold.daemon";
tlsCertificate = config.sops.secrets.bounce_cert.path;
tlsCertificateKey = config.sops.secrets.bounce_key.path;
};
postfix.extraConfig = ''
smtputf8_enable = no
'';
@ -458,6 +365,11 @@ in
};
};
};
sliding-sync = {
enable = true;
server = "https://tapenet.org";
package = slidingSyncPkg;
};
pots = {
enable = true;
envFile = "${config.sops.secrets.pots_env_file.path}";
@ -480,7 +392,7 @@ in
gotosocial = {
enable = true;
# https://github.com/superseriousbusiness/gotosocial/blob/v0.5.2/example/config.yaml
settings = {
configuration = {
account-domain = "mammothcirc.us";
accounts-approval-required = false;
accounts-reason-required = false;
@ -503,7 +415,8 @@ in
storage-backend = "local";
storage-local-base-path = "/var/lib/gotosocial";
trusted-proxies = [ "127.0.0.1/32" "23.29.118.0/24" ];
landing-page-user = "qbit";
web-template-base-dir = "${config.services.gotosocial.package}/assets/web/template/";
web-asset-base-dir = "${config.services.gotosocial.package}/assets/web/assets/";
};
};
promtail = {
@ -576,7 +489,6 @@ in
"/var/lib/kogs"
"/var/vmail"
"/var/dkim"
config.services.prosody.dataDir
];
timerConfig = { OnCalendar = "00:05"; };
@ -595,7 +507,7 @@ in
recommendedGzipSettings = true;
recommendedProxySettings = true;
clientMaxBodySize = maxUploadSize;
clientMaxBodySize = "50M";
commonHttpConfig = ''
# Add HSTS header with preloading to HTTPS requests.
@ -847,11 +759,6 @@ in
enableACME = true;
root = "/var/www/qbit.io";
};
"segfault.rodeo" = {
forceSSL = true;
enableACME = true;
root = "/var/www/segfault.rodeo";
};
"mammothcirc.us" = {
forceSSL = true;
enableACME = true;
@ -870,7 +777,7 @@ in
locations."/" = {
extraConfig = ''
proxy_pass http://127.0.0.1:${
toString config.services.gotosocial.settings.port
toString config.services.gotosocial.configuration.port
};
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
@ -926,7 +833,22 @@ in
}
'';
};
}
// (if config.services.sliding-sync.enable
then {
"/.well-known/matrix/client".extraConfig =
mkMatrixWellKnown matrixClientConfig;
"/.well-known/matrix/server".extraConfig =
mkMatrixWellKnown matrixServerConfig;
"/client" = mkMatrixSliderLoc;
"/_matrix/client/unstable/org.matrix.msc3575/sync" =
mkMatrixSliderLoc;
"/_matrix" = mkMatrixLoc;
"/_synapse/client" = mkMatrixLoc;
}
else {
"/.well-known/matrix/client".extraConfig =
mkMatrixWellKnown matrixClientConfig;
"/.well-known/matrix/server".extraConfig =
@ -934,7 +856,7 @@ in
"/_matrix" = mkMatrixLoc;
"/_synapse/client" = mkMatrixLoc;
};
});
};
};
};
@ -1045,7 +967,6 @@ in
server_name = "tapenet.org";
signing_key_path = "${config.sops.secrets.synapse_signing_key.path}";
url_preview_enabled = false;
max_upload_size = maxUploadSize;
plugins = with config.services.matrix-synapse.package.plugins; [ matrix-synapse-mjolnir-antispam ];
app_service_config_files = [
"/var/lib/heisenbridge/registration.yml"

View File

@ -90,8 +90,7 @@ in
ollama = {
enable = true;
acceleration = "rocm";
host = "localhost";
port = oLlamaPort;
listenAddress = "localhost:${toString oLlamaPort}";
};
prometheus = {
enable = true;

View File

@ -268,7 +268,6 @@ in
};
services = {
avahi.enable = true;
rkvm.client = {
enable = true;
settings = {

View File

@ -2,8 +2,10 @@
imports = [
./backup.nix
./golink.nix
./gotosocial.nix
./lock-action.nix
./rtlamr2mqtt.nix
./sliding-sync.nix
./ssh-fido-agent.nix
./tsvnstat.nix
./veilid-server.nix

83
modules/gotosocial.nix Normal file
View File

@ -0,0 +1,83 @@
{ config
, lib
, pkgs
, ...
}:
with pkgs; let
cfg = config.services.gotosocial;
gotosocial = callPackage ../pkgs/gotosocial.nix { };
settingsFormat = pkgs.formats.json { };
settingsType = settingsFormat.type;
prettyJSON = conf:
pkgs.runCommandLocal "gotosocial-config.json" { } ''
echo '${
builtins.toJSON conf
}' | ${pkgs.buildPackages.jq}/bin/jq 'del(._module)' > $out
'';
in
{
options = with lib; {
services.gotosocial = {
enable = mkEnableOption "Enable gotosocial";
user = mkOption {
type = with types; oneOf [ str int ];
default = "gotosocial";
description = ''
The user the service will use.
'';
};
group = mkOption {
type = with types; oneOf [ str int ];
default = "gotosocial";
description = ''
The user the service will use.
'';
};
configuration = mkOption {
type = settingsType;
description = ''
Specify the configuration for GoToSocial in Nix.
'';
};
package = mkOption {
type = types.package;
default = gotosocial;
defaultText = literalExpression "pkgs.gotosocial";
description = "The package to use for gotosocial";
};
};
};
config = lib.mkIf cfg.enable {
users.groups.gotosocial = { };
users.users.gotosocial = {
description = "Gotosocial service user";
isSystemUser = true;
home = "/var/lib/gotosocial";
createHome = true;
group = "gotosocial";
};
systemd.services.gotosocial = {
enable = true;
description = "GoToSocial server";
wantedBy = [ "multi-user.target" ];
after = [ "postgresql.service" ];
serviceConfig = {
User = cfg.user;
Group = cfg.group;
RuntimeDirectory = "/var/lib/gotosocial";
ExecStart = "${cfg.package}/bin/gotosocial --config-path ${
prettyJSON cfg.configuration
} server start";
};
};
};
}

104
modules/sliding-sync.nix Normal file
View File

@ -0,0 +1,104 @@
{ lib
, config
, pkgs
, ...
}:
let
cfg = config.services.sliding-sync;
in
{
options = with lib; {
services.sliding-sync = {
enable = lib.mkEnableOption "Enable sliding-sync";
user = mkOption {
type = with types; oneOf [ str int ];
default = "syncv3";
description = ''
The user the service will use.
'';
};
group = mkOption {
type = with types; oneOf [ str int ];
default = "syncv3";
description = ''
The group the service will use.
'';
};
dataDir = mkOption {
type = types.path;
default = "/var/lib/sliding-sync";
description = "Path sliding-sync home directory";
};
package = mkOption {
type = types.package;
default = pkgs.sliding-sync;
defaultText = literalExpression "pkgs.sliding-sync";
description = "The package to use for sliding-sync";
};
port = mkOption {
type = types.int;
default = 8098;
description = "The port sliding-sync should listen on.";
};
address = mkOption {
type = types.str;
default = "127.0.0.1";
description = "The address sliding-sync should listen on.";
};
server = mkOption {
type = types.str;
default = "";
description = "The matrix server to talk to.";
};
envFile = mkOption {
type = types.path;
default = "/run/secrets/sliding_sync_env";
description = ''
Path to a file containing the sliding-sync secret information.
'';
};
};
};
config = lib.mkIf cfg.enable {
users.groups.${cfg.group} = { };
users.users.${cfg.user} = {
description = "sliding-sync service user";
isSystemUser = true;
home = "${cfg.dataDir}";
createHome = true;
group = "${cfg.group}";
};
systemd.services.sliding-sync = {
enable = true;
description = "sliding-sync server";
after = [ "network-online.target" ];
wants = [ "network-online.target" "matrix-synapse.service" ];
wantedBy = [ "multi-user.target" ];
environment = {
HOME = "${cfg.dataDir}";
SYNCV3_BINDADDR = "${cfg.address}:${toString cfg.port}";
SYNCV3_SERVER = cfg.server;
};
serviceConfig = {
User = cfg.user;
Group = cfg.group;
ExecStart = "${cfg.package}/bin/syncv3";
EnvironmentFile = cfg.envFile;
};
};
};
}

View File

@ -4,10 +4,13 @@ set logfile /var/log/monit.log
include /run/secrets/monit_cfg
set mail-format {
set mail-format {
from: alerts@bolddaemon.com
subject: $SERVICE @ $HOST $EVENT on $DATE
subject: $SERVICE $EVENT on $DATE
message: $DESCRIPTION
}
check system $HOST
if memory usage > 80% for 10 cycles then alert
if cpu usage > 200% for 20 cycles then alert

View File

@ -11,18 +11,6 @@ in
nixpkgs.overlays = [
heisenbridge
matrix-synapse
(_: super: {
smug = super.smug.overrideAttrs (_: rec {
version = "0.3.3";
src = super.fetchFromGitHub {
owner = "ivaaaan";
repo = "smug";
rev = "v${version}";
sha256 = "sha256-dQp9Ov8Si9DfziVtX3dXsJg+BNKYOoL9/WwdalQ5TVw=";
};
});
})
] ++
(if isUnstable
then [

View File

@ -1,7 +1,7 @@
let
version = "1.119.0";
hash = "sha256-+3FrxSfQteIga5uiRNzAlV+xNESB9PUX/UkkL6UMETQ=";
sha256 = "sha256-c/19RaBmtfKkFFQyDBwH+yqHp4YNQSqCu23WYbpOc98=";
version = "1.115.0";
hash = "sha256-R7TAuAdEGvk/cAttxbrOZkZfsfbrsPujt0zVcp3aDZQ=";
sha256 = "sha256-h84Hp+vhGfunbD3nRb1EXPnGhnMXncjk3ASKdRr805Y=";
matrix-synapse-unwrapped = _: super: {
matrix-synapse-unwrapped = super.matrix-synapse-unwrapped.overrideAttrs (_: rec {
inherit version;

View File

@ -3,11 +3,10 @@
, ...
}:
let
emacsPkg =
if (pkgs.system == "x86_64-linux") then
pkgs.emacs-pgtk
else
pkgs.emacs;
emacsPkg = (if (pkgs.system == "x86_64-linux") then
pkgs.emacs-pgtk
else
pkgs.emacs);
in
emacsWithPackagesFromUsePackage {
config = ../configs/emacs.org;

60
pkgs/gotosocial.nix Normal file
View File

@ -0,0 +1,60 @@
{ lib
, buildGoModule
, fetchFromGitHub
, go
, ffmpeg
, ...
}:
let
gotosocialVersion = "0.16.0";
gtswaHash = "sha256:1gampfm5yrjfx7cxhjj9zpw1qsxlmfsijwy523brp8dgj9vjk539";
gtssHash = "sha256-QoG09+jmq5e5vxDVtkhY35098W/9B1HsYTuUnz43LV4=";
gotosocialWebAssets = builtins.fetchurl {
url = "https://github.com/superseriousbusiness/gotosocial/releases/download/v${gotosocialVersion}/gotosocial_${gotosocialVersion}_web-assets.tar.gz";
sha256 = gtswaHash;
};
in
with lib;
buildGoModule rec {
pname = "gotosocial";
version = gotosocialVersion;
src = fetchFromGitHub {
owner = "superseriousbusiness";
repo = pname;
rev = "v${version}";
hash = gtssHash;
};
ldflags = [
"-s"
"-w"
"-extldflags '-static'"
"-X 'main.Commit=${version}'"
"-X 'main.Version=${version}'"
];
propagatedBuildInputs = [ ffmpeg ];
proxyVendor = false;
vendorHash = null;
doCheck = false;
preBuild = ''
echo ${go}/bin/go
${go}/bin/go version
'';
postInstall = ''
mkdir -p $out/assets
tar -C $out/assets/ -zxvf ${gotosocialWebAssets}
'';
meta = {
description = "Fast, fun, ActivityPub server, powered by Go.";
homepage = "https://github.com/superseriousbusiness/gotosocial";
license = licenses.agpl3Only;
maintainers = with maintainers; [ qbit ];
};
}

View File

@ -1,43 +0,0 @@
{ lib
, mkTclDerivation
, fetchFromGitHub
, bwidget
, libnotify
, tclcurl
, tcltls
, tk
}:
mkTclDerivation {
pname = "irken";
version = "2024-11-19";
src = fetchFromGitHub {
owner = "dlowe-net";
repo = "irken";
rev = "2196a9c0d4549d43972fbc56ef38a06b2b569c4f";
hash = "sha256-vK7eoJDMh9D/+BJMyGaDAsQSC8ENgu4D9ZNV5d1zLr0=";
};
buildInputs = [
bwidget
libnotify
tclcurl
tcltls
tk
];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
cp irken.tcl $out/bin/irken
runHook postInstall
'';
meta = with lib; {
homepage = "https://github.com/dlowe-net/irken";
license = licenses.asl20;
maintainers = with maintainers; [ qbit ];
};
}

View File

@ -33,6 +33,7 @@ stdenv.mkDerivation {
# See discussion in https://github.com/NixOS/nixpkgs/pull/16966
./openssh/dont_create_privsep_path.patch
./openssh/fix-164ea4380564a2a83713eacf71908e3946e5e4e4.diff
];
postPatch =

View File

@ -0,0 +1,12 @@
diff --git a/sshd-auth.c b/sshd-auth.c
index 53658cf11..b071c59b1 100644
--- a/sshd-auth.c
+++ b/sshd-auth.c
@@ -464,7 +464,6 @@ main(int ac, char **av)
__progname = ssh_get_progname(av[0]);
/* Save argv. Duplicate so setproctitle emulation doesn't clobber it */
- saved_argc = ac;
saved_argv = xcalloc(ac + 1, sizeof(*saved_argv));
for (i = 0; (int)i < ac; i++)
saved_argv[i] = xstrdup(av[i]);

View File

@ -1,8 +1,8 @@
{
"owner": "openssh",
"repo": "openssh-portable",
"rev": "8eabd2ae2ca1d7756417a1ee5b41f09c5d997634",
"hash": "sha256-sdGdWulAM9+EIf816DQ0Y7edJDJrH0EHTr87qy7prAI=",
"version": "2024-11-27",
"comment": "upstream: fix argument of &quot;Compression&quot; directive in ssh -G config"
"rev": "98a0883bdef28a06c7e017f27adf21ba57898bf4",
"hash": "sha256-JkVvbmLc1Ur9qtixqZD/P+uNNC5O5pg0pnMQaVSOV9Y=",
"version": "2024-10-14",
"comment": "fix capsicum sandbox"
}

29
pkgs/sliding-sync.nix Normal file
View File

@ -0,0 +1,29 @@
{ lib
, buildGoModule
, fetchFromGitHub
, ...
}:
with lib;
buildGoModule rec {
pname = "sliding-sync";
version = "0.99.19";
src = fetchFromGitHub {
owner = "matrix-org";
repo = pname;
rev = "v${version}";
hash = "sha256-w4VL+MioNeJ/R48Ln9tYaqlfg7NvT3mQs0dWOZTHQK4=";
};
vendorHash = "sha256-THjvc0TepIBFOTte7t63Dmadf3HMuZ9m0YzQMI5e5Pw=";
# Note: tests require a postgres install accessible to the current user
doCheck = false;
meta = {
description = "An implementation of MSC3575";
homepage = "https://github.com/matrix-org/sliding-sync";
license = licenses.asl20;
maintainers = with maintainers; [ qbit ];
};
}

View File

@ -6,13 +6,13 @@
with lib;
buildGoModule rec {
pname = "yarr";
version = "unstable-2024-11-28";
version = "2.4";
src = fetchFromGitHub {
owner = "nkanaev";
repo = pname;
rev = "321ad7608fbb3368b6c89b2e9bfa07a4eb3bdc40";
sha256 = "sha256-ZX9qs8zAbEiFcq0YVwM3TiUWTcx+N63HV83JI8iGdrA=";
rev = "v${version}";
sha256 = "sha256-ZMQ+IX8dZuxyxQhD/eWAe4bGGCVcaCeVgF+Wqs79G+k=";
};
vendorHash = null;
@ -25,6 +25,12 @@ buildGoModule rec {
doCheck = false;
subPackages = [ "./src/main.go" ];
postInstall = ''
mv $out/bin/main $out/bin/yarr
'';
meta = {
description = "Yet Another RSS Reader";
homepage = "https://github.com/nkanaev/yarr";

View File

@ -1,7 +1,7 @@
{
description = "thing: stuff and things";
inputs.nixpkgs.url = "nixpkgs/nixos-24.11";
inputs.nixpkgs.url = "nixpkgs/nixos-24.05";
outputs =
{ self

View File

@ -1,7 +1,7 @@
{
description = "thing: stuff and things";
inputs.nixpkgs.url = "nixpkgs/nixos-24.11";
inputs.nixpkgs.url = "nixpkgs/nixos-24.05";
outputs =
{ self
@ -21,7 +21,7 @@
pkgs = nixpkgsFor.${system};
in
{
thing = pkgs.buildGoModule rec {
thing = pkgs.buildGoModule {
pname = "thing";
version = "v0.0.0";
src = ./.;
@ -31,7 +31,6 @@
nativeBuildInputs = with pkgs; [ pkg-config ];
buildInputs = with pkgs; [
fyne
git
glfw
libGL
@ -45,17 +44,6 @@
xorg.libXxf86vm
xorg.xinput
];
buildPhase = ''
${fyne}/bin/fyne package
'';
installPhase = ''
mkdir -p $out
pkg="$PWD/${pname}.tar.xz"
cd $out
tar --strip-components=1 -xvf $pkg
'';
};
});
@ -72,7 +60,6 @@
echo "Go `${pkgs.go}/bin/go version`"
'';
buildInputs = with pkgs; [
fyne
git
go_1_20
gopls

View File

@ -1,7 +1,7 @@
{
description = "thing: stuff and things";
inputs.nixpkgs.url = "nixpkgs/nixos-24.11";
inputs.nixpkgs.url = "nixpkgs/nixos-24.05";
outputs =
{ self

View File

@ -1,7 +1,7 @@
{
description = "thing: stuff and things";
inputs.nixpkgs.url = "nixpkgs/nixos-24.11";
inputs.nixpkgs.url = "nixpkgs/nixos-24.05";
outputs =
{ self

View File

@ -1,7 +1,7 @@
{
description = "thing: stuff and things";
inputs.nixpkgs.url = "nixpkgs/nixos-24.11";
inputs.nixpkgs.url = "nixpkgs/nixos-24.05";
outputs =
{ self

View File

@ -1,7 +1,7 @@
{
description = "thing: stuff and things";
inputs.nixpkgs.url = "nixpkgs/nixos-24.11";
inputs.nixpkgs.url = "nixpkgs/nixos-24.05";
outputs =
{ self

View File

@ -1,7 +1,7 @@
{
description = "thing: stuff and things";
inputs.nixpkgs.url = "nixpkgs/nixos-24.11";
inputs.nixpkgs.url = "nixpkgs/nixos-24.05";
outputs =
{ self

View File

@ -1,9 +1,6 @@
[formatter.statix]
#command = "statix"
#options = ["check"]
command = "sh"
options = ["-euc", "for file in \"$@\"; do statix check \"$file\"; done"]
includes = [ "*.nix" ]
command = "statix"
options = ["check"]
priority = 1
[formatter.deadnix]