nixos-config/config/desktop.nix

146 lines
4.1 KiB
Nix
Raw Normal View History

2022-06-12 16:39:15 +01:00
{
2022-06-14 07:42:42 +01:00
system,
nix-packages,
2022-06-12 16:39:15 +01:00
config,
pkgs,
2023-02-18 09:56:19 +01:00
lib,
2022-06-12 16:39:15 +01:00
...
} @ args: let
lockscreen-all = pkgs.writeScript "lockscreen-all" ''
#!${pkgs.bash}/bin/bash
if ${pkgs.coreutils}/bin/[ -z "$(${pkgs.usbutils}/bin/lsusb | grep Yubico)" ]; then
${pkgs.systemd}/bin/loginctl list-sessions | ${pkgs.gnugrep}/bin/grep '^\ ' | ${pkgs.gawk}/bin/awk '{print $1}' | ${pkgs.findutils}/bin/xargs -i ${pkgs.systemd}/bin/loginctl lock-session {}
fi
'';
2022-06-12 16:39:15 +01:00
in {
2022-01-18 13:55:16 +00:00
imports = [
2022-01-18 20:57:00 +01:00
./services/pipewire.nix
2022-05-11 19:34:55 +01:00
./desktop-secrets.nix
2022-05-25 09:36:03 +01:00
./services/cups.nix
2022-12-08 11:57:08 +01:00
./services/docker.nix
2022-12-31 10:52:01 +01:00
./services/cifs.nix
2022-01-18 13:55:16 +00:00
];
2023-01-06 10:28:49 +01:00
fonts = {
fontDir.enable = true;
fontconfig = {
enable = true;
defaultFonts = {
2023-01-12 14:21:58 +01:00
emoji = ["Noto Color Emoji"];
monospace = ["Fira Code" "Font Awesome 5 Free"];
sansSerif = ["Noto Sans" "Font Awesome 5 Free"];
serif = ["Noto Serif" "Font Awesome 5 Free"];
2023-01-06 10:28:49 +01:00
};
};
fonts = with pkgs; [
fira-code
fira-code-symbols
font-awesome
noto-fonts
noto-fonts-cjk
noto-fonts-emoji
noto-fonts-extra
(nerdfonts.override {fonts = ["FiraCode" "DroidSansMono" "Noto"];})
nix-packages.packages.${system}.nasin-nanpa
nix-packages.packages.${system}.fairfax-hd
];
};
fonts.fontconfig.localConf = ''
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="scan">
<test name="family">
<string>Fairfax HD</string>
</test>
<edit name="spacing">
<int>100</int>
</edit>
</match>
</fontconfig>
'';
2022-06-14 12:50:10 +01:00
2022-01-18 16:19:54 +00:00
time.timeZone = "Etc/GMT-1"; # Confusing naming, it's 1 hour east of GMT
2022-02-02 10:58:25 +01:00
services.pcscd.enable = true;
security.pam = {
services.login.u2fAuth = true;
services.sddm.u2fAuth = true;
services.swaylock.u2fAuth = true;
u2f = {
enable = true;
2022-02-02 20:19:50 +01:00
control = "required";
};
};
services.udev.extraRules = ''
ACTION=="remove", ENV{ID_VENDOR_ID}=="1050", ENV{ID_MODEL_ID}=="0407", RUN+="${lockscreen-all}"
2022-11-08 12:56:28 +01:00
SUBSYSTEM=="usb", ATTRS{idVendor}=="e621", ATTRS{idProduct}=="0000", TAG+="uaccess"
SUBSYSTEM=="hidraw*", ATTRS{idVendor}=="e621", ATTRS{idProduct}=="0000", TAG+="uaccess"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="0337", TAG+="uaccess"
SUBSYSTEM=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="0306", TAG+="uaccess"
SUBSYSTEM=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="0330", TAG+="uaccess"
'';
2023-03-10 20:25:51 +01:00
services.udev.packages = [pkgs.dolphinEmuMaster];
2023-03-27 19:59:49 +01:00
programs.steam.enable = system == "x86_64-linux";
2022-02-08 12:10:50 +01:00
nixpkgs.overlays = [
(curr: prev: {
steam = prev.steam.override {
2022-06-12 16:39:15 +01:00
extraPkgs = pkgs:
with pkgs; [
mono
2022-09-18 16:57:51 +01:00
fuse
2022-06-12 16:39:15 +01:00
];
2022-02-08 12:10:50 +01:00
};
})
];
2022-09-18 17:24:45 +01:00
services.flatpak.enable = true;
2022-02-22 07:59:53 +01:00
programs.java.enable = true;
2022-03-05 20:16:12 +01:00
hardware.opengl.driSupport = true;
2023-03-27 19:47:36 +01:00
hardware.opengl.driSupport32Bit = lib.mkForce (system == "x86_64-linux");
2022-06-12 16:39:15 +01:00
home-manager.users.darkkirb = import ./home-manager/darkkirb.nix {
desktop = true;
inherit args;
};
2022-03-20 14:38:52 +01:00
2022-04-06 08:22:37 +01:00
# For syncthing
2022-06-12 16:39:15 +01:00
networking.firewall.allowedTCPPorts = [22000];
networking.firewall.allowedUDPPorts = [22000];
2022-07-06 07:59:56 +01:00
2022-08-14 19:11:45 +01:00
environment.systemPackages = with pkgs; [
2023-01-10 21:05:07 +01:00
pinentry-qt
2023-03-10 20:25:51 +01:00
dolphinEmuMaster
2022-07-06 07:59:56 +01:00
];
2023-01-10 21:05:07 +01:00
programs.gnupg.agent.pinentryFlavor = "qt";
2022-07-06 07:59:56 +01:00
xdg.portal = {
enable = true;
wlr.enable = true;
# gtk portal needed to make gtk apps happy
2022-07-06 11:50:25 +01:00
extraPortals = [pkgs.xdg-desktop-portal-gtk];
2022-07-06 07:59:56 +01:00
};
2022-07-06 19:08:58 +01:00
programs.dconf.enable = true;
2022-07-10 09:34:55 +01:00
services.xserver = {
enable = true;
libinput.enable = true;
layout = "de";
xkbVariant = "neo";
2023-02-18 09:56:19 +01:00
displayManager.lightdm.enable = lib.mkForce false;
2022-07-10 09:34:55 +01:00
};
boot.kernelPackages = pkgs.zfsUnstable.latestCompatibleLinuxPackages;
2022-11-08 10:03:55 +01:00
i18n.inputMethod = {
enabled = "ibus";
ibus.engines = with pkgs.ibus-engines; [anthy];
};
2023-01-01 14:38:29 +01:00
security.polkit.enable = true;
2023-01-06 10:28:49 +01:00
services.dbus.enable = true;
2023-01-12 14:21:58 +01:00
services.dbus.packages = with pkgs; [dconf];
# Futureproofing: on non-x86 machines, emulate x86
boot.binfmt.emulatedSystems =
if system != "x86_64-linux"
then [
"x86_64-linux"
"i686-linux"
]
else [];
2022-01-18 13:55:16 +00:00
}