Compare commits
66 Commits
2e65642ea8
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a11ad41a1 | ||
|
|
2cc98ec7d7 | ||
|
|
7d84a0187b
|
||
| 392831a507 | |||
| a7daedf944 | |||
| 3c98db60ca | |||
| 730084e210 | |||
|
a01c946395
|
|||
|
|
650c841eca | ||
|
|
a6da47ffd6
|
||
| 5b00c43e0c | |||
| 353a684434 | |||
| 761388df6e | |||
| f54f1aba19 | |||
| 5091db4d53 | |||
| fdac641d3a | |||
| 25f87c2b13 | |||
| 98eca968b1 | |||
| 8a08e534ad | |||
| de6f2a96b3 | |||
| 27dcc3a0b3 | |||
| 72b150dd66 | |||
| a39cf3763b | |||
| b1d891df98 | |||
| 3033f9ca9a | |||
|
da82fc0edf
|
|||
| 0b70c63f33 | |||
| 450fc3554c | |||
| 9e54a6f68d | |||
| 20d74dd4ef | |||
| 4d36cc534b | |||
| 8f2875befe | |||
| 10b0e8fd44 | |||
| 2a4e567a3e | |||
| dd82100d9e | |||
| 252db727a6 | |||
| ce1a0acc76 | |||
| d185f097f2 | |||
| 147c255448 | |||
| 0237bd1242 | |||
| e2ddd6247f | |||
| 6fac88ecc2 | |||
| bb20341e00 | |||
| e56f375478 | |||
| a469c09921 | |||
| f7dd93d6d8 | |||
| d5e924cc4c | |||
| 71ba6f354f | |||
| 5536caf46d | |||
| 2ec173bcac | |||
| 62a8444bf8 | |||
| 859d0203b2 | |||
| de37b2e868 | |||
| 7dd1d94a31 | |||
| 485932b95c | |||
| 988d5ed854 | |||
|
|
d2e4038b86 | ||
|
|
09eca5df43 | ||
|
|
203486d20b | ||
|
|
be9de4973e | ||
|
|
b42b1f876e | ||
|
|
38966c5b27 | ||
|
|
72bd0887b4 | ||
|
|
f74c0a4c8d
|
||
|
|
25088efbe2
|
||
|
|
e8e96838b8
|
57
fixes/plasma-fix.nix
Normal file
57
fixes/plasma-fix.nix
Normal 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
465
flake.lock
generated
@@ -20,11 +20,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1759499898,
|
||||
"narHash": "sha256-UNzYHLWfkSzLHDep5Ckb5tXc0fdxwPIrT+MY4kpQttM=",
|
||||
"lastModified": 1770411700,
|
||||
"narHash": "sha256-VpeOlyospHF+vxE+xEGEy0utMN0d/FUDvD2dOg9ZiIo=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"rev": "655e067f96fd44b3f5685e17f566b0e4d535d798",
|
||||
"rev": "b91f570bb7885df9e4a512d6e95a13960a5bdca0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -35,17 +35,18 @@
|
||||
},
|
||||
"audio": {
|
||||
"inputs": {
|
||||
"mucap": "mucap",
|
||||
"nix-buildproxy": "nix-buildproxy",
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1759439824,
|
||||
"narHash": "sha256-bOmAhQG3Ek2ZpNcnkFo3yiGeSmklk1uLm09BwDdnpWM=",
|
||||
"lastModified": 1769805770,
|
||||
"narHash": "sha256-gTSS83rAxZU2VYjgmxrbWEnFxk7OMEQFf38omYi2wQw=",
|
||||
"owner": "polygon",
|
||||
"repo": "audio.nix",
|
||||
"rev": "8595d27a844a11bd14819de330ce6c9f724923bb",
|
||||
"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": 1760846615,
|
||||
"narHash": "sha256-ept30QIKVAx/f7fHBGIfCPhPdZNd4yaBTq2Frz1LkFM=",
|
||||
"lastModified": 1770609827,
|
||||
"narHash": "sha256-5J3I/ERia1xhWkPwugnpbucAE8lI5ip2ohTZ3xK2HrY=",
|
||||
"owner": "rycee",
|
||||
"repo": "nur-expressions",
|
||||
"rev": "afeaf06f6cbc7fd65e8cdbe53ddf3f3c643b36d1",
|
||||
"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": 1759490292,
|
||||
"narHash": "sha256-T6iWzDOXp8Wv0KQOCTHpBcmAOdHJ6zc/l9xaztW6Ivc=",
|
||||
"lastModified": 1770511807,
|
||||
"narHash": "sha256-suKmSbSk34uPOJDTg/GbPrKEJutzK08vj0VoTvAFBCA=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprgraphics",
|
||||
"rev": "9431db625cd9bb66ac55525479dce694101d6d7a",
|
||||
"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": 1760874867,
|
||||
"narHash": "sha256-w2JettCPyqWKMYoJRCTc5/nsSvGrSV9jG4kbn8Q0pZk=",
|
||||
"lastModified": 1770641595,
|
||||
"narHash": "sha256-eeu1HrA9dW1DHxPuIZcZ8giUi1BcrvjGkVV1Bx3vEzk=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "Hyprland",
|
||||
"rev": "59ff7b2f891d06f4097128faf7027a3863542167",
|
||||
"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": 1760659005,
|
||||
"narHash": "sha256-wyS6tXYJuzbwckOeaCoRtT4qIG2UZ0YvSZx7EBNjTV0=",
|
||||
"lastModified": 1769285097,
|
||||
"narHash": "sha256-eVD4U3Oqzz0VU9ylJ5wo76xDcYKv2CpiiRXq4Is4QdA=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-plugins",
|
||||
"rev": "a5a6f93d72d5fb37e78b98c756cfd8b340e71a19",
|
||||
"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": 1759080228,
|
||||
"narHash": "sha256-RgDoAja0T1hnF0pTc56xPfLfFOO8Utol2iITwYbUhTk=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-qtutils",
|
||||
"rev": "629b15c19fa4082e4ce6be09fdb89e8c3312aed7",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-qtutils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprlang": {
|
||||
"inputs": {
|
||||
"hyprutils": [
|
||||
@@ -399,11 +403,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1758927902,
|
||||
"narHash": "sha256-LZgMds7M94+vuMql2bERQ6LiFFdhgsEFezE4Vn+Ys3A=",
|
||||
"lastModified": 1767983607,
|
||||
"narHash": "sha256-8C2co8NYfR4oMOUEsPROOJ9JHrv9/ktbJJ6X1WsTbXc=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"rev": "4dafa28d4f79877d67a7d1a654cddccf8ebf15da",
|
||||
"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": 1759619523,
|
||||
"narHash": "sha256-r1ed7AR2ZEb2U8gy321/Xcp1ho2tzn+gG1te/Wxsj1A=",
|
||||
"lastModified": 1770139857,
|
||||
"narHash": "sha256-bCqxcXjavgz5KBJ/1CBLqnagMMf9JvU1m9HmYVASKoc=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"rev": "3df7bde01efb3a3e8e678d1155f2aa3f19e177ef",
|
||||
"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": 1760106635,
|
||||
"narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=",
|
||||
"lastModified": 1770631810,
|
||||
"narHash": "sha256-b7iK/x+zOXbjhRqa+XBlYla4zFvPZyU5Ln2HJkiSnzc=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903",
|
||||
"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": 1760524057,
|
||||
"narHash": "sha256-EVAqOteLBFmd7pKkb0+FIUyzTF61VKi7YmvP1tw4nEw=",
|
||||
"lastModified": 1770562336,
|
||||
"narHash": "sha256-ub1gpAONMFsT/GU2hV6ZWJjur8rJ6kKxdm9IlCT0j84=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "544961dfcce86422ba200ed9a0b00dd4b1486ec5",
|
||||
"rev": "d6c71932130818840fc8fe9509cf50be8c64634f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -568,22 +702,6 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1760580664,
|
||||
"narHash": "sha256-/YdfibIrnqXAL8p5kqCU345mzpHoOtuVIkMiI2pF4Dc=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "98ff3f9af2684f6136c24beef08f5e2033fc5389",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-25.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"plasma-manager": {
|
||||
"inputs": {
|
||||
"home-manager": [
|
||||
@@ -594,11 +712,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1759321049,
|
||||
"narHash": "sha256-8XkU4gIrLT2DJZWQyvsP5woXGZF5eE/7AnKfwQkiwYU=",
|
||||
"lastModified": 1769956244,
|
||||
"narHash": "sha256-12RCFLyAedyMOdenUi7cN3ioJPEGjA/ZG1BLjugfUVs=",
|
||||
"owner": "pjones",
|
||||
"repo": "plasma-manager",
|
||||
"rev": "205dcfd4a30d4a5d1b4f28defee69daa7c7252cd",
|
||||
"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": 1760845571,
|
||||
"narHash": "sha256-PwGzU3EOU65Ef1VvuNnVLie+l+P0g/fzf/PGUG82KbM=",
|
||||
"lastModified": 1770526836,
|
||||
"narHash": "sha256-xbvX5Ik+0inJcLJtJ/AajAt7xCk6FOCrm5ogpwwvVDg=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "9c9a9798be331ed3f4b2902933d7677d0659ee61",
|
||||
"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": {
|
||||
|
||||
15
flake.nix
15
flake.nix
@@ -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};};
|
||||
};
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
@@ -43,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
|
||||
@@ -81,34 +84,22 @@
|
||||
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";
|
||||
};
|
||||
};
|
||||
|
||||
programs.jujutsu = {
|
||||
enable = true;
|
||||
settings = {
|
||||
user = {
|
||||
name = config.programs.git.userName;
|
||||
email = config.programs.git.userEmail;
|
||||
};
|
||||
ui = {
|
||||
diff-formatter = ["${pkgs.difftastic}/bin/difft" "--color=always" "$left" "$right"];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -107,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;
|
||||
|
||||
@@ -23,10 +23,20 @@
|
||||
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;
|
||||
};
|
||||
@@ -58,6 +68,9 @@
|
||||
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;
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
swapDevices = [
|
||||
{
|
||||
device = "/.swapfile";
|
||||
size = 4 * 1024;
|
||||
size = 24 * 1024;
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -26,8 +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
|
||||
@@ -35,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
|
||||
];
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
153
modules/home/gotify.nix
Normal 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];
|
||||
}
|
||||
@@ -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
36
modules/home/jj.nix
Normal 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"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
26
modules/programs/utils.nix
Normal file
26
modules/programs/utils.nix
Normal 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
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -25,6 +25,7 @@ in {
|
||||
# Gitea instance
|
||||
services.gitea = {
|
||||
enable = true;
|
||||
lfs.enable = true;
|
||||
appName = "Git yourself some Tea!";
|
||||
database = {
|
||||
name = "gitea";
|
||||
|
||||
131
modules/services/gotify-instance.nix
Normal file
131
modules/services/gotify-instance.nix
Normal 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;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -65,6 +65,9 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
# Raise Upload limit
|
||||
maxUploadSize = "20G";
|
||||
|
||||
# Preview settings (video may be a security risk)
|
||||
settings = {
|
||||
enable_previews = true;
|
||||
|
||||
1
pkgs/bulk-transcode/.envrc
Normal file
1
pkgs/bulk-transcode/.envrc
Normal file
@@ -0,0 +1 @@
|
||||
use flake ../../#bulk-transcode --show-trace
|
||||
96
pkgs/bulk-transcode/bulk-transcode.sh
Normal file
96
pkgs/bulk-transcode/bulk-transcode.sh
Normal 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
|
||||
@@ -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}"
|
||||
'';
|
||||
})
|
||||
@@ -2,6 +2,6 @@
|
||||
bin = pkgs.callPackage ./default.nix {};
|
||||
in
|
||||
pkgs.mkShell {
|
||||
name = "transcode-davinci-resolve";
|
||||
name = "bulk-transcode";
|
||||
inputsFrom = [bin];
|
||||
}
|
||||
@@ -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 {};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -3,5 +3,7 @@ with python3Packages;
|
||||
buildPythonApplication {
|
||||
name = "spotify-shortcuts";
|
||||
propagatedBuildInputs = [spotipy pyxdg desktop-notifier];
|
||||
pyproject = true;
|
||||
build-system = [setuptools];
|
||||
src = ./.;
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
use flake ../../#transcode-davinci-resolve --show-trace
|
||||
@@ -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/gotify.yaml
Normal file
25
secrets/harbor/gotify.yaml
Normal 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
17
secrets/jonas/gotify.yaml
Normal 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
|
||||
Reference in New Issue
Block a user