Compare commits

...

81 Commits

Author SHA1 Message Date
Jonas Röger
5a11ad41a1 Home Gen20 @ 2026-03-19-15:33 by admin-jroeger@T14-OE130-7-ubuntu 2026-03-19 15:33:10 +01:00
Jonas Röger
2cc98ec7d7 Home Gen19 @ 2026-03-17-13:45 by admin-jroeger@T14-OE130-7-ubuntu 2026-03-19 15:30:19 +01:00
Jonas Röger
7d84a0187b Home Gen19 @ 2026-03-17-13:45 by admin-jroeger@T14-OE130-7-ubuntu 2026-03-18 13:23:09 +01:00
392831a507 System Gen142 @ 2026-02-20-01:25:05 by jonas@monolith 2026-02-20 01:25:06 +01:00
a7daedf944 System Gen140 @ 2026-02-15-01:18:21 by jonas@monolith 2026-02-19 23:52:01 +01:00
3c98db60ca System Gen139 @ 2026-02-13-20:04:18 by jonas@monolith 2026-02-19 23:52:01 +01:00
730084e210 System Gen223 @ 2026-02-19-16:47:06 by jonas@comfy-station 2026-02-19 16:47:06 +01:00
a01c946395 System Gen220 @ 2025-12-19-14:20:56 by jonas@comfy-station 2026-02-17 16:25:27 +01:00
Jonas Röger
650c841eca Home Gen18 @ 2026-02-12-12:23 by admin-jroeger@T14-OE130-7-ubuntu 2026-02-12 12:29:47 +01:00
Jonas Röger
a6da47ffd6 Home Gen16 @ 2025-10-21-17:49 by admin-jroeger@T14-OE130-7-ubuntu 2026-02-12 12:16:44 +01:00
5b00c43e0c Home Gen73 @ 2026-02-12-02:03 by jonas@monolith 2026-02-12 02:03:17 +01:00
353a684434 Home Gen72 @ 2026-02-12-01:56 by jonas@monolith 2026-02-12 01:56:38 +01:00
761388df6e Home Gen71 @ 2026-02-12-01:23 by jonas@monolith 2026-02-12 01:29:47 +01:00
f54f1aba19 Home Gen70 @ 2025-11-13-00:27 by jonas@monolith 2026-02-12 01:21:50 +01:00
5091db4d53 Upgrade Gen138 @ 2026-02-09-23:27:47 by jonas@monolith 2026-02-09 23:27:48 +01:00
fdac641d3a System Gen137 @ 2026-01-11-17:18:36 by jonas@monolith 2026-01-11 17:18:36 +01:00
25f87c2b13 System Gen136 @ 2026-01-10-17:53:14 by jonas@monolith 2026-01-11 16:52:20 +01:00
98eca968b1 System Gen135 @ 2026-01-10-17:05:29 by jonas@monolith 2026-01-11 16:52:20 +01:00
8a08e534ad System Gen134 @ 2026-01-10-17:02:33 by jonas@monolith 2026-01-11 16:52:20 +01:00
de6f2a96b3 System Gen133 @ 2026-01-10-16:23:52 by jonas@monolith 2026-01-11 16:52:20 +01:00
27dcc3a0b3 Upgrade Gen132 @ 2025-12-29-22:14:15 by jonas@monolith 2026-01-11 16:52:20 +01:00
72b150dd66 System Gen131 @ 2025-12-28-00:22:42 by jonas@monolith 2026-01-11 16:52:20 +01:00
a39cf3763b System Gen130 @ 2025-12-28-00:15:46 by jonas@monolith 2026-01-11 16:52:20 +01:00
b1d891df98 System Gen129 @ 2025-12-27-01:17:02 by jonas@monolith 2026-01-11 16:52:20 +01:00
3033f9ca9a Home Gen550 @ 2025-12-19-14:46 by jonas@comfy-station 2025-12-19 14:47:08 +01:00
da82fc0edf System Gen219 @ 2025-12-18-14:01:21 by jonas@comfy-station 2025-12-19 13:58:22 +01:00
0b70c63f33 System Gen121 @ 2025-12-12-19:47:19 by jonas@monolith 2025-12-12 19:47:19 +01:00
450fc3554c Home Gen70 @ 2025-11-13-00:27 by jonas@monolith 2025-12-12 19:22:39 +01:00
9e54a6f68d System Gen120 @ 2025-12-12-19:18:08 by jonas@monolith 2025-12-12 19:18:09 +01:00
20d74dd4ef System Gen119 @ 2025-12-10-01:20:42 by jonas@monolith 2025-12-12 17:46:49 +01:00
4d36cc534b Upgrade Gen218 @ 2025-12-11-13:33:27 by jonas@comfy-station 2025-12-11 13:33:28 +01:00
8f2875befe System Gen58 @ 2025-12-08-22:08:50 by jonas@harbor 2025-12-08 22:08:50 +01:00
10b0e8fd44 System Gen117 @ 2025-12-04-22:49:55 by jonas@monolith 2025-12-08 22:01:43 +01:00
2a4e567a3e System Gen116 @ 2025-12-04-22:48:26 by jonas@monolith 2025-12-08 22:01:43 +01:00
dd82100d9e System Gen115 @ 2025-12-04-22:46:36 by jonas@monolith 2025-12-08 22:01:43 +01:00
252db727a6 System Gen114 @ 2025-11-20-20:47:22 by jonas@monolith 2025-12-08 22:01:43 +01:00
ce1a0acc76 System Gen113 @ 2025-11-20-20:40:31 by jonas@monolith 2025-12-08 22:01:43 +01:00
d185f097f2 System Gen217 @ 2025-12-04-14:24:56 by jonas@comfy-station 2025-12-04 14:24:57 +01:00
147c255448 System Gen216 @ 2025-11-26-15:46:35 by jonas@comfy-station 2025-11-26 15:46:35 +01:00
0237bd1242 System Gen215 @ 2025-11-26-15:42:04 by jonas@comfy-station 2025-11-26 15:42:05 +01:00
e2ddd6247f System Gen112 @ 2025-11-20-19:51:44 by jonas@monolith 2025-11-20 19:51:45 +01:00
6fac88ecc2 System Gen111 @ 2025-11-17-02:42:57 by jonas@monolith 2025-11-17 02:42:58 +01:00
bb20341e00 Upgrade Gen110 @ 2025-11-13-00:26:15 by jonas@monolith 2025-11-13 00:26:16 +01:00
e56f375478 Home Gen69 @ 2025-10-31-00:59 by jonas@monolith 2025-10-31 00:59:33 +01:00
a469c09921 Home Gen68 @ 2025-10-31-00:52 by jonas@monolith 2025-10-31 00:52:03 +01:00
f7dd93d6d8 Home Gen67 @ 2025-10-31-00:44 by jonas@monolith 2025-10-31 00:44:43 +01:00
d5e924cc4c Home Gen66 @ 2025-10-31-00:26 by jonas@monolith 2025-10-31 00:26:27 +01:00
71ba6f354f Home Gen65 @ 2025-10-31-00:23 by jonas@monolith 2025-10-31 00:23:29 +01:00
5536caf46d Home Gen64 @ 2025-10-31-00:22 by jonas@monolith 2025-10-31 00:22:03 +01:00
2ec173bcac System Gen55 @ 2025-10-30-16:09:03 by jonas@harbor 2025-10-30 16:09:03 +01:00
62a8444bf8 System Gen44 @ 2025-10-24-12:58:16 by jonas@harbor 2025-10-24 12:58:17 +02:00
859d0203b2 Home Gen546 @ 2025-10-23-16:42 by jonas@comfy-station 2025-10-23 16:46:12 +02:00
de37b2e868 Home Gen61 @ 2025-10-21-18:20 by jonas@monolith 2025-10-21 18:20:49 +02:00
7dd1d94a31 Home Gen60 @ 2025-10-21-18:15 by jonas@monolith 2025-10-21 18:15:16 +02:00
485932b95c Home Gen59 @ 2025-10-21-18:12 by jonas@monolith 2025-10-21 18:12:29 +02:00
988d5ed854 Home Gen58 @ 2025-10-01-23:57 by jonas@monolith 2025-10-21 18:10:27 +02:00
Jonas Röger
d2e4038b86 Home Gen15 @ 2025-10-21-17:35 by admin-jroeger@T14-OE130-7-ubuntu 2025-10-21 17:45:54 +02:00
Jonas Röger
09eca5df43 Home Gen15 @ 2025-10-21-17:35 by admin-jroeger@T14-OE130-7-ubuntu 2025-10-21 17:35:45 +02:00
Jonas Röger
203486d20b Home Gen14 @ 2025-10-21-17:28 by admin-jroeger@T14-OE130-7-ubuntu 2025-10-21 17:28:14 +02:00
Jonas Röger
be9de4973e Home Gen13 @ 2025-10-21-17:16 by admin-jroeger@T14-OE130-7-ubuntu 2025-10-21 17:17:00 +02:00
Jonas Röger
b42b1f876e Home Gen12 @ 2025-10-21-16:17 by admin-jroeger@T14-OE130-7-ubuntu 2025-10-21 16:17:49 +02:00
Jonas Röger
38966c5b27 Home Gen11 @ 2025-10-21-16:04 by admin-jroeger@T14-OE130-7-ubuntu 2025-10-21 16:04:42 +02:00
Jonas Röger
72bd0887b4 Home Gen10 @ 2025-10-20-12:41 by admin-jroeger@T14-OE130-7-ubuntu 2025-10-21 16:01:55 +02:00
Jonas Röger
f74c0a4c8d Home Gen9 @ 2025-10-15-12:19 by admin-jroeger@T14-OE130-7-ubuntu 2025-10-21 15:46:00 +02:00
Jonas Röger
25088efbe2 Home Gen8 @ 2025-10-08-15:18 by admin-jroeger@T14-OE130-7-ubuntu 2025-10-21 15:45:59 +02:00
Jonas Röger
e8e96838b8 Home Gen7 @ 2025-10-08-14:51 by admin-jroeger@T14-OE130-7-ubuntu 2025-10-21 15:45:56 +02:00
2e65642ea8 Home Gen544 @ 2025-10-21-12:15 by jonas@comfy-station 2025-10-21 12:15:20 +02:00
cf603c4f1a System Gen43 @ 2025-10-21-01:13:38 by jonas@harbor 2025-10-21 01:13:38 +02:00
ad2f446bab System Gen42 @ 2025-10-21-01:01:51 by jonas@harbor 2025-10-21 01:01:51 +02:00
3895687b8d System Gen41 @ 2025-10-21-00:56:22 by jonas@harbor 2025-10-21 00:56:23 +02:00
959c3ae52f System Gen40 @ 2025-10-21-00:52:15 by jonas@harbor 2025-10-21 00:52:16 +02:00
feae35d04e harbor: add gitea 2025-10-21 00:37:23 +02:00
8fe0efde13 Upgrade Gen109 @ 2025-10-19-14:30:21 by jonas@monolith 2025-10-19 14:30:22 +02:00
f16cf36b1e System Gen108 @ 2025-10-19-14:15:06 by jonas@monolith 2025-10-19 14:15:07 +02:00
58eaa374ac System Gen107 @ 2025-10-19-14:10:22 by jonas@monolith 2025-10-19 14:10:22 +02:00
4397a97111 Home Gen542 @ 2025-10-17-14:45 by jonas@comfy-station 2025-10-17 14:46:01 +02:00
c001453553 System Gen212 @ 2025-10-15-00:49:12 by jonas@comfy-station 2025-10-15 00:49:13 +02:00
5866f3a8d6 System Gen211 @ 2025-10-14-19:57:52 by jonas@comfy-station 2025-10-14 19:57:52 +02:00
9a977d889d System Gen210 @ 2025-10-14-19:44:36 by jonas@comfy-station 2025-10-14 19:44:37 +02:00
2e5036cbbc System Gen209 @ 2025-10-14-19:32:25 by jonas@comfy-station 2025-10-14 19:32:26 +02:00
810e1dea23 System Gen208 @ 2025-10-14-17:05:52 by jonas@comfy-station 2025-10-14 17:05:53 +02:00
39 changed files with 1202 additions and 291 deletions

