mirror of
https://github.com/nmasur/dotfiles
synced 2025-07-06 22:30:13 +00:00
Compare commits
64 Commits
nixd
...
2b36140fbf
Author | SHA1 | Date | |
---|---|---|---|
2b36140fbf | |||
66207830ba | |||
0f7c15bf36 | |||
d31a083ed6 | |||
148839b0ab | |||
7714635fa0 | |||
ca6c275cd8 | |||
54a897abb6 | |||
45eb33485d | |||
cbdf17f618 | |||
fdf231b46e | |||
e9d611fc03 | |||
f899a76f7f | |||
aa93604a6a | |||
6d8fb63d54 | |||
1cb5827438 | |||
fccee387b8 | |||
6f22a3031b | |||
185258ad8a | |||
b69a9a2de7 | |||
f16859893d | |||
b668c991c8 | |||
405b1ce60f | |||
e6f5649999 | |||
ef03bb112d | |||
da172aaa66 | |||
11625adbe8 | |||
b691895e05 | |||
66ef1fa38d | |||
30cc02c2a7 | |||
0d3e42be3f | |||
61ab3e1b3f | |||
bc604bc2ce | |||
39f80ea79a | |||
6ca944fe42 | |||
28ffa10a59 | |||
006554f545 | |||
1b04f9a883 | |||
00f23f4b9c | |||
9b948f45ee | |||
1f0ee6b27f | |||
3348bd0b39 | |||
780ff152c8 | |||
d61ac18707 | |||
bee5631fab | |||
78d34d9177 | |||
100eedc8cd | |||
ce298b9600 | |||
7128cd8d0d | |||
7007577176 | |||
ca1c7cc23f | |||
ae43d24f62 | |||
c6de176b0b | |||
a36df414c1 | |||
1022a3998f | |||
67727954ec | |||
cf8fc2ac56 | |||
4c38ae86a9 | |||
4b3bc8a216 | |||
e9a2ce6df3 | |||
875054aa2c | |||
4b9eea276b | |||
fc5ed5e892 | |||
1d01ddbbbc |
@ -21,7 +21,7 @@
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
${pkgs.disko-packaged}/bin/disko \
|
${pkgs.disko}/bin/disko \
|
||||||
--mode create \
|
--mode create \
|
||||||
--dry-run \
|
--dry-run \
|
||||||
--flake "path:$(pwd)#root" \
|
--flake "path:$(pwd)#root" \
|
||||||
@ -31,7 +31,7 @@
|
|||||||
"This will ERASE ALL DATA on the disk /dev/''${DISK}. Are you sure you want to continue?" \
|
"This will ERASE ALL DATA on the disk /dev/''${DISK}. Are you sure you want to continue?" \
|
||||||
--default=false
|
--default=false
|
||||||
|
|
||||||
${pkgs.disko-packaged}/bin/disko \
|
${pkgs.disko}/bin/disko \
|
||||||
--mode create \
|
--mode create \
|
||||||
--flake "path:$(pwd)#root" \
|
--flake "path:$(pwd)#root" \
|
||||||
--arg disk "/dev/''${DISK}"
|
--arg disk "/dev/''${DISK}"
|
||||||
|
394
flake.lock
generated
394
flake.lock
generated
@ -51,11 +51,11 @@
|
|||||||
},
|
},
|
||||||
"cl-nix-lite": {
|
"cl-nix-lite": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1717972076,
|
"lastModified": 1728174978,
|
||||||
"narHash": "sha256-hnZEsDInTcsVSL5LBGDAZegAxVLBus/wiJh+sNM15zU=",
|
"narHash": "sha256-Grqqg+xuicANB85j0gNEXxi9SBKY7bzGeTuyi95eGcY=",
|
||||||
"owner": "hraban",
|
"owner": "hraban",
|
||||||
"repo": "cl-nix-lite",
|
"repo": "cl-nix-lite",
|
||||||
"rev": "cc920bfb0a6402d3871f470c98d65266126973e4",
|
"rev": "31cfe6275c341eb3120a99f4b1c8516c49a29d87",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -67,11 +67,11 @@
|
|||||||
"cmp-nvim-lsp-src": {
|
"cmp-nvim-lsp-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1715931395,
|
"lastModified": 1733823748,
|
||||||
"narHash": "sha256-CT1+Z4XJBVsl/RqvJeGmyitD6x7So0ylXvvef5jh7I8=",
|
"narHash": "sha256-iaihXNCF5bB5MdeoosD/kc3QtpA/QaIDZVLiLIurBSM=",
|
||||||
"owner": "hrsh7th",
|
"owner": "hrsh7th",
|
||||||
"repo": "cmp-nvim-lsp",
|
"repo": "cmp-nvim-lsp",
|
||||||
"rev": "39e2eda76828d88b773cc27a3f61d2ad782c922d",
|
"rev": "99290b3ec1322070bcfb9e846450a46f6efa50f0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -87,11 +87,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728385805,
|
"lastModified": 1737162735,
|
||||||
"narHash": "sha256-mUd38b0vhB7yzgAjNOaFz7VY9xIVzlbn3P2wjGBcVV0=",
|
"narHash": "sha256-5T+HkouTMGaRm0rh3kgD4Z1O7ONKfgjyoPQH5rSyreU=",
|
||||||
"owner": "lnl7",
|
"owner": "lnl7",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "48b50b3b137be5cfb9f4d006835ce7c3fe558ccc",
|
"rev": "87131f51f8256952d1a306b5521cedc2dc61aa08",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -108,11 +108,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728687662,
|
"lastModified": 1737038063,
|
||||||
"narHash": "sha256-D9TChzb00eTG1YWBx8eN2s6lJJnBjB5Y7RpxkAzGvyQ=",
|
"narHash": "sha256-rMEuiK69MDhjz1JgbaeQ9mBDXMJ2/P8vmOYRbFndXsk=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "bdbdb725d632863bdedb80baabf21327614dd237",
|
"rev": "bf0abfde48f469c256f2b0f481c6281ff04a5db2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -145,11 +145,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728694479,
|
"lastModified": 1737161595,
|
||||||
"narHash": "sha256-NFFW6RrOTBuIk29LKtAO3MU5Y0ll7zAp9Skd9HvCGfs=",
|
"narHash": "sha256-Txp3uh0KdB3+Pe6xihU0JWWe0LK8iXTUnZ8bOcKu3w0=",
|
||||||
"owner": "bandithedoge",
|
"owner": "bandithedoge",
|
||||||
"repo": "nixpkgs-firefox-darwin",
|
"repo": "nixpkgs-firefox-darwin",
|
||||||
"rev": "8a3143c1ce147481db4463e71bc3b7002e6ebc56",
|
"rev": "3224752c71a5245e90cfae360e0dc5de98e2b53c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -161,11 +161,11 @@
|
|||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1697816753,
|
"lastModified": 1730663653,
|
||||||
"narHash": "sha256-40to80AEIyKCQI0xMKCeF5ePoIKTYgjVVCZeu4CnTxM=",
|
"narHash": "sha256-kFCUWettiFHDIqxCWWQ9qY8pVh+Lj+XL0Giyy/kdomg=",
|
||||||
"owner": "hraban",
|
"owner": "hraban",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "6025bade1336a36014639bc3f67eacc853dab78f",
|
"rev": "e5b16676185cb7548581c852f51ce7f3a49bba5e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -178,11 +178,11 @@
|
|||||||
"flake-compat_2": {
|
"flake-compat_2": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1696426674,
|
"lastModified": 1733328505,
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
|
||||||
"owner": "edolstra",
|
"owner": "edolstra",
|
||||||
"repo": "flake-compat",
|
"repo": "flake-compat",
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -191,16 +191,58 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733312601,
|
||||||
|
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710146030,
|
"lastModified": 1731533236,
|
||||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
"owner": "numtide",
|
"owner": "numtide",
|
||||||
"repo": "flake-utils",
|
"repo": "flake-utils",
|
||||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils_2": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": [
|
||||||
|
"mac-app-util",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -208,9 +250,9 @@
|
|||||||
"type": "indirect"
|
"type": "indirect"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_2": {
|
"flake-utils_3": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_2"
|
"systems": "systems_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1705309234,
|
"lastModified": 1705309234,
|
||||||
@ -226,32 +268,14 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-utils_3": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems_3"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1726560853,
|
|
||||||
"narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gh-collaborators": {
|
"gh-collaborators": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1717117275,
|
"lastModified": 1736185279,
|
||||||
"narHash": "sha256-x3p2bHL6U8gWanXnTTJGgA9x4Ixy9AOZiBbfcfn5VVw=",
|
"narHash": "sha256-SGmP/8Fvf2rcYkwscMOFG01Y0VJGb/TXrNZtLacurxA=",
|
||||||
"owner": "katiem0",
|
"owner": "katiem0",
|
||||||
"repo": "gh-collaborators",
|
"repo": "gh-collaborators",
|
||||||
"rev": "4dfcd0b5c2e31f2d0fbfd4b83fdfae787a5e6ff8",
|
"rev": "bf412dde50605e48af86f291c2ac8714f2c1b228",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -263,11 +287,11 @@
|
|||||||
"hmts-nvim-src": {
|
"hmts-nvim-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727357627,
|
"lastModified": 1729786258,
|
||||||
"narHash": "sha256-8FJlLw5LApQs7S8xEh2UE9wdYCAweZTbvgozCGPfQJc=",
|
"narHash": "sha256-V5dwIJdxBulFVKk1iSlf4H5NRz1UH7uYQeMvwtgkpIs=",
|
||||||
"owner": "calops",
|
"owner": "calops",
|
||||||
"repo": "hmts.nvim",
|
"repo": "hmts.nvim",
|
||||||
"rev": "1ecb68b9f89abdb23d2754f9d69f90eab2d33eaa",
|
"rev": "c7ff4c3ad96cd05664b18fb5bbbe2abbd7682dd2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -283,11 +307,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728685293,
|
"lastModified": 1737120639,
|
||||||
"narHash": "sha256-1WowL96pksT/XCi+ZXHgqiQ9NiU5oxWuNIQYWqOoEYc=",
|
"narHash": "sha256-p5e/45V41YD3tMELuiNIoVCa25/w4nhOTm0B9MtdHFI=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "2b13611eaed8326789f76f70d21d06fbb14e3e47",
|
"rev": "a0046af169ce7b1da503974e1b22c48ef4d71887",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -297,21 +321,44 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"jujutsu": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"rust-overlay": "rust-overlay"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737163288,
|
||||||
|
"narHash": "sha256-PROBXqOUzgqIG66S74P1nyg7MbNoQ01k3oF0IM7qpHY=",
|
||||||
|
"owner": "martinvonz",
|
||||||
|
"repo": "jj",
|
||||||
|
"rev": "83d40d2c425fa2e050bdac8837b19e5beb3bef25",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "martinvonz",
|
||||||
|
"repo": "jj",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"mac-app-util": {
|
"mac-app-util": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"cl-nix-lite": "cl-nix-lite",
|
"cl-nix-lite": "cl-nix-lite",
|
||||||
"flake-compat": "flake-compat",
|
"flake-compat": "flake-compat",
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils_2",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
],
|
||||||
|
"systems": "systems_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727470707,
|
"lastModified": 1732920695,
|
||||||
"narHash": "sha256-BqkwZ2mvzn+COdfIuzllSzWmiaBwQktt4sw9slfwM70=",
|
"narHash": "sha256-1fxvJZUznwrmEtYqpPuWi2tPcL9kj6v7p1J7ZZncAPE=",
|
||||||
"owner": "hraban",
|
"owner": "hraban",
|
||||||
"repo": "mac-app-util",
|
"repo": "mac-app-util",
|
||||||
"rev": "9c6bbe2a6a7ec647d03f64f0fadb874284f59eac",
|
"rev": "548672d0cb661ce11d08ee8bde92b87d2a75c872",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -323,68 +370,68 @@
|
|||||||
"nextcloud-cookbook": {
|
"nextcloud-cookbook": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1719431638,
|
"lastModified": 1726214817,
|
||||||
"narHash": "sha256-a8ekMnEzudHGiqHF53jPtgsVTOTc2QLuPg6YtTw5h68=",
|
"narHash": "sha256-Pfa+Xbopg20os+pnGgg+wpEX1MI5fz5JMb0K4a8rBhs=",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.1/cookbook-0.11.1.tar.gz"
|
"url": "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.2/cookbook-0.11.2.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.1/cookbook-0.11.1.tar.gz"
|
"url": "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.2/cookbook-0.11.2.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nextcloud-external": {
|
"nextcloud-external": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710338675,
|
"lastModified": 1729501349,
|
||||||
"narHash": "sha256-bJJ/dVmE1o04QCyrxD0sko0okRsnxJmT6sOTOmBiifs=",
|
"narHash": "sha256-OV6HhFBzmnQBO5btGEnqmKlaUMY7/t2Qm3XebclpBlM=",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/nextcloud-releases/external/releases/download/v5.4.0/external-v5.4.0.tar.gz"
|
"url": "https://github.com/nextcloud-releases/external/releases/download/v5.5.2/external-v5.5.2.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/nextcloud-releases/external/releases/download/v5.4.0/external-v5.4.0.tar.gz"
|
"url": "https://github.com/nextcloud-releases/external/releases/download/v5.5.2/external-v5.5.2.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nextcloud-news": {
|
"nextcloud-news": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1718102703,
|
"lastModified": 1729667621,
|
||||||
"narHash": "sha256-XNGjf7SWgJYFdVNOh3ED0jxSG0GJwWImVQq4cJT1Lo4=",
|
"narHash": "sha256-pnvyMZQ+NYMgH0Unfh5S19HdZSjnghgoUDAoi2KIXNI=",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/nextcloud/news/releases/download/25.0.0-alpha7/news.tar.gz"
|
"url": "https://github.com/nextcloud/news/releases/download/25.0.0-alpha12/news.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://github.com/nextcloud/news/releases/download/25.0.0-alpha7/news.tar.gz"
|
"url": "https://github.com/nextcloud/news/releases/download/25.0.0-alpha12/news.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nextcloud-snappymail": {
|
"nextcloud-snappymail": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728704544,
|
"lastModified": 1737171597,
|
||||||
"narHash": "sha256-WwCRAZzxYWUpOy6iVTDpVIr/DrkJkQGjgIdVWNfCH3Q=",
|
"narHash": "sha256-oCw6Brs85rINBHvz3UJXheyLVqvA3RgPXG03b30Fx7E=",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://snappymail.eu/repository/nextcloud/snappymail-2.37.2-nextcloud.tar.gz"
|
"url": "https://snappymail.eu/repository/nextcloud/snappymail-2.38.2-nextcloud.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://snappymail.eu/repository/nextcloud/snappymail-2.37.2-nextcloud.tar.gz"
|
"url": "https://snappymail.eu/repository/nextcloud/snappymail-2.38.2-nextcloud.tar.gz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nix2vim": {
|
"nix2vim": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils_2",
|
"flake-utils": "flake-utils_3",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1727867024,
|
"lastModified": 1732820845,
|
||||||
"narHash": "sha256-yimXLupF3hG57imRMpqWho/Wstcj7P8Yh8t0SBiX+dQ=",
|
"narHash": "sha256-YPXk41l4PzKb5rtcxkYhymwjHJG95fxl4iXIzXnftr8=",
|
||||||
"owner": "gytis-ivaskevicius",
|
"owner": "gytis-ivaskevicius",
|
||||||
"repo": "nix2vim",
|
"repo": "nix2vim",
|
||||||
"rev": "da26caae6c7776eedbc6514a0f57f1ccd6a759ed",
|
"rev": "e2c511ea553418dd432005875c649b09d56b7e58",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -395,11 +442,11 @@
|
|||||||
},
|
},
|
||||||
"nixlib": {
|
"nixlib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728176478,
|
"lastModified": 1736643958,
|
||||||
"narHash": "sha256-px3Q0W//c+mZ4kPMXq4poztsjtXM1Ja1rN+825YMDUQ=",
|
"narHash": "sha256-tmpqTSWVRJVhpvfSN9KXBvKEXplrwKnSZNAoNPf/S/s=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs.lib",
|
||||||
"rev": "b61309c3c1b6013d36299bc8285612865b3b9e4c",
|
"rev": "1418bc28a52126761c02dd3d89b2d8ca0f521181",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -416,11 +463,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728522165,
|
"lastModified": 1737057290,
|
||||||
"narHash": "sha256-UQpsJ0Ev6JBGsCYRlS2oOVvb+eWcDD0xTV3RVlqbeVU=",
|
"narHash": "sha256-3Pe0yKlCc7EOeq1X/aJVDH0CtNL+tIBm49vpepwL1MQ=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixos-generators",
|
"repo": "nixos-generators",
|
||||||
"rev": "40c8d30c490414910fc63626ad1b67af7db40cd3",
|
"rev": "d002ce9b6e7eb467cd1c6bb9aef9c35d191b5453",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -431,11 +478,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728492678,
|
"lastModified": 1737062831,
|
||||||
"narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=",
|
"narHash": "sha256-Tbk1MZbtV2s5aG+iM99U8FqwxU/YNArMcWAv6clcsBc=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7",
|
"rev": "5df43628fdf08d642be8ba5b3625a6c70731c19c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -463,11 +510,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs-stable": {
|
"nixpkgs-stable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728627514,
|
"lastModified": 1735563628,
|
||||||
"narHash": "sha256-r+SF9AnHrTg+bk6YszoKfV9lgyw+yaFUQe0dOjI0Z2o=",
|
"narHash": "sha256-OnSAY7XDSx7CtDoqNh8jwVwh4xNL/2HaJxGjryLWzX8=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c505ebf777526041d792a49d5f6dd4095ea391a7",
|
"rev": "b134951a4c9f3c995fd7be05f3243f8ecd65d798",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -477,13 +524,34 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nur": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728704557,
|
"lastModified": 1737062831,
|
||||||
"narHash": "sha256-HnYBB+oE+03rNDzTTVazBcysPOu5udRpTOGpP7/A5Ow=",
|
"narHash": "sha256-Tbk1MZbtV2s5aG+iM99U8FqwxU/YNArMcWAv6clcsBc=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "5df43628fdf08d642be8ba5b3625a6c70731c19c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nur": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1737170882,
|
||||||
|
"narHash": "sha256-Km700i1Eg72bFsU2X2ZgH4qEgx6SrdZFJURJGTSQH2M=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nur",
|
"repo": "nur",
|
||||||
"rev": "1d143f52b0a046924ee7fe74bce0bd2e10e07c3d",
|
"rev": "62cdd681201843553ec740a85ccf2f0a6fca75c6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -495,11 +563,11 @@
|
|||||||
"nvim-lint-src": {
|
"nvim-lint-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728582620,
|
"lastModified": 1736154173,
|
||||||
"narHash": "sha256-wfui4kE3oxveCJPjJfkJSbE69zVTeAsasDdfJkElmn8=",
|
"narHash": "sha256-OChCLXHAqa129NiGfmwddq0Hj5F9AtC3TmFbnNCZqfo=",
|
||||||
"owner": "mfussenegger",
|
"owner": "mfussenegger",
|
||||||
"repo": "nvim-lint",
|
"repo": "nvim-lint",
|
||||||
"rev": "f707b3ae50417067fa63fdfe179b0bff6b380da1",
|
"rev": "dfa45de973c3ce7bd1b9a6d346f896a68ad07e44",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -528,11 +596,11 @@
|
|||||||
"nvim-tree-lua-src": {
|
"nvim-tree-lua-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728614821,
|
"lastModified": 1737156486,
|
||||||
"narHash": "sha256-WYtu+jtsQSFqruTxdzkHE9UQJBE2TGoNoFar36AAoqo=",
|
"narHash": "sha256-b8YOOIYML9aKy4Y7S+iLKIaTfCqrxK1wB/ZaeFRCUmo=",
|
||||||
"owner": "kyazdani42",
|
"owner": "kyazdani42",
|
||||||
"repo": "nvim-tree.lua",
|
"repo": "nvim-tree.lua",
|
||||||
"rev": "5ad87620ec9d1190d15c88171a3f0122bc16b0fe",
|
"rev": "fca0b67c0b5a31727fb33addc4d9c100736a2894",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -558,6 +626,23 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"osc": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1732197203,
|
||||||
|
"narHash": "sha256-xL9mqwb+C6WbuJ/qk0lNbi9xd24PbKi5G0FlwaH5XPk=",
|
||||||
|
"owner": "theimpostor",
|
||||||
|
"repo": "osc",
|
||||||
|
"rev": "87b316b3f96a22fd85654cd7bd091f2cac1c6691",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "theimpostor",
|
||||||
|
"ref": "v0.4.6",
|
||||||
|
"repo": "osc",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"ren": {
|
"ren": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@ -603,6 +688,7 @@
|
|||||||
"gh-collaborators": "gh-collaborators",
|
"gh-collaborators": "gh-collaborators",
|
||||||
"hmts-nvim-src": "hmts-nvim-src",
|
"hmts-nvim-src": "hmts-nvim-src",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"jujutsu": "jujutsu",
|
||||||
"mac-app-util": "mac-app-util",
|
"mac-app-util": "mac-app-util",
|
||||||
"nextcloud-cookbook": "nextcloud-cookbook",
|
"nextcloud-cookbook": "nextcloud-cookbook",
|
||||||
"nextcloud-external": "nextcloud-external",
|
"nextcloud-external": "nextcloud-external",
|
||||||
@ -618,6 +704,7 @@
|
|||||||
"nvim-lspconfig-src": "nvim-lspconfig-src",
|
"nvim-lspconfig-src": "nvim-lspconfig-src",
|
||||||
"nvim-tree-lua-src": "nvim-tree-lua-src",
|
"nvim-tree-lua-src": "nvim-tree-lua-src",
|
||||||
"nvim-treesitter-src": "nvim-treesitter-src",
|
"nvim-treesitter-src": "nvim-treesitter-src",
|
||||||
|
"osc": "osc",
|
||||||
"ren": "ren",
|
"ren": "ren",
|
||||||
"rep": "rep",
|
"rep": "rep",
|
||||||
"snipe-nvim-src": "snipe-nvim-src",
|
"snipe-nvim-src": "snipe-nvim-src",
|
||||||
@ -637,14 +724,35 @@
|
|||||||
"zenyd-mpv-scripts": "zenyd-mpv-scripts"
|
"zenyd-mpv-scripts": "zenyd-mpv-scripts"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"rust-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"jujutsu",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735784864,
|
||||||
|
"narHash": "sha256-tIl5p3ueaPw7T5T1UXkLc8ISMk6Y8CI/D/rd0msf73I=",
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"rev": "04d5f1836721461b256ec452883362c5edc5288e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "oxalica",
|
||||||
|
"repo": "rust-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"snipe-nvim-src": {
|
"snipe-nvim-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1724418876,
|
"lastModified": 1736108869,
|
||||||
"narHash": "sha256-G4g/OzyXhDhX84HkxlhFSy6E+EAGxH+HL1Bw5s5FWHE=",
|
"narHash": "sha256-sJ71eiE0XmMJkhNCkbY82R4eHzBOOKFrPa+nxLc1f8s=",
|
||||||
"owner": "leath-dub",
|
"owner": "leath-dub",
|
||||||
"repo": "snipe.nvim",
|
"repo": "snipe.nvim",
|
||||||
"rev": "f1abd4aaaef6398b45dcddc9f1a40dd982f732b0",
|
"rev": "0d0a482ac713370196e4fc0025d5aaac5030104d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -670,16 +778,16 @@
|
|||||||
},
|
},
|
||||||
"systems_2": {
|
"systems_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1689347925,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-ozenz5bFe1UUqOn7f60HRmgc01BgTGIKZ4Xl+HbocGQ=",
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default",
|
"repo": "default-darwin",
|
||||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
"rev": "2235d7e6cc29ae99878133c95e9fe5e157661ffb",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default",
|
"repo": "default-darwin",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -718,11 +826,11 @@
|
|||||||
"telescope-project-nvim-src": {
|
"telescope-project-nvim-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725880250,
|
"lastModified": 1733083023,
|
||||||
"narHash": "sha256-wO/cm5PT1L0hFr/CX466w0UimoFg/tWrDK8T0QeKZMU=",
|
"narHash": "sha256-qEORRWYKBpK7fn7se8g+5uuVBJNu0T4JHSc0C2QzNDY=",
|
||||||
"owner": "nvim-telescope",
|
"owner": "nvim-telescope",
|
||||||
"repo": "telescope-project.nvim",
|
"repo": "telescope-project.nvim",
|
||||||
"rev": "796200876bb0fe8157b8eb1ce03d927d3827a052",
|
"rev": "1d7920e799fc5001dffc7bd10909a86e0358eaf4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -734,11 +842,11 @@
|
|||||||
"tiny-inline-diagnostic-nvim-src": {
|
"tiny-inline-diagnostic-nvim-src": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1726582328,
|
"lastModified": 1736959343,
|
||||||
"narHash": "sha256-NBcUVUSnk2TlbSr/vFTbp3Rh35ms8lAcfDqpmE1KTq4=",
|
"narHash": "sha256-11+Z54shcy5oRevfTOu3dt5DtXhnYaH9zvktH6Lvxjs=",
|
||||||
"owner": "rachartier",
|
"owner": "rachartier",
|
||||||
"repo": "tiny-inline-diagnostic.nvim",
|
"repo": "tiny-inline-diagnostic.nvim",
|
||||||
"rev": "1a83e7ce5c9d0ae4d89fc5c812b55ff8ed1d39e7",
|
"rev": "aaa6f0dd097f8ca2478cad259e61b7cb26ec0eb8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -767,11 +875,11 @@
|
|||||||
"tree-sitter-bash": {
|
"tree-sitter-bash": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725407033,
|
"lastModified": 1731338420,
|
||||||
"narHash": "sha256-xqiUJhl7nfOlS6wBYWpmrGLCvWoJCA5fz8DCX85Lxog=",
|
"narHash": "sha256-JW+30zIyq8Xc7NG9V+YoFqC+57BjZXIbAvWPD2lqvIE=",
|
||||||
"owner": "tree-sitter",
|
"owner": "tree-sitter",
|
||||||
"repo": "tree-sitter-bash",
|
"repo": "tree-sitter-bash",
|
||||||
"rev": "c8713e50f0bd77d080832fc61ad128bc8f2934e9",
|
"rev": "49c31006d8307dcb12bc5770f35b6d5b9e2be68e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -800,11 +908,11 @@
|
|||||||
"tree-sitter-lua": {
|
"tree-sitter-lua": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725894603,
|
"lastModified": 1729494737,
|
||||||
"narHash": "sha256-Q2LtrifoKf16N1dRBf2xLi12kpMkcFncZL4jaVbtK3M=",
|
"narHash": "sha256-v+fFcIOv+bu+2IGI/Lh/Xbqd5BzbBjaa51ECd0hG7Ow=",
|
||||||
"owner": "MunifTanjim",
|
"owner": "MunifTanjim",
|
||||||
"repo": "tree-sitter-lua",
|
"repo": "tree-sitter-lua",
|
||||||
"rev": "99fc677e6971c425e8d407f59c77ab897e585c92",
|
"rev": "34e60e7f45fc313463c68090d88d742a55d1bd7a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -817,11 +925,11 @@
|
|||||||
"tree-sitter-puppet": {
|
"tree-sitter-puppet": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1713617121,
|
"lastModified": 1734835631,
|
||||||
"narHash": "sha256-+zMgzyuGerJ8l+i5ZtWnmGr3i4fFiSLD5FssyKESsmI=",
|
"narHash": "sha256-bO5g5AdhzpB13yHklpAndUHIX7Rvd7OMjH0Ds2ATA6Q=",
|
||||||
"owner": "amaanq",
|
"owner": "amaanq",
|
||||||
"repo": "tree-sitter-puppet",
|
"repo": "tree-sitter-puppet",
|
||||||
"rev": "584522f32495d648b18a53ccb52d988e60de127d",
|
"rev": "15f192929b7d317f5914de2b4accd37b349182a6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -833,11 +941,11 @@
|
|||||||
"tree-sitter-python": {
|
"tree-sitter-python": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1725324041,
|
"lastModified": 1736288149,
|
||||||
"narHash": "sha256-8mdBN1vP64PJKxN2y0GoaObLs6j/lcsU47sr+8/8oTQ=",
|
"narHash": "sha256-IIAL2qteFPBCPmDK1N2EdDgpI4CwfMuuVL8t5tYueLU=",
|
||||||
"owner": "tree-sitter",
|
"owner": "tree-sitter",
|
||||||
"repo": "tree-sitter-python",
|
"repo": "tree-sitter-python",
|
||||||
"rev": "8c65e256f971812276ff2a69a2f515c218ed7f82",
|
"rev": "409b5d671eb0ea4972eeacaaca24bbec1acf79b1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -866,11 +974,11 @@
|
|||||||
"tree-sitter-vimdoc": {
|
"tree-sitter-vimdoc": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1717834376,
|
"lastModified": 1729686839,
|
||||||
"narHash": "sha256-v+XSWGm2Wdn9/rxNFMqXYACkGn6AvxZdxkClLuKnWGU=",
|
"narHash": "sha256-Vrl4/cZL+TWlUMEeWZoHCAWhvlefcl3ajGcwyTNKOhI=",
|
||||||
"owner": "neovim",
|
"owner": "neovim",
|
||||||
"repo": "tree-sitter-vimdoc",
|
"repo": "tree-sitter-vimdoc",
|
||||||
"rev": "2249c44ecd3f5cf22da3dcccfb74f816ddb29245",
|
"rev": "d2e4b5c172a109966c2ce0378f73df6cede39400",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@ -879,6 +987,27 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"treefmt-nix": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733222881,
|
||||||
|
"narHash": "sha256-JIPcz1PrpXUCbaccEnrcUS8jjEb/1vJbZz5KkobyFdM=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "49717b5af6f80172275d47a418c9719a31a78b53",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"wallpapers": {
|
"wallpapers": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
@ -898,17 +1027,16 @@
|
|||||||
"wsl": {
|
"wsl": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_2",
|
"flake-compat": "flake-compat_2",
|
||||||
"flake-utils": "flake-utils_3",
|
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1728588346,
|
"lastModified": 1736095716,
|
||||||
"narHash": "sha256-P1j+Nf+pzxPYK2Qe7lF2yB0vR3YvW8Td5sD0ZvrKIq8=",
|
"narHash": "sha256-csysw/Szu98QDiA2lhWk9seYOyCebeVEWL89zh1cduM=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NixOS-WSL",
|
"repo": "NixOS-WSL",
|
||||||
"rev": "0fc8d9bb51cc46b31d950513df6d088905c8fe55",
|
"rev": "63c3b4ed1712a3a0621002cd59bfdc80875ecbb0",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
29
flake.nix
29
flake.nix
@ -175,6 +175,13 @@
|
|||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Git alternative
|
||||||
|
# Fixes: https://github.com/martinvonz/jj/issues/4784
|
||||||
|
jujutsu = {
|
||||||
|
url = "github:martinvonz/jj";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
# Ren and rep - CLI find and replace
|
# Ren and rep - CLI find and replace
|
||||||
rep = {
|
rep = {
|
||||||
url = "github:robenkleene/rep-grep";
|
url = "github:robenkleene/rep-grep";
|
||||||
@ -190,26 +197,32 @@
|
|||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Clipboard over SSH
|
||||||
|
osc = {
|
||||||
|
url = "github:theimpostor/osc/v0.4.6";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
# Nextcloud Apps
|
# Nextcloud Apps
|
||||||
nextcloud-news = {
|
nextcloud-news = {
|
||||||
# https://github.com/nextcloud/news/releases
|
# https://github.com/nextcloud/news/releases
|
||||||
url = "https://github.com/nextcloud/news/releases/download/25.0.0-alpha7/news.tar.gz";
|
url = "https://github.com/nextcloud/news/releases/download/25.0.0-alpha12/news.tar.gz";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
nextcloud-external = {
|
nextcloud-external = {
|
||||||
# https://github.com/nextcloud-releases/external/releases
|
# https://github.com/nextcloud-releases/external/releases
|
||||||
url = "https://github.com/nextcloud-releases/external/releases/download/v5.4.0/external-v5.4.0.tar.gz";
|
url = "https://github.com/nextcloud-releases/external/releases/download/v5.5.2/external-v5.5.2.tar.gz";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
nextcloud-cookbook = {
|
nextcloud-cookbook = {
|
||||||
# https://github.com/christianlupus-nextcloud/cookbook-releases/releases/
|
# https://github.com/christianlupus-nextcloud/cookbook-releases/releases/
|
||||||
url = "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.1/cookbook-0.11.1.tar.gz";
|
url = "https://github.com/christianlupus-nextcloud/cookbook-releases/releases/download/v0.11.2/cookbook-0.11.2.tar.gz";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
nextcloud-snappymail = {
|
nextcloud-snappymail = {
|
||||||
# https://github.com/the-djmaze/snappymail/releases
|
# https://github.com/the-djmaze/snappymail/releases
|
||||||
# https://snappymail.eu/repository/nextcloud
|
# https://snappymail.eu/repository/nextcloud
|
||||||
url = "https://snappymail.eu/repository/nextcloud/snappymail-2.37.2-nextcloud.tar.gz";
|
url = "https://snappymail.eu/repository/nextcloud/snappymail-2.38.2-nextcloud.tar.gz";
|
||||||
# url = "https://github.com/nmasur/snappymail-nextcloud/releases/download/v2.36.3/snappymail-2.36.3-nextcloud.tar.gz";
|
# url = "https://github.com/nmasur/snappymail-nextcloud/releases/download/v2.36.3/snappymail-2.36.3-nextcloud.tar.gz";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
@ -236,6 +249,7 @@
|
|||||||
dotfilesRepo = "https://github.com/nmasur/dotfiles";
|
dotfilesRepo = "https://github.com/nmasur/dotfiles";
|
||||||
hostnames = {
|
hostnames = {
|
||||||
audiobooks = "read.${baseName}";
|
audiobooks = "read.${baseName}";
|
||||||
|
budget = "money.${baseName}";
|
||||||
files = "files.${baseName}";
|
files = "files.${baseName}";
|
||||||
git = "git.${baseName}";
|
git = "git.${baseName}";
|
||||||
influxdb = "influxdb.${baseName}";
|
influxdb = "influxdb.${baseName}";
|
||||||
@ -246,6 +260,7 @@
|
|||||||
notifications = "ntfy.${baseName}";
|
notifications = "ntfy.${baseName}";
|
||||||
prometheus = "prom.${baseName}";
|
prometheus = "prom.${baseName}";
|
||||||
paperless = "paper.${baseName}";
|
paperless = "paper.${baseName}";
|
||||||
|
photos = "photos.${baseName}";
|
||||||
secrets = "vault.${baseName}";
|
secrets = "vault.${baseName}";
|
||||||
stream = "stream.${baseName}";
|
stream = "stream.${baseName}";
|
||||||
content = "cloud.${baseName}";
|
content = "cloud.${baseName}";
|
||||||
@ -258,16 +273,18 @@
|
|||||||
|
|
||||||
# Common overlays to always use
|
# Common overlays to always use
|
||||||
overlays = [
|
overlays = [
|
||||||
inputs.nur.overlay
|
inputs.nur.overlays.default
|
||||||
inputs.nix2vim.overlay
|
inputs.nix2vim.overlay
|
||||||
|
inputs.jujutsu.overlays.default # Fix: https://github.com/martinvonz/jj/issues/4784
|
||||||
(import ./overlays/neovim-plugins.nix inputs)
|
(import ./overlays/neovim-plugins.nix inputs)
|
||||||
(import ./overlays/disko.nix inputs)
|
|
||||||
(import ./overlays/tree-sitter.nix inputs)
|
(import ./overlays/tree-sitter.nix inputs)
|
||||||
(import ./overlays/mpv-scripts.nix inputs)
|
(import ./overlays/mpv-scripts.nix inputs)
|
||||||
(import ./overlays/nextcloud-apps.nix inputs)
|
(import ./overlays/nextcloud-apps.nix inputs)
|
||||||
(import ./overlays/betterlockscreen.nix)
|
(import ./overlays/betterlockscreen.nix)
|
||||||
(import ./overlays/gh-collaborators.nix inputs)
|
(import ./overlays/gh-collaborators.nix inputs)
|
||||||
|
(import ./overlays/osc.nix inputs)
|
||||||
(import ./overlays/ren-rep.nix inputs)
|
(import ./overlays/ren-rep.nix inputs)
|
||||||
|
(import ./overlays/volnoti.nix)
|
||||||
];
|
];
|
||||||
|
|
||||||
# System types to support.
|
# System types to support.
|
||||||
|
@ -62,7 +62,7 @@ inputs.nixpkgs.lib.nixosSystem rec {
|
|||||||
|
|
||||||
# Still require colors for programs like Neovim, K9S
|
# Still require colors for programs like Neovim, K9S
|
||||||
theme = {
|
theme = {
|
||||||
colors = (import ../../colorscheme/gruvbox).dark;
|
colors = (import ../../colorscheme/gruvbox-dark).dark;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Programs and services
|
# Programs and services
|
||||||
@ -71,6 +71,7 @@ inputs.nixpkgs.lib.nixosSystem rec {
|
|||||||
dotfiles.enable = true; # Clone dotfiles
|
dotfiles.enable = true; # Clone dotfiles
|
||||||
neovim.enable = true;
|
neovim.enable = true;
|
||||||
giteaRunner.enable = true;
|
giteaRunner.enable = true;
|
||||||
|
services.actualbudget.enable = true;
|
||||||
services.caddy.enable = true;
|
services.caddy.enable = true;
|
||||||
services.grafana.enable = true;
|
services.grafana.enable = true;
|
||||||
services.thelounge.enable = true;
|
services.thelounge.enable = true;
|
||||||
@ -82,6 +83,7 @@ inputs.nixpkgs.lib.nixosSystem rec {
|
|||||||
services.minecraft-server.enable = true; # Setup Minecraft server
|
services.minecraft-server.enable = true; # Setup Minecraft server
|
||||||
services.n8n.enable = true;
|
services.n8n.enable = true;
|
||||||
services.ntfy-sh.enable = true;
|
services.ntfy-sh.enable = true;
|
||||||
|
services.postgresql.enable = true;
|
||||||
services.uptime-kuma.enable = true;
|
services.uptime-kuma.enable = true;
|
||||||
system.autoUpgrade.enable = true;
|
system.autoUpgrade.enable = true;
|
||||||
|
|
||||||
@ -98,6 +100,7 @@ inputs.nixpkgs.lib.nixosSystem rec {
|
|||||||
endpoint = "s3.us-west-002.backblazeb2.com";
|
endpoint = "s3.us-west-002.backblazeb2.com";
|
||||||
bucket = "noahmasur-backup";
|
bucket = "noahmasur-backup";
|
||||||
accessKeyId = "0026b0e73b2e2c80000000005";
|
accessKeyId = "0026b0e73b2e2c80000000005";
|
||||||
|
resticBucket = "noahmasur-restic";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Disable passwords, only use SSH key
|
# Disable passwords, only use SSH key
|
||||||
|
@ -26,7 +26,8 @@ inputs.darwin.lib.darwinSystem {
|
|||||||
inputs.mac-app-util.darwinModules.default
|
inputs.mac-app-util.darwinModules.default
|
||||||
{
|
{
|
||||||
nixpkgs.overlays = [ inputs.firefox-darwin.overlay ] ++ overlays;
|
nixpkgs.overlays = [ inputs.firefox-darwin.overlay ] ++ overlays;
|
||||||
networking.hostName = "lookingglass";
|
networking.hostName = "NYCM-NMASUR2";
|
||||||
|
networking.computerName = "NYCM-NMASUR2";
|
||||||
identityFile = "/Users/Noah.Masur/.ssh/id_ed25519";
|
identityFile = "/Users/Noah.Masur/.ssh/id_ed25519";
|
||||||
gui.enable = true;
|
gui.enable = true;
|
||||||
theme = {
|
theme = {
|
||||||
|
@ -109,6 +109,7 @@ inputs.nixpkgs.lib.nixosSystem rec {
|
|||||||
services.audiobookshelf.enable = true;
|
services.audiobookshelf.enable = true;
|
||||||
services.bind.enable = true;
|
services.bind.enable = true;
|
||||||
services.caddy.enable = true;
|
services.caddy.enable = true;
|
||||||
|
services.immich.enable = true;
|
||||||
services.jellyfin.enable = true;
|
services.jellyfin.enable = true;
|
||||||
services.nextcloud.enable = true;
|
services.nextcloud.enable = true;
|
||||||
services.calibre-web.enable = true;
|
services.calibre-web.enable = true;
|
||||||
@ -133,6 +134,7 @@ inputs.nixpkgs.lib.nixosSystem rec {
|
|||||||
endpoint = "s3.us-west-002.backblazeb2.com";
|
endpoint = "s3.us-west-002.backblazeb2.com";
|
||||||
bucket = "noahmasur-backup";
|
bucket = "noahmasur-backup";
|
||||||
accessKeyId = "0026b0e73b2e2c80000000005";
|
accessKeyId = "0026b0e73b2e2c80000000005";
|
||||||
|
resticBucket = "noahmasur-restic";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Disable passwords, only use SSH key
|
# Disable passwords, only use SSH key
|
||||||
|
@ -41,6 +41,12 @@ inputs.nixpkgs.lib.nixosSystem rec {
|
|||||||
boot.kernelModules = [ "kvm-amd" ];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
services.xserver.videoDrivers = [ "amdgpu" ];
|
services.xserver.videoDrivers = [ "amdgpu" ];
|
||||||
|
|
||||||
|
# I don't think I need this?
|
||||||
|
# boot.kernelParams = [
|
||||||
|
# "video=DP-0:2560x1440@165"
|
||||||
|
# "video=DP-1:1920x1080@60"
|
||||||
|
# ];
|
||||||
|
|
||||||
# Required binary blobs to boot on this machine
|
# Required binary blobs to boot on this machine
|
||||||
hardware.enableRedistributableFirmware = true;
|
hardware.enableRedistributableFirmware = true;
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
];
|
];
|
||||||
home-manager.users.${config.user} = {
|
home-manager.users.${config.user} = {
|
||||||
home.packages = [
|
home.packages = [
|
||||||
pkgs._1password
|
pkgs._1password-cli
|
||||||
] ++ (if pkgs.stdenv.isLinux then [ pkgs._1password-gui ] else [ ]);
|
] ++ (if pkgs.stdenv.isLinux then [ pkgs._1password-gui ] else [ ]);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -23,6 +23,6 @@
|
|||||||
|
|
||||||
# Broken on 2023-12-11
|
# Broken on 2023-12-11
|
||||||
# https://forum.obsidian.md/t/electron-25-is-now-eol-please-upgrade-to-a-newer-version/72878/8
|
# https://forum.obsidian.md/t/electron-25-is-now-eol-please-upgrade-to-a-newer-version/72878/8
|
||||||
nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ];
|
insecurePackages = [ "electron-25.9.0" ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -21,4 +21,6 @@
|
|||||||
home.packages = with pkgs; [ slack ];
|
home.packages = with pkgs; [ slack ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Theme string: #1D2122,#665C54,#8EC07C,#BDAE93
|
||||||
}
|
}
|
||||||
|
@ -29,14 +29,14 @@
|
|||||||
sessionVariables.ROFI_SYSTEMD_TERM = "${pkgs.wezterm}/bin/wezterm";
|
sessionVariables.ROFI_SYSTEMD_TERM = "${pkgs.wezterm}/bin/wezterm";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
terminal = "${pkgs.wezterm}/bin/wezterm";
|
||||||
|
terminalLaunchCommand = "${config.terminal} start --";
|
||||||
|
|
||||||
home-manager.users.${config.user} = {
|
home-manager.users.${config.user} = {
|
||||||
|
|
||||||
# Set the i3 terminal
|
# Set the i3 terminal
|
||||||
xsession.windowManager.i3.config.terminal = lib.mkIf pkgs.stdenv.isLinux "wezterm";
|
xsession.windowManager.i3.config.terminal = lib.mkIf pkgs.stdenv.isLinux "wezterm";
|
||||||
|
|
||||||
# Set the Rofi terminal for running programs
|
|
||||||
programs.rofi.terminal = lib.mkIf pkgs.stdenv.isLinux "${pkgs.wezterm}/bin/wezterm";
|
|
||||||
|
|
||||||
# Display images in the terminal
|
# Display images in the terminal
|
||||||
programs.fish.shellAliases = {
|
programs.fish.shellAliases = {
|
||||||
icat = lib.mkForce "wezterm imgcat";
|
icat = lib.mkForce "wezterm imgcat";
|
||||||
@ -102,49 +102,82 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
return {
|
local wezterm = require("wezterm")
|
||||||
color_scheme = "myTheme",
|
local config = wezterm.config_builder()
|
||||||
|
config.check_for_updates = false
|
||||||
|
config.color_scheme = "myTheme"
|
||||||
|
|
||||||
-- Scrollback
|
-- Scrollback
|
||||||
scrollback_lines = 10000,
|
config.scrollback_lines = 10000
|
||||||
|
|
||||||
-- Window
|
-- Window
|
||||||
window_padding = {
|
config.window_padding = {
|
||||||
left = 10,
|
left = 10,
|
||||||
right = 10,
|
right = 10,
|
||||||
top = 10,
|
top = 10,
|
||||||
bottom = 10,
|
bottom = 12,
|
||||||
},
|
}
|
||||||
|
|
||||||
font = wezterm.font('${font}', { weight = 'Bold'}),
|
config.font = wezterm.font('${font}', { weight = 'Bold'})
|
||||||
font_size = ${if pkgs.stdenv.isLinux then "14.0" else "18.0"},
|
config.font_size = ${if pkgs.stdenv.isLinux then "14.0" else "18.0"}
|
||||||
|
|
||||||
-- Fix color blocks instead of text
|
-- Fix color blocks instead of text
|
||||||
front_end = "WebGpu",
|
config.front_end = "WebGpu"
|
||||||
|
|
||||||
-- Tab Bar
|
-- Tab Bar
|
||||||
hide_tab_bar_if_only_one_tab = true,
|
config.hide_tab_bar_if_only_one_tab = true
|
||||||
window_frame = {
|
config.window_frame = {
|
||||||
font = wezterm.font('${font}', { weight = 'Bold'}),
|
font = wezterm.font('${font}', { weight = 'Bold'}),
|
||||||
font_size = ${if pkgs.stdenv.isLinux then "12.0" else "16.0"},
|
font_size = ${if pkgs.stdenv.isLinux then "12.0" else "16.0"},
|
||||||
},
|
}
|
||||||
|
|
||||||
colors = {
|
config.colors = {
|
||||||
tab_bar = {
|
tab_bar = {
|
||||||
active_tab = {
|
active_tab = {
|
||||||
bg_color = '${config.theme.colors.base00}',
|
bg_color = '${config.theme.colors.base00}',
|
||||||
fg_color = '${config.theme.colors.base04}',
|
fg_color = '${config.theme.colors.base04}',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
}
|
||||||
|
|
||||||
-- Disable audio
|
-- Disable audio
|
||||||
audible_bell = "Disabled",
|
config.audible_bell = "Disabled"
|
||||||
|
|
||||||
initial_rows = 80,
|
config.initial_rows = 80
|
||||||
initial_cols = 200,
|
config.initial_cols = 200
|
||||||
|
|
||||||
keys = {
|
config.unix_domains = {
|
||||||
|
{
|
||||||
|
name = 'unix',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- This causes `wezterm` to act as though it was started as
|
||||||
|
-- `wezterm connect unix` by default, connecting to the unix
|
||||||
|
-- domain on startup.
|
||||||
|
-- If you prefer to connect manually, leave out this line.
|
||||||
|
config.default_gui_startup_args = { 'connect', 'unix' }
|
||||||
|
|
||||||
|
config.leader = {
|
||||||
|
key = 'a',
|
||||||
|
mods = 'CTRL',
|
||||||
|
timeout_milliseconds = 2000,
|
||||||
|
}
|
||||||
|
|
||||||
|
config.keys = {
|
||||||
|
-- Attach to muxer
|
||||||
|
{
|
||||||
|
key = 'a',
|
||||||
|
mods = 'LEADER',
|
||||||
|
action = wezterm.action.AttachDomain 'unix',
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Detach from muxer
|
||||||
|
{
|
||||||
|
key = 'd',
|
||||||
|
mods = 'LEADER',
|
||||||
|
action = wezterm.action.DetachDomain { DomainName = 'unix' },
|
||||||
|
},
|
||||||
-- sends completion string for fish autosuggestions
|
-- sends completion string for fish autosuggestions
|
||||||
{
|
{
|
||||||
key = 'Enter',
|
key = 'Enter',
|
||||||
@ -229,8 +262,23 @@
|
|||||||
)
|
)
|
||||||
end),
|
end),
|
||||||
},
|
},
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- print the workspace name at the upper right
|
||||||
|
wezterm.on("update-right-status", function(window, pane)
|
||||||
|
window:set_right_status(window:active_workspace())
|
||||||
|
end)
|
||||||
|
-- load plugin
|
||||||
|
local workspace_switcher = wezterm.plugin.require("https://github.com/MLFlexer/smart_workspace_switcher.wezterm")
|
||||||
|
-- set path to zoxide
|
||||||
|
workspace_switcher.zoxide_path = "${pkgs.zoxide}/bin/zoxide"
|
||||||
|
-- keymaps
|
||||||
|
table.insert(config.keys, { key = "s", mods = "CTRL|SHIFT", action = workspace_switcher.switch_workspace() })
|
||||||
|
-- table.insert(config.keys, { key = "t", mods = "CTRL|SHIFT", action = wezterm.action.ShowLauncherArgs({ flags = "FUZZY|WORKSPACES" }) })
|
||||||
|
table.insert(config.keys, { key = "[", mods = "CTRL|SHIFT", action = wezterm.action.SwitchWorkspaceRelative(1) })
|
||||||
|
table.insert(config.keys, { key = "]", mods = "CTRL|SHIFT", action = wezterm.action.SwitchWorkspaceRelative(-1) })
|
||||||
|
|
||||||
|
return config
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -76,7 +76,20 @@
|
|||||||
description = "List of unfree packages to allow.";
|
description = "List of unfree packages to allow.";
|
||||||
default = [ ];
|
default = [ ];
|
||||||
};
|
};
|
||||||
|
insecurePackages = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
description = "List of insecure packages to allow.";
|
||||||
|
default = [ ];
|
||||||
|
};
|
||||||
hostnames = {
|
hostnames = {
|
||||||
|
audiobooks = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Hostname for audiobook server (Audiobookshelf).";
|
||||||
|
};
|
||||||
|
budget = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Hostname for budgeting server (ActualBudget).";
|
||||||
|
};
|
||||||
files = lib.mkOption {
|
files = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Hostname for files server (Filebrowser).";
|
description = "Hostname for files server (Filebrowser).";
|
||||||
@ -97,6 +110,10 @@
|
|||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Hostname for document server (paperless-ngx).";
|
description = "Hostname for document server (paperless-ngx).";
|
||||||
};
|
};
|
||||||
|
photos = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Hostname for photo management (Immich).";
|
||||||
|
};
|
||||||
prometheus = lib.mkOption {
|
prometheus = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Hostname for Prometheus server.";
|
description = "Hostname for Prometheus server.";
|
||||||
@ -173,6 +190,9 @@
|
|||||||
# Retrieves package object based on string name
|
# Retrieves package object based on string name
|
||||||
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) config.unfreePackages;
|
nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) config.unfreePackages;
|
||||||
|
|
||||||
|
# Allow specified insecure packages (identified elsewhere)
|
||||||
|
nixpkgs.config.permittedInsecurePackages = config.insecurePackages;
|
||||||
|
|
||||||
# Pin a state version to prevent warnings
|
# Pin a state version to prevent warnings
|
||||||
home-manager.users.${config.user}.home.stateVersion = stateVersion;
|
home-manager.users.${config.user}.home.stateVersion = stateVersion;
|
||||||
home-manager.users.root.home.stateVersion = stateVersion;
|
home-manager.users.root.home.stateVersion = stateVersion;
|
||||||
|
@ -169,7 +169,8 @@
|
|||||||
filters = {
|
filters = {
|
||||||
"text/plain" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
|
"text/plain" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
|
||||||
"text/calendar" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/libexec/aerc/filters/calendar";
|
"text/calendar" = "${pkgs.gawk}/bin/awk -f ${pkgs.aerc}/libexec/aerc/filters/calendar";
|
||||||
"text/html" = "${pkgs.aerc}/libexec/aerc/filters/html | ${pkgs.aerc}/libexec/aerc/filters/colorize"; # Requires w3m, dante
|
"text/html" =
|
||||||
|
"${pkgs.aerc}/libexec/aerc/filters/html | ${pkgs.aerc}/libexec/aerc/filters/colorize"; # Requires w3m, dante
|
||||||
# "text/*" =
|
# "text/*" =
|
||||||
# ''${pkgs.bat}/bin/bat -fP --file-name="$AERC_FILENAME "'';
|
# ''${pkgs.bat}/bin/bat -fP --file-name="$AERC_FILENAME "'';
|
||||||
"message/delivery-status" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
|
"message/delivery-status" = "${pkgs.aerc}/libexec/aerc/filters/colorize";
|
||||||
@ -190,20 +191,19 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.desktopEntries.aerc = lib.mkIf pkgs.stdenv.isLinux {
|
xdg.desktopEntries.aerc = lib.mkIf (pkgs.stdenv.isLinux && config.gui.enable) {
|
||||||
name = "aerc";
|
name = "aerc";
|
||||||
exec = "kitty aerc %u";
|
exec = "${config.terminalLaunchCommand} aerc %u";
|
||||||
};
|
};
|
||||||
xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux {
|
xsession.windowManager.i3.config.keybindings = lib.mkIf pkgs.stdenv.isLinux {
|
||||||
"${
|
"${config.home-manager.users.${config.user}.xsession.windowManager.i3.config.modifier}+Shift+e" =
|
||||||
config.home-manager.users.${config.user}.xsession.windowManager.i3.config.modifier
|
"exec ${
|
||||||
}+Shift+e" = "exec ${
|
|
||||||
# Don't name the script `aerc` or it will affect grep
|
# Don't name the script `aerc` or it will affect grep
|
||||||
builtins.toString (
|
builtins.toString (
|
||||||
pkgs.writeShellScript "focus-mail.sh" ''
|
pkgs.writeShellScript "focus-mail.sh" ''
|
||||||
count=$(ps aux | grep -c aerc)
|
count=$(ps aux | grep -c aerc)
|
||||||
if [ "$count" -eq 1 ]; then
|
if [ "$count" -eq 1 ]; then
|
||||||
i3-msg "exec --no-startup-id kitty --class aerc aerc"
|
i3-msg "exec --no-startup-id ${config.terminal} start --class aerc -- aerc"
|
||||||
sleep 0.25
|
sleep 0.25
|
||||||
fi
|
fi
|
||||||
i3-msg "[class=aerc] focus"
|
i3-msg "[class=aerc] focus"
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
{
|
{
|
||||||
|
|
||||||
plugins = [
|
plugins = [
|
||||||
|
pkgs.vimPlugins.nvim-cmp
|
||||||
pkgs.vimPlugins.cmp-nvim-lsp
|
pkgs.vimPlugins.cmp-nvim-lsp
|
||||||
pkgs.vimPlugins.cmp-buffer
|
pkgs.vimPlugins.cmp-buffer
|
||||||
pkgs.vimPlugins.cmp-path
|
pkgs.vimPlugins.cmp-path
|
||||||
@ -26,15 +27,21 @@
|
|||||||
|
|
||||||
# Basic completion keybinds
|
# Basic completion keybinds
|
||||||
mapping = {
|
mapping = {
|
||||||
"['<C-n>']" = dsl.rawLua "require('cmp').mapping.select_next_item({ behavior = require('cmp').SelectBehavior.Insert }, { 'i', 'c' })";
|
"['<C-n>']" =
|
||||||
"['<C-p>']" = dsl.rawLua "require('cmp').mapping.select_prev_item({ behavior = require('cmp').SelectBehavior.Insert }, { 'i', 'c' })";
|
dsl.rawLua "require('cmp').mapping.select_next_item({ behavior = require('cmp').SelectBehavior.Insert }, { 'i', 'c' })";
|
||||||
"['<Down>']" = dsl.rawLua "require('cmp').mapping.select_next_item({ behavior = require('cmp').SelectBehavior.Select }, { 'i', 'c' })";
|
"['<C-p>']" =
|
||||||
"['<Up>']" = dsl.rawLua "require('cmp').mapping.select_prev_item({ behavior = require('cmp').SelectBehavior.Select }, { 'i', 'c' })";
|
dsl.rawLua "require('cmp').mapping.select_prev_item({ behavior = require('cmp').SelectBehavior.Insert }, { 'i', 'c' })";
|
||||||
|
"['<Down>']" =
|
||||||
|
dsl.rawLua "require('cmp').mapping.select_next_item({ behavior = require('cmp').SelectBehavior.Select }, { 'i', 'c' })";
|
||||||
|
"['<Up>']" =
|
||||||
|
dsl.rawLua "require('cmp').mapping.select_prev_item({ behavior = require('cmp').SelectBehavior.Select }, { 'i', 'c' })";
|
||||||
"['<C-d>']" = dsl.rawLua "require('cmp').mapping.scroll_docs(-4)";
|
"['<C-d>']" = dsl.rawLua "require('cmp').mapping.scroll_docs(-4)";
|
||||||
"['<C-f>']" = dsl.rawLua "require('cmp').mapping.scroll_docs(4)";
|
"['<C-f>']" = dsl.rawLua "require('cmp').mapping.scroll_docs(4)";
|
||||||
"['<C-e>']" = dsl.rawLua "require('cmp').mapping.abort()";
|
"['<C-e>']" = dsl.rawLua "require('cmp').mapping.abort()";
|
||||||
"['<C-y>']" = dsl.rawLua "require('cmp').mapping.confirm({ behavior = require('cmp').ConfirmBehavior.Insert, select = true, }, { 'i', 'c' })";
|
"['<C-y>']" =
|
||||||
"['<C-r>']" = dsl.rawLua "require('cmp').mapping.confirm({ behavior = require('cmp').ConfirmBehavior.Replace, select = true, }, { 'i', 'c' })";
|
dsl.rawLua "require('cmp').mapping.confirm({ behavior = require('cmp').ConfirmBehavior.Insert, select = true, }, { 'i', 'c' })";
|
||||||
|
"['<C-r>']" =
|
||||||
|
dsl.rawLua "require('cmp').mapping.confirm({ behavior = require('cmp').ConfirmBehavior.Replace, select = true, }, { 'i', 'c' })";
|
||||||
"['<Esc>']" = dsl.rawLua ''
|
"['<Esc>']" = dsl.rawLua ''
|
||||||
function(_)
|
function(_)
|
||||||
cmp.mapping({
|
cmp.mapping({
|
||||||
@ -128,7 +135,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
lua = ''
|
lua' = ''
|
||||||
-- Use buffer source for `/`
|
-- Use buffer source for `/`
|
||||||
require('cmp').setup.cmdline("/", {
|
require('cmp').setup.cmdline("/", {
|
||||||
mapping = {
|
mapping = {
|
||||||
|
@ -21,7 +21,7 @@ function TERM_TOGGLE()
|
|||||||
basicterminal:toggle()
|
basicterminal:toggle()
|
||||||
end
|
end
|
||||||
|
|
||||||
local nixpkgs = terminal:new({ cmd = "nix repl '<nixpkgs>'" })
|
local nixpkgs = terminal:new({ cmd = "nix repl --expr 'import <nixpkgs>{}'" })
|
||||||
function NIXPKGS_TOGGLE()
|
function NIXPKGS_TOGGLE()
|
||||||
nixpkgs:toggle()
|
nixpkgs:toggle()
|
||||||
end
|
end
|
||||||
|
23
modules/common/shell/bash/scripts/jqr.sh
Executable file
23
modules/common/shell/bash/scripts/jqr.sh
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Adapted from: https://gist.github.com/reegnz/b9e40993d410b75c2d866441add2cb55
|
||||||
|
|
||||||
|
if [[ -z $1 ]] || [[ $1 == "-" ]]; then
|
||||||
|
input=$(mktemp)
|
||||||
|
trap 'rm -f $input' EXIT
|
||||||
|
cat /dev/stdin >"$input"
|
||||||
|
else
|
||||||
|
input=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo '' |
|
||||||
|
fzf --phony \
|
||||||
|
--height 100% \
|
||||||
|
--preview-window='up:80%' \
|
||||||
|
--query '.' \
|
||||||
|
--print-query \
|
||||||
|
--header $'CTRL-O: jq output\nCTRL-Y: copy output\nALT-Y: copy query' \
|
||||||
|
--preview "jq --color-output -r {q} $input" \
|
||||||
|
--bind "ctrl-o:execute(jq -r {q} $input)+clear-query+accept" \
|
||||||
|
--bind "alt-y:execute(echo {q} | pbcopy)" \
|
||||||
|
--bind "ctrl-y:execute(jq -r {q} $input | pbcopy)"
|
@ -1,4 +1,4 @@
|
|||||||
set vimfile (fzf)
|
set vimfile (fzf)
|
||||||
and set vimfile (echo $vimfile | tr -d '\r')
|
and set vimfile (echo $vimfile | tr -d '\r')
|
||||||
and commandline -r "vim $vimfile"
|
and commandline -r "vim \"$vimfile\""
|
||||||
and commandline -f execute
|
and commandline -f execute
|
||||||
|
@ -41,5 +41,16 @@
|
|||||||
FZF_CTRL_T_COMMAND = fzfCommand;
|
FZF_CTRL_T_COMMAND = fzfCommand;
|
||||||
FZF_DEFAULT_OPTS = "-m --height 50% --border";
|
FZF_DEFAULT_OPTS = "-m --height 50% --border";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "jqr";
|
||||||
|
runtimeInputs = [
|
||||||
|
pkgs.jq
|
||||||
|
pkgs.fzf
|
||||||
|
];
|
||||||
|
text = builtins.readFile ./bash/scripts/jqr.sh;
|
||||||
|
})
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
|
||||||
|
unfreePackages = [ "gh-copilot" ];
|
||||||
|
|
||||||
home-manager.users.${config.user} = {
|
home-manager.users.${config.user} = {
|
||||||
|
|
||||||
programs.gh = lib.mkIf config.home-manager.users.${config.user}.programs.git.enable {
|
programs.gh = lib.mkIf config.home-manager.users.${config.user}.programs.git.enable {
|
||||||
@ -15,6 +17,7 @@
|
|||||||
extensions = [
|
extensions = [
|
||||||
pkgs.gh-collaborators
|
pkgs.gh-collaborators
|
||||||
pkgs.gh-dash
|
pkgs.gh-dash
|
||||||
|
pkgs.gh-copilot
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -54,7 +57,7 @@
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
selected=$(gh repo list "$organization" \
|
selected=$(gh repo list "$organization" \
|
||||||
--limit 100 \
|
--limit 1000 \
|
||||||
--no-archived \
|
--no-archived \
|
||||||
--json=name,description,isPrivate,updatedAt,primaryLanguage \
|
--json=name,description,isPrivate,updatedAt,primaryLanguage \
|
||||||
| jq -r '.[] | .name + "," + if .description == "" then "-" else .description |= gsub(","; " ") | .description end + "," + .updatedAt + "," + .primaryLanguage.name' \
|
| jq -r '.[] | .name + "," + if .description == "" then "-" else .description |= gsub(","; " ") | .description end + "," + .updatedAt + "," + .primaryLanguage.name' \
|
||||||
|
@ -13,12 +13,18 @@
|
|||||||
ns = "nix-shell -p";
|
ns = "nix-shell -p";
|
||||||
nsf = "nix-shell --run fish -p";
|
nsf = "nix-shell --run fish -p";
|
||||||
nsr = "nix-shell-run";
|
nsr = "nix-shell-run";
|
||||||
nps = "nix repl '<nixpkgs>'";
|
nps = "nix repl --expr 'import <nixpkgs>{}'";
|
||||||
nixo = "man configuration.nix";
|
nixo = "man configuration.nix";
|
||||||
nixh = "man home-configuration.nix";
|
nixh = "man home-configuration.nix";
|
||||||
nr = "rebuild-nixos";
|
nr = {
|
||||||
nro = "rebuild-nixos offline";
|
function = "rebuild-nixos";
|
||||||
hm = "rebuild-home";
|
};
|
||||||
|
nro = {
|
||||||
|
function = "rebuild-nixos-offline";
|
||||||
|
};
|
||||||
|
hm = {
|
||||||
|
function = "rebuild-home";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
functions = {
|
functions = {
|
||||||
nix-shell-run = {
|
nix-shell-run = {
|
||||||
@ -42,19 +48,20 @@
|
|||||||
};
|
};
|
||||||
rebuild-nixos = {
|
rebuild-nixos = {
|
||||||
body = ''
|
body = ''
|
||||||
if test "$argv[1]" = "offline"
|
|
||||||
set option "--option substitute false"
|
|
||||||
end
|
|
||||||
git -C ${config.dotfilesPath} add --intent-to-add --all
|
git -C ${config.dotfilesPath} add --intent-to-add --all
|
||||||
commandline -r "doas nixos-rebuild switch $option --flake ${config.dotfilesPath}#${config.networking.hostName}"
|
echo "doas nixos-rebuild switch --flake ${config.dotfilesPath}#${config.networking.hostName}"
|
||||||
commandline --function execute
|
'';
|
||||||
|
};
|
||||||
|
rebuild-nixos-offline = {
|
||||||
|
body = ''
|
||||||
|
git -C ${config.dotfilesPath} add --intent-to-add --all
|
||||||
|
echo "doas nixos-rebuild switch --option substitute false --flake ${config.dotfilesPath}#${config.networking.hostName}"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
rebuild-home = {
|
rebuild-home = {
|
||||||
body = ''
|
body = ''
|
||||||
git -C ${config.dotfilesPath} add --intent-to-add --all
|
git -C ${config.dotfilesPath} add --intent-to-add --all
|
||||||
commandline -r "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#${config.networking.hostName}";
|
echo "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#${config.networking.hostName}";
|
||||||
commandline --function execute
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -91,12 +98,6 @@
|
|||||||
# Set channel to flake packages, used for nix-shell commands
|
# Set channel to flake packages, used for nix-shell commands
|
||||||
nixPath = [ "nixpkgs=${pkgs.path}" ];
|
nixPath = [ "nixpkgs=${pkgs.path}" ];
|
||||||
|
|
||||||
# Set registry to this flake's packages, used for nix X commands
|
|
||||||
registry.nixpkgs.to = {
|
|
||||||
type = "path";
|
|
||||||
path = builtins.toString pkgs.path;
|
|
||||||
};
|
|
||||||
|
|
||||||
# For security, only allow specific users
|
# For security, only allow specific users
|
||||||
settings.allowed-users = [
|
settings.allowed-users = [
|
||||||
"@wheel"
|
"@wheel"
|
||||||
|
@ -31,12 +31,14 @@ in
|
|||||||
jo # JSON output
|
jo # JSON output
|
||||||
jq # JSON manipulation
|
jq # JSON manipulation
|
||||||
lf # File viewer
|
lf # File viewer
|
||||||
|
osc # Clipboard over SSH
|
||||||
qrencode # Generate qr codes
|
qrencode # Generate qr codes
|
||||||
rsync # Copy folders
|
rsync # Copy folders
|
||||||
ren # Rename files
|
# ren # Rename files
|
||||||
# rep # Replace text in files
|
# rep # Replace text in files
|
||||||
ripgrep # grep
|
ripgrep # grep
|
||||||
sd # sed
|
sd # sed
|
||||||
|
spacer # Output lines in terminal
|
||||||
tealdeer # Cheatsheets
|
tealdeer # Cheatsheets
|
||||||
tree # View directory hierarchy
|
tree # View directory hierarchy
|
||||||
vimv-rs # Batch rename files
|
vimv-rs # Batch rename files
|
||||||
|
@ -13,7 +13,11 @@
|
|||||||
let
|
let
|
||||||
ldap_scheme = "ldaps";
|
ldap_scheme = "ldaps";
|
||||||
magic_prefix = "take";
|
magic_prefix = "take";
|
||||||
ldap_port = 636;
|
ldap_port = 3269;
|
||||||
|
jq_parse = pkgs.writeShellScriptBin "ljq" ''
|
||||||
|
jq --slurp \
|
||||||
|
--raw-input 'split("\n\n")|map(split("\n")|map(select(.[0:1]!="#" and length>0)) |select(length > 0)|map(capture("^(?<key>[^:]*:?): *(?<value>.*)") |if .key[-1:.key|length] == ":" then .key=.key[0:-1]|.value=(.value|@base64d) else . end)| group_by(.key) | map({key:.[0].key,value:(if .|length > 1 then [.[].value] else .[].value end)}) | from_entries)' | jq -r 'del(.[].thumbnailPhoto)'
|
||||||
|
'';
|
||||||
ldap_script = pkgs.writeShellScriptBin "ldap" ''
|
ldap_script = pkgs.writeShellScriptBin "ldap" ''
|
||||||
if ! [ "$LDAP_HOST" ]; then
|
if ! [ "$LDAP_HOST" ]; then
|
||||||
echo "No LDAP_HOST specified!"
|
echo "No LDAP_HOST specified!"
|
||||||
@ -22,13 +26,13 @@
|
|||||||
SEARCH_FILTER="$@"
|
SEARCH_FILTER="$@"
|
||||||
ldapsearch -LLL \
|
ldapsearch -LLL \
|
||||||
-B -o ldif-wrap=no \
|
-B -o ldif-wrap=no \
|
||||||
|
-E pr=5000/prompt \
|
||||||
-H "${ldap_scheme}://''${LDAP_HOST}:${builtins.toString ldap_port}" \
|
-H "${ldap_scheme}://''${LDAP_HOST}:${builtins.toString ldap_port}" \
|
||||||
-D "${pkgs.lib.toUpper magic_prefix}2\\${pkgs.lib.toLower config.user}" \
|
-D "${pkgs.lib.toUpper magic_prefix}2\\${pkgs.lib.toLower config.user}" \
|
||||||
-w "$(${pkgs._1password}/bin/op item get T2 --fields label=password)" \
|
-w "$(${pkgs._1password-cli}/bin/op item get T2 --fields label=password --reveal)" \
|
||||||
-b "dc=''${LDAP_HOST//./,dc=}" \
|
-b "dc=''${LDAP_HOST//./,dc=}" \
|
||||||
-s "sub" -x "(cn=''${SEARCH_FILTER})" \
|
-s "sub" -x "(cn=''${SEARCH_FILTER})" \
|
||||||
| jq --slurp \
|
| ${jq_parse}/bin/ljq
|
||||||
--raw-input 'split("\n\n")|map(split("\n")|map(select(.[0:1]!="#" and length>0)) |select(length > 0)|map(capture("^(?<key>[^:]*:?): *(?<value>.*)") |if .key[-1:.key|length] == ":" then .key=.key[0:-1]|.value=(.value|@base64d) else . end)| group_by(.key) | map({key:.[0].key,value:(if .|length > 1 then [.[].value] else .[].value end)}) | from_entries)' | jq -r 'del(.[].thumbnailPhoto)'
|
|
||||||
'';
|
'';
|
||||||
ldapm_script = pkgs.writeShellScriptBin "ldapm" ''
|
ldapm_script = pkgs.writeShellScriptBin "ldapm" ''
|
||||||
if ! [ "$LDAP_HOST" ]; then
|
if ! [ "$LDAP_HOST" ]; then
|
||||||
@ -49,6 +53,7 @@
|
|||||||
ldap_script
|
ldap_script
|
||||||
ldapm_script
|
ldapm_script
|
||||||
ldapg_script
|
ldapg_script
|
||||||
|
jq_parse
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -8,14 +8,14 @@
|
|||||||
|
|
||||||
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
||||||
|
|
||||||
home.packages = with pkgs; [ (nerdfonts.override { fonts = [ "VictorMono" ]; }) ];
|
home.packages = with pkgs; [ nerd-fonts.victor-mono ];
|
||||||
|
|
||||||
programs.alacritty.settings = {
|
programs.alacritty.settings = {
|
||||||
font.normal.family = "VictorMono";
|
font.normal.family = "VictorMono";
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.kitty.font = {
|
programs.kitty.font = {
|
||||||
package = (pkgs.nerdfonts.override { fonts = [ "VictorMono" ]; });
|
package = pkgs.nerd-fonts.victor-mono;
|
||||||
name = "VictorMono Nerd Font Mono";
|
name = "VictorMono Nerd Font Mono";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -36,7 +36,7 @@
|
|||||||
homebrew.casks = [ "hammerspoon" ];
|
homebrew.casks = [ "hammerspoon" ];
|
||||||
|
|
||||||
system.activationScripts.postUserActivation.text = ''
|
system.activationScripts.postUserActivation.text = ''
|
||||||
defaults write org.hammerspoon.Hammerspoon MJConfigFile "~/.config/hammerspoon/init.lua"
|
defaults write org.hammerspoon.Hammerspoon MJConfigFile "${config.homePath}/.config/hammerspoon/init.lua"
|
||||||
sudo killall Dock
|
sudo killall Dock
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
@ -46,7 +46,7 @@
|
|||||||
"scroll-reverser" # Different scroll style for mouse vs. trackpad
|
"scroll-reverser" # Different scroll style for mouse vs. trackpad
|
||||||
"notunes" # Don't launch Apple Music with the play button
|
"notunes" # Don't launch Apple Music with the play button
|
||||||
"steam" # Not packaged for Nixon macOS
|
"steam" # Not packaged for Nixon macOS
|
||||||
# "epic-games" # Not packaged for Nix
|
"epic-games" # Not packaged for Nix
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -6,11 +6,12 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
|
||||||
config = lib.mkIf pkgs.stdenv.isDarwin {
|
# config = lib.mkIf pkgs.stdenv.isDarwin {
|
||||||
networking = {
|
# networking = {
|
||||||
computerName = config.networking.hostName;
|
# computerName = config.networking.hostName;
|
||||||
# Adjust if necessary
|
# # Adjust if necessary
|
||||||
# hostName = "";
|
# # hostName = "";
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
|
# }
|
||||||
}
|
}
|
||||||
|
@ -10,25 +10,30 @@
|
|||||||
|
|
||||||
programs.fish = {
|
programs.fish = {
|
||||||
shellAbbrs = {
|
shellAbbrs = {
|
||||||
nr = lib.mkForce "rebuild-darwin";
|
nr = {
|
||||||
nro = lib.mkForce "rebuild-darwin offline";
|
function = lib.mkForce "rebuild-darwin";
|
||||||
|
};
|
||||||
|
nro = {
|
||||||
|
function = lib.mkForce "rebuild-darwin-offline";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
functions = {
|
functions = {
|
||||||
rebuild-darwin = {
|
rebuild-darwin = {
|
||||||
body = ''
|
body = ''
|
||||||
if test "$argv[1]" = "offline"
|
|
||||||
set option "--option substitute false"
|
|
||||||
end
|
|
||||||
git -C ${config.dotfilesPath} add --intent-to-add --all
|
git -C ${config.dotfilesPath} add --intent-to-add --all
|
||||||
commandline -r "darwin-rebuild switch $option --flake ${config.dotfilesPath}#lookingglass"
|
echo "darwin-rebuild switch --flake ${config.dotfilesPath}#lookingglass"
|
||||||
commandline --function execute
|
'';
|
||||||
|
};
|
||||||
|
rebuild-darwin-offline = {
|
||||||
|
body = ''
|
||||||
|
git -C ${config.dotfilesPath} add --intent-to-add --all
|
||||||
|
echo "darwin-rebuild switch --option substitute false --flake ${config.dotfilesPath}#lookingglass"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
rebuild-home = lib.mkForce {
|
rebuild-home = lib.mkForce {
|
||||||
body = ''
|
body = ''
|
||||||
git -C ${config.dotfilesPath} add --intent-to-add --all
|
git -C ${config.dotfilesPath} add --intent-to-add --all
|
||||||
commandline -r "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#lookingglass";
|
echo "${pkgs.home-manager}/bin/home-manager switch --flake ${config.dotfilesPath}#lookingglass";
|
||||||
commandline --function execute
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -6,6 +6,19 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
|
|
||||||
|
options = {
|
||||||
|
terminal = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
description = "Path to executable for terminal emulator program.";
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
terminalLaunchCommand = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
description = "Command for using the terminal to launch a new window with a program.";
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
config = lib.mkIf pkgs.stdenv.isDarwin {
|
config = lib.mkIf pkgs.stdenv.isDarwin {
|
||||||
|
|
||||||
services.nix-daemon.enable = true;
|
services.nix-daemon.enable = true;
|
||||||
@ -135,6 +148,9 @@
|
|||||||
# Where to save screenshots
|
# Where to save screenshots
|
||||||
screencapture.location = "~/Downloads";
|
screencapture.location = "~/Downloads";
|
||||||
|
|
||||||
|
# Show seconds on the clock
|
||||||
|
menuExtraClock.ShowSeconds = true;
|
||||||
|
|
||||||
CustomUserPreferences = {
|
CustomUserPreferences = {
|
||||||
# Disable disk image verification
|
# Disable disk image verification
|
||||||
"com.apple.frameworks.diskimages" = {
|
"com.apple.frameworks.diskimages" = {
|
||||||
|
@ -11,11 +11,12 @@
|
|||||||
users.users."${config.user}" = {
|
users.users."${config.user}" = {
|
||||||
# macOS user
|
# macOS user
|
||||||
home = config.homePath;
|
home = config.homePath;
|
||||||
|
uid = 502;
|
||||||
# shell = pkgs.fish; # Default shell
|
# shell = pkgs.fish; # Default shell
|
||||||
};
|
};
|
||||||
|
|
||||||
# This might fix the shell issues
|
# This might fix the shell issues
|
||||||
# users.knownUsers = [ config.user ];
|
users.knownUsers = [ config.user ];
|
||||||
|
|
||||||
home-manager.users.${config.user} = {
|
home-manager.users.${config.user} = {
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
unfreePackages = [
|
unfreePackages = [
|
||||||
"consul"
|
"consul"
|
||||||
"vault-bin"
|
"vault-bin"
|
||||||
"teams"
|
# "teams"
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
home-manager.users.${config.user} = lib.mkIf pkgs.stdenv.isDarwin {
|
||||||
@ -32,8 +32,9 @@
|
|||||||
pkgs.consul
|
pkgs.consul
|
||||||
pkgs.noti # Create notifications programmatically
|
pkgs.noti # Create notifications programmatically
|
||||||
pkgs.ipcalc # Make IP network calculations
|
pkgs.ipcalc # Make IP network calculations
|
||||||
pkgs.teams
|
# pkgs.teams
|
||||||
pkgs.cloudflared # Allow connecting to Cloudflare tunnels
|
pkgs.cloudflared # Allow connecting to Cloudflare tunnels
|
||||||
|
pkgs.monitorcontrol # Allows adjusting external displays
|
||||||
(pkgs.writeShellApplication {
|
(pkgs.writeShellApplication {
|
||||||
name = "ocr";
|
name = "ocr";
|
||||||
runtimeInputs = [ pkgs.tesseract ];
|
runtimeInputs = [ pkgs.tesseract ];
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
"steam-original"
|
"steam-original"
|
||||||
"steamcmd"
|
"steamcmd"
|
||||||
"steam-run"
|
"steam-run"
|
||||||
|
"steam-unwrapped"
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.steam = {
|
programs.steam = {
|
||||||
@ -27,7 +28,7 @@
|
|||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
|
|
||||||
# Enable terminal interaction
|
# Enable terminal interaction
|
||||||
steamPackages.steamcmd
|
steamcmd
|
||||||
steam-tui
|
steam-tui
|
||||||
|
|
||||||
# Overlay with performance monitoring
|
# Overlay with performance monitoring
|
||||||
|
@ -46,6 +46,16 @@
|
|||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
description = "Command to use for power options menu";
|
description = "Command to use for power options menu";
|
||||||
};
|
};
|
||||||
|
terminal = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
description = "Path to executable for terminal emulator program.";
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
terminalLaunchCommand = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
description = "Command for using the terminal to launch a new window with a program.";
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
wallpaper = lib.mkOption {
|
wallpaper = lib.mkOption {
|
||||||
type = lib.types.path;
|
type = lib.types.path;
|
||||||
description = "Wallpaper background image file";
|
description = "Wallpaper background image file";
|
||||||
|
@ -14,7 +14,7 @@ in
|
|||||||
|
|
||||||
fonts.packages = with pkgs; [
|
fonts.packages = with pkgs; [
|
||||||
victor-mono # Used for Vim and Terminal
|
victor-mono # Used for Vim and Terminal
|
||||||
(nerdfonts.override { fonts = [ "Hack" ]; }) # For Polybar, Rofi
|
nerd-fonts.hack # For Polybar, Rofi
|
||||||
];
|
];
|
||||||
fonts.fontconfig.defaultFonts.monospace = [ fontName ];
|
fonts.fontconfig.defaultFonts.monospace = [ fontName ];
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ in
|
|||||||
cycle = true;
|
cycle = true;
|
||||||
location = "center";
|
location = "center";
|
||||||
pass = { };
|
pass = { };
|
||||||
|
terminal = lib.mkIf pkgs.stdenv.isLinux config.terminal;
|
||||||
plugins = [
|
plugins = [
|
||||||
pkgs.rofi-calc
|
pkgs.rofi-calc
|
||||||
pkgs.rofi-emoji
|
pkgs.rofi-emoji
|
||||||
|
@ -38,13 +38,14 @@
|
|||||||
setupCommands = ''
|
setupCommands = ''
|
||||||
${pkgs.xorg.xrandr}/bin/xrandr --output DisplayPort-1 \
|
${pkgs.xorg.xrandr}/bin/xrandr --output DisplayPort-1 \
|
||||||
--mode 1920x1200 \
|
--mode 1920x1200 \
|
||||||
--pos 1920x0 \
|
--pos 2560x0 \
|
||||||
--rotate left \
|
--rotate left \
|
||||||
--output HDMI-A-0 \
|
--output DisplayPort-0 \
|
||||||
--primary \
|
--primary \
|
||||||
--mode 1920x1080 \
|
--mode 2560x1440 \
|
||||||
--pos 0x560 \
|
--pos 0x560 \
|
||||||
--rotate normal \
|
--rotate normal \
|
||||||
|
--rate 120 \
|
||||||
--output DVI-0 --off \
|
--output DVI-0 --off \
|
||||||
--output DVI-1 --off \
|
--output DVI-1 --off \
|
||||||
'';
|
'';
|
||||||
|
74
modules/nixos/services/actualbudget.nix
Normal file
74
modules/nixos/services/actualbudget.nix
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
{
|
||||||
|
|
||||||
|
options = {
|
||||||
|
services.actualbudget = {
|
||||||
|
enable = lib.mkEnableOption "ActualBudget budgeting service";
|
||||||
|
port = lib.mkOption {
|
||||||
|
type = lib.types.port;
|
||||||
|
description = "Port to use for the localhost";
|
||||||
|
default = 5006;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf config.services.actualbudget.enable {
|
||||||
|
|
||||||
|
virtualisation.podman.enable = lib.mkDefault true;
|
||||||
|
|
||||||
|
users.users.actualbudget = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "shared";
|
||||||
|
uid = 980;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Create budget directory, allowing others to manage it
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d /var/lib/actualbudget 0770 actualbudget shared"
|
||||||
|
];
|
||||||
|
|
||||||
|
virtualisation.oci-containers.containers.actualbudget = {
|
||||||
|
workdir = null;
|
||||||
|
volumes = [ "/var/lib/actualbudget:/data" ];
|
||||||
|
user = "${toString (builtins.toString config.users.users.actualbudget.uid)}";
|
||||||
|
pull = "missing";
|
||||||
|
privileged = false;
|
||||||
|
ports = [ "127.0.0.1:${builtins.toString config.services.actualbudget.port}:5006" ];
|
||||||
|
networks = [ ];
|
||||||
|
log-driver = "journald";
|
||||||
|
labels = {
|
||||||
|
app = "actualbudget";
|
||||||
|
};
|
||||||
|
image = "ghcr.io/actualbudget/actual-server:25.1.0";
|
||||||
|
hostname = null;
|
||||||
|
environmentFiles = [ ];
|
||||||
|
environment = {
|
||||||
|
DEBUG = "actual:config"; # Enable debug logging
|
||||||
|
ACTUAL_TRUSTED_PROXIES = builtins.concatStringsSep "," [ "127.0.0.1" ];
|
||||||
|
};
|
||||||
|
dependsOn = [ ];
|
||||||
|
autoStart = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Allow web traffic to Caddy
|
||||||
|
caddy.routes = [
|
||||||
|
{
|
||||||
|
match = [ { host = [ config.hostnames.budget ]; } ];
|
||||||
|
handle = [
|
||||||
|
{
|
||||||
|
handler = "reverse_proxy";
|
||||||
|
upstreams = [ { dial = "localhost:${builtins.toString config.services.actualbudget.port}"; } ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Configure Cloudflare DNS to point to this machine
|
||||||
|
services.cloudflare-dyndns.domains = [ config.hostnames.budget ];
|
||||||
|
|
||||||
|
# Backups
|
||||||
|
services.restic.backups.default.paths = [ "/var/lib/actualbudget" ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -44,41 +44,44 @@ in
|
|||||||
|
|
||||||
config = lib.mkIf config.arrs.enable {
|
config = lib.mkIf config.arrs.enable {
|
||||||
|
|
||||||
|
# Broken on 2024-12-07
|
||||||
|
# https://discourse.nixos.org/t/solved-sonarr-is-broken-in-24-11-unstable-aka-how-the-hell-do-i-use-nixpkgs-config-permittedinsecurepackages/
|
||||||
|
insecurePackages = [
|
||||||
|
"aspnetcore-runtime-wrapped-6.0.36"
|
||||||
|
"aspnetcore-runtime-6.0.36"
|
||||||
|
"dotnet-sdk-wrapped-6.0.428"
|
||||||
|
"dotnet-sdk-6.0.428"
|
||||||
|
];
|
||||||
|
|
||||||
services = {
|
services = {
|
||||||
bazarr = {
|
bazarr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
group = "media";
|
group = "shared";
|
||||||
};
|
};
|
||||||
jellyseerr.enable = true;
|
jellyseerr.enable = true;
|
||||||
prowlarr.enable = true;
|
prowlarr.enable = true;
|
||||||
sabnzbd = {
|
sabnzbd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
group = "media";
|
group = "shared";
|
||||||
# The config file must be editable within the application
|
# The config file must be editable within the application
|
||||||
# It contains server configs and credentials
|
# It contains server configs and credentials
|
||||||
configFile = "/data/downloads/sabnzbd/sabnzbd.ini";
|
configFile = "/data/downloads/sabnzbd/sabnzbd.ini";
|
||||||
};
|
};
|
||||||
sonarr = {
|
sonarr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
group = "media";
|
group = "shared";
|
||||||
};
|
};
|
||||||
radarr = {
|
radarr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
group = "media";
|
group = "shared";
|
||||||
};
|
};
|
||||||
readarr = {
|
readarr = {
|
||||||
enable = true;
|
enable = true;
|
||||||
group = "media";
|
group = "shared";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Create a media group to be shared between services
|
# Allows shared group to read/write the sabnzbd directory
|
||||||
users.groups.media = { };
|
|
||||||
|
|
||||||
# Give the human user access to the media group
|
|
||||||
users.users.${config.user}.extraGroups = [ "media" ];
|
|
||||||
|
|
||||||
# Allows media group to read/write the sabnzbd directory
|
|
||||||
users.users.sabnzbd.homeMode = "0770";
|
users.users.sabnzbd.homeMode = "0770";
|
||||||
|
|
||||||
unfreePackages = [ "unrar" ]; # Required as a dependency for sabnzbd
|
unfreePackages = [ "unrar" ]; # Required as a dependency for sabnzbd
|
||||||
|
@ -1,16 +1,10 @@
|
|||||||
{ config, lib, ... }:
|
{ config, lib, ... }:
|
||||||
{
|
{
|
||||||
|
|
||||||
options = {
|
|
||||||
hostnames.audiobooks = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
description = "Hostname for audiobook server (Audiobookshelf).";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.services.audiobookshelf.enable {
|
config = lib.mkIf config.services.audiobookshelf.enable {
|
||||||
|
|
||||||
services.audiobookshelf = {
|
services.audiobookshelf = {
|
||||||
|
group = "shared";
|
||||||
dataDir = "audiobookshelf";
|
dataDir = "audiobookshelf";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -30,15 +24,6 @@
|
|||||||
# Configure Cloudflare DNS to point to this machine
|
# Configure Cloudflare DNS to point to this machine
|
||||||
services.cloudflare-dyndns.domains = [ config.hostnames.audiobooks ];
|
services.cloudflare-dyndns.domains = [ config.hostnames.audiobooks ];
|
||||||
|
|
||||||
# Grant user access to Audiobookshelf directories
|
|
||||||
users.users.${config.user}.extraGroups = [ config.services.audiobookshelf.group ];
|
|
||||||
|
|
||||||
# Grant audiobookshelf access to media and Calibre directories
|
|
||||||
users.users.${config.services.audiobookshelf.user}.extraGroups = [
|
|
||||||
"media"
|
|
||||||
"calibre-web"
|
|
||||||
];
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,11 @@
|
|||||||
description = "S3 access key ID for backups";
|
description = "S3 access key ID for backups";
|
||||||
default = null;
|
default = null;
|
||||||
};
|
};
|
||||||
|
resticBucket = lib.mkOption {
|
||||||
|
type = lib.types.nullOr lib.types.str;
|
||||||
|
description = "S3 bucket for restic backups";
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -46,7 +51,7 @@
|
|||||||
|
|
||||||
# Broken on 2024-08-23
|
# Broken on 2024-08-23
|
||||||
# https://github.com/NixOS/nixpkgs/commit/0875d0ce1c778f344cd2377a5337a45385d6ffa0
|
# https://github.com/NixOS/nixpkgs/commit/0875d0ce1c778f344cd2377a5337a45385d6ffa0
|
||||||
nixpkgs.config.permittedInsecurePackages = [ "litestream-0.3.13" ];
|
insecurePackages = [ "litestream-0.3.13" ];
|
||||||
|
|
||||||
# Wait for secret to exist
|
# Wait for secret to exist
|
||||||
systemd.services.litestream = {
|
systemd.services.litestream = {
|
||||||
@ -69,5 +74,30 @@
|
|||||||
# timerConfig = { OnCalendar = "00:05:00"; };
|
# timerConfig = { OnCalendar = "00:05:00"; };
|
||||||
# environmentFile = backup.s3File;
|
# environmentFile = backup.s3File;
|
||||||
# };
|
# };
|
||||||
|
|
||||||
|
secrets.s3-glacier = {
|
||||||
|
source = ../../../private/s3-glacier.age;
|
||||||
|
dest = "${config.secretsDirectory}/s3-glacier";
|
||||||
|
};
|
||||||
|
secrets.restic = {
|
||||||
|
source = ../../../private/restic.age;
|
||||||
|
dest = "${config.secretsDirectory}/restic";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.restic.backups = lib.mkIf (config.backup.s3.resticBucket != null) {
|
||||||
|
default = {
|
||||||
|
repository = "s3:s3.us-east-1.amazonaws.com/${config.backup.s3.resticBucket}/restic";
|
||||||
|
paths = [ ];
|
||||||
|
environmentFile = config.secrets.s3-glacier.dest;
|
||||||
|
passwordFile = config.secrets.restic.dest;
|
||||||
|
pruneOpts = [
|
||||||
|
"--keep-daily 14"
|
||||||
|
"--keep-weekly 6"
|
||||||
|
"--keep-monthly 12"
|
||||||
|
"--keep-yearly 100"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,7 @@ let
|
|||||||
config.hostnames.content
|
config.hostnames.content
|
||||||
config.hostnames.books
|
config.hostnames.books
|
||||||
config.hostnames.download
|
config.hostnames.download
|
||||||
|
config.hostnames.photos
|
||||||
];
|
];
|
||||||
mkRecord = service: "${service} A ${localIp}";
|
mkRecord = service: "${service} A ${localIp}";
|
||||||
localRecords = lib.concatLines (map mkRecord localServices);
|
localRecords = lib.concatLines (map mkRecord localServices);
|
||||||
|
@ -28,6 +28,7 @@ in
|
|||||||
config = lib.mkIf config.services.calibre-web.enable {
|
config = lib.mkIf config.services.calibre-web.enable {
|
||||||
|
|
||||||
services.calibre-web = {
|
services.calibre-web = {
|
||||||
|
group = "shared";
|
||||||
openFirewall = true;
|
openFirewall = true;
|
||||||
options = {
|
options = {
|
||||||
reverseProxyAuth.enable = false;
|
reverseProxyAuth.enable = false;
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
./actualbudget.nix
|
||||||
./audiobookshelf.nix
|
./audiobookshelf.nix
|
||||||
./arr.nix
|
./arr.nix
|
||||||
./backups.nix
|
./backups.nix
|
||||||
@ -15,6 +16,7 @@
|
|||||||
./cloudflare.nix
|
./cloudflare.nix
|
||||||
./filebrowser.nix
|
./filebrowser.nix
|
||||||
./identity.nix
|
./identity.nix
|
||||||
|
./immich.nix
|
||||||
./irc.nix
|
./irc.nix
|
||||||
./gitea-runner.nix
|
./gitea-runner.nix
|
||||||
./gitea.nix
|
./gitea.nix
|
||||||
|
@ -5,12 +5,6 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
user =
|
|
||||||
if config.services.nextcloud.enable then
|
|
||||||
config.services.phpfpm.pools.nextcloud.user
|
|
||||||
else
|
|
||||||
"filebrowser";
|
|
||||||
|
|
||||||
dataDir = "/var/lib/filebrowser";
|
dataDir = "/var/lib/filebrowser";
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
@ -43,15 +37,15 @@ in
|
|||||||
startLimitBurst = 10;
|
startLimitBurst = 10;
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkgs.filebrowser}/bin/filebrowser";
|
ExecStart = "${pkgs.filebrowser}/bin/filebrowser";
|
||||||
DynamicUser = !config.services.nextcloud.enable; # Unique user if not using Nextcloud
|
DynamicUser = true;
|
||||||
User = user;
|
Group = "shared";
|
||||||
Group = user;
|
|
||||||
ReadWritePaths = [ dataDir ];
|
ReadWritePaths = [ dataDir ];
|
||||||
StateDirectory = [ "filebrowser" ];
|
StateDirectory = [ "filebrowser" ];
|
||||||
Restart = "on-failure";
|
Restart = "on-failure";
|
||||||
RestartPreventExitStatus = 1;
|
RestartPreventExitStatus = 1;
|
||||||
RestartSec = "5s";
|
RestartSec = "5s";
|
||||||
};
|
};
|
||||||
|
path = [ pkgs.getent ]; # Fix: getent not found in $PATH
|
||||||
};
|
};
|
||||||
|
|
||||||
caddy.routes = [
|
caddy.routes = [
|
||||||
|
48
modules/nixos/services/immich.nix
Normal file
48
modules/nixos/services/immich.nix
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
config = lib.mkIf config.services.immich.enable {
|
||||||
|
|
||||||
|
services.immich = {
|
||||||
|
port = 2283;
|
||||||
|
group = "shared";
|
||||||
|
database.enable = true;
|
||||||
|
redis.enable = true;
|
||||||
|
machine-learning.enable = true;
|
||||||
|
machine-learning.environment = { };
|
||||||
|
mediaLocation = "/data/images";
|
||||||
|
secretsFile = null;
|
||||||
|
settings.server.externalDomain = "https://${config.hostnames.photos}";
|
||||||
|
environment = {
|
||||||
|
IMMICH_ENV = "production";
|
||||||
|
IMMICH_LOG_LEVEL = "log";
|
||||||
|
NO_COLOR = "false";
|
||||||
|
IMMICH_TRUSTED_PROXIES = "127.0.0.1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
caddy.routes = [
|
||||||
|
{
|
||||||
|
match = [ { host = [ config.hostnames.photos ]; } ];
|
||||||
|
handle = [
|
||||||
|
{
|
||||||
|
handler = "reverse_proxy";
|
||||||
|
upstreams = [ { dial = "localhost:${builtins.toString config.services.immich.port}"; } ];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Configure Cloudflare DNS to point to this machine
|
||||||
|
services.cloudflare-dyndns.domains = [ config.hostnames.photos ];
|
||||||
|
|
||||||
|
# Point localhost to the local domain
|
||||||
|
networking.hosts."127.0.0.1" = [ config.hostnames.photos ];
|
||||||
|
|
||||||
|
# Backups
|
||||||
|
services.restic.backups.default.paths = [ "/data/images" ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
config = lib.mkIf config.services.jellyfin.enable {
|
config = lib.mkIf config.services.jellyfin.enable {
|
||||||
|
|
||||||
services.jellyfin.group = "media";
|
services.jellyfin.group = "shared";
|
||||||
users.users.jellyfin = {
|
users.users.jellyfin = {
|
||||||
isSystemUser = true;
|
isSystemUser = true;
|
||||||
};
|
};
|
||||||
@ -49,8 +49,8 @@
|
|||||||
|
|
||||||
# Create videos directory, allow anyone in Jellyfin group to manage it
|
# Create videos directory, allow anyone in Jellyfin group to manage it
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"d /var/lib/jellyfin 0775 jellyfin media"
|
"d /var/lib/jellyfin 0775 jellyfin shared"
|
||||||
"d /var/lib/jellyfin/library 0775 jellyfin media"
|
"d /var/lib/jellyfin/library 0775 jellyfin shared"
|
||||||
];
|
];
|
||||||
|
|
||||||
# Enable VA-API for hardware transcoding
|
# Enable VA-API for hardware transcoding
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
config = lib.mkIf config.services.nextcloud.enable {
|
config = lib.mkIf config.services.nextcloud.enable {
|
||||||
|
|
||||||
services.nextcloud = {
|
services.nextcloud = {
|
||||||
package = pkgs.nextcloud29; # Required to specify
|
package = pkgs.nextcloud30; # Required to specify
|
||||||
configureRedis = true;
|
configureRedis = true;
|
||||||
datadir = "/data/nextcloud";
|
datadir = "/data/nextcloud";
|
||||||
database.createLocally = true;
|
database.createLocally = true;
|
||||||
|
@ -57,5 +57,9 @@
|
|||||||
systemd.services.paperless-web.serviceConfig.UMask = lib.mkForce "0026";
|
systemd.services.paperless-web.serviceConfig.UMask = lib.mkForce "0026";
|
||||||
systemd.services.paperless-scheduler.serviceConfig.UMask = lib.mkForce "0026";
|
systemd.services.paperless-scheduler.serviceConfig.UMask = lib.mkForce "0026";
|
||||||
systemd.services.paperless-task-queue.serviceConfig.UMask = lib.mkForce "0026";
|
systemd.services.paperless-task-queue.serviceConfig.UMask = lib.mkForce "0026";
|
||||||
|
|
||||||
|
# Backups
|
||||||
|
services.restic.backups.default.paths = [ "/data/generic/paperless/documents" ];
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -91,8 +91,6 @@ in
|
|||||||
services.vmagent = {
|
services.vmagent = {
|
||||||
package = pkgs-stable.vmagent;
|
package = pkgs-stable.vmagent;
|
||||||
prometheusConfig = prometheusConfig;
|
prometheusConfig = prometheusConfig;
|
||||||
# https://github.com/VictoriaMetrics/VictoriaMetrics/issues/5567
|
|
||||||
extraArgs = [ "-promscrape.maxScrapeSize 450000000" ];
|
|
||||||
remoteWrite = {
|
remoteWrite = {
|
||||||
url = "https://${config.hostnames.prometheus}/api/v1/write";
|
url = "https://${config.hostnames.prometheus}/api/v1/write";
|
||||||
basicAuthUsername = username;
|
basicAuthUsername = username;
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
./auto-upgrade.nix
|
./auto-upgrade.nix
|
||||||
./doas.nix
|
./doas.nix
|
||||||
./journald.nix
|
./journald.nix
|
||||||
|
./shared.nix
|
||||||
./user.nix
|
./user.nix
|
||||||
./timezone.nix
|
./timezone.nix
|
||||||
];
|
];
|
||||||
|
14
modules/nixos/system/shared.nix
Normal file
14
modules/nixos/system/shared.nix
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{ config, lib, ... }:
|
||||||
|
{
|
||||||
|
|
||||||
|
config = lib.mkIf config.server {
|
||||||
|
|
||||||
|
# Create a shared group for many services
|
||||||
|
users.groups.shared = { };
|
||||||
|
|
||||||
|
# Give the human user access to the shared group
|
||||||
|
users.users.${config.user}.extraGroups = [ config.users.groups.shared.name ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
@ -1,3 +0,0 @@
|
|||||||
# Add disko to nixpkgs from its input flake
|
|
||||||
|
|
||||||
inputs: _final: prev: { disko = inputs.disko.packages.${prev.system}.disko; }
|
|
@ -2,11 +2,10 @@ inputs: _final: prev: {
|
|||||||
|
|
||||||
gh-collaborators = prev.buildGoModule rec {
|
gh-collaborators = prev.buildGoModule rec {
|
||||||
pname = "gh-collaborators";
|
pname = "gh-collaborators";
|
||||||
version = "v2.0.3";
|
version = "v3.0.0";
|
||||||
src = inputs.gh-collaborators;
|
src = inputs.gh-collaborators;
|
||||||
|
|
||||||
# vendorHash = "sha256-rsRDOgJBa8T6+bC/APcmuRmg6ykbIp9pwRnJ9rrfHEs=";
|
vendorHash = "sha256-9qmvG2q9t1Zj8yhKFyA99IaJ90R/gRVdQVjdliVKLRE";
|
||||||
vendorHash = "sha256-fykxRb2U9DDsXorRTLiVWmhMY89N7RS07sal8ww6gz4=";
|
|
||||||
|
|
||||||
ldflags = [
|
ldflags = [
|
||||||
"-s"
|
"-s"
|
||||||
|
15
overlays/osc.nix
Normal file
15
overlays/osc.nix
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
inputs: _final: prev: {
|
||||||
|
|
||||||
|
osc = prev.buildGoModule {
|
||||||
|
pname = "osc";
|
||||||
|
version = "v0.4.6";
|
||||||
|
src = inputs.osc;
|
||||||
|
|
||||||
|
vendorHash = "sha256-POtQWIjPObsfa3YZ1dLZgedZFUcc4HeTWjU20AucoKc=";
|
||||||
|
|
||||||
|
ldflags = [
|
||||||
|
"-s"
|
||||||
|
"-w"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
44
overlays/volnoti.nix
Normal file
44
overlays/volnoti.nix
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
# Fix: Volnoti error: 'volnoti' has been removed due to lack of maintenance upstream.
|
||||||
|
_final: prev: {
|
||||||
|
volnoti = prev.stdenv.mkDerivation {
|
||||||
|
pname = "volnoti-unstable";
|
||||||
|
version = "2013-09-23";
|
||||||
|
src = prev.fetchFromGitHub {
|
||||||
|
owner = "davidbrazdil";
|
||||||
|
repo = "volnoti";
|
||||||
|
rev = "4af7c8e54ecc499097121909f02ecb42a8a60d24";
|
||||||
|
sha256 = "155lb7w563dkdkdn4752hl0zjhgnq3j4cvs9z98nb25k1xpmpki7";
|
||||||
|
};
|
||||||
|
patches = [
|
||||||
|
# Fix dbus interface headers. See
|
||||||
|
# https://github.com/davidbrazdil/volnoti/pull/10
|
||||||
|
(prev.fetchpatch {
|
||||||
|
url = "https://github.com/davidbrazdil/volnoti/commit/623ad8ea5c3ac8720d00a2ced4b6163aae38c119.patch";
|
||||||
|
sha256 = "046zfdjmvhb7jrsgh04vfgi35sgy1zkrhd3bzdby3nvds1wslfam";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
nativeBuildInputs = with prev; [
|
||||||
|
pkg-config
|
||||||
|
autoreconfHook
|
||||||
|
wrapGAppsHook3
|
||||||
|
];
|
||||||
|
buildInputs = with prev; [
|
||||||
|
dbus
|
||||||
|
gdk-pixbuf
|
||||||
|
glib
|
||||||
|
xorg.libX11
|
||||||
|
gtk2
|
||||||
|
dbus-glib
|
||||||
|
librsvg
|
||||||
|
];
|
||||||
|
meta = with prev.lib; {
|
||||||
|
description = "Lightweight volume notification for Linux";
|
||||||
|
homepage = "https://github.com/davidbrazdil/volnoti";
|
||||||
|
license = licenses.gpl3;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = [ ];
|
||||||
|
# Broken by https://github.com/nix-community/home-manager/pull/5725/commits/98bf8de65dc1ed12c6443b18f6f24d36e9c438d6
|
||||||
|
mainProgram = "volnoti";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
17
private/restic.age
Normal file
17
private/restic.age
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyAvWi9T
|
||||||
|
NnFzUnlKUGord21NUy9OT1NDRjhIbFB6MUc3TzgwVzY3OHpFSlN3CmhuNFY1L1FB
|
||||||
|
VFBHY1lNNjFYdFZyeHoxZUZyTFdpVHhqM1JqMUM3YWljVUUKLT4gc3NoLWVkMjU1
|
||||||
|
MTkgWXlTVU1RIFI4aGU5Z2NUeGNSNmEzNFk0anBBbUw0NUtHTE55WmgxOUN0T1p1
|
||||||
|
QUZyR2cKeTNack0vMVVsNTFMbmFSUXdUUkw2MTlnSzhRajVSWXJvZmV2QjlFcUZY
|
||||||
|
QQotPiBzc2gtZWQyNTUxOSBuanZYNUEgc01kWFdYS3BBay96Uzd5cG1MMlNMNXhQ
|
||||||
|
NTV4NVpvc2lLZkpLWkhZZlRrVQo0SXJhWUVMVUtYb1hEOEtJUnJoY2t0OUlpQVY2
|
||||||
|
UUZYdHpBcWRvUU0yRHlvCi0+IHNzaC1lZDI1NTE5IENxSU9VQSB2NTZHWUd2c3o1
|
||||||
|
c0NKTThaMkgyeG54Nmw1dHZBQkZoYmJkOTZNcnVyMUJVCldzQ1NHNk8vTGRMNHlM
|
||||||
|
eU0yYmltMkhlUjY2NWxhdHQ2N3BMUjdzTk9PMFkKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
|
Y1p3IHh3OEEzTmIrQXhtSTE2REFUV1loVE5vNTRUbEJmNEE4YmhBckRmZGpwVXMK
|
||||||
|
OEo5RXdwU1JuY3FPQnJNQ1hMdHJxcE4xVnVVWVVLREROYjNsZkN3ZzV2cwotLS0g
|
||||||
|
aXMrandHZTJzME95VFRuUDRzWDQ5Z3N5RGxVOUUxQ1FGNGpvN3Y4SllSNApAOIi/
|
||||||
|
0iP9cccbkUqLZJicpIlKAP+QsYM8Bfb/wYyaQPnh4vlKqil4LpQEfFW+/J82DIti
|
||||||
|
8o/ddK8YDlLg3lwyiZ2dUm3O87jA7KEgd/g=
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
18
private/s3-glacier.age
Normal file
18
private/s3-glacier.age
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IE1nSGFPdyBuQTZM
|
||||||
|
TTg0ai9yNi9Ia3pFNW0vb3JQczZtVEVyNkFNVzBlUVpVd3ZBbndrCklqdS8zeGky
|
||||||
|
WEN0YW5xck5sSXpXeFZCbHY0NHhDMU5SeGlaYmN4Szc0b1EKLT4gc3NoLWVkMjU1
|
||||||
|
MTkgWXlTVU1RIGJVZTZBdERTNUt6d0sxeGVOcnRtNmdCSlRKWUNjRHByMkZucUlz
|
||||||
|
Nm5FMTQKbHFtNnM4ZCtzdFNTa214ZVRkaFdmZnFYOCs1Z25YTDVVKzloYUVHVlg1
|
||||||
|
cwotPiBzc2gtZWQyNTUxOSBuanZYNUEgOXFwSzByaUdidFRWbE5seFNEVDYxRWtq
|
||||||
|
OXZURnEzVWphM0VoVnJvSURoUQpGbEt4YmcraDZOcXRTQUF1ekw4RTRCN2JRR1NK
|
||||||
|
QlRQaGRZd1RIMWNiRWpjCi0+IHNzaC1lZDI1NTE5IENxSU9VQSBzTTVsbnVjWUxt
|
||||||
|
L0hyM21RS2w2a2NIY2xvSmZ0OUdDWGFVcG5IYlNhUFNzClY1bmdNUkRYR2QyYVFW
|
||||||
|
VHF3enZqUlZqUWlvZlI2aHZrREdwZGUwdzdXUHMKLT4gc3NoLWVkMjU1MTkgejFP
|
||||||
|
Y1p3IDN4cThQRjdvTWJ2S2FaMjZ0RHlDeElDc1BuU0JDSzlpcFdzT2ZhLzA1QmcK
|
||||||
|
TjlFMkgzOFhKbkdvUWt2SGhaUUJXdjBxK2hUeE1sSzBsNWJyNG8rUlZRbwotLS0g
|
||||||
|
SGw4VmpCMktjQ0ZpUExnWUtsOHhHS0tZckoxeTdtZXMyVXpWT09Ea1NUMAoRRzA+
|
||||||
|
0rbfJ+eVeccDaulmqh+Wv3T1/+SQQJYD5trume3vSzXgRxJYeXR/BespsDzWJ3yg
|
||||||
|
McHYNvEK76stD3vopKvpDU3Nk861xp++SavJtrIVKon6YJl6a6Ox+GxhrNk0+5f9
|
||||||
|
xgDWhIHwzHLPvyseYNjRFy8GsYaP2tT9TGMrQHFTAKeuvA==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
Reference in New Issue
Block a user