Add jellyfin, Update kernel to 6.6, update nixpkgs

This commit is contained in:
asonix 2023-12-28 16:52:07 -06:00
parent 5f366a82a1
commit 6e892e2ad9
5 changed files with 204 additions and 57 deletions

View file

@ -9,11 +9,11 @@
"utils": "utils"
},
"locked": {
"lastModified": 1698921442,
"narHash": "sha256-7KmvhQ7FuXlT/wG4zjTssap6maVqeAMBdtel+VjClSM=",
"lastModified": 1703087360,
"narHash": "sha256-0VUbWBW8VyiDRuimMuLsEO4elGuUw/nc2WDeuO1eN1M=",
"owner": "serokell",
"repo": "deploy-rs",
"rev": "660180bbbeae7d60dad5a92b30858306945fd427",
"rev": "b709d63debafce9f5645a5ba550c9e0983b3d1f7",
"type": "github"
},
"original": {
@ -25,11 +25,11 @@
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1668681692,
"narHash": "sha256-Ht91NGdewz8IQLtWZ9LCeNXMSXHUss+9COoqu6JLmXU=",
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "009399224d5e398d03b22badca40a37ac85412a1",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
@ -40,14 +40,14 @@
},
"flake-utils": {
"inputs": {
"systems": "systems"
"systems": "systems_2"
},
"locked": {
"lastModified": 1694529238,
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
@ -58,11 +58,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1698924604,
"narHash": "sha256-GCFbkl2tj8fEZBZCw3Tc0AkGo0v+YrQlohhEGJ/X4s0=",
"lastModified": 1703438236,
"narHash": "sha256-aqVBq1u09yFhL7bj1/xyUeJjzr92fXVvQSSEx6AdB1M=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "fa804edfb7869c9fb230e174182a8a1a7e512c40",
"rev": "5f64a12a728902226210bf01d25ec6cbb9d9265b",
"type": "github"
},
"original": {
@ -74,11 +74,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1698544399,
"narHash": "sha256-vhRmPyEyoPkrXF2iykBsWHA05MIaOSmMRLMF7Hul6+s=",
"lastModified": 1703351344,
"narHash": "sha256-9FEelzftkE9UaJ5nqxidaJJPEhe9TPhbypLHmc2Mysc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "d87c5d8c41c9b3b39592563242f3a448b5cc4bc9",
"rev": "7790e078f8979a9fcd543f9a47427eeaba38f268",
"type": "github"
},
"original": {
@ -88,29 +88,13 @@
"type": "github"
}
},
"nixpkgsStable": {
"locked": {
"lastModified": 1698434055,
"narHash": "sha256-Phxi5mUKSoL7A0IYUiYtkI9e8NcGaaV5PJEaJApU1Ko=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "1a3c95e3b23b3cdb26750621c08cc2f1560cb883",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgsUnstable": {
"locked": {
"lastModified": 1698318101,
"narHash": "sha256-gUihHt3yPD7bVqg+k/UVHgngyaJ3DMEBchbymBMvK1E=",
"lastModified": 1703255338,
"narHash": "sha256-Z6wfYJQKmDN9xciTwU3cOiOk+NElxdZwy/FiHctCzjU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "63678e9f3d3afecfeafa0acead6239cdb447574c",
"rev": "6df37dc6a77654682fe9f071c62b4242b5342e04",
"type": "github"
},
"original": {
@ -122,23 +106,26 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1698846319,
"narHash": "sha256-4jyW/dqFBVpWFnhl0nvP6EN4lP7/ZqPxYRjl6var0Oc=",
"lastModified": 1703467016,
"narHash": "sha256-/5A/dNPhbQx/Oa2d+Get174eNI3LERQ7u6WTWOlR1eQ=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "34bdaaf1f0b7fb6d9091472edc968ff10a8c2857",
"rev": "d02d818f22c777aa4e854efc3242ec451e5d462a",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-23.05",
"ref": "nixos-23.11",
"repo": "nixpkgs",
"type": "github"
}
},
"rockchip": {
"inputs": {
"nixpkgsStable": "nixpkgsStable",
"nixpkgsStable": [
"sd-images",
"nixpkgs"
],
"nixpkgsUnstable": "nixpkgsUnstable",
"utils": [
"sd-images",
@ -146,16 +133,16 @@
]
},
"locked": {
"lastModified": 1699036807,
"narHash": "sha256-z0lIUXoP0XSM8vOhUHC+zZLByhw9ElhRdPBIQEAcEq4=",
"lastModified": 1703800152,
"narHash": "sha256-S6dERNkDkunMpljtNVZI/wPfBmE2FLDPIa/1fk5wi9g=",
"owner": "asonix",
"repo": "nixos-rockchip",
"rev": "89f47d5a03564fc189cdc0675f40c2fad0507d06",
"rev": "e3e4f7f9d31014de76b747445369e7c59f4e8480",
"type": "github"
},
"original": {
"owner": "asonix",
"ref": "asonix/linux-pinetab-6.5.8",
"ref": "asonix/linux-6-6",
"repo": "nixos-rockchip",
"type": "github"
}
@ -178,11 +165,11 @@
"rockchip": "rockchip"
},
"locked": {
"lastModified": 1699036963,
"narHash": "sha256-Mv7Hqf+lsaMiZ3W+C6nqMTgh6dFLuOtNIYEI2rf9c3A=",
"lastModified": 1703801149,
"narHash": "sha256-oavPzogqkDI4THL6A6MSI+DMvhWoEORv4hBp0hEj00Q=",
"ref": "asonix/nabam-sd-image",
"rev": "529197aeee2eade743f30f3c2433db9feaf35053",
"revCount": 63,
"rev": "25ed6ffbf73b58f89c818050599ca9394a01107c",
"revCount": 64,
"type": "git",
"url": "https://git.asonix.dog/asonix/sd-images"
},
@ -200,11 +187,11 @@
"nixpkgs-stable": "nixpkgs-stable"
},
"locked": {
"lastModified": 1699021419,
"narHash": "sha256-oy2j2OHXYcckifASMeZzpmbDLSvobMGt0V/RvoDotF4=",
"lastModified": 1703387502,
"narHash": "sha256-JnWuQmyanPtF8c5yAEFXVWzaIlMxA3EAZCh8XNvnVqE=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "275b28593ef3a1b9d05b6eeda3ddce2f45f5c06f",
"rev": "e523e89763ff45f0a6cf15bcb1092636b1da9ed3",
"type": "github"
},
"original": {
@ -228,13 +215,31 @@
"type": "github"
}
},
"utils": {
"systems_2": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {

120
flake.nix
View file

@ -556,6 +556,114 @@
makeRockPro64BackupConfig = makeBoardBackupConfig sd-images.packages.${system}.RockPro64v2.modules;
makeQuartz64ABackupConfig = makeBoardBackupConfig sd-images.packages.${system}.Quartz64A.modules;
makeJellyfinConfig = system:
{ hostname, selfIp, macAddress ? null, unlockMounts ? true, mountVolumes ? true, enableJellyfin ? true }:
let
deviceLabel = "RAID";
device = "/dev/disk/by-label/${deviceLabel}";
mountDir = "/btrfs/raid";
subvolumes = [ "@jellyfin" ];
in
makeServerConfig {
inherit hostname;
extraModules = sd-images.packages.${system}.RockPro64v2.modules ++ [
(networkModule { inherit macAddress selfIp; })
(if unlockMounts && mountVolumes then
(btrbkModule {
instances = [{ inherit mountDir subvolumes; name = "jellyfin"; }];
}) else { })
({ config, lib, pkgs, ... }:
let
keyFile = "jellyfinKeyFile";
keyFilePath = config.sops.secrets."${keyFile}".path;
dryRun = ''
for conf in $(ls /etc/btrbk); do
btrbk -c /etc/btrbk/$conf dryrun
done
'';
prepareDrives = ''
for drive in "$1" "$2"; do
if [ "$drive" == "" ]; then
echo "Must provide 2 drives"
exit 1
fi
done
drive_num=1
for drive in "$1" "$2"; do
echo "YES" | cryptsetup luksFormat $drive -d ${keyFilePath} --label="DATA$drive_num"
cryptsetup luksOpen "$drive" "cryptdrive$drive_num" -d ${keyFilePath}
drive_num=$((drive_num+1))
done
mkfs.btrfs -L ${deviceLabel} -d raid1 /dev/mapper/cryptdrive1 /dev/mapper/cryptdrive2
mkdir -p ${mountDir}
mount ${device} ${mountDir}
btrfs subvolume create ${mountDir}/@jellyfin
btrfs subvolume create ${mountDir}/@snapshots
umount ${mountDir}
for drive_num in {1..2}; do
cryptsetup luksClose "cryptdrive$drive_num"
done
mkdir -p /var/lib/jellyfin
'';
in
{
sops.secrets."${keyFile}" = {
format = "binary";
sopsFile = ./secrets/${keyFile}.bin;
};
environment.systemPackages = with pkgs; [
(writeShellScriptBin "prepare-drives" prepareDrives)
(writeShellScriptBin "btrbk-dryrun" dryRun)
];
environment.etc.crypttab = {
enable = unlockMounts;
text = ''
cryptdrive1 /dev/disk/by-label/DATA1 ${keyFilePath} luks
cryptdrive2 /dev/disk/by-label/DATA2 ${keyFilePath} luks
'';
};
fileSystems =
let
filesystemConfig = {
"${mountDir}" = {
inherit device;
fsType = "btrfs";
options = [ "defaults" "compress=zstd" "rw" ];
};
"/var/lib/jellyfin" = {
inherit device;
fstype = "btrfs";
options = [ "defaults" "compress=zstd" "rw" "subvol=@jellyfin" ];
};
};
in
if unlockMounts && mountVolumes then
filesystemConfig
else
{ };
})
(if unlockMounts && mountVolumes then {
services.jellyfin = {
enable = enableJellyfin;
openFirewall = enableJellyfin;
};
} else {})
];
};
makePostgresConfig = system:
{ hostname, selfIp, macAddress, keyFile, primaryIp ? null, unlockMounts ? true, mountVolumes ? true, luksDevice ? "/dev/sda1" }:
let
@ -837,6 +945,14 @@
serverIp = "192.168.20.120";
};
jellyfin = makeJellyfinConfig system {
hostname = "jellyfin";
selfIp = "192.168.20.195";
unlockMounts = false;
mountVolumes = false;
enableJellyfin = false;
};
pinetab2 = makeDesktopConfig {
hostname = "pinetab2";
extraModules = [
@ -1236,6 +1352,10 @@
name = "pinetab2";
ip = "192.168.5.13";
}
{
name = "jellyfin";
ip = "192.168.20.195";
}
];
in
builtins.foldl'

View file

@ -102,7 +102,6 @@ in
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHTqU3EvTgY5/e9m6YyQWypQPK58t9iPmPnPYAvnODGB asonix@lionheart";
roles = [ "source" "info" "send" ];
}];
extraPackages = with pkgs; [ gzip ];
instances =
if localMountDir == null then
(builtins.foldl'

View file

@ -58,7 +58,6 @@
gnomeExtensions.dash-to-dock
gnomeExtensions.dash-to-panel
gnomeExtensions.improved-osk
gnomeExtensions.fullscreen-on-new-workspace
gnomeExtensions.gesture-improvements
gnomeExtensions.gjs-osk
gnomeExtensions.material-shell

View file

@ -0,0 +1,24 @@
{
"data": "ENC[AES256_GCM,data:ACkfxc3Sa+Tdps7iBMMlvOr8q5apuQKaGvgs3xZ2+qFmc8cAPd3CC8x5ZZGY/f6evVDXO07utXlRyTIdFeui3/Lmnox0WH4RHC5jQG9ox+LJnuJ46/8eYhqZKD8HJwzb93YU3ITt7bn8LuEiSc7hhBL7Hyz3vRtfHm/U7VCv9sPUalNswo6Qg6hosgsq3oPDeNvzOor+EN4wk10iupVZNu8EDs9VoKE/ff+AlYdgfEKzEHsAtrSRob4NYHL6z8zka4pjoRneCpKHgpaUiiBuQEfEZUWhvQnX3DcS3NnvBbk1E1JDqBIp2iErr6a3yspzo8y4JoRPR5Sj0SfUdAIgxK34mhghyJ98k0AOWo1ERRkpzzmAVaoRuaLGsR2q7h5f84XTiuh7zwU3Xvsjs+ukOKtAHKoQsAKmGOwTlmindBEI7xxFbrx9OD7dSSY+y3WYqygD0K2EtlzHcA7B+SmHgd8e3tv4L9Q6fJY/fimYl6xJSnF6Urv1oyhMAY/j/IiNRQMPQinuxMYX1n6YjJbBtBWJWpdbOTWNJ+5B9OAwEeXD2maiNxWorVO1idkvLr6KvX82+X8Xd6u4j/wJ0RzoiDBNfVsHjRsKZuAUyCt+ju3sLPCxmrNHC8HSk7UiC01gDioneLs9U+SXmyQOO2yToQw7WSke6yUIneY49iMs1eYMkG8L7o4V2nLwRnKEgtBehgNPJ9UpGCO+RwKzKYw8GLZz/75lDzaiOkHEUctht+FMdwb2/CEvfvKD5kUY5VKKSOhEW9E+wgINjIYOR8zG6U9034zaE7iBv5oBvH52iLU8aNm8b3TPZw1mB2IZVxjoG33+CmbMi/5kS0c8gY2i1s+kUjbeTjMq2g03dpp9kBQWxC4P+mOVnEJcRQJeigxzIiysqzUbQ1ZyAq4s7pPl9XJL3QJGYrWcCfD+wDfmSX7tuRmeETT3c4gxJfZEzx2FK8hIhFNNuGlJYzzzuGhWPPFp0F6vfHPMfF8CREsdT68UInVs9pG6TFj/aUBESg9namHZfIZLSzrQqm3kn6zZ8fqAwoEi9rRYL7uzcyZnL+4WXqb5lbELqqXQJcIp4yggAorAmQp4udg3y6OvybdelvVqYXbFDY0t0CNipgCxMoS/vQJ1L+oNR5eEIQmzlZSP580ke1/EN7ARHp1JU3KHfLg0PFfcJjKfISHtLQj+ijD4Fb1RcmJs5xzBEa6kpC6+PwVc93eUNyyV1je36psSITqFd2p++oPqpUUud3qLHZwzY0uxamBHRig0a+EClkIJGHLx14a2AlpuK+DpaBh1B9t7DjfECrO6WBdChSCnZt33N3sTdNMR2dRGD2oO3khDefZ57lqkHmI0mUCTJsxYOzer3bt0EXfMUUJ+6owekS/MXjlHVSiDCzmaEV+vS78RvYC508L1oRS8zrS04lpsb6Lz/CveZM7shf7BPkWi8BwTBX5KKrcrxCda93ZMdqbRhExNg2ddDlXsPEl5WP0BesKaBYvPUgDgDtLLSfobosBcoYmunmlvbSxRDBjKjyiuvwigqNmPQjLbMY3fiuqfL9zIO5vD14ceAMVQE9H3QtXo0Nmw22/jLRAFOVY6DRo9ySozTqBAScYkrpzDSB23P42+GB6jcIx5N8mcyOyhpgjXkI14cdBvx/E1xue501gxzIOcubUw/qQT64u2hzfBgJUWIowWxhCeHJGwWgRfA4FNNvTxpTqA2+tgZkTkWQA3lu2mXEpWXpPM1WmnzlVeLc1BzvJ+6K7Gm57TM+fLTgBdPJevhwcec0wsQJwLZp7bAyTiV6lpQe/E2Ar7U4ICsMQVkImsSCJYVNteBwrqoyMwSit/Fz/DS3tFQYsbFfTywBQeM3Bk42n3s/58s3kP3pmb4eCYH9M+CE9ohqxOLrv5WNWGpf24fz2HfNGB6tCCSkpsaheVeRSCwBH/oxK9/P9iHgsgG4LyS/YGr2QDm9PtdTzJuEwus19VYkJxmSpyMOEpYz1mQRR5+DY0P+HSnEsISpzgPR7woaBIjcTZ3CxuNaEbUo5pnqrDGhI43oXHV3LI0zHQBZdUISaH9LfhC7/zvniPucLb2MO8ZTSC8ofl7iSsYPPEzSDdxawel7t36igbt2BR5JaaUuDm6//GhSa599IuYT37N/zKOmCfQsJQoJE4iq0iZanM0zuAFTCwfGjacnUcLpanLDm4EmCOiwtSiER12P967S15htr3OcACZWJSACB8eGoeatckI//PIT8Dz0LBy/j02wEyg3/KUdcRvGJsvRYDMDilktNXtoGoWfwWdhjWVgfH2TbJDnE175IxeuvmmyMa1laoc7FwH8l7ywNd2aKay8KPi4rX31gwdRHUeHHzGThz/BmhNUhLvvkO+7tyS68X/9v2YmkMEUcOm23N1+Q44io7004W9SMSWn3fXeYFLG9baM74p/eAP7QIcAC+aJM3eYrNXrZ8lSdfIWGmcwt4Hs5TapwlxB3SCOnyNPYCFd7AcZTTBoAqGNk+7pbmPcjem4rcF6wcNFzfnEFinnC+mThiV/LGSmEkLvWPvaPOJ852WK75Ooq9XiTClrfIhQgCLb00v/YU0YtBqIYdX6tqk89dXToI8TnweJbl1zJMzEvYnmSRuG0iK1Rxf1i6OeX9KnwQluoCMVJvLpbU4owjiZ2nRw9xSccuJIm8rpKIkz7L3hzwO6ODKkgcoGFqmEwwVlBNbLvaLnhstJ69MbG/eNanX65dWxo=,iv:UoONeT2ymqfkGjq31KRm8TCAUxu9F/Su9++okllNVF8=,tag:ltgypKzRJSTlPyTp5qgTwA==,type:str]",
"sops": {
"kms": null,
"gcp_kms": null,
"azure_kv": null,
"hc_vault": null,
"age": [
{
"recipient": "age17yhtwnhqjssghc5qqamt0fqdu27zpqms8d8ghrc0txeevywfp3ssklfy57",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5SkR3cWZiZ21CNUJDUnRC\nU1pXcWRhd2hJcDZmL09mUUNQRUVDV09yS0VRCjh0TVpGemc3TlFwdVluU00xM1A2\nU0ZVdFQ1R3RSbUNiWlBkNVhtZEdSdHMKLS0tIGd2ZXNKMVQxVHd0RmV1R3EyNEpx\nU3RIOWVrdkQwdGZRUXZCYUVNdUVFdVUKdCyzzg1fCf3LlPZ6lww6SCwLHuxrzl7t\ndhb9QXSMBKouQOZfgjIUcep3vjpAfxORiOf0HqvIFohA85rKCu/XMg==\n-----END AGE ENCRYPTED FILE-----\n"
},
{
"recipient": "age145uwrexj6ffaaxy7jg3j29gtchhwy0y0nttw06zeuxkqsy8rnpds7fh7xq",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxSzJsVnoxL3NrZ3dGazdJ\nODRDbnNxbktFOXd6UktYZ2l1SzBNZlQySUNJCklhUWVPSG5FNnRYYTdhK1JlUllX\ncWxwQ0JHWFZUUkxsUkdHdXJVMjdsSGcKLS0tIHp1RVdjamhLMno5c2JVdE5ndkNk\nWlJPb3hyT1lNYUh3Nkc4WnVZalJpU0UKvtsVOxJAPwllAvuOdIn8Vz8QBtAWVDj3\nQtS0D1ZpMOWicODIT/rzKc8PjH5XVMzx7Weqf6u+u+4qbahxVByWnA==\n-----END AGE ENCRYPTED FILE-----\n"
}
],
"lastmodified": "2023-12-28T22:15:14Z",
"mac": "ENC[AES256_GCM,data:NOIcN6rnNFzwM4jZLAtN1R9pk4Vt7jzNl62Y6svKozHIaPOjH4+b4tpYIDLHwWFeytN4m6Ns9xW7Ys865J7BfdchS92In+Au8PGWwH4tOPLw8j0NMHXC1ylV/yNnvOlC2WD/dD6rTUlnYDfcRsrR5b9gzAhUHRQKx+oyOb+dXgA=,iv:Obrvej12xF14Nqf8AP7d95CRyHACOqfIFkJ6/OYgJNI=,tag:qlKEqEIpYUWNKl8+RVbCxw==,type:str]",
"pgp": null,
"unencrypted_suffix": "_unencrypted",
"version": "3.8.1"
}
}