57
fixes/plasma-fix.nix Normal file
View File

@@ -0,0 +1,57 @@
# https://github.com/NixOS/nixpkgs/issues/126590#issuecomment-3194531220
{
config,
pkgs,
lib,
...
}: {
nixpkgs.overlays = lib.singleton (final: prev: {
kdePackages =
prev.kdePackages
// {
plasma-workspace = let
# the package we want to override
basePkg = prev.kdePackages.plasma-workspace;
# a helper package that merges all the XDG_DATA_DIRS into a single directory
xdgdataPkg = pkgs.stdenv.mkDerivation {
name = "${basePkg.name}-xdgdata";
buildInputs = [basePkg];
dontUnpack = true;
dontFixup = true;
dontWrapQtApps = true;
installPhase = ''
mkdir -p $out/share
( IFS=:
for DIR in $XDG_DATA_DIRS; do
if [[ -d "$DIR" ]]; then
cp -r $DIR/. $out/share/
chmod -R u+w $out/share
fi
done
)
'';
};
# undo the XDG_DATA_DIRS injection that is usually done in the qt wrapper
# script and instead inject the path of the above helper package
derivedPkg = basePkg.overrideAttrs {
preFixup = ''
for index in "''${!qtWrapperArgs[@]}"; do
if [[ ''${qtWrapperArgs[$((index+0))]} == "--prefix" ]] && [[ ''${qtWrapperArgs[$((index+1))]} == "XDG_DATA_DIRS" ]]; then
unset -v "qtWrapperArgs[$((index+0))]"
unset -v "qtWrapperArgs[$((index+1))]"
unset -v "qtWrapperArgs[$((index+2))]"
unset -v "qtWrapperArgs[$((index+3))]"
fi
done
qtWrapperArgs=("''${qtWrapperArgs[@]}")
qtWrapperArgs+=(--prefix XDG_DATA_DIRS : "${xdgdataPkg}/share")
qtWrapperArgs+=(--prefix XDG_DATA_DIRS : "$out/share")
'';
};
in
derivedPkg;
};
});
}

465
flake.lock generated
View File

