···1602 If necessary, `pname` has to be given a different value within `fetchPypi`.
1603* Attribute names in `python-packages.nix` should be sorted alphanumerically to
1604 avoid merge conflicts and ease locating attributes.
000000000000000000000000000000
···1602 If necessary, `pname` has to be given a different value within `fetchPypi`.
1603* Attribute names in `python-packages.nix` should be sorted alphanumerically to
1604 avoid merge conflicts and ease locating attributes.
1605+1606+## Package set maintenance
1607+1608+The whole Python package set has a lot of packages that do not see regular
1609+updates, because they either are a very fragile component in the Python
1610+ecosystem, like for example the `hypothesis` package, or packages that have
1611+no maintainer, so maintenance falls back to the package set maintainers.
1612+1613+### Updating packages in bulk
1614+1615+There is a tool to update alot of python libraries in bulk, it exists at
1616+`maintainers/scripts/update-python-libraries` with this repository.
1617+1618+It can quickly update minor or major versions for all packages selected
1619+and create update commits, and supports the `fetchPypi`, `fetchurl` and
1620+`fetchFromGitHub` fetchers. When updating lots of packages that are
1621+hosted on GitHub, exporting a `GITHUB_API_TOKEN` is highly recommended.
1622+1623+Updating packages in bulk leads to lots of breakages, which is why a
1624+stabilization period on the `python-unstable` branch is required.
1625+1626+Once the branch is sufficiently stable it should normally be merged
1627+into the `staging` branch.
1628+1629+An exemplary call to update all python libraries between minor versions
1630+would be:
1631+1632+```ShellSession
1633+$ maintainers/scripts/update-python-libraries --target minor --commit --use-pkgs-prefix pkgs/development/python-modules/**/default.nix
1634+```
+50-20
nixos/modules/config/fonts/fonts.nix
···23with lib;
400000000000000000000000000000000000000000000005{
6 imports = [
7 (mkRemovedOptionModule [ "fonts" "enableCoreFonts" ] "Use fonts.fonts = [ pkgs.corefonts ]; instead.")
···3233 };
3435- config = {
36-37- fonts.fonts = mkIf config.fonts.enableDefaultFonts
38- ([
39- pkgs.dejavu_fonts
40- pkgs.freefont_ttf
41- pkgs.gyre-fonts # TrueType substitutes for standard PostScript fonts
42- pkgs.liberation_ttf
43- pkgs.xorg.fontmiscmisc
44- pkgs.xorg.fontcursormisc
45- pkgs.unifont
46- pkgs.noto-fonts-emoji
47- ] ++ lib.optionals (config.nixpkgs.config.allowUnfree or false) [
48- # these are unfree, and will make usage with xserver fail
49- pkgs.xorg.fontbhlucidatypewriter100dpi
50- pkgs.xorg.fontbhlucidatypewriter75dpi
51- pkgs.xorg.fontbh100dpi
52- ]);
53-54- };
5556}
···23with lib;
45+let
6+ # A scalable variant of the X11 "core" cursor
7+ #
8+ # If not running a fancy desktop environment, the cursor is likely set to
9+ # the default `cursor.pcf` bitmap font. This is 17px wide, so it's very
10+ # small and almost invisible on 4K displays.
11+ fontcursormisc_hidpi = pkgs.xorg.fontcursormisc.overrideAttrs (old:
12+ let
13+ # The scaling constant is 230/96: the scalable `left_ptr` glyph at
14+ # about 23 points is rendered as 17px, on a 96dpi display.
15+ # Note: the XLFD font size is in decipoints.
16+ size = 2.39583 * config.services.xserver.dpi;
17+ sizeString = builtins.head (builtins.split "\\." (toString size));
18+ in
19+ {
20+ postInstall = ''
21+ alias='cursor -xfree86-cursor-medium-r-normal--0-${sizeString}-0-0-p-0-adobe-fontspecific'
22+ echo "$alias" > $out/lib/X11/fonts/Type1/fonts.alias
23+ '';
24+ });
25+26+ hasHidpi =
27+ config.hardware.video.hidpi.enable &&
28+ config.services.xserver.dpi != null;
29+30+ defaultFonts =
31+ [ pkgs.dejavu_fonts
32+ pkgs.freefont_ttf
33+ pkgs.gyre-fonts # TrueType substitutes for standard PostScript fonts
34+ pkgs.liberation_ttf
35+ pkgs.unifont
36+ pkgs.noto-fonts-emoji
37+ ];
38+39+ defaultXFonts =
40+ [ (if hasHidpi then fontcursormisc_hidpi else pkgs.xorg.fontcursormisc)
41+ pkgs.xorg.fontmiscmisc
42+ ] ++ optionals (config.nixpkgs.config.allowUnfree or false)
43+ [ # these are unfree, and will make usage with xserver fail
44+ pkgs.xorg.fontbhlucidatypewriter100dpi
45+ pkgs.xorg.fontbhlucidatypewriter75dpi
46+ pkgs.xorg.fontbh100dpi
47+ ];
48+49+in
50+51{
52 imports = [
53 (mkRemovedOptionModule [ "fonts" "enableCoreFonts" ] "Use fonts.fonts = [ pkgs.corefonts ]; instead.")
···7879 };
8081+ config = mkMerge [
82+ { fonts.fonts = mkIf config.fonts.enableDefaultFonts defaultFonts; }
83+ { fonts.fonts = mkIf config.services.xserver.enable defaultXFonts; }
84+ ];
00000000000000008586}
···7, bridge-utils
8, conntrack-tools
9, buildGoPackage
10-, git
11, runc
12, kmod
13, libseccomp
···44# Those pieces of software we entirely ignore upstream's handling of, and just
45# make sure they're in the path if desired.
46let
47- k3sVersion = "1.21.3+k3s1"; # k3s git tag
48- k3sCommit = "1d1f220fbee9cdeb5416b76b707dde8c231121f2"; # k3s git commit at the above version
4950 traefikChartVersion = "9.18.2"; # taken from ./scripts/download at TRAEFIK_VERSION
51 k3sRootVersion = "0.9.1"; # taken from ./scripts/download at ROOT_VERSION
···102 k3sRepo = fetchgit {
103 url = "https://github.com/k3s-io/k3s";
104 rev = "v${k3sVersion}";
105- sha256 = "sha256-K4HVXFp5cpByEO4dUwmpzOuhsGh1k7X6k5aShCorTjg=";
106 };
107 # Stage 1 of the k3s build:
108 # Let's talk about how k3s is structured.
···7, bridge-utils
8, conntrack-tools
9, buildGoPackage
010, runc
11, kmod
12, libseccomp
···43# Those pieces of software we entirely ignore upstream's handling of, and just
44# make sure they're in the path if desired.
45let
46+ k3sVersion = "1.21.4+k3s1"; # k3s git tag
47+ k3sCommit = "3e250fdbab72d88f7e6aae57446023a0567ffc97"; # k3s git commit at the above version
4849 traefikChartVersion = "9.18.2"; # taken from ./scripts/download at TRAEFIK_VERSION
50 k3sRootVersion = "0.9.1"; # taken from ./scripts/download at ROOT_VERSION
···101 k3sRepo = fetchgit {
102 url = "https://github.com/k3s-io/k3s";
103 rev = "v${k3sVersion}";
104+ sha256 = "1w7drvk0bmlmqrxh1y6dxjy7dk6bdrl72pkd25lc1ir6wbzb05h9";
105 };
106 # Stage 1 of the k3s build:
107 # Let's talk about how k3s is structured.