diff --git a/flake.nix b/flake.nix
index 4f004d2..fcb6233 100644
--- a/flake.nix
+++ b/flake.nix
@@ -15,49 +15,11 @@
     flake-utils.lib.eachDefaultSystem (
       system:
       let
-        pkgs = import nixpkgs {
-          inherit system;
-        };
+        pkgs = import nixpkgs { inherit system; };
       in
       {
         packages = {
           default = self.packages.${system}.image;
-
-          glibc = pkgs.stdenv.mkDerivation {
-            src = pkgs.fetchurl {
-              url = "mirror://gnu/glibc/glibc-2.40.tar.xz";
-              sha256 = "sha256-GaiQF16SY9dI9ieZPeb0sa+c0h4D8IDkv7Oh+sECBaI=";
-            };
-            name = "glibcStandalone";
-            enableParallelBuilding = true;
-            configureFlags = [
-              "--prefix=/"
-              "--libdir=/lib"
-              "--bindir=/bin"
-              "--sysconfdir=/etc"
-            ];
-            preConfigure =
-              ''
-                export PWD_P=$(type -tP pwd)
-                for i in configure io/ftwtest-sh; do
-                    sed -i "$i" -e "s^/bin/pwd^$PWD_P^g"
-                done
-
-                mkdir ../build
-                cd ../build
-
-                configureScript="`pwd`/../$sourceRoot/configure"
-              '';
-            nativeBuildInputs = [ pkgs.bison pkgs.python3Minimal];
-
-            outputs = [
-              "out"
-            ];
-            preInstall = ''
-              export DESTDIR=${placeholder "out"}
-            '';
-          };
-
           image = pkgs.writeShellScriptBin "image" ''
             echo "make UKI..."
             echo ${self.packages.${system}.kernel.kernel}/bzImage
@@ -69,6 +31,7 @@
           '';
 
           kernel = pkgs.callPackage ./kernel { };
+          glibc = pkgs.callPackage ./glibc { };
           mkinitrd = pkgs.writeShellScriptBin "mkinitrd" ''
             echo "make initrd..."
             mkdir -p out
diff --git a/glibc/default.nix b/glibc/default.nix
new file mode 100644
index 0000000..65bebc3
--- /dev/null
+++ b/glibc/default.nix
@@ -0,0 +1,57 @@
+{
+  fetchurl,
+  pkgs,
+  stdenv,
+
+  ...
+}:
+let
+  version = "2.40";
+  pname = "glibcStandalone";
+in
+stdenv.mkDerivation (finalAttrs: {
+  inherit version;
+
+  pname = pname;
+
+  src = fetchurl {
+    url = "mirror://gnu/glibc/glibc-${version}.tar.xz";
+    sha256 = "sha256-GaiQF16SY9dI9ieZPeb0sa+c0h4D8IDkv7Oh+sECBaI=";
+  };
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+    "--prefix=/"
+    "--libdir=/lib"
+    "--bindir=/bin"
+    "--sysconfdir=/etc"
+  ];
+
+  preConfigure =
+    ''
+      export PWD_P=$(type -tP pwd)
+      for i in configure io/ftwtest-sh; do
+          sed -i "$i" -e "s^/bin/pwd^$PWD_P^g"
+      done
+
+      mkdir ../build
+      cd ../build
+
+      configureScript="`pwd`/../$sourceRoot/configure"
+    '';
+
+  nativeBuildInputs = with pkgs; [
+      bison
+      python3Minimal
+  ];
+
+  outputs = [
+    "out"
+  ];
+
+  preInstall = ''
+    export DESTDIR=${placeholder "out"}
+  '';
+
+})