From 0d69e4b6d7b15dc9092e9b96cab93d3957e23493 Mon Sep 17 00:00:00 2001 From: Philipp Date: Sun, 13 Apr 2025 00:44:03 +0200 Subject: [PATCH] add win11-fonts, move homes folder to target host --- flake.nix | 1 - .../default.nix | 0 modules/nixos/system/fonts/default.nix | 2 +- packages/ttf-ms-win11/default.nix | 166 +++++++++ packages/ttf-ms-win11/hashes.nix | 348 ++++++++++++++++++ .../bodenheizung/hardware-configuration.nix | 1 - 6 files changed, 515 insertions(+), 3 deletions(-) rename homes/x86_64-linux/{philipp => philipp@bodenheizung}/default.nix (100%) create mode 100644 packages/ttf-ms-win11/default.nix create mode 100644 packages/ttf-ms-win11/hashes.nix diff --git a/flake.nix b/flake.nix index 8e9348c..b09ffe4 100644 --- a/flake.nix +++ b/flake.nix @@ -57,7 +57,6 @@ } nvf.nixosModules.default ]; - outputs-builder = channels: { formatter = channels.nixpkgs.nixfmt-rfc-style; }; }; } diff --git a/homes/x86_64-linux/philipp/default.nix b/homes/x86_64-linux/philipp@bodenheizung/default.nix similarity index 100% rename from homes/x86_64-linux/philipp/default.nix rename to homes/x86_64-linux/philipp@bodenheizung/default.nix diff --git a/modules/nixos/system/fonts/default.nix b/modules/nixos/system/fonts/default.nix index 5199fb7..fe232ff 100644 --- a/modules/nixos/system/fonts/default.nix +++ b/modules/nixos/system/fonts/default.nix @@ -1,5 +1,4 @@ { - options, config, pkgs, lib, @@ -69,6 +68,7 @@ in noto-fonts-cjk-serif noto-fonts-emoji nerd-fonts.hack + (pkgs.awesome-flake.ttf-ms-win11.override { acceptEula = true; }) ] ++ cfg.fonts; }; diff --git a/packages/ttf-ms-win11/default.nix b/packages/ttf-ms-win11/default.nix new file mode 100644 index 0000000..5742431 --- /dev/null +++ b/packages/ttf-ms-win11/default.nix @@ -0,0 +1,166 @@ +{ + lib, + stdenv, + fetchurl, + p7zip, + acceptEula ? false, + enableBaseFonts ? true, + enableJapaneseFonts ? true, + enableKoreanFonts ? true, + enableSeaFonts ? true, + enableThaiFonts ? true, + enableChineseSimplifiedFonts ? true, + enableChineseTraditionalFonts ? true, + enableOtherFonts ? true, + namespace, +}: +let + inherit (import ./hashes.nix { }) fonts sha256Hashes; +in +stdenv.mkDerivation (self: { + pname = "ttf-ms-win11"; + version = "1"; + + strictDeps = true; + doCheck = true; + # Because this must download a very large ISO file, and the actual "build" + # is just unpacking it, it is best to avoid remote builds. + # On nixbuild.net especially, building this derivation + # is likely to fail by running out of memory. + preferLocalBuild = true; + + eula = + assert lib.assertMsg acceptEula '' + You must override this package and accept the EULA. (ttf-ms-win11) + + ''; + fetchurl { + url = "http://corefonts.sourceforge.net/eula.htm"; + sha256 = "1aqbcnl032g2hd7iy56cs022g47scb0jxxp3mm206x1yqc90vs1c"; + }; + + src = fetchurl { + # + # + url = "https://software-static.download.prss.microsoft.com/dbazure/988969d5-f34g-4e03-ac9d-1f9786c66751/22621.525.220925-0207.ni_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso"; + sha256 = "sha256-67x5EGcV9E9QIPd72QchsXxah3y8FaNTW5kVVJOhuz8="; + }; + + enabledFonts = + assert lib.assertMsg + ( + enableBaseFonts + || enableJapaneseFonts + || enableKoreanFonts + || enableSeaFonts + || enableThaiFonts + || enableChineseSimplifiedFonts + || enableChineseTraditionalFonts + || enableOtherFonts + ) + '' + You must have at least one set of fonts enabled for this package. (ttf-ms-win11) + ''; + lib.optionals enableBaseFonts fonts.base + ++ lib.optionals enableJapaneseFonts fonts.japanese + ++ lib.optionals enableKoreanFonts fonts.korean + ++ lib.optionals enableSeaFonts fonts.sea + ++ lib.optionals enableThaiFonts fonts.thai + ++ lib.optionals enableChineseSimplifiedFonts fonts.zh_cn + ++ lib.optionals enableChineseTraditionalFonts fonts.zh_tw + ++ lib.optionals enableOtherFonts fonts.other; + + nativeBuildInputs = [ p7zip ]; + + unpackPhase = '' + runHook preUnpack + + mkdir -p ./fonts + + echo 'Extracting 'install.wim'...' + 7z e "$src" sources/install.wim + + echo 'Extracting font files...' + 7z e ./install.wim \ + Windows/Fonts/'*'.{ttf,ttc} \ + -o./fonts + + echo 'Extracting license file...' + 7z e ./install.wim \ + Windows/System32/Licenses/neutral/'*'/'*'/license.rtf + + runHook postUnpack + ''; + + configurePhase = '' + runHook preConfigure + + ${lib.toShellVar "filenames" self.enabledFonts} + ${lib.toShellVar "checksums" sha256Hashes} + + echo "Preparing to install ''${#filenames[@]} fonts." + echo "There are ''${#checksums[@]} known hashes." + + runHook postConfigure + ''; + + checkPhase = '' + runHook preCheck + + for filename in "''${filenames[@]}"; do + echo "Checking '$filename'..." + filepath="./fonts/$filename" + + if [ ! -f "$filepath" ] + then + echo "Could not find '$filename' in extracted files!" + exit 11 + fi + + checksum="$(sha256sum "$filepath" | cut -d ' ' -f 1)" + echo "'$filename': $checksum" + + if [ ! $(printf '%s\n' "''${checksums[@]}" | grep -Fx -- "$checksum") ] + then + echo "Checksum for '$filename' did not match!" + exit 12 + fi + done + + echo 'All requested files present, checksums validated.' + + runHook postCheck + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out + + echo "Installing to '$out'" + echo "$filenames" + + for filename in "''${filenames[@]}" + do + echo "Installing '$filename'..." + install -Dm444 "./fonts/$filename" \ + -t "$out/share/fonts/truetype/WindowsFonts" + done + + echo "Installing license files..." + install -Dm444 ./license.rtf \ + -t "$out/share/licenses/WindowsFonts" + install -Dm444 '${self.eula}' \ + -t "$out/share/licenses/WindowsFonts" + + runHook postInstall + ''; + + meta = { + description = "Microsoft's TrueType fonts from Windows 11"; + homepage = "https://www.microsoft.com/typography/fonts/product.aspx?PID=164"; + platforms = lib.platforms.all; + license = lib.licenses.unfreeRedistributable; + maintainers = with lib.maintainers; [ spikespaz ]; + }; +}) diff --git a/packages/ttf-ms-win11/hashes.nix b/packages/ttf-ms-win11/hashes.nix new file mode 100644 index 0000000..291b53f --- /dev/null +++ b/packages/ttf-ms-win11/hashes.nix @@ -0,0 +1,348 @@ +{ ... }: +let + splitNewlines = + string: builtins.filter (x: builtins.isString x && x != "") (builtins.split "\n" string); +in +{ + fonts.base = [ + ######################################################################################################## + # Normal Bold Italic Bold+Italic Full name # + ######################################################################################################## + "arial.ttf" + "arialbd.ttf" + "ariali.ttf" + "arialbi.ttf" # Arial + "ariblk.ttf" # Arial Black + "bahnschrift.ttf" # Bahnschrift + "calibri.ttf" + "calibrib.ttf" + "calibrii.ttf" + "calibriz.ttf" # Calibri + "calibril.ttf" + "calibrili.ttf" # Calibri Light + "cambria.ttc" + "cambriab.ttf" + "cambriai.ttf" + "cambriaz.ttf" # Cambria + "Candara.ttf" + "Candarab.ttf" + "Candarai.ttf" + "Candaraz.ttf" # Candara + "Candaral.ttf" + "Candarali.ttf" # Candara Light + "comic.ttf" + "comicbd.ttf" + "comici.ttf" + "comicz.ttf" # Comic Sans MS + "consola.ttf" + "consolab.ttf" + "consolai.ttf" + "consolaz.ttf" # Consolas + "constan.ttf" + "constanb.ttf" + "constani.ttf" + "constanz.ttf" # Constantia + "corbel.ttf" + "corbelb.ttf" + "corbeli.ttf" + "corbelz.ttf" # Corbel + "corbell.ttf" + "corbelli.ttf" # Corbel Light + "cour.ttf" + "courbd.ttf" + "couri.ttf" + "courbi.ttf" # Courier New + "framd.ttf" + "framdit.ttf" # Franklin Gothic Medium + "Gabriola.ttf" # Gabriola + "georgia.ttf" + "georgiab.ttf" + "georgiai.ttf" + "georgiaz.ttf" # Georgia + "holomdl2.ttf" # HoloLens MDL2 Assets + "impact.ttf" # Impact + "Inkfree.ttf" # Ink Free + "l_10646.ttf" # Lucida Sans Unicode + "lucon.ttf" # Lucida Console + "marlett.ttf" # Marlett + "micross.ttf" # Microsoft Sans Serifc + "pala.ttf" + "palab.ttf" + "palai.ttf" + "palabi.ttf" # Palatino Linotype + "segmdl2.ttf" # Segoe MDL2 Assets + "SegoeIcons.ttf" # Segoe Fluent Icons + "segoepr.ttf" + "segoeprb.ttf" # Segoe Print + "segoesc.ttf" + "segoescb.ttf" # Segoe Script + "segoeui.ttf" + "segoeuib.ttf" + "segoeuii.ttf" + "segoeuiz.ttf" # Segoe UI + "segoeuil.ttf" + "seguili.ttf" # Segoe UI Light + "segoeuisl.ttf" + "seguisli.ttf" # Segoe UI Semilight + "seguibl.ttf" + "seguibli.ttf" # Segoe UI Black + "seguiemj.ttf" # Segoe UI Emoji + "seguihis.ttf" # Segoe UI Historic + "seguisb.ttf" + "seguisbi.ttf" # Segoe UI Semibold + "seguisym.ttf" # Segoe UI Symbol + "SegUIVar.ttf" # Segoe UI Variable + "SitkaVF.ttf" + "SitkaVF-Italic.ttf" # Sitka + "sylfaen.ttf" # Sylfaen + "symbol.ttf" # Symbol + "tahoma.ttf" + "tahomabd.ttf" # Tahoma + "times.ttf" + "timesbd.ttf" + "timesi.ttf" + "timesbi.ttf" # Times New Roman + "trebuc.ttf" + "trebucbd.ttf" + "trebucit.ttf" + "trebucbi.ttf" # Trebuchet MS + "verdana.ttf" + "verdanab.ttf" + "verdanai.ttf" + "verdanaz.ttf" # Verdana + "webdings.ttf" # Webdings + "wingding.ttf" # Wingdings + ]; + + fonts.japanese = [ + ######################################################################################################## + # Normal Bold Italic Bold+Italic Full name # + ######################################################################################################## + "msgothic.ttc" # MS Gothic + "YuGothR.ttc" + "YuGothB.ttc" # Yu Gothic + "YuGothM.ttc" # Yu Gothic Medium + "YuGothL.ttc" # Yu Gothic Light + ]; + + fonts.korean = [ + ######################################################################################################## + # Normal Bold Italic Bold+Italic Full name # + ######################################################################################################## + "malgun.ttf" + "malgunbd.ttf" # Malgun Gothic + "malgunsl.ttf" # Malgun Gothic Semilight + ]; + + fonts.sea = [ + ######################################################################################################## + # Normal Bold Italic Bold+Italic Full name # + ######################################################################################################## + "javatext.ttf" # Javanese Text + "himalaya.ttf" # Microsoft Himalaya + "ntailu.ttf" + "ntailub.ttf" # Microsoft New Tai Lue + "phagspa.ttf" + "phagspab.ttf" # Microsoft PhagsPa + "taile.ttf" + "taileb.ttf" # Microsoft Tai Le + "msyi.ttf" # Microsoft Yi Baiti + "monbaiti.ttf" # Mongolian Baiti + "mmrtext.ttf" + "mmrtextb.ttf" # Myanmar Text + "Nirmala.ttf" + "NirmalaB.ttf" # Nirmala UI + "NirmalaS.ttf" # Nirmala UI Semilight + ]; + + fonts.thai = [ + ######################################################################################################## + # Normal Bold Italic Bold+Italic Full name # + ######################################################################################################## + "LeelawUI.ttf" + "LeelaUIb.ttf" # Leelawadee UI + "LeelUIsl.ttf" # Leelawadee UI Semilight + ]; + + # Chinese (Simplified) + fonts.zh_cn = [ + ######################################################################################################## + # Normal Bold Italic Bold+Italic Full name # + ######################################################################################################## + "simsun.ttc" # NSimSun + "simsunb.ttf" # SimSun-ExtB + "msyh.ttc" + "msyhbd.ttc" # Microsoft YaHei + "msyhl.ttc" # Microsoft YaHei Light + ]; + + # Chinese (Traditional) + fonts.zh_tw = [ + ######################################################################################################## + # Normal Bold Italic Bold+Italic Full name # + ######################################################################################################## + "msjh.ttc" + "msjhbd.ttc" # Microsoft JhengHei + "msjhl.ttc" # Microsoft JhengHei Light + "mingliub.ttc" # MingLiU_HKSCS-ExtB + ]; + + fonts.other = [ + ######################################################################################################## + # Normal Bold Italic Bold+Italic Full name # + ######################################################################################################## + "ebrima.ttf" + "ebrimabd.ttf" # Ebrima + "gadugi.ttf" + "gadugib.ttf" # Gadugi + "mvboli.ttf" # MV Boli + ]; + + sha256Hashes = splitNewlines '' + 37598a7b023c80f3e56c44ed91e01936a96b3e81c888bee82f85113da39f9468 + 56567bc71e89fd173674c78f02b474123a02561b246526a22600c3a29b2fdc65 + 9090931d496a272ab9f1382480332e6029e636a9191fe21d158adbf148acf0df + a05f9206c44ba5795690f03fc767f5e5209bf913e23cf61f45d2ed84c3a424e5 + b381730d47408ced8f104b62c9042a6abbbd08501a37f14b76858760a6cf176c + 8e14668bbae03f78ed668dbe3261218881960dcd9fb80ad6c1d1dfb4226a57c3 + a7da3ef195158acd8432226a21f2940f1806a9c8d079f18d0a9ab475f50f9659 + 3f9e512f82eaf6f1b7869b82013fb79f6eaf1a41e75a0e7b96f31f35b1022ae4 + fec0897934d26625b17bb3e4ffb3a7b0b6a138f6e61d5eff7535417cfbbc7884 + 38dffcaf1fac89492f7c56c600a14daf36ae42f7c21985cd4134ae113124a58f + 483bb4800d30031ae1970dbd44a64f2f476a9fcba326bd0a216dac6e0b92e333 + 8df7a2c69fc4044835814899534e5fee6e72f78285b5a6dcb19531142b51d742 + 9be778c9ed418770f6b5a02064d9c0b47a8fdea1137618f0bec9ac4072430a45 + c8ab96bc49ec1dc36936b5973fc143ca222c1a33ab27b87071a3bbc44d34ca9a + 67ac784ac390f6c48119e76f9e34589f9a86b8974f561a6159545b858ab4cd41 + 91046862e08fbade0bdd648e81c4efbe6a963947f8b6e32b64a28fe39073c468 + 9c9dc0cd0fd6b1a06e8f406d04bb15a88aaf20328d3e166c12d6bc7994b781d2 + 920f472051f70e33887909a4f2c91541a2b3afa7a4faf577acf350020cd29d46 + 8fa803e5abc7fff0c78c62cd22d07c705f3273c53312380c36ff484246ed3c1b + 346c3d9c8c827faa22c0d7951a9d6e2dcbb1ceb9501ee4533ddf8026ddc21735 + 0086c19e81d293a542e7d75564c645fb58070cc850aefebf8fa1c397858e510c + 78709a285aef168b5c2d8073dce837359997a14244d6ed904883717d60eed3b9 + fa90f376ad37f308a819b341c8185f788d30a1012829278592eab45a41818d1a + 3cced0162ddb9e5f1e63ee1b36fd6e581c090318dce1a0af01b77f5ea9952c80 + b699a59faad65272ee48a4d118d6bc743d4cc4ba338cb1c6347deec58aa1e1a0 + c96226cba7f50e94b534a5f8ade6a54f48a03be7c73360524eda5cbce4de34b6 + e17738f092c8b02f4443867a7dfcdde66fb4cd6f6b10de8e40b2f3192f8a5835 + df8d94382f73e6d2197b60653c3d55c28ab5cf127a82e65b8af4ed1b52fdc412 + 090b89742910172c69e1fd3b1814ad4e482a1c712b87d24e96b377beaac3a6d1 + dfcc306777a594d2815368547dd897e2ac82aff8073e55d9e682569939e49b81 + fc68cb42582e1207bcc397df7b60870a74ae068b17d7bd79f2e9f63af89796b4 + 5861588608d3a3775d921a7e4acb8362b21630c6b63718bc68adb7137ce53beb + cfc2acbf9ae0205a0a258e564bdbf5466a4e49a95281a1d2e72690f149ec837b + 4bde3e6392b96910fb59094c6c1a4dbfae18fee78d0bf13dc30616837c4f95db + 16d0c83e99ca3cd56a85966c4ff2c5f0c0f8a5a7140a7594b2ec3e404c8e96a0 + a541834fb9cdde9bd6d2c3ff1565cb0bb5ccf7a15e4e9daf2cb58d9b1cf282aa + d105038ae445a7ab3e7c037eae9c6a436f71f603136f353e8338cfca40e6ca18 + f3a1bbc53e7c3c21262f033c4d73a55a990952cbd4644ea42cb9f0c4c4640e40 + 43a890795ad133d73568d169a35924f40416be8a6950a1a03263052ec8e95b8a + 2db3f3100589c5795f7917ebc25779d23b69dd19047a963190d9357a5e0dc34c + b24aa49a4bcb99a0ffc60cad77f00941e4b121153d8b0a519c03719d9be6004e + fe28fdf790453728a07233877c0a708477319fa798363ae4a1657d04fd173416 + 588f090ae3a6d31370457312683d14ee3a5bfbdaaa0a070b7c80225b55b23e78 + f3245f5f38f61bd1ceefb0f1338a5b88a21e6220832c2f43a38bbc7e1547c36f + 6a8481fe107ee547893c018b13dba291c2020bec3de5da6525d9ac09f6bc2105 + 67461fabd8329d0d8ad62689cac642b34fac81c754ff9077ad211160ec62282d + 70f53470e5467d6b0dc2af2f58cdf2622629be2a131652615d9ef8c00a410fec + 254ad309e8f6b49cf0379a565adaf85a78994b4420b98a94119f45449d7b70ab + d3e4bad27651d120ac8f2cea42cf4b4f077264fb243f66b3caffcfd35465f49b + a7217a2e590c86141bddadc74a2bcdff2efe210db48469a77a749e0446d91ea9 + bbf1192965e5266fbf23370416337d2861fc1e8bd349def93f2994ba67382fc3 + b6c66a1858370fe575629e19d53c05350738bf5105e18ceac07fe9efc9cd008d + df59f9ea915957b22a389d68580bf40dc5bd05822cc65b5fdcc188c706a694e7 + 6cd482205e1390b32a2b6327e1e5039424e346172c187074eac12006bc51935e + 716c08d704f154870bd9fb78b185d0b644912301dfa9c9e6daf45bdb4832a299 + 27c9b8e4cc7c5cbd846d1fa978b7713938e8ae766875962c70c3986b004bbc85 + 1614c0d3a6751eb46b2c52f09ae23dd61f769beda83058269cb0653c049eae43 + 84e70ccc1664482f4a960442c7a166c91a1b2cf98ff88c33cb73f79403f66d7b + a2efc8b8e51fbd031a7142a1ade8866fa904c0c349511abc579ee53f8a926f31 + 06e1a30f687ab7d39f533447b21e84d51e0cecdaa6bfa060c87136b168811bdc + d3366c28fc5d73644465fe08bc2d8571710955238e525dec4c9d6b5d22fb92fa + 74f2b3d0c20cf7380eb121a09fd7cdfdc1ccdd12a00db83caec0feb48b4db9f7 + fdec3a7efacd57913d3c14111837908ccbabea5b0b44ec62527eb73acf743afb + 6905f0ac846d1ec4326cd14a46cb7379204940aa293b098ee4c1a69723bbd165 + e4b3b9d058750fb80899c24f68e35beda606ca92694eff0e9f7f91eec7a846aa + 914ae3beb26a5948dbf67d87a7f86f10abe9407d420fa6a448f974e41d0f3727 + 0ec2bdbfc2ba99d9fb05b6f7c511e7ab8b7c055e2d644570ad777455d6e9796d + 21390a7e84b61224916e810fd00344ad9ad4f1d9115151a551845a4387d20b10 + 8fdb188252a2db0f020c89831bddb61cadfe290c3616fe534479b4d3b10d09c1 + 495577bf8ef74deab6ecc2e7acf63cd966184148f9bc2044a1068cd58501577e + 9bcd6064e3b52fa30a347edd6e82506e2ec8b1602930b423c629a82c10468a5b + 0e14f663fa34460fe9a07bb32d0017a180a4a0c8457d279fbfc5d8452753b477 + 0b50839f0e13f9e1607b46568aa953fc1491eb3f867f2737e6a4ff9eb3696aa9 + d8bbdb72e3f930157824b2e59677d3a912d4512c14a948e6656a2e3fb0c935ad + 4e3cec7d1995b6d74102c0b4669e4507ac35cbf9a9830a93ac14c6e40dfe36a9 + 5346840fa85a1969699dc97635e838cd2c42dad7f8a4999d7368eb888fceb04b + baa251526d6862712a58e613ef451d8a2b60482142ec6aab1d47fb8e23e21a7c + 14afc5b98fc53165a2f760fcff11f6ed55ab80f20ae46a2a4a08b7af2b9044d5 + 81e2a95d3c49468029c07e58f71a5f0ca4cfcb617eaf6bd77576fb03aa430bb2 + 56735cfcb1d3feac66d5d9bb446c8598e522dc03c54923943899217c227bdfab + b41c5227ddfca092a57603067ae59933473b1a63d54c9cc90b174e5741088853 + 27ca1ab4bd5ad3b0404ee6a9a03b143408dbd7e5a4c9e4b2054639c03fc0f682 + 2e2fabd71aa30f0d7039b879ee58441a791e095a6656064eb9d4a84a071e5e8f + 6406c765cfb81bf302d767cb2383a5a51e26e50d7239ed22233dbae689ae1f05 + d2f8326a354456d93e78b0537c58793e7072c3617af7d9ee187f10d6d595f510 + 1878842d8dbdf8489794af0bace95a956db270dfa506ddcaabf94fa827b769ac + 99f0af2d1941707fecda23da38bafbed5144a73a3720d773c05b9d4c445920ed + a183b77b655df66793639af7874828fb50f748dc4af57ae40f758156f7f34634 + 814fc6cc5407d2137022a1ff8587cfa43d5a2736b2ab5378ea49ceb5c072de37 + 60cd474595d07bbdfa9d87de1a1e24c876e218d117c4a3098e0ac937157a1b9d + 0e36ddf90102e476c6739ca4c8cc18ba8309d880c12558981d2e4d42de78fc00 + 9311aadcbd919746f50d222fa0215fb44266d6993221c14a196f0725fdae464f + fe3e8bdd64c1c9f3b9cf5189d06510c80d72cec28e03d04bffc560f77eec58d1 + df2c69a18a462e5cbc97d04a033f3bd7cd0abfe818381641f8c2dee7b7c43dbd + d71f81c83ec63eaa32d36d5df7be1d9e71d3ea9150f47cebda2924923cbbf18a + fa008372f8a94945d0daef9daf0bfb9e3fba3a25fd17f2607d47ac6861bd0303 + 65aece2928246837317e093a11c6df5cbfc67035f1e045c9771f7c408be1faea + 93c3ff526c19d03496c01c6a1bfd1031f97af021a13e859a89dfc717a0b6b6ec + e8b17bc645c098bbc5167acfe13f0e3c63f0f417d539aab171db7eea3c40eab2 + d3b01af9bfc265ee4057b76c897243ed42f14d62a78b7306084e54dba37a548e + 79872dff519fde7a0c7cc8ed4f454a5fd7fd7628c527dc74473056a32a9eeb38 + a031500bccd32b5d6e819699b774fc679c696ed4965b643d51a94eb398475550 + d8d27dc02f26f9f4c30a2b86d93e99492eef702a107af42f4df8a4e049c4e1dc + 03e4e45bb8ebb6d055a5584166cc26712bf7e746ea29cb6e548341361d31dc85 + ddd852f9e43a5e81af62a3f6654324ba7553d7d66101ab848abc1bd2d626ac4b + 9d0437d151ddd907d72ba9ba348d670575a86e4f5cbf018de18645f2353140e5 + 6e1908cad924fdf59196c7dc84d069880bdb3c3d1b7c7d9750cfcd5a22de6a4e + 744d3ec1b277e3652ba8f8d45c89f83c99b7ecf3eb2dfa27306d7be56d3ee030 + c2c3a4146ac080945670eb6b0c4961b26467c797e8497367ac8611cbc3955559 + 6685c657a7e292083e28f19bbf1a1e90509ce3e1130dbc4ed1c62ba3f9140543 + 95392428a804b937919526fec91bab64200664f7f22f777211da6bb244988f56 + bac844bd41f847cf138737026d41c983387a1065535c32e78aa22c48708b52ad + 796dc7e97b357f9c2ad10044d01a86d3fb49cf80e3693011eb055c466c995de0 + 5e8b2eb430f543eb304f08f44f5eb02ccbc39ffdc95400aae96f5dcd2aea73d8 + 87942234ab0cc4400088648bef8d1f7afc4c44e676c7ed6b32ca31462c18307d + b4329b395966137485b324d0c15817e99f0167d559d81a01e90d8761d52261b9 + 4e6ebd5a1bab4330be223b7d21624bc55a46a38a3a760e1af87d0388f49176f4 + 1df27cbcc8a9fb7f843bc24e257b78e8ff93de70e8c1ad2caab8379e7d6a1eab + 2ca2cfde263fa420e8d39420f075ee9ac80bc0794272c53ac4571a88f8a075a6 + e0b00c65dbf786eadb4345f62e456d7462b960a5b15c9e07fa5c8809481b9a5f + 6147a218696424127035e25c4be335c73a7d69b052b714d05806b3c17898b49f + be1f89db95982d7ee568de72219457f7330260c4b742707ef3c5b5438a453840 + 14f2ebcdaa1b77e5993a8533662e4bd3ebfe2c5771b6daafd8ccb39b2ad588b9 + c691699eaf218e702b2d77c1f62d2c080be6248f1c11018b0b2556834a9cecb1 + 33212faa85fad61785cd6917172378b798bc9f5d4c47c121437354f47980aa6f + 55be3490211845a51960c129be1d793782765383b2dfcc969228d4ab5ae8fe64 + f5151d081f6afea4c26464e0cd5e695f57a99209cfeea2f483c3108684660eb6 + e47d594e2e2bc31b28f87b6f66483d32f925843ceb002f919c7a403aca48813d + 707585b9acfc1507d9bd943bb5435f75768274b1a12b1f71de76ad78be4d7e7b + 72a6cd94fab6c179392075d3fb361e269cdddfad41bb7ab385fa22a37e49a900 + 10df702864b1f89cb29ba0d6b97c04228338d16807e13e8d8c74b91aba5e5f23 + 538949482d964e9f353a3a8d860bb3eda93b46b830f3b677e4f53eb2ff3a6e7d + 5dfd7a4c708caeefae42cdb9540946de042beeb8c069dfde0dbc14c2fa0705ae + 80aef1c25135b945e9de7d09e6445c386405eb2e0ea7032d4cd00a2fe3eef0ae + f936530a7ede296580f897c47e7a3fa48a9483166080ce05105673a1339cbf0c + 2314a03c53506fa79525bc479ea4be9c036d1ebd86a1ffb5837ca5b43ff51f07 + 821ee79ea06ea1ce24964baf760d740086e8e1e6b88528978307cf1729cfaf1d + c6e6ce8119fdd47ec6a5449a08e2d2ad7f41ea03143aae193068ed9fa58eaebc + 97226e81f19eff8c8fb191745748bab920472c005d3ec4e23d9a50a12c471d92 + 7db24a1aafeeb65c1b79689b6883114e35f3db95a75ca1dc0a0186b178d06d8b + b7397adf2dcc24ca790348a3c26deb2122b45e5728fd25fc588de4cf5a75b469 + 9f02f6bf076197ed2a1335fe59a3bdf88e7ad4a849bf68037a528f37cce36791 + de0b632015447f28c2db41c8e07c745cedb05ead5dbc2e73f19da14d2e5f2151 + d0e722b91ffd5391cc2e7d6e976f274d5aee9fe0b8d0fedfffe093763e695cde + 94d0872622e6d592f01440b58dac8f5d7e010509bd76bb71cbed71fc5f4dc173 + ''; +} diff --git a/systems/x86_64-linux/bodenheizung/hardware-configuration.nix b/systems/x86_64-linux/bodenheizung/hardware-configuration.nix index 1b1460c..2cbadc7 100644 --- a/systems/x86_64-linux/bodenheizung/hardware-configuration.nix +++ b/systems/x86_64-linux/bodenheizung/hardware-configuration.nix @@ -4,7 +4,6 @@ { config, lib, - pkgs, modulesPath, ... }: