Compare commits
72 Commits
42b35cb7ae
...
24.05
Author | SHA1 | Date | |
---|---|---|---|
e62b24fbba
|
|||
37c4fca572
|
|||
858e7ee947
|
|||
38a2ef3da1
|
|||
b86d372600
|
|||
61d39f34b6
|
|||
0d3d283568
|
|||
3054e7bb1e
|
|||
8eef59ae28
|
|||
819ff11d71
|
|||
29a7df3bd6
|
|||
8bc751926c
|
|||
d8464519ba
|
|||
b1e7f1d74b
|
|||
93c060d467
|
|||
2f51df03a6
|
|||
8c120b973d
|
|||
f154431f52
|
|||
9654a14f37
|
|||
641855afbf
|
|||
93c04e83d3
|
|||
92c3bd3a13
|
|||
b16a42732a
|
|||
52bfdd55a2
|
|||
22aa640a4c
|
|||
cb416e35c0
|
|||
dbbf1f2f46
|
|||
aa5ac9b55d
|
|||
80e4c58d2f
|
|||
19b1b463f7
|
|||
2dfb394d31
|
|||
cebbd64bc1
|
|||
7f82ee9300
|
|||
d921134b48
|
|||
2722826b76
|
|||
4ca00f7717
|
|||
5726e8ad28
|
|||
d4a48bb679
|
|||
3618c005c6
|
|||
352db47931
|
|||
2b8f9c4ae7
|
|||
37cdd6e81d
|
|||
23b9ddcbdd
|
|||
8a60a0ef51
|
|||
9747e7cd03
|
|||
5d60516fd2
|
|||
a181fc8a5e
|
|||
12366e5e1c
|
|||
7d8e9e6b8d
|
|||
eb9406fe1f
|
|||
c7e0f66295
|
|||
03e4cc7d9e
|
|||
e2b5ef1c1c
|
|||
0aba6fa9f7
|
|||
533a6344a2
|
|||
24a2413acf
|
|||
fa060ace43
|
|||
050415cb49
|
|||
fc1281a397
|
|||
0b1649033c
|
|||
2b188dab9a
|
|||
17487f010d
|
|||
0258036463
|
|||
86a3bae9cd
|
|||
f3db8d920d
|
|||
89f4af47b9
|
|||
66154517f6
|
|||
32356fb1e2
|
|||
c855dc7c07
|
|||
42429704cb
|
|||
479f4d9eda
|
|||
69bbc41c39
|
15
.gitea/workflows/check.yml
Normal file
15
.gitea/workflows/check.yml
Normal file
@ -0,0 +1,15 @@
|
||||
name: Check flake
|
||||
on:
|
||||
push:
|
||||
branches: ['master']
|
||||
jobs:
|
||||
build-amd64-linux:
|
||||
runs-on: nix
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
ref: master
|
||||
- name: Check flake
|
||||
run: |
|
||||
echo "Checking flake at ${{ gitea.ref }}"
|
||||
nix flake check
|
409
flake.lock
generated
409
flake.lock
generated
@ -8,11 +8,11 @@
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1712079060,
|
||||
"narHash": "sha256-/JdiT9t+zzjChc5qQiF+jhrVhRt8figYH29rZO7pFe4=",
|
||||
"lastModified": 1716561646,
|
||||
"narHash": "sha256-UIGtLO89RxKt7RF2iEgPikSdU53r6v/6WYB0RW3k89I=",
|
||||
"owner": "ryantm",
|
||||
"repo": "agenix",
|
||||
"rev": "1381a759b205dff7a6818733118d02253340fd5e",
|
||||
"rev": "c2fc0762bbe8feb06a2e59a364fa81b3a57671c9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -66,11 +66,11 @@
|
||||
"utils": "utils"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1711973905,
|
||||
"narHash": "sha256-UFKME/N1pbUtn+2Aqnk+agUt8CekbpuqwzljivfIme8=",
|
||||
"lastModified": 1715699772,
|
||||
"narHash": "sha256-sKhqIgucN5sI/7UQgBwsonzR4fONjfMr9OcHK/vPits=",
|
||||
"owner": "serokell",
|
||||
"repo": "deploy-rs",
|
||||
"rev": "88b3059b020da69cbe16526b8d639bd5e0b51c8b",
|
||||
"rev": "b3ea6f333f9057b77efd9091119ba67089399ced",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -79,6 +79,28 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"devshell": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1713532798,
|
||||
"narHash": "sha256-wtBhsdMJA3Wa32Wtm1eeo84GejtI43pMrFrmwLXrsEc=",
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"rev": "12e914740a25ea1891ec619bb53cf5e6ca922e40",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "devshell",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"disko": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@ -86,11 +108,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1712947906,
|
||||
"narHash": "sha256-T0eT2lMbcK7RLelkx0qx4SiFpOS/0dt0aSfLB+WsGV8=",
|
||||
"lastModified": 1717177033,
|
||||
"narHash": "sha256-G3CZJafCO8WDy3dyA2EhpUJEmzd5gMJ2IdItAg0Hijw=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "8d4ae698eaac8bd717e23507da2ca8b345bec4b5",
|
||||
"rev": "0274af4c92531ebfba4a5bd493251a143bc51f3c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -102,11 +124,11 @@
|
||||
"firefox-gnome-theme": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1712590130,
|
||||
"narHash": "sha256-NOfsWKOLifmRLIySbjlJFFLuRT8UVyLeZItuLCjvIno=",
|
||||
"lastModified": 1716813977,
|
||||
"narHash": "sha256-8fabA8OY1n2OcJFbbE03+bMydVANSBrNGo8hkzhXxxU=",
|
||||
"owner": "rafaelmardojai",
|
||||
"repo": "firefox-gnome-theme",
|
||||
"rev": "a95be99b28fdf1c33f1399a387eb594cf9bffc99",
|
||||
"rev": "8171c0578feb835ce66d49edba7429f46b7ac3f6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -134,11 +156,11 @@
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1668681692,
|
||||
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
|
||||
"lastModified": 1696426674,
|
||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
|
||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -147,6 +169,156 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-compat_3": {
|
||||
"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/1.tar.gz"
|
||||
}
|
||||
},
|
||||
"flake-compat_4": {
|
||||
"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": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1715865404,
|
||||
"narHash": "sha256-/GJvTdTpuDjNn84j82cU6bXztE0MSkdnTWClUCRub78=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "8dc45382d5206bd292f9c2768b8058a8fd8311d9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-root": {
|
||||
"locked": {
|
||||
"lastModified": 1713493429,
|
||||
"narHash": "sha256-ztz8JQkI08tjKnsTpfLqzWoKFQF4JGu2LRz8bkdnYUk=",
|
||||
"owner": "srid",
|
||||
"repo": "flake-root",
|
||||
"rev": "bc748b93b86ee76e2032eecda33440ceb2532fcd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "srid",
|
||||
"repo": "flake-root",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1701680307,
|
||||
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"git-hooks": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat_4",
|
||||
"gitignore": "gitignore",
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-stable": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1716213921,
|
||||
"narHash": "sha256-xrsYFST8ij4QWaV6HEokCUNIZLjjLP1bYC60K8XiBVA=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "0e8fcc54b842ad8428c9e705cb5994eaf05c26a0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"gitea-github-theme": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1715978309,
|
||||
"narHash": "sha256-L9FYLtrK8Lm/wBeafb6eTRL5l2BYov6X6nJOL6rYZvY=",
|
||||
"ref": "main",
|
||||
"rev": "1b61f3f5cb38a1198d0a525d059a5a1905f2cfca",
|
||||
"revCount": 96,
|
||||
"type": "git",
|
||||
"url": "ssh://git@git.vimium.com/jordan/gitea-github-theme.git"
|
||||
},
|
||||
"original": {
|
||||
"ref": "main",
|
||||
"type": "git",
|
||||
"url": "ssh://git@git.vimium.com/jordan/gitea-github-theme.git"
|
||||
}
|
||||
},
|
||||
"gitignore": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"git-hooks",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1709087332,
|
||||
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hercules-ci",
|
||||
"repo": "gitignore.nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@ -175,27 +347,69 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1712386041,
|
||||
"narHash": "sha256-dA82pOMQNnCJMAsPG7AXG35VmCSMZsJHTFlTHizpKWQ=",
|
||||
"lastModified": 1716736833,
|
||||
"narHash": "sha256-rNObca6dm7Qs524O4st8VJH6pZ/Xe1gxl+Rx6mcWYo0=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "d6bb9f934f2870e5cbc5b94c79e9db22246141ff",
|
||||
"rev": "a631666f5ec18271e86a5cde998cba68c33d9ac6",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-23.11",
|
||||
"ref": "release-24.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager_3": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1717052710,
|
||||
"narHash": "sha256-LRhOxzXmOza5SymhOgnEzA8EAQp+94kkeUYWKKpLJ/U=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "29c69d9a466e41d46fd3a7a9d0591ef9c113c2ae",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-darwin": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1716993688,
|
||||
"narHash": "sha256-vo5k2wQekfeoq/2aleQkBN41dQiQHNTniZeVONWiWLs=",
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"rev": "c0d5b8c54d6828516c97f6be9f2d00c63a363df4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "lnl7",
|
||||
"repo": "nix-darwin",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1712909959,
|
||||
"narHash": "sha256-7/5ubuwdEbQ7Z+Vqd4u0mM5L2VMNDsBh54visp27CtQ=",
|
||||
"lastModified": 1716987116,
|
||||
"narHash": "sha256-uuEkErFVsFdg2K0cKbNQ9JlFSAm/xYqPr4rbPLI91Y8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "f58b25254be441cd2a9b4b444ed83f1e51244f1f",
|
||||
"rev": "8251761f93d6f5b91cee45ac09edb6e382641009",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -211,21 +425,18 @@
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"nixpkgs-23_05": "nixpkgs-23_05",
|
||||
"nixpkgs-23_11": "nixpkgs-23_11",
|
||||
"utils": "utils_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1706219574,
|
||||
"narHash": "sha256-qO+8UErk+bXCq2ybHU4GzXG4Ejk4Tk0rnnTPNyypW4g=",
|
||||
"lastModified": 1714720456,
|
||||
"narHash": "sha256-e0WFe1BHqX23ADpGBc4ZRu38Mg+GICCZCqyS6EWCbHc=",
|
||||
"owner": "simple-nixos-mailserver",
|
||||
"repo": "nixos-mailserver",
|
||||
"rev": "e47f3719f1db3e0961a4358d4cb234a0acaa7baf",
|
||||
"rev": "41059fc548088e49e3ddb3a2b4faeb5de018e60f",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"owner": "simple-nixos-mailserver",
|
||||
"ref": "nixos-23.11",
|
||||
"repo": "nixos-mailserver",
|
||||
"type": "gitlab"
|
||||
}
|
||||
@ -246,43 +457,13 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-23_05": {
|
||||
"locked": {
|
||||
"lastModified": 1704290814,
|
||||
"narHash": "sha256-LWvKHp7kGxk/GEtlrGYV68qIvPHkU9iToomNFGagixU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "70bdadeb94ffc8806c0570eb5c2695ad29f0e421",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixos-23.05",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs-23_11": {
|
||||
"locked": {
|
||||
"lastModified": 1706098335,
|
||||
"narHash": "sha256-r3dWjT8P9/Ah5m5ul4WqIWD8muj5F+/gbCdjiNVBKmU=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a77ab169a83a4175169d78684ddd2e54486ac651",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixos-23.11",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1712791164,
|
||||
"narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=",
|
||||
"lastModified": 1716948383,
|
||||
"narHash": "sha256-SzDKxseEcHR5KzPXLwsemyTR/kaM9whxeiJohbL04rs=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5",
|
||||
"rev": "ad57eef4ef0659193044870c731987a6df5cf56b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -309,30 +490,60 @@
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1712867921,
|
||||
"narHash": "sha256-edTFV4KldkCMdViC/rmpJa7oLIU8SE/S35lh/ukC7bg=",
|
||||
"lastModified": 1717144377,
|
||||
"narHash": "sha256-F/TKWETwB5RaR8owkPPi+SPJh83AQsm6KrQAlJ8v/uA=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "51651a540816273b67bc4dedea2d37d116c5f7fe",
|
||||
"rev": "805a384895c696f802a9bf5bf4720f37385df547",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixos-23.11",
|
||||
"ref": "nixos-24.05",
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"nixvim": {
|
||||
"inputs": {
|
||||
"devshell": "devshell",
|
||||
"flake-compat": "flake-compat_3",
|
||||
"flake-parts": "flake-parts",
|
||||
"flake-root": "flake-root",
|
||||
"git-hooks": "git-hooks",
|
||||
"home-manager": "home-manager_3",
|
||||
"nix-darwin": "nix-darwin",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"treefmt-nix": "treefmt-nix"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1717188043,
|
||||
"narHash": "sha256-qg8Tq7OcKtc0BS4RVUYrMZ+KofgMv6DiXOnqz7TN8CA=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "1bbd58b6b293840716355e63fb3d5aa5af00d389",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"agenix": "agenix",
|
||||
"deploy-rs": "deploy-rs",
|
||||
"disko": "disko",
|
||||
"firefox-gnome-theme": "firefox-gnome-theme",
|
||||
"gitea-github-theme": "gitea-github-theme",
|
||||
"home-manager": "home-manager_2",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixos-mailserver": "nixos-mailserver",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||
"nixvim": "nixvim",
|
||||
"secrets": "secrets",
|
||||
"thunderbird-gnome-theme": "thunderbird-gnome-theme"
|
||||
}
|
||||
@ -340,11 +551,11 @@
|
||||
"secrets": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1712006510,
|
||||
"narHash": "sha256-JQ3ZcSwIB6d3gDcx/nZCUlSfZGwaI55WNmD9mK2uTPA=",
|
||||
"lastModified": 1716018239,
|
||||
"narHash": "sha256-Ai13Sbj4DzuQSIrX2rjO0PG6PPpmvfwbCpTxX0kB7FI=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "f350d35d7651c415fa4c0d6a7cff378ba5650f93",
|
||||
"revCount": 17,
|
||||
"rev": "c2adb575ca3a816287c7d8f3c23cde6dfd316e6f",
|
||||
"revCount": 19,
|
||||
"type": "git",
|
||||
"url": "ssh://git@git.vimium.com/jordan/nix-secrets.git"
|
||||
},
|
||||
@ -383,6 +594,36 @@
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"thunderbird-gnome-theme": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
@ -399,6 +640,27 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"treefmt-nix": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixvim",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1715940852,
|
||||
"narHash": "sha256-wJqHMg/K6X3JGAE9YLM0LsuKrKb4XiBeVaoeMNlReZg=",
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"rev": "2fba33a182602b9d49f0b2440513e5ee091d838b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "treefmt-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_2"
|
||||
@ -418,12 +680,15 @@
|
||||
}
|
||||
},
|
||||
"utils_2": {
|
||||
"inputs": {
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1605370193,
|
||||
"narHash": "sha256-YyMTf3URDL/otKdKgtoMChu4vfVL3vCMkRqpGifhUn0=",
|
||||
"lastModified": 1709126324,
|
||||
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "5021eac20303a61fafe17224c087f5519baed54d",
|
||||
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
14
flake.nix
14
flake.nix
@ -2,7 +2,7 @@
|
||||
description = "NixOS system configuration";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "nixpkgs/nixos-23.11";
|
||||
nixpkgs.url = "nixpkgs/nixos-24.05";
|
||||
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
|
||||
# nixpkgs-master.url = "nixpkgs";
|
||||
agenix.url = "github:ryantm/agenix";
|
||||
@ -12,16 +12,24 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-23.11";
|
||||
url = "github:nix-community/home-manager/release-24.05";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
firefox-gnome-theme = {
|
||||
url = "github:rafaelmardojai/firefox-gnome-theme";
|
||||
flake = false;
|
||||
};
|
||||
gitea-github-theme = {
|
||||
url = "git+ssh://git@git.vimium.com/jordan/gitea-github-theme.git?ref=main";
|
||||
flake = false;
|
||||
};
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware";
|
||||
nixos-mailserver = {
|
||||
url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-23.11";
|
||||
url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nixvim = {
|
||||
url = "github:nix-community/nixvim";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
secrets = {
|
||||
|
@ -48,7 +48,6 @@
|
||||
min-free = 128000000;
|
||||
max-free = 1000000000;
|
||||
fallback = true;
|
||||
allowed-users = [ "@wheel" ];
|
||||
trusted-users = [ "@wheel" ];
|
||||
auto-optimise-store = true;
|
||||
substituters = [
|
||||
|
@ -21,7 +21,17 @@
|
||||
fileSystems."/mnt/library" = {
|
||||
device = "library.mesh.vimium.net:/mnt/library";
|
||||
fsType = "nfs";
|
||||
options = [ "nfsvers=4.2" "soft" "nocto" "ro" "x-systemd.automount" "noauto" ];
|
||||
options = [
|
||||
"nfsvers=4.2"
|
||||
"bg"
|
||||
"soft"
|
||||
"timeo=20"
|
||||
"retry=5"
|
||||
"nocto"
|
||||
"ro"
|
||||
"x-systemd.automount"
|
||||
"noauto"
|
||||
];
|
||||
};
|
||||
|
||||
system.autoUpgrade = {
|
||||
@ -30,8 +40,35 @@
|
||||
randomizedDelaySec = "10min";
|
||||
};
|
||||
|
||||
systemd.services.NetworkManager-wait-online.enable = false;
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
noto-fonts
|
||||
(nerdfonts.override { fonts = [ "BigBlueTerminal" "ComicShannsMono" "Terminus" "UbuntuMono" ]; })
|
||||
];
|
||||
|
||||
modules = {
|
||||
desktop.gnome.enable = true;
|
||||
networking.tailscale.enable = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
bind
|
||||
bmon
|
||||
fd
|
||||
ffmpeg
|
||||
iotop
|
||||
unstable.nix-du
|
||||
# unstable.nix-melt
|
||||
unstable.nix-tree
|
||||
unstable.nix-visualize
|
||||
ripgrep
|
||||
rsync
|
||||
tcpdump
|
||||
tokei
|
||||
tree
|
||||
wl-clipboard
|
||||
];
|
||||
|
||||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
}
|
||||
|
102
hosts/hypnos/0001-Add-apple_set_os-EFI-boot-service.patch
Normal file
102
hosts/hypnos/0001-Add-apple_set_os-EFI-boot-service.patch
Normal file
@ -0,0 +1,102 @@
|
||||
From d310ddee0fb8e7a5a8b89668c6cb8f9dc863ce94 Mon Sep 17 00:00:00 2001
|
||||
From: Jordan Holt <jordan@vimium.com>
|
||||
Date: Sun, 28 Apr 2024 15:59:52 +0100
|
||||
Subject: [PATCH] Add apple_set_os EFI boot service
|
||||
|
||||
---
|
||||
drivers/firmware/efi/libstub/x86-stub.c | 59 +++++++++++++++++++++++++
|
||||
include/linux/efi.h | 1 +
|
||||
2 files changed, 60 insertions(+)
|
||||
|
||||
diff --git a/drivers/firmware/efi/libstub/x86-stub.c b/drivers/firmware/efi/libstub/x86-stub.c
|
||||
index d5a8182cf..be722c43a 100644
|
||||
--- a/drivers/firmware/efi/libstub/x86-stub.c
|
||||
+++ b/drivers/firmware/efi/libstub/x86-stub.c
|
||||
@@ -449,6 +449,63 @@ static void setup_graphics(struct boot_params *boot_params)
|
||||
}
|
||||
}
|
||||
|
||||
+typedef struct {
|
||||
+ u64 version;
|
||||
+ void (*set_os_version) (const char *os_version);
|
||||
+ void (*set_os_vendor) (const char *os_vendor);
|
||||
+} apple_set_os_interface_t;
|
||||
+
|
||||
+static efi_status_t apple_set_os()
|
||||
+{
|
||||
+ apple_set_os_interface_t *set_os;
|
||||
+ efi_guid_t set_os_guid = APPLE_SET_OS_PROTOCOL_GUID;
|
||||
+ efi_status_t status;
|
||||
+ void **handles;
|
||||
+ unsigned long i, nr_handles, size = 0;
|
||||
+
|
||||
+ status = efi_bs_call(locate_handle, EFI_LOCATE_BY_PROTOCOL,
|
||||
+ &set_os_guid, NULL, &size, handles);
|
||||
+
|
||||
+ if (status == EFI_BUFFER_TOO_SMALL) {
|
||||
+ status = efi_bs_call(allocate_pool, EFI_LOADER_DATA,
|
||||
+ size, &handles);
|
||||
+
|
||||
+ if (status != EFI_SUCCESS)
|
||||
+ return status;
|
||||
+
|
||||
+ status = efi_bs_call(locate_handle, EFI_LOCATE_BY_PROTOCOL,
|
||||
+ &set_os_guid, NULL, &size, handles);
|
||||
+ }
|
||||
+
|
||||
+ if (status != EFI_SUCCESS)
|
||||
+ goto free_handle;
|
||||
+
|
||||
+ nr_handles = size / sizeof(void *);
|
||||
+ for (i = 0; i < nr_handles; i++) {
|
||||
+ void *h = handles[i];
|
||||
+
|
||||
+ status = efi_bs_call(handle_protocol, h,
|
||||
+ &set_os_guid, &set_os);
|
||||
+
|
||||
+ if (status != EFI_SUCCESS || !set_os)
|
||||
+ continue;
|
||||
+
|
||||
+ if (set_os->version > 0) {
|
||||
+ efi_bs_call((unsigned long)set_os->set_os_version,
|
||||
+ "Mac OS X 10.9");
|
||||
+ }
|
||||
+
|
||||
+ if (set_os->version >= 2) {
|
||||
+ efi_bs_call((unsigned long)set_os->set_os_vendor,
|
||||
+ "Apple Inc.");
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+free_handle:
|
||||
+ efi_bs_call(free_pool, uga_handle);
|
||||
+
|
||||
+ return status;
|
||||
+}
|
||||
|
||||
static void __noreturn efi_exit(efi_handle_t handle, efi_status_t status)
|
||||
{
|
||||
@@ -951,6 +1008,8 @@ void __noreturn efi_stub_entry(efi_handle_t handle,
|
||||
|
||||
setup_unaccepted_memory();
|
||||
|
||||
+ apple_set_os();
|
||||
+
|
||||
status = exit_boot(boot_params, handle);
|
||||
if (status != EFI_SUCCESS) {
|
||||
efi_err("exit_boot() failed!\n");
|
||||
diff --git a/include/linux/efi.h b/include/linux/efi.h
|
||||
index d59b0947f..81158014f 100644
|
||||
--- a/include/linux/efi.h
|
||||
+++ b/include/linux/efi.h
|
||||
@@ -385,6 +385,7 @@ void efi_native_runtime_setup(void);
|
||||
#define EFI_MEMORY_ATTRIBUTES_TABLE_GUID EFI_GUID(0xdcfa911d, 0x26eb, 0x469f, 0xa2, 0x20, 0x38, 0xb7, 0xdc, 0x46, 0x12, 0x20)
|
||||
#define EFI_CONSOLE_OUT_DEVICE_GUID EFI_GUID(0xd3b36f2c, 0xd551, 0x11d4, 0x9a, 0x46, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d)
|
||||
#define APPLE_PROPERTIES_PROTOCOL_GUID EFI_GUID(0x91bd12fe, 0xf6c3, 0x44fb, 0xa5, 0xb7, 0x51, 0x22, 0xab, 0x30, 0x3a, 0xe0)
|
||||
+#define APPLE_SET_OS_PROTOCOL_GUID EFI_GUID(0xc5c5da95, 0x7d5c, 0x45e6, 0xb2, 0xf1, 0x3f, 0xd5, 0x2b, 0xb1, 0x00, 0x77)
|
||||
#define EFI_TCG2_PROTOCOL_GUID EFI_GUID(0x607f766c, 0x7455, 0x42be, 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f)
|
||||
#define EFI_TCG2_FINAL_EVENTS_TABLE_GUID EFI_GUID(0x1e2ed096, 0x30e2, 0x4254, 0xbd, 0x89, 0x86, 0x3b, 0xbe, 0xf8, 0x23, 0x25)
|
||||
#define EFI_LOAD_FILE_PROTOCOL_GUID EFI_GUID(0x56ec3091, 0x954c, 0x11d2, 0x8e, 0x3f, 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b)
|
||||
--
|
||||
2.42.0
|
||||
|
@ -19,6 +19,8 @@
|
||||
browsers = {
|
||||
firefox.enable = true;
|
||||
};
|
||||
gnome.enable = lib.mkForce false;
|
||||
kde.enable = true;
|
||||
media.recording = {
|
||||
audio.enable = true;
|
||||
};
|
||||
|
@ -7,8 +7,13 @@
|
||||
|
||||
boot = {
|
||||
initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
|
||||
initrd.kernelModules = [ ];
|
||||
kernelModules = [ "applesmc" "kvm-intel" "wl" ];
|
||||
kernelPatches = [
|
||||
{
|
||||
name = "spoof-mac-os-x";
|
||||
patch = ./0001-Add-apple_set_os-EFI-boot-service.patch;
|
||||
}
|
||||
];
|
||||
extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
|
||||
};
|
||||
|
||||
@ -18,10 +23,19 @@
|
||||
|
||||
hardware = {
|
||||
cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
nvidia = {
|
||||
modesetting.enable = true;
|
||||
powerManagement.enable = true;
|
||||
opengl = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
intel-vaapi-driver
|
||||
intel-media-driver
|
||||
libvdpau-va-gl
|
||||
];
|
||||
driSupport = true;
|
||||
};
|
||||
};
|
||||
|
||||
environment.variables = {
|
||||
VDPAU_DRIVER = "va_gl";
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -21,10 +21,6 @@ with lib.my;
|
||||
allowedTCPPorts = [
|
||||
22 # SSH
|
||||
];
|
||||
interfaces."podman+" = {
|
||||
allowedUDPPorts = [ 53 ];
|
||||
allowedTCPPorts = [ 53 ];
|
||||
};
|
||||
};
|
||||
networkmanager.enable = true;
|
||||
};
|
||||
@ -153,6 +149,7 @@ with lib.my;
|
||||
services.jellyfin.enable = true;
|
||||
|
||||
modules = {
|
||||
podman.enable = true;
|
||||
security = {
|
||||
gpg.enable = true;
|
||||
};
|
||||
|
@ -30,12 +30,6 @@
|
||||
|
||||
services.openssh.settings.PermitRootLogin = lib.mkForce "prohibit-password";
|
||||
|
||||
security.acme.defaults = {
|
||||
email = "hostmaster@vimium.com";
|
||||
group = "nginx";
|
||||
webroot = "/var/lib/acme/acme-challenge";
|
||||
};
|
||||
|
||||
modules = {
|
||||
services = {
|
||||
borgmatic = {
|
||||
|
@ -47,7 +47,8 @@
|
||||
browsers = {
|
||||
firefox.enable = true;
|
||||
};
|
||||
gaming.emulators = {
|
||||
gaming = {
|
||||
emulators = {
|
||||
gamecube.enable = true;
|
||||
ps2.enable = true;
|
||||
ps3.enable = true;
|
||||
@ -55,6 +56,8 @@
|
||||
wii.enable = true;
|
||||
xbox.enable = true;
|
||||
};
|
||||
lutris.enable = true;
|
||||
};
|
||||
media.graphics = {
|
||||
modeling.enable = true;
|
||||
raster.enable = true;
|
||||
@ -81,9 +84,16 @@
|
||||
enable = true;
|
||||
directories = [
|
||||
"/home/jordan/Documents"
|
||||
"/home/jordan/Downloads"
|
||||
"/home/jordan/Music"
|
||||
"/home/jordan/Pictures"
|
||||
"/home/jordan/projects"
|
||||
"/home/jordan/Videos"
|
||||
"/home/jordan/.mozilla"
|
||||
];
|
||||
repoPath = "ssh://iqwu22oq@iqwu22oq.repo.borgbase.com/./repo";
|
||||
};
|
||||
gitea-runner.enable = true;
|
||||
};
|
||||
shell = {
|
||||
git.enable = true;
|
||||
|
@ -7,8 +7,17 @@
|
||||
|
||||
documentation.enable = false;
|
||||
|
||||
fonts.fontconfig.enable = false;
|
||||
|
||||
security = {
|
||||
acme.acceptTerms = true;
|
||||
acme = {
|
||||
acceptTerms = true;
|
||||
defaults = {
|
||||
email = "hostmaster@vimium.com";
|
||||
group = "nginx";
|
||||
webroot = "/var/lib/acme/acme-challenge";
|
||||
};
|
||||
};
|
||||
auditd.enable = true;
|
||||
audit = {
|
||||
enable = true;
|
||||
@ -18,6 +27,33 @@
|
||||
};
|
||||
};
|
||||
|
||||
systemd = {
|
||||
enableEmergencyMode = false;
|
||||
|
||||
sleep.extraConfig = ''
|
||||
AllowSuspend=no
|
||||
AllowHibernation=no
|
||||
'';
|
||||
|
||||
watchdog = {
|
||||
runtimeTime = "20s";
|
||||
rebootTime = "30s";
|
||||
};
|
||||
};
|
||||
|
||||
services.fail2ban = {
|
||||
enable = true;
|
||||
bantime = "1h";
|
||||
bantime-increment = {
|
||||
enable = true;
|
||||
maxtime = "24h";
|
||||
rndtime = "7m";
|
||||
};
|
||||
ignoreIP = [
|
||||
"100.64.0.0/10"
|
||||
];
|
||||
};
|
||||
|
||||
modules.networking.tailscale = {
|
||||
enable = true;
|
||||
restrictSSH = false;
|
||||
|
@ -40,12 +40,6 @@
|
||||
|
||||
services.openssh.settings.PermitRootLogin = lib.mkForce "prohibit-password";
|
||||
|
||||
security.acme.defaults = {
|
||||
email = "hostmaster@vimium.com";
|
||||
group = "nginx";
|
||||
webroot = "/var/lib/acme/acme-challenge";
|
||||
};
|
||||
|
||||
modules = {
|
||||
services = {
|
||||
borgmatic = {
|
||||
|
@ -1,7 +1,10 @@
|
||||
{
|
||||
imports = [
|
||||
./options.nix
|
||||
./podman.nix
|
||||
./desktop/gnome.nix
|
||||
./desktop/hyprland.nix
|
||||
./desktop/kde.nix
|
||||
./desktop/mimeapps.nix
|
||||
./desktop/apps/qbittorrent.nix
|
||||
./desktop/apps/slack.nix
|
||||
@ -31,8 +34,10 @@
|
||||
./security/gpg.nix
|
||||
./security/pass.nix
|
||||
./services/borgmatic
|
||||
./services/chrony
|
||||
./services/coturn
|
||||
./services/gitea
|
||||
./services/gitea-runner
|
||||
./services/headscale
|
||||
./services/mail
|
||||
./services/matrix-synapse
|
||||
|
@ -10,8 +10,13 @@ in {
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
user.packages = with pkgs; [
|
||||
lutris
|
||||
environment.systemPackages = with pkgs; [
|
||||
(lutris.override {
|
||||
extraPkgs = pkgs: [
|
||||
winePackages.staging
|
||||
wine64Packages.staging
|
||||
];
|
||||
})
|
||||
vulkan-loader
|
||||
vulkan-tools
|
||||
];
|
||||
|
@ -100,8 +100,8 @@ in {
|
||||
window-gap = 8;
|
||||
};
|
||||
"org/gnome/desktop/background" = {
|
||||
picture-uri = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/adwaita-l.jpg";
|
||||
picture-uri-dark = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/adwaita-d.jpg";
|
||||
picture-uri = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/adwaita-l.jxl";
|
||||
picture-uri-dark = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/adwaita-d.jxl";
|
||||
};
|
||||
"org/gnome/desktop/peripherals/touchpad" = {
|
||||
tap-to-click = true;
|
||||
@ -144,8 +144,8 @@ in {
|
||||
experimental-features = [ "scale-monitor-framebuffer" ];
|
||||
};
|
||||
"org/gnome/desktop/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
enable-hot-corners = false;
|
||||
icon-theme = "MoreWaita";
|
||||
monospace-font-name = "UbuntuMono Nerd Font 11";
|
||||
};
|
||||
"org/gnome/desktop/wm/keybindings" = {
|
||||
@ -157,11 +157,6 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
fonts.packages = with pkgs; [
|
||||
noto-fonts
|
||||
(nerdfonts.override { fonts = [ "BigBlueTerminal" "ComicShannsMono" "UbuntuMono" ]; })
|
||||
];
|
||||
|
||||
user.packages = with pkgs; [
|
||||
authenticator
|
||||
# bottles
|
||||
@ -186,10 +181,6 @@ in {
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
adw-gtk3
|
||||
bind
|
||||
bmon
|
||||
fd
|
||||
ffmpeg
|
||||
gnome.gnome-boxes
|
||||
gnomeExtensions.another-window-session-manager
|
||||
# gnomeExtensions.bifocals
|
||||
@ -197,7 +188,7 @@ in {
|
||||
gnomeExtensions.browser-tabs
|
||||
gnomeExtensions.burn-my-windows
|
||||
gnomeExtensions.desktop-cube
|
||||
gnomeExtensions.desktop-zoom
|
||||
# gnomeExtensions.desktop-zoom
|
||||
gnomeExtensions.espresso
|
||||
gnome44Extensions."flypie@schneegans.github.com"
|
||||
# gnomeExtensions.forge
|
||||
@ -220,19 +211,11 @@ in {
|
||||
# gnomeExtensions.window-is-ready-remover
|
||||
# gnomeExtensions.worksets
|
||||
# gnomeExtensions.workspace-matrix
|
||||
iotop
|
||||
unstable.morewaita-icon-theme
|
||||
unstable.nix-tree
|
||||
ripgrep
|
||||
rsync
|
||||
tcpdump
|
||||
tokei
|
||||
tree
|
||||
wl-clipboard
|
||||
] ++ (if config.virtualisation.podman.enable then [
|
||||
pods
|
||||
] else []);
|
||||
|
||||
home.services.gpg-agent.pinentryFlavor = "gnome3";
|
||||
home.services.gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
||||
};
|
||||
}
|
||||
|
27
modules/desktop/hyprland.nix
Normal file
27
modules/desktop/hyprland.nix
Normal file
@ -0,0 +1,27 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let cfg = config.modules.desktop.hyprland;
|
||||
in {
|
||||
options.modules.desktop.hyprland = {
|
||||
enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.hyprland.enable = true;
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
user.packages = with pkgs; [
|
||||
mpv
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
adw-gtk3
|
||||
];
|
||||
|
||||
home.services.gpg-agent.pinentryPackage = pkgs.pinentry-gnome3;
|
||||
};
|
||||
}
|
35
modules/desktop/kde.nix
Normal file
35
modules/desktop/kde.nix
Normal file
@ -0,0 +1,35 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let cfg = config.modules.desktop.kde;
|
||||
in {
|
||||
options.modules.desktop.kde = {
|
||||
enable = lib.mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.xserver = {
|
||||
enable = true;
|
||||
displayManager.sddm = {
|
||||
enable = true;
|
||||
wayland.enable = true;
|
||||
};
|
||||
desktopManager.plasma5.enable = true;
|
||||
};
|
||||
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
user.packages = with pkgs; [
|
||||
kmail
|
||||
mpv
|
||||
];
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
adw-gtk3
|
||||
];
|
||||
|
||||
home.services.gpg-agent.pinentryPackage = pkgs.pinentry-qt;
|
||||
};
|
||||
}
|
@ -11,7 +11,10 @@ in {
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
user.packages = with pkgs; [
|
||||
libreoffice
|
||||
(if config.modules.desktop.kde.enable == true then libreoffice-qt else libreoffice)
|
||||
hunspell
|
||||
hunspellDicts.en-gb-large
|
||||
hunspellDicts.en-us-large
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -11,15 +11,129 @@ in {
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
user.packages = with pkgs.unstable; [
|
||||
lunarvim
|
||||
];
|
||||
home.programs.nixvim = {
|
||||
enable = true;
|
||||
defaultEditor = true;
|
||||
|
||||
env.EDITOR = "lvim";
|
||||
viAlias = true;
|
||||
vimAlias = true;
|
||||
|
||||
environment.shellAliases = {
|
||||
vim = "lvim";
|
||||
v = "lvim";
|
||||
options = {
|
||||
number = true;
|
||||
tabstop = 2;
|
||||
shiftwidth = 2;
|
||||
expandtab = true;
|
||||
foldlevel = 99;
|
||||
splitbelow = true;
|
||||
splitright = true;
|
||||
undofile = true;
|
||||
updatetime = 100;
|
||||
list = true;
|
||||
};
|
||||
|
||||
globals = {
|
||||
mapleader = ",";
|
||||
maplocalleader = ",";
|
||||
};
|
||||
|
||||
clipboard = {
|
||||
register = "unnamedplus";
|
||||
|
||||
providers.wl-copy.enable = true;
|
||||
};
|
||||
|
||||
plugins.comment.enable = true;
|
||||
|
||||
plugins.hmts.enable = true;
|
||||
|
||||
plugins.lightline.enable = true;
|
||||
|
||||
plugins.luasnip.enable = true;
|
||||
|
||||
plugins.lsp = {
|
||||
enable = true;
|
||||
servers = {
|
||||
bashls.enable = true;
|
||||
ccls.enable = true;
|
||||
cssls.enable = true;
|
||||
eslint.enable = true;
|
||||
gopls.enable = true;
|
||||
html.enable = true;
|
||||
lua-ls.enable = true;
|
||||
pylsp.enable = true;
|
||||
nixd.enable = true;
|
||||
rust-analyzer = {
|
||||
enable = true;
|
||||
installCargo = true;
|
||||
installRustc = true;
|
||||
};
|
||||
tsserver.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
plugins.nvim-autopairs.enable = true;
|
||||
|
||||
plugins.cmp = {
|
||||
enable = true;
|
||||
autoEnableSources = true;
|
||||
settings = {
|
||||
sources = [
|
||||
{ name = "nvim_lsp"; }
|
||||
{ name = "path"; }
|
||||
{ name = "buffer"; }
|
||||
];
|
||||
mapping = {
|
||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
||||
"<S-Tab>" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})";
|
||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
plugins.telescope = {
|
||||
enable = true;
|
||||
keymaps = {
|
||||
"<leader>ff" = "find_files";
|
||||
"<leader>fg" = "live_grep";
|
||||
"<leader>b" = "buffers";
|
||||
"<leader>fh" = "help_tags";
|
||||
"<C-p>" = "git_files";
|
||||
"<C-f>" = "live_grep";
|
||||
};
|
||||
};
|
||||
|
||||
plugins.treesitter = {
|
||||
enable = true;
|
||||
|
||||
nixvimInjections = true;
|
||||
|
||||
folding = true;
|
||||
indent = true;
|
||||
};
|
||||
|
||||
plugins.treesitter-refactor = {
|
||||
enable = true;
|
||||
highlightDefinitions = {
|
||||
enable = true;
|
||||
clearOnCursorMove = false;
|
||||
};
|
||||
};
|
||||
|
||||
plugins.undotree.enable = true;
|
||||
|
||||
# plugins.gitsigns.enable = true;
|
||||
# plugins.gitgutter.enable = true;
|
||||
# plugins.goyo.enable = true;
|
||||
# plugins.fugitive.enable = true;
|
||||
# plugins.fzf-lua.enable = true;
|
||||
# plugins.neo-tree.enable = true;
|
||||
# plugins.none-ls.enable = true;
|
||||
# plugins.nvim-tree.enable = true;
|
||||
# plugins.oil.enable = true;
|
||||
# plugins.project-nvim.enable = true;
|
||||
# plugins.surround.enable = true;
|
||||
};
|
||||
|
||||
env.EDITOR = "nvim";
|
||||
};
|
||||
}
|
||||
|
@ -7,12 +7,12 @@ let
|
||||
patched = snd-usb-audio-module.overrideAttrs (prev: {
|
||||
patches = [ ./0001-Update-device-ID-for-PreSonus-1824c.patch ];
|
||||
});
|
||||
upmixConfig = ''
|
||||
stream.properties = {
|
||||
channelmix.upmix = true
|
||||
channelmix.upmix-method = psd
|
||||
}
|
||||
'';
|
||||
upmixConfig = {
|
||||
"stream.properties" = {
|
||||
"channelmix.upmix" = true;
|
||||
"channelmix.upmix-method" = "psd";
|
||||
};
|
||||
};
|
||||
in {
|
||||
options.modules.hardware.presonus-studio = {
|
||||
enable = lib.mkOption {
|
||||
@ -27,43 +27,62 @@ in {
|
||||
(patched)
|
||||
];
|
||||
|
||||
environment.etc = {
|
||||
"pipewire/pipewire.conf.d/10-network.conf".text = ''
|
||||
context.modules = [
|
||||
{
|
||||
name = libpipewire-module-rtp-session
|
||||
args = {
|
||||
stream.props = {
|
||||
node.name = "rtp-source"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
# Workaround for mainline module loading instead of patched module
|
||||
systemd.services.reload-snd-usb-audio = {
|
||||
description = "Reload snd_usb_audio kernel module";
|
||||
wantedBy = [ "sound.target" ];
|
||||
serviceConfig.Type = "oneshot";
|
||||
path = with pkgs; [
|
||||
kmod
|
||||
];
|
||||
script = ''
|
||||
# Only reload if device hasn't been initialised
|
||||
if ! cat /proc/asound/card*/usbmixer | grep -q "Mute Main Out Switch"; then
|
||||
rmmod snd_usb_audio
|
||||
insmod /run/booted-system/kernel-modules/lib/modules/$(uname -r)/extra/snd-usb-audio.ko.xz
|
||||
fi
|
||||
'';
|
||||
"pipewire/pipewire.conf.d/surround.conf".text = ''
|
||||
context.modules = [
|
||||
};
|
||||
|
||||
services.pipewire.extraConfig = {
|
||||
pipewire = {
|
||||
"10-network" = {
|
||||
"context.modules" = [
|
||||
{
|
||||
name = libpipewire-module-loopback
|
||||
args = {
|
||||
node.description = "Genelec 4.1 Surround"
|
||||
capture.props = {
|
||||
node.name = "Genelec_Speakers"
|
||||
media.class = "Audio/Sink"
|
||||
audio.position = [ FL FR SL SR LFE ]
|
||||
}
|
||||
playback.props = {
|
||||
node.name = "playback.Genelec_Speakers"
|
||||
audio.position = [ AUX0 AUX1 AUX3 AUX4 AUX5 ]
|
||||
target.object = "alsa_output.usb-PreSonus_Studio_1824c_SC4E21110775-00.multichannel-output"
|
||||
stream.dont-remix = true
|
||||
node.passive = true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
'';
|
||||
"pipewire/pipewire-pulse.conf.d/40-upmix.conf".text = upmixConfig;
|
||||
"pipewire/client-rt.conf.d/40-upmix.conf".text = upmixConfig;
|
||||
"name" = "libpipewire-module-rtp-session";
|
||||
"args" = {
|
||||
"stream.props" = {
|
||||
"node.name" = "rtp-source";
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
"surround" = {
|
||||
"context.modules" = [
|
||||
{
|
||||
"name" = "libpipewire-module-loopback";
|
||||
"args" = {
|
||||
"node.description" = "Genelec 4.1 Surround";
|
||||
"capture.props" = {
|
||||
"node.name" = "Genelec_Speakers";
|
||||
"media.class" = "Audio/Sink";
|
||||
"audio.position" = [ "FL" "FR" "SL" "SR" "LFE" ];
|
||||
};
|
||||
"playback.props" = {
|
||||
"node.name" = "playback.Genelec_Speakers";
|
||||
"audio.position" = [ "AUX0" "AUX1" "AUX3" "AUX4" "AUX5" ];
|
||||
"target.object" = "alsa_output.usb-PreSonus_Studio_1824c_SC4E21110775-00.multichannel-output";
|
||||
"stream.dont-remix" = true;
|
||||
"node.passive" = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
pipewire-pulse."40-upmix" = upmixConfig;
|
||||
client-rt."40-upmix" = upmixConfig;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
{ config, inputs, lib, pkgs, ... }:
|
||||
|
||||
let cfg = config.modules.networking.tailscale;
|
||||
let
|
||||
cfg = config.modules.networking.tailscale;
|
||||
headscale = "https://headscale.vimium.net";
|
||||
hostname = config.networking.hostName;
|
||||
in {
|
||||
options.modules.networking.tailscale = {
|
||||
enable = lib.mkOption {
|
||||
@ -14,8 +17,24 @@ in {
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.tailscale.enable = true;
|
||||
age.secrets."passwords/services/tailscale/${hostname}-authkey" = {
|
||||
file = "${inputs.secrets}/passwords/services/tailscale/${hostname}-authkey.age";
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.tailscale ];
|
||||
|
||||
services.tailscale = {
|
||||
enable = true;
|
||||
authKeyFile = config.age.secrets."passwords/services/tailscale/${hostname}-authkey".path;
|
||||
|
||||
extraUpFlags = [
|
||||
"--login-server"
|
||||
headscale
|
||||
];
|
||||
};
|
||||
|
||||
services.openssh.openFirewall = !cfg.restrictSSH;
|
||||
|
||||
networking.firewall = {
|
||||
checkReversePath = "loose";
|
||||
trustedInterfaces = [ "tailscale0" ];
|
||||
|
@ -66,6 +66,10 @@ with lib;
|
||||
};
|
||||
dconf.settings = mkAliasDefinitions options.dconf.settings;
|
||||
};
|
||||
|
||||
sharedModules = [
|
||||
inputs.nixvim.homeManagerModules.nixvim
|
||||
];
|
||||
};
|
||||
|
||||
users.users.${config.user.name} = mkAliasDefinitions options.user;
|
||||
|
45
modules/podman.nix
Normal file
45
modules/podman.nix
Normal file
@ -0,0 +1,45 @@
|
||||
{ pkgs, lib, config, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.modules.podman;
|
||||
in {
|
||||
options.modules.podman = {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
description = mdDoc "Enable podman on this host";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
virtualisation = {
|
||||
docker.enable = false;
|
||||
|
||||
podman = {
|
||||
enable = true;
|
||||
defaultNetwork.settings.dns_enabled = true;
|
||||
autoPrune = {
|
||||
enable = true;
|
||||
dates = "weekly";
|
||||
flags = [ "--all" ];
|
||||
};
|
||||
extraPackages = [ pkgs.zfs ];
|
||||
};
|
||||
|
||||
containers.storage.settings.storage = {
|
||||
driver = "zfs";
|
||||
graphroot = "/var/lib/containers/storage";
|
||||
runroot = "/run/containers/storage";
|
||||
};
|
||||
|
||||
oci-containers.backend = "podman";
|
||||
};
|
||||
|
||||
networking.firewall.interfaces."podman+" = {
|
||||
allowedUDPPorts = [ 53 ];
|
||||
allowedTCPPorts = [ 53 ];
|
||||
};
|
||||
};
|
||||
}
|
41
modules/services/chrony/default.nix
Normal file
41
modules/services/chrony/default.nix
Normal file
@ -0,0 +1,41 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.modules.services.chrony;
|
||||
in {
|
||||
options.modules.services.chrony = {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
description = "Enable chrony NTP deamon";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.chrony = {
|
||||
enable = true;
|
||||
|
||||
servers = [
|
||||
"uk.pool.ntp.org"
|
||||
"time.cloudflare.com"
|
||||
];
|
||||
|
||||
extraConfig = ''
|
||||
makestep 1.0 3
|
||||
|
||||
bindaddress 0.0.0.0
|
||||
port 123
|
||||
allow
|
||||
'';
|
||||
};
|
||||
|
||||
services.timesyncd.enable = mkForce false;
|
||||
|
||||
networking.firewall = {
|
||||
allowedUDPPorts = [ 123 ];
|
||||
allowedTCPPorts = [ 123 ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
226
modules/services/gitea-runner/default.nix
Normal file
226
modules/services/gitea-runner/default.nix
Normal file
@ -0,0 +1,226 @@
|
||||
{ pkgs, config, lib, inputs, ... }:
|
||||
|
||||
# Based on: https://git.clan.lol/clan/clan-infra/src/branch/main/modules/web01/gitea/actions-runner.nix
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.modules.services.gitea-runner;
|
||||
hostname = config.networking.hostName;
|
||||
giteaUrl = "https://git.vimium.com";
|
||||
|
||||
storeDepsBins = with pkgs; [
|
||||
coreutils
|
||||
findutils
|
||||
gnugrep
|
||||
gawk
|
||||
git
|
||||
nix
|
||||
nix-update
|
||||
bash
|
||||
jq
|
||||
nodejs
|
||||
];
|
||||
|
||||
storeDeps = pkgs.runCommand "store-deps" { } ''
|
||||
mkdir -p $out/bin
|
||||
for dir in ${toString storeDepsBins}; do
|
||||
for bin in "$dir"/bin/*; do
|
||||
ln -s "$bin" "$out/bin/$(basename "$bin")"
|
||||
done
|
||||
done
|
||||
|
||||
# Add SSL CA certs
|
||||
mkdir -p $out/etc/ssl/certs
|
||||
cp -a "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" $out/etc/ssl/certs/ca-bundle.crt
|
||||
'';
|
||||
in
|
||||
{
|
||||
options.modules.services.gitea-runner = {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
description = mdDoc "Enable a runner for Gitea Actions on this host";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
modules.podman.enable = true;
|
||||
|
||||
systemd.services = {
|
||||
gitea-runner-nix-image = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "podman.service" ];
|
||||
requires = [ "podman.service" ];
|
||||
path = [ config.virtualisation.podman.package pkgs.gnutar pkgs.shadow pkgs.getent ];
|
||||
script = ''
|
||||
set -eux -o pipefail
|
||||
mkdir -p etc/nix
|
||||
|
||||
# Create an unpriveleged user that we can use also without the run-as-user.sh script
|
||||
touch etc/passwd etc/group
|
||||
groupid=$(cut -d: -f3 < <(getent group nix-ci-user))
|
||||
userid=$(cut -d: -f3 < <(getent passwd nix-ci-user))
|
||||
groupadd --prefix $(pwd) --gid "$groupid" nix-ci-user
|
||||
emptypassword='$6$1ero.LwbisiU.h3D$GGmnmECbPotJoPQ5eoSTD6tTjKnSWZcjHoVTkxFLZP17W9hRi/XkmCiAMOfWruUwy8gMjINrBMNODc7cYEo4K.'
|
||||
useradd --prefix $(pwd) -p "$emptypassword" -m -d /tmp -u "$userid" -g "$groupid" -G nix-ci-user nix-ci-user
|
||||
|
||||
cat <<NIX_CONFIG > etc/nix/nix.conf
|
||||
accept-flake-config = true
|
||||
experimental-features = nix-command flakes
|
||||
NIX_CONFIG
|
||||
|
||||
cat <<NSSWITCH > etc/nsswitch.conf
|
||||
passwd: files mymachines systemd
|
||||
group: files mymachines systemd
|
||||
shadow: files
|
||||
|
||||
hosts: files mymachines dns myhostname
|
||||
networks: files
|
||||
|
||||
ethers: files
|
||||
services: files
|
||||
protocols: files
|
||||
rpc: files
|
||||
NSSWITCH
|
||||
|
||||
# list the content as it will be imported into the container
|
||||
tar -cv . | tar -tvf -
|
||||
tar -cv . | podman import - gitea-runner-nix
|
||||
'';
|
||||
serviceConfig = {
|
||||
RuntimeDirectory = "gitea-runner-nix-image";
|
||||
WorkingDirectory = "/run/gitea-runner-nix-image";
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
};
|
||||
};
|
||||
|
||||
gitea-runner-nix = {
|
||||
after = [ "gitea-runner-nix-image.service" ];
|
||||
requires = [ "gitea-runner-nix-image.service" ];
|
||||
|
||||
serviceConfig = {
|
||||
# Hardening (may overlap with DynamicUser=)
|
||||
# The following options are only for optimizing output of systemd-analyze
|
||||
AmbientCapabilities = "";
|
||||
CapabilityBoundingSet = "";
|
||||
# ProtectClock= adds DeviceAllow=char-rtc r
|
||||
DeviceAllow = "";
|
||||
NoNewPrivileges = true;
|
||||
PrivateDevices = true;
|
||||
PrivateMounts = true;
|
||||
PrivateTmp = true;
|
||||
PrivateUsers = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectSystem = "strict";
|
||||
RemoveIPC = true;
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
UMask = "0066";
|
||||
ProtectProc = "invisible";
|
||||
SystemCallFilter = [
|
||||
"~@clock"
|
||||
"~@cpu-emulation"
|
||||
"~@module"
|
||||
"~@mount"
|
||||
"~@obsolete"
|
||||
"~@raw-io"
|
||||
"~@reboot"
|
||||
"~@swap"
|
||||
# needed by go?
|
||||
#"~@resources"
|
||||
"~@privileged"
|
||||
"~capset"
|
||||
"~setdomainname"
|
||||
"~sethostname"
|
||||
];
|
||||
RestrictAddressFamilies = [ "AF_INET" "AF_INET6" "AF_UNIX" "AF_NETLINK" ];
|
||||
|
||||
# Needs network access
|
||||
PrivateNetwork = false;
|
||||
# Cannot be true due to Node
|
||||
MemoryDenyWriteExecute = false;
|
||||
|
||||
# The more restrictive "pid" option makes `nix` commands in CI emit
|
||||
# "GC Warning: Couldn't read /proc/stat"
|
||||
# You may want to set this to "pid" if not using `nix` commands
|
||||
ProcSubset = "all";
|
||||
# Coverage programs for compiled code such as `cargo-tarpaulin` disable
|
||||
# ASLR (address space layout randomization) which requires the
|
||||
# `personality` syscall
|
||||
# You may want to set this to `true` if not using coverage tooling on
|
||||
# compiled code
|
||||
LockPersonality = false;
|
||||
|
||||
# Note that this has some interactions with the User setting; so you may
|
||||
# want to consult the systemd docs if using both.
|
||||
DynamicUser = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
users.users.nix-ci-user = {
|
||||
group = "nix-ci-user";
|
||||
description = "Used for running nix-based CI jobs";
|
||||
home = "/var/empty";
|
||||
isSystemUser = true;
|
||||
};
|
||||
users.groups.nix-ci-user = { };
|
||||
|
||||
age.secrets."files/services/gitea-runner/${hostname}-token" = {
|
||||
file = "${inputs.secrets}/files/services/gitea-runner/${hostname}-token.age";
|
||||
group = "podman";
|
||||
};
|
||||
|
||||
services.gitea-actions-runner.instances = {
|
||||
act = {
|
||||
enable = true;
|
||||
url = giteaUrl;
|
||||
name = "act-runner-${hostname}";
|
||||
|
||||
tokenFile = config.age.secrets."files/services/gitea-runner/${hostname}-token".path;
|
||||
settings = {
|
||||
cache.enabled = true;
|
||||
runner.capacity = 4;
|
||||
};
|
||||
|
||||
labels = [
|
||||
"debian-latest:docker://ghcr.io/catthehacker/ubuntu:act-latest"
|
||||
"ubuntu-latest:docker://ghcr.io/catthehacker/ubuntu:act-latest"
|
||||
];
|
||||
};
|
||||
nix = {
|
||||
enable = true;
|
||||
url = giteaUrl;
|
||||
name = "nix-runner-${hostname}";
|
||||
|
||||
tokenFile = config.age.secrets."files/services/gitea-runner/${hostname}-token".path;
|
||||
settings = {
|
||||
cache.enabled = true;
|
||||
container = {
|
||||
options = "-e NIX_BUILD_SHELL=/bin/bash -e PAGER=cat -e PATH=/bin -e SSL_CERT_FILE=/etc/ssl/certs/ca-bundle.crt --device /dev/kvm -v /nix:/nix -v ${storeDeps}/bin:/bin -v ${storeDeps}/etc/ssl:/etc/ssl --user nix-ci-user";
|
||||
network = "host";
|
||||
valid_volumes = [
|
||||
"/nix"
|
||||
"${storeDeps}/bin"
|
||||
"${storeDeps}/etc/ssl"
|
||||
];
|
||||
};
|
||||
runner.capacity = 4;
|
||||
};
|
||||
|
||||
labels = [
|
||||
"nix:docker://gitea-runner-nix"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
@ -39,6 +39,13 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${config.services.gitea.customDir}/public/assets/css' 0750 ${config.services.gitea.user} ${config.services.gitea.group} - -"
|
||||
"L+ '${config.services.gitea.customDir}/public/assets/css/theme-github.css' - - - - ${inputs.gitea-github-theme}/theme-github.css"
|
||||
"L+ '${config.services.gitea.customDir}/public/assets/css/theme-github-auto.css' - - - - ${inputs.gitea-github-theme}/theme-github-auto.css"
|
||||
"L+ '${config.services.gitea.customDir}/public/assets/css/theme-github-dark.css' - - - - ${inputs.gitea-github-theme}/theme-github-dark.css"
|
||||
];
|
||||
|
||||
services.gitea = rec {
|
||||
package = pkgs.unstable.gitea;
|
||||
enable = true;
|
||||
@ -57,19 +64,23 @@ in {
|
||||
};
|
||||
settings = {
|
||||
server = {
|
||||
DOMAIN = config.networking.domain;
|
||||
LANDING_PAGE = "explore";
|
||||
OFFLINE_MODE = true;
|
||||
PROTOCOL = "http+unix";
|
||||
SSH_USER = "git";
|
||||
SSH_DOMAIN = "git.vimium.com";
|
||||
SSH_PORT = lib.head config.services.openssh.ports;
|
||||
OFFLINE_MODE = true;
|
||||
PROTOCOL = "http+unix";
|
||||
DOMAIN = config.networking.domain;
|
||||
ROOT_URL = "https://git.vimium.com/";
|
||||
};
|
||||
service.DISABLE_REGISTRATION = true;
|
||||
session.COOKIE_SECURE = true;
|
||||
log.ROOT_PATH = "${stateDir}/log";
|
||||
log = {
|
||||
ROOT_PATH = "${stateDir}/log";
|
||||
DISABLE_ROUTER_LOG = true;
|
||||
};
|
||||
ui = {
|
||||
THEMES = "gitea,arc-green,github-dark,bthree-dark";
|
||||
THEMES = "gitea,arc-green,github,github-auto,github-dark";
|
||||
DEFAULT_THEME = "github-dark";
|
||||
};
|
||||
actions.ENABLED = true;
|
||||
|
@ -4,6 +4,7 @@ with lib;
|
||||
|
||||
let
|
||||
cfg = config.modules.services.headscale;
|
||||
fqdn = "headscale.vimium.net";
|
||||
in {
|
||||
options.modules.services.headscale = {
|
||||
enable = mkOption {
|
||||
@ -13,8 +14,27 @@ in {
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = [ pkgs.headscale ];
|
||||
|
||||
services.headscale = {
|
||||
enable = true;
|
||||
|
||||
port = 8080;
|
||||
|
||||
settings = {
|
||||
ip_prefixes = [
|
||||
"100.64.0.0/10"
|
||||
];
|
||||
server_url = "https://${fqdn}";
|
||||
dns_config = {
|
||||
base_domain = "vimium.net";
|
||||
};
|
||||
logtail.enabled = false;
|
||||
};
|
||||
};
|
||||
|
||||
services.nginx.virtualHosts = {
|
||||
"headscale.vimium.net" = {
|
||||
"${fqdn}" = {
|
||||
forceSSL = true;
|
||||
enableACME = true;
|
||||
locations."/" = {
|
||||
@ -23,21 +43,5 @@ in {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.headscale = {
|
||||
enable = true;
|
||||
port = 8080;
|
||||
settings = {
|
||||
server_url = "https://headscale.vimium.net";
|
||||
dns_config = {
|
||||
base_domain = "vimium.net";
|
||||
};
|
||||
logtail.enabled = false;
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
config.services.headscale.package
|
||||
];
|
||||
};
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ let
|
||||
"jdholt.com"
|
||||
"jordanholt.xyz"
|
||||
"vimium.co"
|
||||
"vimium.com"
|
||||
"vimium.co.uk"
|
||||
"vimium.info"
|
||||
"vimium.net"
|
||||
|
@ -48,7 +48,7 @@ in {
|
||||
PHOTOPRISM_APP_NAME = "Vimium Gallery";
|
||||
PHOTOPRISM_SITE_AUTHOR = "Vimium";
|
||||
PHOTOPRISM_SITE_TITLE = "Vimium Gallery";
|
||||
PHOTOPRISM_SITE_CAPTION = "See your photos and videos on gallery.vimium.com";
|
||||
PHOTOPRISM_SITE_CAPTION = "Vimium Gallery";
|
||||
PHOTOPRISM_DISABLE_TLS = "true";
|
||||
PHOTOPRISM_SPONSOR = "true";
|
||||
};
|
||||
|
@ -3,8 +3,8 @@ self: super:
|
||||
gnome = super.gnome.overrideScope' (gself: gsuper: {
|
||||
mutter = gsuper.mutter.overrideAttrs (oldAttrs: {
|
||||
src = super.fetchurl {
|
||||
url = "https://gitlab.gnome.org/Community/Ubuntu/mutter/-/archive/triple-buffering-v4-45/mutter-triple-buffering-v4-45.tar.gz";
|
||||
sha256 = "tN+zQ5brk+hc+louIipqPV/Bqft42ghKOzjZZMj5Q8A=";
|
||||
url = "https://gitlab.gnome.org/Community/Ubuntu/mutter/-/archive/triple-buffering-v4-46/mutter-triple-buffering-v4-46.tar.gz";
|
||||
sha256 = "Rdao3TR6wG7YcpoD+nFFiCaE+97G0MreBgwsQJa3GCE=";
|
||||
};
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user