diff --git a/flake.lock b/flake.lock index b40efb1..6fefc3f 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,47 @@ "devenv", "flake-compat" ], + "git-hooks": [ + "devenv", + "pre-commit-hooks" + ], "nixpkgs": [ "devenv", "nixpkgs" + ] + }, + "locked": { + "lastModified": 1724232775, + "narHash": "sha256-6u2DycIEgrgNYlLxyGqdFVmBNiKIitnQKJ1pbRP5oko=", + "owner": "cachix", + "repo": "cachix", + "rev": "03b6cb3f953097bff378fb8b9ea094bd091a4ec7", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "cachix", + "type": "github" + } + }, + "cachix_2": { + "inputs": { + "devenv": "devenv_3", + "flake-compat": [ + "devenv", + "cachix", + "devenv", + "flake-compat" + ], + "nixpkgs": [ + "devenv", + "cachix", + "devenv", + "nixpkgs" ], "pre-commit-hooks": [ + "devenv", + "cachix", "devenv", "pre-commit-hooks" ] @@ -54,11 +90,11 @@ ] }, "locked": { - "lastModified": 1718474113, - "narHash": "sha256-UKrfy/46YF2TRnxTtKCYzqf2f5ZPRRWwKCCJb7O5X8U=", + "lastModified": 1721842668, + "narHash": "sha256-k3oiD2z2AAwBFLa4+xfU+7G5fisRXfkvrMTCJrjZzXo=", "owner": "ipetkov", "repo": "crane", - "rev": "0095fd8ea00ae0a9e6014f39c375e40c2fbd3386", + "rev": "529c1a0b1f29f0d78fa3086b8f6a134c71ef3aaf", "type": "github" }, "original": { @@ -70,7 +106,9 @@ "deploy": { "inputs": { "flake-compat": "flake-compat", - "nixpkgs": "nixpkgs", + "nixpkgs": [ + "nixpkgs" + ], "utils": "utils" }, "locked": { @@ -91,18 +129,18 @@ "inputs": { "cachix": "cachix", "flake-compat": "flake-compat_3", - "nix": "nix_2", + "nix": "nix_3", "nixpkgs": [ "nixpkgs" ], - "pre-commit-hooks": "pre-commit-hooks" + "pre-commit-hooks": "pre-commit-hooks_2" }, "locked": { - "lastModified": 1718265154, - "narHash": "sha256-eTbBvYwGlKExMSTyHQya6+6kdx1rtva/aVfyAZu2NUU=", + "lastModified": 1726007042, + "narHash": "sha256-7o2OBUwE51ZNMCBB4rg5LARc8S6C9vuzRXnqk3d/lN4=", "owner": "cachix", "repo": "devenv", - "rev": "1983f635c29dc68bb0d29b3a7e227579a1d98788", + "rev": "67c3622d93d9050da9167c5cdaf871e243f805c5", "type": "github" }, "original": { @@ -114,15 +152,53 @@ }, "devenv_2": { "inputs": { + "cachix": "cachix_2", "flake-compat": [ "devenv", "cachix", "flake-compat" ], + "nix": "nix_2", + "nixpkgs": [ + "devenv", + "cachix", + "nixpkgs" + ], + "pre-commit-hooks": [ + "devenv", + "cachix", + "git-hooks" + ] + }, + "locked": { + "lastModified": 1723156315, + "narHash": "sha256-0JrfahRMJ37Rf1i0iOOn+8Z4CLvbcGNwa2ChOAVrp/8=", + "owner": "cachix", + "repo": "devenv", + "rev": "ff5eb4f2accbcda963af67f1a1159e3f6c7f5f91", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "devenv", + "type": "github" + } + }, + "devenv_3": { + "inputs": { + "flake-compat": [ + "devenv", + "cachix", + "devenv", + "cachix", + "flake-compat" + ], "nix": "nix", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs", "poetry2nix": "poetry2nix", "pre-commit-hooks": [ + "devenv", + "cachix", "devenv", "cachix", "pre-commit-hooks" @@ -145,16 +221,16 @@ }, "emacs": { "inputs": { - "flake-utils": "flake-utils_5", - "nixpkgs": "nixpkgs_6", + "flake-utils": "flake-utils_4", + "nixpkgs": "nixpkgs_5", "nixpkgs-stable": "nixpkgs-stable_3" }, "locked": { - "lastModified": 1714614481, - "narHash": "sha256-vykQwGwiu178RHmmRRTzId3qpc9YQtY29Jie7E2GFMg=", + "lastModified": 1726625035, + "narHash": "sha256-QcTgkHVfWbz02PxkGMx1bZaSRt7hK9yW5A2J+NqXHU8=", "owner": "nix-community", "repo": "emacs-overlay", - "rev": "cccda8508481ea8c8ff4e50a297900ed54b26dc3", + "rev": "851b8bf523a5a9974239ceebde31d1f310919ae0", "type": "github" }, "original": { @@ -267,6 +343,28 @@ } }, "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "devenv", + "nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712014858, + "narHash": "sha256-sB4SWl2lX95bExY2gMFG5HIzvva5AVMJd4Igm+GpZNw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "9126214d0a59633752a136528f5f3b9aa8565b7d", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { "inputs": { "nixpkgs-lib": [ "lanzaboote", @@ -274,11 +372,11 @@ ] }, "locked": { - "lastModified": 1717285511, - "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", + "lastModified": 1719994518, + "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", + "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", "type": "github" }, "original": { @@ -306,15 +404,12 @@ } }, "flake-utils_2": { - "inputs": { - "systems": "systems_3" - }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", "type": "github" }, "original": { @@ -325,14 +420,14 @@ }, "flake-utils_3": { "inputs": { - "systems": "systems_4" + "systems": "systems_3" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -343,14 +438,14 @@ }, "flake-utils_4": { "inputs": { - "systems": "systems_5" + "systems": "systems_4" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -360,24 +455,6 @@ } }, "flake-utils_5": { - "inputs": { - "systems": "systems_6" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_6": { "locked": { "lastModified": 1637014545, "narHash": "sha256-26IZAc5yzlD9FlDT54io1oqG/bBoyka+FJk5guaX4x4=", @@ -392,21 +469,6 @@ "type": "github" } }, - "flake-utils_7": { - "locked": { - "lastModified": 1629284811, - "narHash": "sha256-JHgasjPR0/J1J3DRm4KxM4zTyAj4IOJY8vIl75v/kPI=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c5d161cc0af116a2e17f54316f0bf43f0819785c", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, "gitignore": { "inputs": { "nixpkgs": [ @@ -453,14 +515,16 @@ }, "home-manager": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": [ + "nixpkgs" + ] }, "locked": { - "lastModified": 1719677234, - "narHash": "sha256-qO9WZsj/0E6zcK4Ht1y/iJ8XfwbBzq7xdqhBh44OP/M=", + "lastModified": 1726611255, + "narHash": "sha256-/bxaYvIK6/d3zqpW26QFS0rqfd0cO4qreSNWvYLTl/w=", "owner": "nix-community", "repo": "home-manager", - "rev": "36317d4d38887f7629876b0e43c8d9593c5cc48d", + "rev": "d2493de5cd1da06b6a4c3e97f4e7d5dd791df457", "type": "github" }, "original": { @@ -473,18 +537,17 @@ "inputs": { "crane": "crane", "flake-compat": "flake-compat_4", - "flake-parts": "flake-parts", - "flake-utils": "flake-utils_4", - "nixpkgs": "nixpkgs_4", + "flake-parts": "flake-parts_2", + "nixpkgs": "nixpkgs_3", "pre-commit-hooks-nix": "pre-commit-hooks-nix", "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1718782018, - "narHash": "sha256-8SBmf7Sx5xMLzL4VGEU0fe8cuq0yMumdkXgOPXXD3Bo=", + "lastModified": 1725379389, + "narHash": "sha256-qS1H/5/20ewJIXmf8FN2A5KTOKKU9elWvCPwdBi1P/U=", "owner": "nix-community", "repo": "lanzaboote", - "rev": "6fa7bc0522f71d3906a3788bbd80c344cd9c4523", + "rev": "e7bd94e0b5ff3c1e686f2101004ebf4fcea9d871", "type": "github" }, "original": { @@ -493,10 +556,28 @@ "type": "github" } }, + "libgit2": { + "flake": false, + "locked": { + "lastModified": 1697646580, + "narHash": "sha256-oX4Z3S9WtJlwvj0uH9HlYcWv+x1hqp8mhXl7HsLu2f0=", + "owner": "libgit2", + "repo": "libgit2", + "rev": "45fd9ed7ae1a9b74b957ef4f337bc3c8b3df01b5", + "type": "github" + }, + "original": { + "owner": "libgit2", + "repo": "libgit2", + "type": "github" + } + }, "nix": { "inputs": { "flake-compat": "flake-compat_2", "nixpkgs": [ + "devenv", + "cachix", "devenv", "cachix", "devenv", @@ -522,6 +603,8 @@ "nix-github-actions": { "inputs": { "nixpkgs": [ + "devenv", + "cachix", "devenv", "cachix", "devenv", @@ -546,10 +629,14 @@ "nix_2": { "inputs": { "flake-compat": [ + "devenv", + "cachix", "devenv", "flake-compat" ], "nixpkgs": [ + "devenv", + "cachix", "devenv", "nixpkgs" ], @@ -570,13 +657,41 @@ "type": "github" } }, + "nix_3": { + "inputs": { + "flake-compat": [ + "devenv", + "flake-compat" + ], + "flake-parts": "flake-parts", + "libgit2": "libgit2", + "nixpkgs": "nixpkgs_2", + "nixpkgs-23-11": "nixpkgs-23-11", + "nixpkgs-regression": "nixpkgs-regression_3", + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1725980365, + "narHash": "sha256-uDwWyizzlQ0HFzrhP6rVp2+2NNA+/TM5zT32dR8GUlg=", + "owner": "domenkozar", + "repo": "nix", + "rev": "1e61e9f40673f84c3b02573145492d8af581bec5", + "type": "github" + }, + "original": { + "owner": "domenkozar", + "ref": "devenv-2.24", + "repo": "nix", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1702272962, - "narHash": "sha256-D+zHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q=", + "lastModified": 1692808169, + "narHash": "sha256-x9Opq06rIiwdwGeK2Ykj69dNc2IvUH1fY55Wm7atwrE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d", + "rev": "9201b5ff357e781bf014d0330d18555695df7ba8", "type": "github" }, "original": { @@ -586,6 +701,22 @@ "type": "github" } }, + "nixpkgs-23-11": { + "locked": { + "lastModified": 1717159533, + "narHash": "sha256-oamiKNfr2MS6yH64rUn99mIZjc45nGJlj9eGth/3Xuw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a62e6edd6d5e1fa0329b8653c801147986f8d446", + "type": "github" + } + }, "nixpkgs-24_05": { "locked": { "lastModified": 1717144377, @@ -611,11 +742,11 @@ "parts": "parts" }, "locked": { - "lastModified": 1714616867, - "narHash": "sha256-GHvEVdWFSP5Ci7J3ZmcrBs/vag+NJ0ub8j9V0tZjAVM=", + "lastModified": 1726627561, + "narHash": "sha256-wdS6BNnmakc66AacxGhcYFfaA49V4zX6nauQOpTpDf4=", "owner": "fortuneteller2k", "repo": "nixpkgs-f2k", - "rev": "07f53aa9b3f4ce64fd39903ba09a3d8e26e4ecee", + "rev": "ffa13dcde37704a1ef25b105ed272ad6125805d8", "type": "github" }, "original": { @@ -627,18 +758,18 @@ "nixpkgs-fmt": { "inputs": { "fenix": "fenix", - "flake-utils": "flake-utils_6", + "flake-utils": "flake-utils_5", "nixpkgs": [ "nixpkgs-f2k", "nixpkgs" ] }, "locked": { - "lastModified": 1710146057, - "narHash": "sha256-GLZNcoQT3AWGg1ZINKOgHcD1/LgDStI6hZbfsisjOgM=", + "lastModified": 1721822211, + "narHash": "sha256-zacOgNv3qM3AbSG3p5PT/Bfc4c7NoIqoLII8/jIUsOQ=", "owner": "nix-community", "repo": "nixpkgs-fmt", - "rev": "f048515c9a98d7e2e4b034ec77641acc8a58098d", + "rev": "bdb15b4c7e0cb49ae091dd43113d0a938afae02c", "type": "github" }, "original": { @@ -649,20 +780,14 @@ }, "nixpkgs-lib": { "locked": { - "dir": "lib", - "lastModified": 1714253743, - "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", - "type": "github" + "lastModified": 1725233747, + "narHash": "sha256-Ss8QWLXdr2JCBPcYChJhz4xJm+h/xjl4G0c0XlP6a74=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz" }, "original": { - "dir": "lib", - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/356624c12086a18f2ea2825fed34523d60ccc4e3.tar.gz" } }, "nixpkgs-regression": { @@ -697,61 +822,77 @@ "type": "github" } }, - "nixpkgs-stable": { + "nixpkgs-regression_3": { "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "lastModified": 1643052045, + "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.11", + "repo": "nixpkgs", + "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1720386169, + "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-stable_2": { "locked": { - "lastModified": 1710695816, - "narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=", + "lastModified": 1720386169, + "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "614b4613980a522ba49f0d194531beddbb7220d3", + "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.11", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-stable_3": { "locked": { - "lastModified": 1714531828, - "narHash": "sha256-ILsf3bdY/hNNI/Hu5bSt2/KbmHaAVhBbNUOdGztTHEg=", + "lastModified": 1726447378, + "narHash": "sha256-2yV8nmYE1p9lfmLHhOCbYwQC/W8WYfGQABoGzJOb1JQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0638fe2715d998fa81d173aad264eb671ce2ebc1", + "rev": "086b448a5d54fd117f4dc2dee55c9f0ff461bdc1", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-23.11", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgs-stable_4": { "locked": { - "lastModified": 1719663039, - "narHash": "sha256-tXlrgAQygNIy49LDVFuPXlWD2zTQV9/F8pfoqwwPJyo=", + "lastModified": 1720535198, + "narHash": "sha256-zwVvxrdIzralnSbcpghA92tWu2DV2lwv89xZc8MTrbg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4a1e673523344f6ccc84b37f4413ad74ea19a119", + "rev": "205fd4226592cc83fd4c0885a3e4c9c400efabb5", "type": "github" }, "original": { @@ -763,59 +904,43 @@ }, "nixpkgs-stable_5": { "locked": { - "lastModified": 1719663039, - "narHash": "sha256-tXlrgAQygNIy49LDVFuPXlWD2zTQV9/F8pfoqwwPJyo=", + "lastModified": 1725762081, + "narHash": "sha256-vNv+aJUW5/YurRy1ocfvs4q/48yVESwlC/yHzjkZSP8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4a1e673523344f6ccc84b37f4413ad74ea19a119", + "rev": "dc454045f5b5d814e5862a6d057e7bb5c29edc05", "type": "github" }, "original": { "owner": "NixOS", - "ref": "release-23.11", + "ref": "release-24.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_2": { "locked": { - "lastModified": 1692808169, - "narHash": "sha256-x9Opq06rIiwdwGeK2Ykj69dNc2IvUH1fY55Wm7atwrE=", + "lastModified": 1717432640, + "narHash": "sha256-+f9c4/ZX5MWDOuB1rKoWj+lBNm0z0rs4CK47HBLxy1o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9201b5ff357e781bf014d0330d18555695df7ba8", + "rev": "88269ab3044128b7c2f4c7d68448b2fb50456870", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "release-24.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_3": { "locked": { - "lastModified": 1719254875, - "narHash": "sha256-ECni+IkwXjusHsm9Sexdtq8weAq/yUyt1TWIemXt3Ko=", + "lastModified": 1722264024, + "narHash": "sha256-gomyYQrlOltr2/prDRikRDQoPz+J5Qq6SEJrqVC5x2c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2893f56de08021cffd9b6b6dfc70fd9ccd51eb60", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_4": { - "locked": { - "lastModified": 1718541509, - "narHash": "sha256-TmC5TxW5WPAfmovDzi1hLe1i4qqND79s9SH9UOKcSvo=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "ba06293cdba1c94af9710024abf3b94cf8d76349", + "rev": "fc5e08c73022f96cfeaefa2e087e8b713d47d201", "type": "github" }, "original": { @@ -825,13 +950,29 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_4": { "locked": { - "lastModified": 1719506693, - "narHash": "sha256-C8e9S7RzshSdHB7L+v9I51af1gDM5unhJ2xO1ywxNH8=", + "lastModified": 1726463316, + "narHash": "sha256-gI9kkaH0ZjakJOKrdjaI/VbaMEo9qBbSUl93DnU7f4c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b2852eb9365c6de48ffb0dc2c9562591f652242a", + "rev": "99dc8785f6a0adac95f5e2ab05cc2e1bf666d172", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { + "locked": { + "lastModified": 1726463316, + "narHash": "sha256-gI9kkaH0ZjakJOKrdjaI/VbaMEo9qBbSUl93DnU7f4c=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "99dc8785f6a0adac95f5e2ab05cc2e1bf666d172", "type": "github" }, "original": { @@ -843,27 +984,11 @@ }, "nixpkgs_6": { "locked": { - "lastModified": 1714253743, - "narHash": "sha256-mdTQw2XlariysyScCv2tTE45QSU9v/ezLcHJ22f0Nxc=", + "lastModified": 1725534445, + "narHash": "sha256-Yd0FK9SkWy+ZPuNqUgmVPXokxDgMJoGuNpMEtkfcf84=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "58a1abdbae3217ca6b702f03d3b35125d88a2994", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_7": { - "locked": { - "lastModified": 1719468428, - "narHash": "sha256-vN5xJAZ4UGREEglh3lfbbkIj+MPEYMuqewMn4atZFaQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "1e3deb3d8a86a870d925760db1a5adecc64d329d", + "rev": "9bb1e7571aadf31ddb4af77fc64b2d59580f9a39", "type": "github" }, "original": { @@ -875,11 +1000,11 @@ }, "nurpkgs": { "locked": { - "lastModified": 1719762299, - "narHash": "sha256-hD+5hNGqPBipDTuZZImSCU36RqacSJadHjQtK/gbaxU=", + "lastModified": 1726631290, + "narHash": "sha256-sJtl3bjp9btnmRf9z6jvNC9LjJTwHjUSaNG0vtC9z84=", "owner": "nix-community", "repo": "NUR", - "rev": "80b917d886c6554264f71e1fc68e6b17cd5fdfa1", + "rev": "6723ed85a4c63924ea26b02fecfdf4922615cf4e", "type": "github" }, "original": { @@ -893,11 +1018,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1714606777, - "narHash": "sha256-bMkNmAXLj8iyTvxaaD/StcLSadbj1chPcJOjtuVnLmA=", + "lastModified": 1726153070, + "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "4d34ce6412bc450b1d4208c953dc97c7fc764f1a", + "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", "type": "github" }, "original": { @@ -911,6 +1036,8 @@ "flake-utils": "flake-utils", "nix-github-actions": "nix-github-actions", "nixpkgs": [ + "devenv", + "cachix", "devenv", "cachix", "devenv", @@ -935,22 +1062,30 @@ "inputs": { "flake-compat": [ "devenv", - "flake-compat" + "nix" ], "flake-utils": "flake-utils_2", - "gitignore": "gitignore", + "gitignore": [ + "devenv", + "nix" + ], "nixpkgs": [ "devenv", + "nix", "nixpkgs" ], - "nixpkgs-stable": "nixpkgs-stable" + "nixpkgs-stable": [ + "devenv", + "nix", + "nixpkgs" + ] }, "locked": { - "lastModified": 1713775815, - "narHash": "sha256-Wu9cdYTnGQQwtT20QQMg7jzkANKQjwBD9iccfGKkfls=", + "lastModified": 1712897695, + "narHash": "sha256-nMirxrGteNAl9sWiOhoN5tIHyjBbVi5e2tgZUgZlK3Y=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "2ac4dcbf55ed43f3be0bae15e181f08a57af24a4", + "rev": "40e6053ecb65fcbf12863338a6dcefb3f55f1bf8", "type": "github" }, "original": { @@ -973,11 +1108,38 @@ "nixpkgs-stable": "nixpkgs-stable_2" }, "locked": { - "lastModified": 1717664902, - "narHash": "sha256-7XfBuLULizXjXfBYy/VV+SpYMHreNRHk9nKMsm1bgb4=", + "lastModified": 1721042469, + "narHash": "sha256-6FPUl7HVtvRHCCBQne7Ylp4p+dpP3P/OYuzjztZ4s70=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "cc4d466cb1254af050ff7bdf47f6d404a7c646d1", + "rev": "f451c19376071a90d8c58ab1a953c6e9840527fd", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "pre-commit-hooks_2": { + "inputs": { + "flake-compat": [ + "devenv", + "flake-compat" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "devenv", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1725513492, + "narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "7570de7b9b504cfe92025dd1be797bf546f66528", "type": "github" }, "original": { @@ -993,7 +1155,7 @@ "flake-utils": "flake-utils_3", "home-manager": "home-manager", "lanzaboote": "lanzaboote", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_4", "nixpkgs-f2k": "nixpkgs-f2k", "nixpkgs-stable": "nixpkgs-stable_4", "nurpkgs": "nurpkgs", @@ -1021,21 +1183,17 @@ }, "rust-overlay": { "inputs": { - "flake-utils": [ - "lanzaboote", - "flake-utils" - ], "nixpkgs": [ "lanzaboote", "nixpkgs" ] }, "locked": { - "lastModified": 1718504420, - "narHash": "sha256-F2HT/abCfr0CDpkvXwYCscJyD66XDTLMVfdrIMRp2ck=", + "lastModified": 1722219664, + "narHash": "sha256-xMOJ+HW4yj6e69PvieohUJ3dBSdgCfvI0nnCEe6/yVc=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "0043c3f92304823cc2c0a4354b0feaa61dfb4cd9", + "rev": "a6fbda5d9a14fb5f7c69b8489d24afeb349c7bb4", "type": "github" }, "original": { @@ -1046,18 +1204,20 @@ }, "rycee-nurpkgs": { "inputs": { - "flake-utils": "flake-utils_7", + "flake-utils": [ + "flake-utils" + ], "nixpkgs": [ "nixpkgs" ] }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1719644951, - "narHash": "sha256-MTF+/uUIdFNeyzEFirWyza43AFfr3Syld7aPw2CSCkI=", + "lastModified": 1726612720, + "narHash": "sha256-8s/xnphhlOm0DQIz4FjQd+6hz8ucBaH2PtVVdDQXaXc=", "owner": "rycee", "repo": "nur-expressions", - "rev": "590551ba0bb0f960c7fcd37d6ff3a429f7cc9dd1", + "rev": "9cc6db864a0098071d74416f90fcd68357c00305", "type": "gitlab" }, "original": { @@ -1077,11 +1237,11 @@ "nixpkgs-24_05": "nixpkgs-24_05" }, "locked": { - "lastModified": 1718697807, - "narHash": "sha256-Enla61WFisytTYbWygPynEbu8vozjeGc6Obkj2GRj7o=", + "lastModified": 1722877200, + "narHash": "sha256-qgKDNJXs+od+1UbRy62uk7dYal3h98I4WojfIqMoGcg=", "owner": "simple-nixos-mailserver", "repo": "nixos-mailserver", - "rev": "290a995de5c3d3f08468fa548f0d55ab2efc7b6b", + "rev": "af7d3bf5daeba3fc28089b015c0dd43f06b176f2", "type": "gitlab" }, "original": { @@ -1093,15 +1253,15 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_7", + "nixpkgs": "nixpkgs_6", "nixpkgs-stable": "nixpkgs-stable_5" }, "locked": { - "lastModified": 1719716556, - "narHash": "sha256-KA9gy2Wkv76s4A8eLnOcdKVTygewbw3xsB8+awNMyqs=", + "lastModified": 1726524647, + "narHash": "sha256-qis6BtOOBBEAfUl7FMHqqTwRLB61OL5OFzIsOmRz2J4=", "owner": "Mic92", "repo": "sops-nix", - "rev": "b5974d4331fb6c893e808977a2e1a6d34b3162d6", + "rev": "e2d404a7ea599a013189aa42947f66cede0645c8", "type": "github" }, "original": { @@ -1170,36 +1330,6 @@ "type": "github" } }, - "systems_5": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, - "systems_6": { - "locked": { - "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" diff --git a/flake.nix b/flake.nix index b99a80a..a27aaa3 100644 --- a/flake.nix +++ b/flake.nix @@ -4,12 +4,19 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-23.11"; + flake-utils.url = "github:numtide/flake-utils"; - deploy.url = "github:serokell/deploy-rs"; + deploy = { + url = "github:serokell/deploy-rs"; + inputs.nixpkgs.follows = "nixpkgs"; + }; nurpkgs.url = "github:nix-community/NUR"; sops-nix.url = "github:Mic92/sops-nix"; lanzaboote.url = "github:nix-community/lanzaboote"; - home-manager.url = "github:nix-community/home-manager"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; simple-nixos-mailserver = { url = "gitlab:simple-nixos-mailserver/nixos-mailserver/master"; @@ -18,7 +25,10 @@ rycee-nurpkgs = { url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; - inputs.nixpkgs.follows = "nixpkgs"; + inputs = { + nixpkgs.follows = "nixpkgs"; + flake-utils.follows = "flake-utils"; + }; }; nixpkgs-f2k = { diff --git a/home/work/default.nix b/home/work/default.nix index 59b13a0..afe1e55 100644 --- a/home/work/default.nix +++ b/home/work/default.nix @@ -8,7 +8,8 @@ stateVersion = "22.11"; username = "patrick"; homeDirectory = "/home/${config.home.username}"; - packages = (pkgs.callPackage ./pkgs.nix {}) ++ [devenv.packages.${pkgs.system}.devenv]; + packages = (pkgs.callPackage ./pkgs.nix {}); + # packages = (pkgs.callPackage ./pkgs.nix {}) ++ [devenv.packages.${pkgs.system}.devenv]; sessionPath = ["~/.local/bin"]; sessionVariables = { SSH_AUTH_SOCK = "/run/user/1000/ssh-agent"; @@ -21,4 +22,7 @@ ./programs ./services ]; + nixpkgs.config.permittedInsecurePackages = [ + "electron-27.3.11" + ]; } diff --git a/home/work/pkgs.nix b/home/work/pkgs.nix index f5275d1..efa9ff6 100644 --- a/home/work/pkgs.nix +++ b/home/work/pkgs.nix @@ -5,11 +5,11 @@ with pkgs; [ atuin dig # dns command-line tool fd # "find" for files - geckodriver # remote controll firefox + # geckodriver # remote controll firefox helix # modal editor htop # process monitor hyperfine # command-line benchmarking tool - i3lock # screen locker + # i3lock # screen locker imagemagick # selection screenshot stuff just # just a command runner keepassxc # password manager @@ -24,19 +24,20 @@ with pkgs; [ ncdu # disk space info (a better du) neovim-unwrapped # best code editor on the planet networkmanagerapplet # systray applet for NetworkManager - nitrogen # wallpapger manager - nushellFull # A modern shell written in Rust + # nitrogen # wallpapger manager + nushell # A modern shell written in Rust ouch # painless compression and decompression for your terminal pavucontrol # pulseaudio volume control playerctl # music player controller podman-compose # podman manager restic # incremental backup tool ripgrep # fast grep - rocketchat-desktop # company chat + # rocketchat-desktop # company chat sops # Mozilla sops (Secrets OPerationS) is an editor of encrypted files thunderbird # email client - xclip # clipboard support - xsel # clipboard support (also for neovim) + # xclip # clipboard support + # xsel # clipboard support (also for neovim) zeal # offline documentation browser zellij # A terminal workspace with batteries included + wl-clipboard ] diff --git a/home/work/programs/firefox/default.nix b/home/work/programs/firefox/default.nix index fa92488..cdbdb72 100644 --- a/home/work/programs/firefox/default.nix +++ b/home/work/programs/firefox/default.nix @@ -11,50 +11,12 @@ i-dont-care-about-cookies privacy-badger ublock-origin - tree-style-tab - tridactyl + # tree-style-tab + # tridactyl + keepassxc-browser ]; - customChrome = '' - @-moz-document url(chrome://browser/content/browser.xhtml) { - /* tabs on bottom of window */ - /* requires that you set - * toolkit.legacyUserProfileCustomizations.stylesheets = true - * in about:config - */ - #main-window body { flex-direction: column-reverse !important; } - #navigator-toolbox { flex-direction: column-reverse !important; } - #urlbar { - top: unset !important; - bottom: calc((var(--urlbar-toolbar-height) - var(--urlbar-height)) / 2) !important; - box-shadow: none !important; - display: flex !important; - flex-direction: column !important; - } - #urlbar-input-container { - order: 2; - } - #urlbar > .urlbarView { - order: 1; - border-bottom: 1px solid #666; - } - #urlbar-results { - display: flex; - flex-direction: column-reverse; - } - .search-one-offs { display: none !important; } - .tab-background { border-top: none !important; } - #navigator-toolbox::after { border: none; } - #TabsToolbar .tabbrowser-arrowscrollbox, - #tabbrowser-tabs, .tab-stack { min-height: 28px !important; } - .tabbrowser-tab { font-size: 80%; } - .tab-content { padding: 0 5px; } - .tab-close-button .toolbarbutton-icon { width: 12px !important; height: 12px !important; } - toolbox[inFullscreen=true] { display: none; } - } - ''; - - userChrome = customChrome; + userChrome = builtins.readFile ./userChrome.css; # ~/.mozilla/firefox/PROFILE_NAME/prefs.js | user.js settings = { @@ -84,6 +46,10 @@ "browser.urlbar.shortcuts.quickactions" = false; "browser.urlbar.suggest.quickactions" = false; + # disable tab preview on hover + "browser.tabs.hoverPreview.enabled" = false; + "browser.tabs.hoverPreview.showThumbnails" = false; + "distribution.searchplugins.defaultLocale" = "en-US"; "doh-rollout.balrog-migration-done" = true; @@ -127,14 +93,14 @@ in { }; }; - webapps = { - rocket-chat = { - url = "https://chat.hetzner.company"; - id = 1; + # webapps = { + # rocket-chat = { + # url = "https://chat.hetzner.company"; + # id = 1; - genericName = "Internet Messenger"; - categories = ["Network" "InstantMessaging"]; - }; - }; + # genericName = "Internet Messenger"; + # categories = ["Network" "InstantMessaging"]; + # }; + # }; }; } diff --git a/home/work/programs/firefox/userChrome.css b/home/work/programs/firefox/userChrome.css new file mode 100644 index 0000000..00da3b9 --- /dev/null +++ b/home/work/programs/firefox/userChrome.css @@ -0,0 +1,88 @@ +/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/toolbars_below_content.css made available under Mozilla Public License v. 2.0 +See the above repository for updates as well as full license text. */ + +/* Moves tabs toolbar, bookmarks toolbar and main toolbar to the bottom of the window, and makes tabs be the bottom-most toolbar */ + +/* By default, menubar will stay on top with two options to select it's behavior - see below */ + +@-moz-document url(chrome://browser/content/browser.xhtml){ + + #titlebar{ -moz-appearance: none !important; } + + #navigator-toolbox > div{ display: contents } + .global-notificationbox, + #mainPopupSet, + #browser, + #customization-container, + #tab-notification-deck{ + order: -1; + } + + /* Remove the next row if you want tabs to be the top-most row */ + #titlebar{ + order: 2; + } + + #toolbar-menubar{ + position: fixed; + display: flex; + width: 100vw; + top: 0px; + -moz-window-dragging: drag; + } + /* Remove bottom border that won't do anything useful when at bottom of the window */ + #navigator-toolbox{ border-bottom: none !important; } + + #toolbar-menubar > spacer{ flex-grow: 1 } + + #urlbar[breakout][breakout-extend]{ + display: flex !important; + flex-direction: column-reverse; + bottom: 0px !important; /* Change to 3-5 px if using compact_urlbar_megabar.css depending on toolbar density */ + top: auto !important; + } + + .urlbarView-body-inner{ border-top-style: none !important; } + + /* Yeah, removes window controls. Likely not wanted on bottom row */ + #TabsToolbar > .titlebar-buttonbox-container{ display: none } + #toolbar-menubar > .titlebar-buttonbox-container{ order: 1000 } + + /* Fix panels sizing */ + .panel-viewstack{ max-height: unset !important; } + + /* Fullscreen mode support */ + :root[sizemode="fullscreen"] #navigator-toolbox{ margin-top: 0 !important } + :root[sizemode="fullscreen"] #navigator-toolbox[style*="margin-top"]{ visibility: collapse } + #fullscr-toggler{ bottom: 0; top: unset !important; } + + /* These three rules exist for compatibility with autohide_toolbox.css */ + #navigator-toolbox{ bottom: 0px; transform-origin: bottom } + #main-window > body > box{ margin-top: 0 !important; } + #toolbar-menubar{ z-index: 1; background-color: var(--lwt-accent-color,black); } + + :root[BookmarksToolbarOverlapsBrowser] #navigator-toolbox{ + margin-block: calc(-1 * var(--bookmarks-toolbar-height)) 0 !important; + } + :root[BookmarksToolbarOverlapsBrowser] .newTabBrowserPanel{ + padding-block: 0 var(--bookmarks-toolbar-height) !important; + } + + /************** + Menubar options - By default, menubar is overlayed on top of web-content + ***************/ + + /* Uncomment the following if you want static menubar on top of the window (make menubar enabled) + * Use when menubar is enabled to always show it */ + + /* + #browser,#customization-container{ padding-top: var(--uc-menubar-spacer,28px) } + */ + + /* OR, uncomment the following if you want menubar to appear below content, above tabs toolbar */ + + #toolbar-menubar{ position: static; display: flex; margin-top: 0px !important; background-color: transparent } + + /* set to "column-reverse" (without quotes) if you want tabs above menubar with the above option */ + #titlebar{ flex-direction: column } +} diff --git a/home/work/programs/hyprland/default.nix b/home/work/programs/hyprland/default.nix index 6375dd6..cd40396 100644 --- a/home/work/programs/hyprland/default.nix +++ b/home/work/programs/hyprland/default.nix @@ -28,7 +28,9 @@ monitor = [ "eDP-1,1920x1080,0x0,1.333333" # Laptop screen - "desc:LG Electronics LG ULTRAWIDE 0x000219F2,2560x1080,1440x0,1" # Primary @home + "desc:Dell Inc. DELL P2723DE 79RFH14,2560x1440,1440x0,1" + "desc:Dell Inc. DELL P2723DE 39RFH14,2560x1440,4000x0,1" + # "desc:LG Electronics LG ULTRAWIDE 0x000219F2,2560x1080,1440x0,1" # Primary @home # "desc:Fujitsu Siemens Computers GmbH B22W-6 LED YV3U164923,1680x1050,4000x0,1" # Secondary @home ",preferred,auto,1" # Automatically configure everything else ]; @@ -139,6 +141,7 @@ misc = { mouse_move_enables_dpms = true; key_press_enables_dpms = true; + vfr = true; }; }; }; diff --git a/nixos/configurations.nix b/nixos/configurations.nix index 9ca9f3e..9f82ab6 100644 --- a/nixos/configurations.nix +++ b/nixos/configurations.nix @@ -61,7 +61,9 @@ inherit ip sshUser sshPort allowLocalDeployment remoteBuild; }; } - {nixpkgs.system = "${system}";} + { + nixpkgs.system = "${system}"; + } ] ++ additionalModules ++ [file]; diff --git a/nixos/laptop/configuration.nix b/nixos/laptop/configuration.nix index 17c9ca2..3e044dd 100644 --- a/nixos/laptop/configuration.nix +++ b/nixos/laptop/configuration.nix @@ -17,7 +17,7 @@ preLVM = true; }; }; - boot.kernelPackages = pkgs.linuxPackages_6_8; + boot.kernelPackages = pkgs.linuxPackages_6_10; i18n.defaultLocale = "en_US.UTF-8"; time.timeZone = "Europe/Berlin"; @@ -113,14 +113,7 @@ xserver = { enable = true; - # windowManager.awesome = { - # enable = true; - # package = pkgs.callPackage ../../overrides/awesome.nix {}; - # }; - displayManager = { - # sddm.enable = true; - # defaultSession = "none+awesome"; gdm = { enable = true; wayland = true; @@ -134,46 +127,6 @@ }; }; - # services.jupyter = { - # enable = true; - # package = pkgs.jupyter-all; - # command = "jupyter-lab"; - # group = "users"; - # password = "'$argon2i$v=19$m=4096,t=3,p=1$a2pzamhrdjgzaGtzZGZoZGY4NzcydWhkZnM$fuPanvCWOsPNpBjyLaBz3YRRzmSSdpp8kaYJAyEPtWA'"; - # kernels = let - # juliaEnv = pkgs.julia_19-bin.withPackages ["IJulia" "Plots"]; - # ijulia = builtins.readFile ( - # pkgs.runCommand "${juliaEnv.name}-ijulia-pkgdir" - # { - # buildInputs = [juliaEnv]; - # } '' - # ${juliaEnv}/bin/julia -e 'using IJulia; print(pkgdir(IJulia))' >$out - # '' - # ); - # in { - # ijulia = { - # displayName = "Julia ${juliaEnv.julia.version}"; - # argv = [ - # "${juliaEnv}/bin/julia" - # "-i" - # "--color=yes" - # "${ijulia}/src/kernel.jl" - # "{connection_file}" - # ]; - # language = "julia"; - # interruptMode = "signal"; - # logo32 = "${ijulia}/deps/logo-32x32.png"; - # logo64 = "${ijulia}/deps/logo-64x64.png"; - # }; - # }; - # }; - - # # systemd.services.jupyter.environment.JUPYTER_DATA_DIR = builtins.toString (pkgs.jupyter-kernel.create { - # # definitions = config.services.jupyter.kernels; - # # }); - # systemd.services.jupyter.environment.JUPYTER_DATA_DIR = ".jupyter/data"; - # systemd.services.jupyter.environment.JUPYTER_RUNTIME_DIR = "/var/lib/jupyter/.local/share/jupyter/runtime"; - security.sudo.configFile = '' Defaults lecture=always Defaults lecture_file=${../../misc/sudo_lecture} diff --git a/pkgs/comic-mono/default.nix b/pkgs/comic-mono/default.nix index 8a6137e..5a96282 100644 --- a/pkgs/comic-mono/default.nix +++ b/pkgs/comic-mono/default.nix @@ -22,8 +22,8 @@ pkgs.stdenv.mkDerivation rec { }; nativeBuildInputs = with pkgs; [ - python39 - python39Packages.fontforge + python311 + python311Packages.fontforge pkgs.unzip ];