diff options
| -rw-r--r-- | sif.nix | 439 | ||||
| -rw-r--r-- | sif/boot.nix | 26 | ||||
| -rw-r--r-- | sif/hw.nix | 33 | ||||
| -rw-r--r-- | sif/wacom.conf | 15 | ||||
| m--------- | yggdrasil | 0 |
5 files changed, 513 insertions, 0 deletions
diff --git a/sif.nix b/sif.nix new file mode 100644 index 00000000..1df1a1bf --- /dev/null +++ b/sif.nix | |||
| @@ -0,0 +1,439 @@ | |||
| 1 | { config, pkgs, ... }: | ||
| 2 | |||
| 3 | { | ||
| 4 | imports = | ||
| 5 | [ ./sif/hw.nix | ||
| 6 | ./sif/boot.nix | ||
| 7 | ./users.nix | ||
| 8 | ./custom/zsh.nix | ||
| 9 | ./custom/tinc/def.nix | ||
| 10 | ./custom/tinc/yggdrasil.nix | ||
| 11 | ./custom/uucp.nix | ||
| 12 | ./custom/borgbackup.nix | ||
| 13 | ./custom/uucp-mediaclient.nix | ||
| 14 | ./custom/uucp-notifyclient.nix | ||
| 15 | ./custom/notify-users.nix | ||
| 16 | ./utils/nix/module.nix | ||
| 17 | ]; | ||
| 18 | |||
| 19 | networking = { | ||
| 20 | hostName = "sif"; | ||
| 21 | domain = "midgard.yggdrasil"; | ||
| 22 | |||
| 23 | hosts = { | ||
| 24 | "127.0.0.1" = [ "sif.midgard.yggdrasil" "sif" ]; | ||
| 25 | "::1" = [ "sif.midgard.yggdrasil" "sif" ]; | ||
| 26 | }; | ||
| 27 | |||
| 28 | firewall = { | ||
| 29 | enable = true; | ||
| 30 | allowedTCPPorts = [ 22 # ssh | ||
| 31 | ]; | ||
| 32 | }; | ||
| 33 | |||
| 34 | networkmanager = { | ||
| 35 | enable = true; | ||
| 36 | dhcp = "internal"; | ||
| 37 | }; | ||
| 38 | |||
| 39 | dhcpcd.enable = false; | ||
| 40 | }; | ||
| 41 | |||
| 42 | powerManagement.enable = true; | ||
| 43 | |||
| 44 | i18n = { | ||
| 45 | consoleFont = "lat9w-16"; | ||
| 46 | consoleKeyMap = "dvp"; | ||
| 47 | defaultLocale = "en_US.UTF-8"; | ||
| 48 | }; | ||
| 49 | |||
| 50 | boot.kernelPackages = pkgs.linuxPackages_latest; | ||
| 51 | |||
| 52 | time.timeZone = "Europe/Berlin"; | ||
| 53 | |||
| 54 | environment.systemPackages = with pkgs; [ | ||
| 55 | git rebuild-system | ||
| 56 | ]; | ||
| 57 | |||
| 58 | nixpkgs.config.packageOverrides = pkgs: rec { | ||
| 59 | libfprint = pkgs.stdenv.mkDerivation rec { | ||
| 60 | name = "libfprint-${version}"; | ||
| 61 | version = "vfs0090-f8323a0"; | ||
| 62 | |||
| 63 | src = pkgs.fetchFromGitHub { | ||
| 64 | owner = "3v1n0"; | ||
| 65 | repo = "libfprint"; | ||
| 66 | rev = "f8323a0d3e0616f2822547902306992efd3572e7"; | ||
| 67 | sha256 = "0y0lkwgw1lx4frm1kxz0hj11x93dby7vxkjly0ck7w7z96nn8bnm"; | ||
| 68 | }; | ||
| 69 | |||
| 70 | buildInputs = with pkgs; [ libusb pixman glib nss nspr gdk_pixbuf openssl ]; | ||
| 71 | nativeBuildInputs = with pkgs; [ pkgconfig libtool automake autoconf ]; | ||
| 72 | |||
| 73 | preConfigure = '' | ||
| 74 | NOCONFIGURE=true ./autogen.sh | ||
| 75 | ''; | ||
| 76 | |||
| 77 | configureFlags = [ "--with-udev-rules-dir=$(out)/lib/udev/rules.d" ]; | ||
| 78 | }; | ||
| 79 | |||
| 80 | fprintd = pkgs.stdenv.lib.overrideDerivation pkgs.fprintd (oldAttrs: { | ||
| 81 | configureFlags = oldAttrs.configureFlags or [] ++ ["--sysconfdir=/etc" "--localstatedir=/var"]; | ||
| 82 | installFlags = oldAttrs.installFlags or [] ++ ["sysconfdir=\${out}/etc" "localstatedir=\${TMPDIR}"]; | ||
| 83 | }); | ||
| 84 | }; | ||
| 85 | |||
| 86 | nixpkgs.config.allowUnfree = true; | ||
| 87 | |||
| 88 | services = { | ||
| 89 | fprintd.enable = true; | ||
| 90 | |||
| 91 | vnstat.enable = true; | ||
| 92 | |||
| 93 | logind.extraConfig = '' | ||
| 94 | HandleLidSwitch=hybrid-sleep | ||
| 95 | LidSwitchIgnoreInhibited=no | ||
| 96 | ''; | ||
| 97 | |||
| 98 | openssh = { | ||
| 99 | enable = true; | ||
| 100 | }; | ||
| 101 | |||
| 102 | atd = { | ||
| 103 | enable = true; | ||
| 104 | allowEveryone = true; | ||
| 105 | }; | ||
| 106 | |||
| 107 | xserver = { | ||
| 108 | enable = true; | ||
| 109 | |||
| 110 | layout = "us"; | ||
| 111 | xkbVariant = "dvp"; | ||
| 112 | xkbOptions = "compose:caps"; | ||
| 113 | |||
| 114 | displayManager.lightdm = { | ||
| 115 | enable = true; | ||
| 116 | }; | ||
| 117 | |||
| 118 | desktopManager = { | ||
| 119 | default = "none"; | ||
| 120 | xterm.enable = false; | ||
| 121 | }; | ||
| 122 | |||
| 123 | windowManager = { | ||
| 124 | default = "xmonad"; | ||
| 125 | xmonad = { | ||
| 126 | enable = true; | ||
| 127 | extraPackages = haskellPackages: (with haskellPackages; | ||
| 128 | [ xmonad-contrib hostname libnotify aeson temporary parsec network] | ||
| 129 | ); | ||
| 130 | }; | ||
| 131 | }; | ||
| 132 | |||
| 133 | wacom.enable = true; | ||
| 134 | multitouch.enable = true; | ||
| 135 | libinput.enable = true; | ||
| 136 | |||
| 137 | dpi = 282; | ||
| 138 | }; | ||
| 139 | |||
| 140 | yggdrasilTinc = { | ||
| 141 | enable = true; | ||
| 142 | connect = true; | ||
| 143 | name = "sif"; | ||
| 144 | interfaceConfig = { | ||
| 145 | macAddress = "5c:93:21:c3:61:39"; | ||
| 146 | }; | ||
| 147 | }; | ||
| 148 | |||
| 149 | uucp = { | ||
| 150 | enable = true; | ||
| 151 | nodeName = "hel"; | ||
| 152 | remoteNodes = { | ||
| 153 | "odin" = { | ||
| 154 | publicKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKcDj49TqmflGTmtGBqDawxmCBWW1txj61CZ7KT0hTHK uucp@odin"]; | ||
| 155 | hostnames = ["odin.asgard.yggdrasil"]; | ||
| 156 | }; | ||
| 157 | "ymir" = { | ||
| 158 | publicKeys = ["ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFH1QWdgoC03nzW5GBuCl2pqASHeIXIYtE9IInHdaKcO uucp@ymir"]; | ||
| 159 | hostnames = ["ymir.yggdrasil.li" "ymir.niflheim.yggdrasil"]; | ||
| 160 | }; | ||
| 161 | }; | ||
| 162 | |||
| 163 | defaultCommands = lib.mkForce []; | ||
| 164 | |||
| 165 | media-client = { | ||
| 166 | remoteNodes = [ "odin" ]; | ||
| 167 | notify.users = [ "gkleen" ]; | ||
| 168 | }; | ||
| 169 | |||
| 170 | notify-client = { | ||
| 171 | remoteNodes = { | ||
| 172 | odin = {}; | ||
| 173 | }; | ||
| 174 | }; | ||
| 175 | }; | ||
| 176 | |||
| 177 | notify-users = [ "gkleen" ]; | ||
| 178 | |||
| 179 | postfix = { | ||
| 180 | enable = true; | ||
| 181 | enableSmtp = true; | ||
| 182 | enableSubmission = false; | ||
| 183 | setSendmail = true; | ||
| 184 | networksStyle = "host"; | ||
| 185 | hostname = "hel.midgard.yggdrasil"; | ||
| 186 | destination = []; | ||
| 187 | relayHost = "uucp:ymir"; | ||
| 188 | recipientDelimiter = "+"; | ||
| 189 | masterConfig = { | ||
| 190 | uucp = { | ||
| 191 | type = "unix"; | ||
| 192 | private = true; | ||
| 193 | privileged = true; | ||
| 194 | chroot = false; | ||
| 195 | command = "pipe"; | ||
| 196 | args = [ "flags=Fqhu" "user=uucp" ''argv=${config.security.wrapperDir}/uux -z -a $sender - $nexthop!rmail ($recipient)'' ]; | ||
| 197 | }; | ||
| 198 | sshsendmail = { | ||
| 199 | type = "unix"; | ||
| 200 | private = true; | ||
| 201 | privileged = true; | ||
| 202 | chroot = false; | ||
| 203 | command = "pipe"; | ||
| 204 | args = [ "flags=Fq" "user=postfix_ssh" ''argv=${pkgs.openssh}/bin/ssh -F /var/db/postfix_ssh/ssh.config $nexthop sendmail -f $sender -G $recipient'' ]; | ||
| 205 | }; | ||
| 206 | }; | ||
| 207 | transport = '' | ||
| 208 | odin.asgard.yggdrasil uucp:odin | ||
| 209 | ''; | ||
| 210 | config = { | ||
| 211 | always_bcc = "gkleen+sent@odin.asgard.yggdrasil"; | ||
| 212 | |||
| 213 | default_transport = "uucp:ymir"; | ||
| 214 | |||
| 215 | inet_interfaces = "loopback-only"; | ||
| 216 | |||
| 217 | authorized_submit_users = ["!uucp" "static:anyone"]; | ||
| 218 | message_size_limit = "0"; | ||
| 219 | |||
| 220 | sender_dependent_default_transport_maps = ''regexp:${pkgs.writeText "sender_relay" '' | ||
| 221 | /@math(ematik)?\.(lmu|uni-muenchen)\.de$/ sshsendmail:math60.mathinst.loc | ||
| 222 | /@(cip|stud)\.ifi\.(lmu|uni-muenchen)\.de$/ smtp:smtp.ifi.lmu.de | ||
| 223 | /@ifi\.(lmu|uni-muenchen)\.de$/ smtp:smtpin1.ifi.lmu.de:587 | ||
| 224 | /@(campus\.)?lmu\.de$/ smtp:postout.lrz.de | ||
| 225 | ''}''; | ||
| 226 | |||
| 227 | smtp_sasl_auth_enable = true; | ||
| 228 | smtp_sender_dependent_authentication = true; | ||
| 229 | smtp_sasl_tls_security_options = "noanonymous"; | ||
| 230 | smtp_sasl_mechanism_filter = ["plain"]; | ||
| 231 | smtp_tls_security_level = "dane"; | ||
| 232 | smtp_sasl_password_maps = "texthash:/var/db/postfix/sasl_passwd"; | ||
| 233 | smtp_cname_overrides_servername = false; | ||
| 234 | smtp_always_send_ehlo = true; | ||
| 235 | |||
| 236 | smtp_tls_loglevel = "1"; | ||
| 237 | smtp_dns_support_level = "dnssec"; | ||
| 238 | }; | ||
| 239 | }; | ||
| 240 | |||
| 241 | upower = { | ||
| 242 | enable = true; | ||
| 243 | }; | ||
| 244 | |||
| 245 | locate = { | ||
| 246 | enable = true; | ||
| 247 | interval = "hourly"; | ||
| 248 | locate = pkgs.mlocate; | ||
| 249 | localuser = null; | ||
| 250 | prunePaths = ["/tmp" "/var/tmp" "/var/cache" "/var/lock" "/var/run" "/var/spool"]; | ||
| 251 | }; | ||
| 252 | }; | ||
| 253 | |||
| 254 | users = { | ||
| 255 | mutableUsers = false; | ||
| 256 | |||
| 257 | extraUsers.root = { inherit (import ./users/gkleen.nix) shell hashedPassword; }; | ||
| 258 | |||
| 259 | extraUsers.gkleen.extraGroups = [ "media" "networkmanager" ]; | ||
| 260 | extraUsers.gkleen.packages = with pkgs; [ | ||
| 261 | steam | ||
| 262 | ]; | ||
| 263 | |||
| 264 | extraUsers.postfix_ssh = { | ||
| 265 | isSystemUser = true; | ||
| 266 | home = "/var/db/postfix_ssh"; | ||
| 267 | }; | ||
| 268 | |||
| 269 | extraGroups = { | ||
| 270 | network = {}; | ||
| 271 | }; | ||
| 272 | }; | ||
| 273 | |||
| 274 | security = { | ||
| 275 | sudo.extraConfig = '' | ||
| 276 | Cmnd_Alias SYSCTRL = /run/current-system/sw/sbin/shutdown, /run/current-system/sw/sbin/reboot, /run/current-system/sw/sbin/halt, /run/current-system/sw/bin/systemctl | ||
| 277 | %wheel ALL=(ALL) NOPASSWD: SYSCTRL | ||
| 278 | ''; | ||
| 279 | |||
| 280 | wrappers = { "mount".source = "${pkgs.utillinux.bin}/bin/mount"; | ||
| 281 | "umount".source = "${pkgs.utillinux.bin}/bin/umount"; | ||
| 282 | "newgrp".source = "${pkgs.shadow}/bin/newgrp"; | ||
| 283 | "sg".source = "${pkgs.shadow}/bin/sg"; | ||
| 284 | }; | ||
| 285 | |||
| 286 | polkit = { | ||
| 287 | enable = true; | ||
| 288 | extraConfig = '' | ||
| 289 | polkit.addRule(function(action, subject) { | ||
| 290 | if ( action.id == "org.freedesktop.systemd1.manage-units" | ||
| 291 | && subject.isInGroup("wheel") | ||
| 292 | ) { | ||
| 293 | return polkit.Result.YES; | ||
| 294 | } | ||
| 295 | }); | ||
| 296 | |||
| 297 | polkit.addRule(function(action, subject) { | ||
| 298 | if ((action.id == "org.blueman.rfkill.setstate" || | ||
| 299 | action.id == "org.blueman.network.setup" || | ||
| 300 | action.id == "org.freedesktop.NetworkManager.settings.modify.system" | ||
| 301 | ) && subject.local | ||
| 302 | && subject.active && subject.isInGroup("network") | ||
| 303 | ) { | ||
| 304 | return polkit.Result.YES; | ||
| 305 | } | ||
| 306 | }); | ||
| 307 | ''; | ||
| 308 | }; | ||
| 309 | }; | ||
| 310 | |||
| 311 | hardware = { | ||
| 312 | pulseaudio = { | ||
| 313 | enable = true; | ||
| 314 | package = with pkgs; pulseaudioFull; | ||
| 315 | }; | ||
| 316 | |||
| 317 | bluetooth = { | ||
| 318 | enable = true; | ||
| 319 | extraConfig = '' | ||
| 320 | [General] | ||
| 321 | Enable=Source,Sink,Media,Socket | ||
| 322 | ''; | ||
| 323 | }; | ||
| 324 | |||
| 325 | trackpoint = { | ||
| 326 | enable = true; | ||
| 327 | emulateWheel = true; | ||
| 328 | sensitivity = 255; | ||
| 329 | speed = 255; | ||
| 330 | }; | ||
| 331 | |||
| 332 | brightnessctl.enable = true; | ||
| 333 | }; | ||
| 334 | |||
| 335 | sound.enable = true; | ||
| 336 | |||
| 337 | nix = { | ||
| 338 | useSandbox = true; | ||
| 339 | autoOptimiseStore = true; | ||
| 340 | daemonNiceLevel = 10; | ||
| 341 | daemonIONiceLevel = 3; | ||
| 342 | }; | ||
| 343 | |||
| 344 | environment.etc."fprintd.conf".source = "${pkgs.fprintd}/etc/fprintd.conf"; | ||
| 345 | environment.etc."X11/xorg.conf.d/50-wacom.conf".source = lib.mkForce ./sif/wacom.conf; | ||
| 346 | |||
| 347 | systemd.services."kill-user@" = { | ||
| 348 | serviceConfig = { | ||
| 349 | Type = "oneshot"; | ||
| 350 | ExecStart = "${pkgs.systemd}/bin/loginctl kill-user %I"; | ||
| 351 | }; | ||
| 352 | }; | ||
| 353 | systemd.targets."sleep" = { | ||
| 354 | after = [ "kill-user@uucp.service" ]; | ||
| 355 | wants = [ "kill-user@uucp.service" ]; | ||
| 356 | }; | ||
| 357 | |||
| 358 | |||
| 359 | systemd.user.services."pulseaudio".enable = lib.mkForce false; | ||
| 360 | systemd.user.services."ssh-agent".enable = lib.mkForce false; | ||
| 361 | systemd.user.sockets."pulseaudio".enable = lib.mkForce false; | ||
| 362 | |||
| 363 | systemd.services."ac-plugged" = { | ||
| 364 | description = "Inhibit handling of lid-switch and sleep"; | ||
| 365 | |||
| 366 | path = with pkgs; | ||
| 367 | [ systemd coreutils ]; | ||
| 368 | |||
| 369 | script = '' | ||
| 370 | exec systemd-inhibit --what=handle-lid-switch:sleep --why="AC is connected" --mode=block sleep infinity | ||
| 371 | ''; | ||
| 372 | |||
| 373 | serviceConfig = { | ||
| 374 | Type = "simple"; | ||
| 375 | }; | ||
| 376 | }; | ||
| 377 | |||
| 378 | services.udev.extraRules = with pkgs; '' | ||
| 379 | SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="0", RUN+="${systemd}/bin/systemctl --no-block stop ac-plugged.service" | ||
| 380 | SUBSYSTEM=="power_supply", ENV{POWER_SUPPLY_ONLINE}=="1", RUN+="${systemd}/bin/systemctl --no-block start ac-plugged.service" | ||
| 381 | ''; | ||
| 382 | |||
| 383 | services.borgbackup = { | ||
| 384 | snapshots = "btrfs"; | ||
| 385 | prefix = "yggdrasil.midgard.sif."; | ||
| 386 | targets = { | ||
| 387 | "munin" = { | ||
| 388 | repo = "borg.munin:borg"; | ||
| 389 | paths = [ "/home/gkleen" ]; | ||
| 390 | prune = { | ||
| 391 | "home-gkleen" = | ||
| 392 | [ "--keep-within" "24H" | ||
| 393 | "--keep-daily" "31" | ||
| 394 | "--keep-monthly" "12" | ||
| 395 | "--keep-yearly" "-1" | ||
| 396 | ]; | ||
| 397 | }; | ||
| 398 | }; | ||
| 399 | }; | ||
| 400 | }; | ||
| 401 | |||
| 402 | services.btrfs.autoScrub = { | ||
| 403 | enable = true; | ||
| 404 | fileSystems = [ "/" "/home" ]; | ||
| 405 | interval = "weekly"; | ||
| 406 | }; | ||
| 407 | |||
| 408 | systemd.services."nix-daemon".serviceConfig = { | ||
| 409 | MemoryAccounting = true; | ||
| 410 | MemoryHigh = "50%"; | ||
| 411 | MemoryMax = "75%"; | ||
| 412 | }; | ||
| 413 | |||
| 414 | systemd.services."nixos-upgrade" = { | ||
| 415 | path = with pkgs; [ git ]; | ||
| 416 | preStart = '' | ||
| 417 | git -C /etc/nixos fetch --recurse-submodules | ||
| 418 | git -C /etc/nixos reset --hard origin/master | ||
| 419 | ''; | ||
| 420 | }; | ||
| 421 | |||
| 422 | services.compton = { | ||
| 423 | enable = true; | ||
| 424 | backend = "glx"; | ||
| 425 | vSync = true; | ||
| 426 | settings = { | ||
| 427 | glx-swap-method = 3; | ||
| 428 | xrender-sync = true; | ||
| 429 | xrender-sync-fence = true; | ||
| 430 | }; | ||
| 431 | }; | ||
| 432 | |||
| 433 | services.journald.extraConfig = '' | ||
| 434 | SystemMaxUse=100M | ||
| 435 | ''; | ||
| 436 | |||
| 437 | system.stateVersion = "20.03"; # Did you read the comment? | ||
| 438 | } | ||
| 439 | |||
diff --git a/sif/boot.nix b/sif/boot.nix new file mode 100644 index 00000000..00d42b99 --- /dev/null +++ b/sif/boot.nix | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | { config, lib, pkgs, ... }: | ||
| 2 | |||
| 3 | { | ||
| 4 | boot = { | ||
| 5 | initrd = { | ||
| 6 | luks.devices = [ | ||
| 7 | { name = "nvm0"; device = "/dev/disk/by-uuid/fe641e81-0812-4181-a5f6-382ebba509bb"; } | ||
| 8 | { name = "nvm1"; device = "/dev/disk/by-uuid/43df1ba8-1728-4193-8855-920a82d4494a"; } | ||
| 9 | ]; | ||
| 10 | kernelModules = [ "dm-snapshot" ]; | ||
| 11 | availableKernelModules = [ "fbcon" "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; | ||
| 12 | }; | ||
| 13 | }; | ||
| 14 | |||
| 15 | |||
| 16 | # Use the systemd-boot EFI boot loader. | ||
| 17 | loader = { | ||
| 18 | systemd-boot.enable = true; | ||
| 19 | efi.canTouchEfiVariables = true; | ||
| 20 | timeout = null; | ||
| 21 | }; | ||
| 22 | |||
| 23 | plymouth.enable = true; | ||
| 24 | |||
| 25 | kernelParams = [ "intel_pstate=no_hwp" "quiet" ]; | ||
| 26 | } | ||
diff --git a/sif/hw.nix b/sif/hw.nix new file mode 100644 index 00000000..17293c90 --- /dev/null +++ b/sif/hw.nix | |||
| @@ -0,0 +1,33 @@ | |||
| 1 | { config, lib, pkgs, ... }: | ||
| 2 | |||
| 3 | { | ||
| 4 | imports = | ||
| 5 | [ <nixpkgs/nixos/modules/installer/scan/not-detected.nix> | ||
| 6 | ]; | ||
| 7 | |||
| 8 | fileSystems."/" = | ||
| 9 | { device = "/dev/disk/by-uuid/f094bf06-66f9-40a8-9ab2-2b54d05223d2"; | ||
| 10 | fsType = "btrfs"; | ||
| 11 | }; | ||
| 12 | |||
| 13 | fileSystems."/boot" = | ||
| 14 | { device = "/dev/disk/by-uuid/B3A2-D029"; | ||
| 15 | fsType = "vfat"; | ||
| 16 | }; | ||
| 17 | |||
| 18 | fileSystems."/home" = | ||
| 19 | { device = "/dev/disk/by-uuid/9e932072-3c56-4a9c-8da7-3163d2a8bf28"; | ||
| 20 | fsType = "btrfs"; | ||
| 21 | }; | ||
| 22 | |||
| 23 | swapDevices = | ||
| 24 | [ { device = "/dev/disk/by-uuid/50f3f856-cc17-4614-846a-34a14d5006ec"; } | ||
| 25 | ]; | ||
| 26 | |||
| 27 | nix.maxJobs = lib.mkDefault 12; | ||
| 28 | powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; | ||
| 29 | # High-DPI console | ||
| 30 | i18n.consoleFont = lib.mkDefault "${pkgs.terminus_font}/share/consolefonts/ter-u28n.psf.gz"; | ||
| 31 | |||
| 32 | hardware.cpu.intel.updateMicrocode = true; | ||
| 33 | } | ||
diff --git a/sif/wacom.conf b/sif/wacom.conf new file mode 100644 index 00000000..864409f1 --- /dev/null +++ b/sif/wacom.conf | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | Section "InputClass" | ||
| 2 | Identifier "Wacom USB device class" | ||
| 3 | MatchUSBID "056a:*" | ||
| 4 | MatchDevicePath "/dev/input/event*" | ||
| 5 | Driver "wacom" | ||
| 6 | EndSection | ||
| 7 | |||
| 8 | Section "InputClass" | ||
| 9 | Identifier "calibration" | ||
| 10 | MatchProduct "Wacom USB device class" | ||
| 11 | Option "MinX" "58" | ||
| 12 | Option "MaxX" "30982" | ||
| 13 | Option "MinY" "87" | ||
| 14 | Option "MaxY" "17328" | ||
| 15 | EndSection \ No newline at end of file | ||
diff --git a/yggdrasil b/yggdrasil | |||
| Subproject 5da484d0a81d9b35ceaa2da44c2dfc6bb9ad292 | Subproject f9b7f232d15afba865e94ca66e28ca375670009 | ||
