Downgrade kernel to 6.18LTS

Added themes, fixed kanshi, some emacs changes
This commit is contained in:
Alexander
2026-05-05 18:38:11 +02:00
parent fe1f941685
commit 028277a9ae
12 changed files with 224 additions and 75 deletions
Generated
+67 -67
View File
@@ -71,11 +71,11 @@
"base16-helix": { "base16-helix": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1760703920, "lastModified": 1776754714,
"narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=", "narHash": "sha256-E3OAK27smtATTmX45uoTSRsVD+Y+ZiVVfgM/tjpbtYg=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-helix", "repo": "base16-helix",
"rev": "d646af9b7d14bff08824538164af99d0c521b185", "rev": "4d508123037e7851ad36ebf7d9c48b0e9e1eb581",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -107,11 +107,11 @@
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1777069669, "lastModified": 1777744353,
"narHash": "sha256-cEyV6jpC7pX/TNoHI+VDiTDjQc0rfYAkDLRJP2hZrzc=", "narHash": "sha256-8UmzMm5wkq+z0kEMEjowoECa4qY813z747o0g+G/bbE=",
"owner": "9001", "owner": "9001",
"repo": "copyparty", "repo": "copyparty",
"rev": "6e25d648a900f65a4546a1b17a9761c0f1e9e3cb", "rev": "da6e2ddca96dffc4dbe53bda25d2034428fad3d0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -127,11 +127,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1776613567, "lastModified": 1777713215,
"narHash": "sha256-gC9Cp5ibBmGD5awCA9z7xy6MW6iJufhazTYJOiGlCUI=", "narHash": "sha256-8GzXDOXckDWwST8TY5DbwYFjdvQLlP7K9CLSVx6iTTo=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "32f4236bfc141ae930b5ba2fb604f561fed5219d", "rev": "63b4e7e6cf75307c1d26ac3762b886b5b0247267",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -146,11 +146,11 @@
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1777344615, "lastModified": 1777975488,
"narHash": "sha256-pg93DT6h9qGnchIAcJp6Tpt45sJ+8CZXmro2+Xhi/Gc=", "narHash": "sha256-JyrUp9HJCMyPj+rcrlMO2TpsKdM5Dhj7KnIg4W1CuKs=",
"owner": "nix-community", "owner": "nix-community",
"repo": "emacs-overlay", "repo": "emacs-overlay",
"rev": "b1f0d6617ca484adaf0c3ea410f9681f1532b460", "rev": "695015ae8c42435944f62d25e6b5546948ea3e1e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -163,11 +163,11 @@
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1775176642, "lastModified": 1776136500,
"narHash": "sha256-2veEED0Fg7Fsh81tvVDNYR6SzjqQxa7hbi18Jv4LWpM=", "narHash": "sha256-r0gN2brVWA351zwMV0Flmlcd6SGMvYqFbvC3DfKFM8Y=",
"owner": "rafaelmardojai", "owner": "rafaelmardojai",
"repo": "firefox-gnome-theme", "repo": "firefox-gnome-theme",
"rev": "179704030c5286c729b5b0522037d1d51341022c", "rev": "0f8ba203d475587f477e7ae12661bd8459e225b7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -436,11 +436,11 @@
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1777330550, "lastModified": 1777910456,
"narHash": "sha256-jRRC7Ck+DzH98uWaD9i+ManOquec2qSRcBfyxWvenuA=", "narHash": "sha256-YXQ5bhn5mklMsOuVqze3QBqqL+8zsUum24Yx1K2Rb+w=",
"ref": "refs/heads/main", "ref": "refs/heads/main",
"rev": "e1bda229bdf070f1eed01858f862ca975783df71", "rev": "eff3bfe261e90b8950b59379ca7815f735a7aab6",
"revCount": 7196, "revCount": 7252,
"type": "git", "type": "git",
"url": "https://github.com/hyprwm/Hyprland" "url": "https://github.com/hyprwm/Hyprland"
}, },
@@ -512,11 +512,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1777292613, "lastModified": 1777937752,
"narHash": "sha256-sF3JQ9WY33Gam/WNoveIwVGgvREZNfxRONf4jD5hC3A=", "narHash": "sha256-QDc78DC6xhWKpPJzsPEJBBFYpTb+g4kO6+ydRYLU4f4=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprland-plugins", "repo": "hyprland-plugins",
"rev": "6c0d26b2676f71f4c382d34c5a59491b0aafd03d", "rev": "b6e080577daf6575b95e6733dd2e2aef714bcf10",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -643,11 +643,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1777148223, "lastModified": 1777492286,
"narHash": "sha256-PTf7kRFFzCW6rIYxLH2fWfVJmj86FSYe3k6L8B+IM9o=", "narHash": "sha256-PwuoEJQcjSKJNP5T55qhfDwIP0tw5zxEhfu8GDfKfeg=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprutils", "repo": "hyprutils",
"rev": "fa3992be2dfebe4ab06d753c6ca59bea298e798f", "rev": "ec5c0c709706bad5b82f667fd8758eae442577ce",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -750,11 +750,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1777282995, "lastModified": 1777888924,
"narHash": "sha256-DeVNOjfSIfwSe4KMcc/QZst68QwhEm6jd/rQYdRZHCQ=", "narHash": "sha256-CZ9akWHCqoWlyi+alSalkzaA0hq1Cs1Tv7MnM/zMVLQ=",
"owner": "Mic92", "owner": "Mic92",
"repo": "nix-ld", "repo": "nix-ld",
"rev": "7b7c075009dff1c3fd5fdcf63dd5d22fdbde34d6", "rev": "4161b94cb918d228f0452927950ed295c0131a48",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -801,11 +801,11 @@
}, },
"nixos-hardware": { "nixos-hardware": {
"locked": { "locked": {
"lastModified": 1776983936, "lastModified": 1777917524,
"narHash": "sha256-ZOQyNqSvJ8UdrrqU1p7vaFcdL53idK+LOM8oRWEWh6o=", "narHash": "sha256-k+LVe9YaO2BEPB9AaCtTtOMCeGi4dxDo6gt4Un3qoPY=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixos-hardware", "repo": "nixos-hardware",
"rev": "2096f3f411ce46e88a79ae4eafcfc9df8ed41c61", "rev": "df7783100babf59001340a7a874ba3824e441ecb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -832,11 +832,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1777077449, "lastModified": 1777673416,
"narHash": "sha256-AIiMJiqvGrN4HyLEbKAoCSRRYn0rnlW5VbKNIMIYqm4=", "narHash": "sha256-5c2POKPOjU40Kh0MirOdScBLG0bu9TAuPYAtPRNZMBs=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a4bf06618f0b5ee50f14ed8f0da77d34ecc19160", "rev": "26ef669cffa904b6f6832ab57b77892a37c1a671",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -848,11 +848,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1776877367, "lastModified": 1777578337,
"narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=", "narHash": "sha256-Ad49moKWeXtKBJNy2ebiTQUEgdLyvGmTeykAQ9xM+Z4=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "0726a0ecb6d4e08f6adced58726b95db924cef57", "rev": "15f4ee454b1dce334612fa6843b3e05cf546efab",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -968,11 +968,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1775228139, "lastModified": 1777598946,
"narHash": "sha256-ebbeHmg+V7w8050bwQOuhmQHoLOEOfqKzM1KgCTexK4=", "narHash": "sha256-X239dAGaU1+gfDj8jKH8GzlqKMcxaVfXOio+uzBOkeE=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "601971b9c89e0304561977f2c28fa25e73aa7132", "rev": "5d55af01c0f86be583931fe99207fc56c14134b3",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1084,11 +1084,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1777338324, "lastModified": 1777944972,
"narHash": "sha256-bc+ZZCmOTNq86/svGnw0tVpH7vJaLYvGLLKFYP08Q8E=", "narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "8eaee5c45428b28b8c47a83e4c09dccec5f279b5", "rev": "c591bf665727040c6cc5cb409079acb22dcce33c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1105,11 +1105,11 @@
"nix-filter": "nix-filter" "nix-filter": "nix-filter"
}, },
"locked": { "locked": {
"lastModified": 1777235927, "lastModified": 1777409658,
"narHash": "sha256-ql1ouZMN4xULMIHQJRNHNMHI2Cw8K0pugR6pXU3cKCs=", "narHash": "sha256-fBUjkrBbODd6c6j9sRfWvxqJrBHMHvp8WjAASfAqin4=",
"owner": "Duckonaut", "owner": "Duckonaut",
"repo": "split-monitor-workspaces", "repo": "split-monitor-workspaces",
"rev": "2dcc901799b5ebc8558584bcc993971dd64351ed", "rev": "206fc9ed4e35bdaea60c4ae16927376ff3ebac9d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1138,11 +1138,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1776893932, "lastModified": 1777835090,
"narHash": "sha256-AFD5cf9eNqXq1brHS63xeZy2xKZMgG9J86XJ9I2eLn8=", "narHash": "sha256-VLH8zPweblCOvpnQXp4fVs7f6Q79YhXF5XFKlOrvIFk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "stylix", "repo": "stylix",
"rev": "84971726c7ef0bb3669a5443e151cc226e65c518", "rev": "7989a1054b01153212dede6005abfd1576b8328c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1252,11 +1252,11 @@
"tinted-schemes": { "tinted-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1772661346, "lastModified": 1777041405,
"narHash": "sha256-4eu3LqB9tPqe0Vaqxd4wkZiBbthLbpb7llcoE/p5HT0=", "narHash": "sha256-BAGZ7ObFV/9Z61OJZun7ifPyhkuHqNuW1QIhQ8LuzCo=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "schemes", "repo": "schemes",
"rev": "13b5b0c299982bb361039601e2d72587d6846294", "rev": "5f868b3a338b6904c47f3833b9c411be641983a8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1268,11 +1268,11 @@
"tinted-tmux": { "tinted-tmux": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1772934010, "lastModified": 1777169200,
"narHash": "sha256-x+6+4UvaG+RBRQ6UaX+o6DjEg28u4eqhVRM9kpgJGjQ=", "narHash": "sha256-h7dDbIzP5hDr9v97w9PL6jdAgXawmj6krcH+959rqpU=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "tinted-tmux", "repo": "tinted-tmux",
"rev": "c3529673a5ab6e1b6830f618c45d9ce1bcdd829d", "rev": "f798c2dce44ef815bb6b8f05a82135c7942d35ac",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1284,11 +1284,11 @@
"tinted-zed": { "tinted-zed": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1772909925, "lastModified": 1777463218,
"narHash": "sha256-jx/5+pgYR0noHa3hk2esin18VMbnPSvWPL5bBjfTIAU=", "narHash": "sha256-Bhkozqtq3BKLqWTlmKm8uAptfX4aRGI8QX3eEL54Vpc=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-zed", "repo": "base16-zed",
"rev": "b4d3a1b3bcbd090937ef609a0a3b37237af974df", "rev": "5768d08ed2e7944a26a958868cdb073cb8856dae",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1299,11 +1299,11 @@
}, },
"unstable": { "unstable": {
"locked": { "locked": {
"lastModified": 1776877367, "lastModified": 1777954456,
"narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=", "narHash": "sha256-hGdgeU2Nk87RAuZyYjyDjFL6LK7dAZN5RE9+hrDTkDU=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "0726a0ecb6d4e08f6adced58726b95db924cef57", "rev": "549bd84d6279f9852cae6225e372cc67fb91a4c1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1320,11 +1320,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1777349711, "lastModified": 1777988791,
"narHash": "sha256-PGKgo2dO6fK603QGI+DWXdKmS09pbJjjTxwRHdhkGZA=", "narHash": "sha256-DtbtSW5+Hls7z+D9BfsAXvFuivt5iZ0OzUXjQ8d8lB8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "c1140540536d483e2730320100f6835d62c94fdf", "rev": "d987617879f613053f6fdf4491fe28ce0283d543",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1425,11 +1425,11 @@
"nixpkgs": "nixpkgs_8" "nixpkgs": "nixpkgs_8"
}, },
"locked": { "locked": {
"lastModified": 1777356688, "lastModified": 1777959875,
"narHash": "sha256-fOhJpz7QAkBWAAih72CmnIfIN0pHfuZjhZQ/hBLNWxo=", "narHash": "sha256-kL2gxkGbIawygfc+DJhWBXAcRplFQlLyDBb4JHCxTzw=",
"owner": "0xc000022070", "owner": "0xc000022070",
"repo": "zen-browser-flake", "repo": "zen-browser-flake",
"rev": "b3c972b3d8537a9cf7a0db96b164c9c3e580884a", "rev": "604c3c8814c87eac54d804253ab520cb8fac7b21",
"type": "github" "type": "github"
}, },
"original": { "original": {
+1
View File
@@ -10,5 +10,6 @@
./terminal ./terminal
./development ./development
./notification ./notification
./theme
]; ];
} }
+3 -3
View File
@@ -46,7 +46,7 @@ in
{ {
criteria = "Lenovo Group Limited LEN G34w-10 URW07XK8"; criteria = "Lenovo Group Limited LEN G34w-10 URW07XK8";
position = "2560,0"; position = "2560,0";
mode = "3440x1440@50Hz"; mode = "3440x1440@60Hz";
} }
]; ];
}; };
@@ -76,9 +76,9 @@ in
position = "480,1440"; position = "480,1440";
} }
{ {
criteria = "DP-5"; criteria = "Lenovo Group Limited LEN G34w-10 URW07XK8";
position = "0,0"; position = "0,0";
mode = "3440x1440@50Hz"; mode = "3440x1440@60Hz";
} }
]; ];
}; };
+51
View File
@@ -0,0 +1,51 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.dov.dynamic-theme;
schemes = "${pkgs.base16-schemes}/share/themes";
# Single source of truth for builtin themes
builtinThemes = {
gruvbox = {
dark = "${schemes}/gruvbox-dark-hard.yaml";
light = "${schemes}/gruvbox-light-hard.yaml";
};
catppuccin = {
dark = "${schemes}/catppuccin-mocha.yaml";
light = "${schemes}/catppuccin-latte.yaml";
};
};
in {
options.dov.dynamic-theme = {
enable = mkEnableOption "dynamic theme switching";
themes = mkOption {
type = types.attrsOf (types.submodule {
options = {
dark = mkOption {
type = types.path;
description = "Path to dark variant base16 scheme";
};
light = mkOption {
type = types.path;
description = "Path to light variant base16 scheme";
};
};
});
default = builtinThemes;
description = "Available themes with dark and light variants";
};
};
config = mkIf cfg.enable {
# HM-level stylix config inherits from NixOS level
# Specialisations are handled by NixOS module
stylix = {
enable = true;
autoEnable = true;
};
};
}
+1 -1
View File
@@ -26,7 +26,7 @@
kernelModules = [ ]; kernelModules = [ ];
}; };
kernelModules = [ "kvm-amd" ]; kernelModules = [ "kvm-amd" ];
kernelPackages = pkgs.linuxPackages_latest; kernelPackages = pkgs.linuxPackages_6_18;
# allow perf as user | needed for intellij to run profiler # allow perf as user | needed for intellij to run profiler
kernel.sysctl."kernel.perf_event_paranoid" = 1; kernel.sysctl."kernel.perf_event_paranoid" = 1;
+3 -1
View File
@@ -110,6 +110,8 @@
display-manager.ly.enable = true; display-manager.ly.enable = true;
gaming.enable = true; gaming.enable = true;
dynamic-theme.enable = true;
}; };
### ###
@@ -126,7 +128,7 @@
stylix = { stylix = {
enable = true; enable = true;
base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml"; # base16Scheme managed by dov.dynamic-theme module
fonts = { fonts = {
serif = { serif = {
@@ -367,6 +367,31 @@ Must be called BEFORE jdtls starts. Sets global lsp-java-vmargs."
;; Enable LSP for nix-mode ;; Enable LSP for nix-mode
(add-hook! 'nix-mode-hook #'lsp-deferred) (add-hook! 'nix-mode-hook #'lsp-deferred)
;; Protobuf configuration
(use-package! protobuf-mode
:mode "\\.proto\\'"
:hook (protobuf-mode . lsp-deferred)
:config
;; Custom indentation (2 spaces, no tabs)
(defconst my-protobuf-style
'((c-basic-offset . 2)
(indent-tabs-mode . nil)))
(add-hook 'protobuf-mode-hook
(lambda () (c-add-style "my-protobuf-style" my-protobuf-style t))))
;; Register buf LSP client for protobuf
(after! lsp-mode
(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection '("buf" "lsp" "serve"))
:activation-fn (lsp-activate-on "protobuf")
:language-id "protobuf"
:priority 1
:server-id 'buf-lsp)))
(after! treemacs (after! treemacs
(setq treemacs-collapse-dirs 3) (setq treemacs-collapse-dirs 3))
)
;; Prevent evil-jumps-history from corrupting savehist
;; (it contains markers/buffers that can't serialize properly)
(after! savehist
(add-to-list 'savehist-ignored-variables 'evil-jumps-history))
@@ -56,3 +56,5 @@
(package! web-server) (package! web-server)
(package! just-mode) (package! just-mode)
(package! protobuf-mode)
+2
View File
@@ -68,6 +68,8 @@
}; };
notification.mako.enable = true; notification.mako.enable = true;
dynamic-theme.enable = true;
}; };
programs = { programs = {
+1
View File
@@ -15,5 +15,6 @@
./gitlab ./gitlab
./jenkins ./jenkins
./gaming ./gaming
./theme
]; ];
} }
+1 -1
View File
@@ -56,7 +56,7 @@ in {
shellcheck shellcheck
# :lang typescript # :lang typescript
#javascript-typescript-langserver # deprecated #javascript-typescript-langserver # deprecated
deno #deno
# :lang go # :lang go
# go # go
# gopls # gopls
+65
View File
@@ -0,0 +1,65 @@
{ config, lib, pkgs, username, ... }:
with lib;
let
# Access HM theme config
hmCfg = config.home-manager.users.${username}.dov.dynamic-theme;
allThemes = hmCfg.themes;
# Generate all theme-variant combinations
themeVariants = concatMapAttrs (name: theme: {
"${name}-dark" = { scheme = theme.dark; polarity = "dark"; };
"${name}-light" = { scheme = theme.light; polarity = "light"; };
}) allThemes;
# Base is gruvbox-dark, everything else is a specialisation
baseVariant = "gruvbox-dark";
specialisationVariants = filterAttrs (name: _: name != baseVariant) themeVariants;
availableVariants = concatStringsSep " " (attrNames themeVariants);
theme-switch = pkgs.writeShellScriptBin "theme-switch" ''
case "$1" in
${baseVariant})
echo "Switching to ${baseVariant}..."
sudo nixos-rebuild switch --flake ~/nixos#${username}
;;
${concatStringsSep "\n " (map (name: ''
${name})
echo "Switching to ${name}..."
sudo nixos-rebuild switch --flake ~/nixos#${username} --specialisation ${name}
;;'') (attrNames specialisationVariants))}
*)
echo "Usage: theme-switch <variant>"
echo "Available: ${availableVariants}"
exit 1
;;
esac
'';
in {
options.dov.dynamic-theme.enable = mkEnableOption "NixOS dynamic theme specialisations";
config = mkIf (config.dov.dynamic-theme.enable && hmCfg.enable) {
# Add theme-switch script system-wide
environment.systemPackages = [ theme-switch ];
# Base theme: gruvbox-dark
stylix = {
base16Scheme = mkDefault themeVariants.${baseVariant}.scheme;
polarity = mkDefault themeVariants.${baseVariant}.polarity;
};
# Generate NixOS specialisations for all other variants
specialisation = mapAttrs (name: variant: {
configuration = {
stylix = {
base16Scheme = mkForce variant.scheme;
polarity = mkForce variant.polarity;
};
};
}) specialisationVariants;
};
}