@@ -20,11 +20,11 @@
]
},
"locked": {
"lastModified": 1755946532,
"narHash": "sha256-POePremlUY5GyA1zfbtic6XLxDaQcqHN6l+bIxdT5gc=",
"lastModified": 1770411700,
"narHash": "sha256-VpeOlyospHF+vxE+xEGEy0utMN0d/FUDvD2dOg9ZiIo=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "81584dae2df6ac79f6b6dae0ecb7705e95129ada",
"rev": "b91f570bb7885df9e4a512d6e95a13960a5bdca0",
"type": "github"
},
"original": {
@@ -35,17 +35,18 @@
},
"audio": {
"inputs": {
"mucap": "mucap",
"nix-buildproxy": "nix-buildproxy",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1757578366,
"narHash": "sha256-gPxQdaX0sP/ddT1g/TFHstcvBSGFnrrDHNaU9WBGnRc=",
"lastModified": 1769805770,
"narHash": "sha256-gTSS83rAxZU2VYjgmxrbWEnFxk7OMEQFf38omYi2wQw=",
"owner": "polygon",
"repo": "audio.nix",
"rev": "598aacc9542ca3f933fd7b63821587c566568e18",
"rev": "3b0ad654379d080f7ddc98e9de6ff9eedaa20d2d",
"type": "github"
},
"original": {
@@ -61,11 +62,11 @@
]
},
"locked": {
"lastModified": 1749410315,
"narHash": "sha256-5H8MuMMSq1WnQcvb1FiDNkKP+uyeZ8HX5GRTMfEOyLI=",
"lastModified": 1764972059,
"narHash": "sha256-MLdmXiPhouR4nSxIZwNEHWGYT2rR9UquaYGbZPEBgRk=",
"owner": "lelgenio",
"repo": "dzgui-nix",
"rev": "49adbb1edfb3c25b0cd8256d35673394386065e7",
"rev": "14bd77c58f4cc4864513f9d887ad387337c9411f",
"type": "github"
},
"original": {
@@ -74,6 +75,30 @@
"type": "github"
}
},
"fenix": {
"inputs": {
"nixpkgs": [
"audio",
"mucap",
"naersk",
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1752475459,
"narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=",
"owner": "nix-community",
"repo": "fenix",
"rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"firefox-addons": {
"inputs": {
"nixpkgs": [
@@ -82,11 +107,11 @@
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1758427412,
"narHash": "sha256-VbVedyzFU0URoEccHZOzZI3tuCVfGFz12F1/bFdDyAk=",
"lastModified": 1770609827,
"narHash": "sha256-5J3I/ERia1xhWkPwugnpbucAE8lI5ip2ohTZ3xK2HrY=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "72d7daed5a5e07593b70a3ab26ad0fdecadc49c3",
"rev": "60b2a2d7633b61981a694ad30bc1b19b64a949f1",
"type": "gitlab"
},
"original": {
@@ -99,15 +124,15 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1747046372,
"narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra",
"lastModified": 1767039857,
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
"owner": "NixOS",
"repo": "flake-compat",
"rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
"type": "github"
},
"original": {
"owner": "edolstra",
"owner": "NixOS",
"repo": "flake-compat",
"type": "github"
}
@@ -157,16 +182,16 @@
]
},
"locked": {
"lastModified": 1758463745,
"narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
"lastModified": 1770260404,
"narHash": "sha256-3iVX1+7YUIt23hBx1WZsUllhbmP2EnXrV8tCRbLxHc8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
"rev": "0d782ee42c86b196acff08acfbf41bb7d13eed5b",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.05",
"ref": "release-25.11",
"repo": "home-manager",
"type": "github"
}
@@ -216,11 +241,11 @@
]
},
"locked": {
"lastModified": 1758192433,
"narHash": "sha256-CR6RnqEJSTiFgA6KQY4TTLUWbZ8RBnb+hxQqesuQNzQ=",
"lastModified": 1770511807,
"narHash": "sha256-suKmSbSk34uPOJDTg/GbPrKEJutzK08vj0VoTvAFBCA=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "c44e749dd611521dee940d00f7c444ee0ae4cfb7",
"rev": "7c75487edd43a71b61adb01cae8326d277aab683",
"type": "github"
},
"original": {
@@ -234,11 +259,12 @@
"aquamarine": "aquamarine",
"hyprcursor": "hyprcursor",
"hyprgraphics": "hyprgraphics",
"hyprland-guiutils": "hyprland-guiutils",
"hyprland-protocols": "hyprland-protocols",
"hyprland-qtutils": "hyprland-qtutils",
"hyprlang": "hyprlang",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
"hyprwire": "hyprwire",
"nixpkgs": [
"nixpkgs"
],
@@ -247,11 +273,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1758383869,
"narHash": "sha256-L93loAJMQzETzHt4zkaKeKgKyMiV1HvGeFCmr6jW2Xg=",
"lastModified": 1770641595,
"narHash": "sha256-eeu1HrA9dW1DHxPuIZcZ8giUi1BcrvjGkVV1Bx3vEzk=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "41dad381770300fe1015ad8cdd1f370a8fd4e5d5",
"rev": "f16ebef00366d2f85499196b9c7fb702b9f1c547",
"type": "github"
},
"original": {
@@ -260,6 +286,52 @@
"type": "github"
}
},
"hyprland-guiutils": {
"inputs": {
"aquamarine": [
"hyprland",
"aquamarine"
],
"hyprgraphics": [
"hyprland",
"hyprgraphics"
],
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprtoolkit": "hyprtoolkit",
"hyprutils": [
"hyprland",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1767023960,
"narHash": "sha256-R2HgtVS1G3KSIKAQ77aOZ+Q0HituOmPgXW9nBNkpp3Q=",
"owner": "hyprwm",
"repo": "hyprland-guiutils",
"rev": "c2e906261142f5dd1ee0bfc44abba23e2754c660",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-guiutils",
"type": "github"
}
},
"hyprland-plugins": {
"inputs": {
"hyprland": [
@@ -277,11 +349,11 @@
]
},
"locked": {
"lastModified": 1758382384,
"narHash": "sha256-tF9YAZlU8WrtLhEeB7p/TEwZrUM5P6JQ1q4giLh8YZ8=",
"lastModified": 1769285097,
"narHash": "sha256-eVD4U3Oqzz0VU9ylJ5wo76xDcYKv2CpiiRXq4Is4QdA=",
"owner": "hyprwm",
"repo": "hyprland-plugins",
"rev": "c8b2be350290e77e5cb8d482cde6b4c7e7f62099",
"rev": "06c0749a0dac978d89b1a76ae6adc76a3c15dbfa",
"type": "github"
},
"original": {
@@ -302,11 +374,11 @@
]
},
"locked": {
"lastModified": 1749046714,
"narHash": "sha256-kymV5FMnddYGI+UjwIw8ceDjdeg7ToDVjbHCvUlhn14=",
"lastModified": 1765214753,
"narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "613878cb6f459c5e323aaafe1e6f388ac8a36330",
"rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab",
"type": "github"
},
"original": {
@@ -315,74 +387,6 @@
"type": "github"
}
},
"hyprland-qt-support": {
"inputs": {
"hyprlang": [
"hyprland",
"hyprland-qtutils",
"hyprlang"
],
"nixpkgs": [
"hyprland",
"hyprland-qtutils",
"nixpkgs"
],
"systems": [
"hyprland",
"hyprland-qtutils",
"systems"
]
},
"locked": {
"lastModified": 1749154592,
"narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=",
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qt-support",
"type": "github"
}
},
"hyprland-qtutils": {
"inputs": {
"hyprland-qt-support": "hyprland-qt-support",
"hyprlang": [
"hyprland",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprland-qtutils",
"hyprlang",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1757694755,
"narHash": "sha256-j+w5QUUr2QT/jkxgVKecGYV8J7fpzXCMgzEEr6LG9ug=",
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"rev": "5ffdfc13ed03df1dae5084468d935f0a3f2c9a4c",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-qtutils",
"type": "github"
}
},
"hyprlang": {
"inputs": {
"hyprutils": [
@@ -399,11 +403,11 @@
]
},
"locked": {
"lastModified": 1756810301,
"narHash": "sha256-wgZ3VW4VVtjK5dr0EiK9zKdJ/SOqGIBXVG85C3LVxQA=",
"lastModified": 1767983607,
"narHash": "sha256-8C2co8NYfR4oMOUEsPROOJ9JHrv9/ktbJJ6X1WsTbXc=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "3d63fb4a42c819f198deabd18c0c2c1ded1de931",
"rev": "d4037379e6057246b408bbcf796cf3e9838af5b2",
"type": "github"
},
"original": {
@@ -412,6 +416,58 @@
"type": "github"
}
},
"hyprtoolkit": {
"inputs": {
"aquamarine": [
"hyprland",
"hyprland-guiutils",
"aquamarine"
],
"hyprgraphics": [
"hyprland",
"hyprland-guiutils",
"hyprgraphics"
],
"hyprlang": [
"hyprland",
"hyprland-guiutils",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprland-guiutils",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprland-guiutils",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"hyprland-guiutils",
"nixpkgs"
],
"systems": [
"hyprland",
"hyprland-guiutils",
"systems"
]
},
"locked": {
"lastModified": 1764592794,
"narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=",
"owner": "hyprwm",
"repo": "hyprtoolkit",
"rev": "5cfe0743f0e608e1462972303778d8a0859ee63e",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprtoolkit",
"type": "github"
}
},
"hyprutils": {
"inputs": {
"nixpkgs": [
@@ -424,11 +480,11 @@
]
},
"locked": {
"lastModified": 1756117388,
"narHash": "sha256-oRDel6pNl/T2tI+nc/USU9ZP9w08dxtl7hiZxa0C/Wc=",
"lastModified": 1770139857,
"narHash": "sha256-bCqxcXjavgz5KBJ/1CBLqnagMMf9JvU1m9HmYVASKoc=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "b2ae3204845f5f2f79b4703b441252d8ad2ecfd0",
"rev": "9038eec033843c289b06b83557a381a2648d8fa5",
"type": "github"
},
"original": {
@@ -449,11 +505,11 @@
]
},
"locked": {
"lastModified": 1755184602,
"narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=",
"lastModified": 1770501770,
"narHash": "sha256-NWRM6+YxTRv+bT9yvlhhJ2iLae1B1pNH3mAL5wi2rlQ=",
"owner": "hyprwm",
"repo": "hyprwayland-scanner",
"rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d",
"rev": "0bd8b6cde9ec27d48aad9e5b4deefb3746909d40",
"type": "github"
},
"original": {
@@ -462,9 +518,87 @@
"type": "github"
}
},
"hyprwire": {
"inputs": {
"hyprutils": [
"hyprland",
"hyprutils"
],
"nixpkgs": [
"hyprland",
"nixpkgs"
],
"systems": [
"hyprland",
"systems"
]
},
"locked": {
"lastModified": 1770203293,
"narHash": "sha256-PR/KER+yiHabFC/h1Wjb+9fR2Uy0lWM3Qld7jPVaWkk=",
"owner": "hyprwm",
"repo": "hyprwire",
"rev": "37bc90eed02b0c8b5a77a0b00867baf3005cfb98",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprwire",
"type": "github"
}
},
"mucap": {
"inputs": {
"naersk": "naersk",
"nixpkgs": [
"audio",
"nixpkgs"
],
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1765670987,
"narHash": "sha256-LqcywUPXsQMrcl4zakVYHotLGfq2rzASMYuHrQp3KaY=",
"owner": "polygon",
"repo": "mucap",
"rev": "f798f8c4757e0dc80de5c1ddcb8be14aac916b99",
"type": "github"
},
"original": {
"owner": "polygon",
"repo": "mucap",
"type": "github"
}
},
"naersk": {
"inputs": {
"fenix": "fenix",
"nixpkgs": [
"audio",
"mucap",
"nixpkgs"
]
},
"locked": {
"lastModified": 1763384566,
"narHash": "sha256-r+wgI+WvNaSdxQmqaM58lVNvJYJ16zoq+tKN20cLst4=",
"owner": "nix-community",
"repo": "naersk",
"rev": "d4155d6ebb70fbe2314959842f744aa7cabbbf6a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"nix-buildproxy": {
"inputs": {
"nixpkgs": "nixpkgs"
"nixpkgs": [
"audio",
"nixpkgs"
]
},
"locked": {
"lastModified": 1708455753,
@@ -488,7 +622,7 @@
"nixpkgs"
],
"nixpkgs-stable": "nixpkgs-stable",
"rust-overlay": "rust-overlay"
"rust-overlay": "rust-overlay_2"
},
"locked": {
"lastModified": 1751591814,
@@ -506,11 +640,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1757943327,
"narHash": "sha256-w6cDExPBqbq7fTLo4dZ1ozDGeq3yV6dSN4n/sAaS6OM=",
"lastModified": 1770631810,
"narHash": "sha256-b7iK/x+zOXbjhRqa+XBlYla4zFvPZyU5Ln2HJkiSnzc=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "67a709cfe5d0643dafd798b0b613ed579de8be05",
"rev": "2889685785848de940375bf7fea5e7c5a3c8d502",
"type": "github"
},
"original": {
@@ -522,16 +656,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1708118438,
"narHash": "sha256-kk9/0nuVgA220FcqH/D2xaN6uGyHp/zoxPNUmPCMmEE=",
"owner": "NixOS",
"lastModified": 1770464364,
"narHash": "sha256-z5NJPSBwsLf/OfD8WTmh79tlSU8XgIbwmk6qB1/TFzY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "5863c27340ba4de8f83e7e3c023b9599c3cb3c80",
"rev": "23d72dabcb3b12469f57b37170fcbc1789bd7457",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"owner": "nixos",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
@@ -554,11 +688,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1758277210,
"narHash": "sha256-iCGWf/LTy+aY0zFu8q12lK8KuZp7yvdhStehhyX1v8w=",
"lastModified": 1770562336,
"narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "8eaee110344796db060382e15d3af0a9fc396e0e",
"rev": "d6c71932130818840fc8fe9509cf50be8c64634f",
"type": "github"
},
"original": {
@@ -568,22 +702,6 @@
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1758346548,
"narHash": "sha256-afXE7AJ7MY6wY1pg/Y6UPHNYPy5GtUKeBkrZZ/gC71E=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "b2a3852bd078e68dd2b3dfa8c00c67af1f0a7d20",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"plasma-manager": {
"inputs": {
"home-manager": [
@@ -594,11 +712,11 @@
]
},
"locked": {
"lastModified": 1758185783,
"narHash": "sha256-6fX2CG8PzdBNwJGBISnf/nVHUVMZdCsekT1mP672Uh8=",
"lastModified": 1769956244,
"narHash": "sha256-12RCFLyAedyMOdenUi7cN3ioJPEGjA/ZG1BLjugfUVs=",
"owner": "pjones",
"repo": "plasma-manager",
"rev": "6a7d78cebd9a0f84a508bec9bc47ac504c5f51f4",
"rev": "fe54ea85c6e4413fba03b84d50f2b431d2f7c831",
"type": "github"
},
"original": {
@@ -617,11 +735,11 @@
]
},
"locked": {
"lastModified": 1758108966,
"narHash": "sha256-ytw7ROXaWZ7OfwHrQ9xvjpUWeGVm86pwnEd1QhzawIo=",
"lastModified": 1769939035,
"narHash": "sha256-Fok2AmefgVA0+eprw2NDwqKkPGEI5wvR+twiZagBvrg=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "54df955a695a84cd47d4a43e08e1feaf90b1fd9b",
"rev": "a8ca480175326551d6c4121498316261cbb5b260",
"type": "github"
},
"original": {
@@ -640,13 +758,52 @@
"hyprland-plugins": "hyprland-plugins",
"nixos-cosmic": "nixos-cosmic",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2",
"nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable",
"plasma-manager": "plasma-manager",
"sops-nix": "sops-nix"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1752428706,
"narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "591e3b7624be97e4443ea7b5542c191311aa141d",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"audio",
"mucap",
"nixpkgs"
]
},
"locked": {
"lastModified": 1762655942,
"narHash": "sha256-hOM12KcQNQALrhB9w6KJmV5hPpm3GA763HRe9o7JUiI=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "6ac961b02d4235572692241e333d0470637f5492",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"rust-overlay_2": {
"inputs": {
"nixpkgs": [
"nixos-cosmic",
@@ -674,11 +831,11 @@
]
},
"locked": {
"lastModified": 1758425756,
"narHash": "sha256-L3N8zV6wsViXiD8i3WFyrvjDdz76g3tXKEdZ4FkgQ+Y=",
"lastModified": 1770526836,
"narHash": "sha256-xbvX5Ik+0inJcLJtJ/AajAt7xCk6FOCrm5ogpwwvVDg=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "e0fdaea3c31646e252a60b42d0ed8eafdb289762",
"rev": "d6e0e666048a5395d6ea4283143b7c9ac704720d",
"type": "github"
},
"original": {
@@ -730,11 +887,11 @@
]
},
"locked": {
"lastModified": 1755354946,
"narHash": "sha256-zdov5f/GcoLQc9qYIS1dUTqtJMeDqmBmo59PAxze6e4=",
"lastModified": 1761431178,
"narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "a10726d6a8d0ef1a0c645378f983b6278c42eaa0",
"rev": "4b8801228ff958d028f588f0c2b911dbf32297f9",
"type": "github"
},
"original": {

View File

@@ -2,11 +2,11 @@
description = "Nixos config flake";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
home-manager = {
url = "github:nix-community/home-manager/release-25.05";
url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
@@ -85,7 +85,13 @@
isHM = false;
};
modules = [
({...}: {nixpkgs.overlays = [overlay-unstable self.overlays.default audio.overlays.default];})
({...}: {
nixpkgs.overlays = [
overlay-unstable
self.overlays.default
audio.overlays.default
];
})
({...}: {
nixpkgs.config.allowUnfree = true;
nixpkgs.config.nvidia.acceptLicense = true;
@@ -99,6 +105,7 @@
nixos-hardware.nixosModules.lenovo-thinkpad-t14-amd-gen1
inputs.sops-nix.nixosModules.sops
nixos-cosmic.nixosModules.default
./fixes/plasma-fix.nix
./modules
./hosts/monolith/configuration.nix
];
@@ -213,7 +220,7 @@
};
devShells.${system} = {
transcode-davinci-resolve = (import ./pkgs/transcode-davinci-resolve/shell.nix) {pkgs = nixpkgs.legacyPackages.${system};};
bulk-transcode = (import ./pkgs/bulk-transcode/shell.nix) {pkgs = nixpkgs.legacyPackages.${system};};
spotify-shortcuts = (import ./pkgs/spotify-shortcuts/shell.nix) {pkgs = nixpkgs.legacyPackages.${system};};
};

View File

@@ -1,4 +1,4 @@
{...}: {
{lib, ...}: {
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "admin-jroeger";
@@ -12,10 +12,13 @@
hive.nix-scripts.enable = true;
hive.zsh.enable = true;
hive.doom.enable = true;
hive.doom.asDefaultEditor = true;
hive.doom.enableCopilot = true;
hive.doom.withNixPkgs = true;
hive.doom.withShellPkgs = true;
hive.doom.withCXXPkgs = true;
hive.doom.withPythonPkgs = true;
hive.jj.enable = true;
# This value determines the Home Manager release that your configuration is
# compatible with. This helps avoid breakage when a new Home Manager release
@@ -27,18 +30,19 @@
home.stateVersion = "24.11"; # Please read the comment before changing.
home.sessionVariables = {
EDITOR = "vim";
EDITOR = lib.mkDefault "vim";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
# Git
programs.difftastic.enable = true;
programs.difftastic.git.enable = true;
programs.git = {
enable = true;
userName = "Jonas Röger";
userEmail = "jonas.kieran.roeger@iml.fraunhofer.de";
difftastic.enable = true;
settings.user.name = "Jonas Röger";
settings.user.email = "jonas.kieran.roeger@iml.fraunhofer.de";
signing = {
signByDefault = true;
key = "4000EB35E1AE0F07";

View File

@@ -1,4 +1,8 @@
{config, ...}: rec {
{
config,
lib,
...
}: {
imports = [
(./. + "/jonas@comfy-station/" + /borg.nix)
];
@@ -9,7 +13,7 @@
home.homeDirectory = "/home/jonas";
sops = {
age.keyFile = "${home.homeDirectory}/.config/sops/age/keys.txt";
age.keyFile = "${config.home.homeDirectory}/.config/sops/age/keys.txt";
};
# hive modules
@@ -39,9 +43,12 @@
hive.zsh.enable = true;
hive.nix-scripts.enable = true;
hive.doom.enable = true;
hive.doom.asDefaultEditor = true;
hive.doom.enableCopilot = true;
hive.doom.withNixPkgs = true;
hive.doom.withShellPkgs = true;
hive.doom.withPythonPkgs = true;
hive.jj.enable = true;
# Make session variables available in systemd units
# SEE: https://github.com/nix-community/home-manager/pull/5543
@@ -77,18 +84,19 @@
home.stateVersion = "24.11"; # Please read the comment before changing.
home.sessionVariables = {
EDITOR = "vim";
EDITOR = lib.mkDefault "vim";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
# Git
programs.difftastic.enable = true;
programs.difftastic.git.enable = true;
programs.git = {
enable = true;
userName = "Jonas Röger";
userEmail = "jonas.roeger@tu-dortmund.de";
difftastic.enable = true;
settings.user.name = "Jonas Röger";
settings.user.email = "jonas.roeger@tu-dortmund.de";
signing = {
signByDefault = true;
key = "4000EB35E1AE0F07";

View File

@@ -110,7 +110,6 @@ in {
location = {
sourceDirectories = [
"${config.xdg.userDirs.desktop}"
"${config.xdg.userDirs.download}"
];
repositories = [repo];
excludeHomeManagerSymlinks = true;

View File

@@ -1,4 +1,4 @@
{...}: {
{lib, ...}: {
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "jonas";
@@ -9,6 +9,7 @@
hive.nix-scripts.enable = true;
hive.ranger.enable = true;
hive.doom.enable = true;
hive.doom.asDefaultEditor = true;
hive.doom.withNixPkgs = true;
hive.doom.withShellPkgs = true;
@@ -22,18 +23,19 @@
home.stateVersion = "24.11"; # Please read the comment before changing.
home.sessionVariables = {
EDITOR = "vim";
EDITOR = lib.mkDefault "vim";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
# Git
programs.difftastic.enable = true;
programs.difftastic.git.enable = true;
programs.git = {
enable = true;
userName = "Jonas Röger";
userEmail = "jonas.roeger@tu-dortmund.de";
difftastic.enable = true;
settings.user.name = "Jonas Röger";
settings.user.email = "jonas.roeger@tu-dortmund.de";
signing = {
signByDefault = true;
key = "4000EB35E1AE0F07";

View File

@@ -1,4 +1,8 @@
{config, ...}: rec {
{
config,
lib,
...
}: rec {
# Home Manager needs a bit of information about you and the paths it should
# manage.
home.username = "jonas";
@@ -7,13 +11,23 @@
sops = {
age.keyFile = "${home.homeDirectory}/.config/sops/age/keys.txt";
};
sops.secrets.gotifyDaemonToken = {
sopsFile = ../secrets/jonas/gotify.yaml;
key = "monolithDesktopToken";
};
sops.secrets.gotifyCLIToken = {
sopsFile = ../secrets/jonas/gotify.yaml;
key = "cliToken";
};
# hive moduless
hive.doom.enable = true;
hive.doom.enableCopilot = true;
hive.doom.enableTidal = true;
hive.doom.asDefaultEditor = true;
hive.doom.enableCopilot = false;
hive.doom.enableTidal = false;
hive.doom.withNixPkgs = true;
hive.doom.withShellPkgs = true;
hive.doom.withPythonPkgs = true;
hive.firefox = {
enable = true;
plasmaIntegration = false;
@@ -27,6 +41,14 @@
hive.themes.layan.enable = true;
hive.yubikey.enable = true;
hive.zsh.enable = true;
hive.jj.enable = true;
hive.gotify = {
cli.enable = true;
daemon.enable = true;
cli.tokenSopsKey = config.sops.secrets.gotifyCLIToken.name;
daemon.tokenSopsKey = config.sops.secrets.gotifyDaemonToken.name;
host = "gotify.jroeger.de";
};
# Make session variables available in systemd units
# SEE: https://github.com/nix-community/home-manager/pull/5543
@@ -62,18 +84,19 @@
home.stateVersion = "24.11"; # Please read the comment before changing.
home.sessionVariables = {
EDITOR = "vim";
EDITOR = lib.mkDefault "vim";
};
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
# Git
programs.difftastic.enable = true;
programs.difftastic.git.enable = true;
programs.git = {
enable = true;
userName = "Jonas Röger";
userEmail = "jonas.roeger@tu-dortmund.de";
difftastic.enable = true;
settings.user.name = "Jonas Röger";
settings.user.email = "jonas.roeger@tu-dortmund.de";
signing = {
signByDefault = true;
key = "4000EB35E1AE0F07";

View File

@@ -68,10 +68,10 @@
firefox
gimp
git
(gnome-network-displays.overrideAttrs (final: prev: {buildInputs = prev.buildInputs ++ [glib-networking];}))
insomnia
krita
libreoffice
miraclecast
mosquitto
mpv
mupdf
@@ -95,6 +95,7 @@
nixpkgs.config.permittedInsecurePackages = [
"electron-25.9.0" # required by obsidian
];
services.avahi.enable = true;
services.udev.packages = [pkgs.openhantek6022];
virtualisation.docker.enable = true;
@@ -106,11 +107,21 @@
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "24.11"; # Did you read the comment?
# gc settings
# gc settings and binary caches
nix = {
settings = {
substituters = [
"https://aseipp-nix-cache.freetls.fastly.net"
"https://nix-community.cachix.org"
"https://cache.nixos.org/"
];
experimental-features = ["nix-command" "flakes"];
auto-optimise-store = true;
trusted-users = [
"@wheel"
];
max-jobs = 2;
cores = 8;
};
gc = {
automatic = true;

View File

@@ -18,10 +18,25 @@
sopsFile = ../../secrets/harbor/wg.yaml;
key = "privateKey";
};
sops.secrets."gitea-db-pass" = {
sopsFile = ../../secrets/harbor/gitea.yaml;
owner = config.services.gitea.user;
key = "databasePassword";
};
sops.secrets."gotify-admin-pass" = {
sopsFile = ../../secrets/harbor/gotify.yaml;
owner = config.hive.gotify-instance.user;
key = "adminPassword";
};
# Configure nix and garbage collection
# gc settings and binary caches
nix = {
settings = {
substituters = [
"https://aseipp-nix-cache.freetls.fastly.net"
"https://nix-community.cachix.org"
"https://cache.nixos.org/"
];
experimental-features = ["nix-command" "flakes"];
auto-optimise-store = true;
};
@@ -50,6 +65,12 @@
};
# hive modules
hive.gitea-instance.enable = true;
hive.gitea-instance.instanceFQDN = "git.jroeger.de";
hive.gitea-instance.databasePasswordFile = config.sops.secrets.gitea-db-pass.path;
hive.gotify-instance.enable = true;
hive.gotify-instance.instanceFQDN = "gotify.jroeger.de";
hive.gotify-instance.adminPasswordSopsKey = config.sops.secrets.gotify-admin-pass.name;
hive.nextcloud-instance.enable = true;
hive.nextcloud-instance.ssl = true;
hive.nextcloud-instance.adminPasswordFile = config.sops.secrets.nextcloud-admin-pass.path;

View File

@@ -79,6 +79,10 @@
video-editing-heavy = true;
daws = true;
};
hive.programs.utils = {
enable = true;
camera = true;
};
hive.programs.spotify-shortcuts = {
enable = true;
clientIdSopsKey = config.sops.secrets.spotifyShortcutsClientId.name;
@@ -131,7 +135,18 @@
virtualisation.docker.enable = true;
# Corsair drivers
hardware.ckb-next.enable = true;
hardware.ckb-next = {
enable = true;
# Workarount until https://github.com/NixOS/nixpkgs/issues/444209
# is fixed
package = pkgs.ckb-next.overrideAttrs (prev: {
cmakeFlags =
(prev.cmakeFlags or [])
++ [
"-DUSE_DBUS_MENU=0"
];
});
};
# dpi correction
services.xserver.dpi = 91;
@@ -202,9 +217,14 @@
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "24.11"; # Did you read the comment?
# gc settings
# gc settings and binary caches
nix = {
settings = {
substituters = [
"https://aseipp-nix-cache.freetls.fastly.net"
"https://nix-community.cachix.org"
"https://cache.nixos.org/"
];
experimental-features = ["nix-command" "flakes"];
auto-optimise-store = true;
};

View File

@@ -41,7 +41,7 @@
swapDevices = [
{
device = "/.swapfile";
size = 4 * 1024;
size = 24 * 1024;
}
];

View File

@@ -14,7 +14,7 @@
${pkgs.alejandra}/bin/alejandra . &>/dev/null
${pkgs.git}/bin/git diff -U0
echo "NixOS Rebuilding..."
${pkgs.nh}/bin/nh home switch ~/.hive
home-manager switch --flake ~/.hive -b backup --log-format internal-json |& ${pkgs.nix-output-monitor}/bin/nom --json
gen=$(home-manager generations | head -n1 | ${pkgs.gawk}/bin/awk '{print "Gen" $5 " @ " $1 "-" $2}')
by="$(${pkgs.coreutils-full}/bin/whoami)@$(${pkgs.nettools}/bin/hostname)"
${pkgs.git}/bin/git commit --no-gpg-sign -am "Home $gen by $by"
@@ -86,9 +86,10 @@
${pkgs.git}/bin/git switch "$branch_current"
fi
nix store diff-closures \
nix store --log-format internal-json -v diff-closures \
'.?ref='"$branch_current"'#nixosConfigurations.'"$(${pkgs.hostname}/bin/hostname)"'.config.system.build.toplevel' \
'.?ref='"$branch_staging"'#nixosConfigurations.'"$(${pkgs.hostname}/bin/hostname)"'.config.system.build.toplevel'
'.?ref='"$branch_staging"'#nixosConfigurations.'"$(${pkgs.hostname}/bin/hostname)"'.config.system.build.toplevel' \
|& ${pkgs.nix-output-monitor}/bin/nom --json
popd
'';

View File

@@ -26,7 +26,10 @@
./programs/creative.nix
./programs/games.nix
./programs/spotify-shortcuts.nix
./programs/utils.nix
./services/borg-server.nix
./services/gitea-instance.nix
./services/gotify-instance.nix
./services/kdeconnect.nix
./services/nextcloud-instance.nix
./services/virt-manager.nix
@@ -34,21 +37,23 @@
++ lib.optionals isHM [
# pure home-manager modules
./home/doom
./home/firefox.nix
./home/flameshot.nix
./home/gotify.nix
./home/hyprland
./home/jj.nix
./home/kdeconnect.nix
./home/kitty
./home/nextcloud
./home/plasma.nix
./home/ranger
./home/ssh.nix
./home/swaync
./home/themes/layan.nix
./home/waybar
./home/wlogout
./home/wofi
./home/zsh
./home/firefox.nix
./home/flameshot.nix
./home/kdeconnect.nix
./home/plasma.nix
./home/ssh.nix
./home/yubikey.nix
./home/themes/layan.nix
./home/zsh
];
}

View File

@@ -25,9 +25,18 @@
gnutls
ispell
libtool
vscode-langservers-extracted
(pkgs.stdenvNoCC.mkDerivation {
name = "epdfinfo";
phases = "installPhase";
installPhase = ''
mkdir -p $out/bin
ln -s $(${pkgs.findutils}/bin/find ${pkgs.emacsPackages.pdf-tools}/ -name epdfinfo) $out/bin/
'';
})
];
default-shell-pkgs = with pkgs; [
emmet-ls
bash-language-server
];
default-nix-pkgs = with pkgs; [
alejandra
@@ -48,11 +57,17 @@
gdb
ninja
];
default-python-pkgs = with pkgs; [
python312
python312Packages.black
pyright
];
doom-path-pkgs =
lib.optionals cfg.withLatexPkgs (cfg.overrideLatexPkgs default-latex-pkgs)
++ lib.optionals cfg.withShellPkgs (cfg.overrideShellPkgs default-shell-pkgs)
++ lib.optionals cfg.withNixPkgs (cfg.overrideNixPkgs default-nix-pkgs)
++ lib.optionals cfg.withCXXPkgs (cfg.overrideCXXPkgs default-cxx-pkgs)
++ lib.optionals cfg.withPythonPkgs (cfg.overridePythonPkgs default-python-pkgs)
++ lib.optional cfg.enableCopilot pkgs.unstable.copilot-language-server
++ default-core-pkgs;
doom-socket-name = "main";
@@ -84,15 +99,25 @@
${config.xdg.configHome}/doom-emacs/bin/doom "$@"
fi
'';
doom-open = pkgs.writeShellScriptBin "doom-open" ''
export EMACS_SOCKET_NAME="$XDG_RUNTIME_DIR/emacs/${doom-socket-name}"
if [ -t 0 ]; then
exec ${wrapped-emacs}/bin/emacsclient -t "$@"
else
exec ${wrapped-emacs}/bin/emacsclient -c "$@"
fi
'';
in {
options.hive.doom = {
enable = lib.mkEnableOption "Enable Doom Emacs";
asDefaultEditor = lib.mkEnableOption "set the EDITOR variable to use the current emacs server (graphical/non-graphical)";
enableCopilot = lib.mkEnableOption "Enable Copilot in Doom Emacs";
enableTidal = lib.mkEnableOption "Enable TidalCycles";
withLatexPkgs = lib.mkEnableOption "Enable LaTeX packages in doom path";
withShellPkgs = lib.mkEnableOption "Enable shell packages in doom path";
withNixPkgs = lib.mkEnableOption "Enable LaTeX packages in doom path";
withCXXPkgs = lib.mkEnableOption "Enable CXX packages in doom path";
withPythonPkgs = lib.mkEnableOption "Enable python packages in doom path";
overrideLatexPkgs = lib.mkOption {
type = lib.types.functionTo (lib.types.listOf lib.types.package);
default = pkgs: pkgs;
@@ -133,6 +158,16 @@ in {
'';
description = "Override the default C++ packages in the doom path.";
};
overridePythonPkgs = lib.mkOption {
type = lib.types.functionTo (lib.types.listOf lib.types.package);
default = pkgs: pkgs;
example = ''
prev: with pkgs; [
pythonPackages.black
]
'';
description = "Override the default Python packages in the doom path.";
};
};
config = lib.mkIf cfg.enable {
@@ -145,10 +180,15 @@ in {
home = {
sessionPath = ["${config.xdg.configHome}/doom-emacs/bin"];
sessionVariables = {
DOOMDIR = "${config.xdg.configHome}/doom-config";
DOOMLOCALDIR = "${config.xdg.configHome}/doom-local";
};
sessionVariables =
{
DOOMDIR = "${config.xdg.configHome}/doom-config";
DOOMLOCALDIR = "${config.xdg.configHome}/doom-local";
}
// lib.optionalAttrs cfg.asDefaultEditor {
EDITOR = "${doom-open.name}";
};
packages = doom-pkgs ++ lib.optional cfg.asDefaultEditor doom-open;
};
systemd.user.services.doom-emacs-server = {
@@ -210,7 +250,7 @@ in {
"doom-emacs" = {
source = builtins.fetchGit {
url = "https://github.com/doomemacs/doomemacs";
rev = "c27621a777c11354a4913c7eb455db3766984709";
rev = "a0d6aac43fc94def29c98826e2f0088bcb703d13";
};
onChange = "${doom-setup} --force sync -u -e";
};
@@ -244,6 +284,5 @@ in {
};
};
};
home.packages = doom-pkgs;
};
}

View File

@@ -34,7 +34,7 @@
;; There are two ways to load a theme. Both assume the theme is installed and
;; available. You can either set `doom-theme' or manually load a theme with the
;; `load-theme' function. This is the default:
(setq doom-theme 'doom-monokai-classic)
(setq doom-theme 'doom-gruvbox)
(custom-set-faces! `(font-lock-operator-face :foreground ,(doom-color 'operators)))
;; This determines the style of line numbers in effect. If set to `nil', line
@@ -98,9 +98,8 @@
:desc "File Symbols" "c s" #'consult-lsp-file-symbols
:desc "All Symbols" "c S" #'consult-lsp-symbols)
(use-package! direnv
:config
(direnv-mode))
(use-package envrc
:hook (after-init . envrc-global-mode))
(after! markdown-mode
(setq markdown-split-window-direction 'right)

View File

@@ -69,7 +69,20 @@
:local-repo "smtlib-mode")
:pin "ed387e63b64091228e6a8a429b02b8fba165f5b5")
(package! direnv)
;; Usabel ein PR branch. Original is deprecated
(package! ein
:recipe (:host github
:repo "natsirtguy/emacs-ipython-notebook"
:branch "fix-polymode-compatibility")
:pin "2ff01b4adbb6302798fc84464d1e420e337113fd")
(package! envrc
:recipe (:host github
:repo "Grimpper/envrc"
:branch "support-async-execution"
)
:pin "71f67971bc5eb2974ae2f738512c8f09f0822527")
(package! pdf-tools)
(package! eww)
(package! pandoc-mode)

153
modules/home/gotify.nix Normal file
View File

@@ -0,0 +1,153 @@
{
config,
lib,
pkgs,
...
}: let
cfg = config.hive.gotify;
cli-config = {
token = config.sops.placeholder.${cfg.cli.tokenSopsKey};
inherit (cfg.cli) url defaultPriority;
};
daemon-config = {
gotify =
{
inherit (cfg.daemon) url;
token = config.sops.placeholder.${cfg.daemon.tokenSopsKey};
auto_delete = cfg.daemon.autoDelete;
min_priority = cfg.daemon.minPriority;
}
// lib.optionalAttrs (cfg.daemon.onMsgCommand != null) {
on_msg_command = cfg.daemon.onMsgCommand;
};
};
valueToString = val:
if (builtins.typeOf val == "string")
then "\"${val}\""
else
(
if (builtins.typeOf val == "int")
then "${toString val}"
else
(
if (builtins.typeOf val == "bool")
then
(
if val
then "true"
else "false"
)
else (abort "Expected string int or bool, got ${builtins.typeOf val} with value ${toString val}")
)
);
toTOML = attrs:
lib.concatStrings (
lib.attrValues (
lib.mapAttrs (
name: config: ''
[${name}]
${lib.concatStringsSep "\n" (lib.attrValues (lib.mapAttrs (k: v: "${k} = ${valueToString v}") config))}
''
)
attrs
)
);
in {
options.hive.gotify = {
cli = {
enable = lib.mkEnableOption "Enable Gotify cli tool";
url = lib.mkOption {
type = lib.types.singleLineStr;
default = "https://${cfg.host}:${toString cfg.port}";
example = "http://gotify.example.com";
description = "The http url of the gotify server (for the cli tool)";
};
tokenSopsKey = lib.mkOption {
type = lib.types.singleLineStr;
description = "The sops key of the token secret";
};
defaultPriority = lib.mkOption {
type = lib.types.int;
default = 0;
example = 3;
description = "The default priority of the dispatched messages";
};
};
daemon = {
enable = lib.mkEnableOption "Enable the Gotify desktop notification daemon";
url = lib.mkOption {
type = lib.types.singleLineStr;
default = "wss://${cfg.host}:${toString cfg.port}";
example = "ws://gotify.example.com";
description = "The websocket url of the gotify server (for the desktop tool)";
};
tokenSopsKey = lib.mkOption {
type = lib.types.singleLineStr;
description = "The sops key of the token secret";
};
autoDelete = lib.mkOption {
type = lib.types.bool;
default = false;
example = true;
description = "Delete messages that have been handled";
};
minPriority = lib.mkOption {
type = lib.types.int;
default = 0;
example = 1;
description = "Ignore messages with priority lower than given value";
};
onMsgCommand = lib.mkOption {
type = lib.types.nullOr lib.types.singleLineStr;
default = null;
example = "/usr/bin/beep";
description = '' A command to tun for each message with env vars
GOTIFY_MSG_PRIORITY, GOTIFY_MSG_TITLE and GOTIFY_MSG_TEXTs
If unset use the standard desktop notification passing
'';
};
};
host = lib.mkOption {
type = lib.types.singleLineStr;
example = "example.com";
description = "The hostname of the gotify server";
};
port = lib.mkOption {
type = lib.types.int;
default = 443;
example = 443;
description = "The port of the gotify server";
};
};
config = let
cli = lib.mkIf cfg.cli.enable {
home.packages = [pkgs.gotify-cli];
sops.templates."gotify-cli-json" = {
content = lib.generators.toJSON {} cli-config;
path = "${config.xdg.configHome}/gotify/cli.json";
};
};
daemon = lib.mkIf cfg.daemon.enable {
systemd.user.services.gotify-desktop = {
Unit = {
Description = "Gotify Desktop notification service";
After = ["sops-nix.service"]; # After the secrets have been rendered
};
Service = {
ExecStart = "${pkgs.gotify-desktop}/bin/gotify-desktop";
};
Install = {
WantedBy = ["multi-user.target"];
};
};
sops.templates."gotify-daemon-toml" = {
content = toTOML daemon-config;
path = "${config.xdg.configHome}/gotify-desktop/config.toml";
};
};
in
lib.mkMerge [cli daemon];
}

View File

@@ -342,9 +342,8 @@ in {
# new_is_master = true;
};
gestures = {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = "off";
ecosystem = {
no_update_news = true;
};
misc = {

36
modules/home/jj.nix Normal file
View File

@@ -0,0 +1,36 @@
{
config,
lib,
pkgs,
...
}: let
cfg = config.hive.jj;
in {
options.hive.jj = {
enable = lib.mkEnableOption "Enable jj vcs";
followGit = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Follow the current git configuration";
};
};
config = lib.mkIf cfg.enable {
home.packages = with pkgs; [
jujutsu
];
programs.jujutsu = {
enable = true;
settings = {
user = lib.optionalAttrs cfg.followGit {
name = config.programs.git.settings.user.name;
email = config.programs.git.settings.user.email;
};
ui = lib.optionalAttrs (cfg.followGit && config.programs.difftastic.enable) {
diff-formatter = ["${pkgs.difftastic}/bin/difft" "--color=always" "$left" "$right"];
};
};
};
};
}

View File

@@ -13,7 +13,11 @@ in {
default = "qt";
description = "The pinentry flavour to use";
};
withCCID = mkEnableOption "Use stand-aline CCID (instead of a running pcscd service)";
withCCID = mkOption {
type = types.bool;
default = true;
description = "Use stand-alone CCID (instead of a running pcscd service)";
};
};
config = lib.mkIf cfg.enable {
@@ -27,8 +31,8 @@ in {
trust = "ultimate";
}
];
scdaemonSettings = {
disable-ccid = !cfg.withCCID;
scdaemonSettings = lib.mkIf (!cfg.withCCID) {
disable-ccid = true;
};
};
services.gpg-agent = {

View File

@@ -48,7 +48,6 @@ in {
"poetry"
"python"
"rust"
"thefuck"
];
theme = "my_bureau";
custom = omz_custom;
@@ -60,17 +59,16 @@ in {
fzf
git
htop
jujutsu
killall
mmtui
nh
nix-output-monitor
nix-search-cli
nix-tree
nixpkgs-fmt
pass
pay-respects
ranger
thefuck
unstable.mmtui
unzip
vim
w3m

View File

@@ -5,6 +5,15 @@
...
}: let
cfg = config.hive.programs.creative;
avidemux-wayland-fix = pkgs.avidemux.overrideAttrs (prev: {
installPhase =
(prev.installPhase or "")
+ ''
wrapProgram $out/bin/avidemux3_qt5 \
--add-flags "--platform" \
--add-flags "xcb"
'';
});
in {
options.hive.programs.creative = {
enable = lib.mkEnableOption "Enable creative programs (video/image editing, etc.)";
@@ -26,7 +35,7 @@ in {
type = lib.types.bool;
default = false;
description = ''
Enable Darktable for raw processing.
Enable raw processing programs.
'';
};
video-editing-light = lib.mkOption {
@@ -57,17 +66,23 @@ in {
lib.optionals cfg.image-editing [gimp krita drawio]
++ lib.optional cfg.image-management digikam
++ lib.optionals cfg.image-raw-processing [
darktable
rawtherapee
enblend-enfuse
hdrmerge
hugin
rawtherapee
unstable.darktable
unstable.rapidraw
]
++ lib.optionals cfg.video-editing-light [
avidemux-wayland-fix
ffmpeg
hive.bulk-transcode
losslesscut-bin
]
++ lib.optionals cfg.video-editing-light [ffmpeg losslesscut-bin]
++ lib.optionals cfg.video-editing-heavy [
davinci-resolve
hive.transcode-davinci-resolve
kdePackages.kdenlive
obs-studio
]
++ lib.optional cfg.daws bitwig-studio-latest;
};

View File

@@ -63,8 +63,7 @@ in {
++ lib.optionals cfg.wine [
pkgs.wine
pkgs.winetricks
]
++ lib.optional (cfg.steam && cfg.wine) pkgs.proton-caller;
];
programs.steam = lib.mkIf cfg.steam {
enable = true;

View File

@@ -0,0 +1,26 @@
{
config,
lib,
pkgs,
...
}: let
cfg = config.hive.programs.utils;
in {
options.hive.programs.utils = {
enable = lib.mkEnableOption "Enable utilities";
camera = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Camera utilities
'';
};
};
config = lib.mkIf cfg.enable {
environment.systemPackages = lib.optionals cfg.camera [
pkgs.cheese
pkgs.obs-studio
];
};
}

View File

@@ -0,0 +1,72 @@
{
config,
lib,
...
}: let
cfg = config.hive.gitea-instance;
in {
options.hive.gitea-instance = {
enable = lib.mkEnableOption "Enable the Gitea instance";
instanceFQDN = lib.mkOption {
type = lib.types.singleLineStr;
example = "git.example.com";
description = "Fully qualified domain name of the Gitea instance";
};
databasePasswordFile = lib.mkOption {
type = lib.types.path;
example = "/etc/gitea-db-pass.txt";
description = "Path to the file containing the Gitea database password";
};
};
config = lib.mkIf cfg.enable {
# Gitea instance
services.gitea = {
enable = true;
lfs.enable = true;
appName = "Git yourself some Tea!";
database = {
name = "gitea";
type = "postgres";
passwordFile = cfg.databasePasswordFile;
};
settings = {
server.PROTOCOL = "http+unix";
server.ROOT_URL = "https://${cfg.instanceFQDN}/";
server.DOMAIN = cfg.instanceFQDN;
service.DISABLE_REGISTRATION = true;
};
};
# Fallback server with only 403
services.nginx.virtualHosts.${config.networking.domain} = lib.mkDefault {
default = true;
locations."/".return = 403;
forceSSL = true;
enableACME = true;
};
# Virtual host for gitea
services.nginx.virtualHosts."${cfg.instanceFQDN}" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://unix:/run/gitea/gitea.sock";
};
};
# Database setup
services.postgresql = {
enable = true;
ensureDatabases = [config.services.gitea.user];
ensureUsers = [
{
name = config.services.gitea.database.user;
ensureDBOwnership = true;
}
];
};
};
}

View File

@@ -0,0 +1,131 @@
{
config,
lib,
...
}: let
cfg = config.hive.gotify-instance;
server-config = {
server = {
listenaddr = "localhost";
port = 54545;
ssl.enabled = false;
ssl.redirecttohttps = false;
cors.alloworigins = ["${cfg.instanceFQDN}"];
stream.allowedorigins = ["${cfg.instanceFQDN}"];
};
database = {
dialect = "postgres";
connection = "host=/run/postgresql dbname=${cfg.user} user=${cfg.user}";
};
defaultuser = {
name = "admin";
pass = config.sops.placeholder.${cfg.adminPasswordSopsKey};
};
registration = false;
};
server-config-yaml = lib.generators.toYAML {} server-config;
in {
options.hive.gotify-instance = {
enable = lib.mkEnableOption "Enable the Gotify instance";
instanceFQDN = lib.mkOption {
type = lib.types.singleLineStr;
example = "gotify.example.com";
description = "Fully qualified domain name of the Gotify instance";
};
user = lib.mkOption {
type = lib.types.singleLineStr;
default = "gotify";
description = "The user to run the service as";
};
group = lib.mkOption {
type = lib.types.singleLineStr;
default = "gotify";
description = "The group to run the service as";
};
adminPasswordSopsKey = lib.mkOption {
type = lib.types.singleLineStr;
description = "The SOPS key for the default admin user";
};
};
config = lib.mkIf cfg.enable {
services.gotify.enable = true;
# Config setup
sops.templates."gotify-server-config.yml" = {
owner = cfg.user;
content = server-config-yaml;
};
environment.etc."gotify/config.yml".source = config.sops.templates."gotify-server-config.yml".path;
# User setup
users.users = lib.mkIf (cfg.user == "gotify") {
gotify = {
description = "Gotify service";
useDefaultShell = true;
group = cfg.group;
isSystemUser = true;
};
};
users.groups = lib.mkIf (cfg.group == "gotify") {
gotify = {};
};
# Configure gotify to run as the specified user (for postgres authentication)
systemd.services.gotify-server = {
serviceConfig = {
DynamicUser = lib.mkForce false;
User = cfg.user;
RuntimeDirectory = "gotify";
};
};
# Fallback server with only 403
services.nginx.virtualHosts.${config.networking.domain} = lib.mkDefault {
default = true;
locations."/".return = 403;
forceSSL = true;
enableACME = true;
};
# Virtual host for gotify
services.nginx.virtualHosts."${cfg.instanceFQDN}" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://${server-config.server.listenaddr}:${toString server-config.server.port}";
extraConfig = ''
# Ensuring it can use websockets
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
proxy_redirect http:// $scheme://;
# The proxy must preserve the host because gotify verifies the host with the origin
# for WebSocket connections
proxy_set_header Host $host;
# These sets the timeout so that the websocket can stay alive
proxy_connect_timeout 1m;
proxy_send_timeout 1m;
proxy_read_timeout 1m;
'';
};
};
# Database setup
services.postgresql = {
enable = true;
ensureDatabases = [cfg.user];
ensureUsers = [
{
name = cfg.user;
ensureDBOwnership = true;
}
];
};
};
}

View File

@@ -32,6 +32,7 @@ in {
services.nextcloud = {
# Instance
enable = true;
package = pkgs.nextcloud31;
hostName = cfg.instanceFQDN;
https = cfg.ssl;
configureRedis = true;
@@ -64,6 +65,9 @@ in {
};
};
# Raise Upload limit
maxUploadSize = "20G";
# Preview settings (video may be a security risk)
settings = {
enable_previews = true;

View File

@@ -0,0 +1 @@
use flake ../../#bulk-transcode --show-trace

View File

@@ -0,0 +1,96 @@
#!/usr/bin/env bash
declare -rA presets=(
[davinci-resolve]="-c:v dnxhd -profile:v dnxhr_hq -pix_fmt yuv422p -c:a pcm_s16le"
[instagram]="-vf scale='if(gte(iw/ih,1),1920,-1)':'if(gte(iw/ih,1),-1,1920)':flags=lanczos -r 30 -c:v libx264 -profile:v high -level 4.1 -pix_fmt yuv420p -preset slow -crf 18 -bf 2 -g 15 -keyint_min 15 -x264-params \"open-gop=0:cabac=1:b-pyramid=none\" -movflags +faststart -c:a aac -b:a 96k"
[insta-4k]="-r 30 -c:v libx264 -profile:v high -level 4.1 -pix_fmt yuv420p -preset slow -crf 18 -bf 2 -g 15 -keyint_min 15 -x264-params \"open-gop=0:cabac=1:b-pyramid=none\" -movflags +faststart -c:a aac -b:a 96k"
[storage-hevc]="-c:v libx265 -preset slower -crf 18 -pix_fmt yuv420p10le -x265-params aq-mode=3:aq-strength=1.0:psy-rd=1.8:psy-rdoq=1.0 -c:a copy"
[storage-av1]="-c:v libsvtav1 -preset 6 -crf 28 -pix_fmt yuv420p -g 240 -svtav1-params tune=0:aq-mode=2 -c:a copy"
[storage-av1-1080p]="-vf scale='if(gte(iw/ih,1),1920,-1)':'if(gte(iw/ih,1),-1,1920)' -c:v libsvtav1 -preset 6 -crf 28 -pix_fmt yuv420p -g 240 -svtav1-params tune=0:aq-mode=2 -c:a copy"
[storage-av1-nvenc]="-c:v av1_nvenc -cq 28 -preset slow -pix_fmt yuv420p10le -c:a copy"
[network]="-c:v libx264 -preset slow -crf 22 -pix_fmt yuv420p -c:a aac -b:a 128k"
[network-1080p]="-vf scale='if(gte(iw/ih,1),1920,-1)':'if(gte(iw/ih,1),-1,1920)' -c:v libx264 -preset slow -crf 22 -pix_fmt yuv420p -c:a aac -b:a 128k"
[whatsapp]="-vf scale='if(gte(iw/ih,1),1920,-1)':'if(gte(iw/ih,1),-1,1920)' -c:v libx264 -preset slow -crf 30 -profile:v baseline -level 3.0 -pix_fmt yuv420p -r 25 -g 50 -c:a aac -b:a 160k -r:a 44100"
)
declare -rA containers=(
[davinci-resolve]="mov"
[instagram]="mp4"
[insta-4k]="mp4"
[storage-hevc]="mkv"
[storage-av1]="mkv"
[storage-av1-1080p]="mkv"
[storage-av1-nvenc]="mkv"
[network]="mp4"
[network-1080p]="mp4"
[whatsapp]="mp4"
)
where="${1:-.}"
dest="${2:-$where}"
selection=$(find "$where" -type f | fzf --multi --preview 'ffprobe -v error -show_format -show_streams {}' --preview-window=up:wrap)
preset=$(
printf '%s\n' "${!presets[@]}" | \
fzf --multi --prompt "Select a preset"
)
flags="${presets[$preset]}"
container="${containers[$preset]}"
output_dir=$(find "$dest" -type d ! -name '.*' ! -path '*/.*/*' | fzf --preview 'tree -C {}' --preview-window=up:wrap --prompt "Select output directory: ")
if gum confirm "Flatten the directory structure?";
then
flatten=true
else
flatten=false
fi
function transcode_job {
local ifile="$1"
local output_dir="$2"
local flatten="$3"
local where="$4"
local flags="$5"
local container="$6"
local fname=$(basename "$ifile")
local segment=$(realpath --relative-to="$where" "$ifile")
if [ "$flatten" = true ]; then
output_file="$output_dir/$fname.$container"
else
output_file="$output_dir/$segment.$container"
fi
tmp_file=$(mktemp)
echo "Running Command: ffmpeg -y -i $ifile $flags $output_file" >> "$tmp_file"
mkdir -p "$(dirname "$output_file")"
if ffmpeg -y -i "$ifile" $(echo -n "$flags") "$output_file" 2>> "$tmp_file";
then
rm -f "$tmp_file"
else
# gum log "Failed to transcode $ifile. Check ./error.log for details."
cat "$tmp_file" >> error.log
rm -f "$tmp_file"
fi
}
export -f transcode_job
mapfile -t files <<< "$selection"
len=${#files[@]}
i=1
for file in "${files[@]}"; do
if [[ -f "$file" ]]; then
gum spin --spinner dot --title "[$i/$len] Transcoding $file" -- bash -c "source <(declare -f transcode_job); transcode_job \"$file\" \"$output_dir\" \"$flatten\" \"$where\" \"$flags\" \"$container\""
else
echo "Skipping invalid file: $file" >&2
fi
((i++))
done

View File

@@ -12,7 +12,7 @@
...
}:
stdenv.mkDerivation (finalAttrs: {
name = "transcode-davinci-resolve";
name = "bulk-transcode";
src = ./.;
buildInputs = [
@@ -27,9 +27,9 @@ stdenv.mkDerivation (finalAttrs: {
];
installPhase = ''
install -Dm755 transcode-davinci-resolve.sh $out/bin/transcode-davinci-resolve
install -Dm755 bulk-transcode.sh $out/bin/bulk-transcode
wrapProgram $out/bin/transcode-davinci-resolve \
wrapProgram $out/bin/bulk-transcode \
--set PATH "${lib.makeBinPath finalAttrs.buildInputs}"
'';
})

View File

@@ -2,6 +2,6 @@
bin = pkgs.callPackage ./default.nix {};
in
pkgs.mkShell {
name = "transcode-davinci-resolve";
name = "bulk-transcode";
inputsFrom = [bin];
}

View File

@@ -1,8 +1,8 @@
final: _: {
hive = {
crossover = final.callPackage ./crossover.nix {};
transcode-davinci-resolve = final.callPackage ./transcode-davinci-resolve {};
spotify-shortcuts = final.callPackage ./spotify-shortcuts {};
bulk-transcode = final.callPackage ./bulk-transcode {};
spotify-shortcuts = final.callPackage ./spotify-shortcuts/derivation.nix {};
layan-qt6 = final.kdePackages.callPackage ./layan-qt6.nix {};
};
}

View File

@@ -3,5 +3,7 @@ with python3Packages;
buildPythonApplication {
name = "spotify-shortcuts";
propagatedBuildInputs = [spotipy pyxdg desktop-notifier];
pyproject = true;
build-system = [setuptools];
src = ./.;
}

View File

@@ -1 +0,0 @@
use flake ../../#transcode-davinci-resolve --show-trace

View File

@@ -1,57 +0,0 @@
#!/usr/bin/env bash
where="${1:-.}"
selection=$(find "$where" -type f | fzf --multi --preview 'ffprobe -v error -show_format -show_streams {}' --preview-window=up:wrap)
output_dir=$(find $HOME -type d ! -name '.*' ! -path '*/.*/*' | fzf --preview 'tree -C {}' --preview-window=up:wrap --prompt "Select output directory: ")
if gum confirm "Flatten the directory structure?";
then
flatten=true
else
flatten=false
fi
function transcode_job {
local ifile="$1"
local output_dir="$2"
local flatten="$3"
local where="$4"
local fname=$(basename "$ifile")
local segment=$(realpath --relative-to="$where" "$ifile")
if [ "$flatten" = true ]; then
output_file="$output_dir/$fname.mov"
else
output_file="$output_dir/$segment.mov"
fi
tmp_file=$(mktemp)
mkdir -p "$(dirname "$output_file")"
if ffmpeg -y -i "$ifile" -c:v dnxhd -profile:v dnxhr_hq -pix_fmt yuv422p -c:a pcm_s16le "$output_file" 2>> "$tmp_file";
then
rm -f "$tmp_file"
else
# gum log "Failed to transcode $ifile. Check ./error.log for details."
cat "$tmp_file" >> error.log
rm -f "$tmp_file"
fi
}
export -f transcode_job
mapfile -t files <<< "$selection"
len=${#files[@]}
i=1
for file in "${files[@]}"; do
if [[ -f "$file" ]]; then
gum spin --spinner dot --title "[$i/$len] Transcoding $file" -- bash -c "source <(declare -f transcode_job); transcode_job \"$file\" \"$output_dir\" \"$flatten\" \"$where\""
else
echo "Skipping invalid file: $file" >&2
fi
((i++))
done

25
secrets/harbor/gitea.yaml Normal file
View File

@@ -0,0 +1,25 @@
databasePassword: ENC[AES256_GCM,data:D0pt10IJXbmx5Fj/yvMxyPjVPGctrQ==,iv:OiBSQIr4/lLCAV2mlIBfIfiVT51SeTGU1xJustlXZes=,tag:6FRtjip5pR7PeaJXRw1DVw==,type:str]
sops:
age:
- recipient: age1wf0rq27v0n27zfy0es8ns3n25e2fdt063dgn68tt3f89rgrtu9csq4yhsp
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNMnU3bE51SGhMbnFJZitN
RGJTMVBndVBhVVFGTVhHTU5BbWxEVnBMRjM4CnNZTy94T3h5TlZlNFdFV3JKVzEw
R1Y4dzNOYnR4TE9GN3E0ejNjVklHUzgKLS0tIHd2YUdXRnBtaFVjdDlOVi9wVjRJ
MVFrRDc3VkwxTDBqZkJNbmtGYXJkOEUK2N0kZdgCYYmGdgTdozqMSfEPOtWvol9X
CqVW0cp4BbycA1yV14H555ywFkz2n9tp8vuapt7FP1guFGiVYxK5Wg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1expg8vyduf290pz7l4f3mjzvk9f0azfdn48pyjzs3m6p7v4qjq0qwtn36z
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtNXhsTzNrQkwyQnJXdU1x
ZHZMNkdqV1NzRnRwQktrRzMzenRnTDFwTmx3CnB2UDJUbUJvcE5zbzlqRlFtUjdt
MU1JNGlJOUtMUE1MQzhZdmF2M0I0c3MKLS0tICsxUTFTbm5udUMyRyt0VnprU3dG
c1N5VHJZY1JkSCtPTGdHQlI1QUxQZncKzHuz+/0jj/0AL2atUTw56fL8J3bKBNmg
hCIsy3SeMeNXs2KN/yka3mfvzoCHeqHRXhQr8MzTkHaGmUhCv5ix/A==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-10-20T22:17:16Z"
mac: ENC[AES256_GCM,data:hN0eKuZyls/R5fbL7+U5INi0cq/TYVdTR9PYqgsrPWJL+HtN6KA6ZpaWR27ZBLv9/zB6FHPTg2Js+RQqYE6CZP+0scIx4p5uUe+kUV3qfX3/ZL6wh0vHpn8Jv+Y2NE8OMTeztYSqSDfTgqxeOfY0AchgMFiwgNITDl0IBrPfRSY=,iv:nY5bDlzNGc3N1xU5Zgt/aBgcelfvO5JEuf3sMVNfS14=,tag:oAhw2ZjGA0/DEISS4aqvkA==,type:str]
unencrypted_suffix: _unencrypted
version: 3.11.0

View File

@@ -0,0 +1,25 @@
adminPassword: ENC[AES256_GCM,data:I4P2Aujt8xv1ZQeHBbNYDoSxVa08,iv:tYWYQiWRu13HmxEaMuxmdSBgY0F0d6NOl3xEVdNdFCA=,tag:y8C8Fotgut90yo4giLDf3w==,type:str]
sops:
age:
- recipient: age1wf0rq27v0n27zfy0es8ns3n25e2fdt063dgn68tt3f89rgrtu9csq4yhsp
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVWC9JN1gvN1FTem5JWCt6
UzVyU1FoUVlNVzViT1dmYis5bzNXWDBFaEF3CkZOcTFGZERoMnNnTFNEWXl0blNC
dXJLUDAyR1p2VVowQXM3Sk43Sk90K2sKLS0tIFd4RE52QjFhTSswa0JTNHd4dnhs
SWQ2YVhVUjFBOEJLWFhVMjZmTlFVUU0KzU2A9OrsbvmciS1tHbSz4kPo3N3lzquK
z3yINH+Hff/qvMuiKpngyVl/hzxJXUmtuA1W7xJc38zkSTbGqZ7jcg==
-----END AGE ENCRYPTED FILE-----
- recipient: age1expg8vyduf290pz7l4f3mjzvk9f0azfdn48pyjzs3m6p7v4qjq0qwtn36z
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOdklaZUZBWnpYbmRzR0Ns
YlNQdDZvNG0ybE9leEZlaHJIZ1pqUjc4a3owCjJGWWxlUFcxTi84ZEtadkN3VHlE
Tzh1dDZ4cDF2dDZVajZTTzE1bmVXUU0KLS0tIEQ1dGF3bmlTQU0xdGJBWEhlNGtY
eG5mRkhaZjk0VDVxNG8wZVZnZ1ZPbGsKWfsNKT98X19b1ipgk8YPJmXjmmpLmXYL
7e4ViRsetxSQGsELY3Cw5Bg2+rQW64fjajk0cloChN12l0q1FifJuw==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-10-30T14:07:46Z"
mac: ENC[AES256_GCM,data:08oJt55ARwK5eSUpf2oBvw8f/cYrgsAFJS7DTN09mLzeGurh3LyzoL43Cq6GrtLaIry3Hzu6Zn0MmIY+GDXG1vdnvdgXF0JPffsLIFLg1n951RWiuZlpDbbhIdncErM4X/9EpAGqsko8UXa+X2u2Yl6b08HS/6Hz6s0lfuRTovo=,iv:TENht5StVCtsgI67mT/yGKYxHXLIrYE6ufj7sffcvW4=,tag:WhdWzNZNHm3EQZHEq1rXxQ==,type:str]
unencrypted_suffix: _unencrypted
version: 3.11.0

17
secrets/jonas/gotify.yaml Normal file
View File

@@ -0,0 +1,17 @@
monolithDesktopToken: ENC[AES256_GCM,data:mjyX9EjhYhOgB2Svn4E8,iv:/iOwIfa7ttM8DpnhpZma+uXHi8RWyGrhlDoBmzoEgEM=,tag:PzWQ/zIlCPjH34vNECs9iQ==,type:str]
cliToken: ENC[AES256_GCM,data:CWBcgbGYB408j+XIK9MK,iv:jZphMY9DJOZo8mLa9Vc3d3ymDOHb85QuTEg2/iTf0+Q=,tag:dvDfLA40QTpt7ftV//javg==,type:str]
sops:
age:
- recipient: age1expg8vyduf290pz7l4f3mjzvk9f0azfdn48pyjzs3m6p7v4qjq0qwtn36z
enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHb2JYb2JWakdtZ2NjTmsx
RldpMUx1ekV0eEFudDBncnVsa3l2cWpLaFNBCnNRT1NxaGFiaXBOK2JvUjlvd2lN
R2tEOXd2K09iV3JZVTdjZ1EzaTQzTFUKLS0tIHYxMklrcWZza3RlaUFzV3JoMjh5
clpiRTAxWUZENnhFcmhxcWN1RFFyZ1kKnQWAQpvqwX/pueV9uPiTGYaxWT66p5pK
Vn0tK396IxKtx8MVivDF16oI/w63mvyLWTGU8CCUu/5Np3FRIvD75Q==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-10-30T23:55:47Z"
mac: ENC[AES256_GCM,data:+KEeVxj3F6GirGHIykw98FBN84krNegTZQp2+0nd711B6Q4vlDGpMNSwxiJOnz5Bzm0x48NDLAiNiBjTqipuZIz0zSnUXypBsSN5/HAhwjm079RunCENcL2YciwMMr1B2cdoOBeobVYzr/vV7P9ieOiTLTlE8542/nnNwyvmISY=,iv:U1J78i1DHAzXhHCQDZs2adKvVo+u3zsbkr68J3xMYUE=,tag:e6ymRRqVCjeemG3TcHHROQ==,type:str]
unencrypted_suffix: _unencrypted
version: 3.11.0