Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
16 files changed, 335 insertions, 308 deletions
-rw-r--r--autoconfig.nix23
-rw-r--r--configuration.nix9
-rw-r--r--machines/vesta/configuration.nix12
-rw-r--r--machines/vesta/sysidentity.nix7
-rw-r--r--module-groups.nix3
-rw-r--r--modules/cli-apps.nix33
-rw-r--r--modules/desktop_archiving.nix15
-rw-r--r--modules/dev.nix25
-rw-r--r--modules/fonts.nix9
-rw-r--r--modules/general-settings.nix21
-rw-r--r--modules/gui-apps.nix54
-rw-r--r--modules/keyboard.nix9
-rw-r--r--modules/laptop_control.nix13
-rw-r--r--modules/openbox-de.nix98
-rw-r--r--modules/web-server.nix15
-rw-r--r--packages/default.nix297
diff --git a/autoconfig.nix b/autoconfig.nix
index 0851514..5da9c3a 100644
--- a/autoconfig.nix
+++ b/autoconfig.nix
@@ -10,12 +10,23 @@ in {
inherit (import ./machines/${dir}/sysidentity.nix) sysidentity;
package-modules =
- lib.mapAttrsToList
- (_: module: module)
- (lib.filterAttrs
- (name: _:
- (lib.hasInfix "_" name) -> (lib.hasPrefix (sysidentity.type + "_") name))
- (import ./packages));
+ let
+ listget = attrname:
+ if sysidentity ? ${attrname}
+ then map
+ (v: ./modules + ("/" + v + (if lib.hasSuffix ".nix" v then "" else ".nix")))
+ sysidentity.${attrname}
+ else [];
+ havelist = listget "have";
+ droplist = listget "drop";
+ modulelist =
+ if (sysidentity ? defaultempty) && sysidentity.defaultempty
+ then []
+ else lib.mapAttrsToList
+ (name: _: ./modules + ("/" + name))
+ (lib.filterAttrs (_: type: type == "regular") (builtins.readDir ./modules));
+ in
+ lib.subtractLists droplist (havelist ++ modulelist);
inputs-overlays =
lib.mapAttrs
diff --git a/configuration.nix b/configuration.nix
index f82962f..95ca38f 100644
--- a/configuration.nix
+++ b/configuration.nix
@@ -72,13 +72,16 @@
#
# Define a user account. Don't forget to set a password with ‘passwd’.
- users.users.kamen = {
+ # Thanks https://discourse.nixos.org/t/gns3-setcap-and-ubridge-gns3-unable-to-execute-setcap-command/13485/3
+ users = {
+ groups.ubridge = {};
+ users.kamen = {
isNormalUser = true;
- extraGroups = [ "wheel" "audio" "video" "input" "lpadmin" "libvirtd" "lp" "scanner" "plugdev" ]; # Enable ‘sudo’ for the user.
+ extraGroups = [ "wheel" "audio" "video" "input" "lpadmin" "libvirtd" "lp" "scanner" "plugdev" "docker" "ubridge" ]; # Enable ‘sudo’ for the user.
packages = [ ];
shell = pkgs.zsh;
homeMode = "711"; # mostly done for httpd access
- };
+ };};
# TODO
# Enable the OpenSSH daemon.
diff --git a/machines/vesta/configuration.nix b/machines/vesta/configuration.nix
index b97138f..d32c502 100644
--- a/machines/vesta/configuration.nix
+++ b/machines/vesta/configuration.nix
@@ -12,9 +12,17 @@
};
environment.systemPackages = with pkgs; [
- alsa-plugins radeontop glxinfo vulkan-tools clinfo gpu-viewer
+ alsa-plugins radeontop glxinfo vulkan-tools clinfo gpu-viewer lutris wine gns3-server gns3-gui docker tigervnc ubridge vpcs
];
+ security.wrappers.ubridge = {
+ source = "${pkgs.ubridge}/bin/ubridge";
+ capabilities = "cap_net_admin,cap_net_raw=ep";
+ owner = "root";
+ group = "ubridge";
+ permissions = "u+rx,g+rx,o+rx";
+ };
+
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
@@ -65,4 +73,6 @@
# ({ original = pkgs.mesa; replacement = (import /srv/nixpkgs-mesa { }).pkgs.mesa; })
# ({ original = pkgs.mesa.drivers; replacement = (import /srv/nixpkgs-mesa { }).pkgs.mesa.drivers; })
# ];
+
+ swapDevices = [ { device = "/home/swapfile"; size = 24 * 1024; } ];
}
diff --git a/machines/vesta/sysidentity.nix b/machines/vesta/sysidentity.nix
index 58bd31f..19e22e6 100644
--- a/machines/vesta/sysidentity.nix
+++ b/machines/vesta/sysidentity.nix
@@ -1,7 +1,12 @@
+let
+ groups = import ../../module-groups.nix;
+in
{
sysidentity = {
name = "vesta";
- type = "desktop";
arch = "x86_64-linux";
+
+ defaultempty = false;
+ drop = groups.non-desktop;
};
}
diff --git a/module-groups.nix b/module-groups.nix
new file mode 100644
index 0000000..368cc1a
--- /dev/null
+++ b/module-groups.nix
@@ -0,0 +1,3 @@
+{
+ non-desktop = [ "laptop_control" ];
+}
diff --git a/modules/cli-apps.nix b/modules/cli-apps.nix
new file mode 100644
index 0000000..ab6f5a9
--- /dev/null
+++ b/modules/cli-apps.nix
@@ -0,0 +1,33 @@
+{ pkgs, ... }: {
+ environment.systemPackages = with pkgs; [
+ # Hardware managing apps
+ pipewire libinput lm_sensors lshw usbutils chrony iotop bluez efibootmgr libva-utils
+ parted dosfstools mtpfs ntfs3g squashfsTools
+ # Network
+ wget git rsync inetutils vnstat yt-dlp
+ # Working with files
+ neovim vim-full inotify-tools lsof tree xmlstarlet
+ # General usage
+ zsh dash htop rlwrap bc ddrescue cron
+ # Working with files
+ ffmpeg img2pdf pdftk imagemagick pngcrush jpegoptim optipng gd kid3 pandoc libisoburn mediainfo
+ # Archive formats
+ p7zip dpkg cdrtools zip unzip rar unrar rpm
+ # Misc
+ neofetch nixpkgs-2305.exa moc lazygit aspell
+ ];
+
+ # zsh
+ programs.zsh.enable = true;
+ environment.shells = with pkgs; [ zsh ];
+
+ # bluez
+
+ programs = {
+ mtr.enable = true;
+ gnupg.agent = {
+ enable = true;
+ enableSSHSupport = true;
+ };
+ };
+}
diff --git a/modules/desktop_archiving.nix b/modules/desktop_archiving.nix
new file mode 100644
index 0000000..f3b6de8
--- /dev/null
+++ b/modules/desktop_archiving.nix
@@ -0,0 +1,15 @@
+{ pkgs, ... }: {
+ environment.systemPackages = with pkgs; [
+ timeshift
+ # k3s
+ ];
+
+ networking.firewall = {
+ allowedTCPPorts = [ 6443 ];
+ };
+
+ services.k3s = {
+ enable = false;
+ role = "server";
+ };
+}
diff --git a/modules/dev.nix b/modules/dev.nix
new file mode 100644
index 0000000..b291692
--- /dev/null
+++ b/modules/dev.nix
@@ -0,0 +1,25 @@
+{ pkgs, ... }: {
+ environment.systemPackages = with pkgs; [
+ gnumake
+ lowdown wakatime cloc go php fontforge ruby csslint
+ # C/C++
+ clang clang-tools glibc gcc gdb valgrind pugixml cmake libusb libusb-compat-0_1 meson
+ # .NET
+ dotnet-sdk mono
+ # Python
+ python3Minimal
+ # Android
+ android-tools heimdall
+ # Networking
+ wireshark gns3-gui gns3-server dynamips
+ # awk
+ gawk mawk nawk
+ # DB
+ mysql sqlite sqlitebrowser flyway
+ # Functional
+ racket ghc sbcl
+ # Compilers
+ flex bison
+ rstudio
+ ];
+}
diff --git a/modules/fonts.nix b/modules/fonts.nix
new file mode 100644
index 0000000..923f452
--- /dev/null
+++ b/modules/fonts.nix
@@ -0,0 +1,9 @@
+{ pkgs, ... }: {
+ fonts.packages = with pkgs; [
+ meslolgs-nerdfont
+ # Note to self: DO NOT INSTALL ADOBE FONTS!
+ corefonts vistafonts liberation_ttf helvetica-neue-lt-std noto-fonts noto-fonts-emoji cm_unicode symbola
+ # CJK
+ noto-fonts-cjk arphic-ukai arphic-uming takao wqy_microhei wqy_zenhei
+ ];
+}
diff --git a/modules/general-settings.nix b/modules/general-settings.nix
new file mode 100644
index 0000000..652c55c
--- /dev/null
+++ b/modules/general-settings.nix
@@ -0,0 +1,21 @@
+{ pkgs, ... }: {
+ nixpkgs.config.allowUnfree = true;
+
+ services.xserver = {
+ # xkbmap
+ layout = "us,bg-custom";
+ xkbVariant = ",phonetic-nonstandard";
+ xkbOptions = "grp:rwin_toggle,grp:alt_shift_toggle,lv3:switch,caps:escape";
+ xkb.extraLayouts.bg-custom = {
+ description = "Non-standard variant of the traditional Bulgarian phonetic keyboard, which replaces some characters with their English counterparts";
+ languages = [ "bg" ];
+ symbolsFile = ../packages/bg-custom;
+ };
+
+ # touchpad support
+ libinput = {
+ enable = true;
+ touchpad.naturalScrolling = true;
+ };
+ };
+}
diff --git a/modules/gui-apps.nix b/modules/gui-apps.nix
new file mode 100644
index 0000000..7817860
--- /dev/null
+++ b/modules/gui-apps.nix
@@ -0,0 +1,54 @@
+{ pkgs, ... }:
+let
+ tex = (pkgs.texlive.combine {
+ inherit (pkgs.texlive) scheme-medium
+ babel-bulgarian cyrillic cancel enumitem;
+ });
+in {
+ environment.systemPackages = with pkgs; [
+ terminator
+ obs-studio qbittorrent speedcrunch
+ rtl-sdr gqrx sdrangel xed-editor
+ devilspie2 sxhkd
+ glava
+ # Settings and backup tools
+ feh xterm arandr pavucontrol blueberry piper
+ # Tray
+ copyq flameshot barrier redshift
+ # File openers/players
+ audacious mpv libreoffice
+ # File/image/audio editors
+ gimp inkscape texmaker tex krita ardour
+ # Web (app) clients
+ brave bitwarden nextcloud-client thunderbird birdtray
+ # System
+ peek gparted
+ # Virtualization
+ virt-manager libvirt qemu_kvm kvmtool qemu_full
+ ];
+
+ programs.firefox.enable = true;
+
+ # libvirt
+ virtualisation.libvirtd.enable = true;
+
+ # docker
+ virtualisation.docker.enable = true;
+
+ # rtl-sdr
+
+ systemd.user.services = {
+ devilspie2 = {
+ description = "devilspie2 runner";
+ wantedBy = [ "graphical-session.target" ];
+ wants = [ "graphical-session.target" ];
+ after = [ "graphical-session.target" ];
+ serviceConfig = {
+ ExecStart = "${pkgs.devilspie2}/bin/devilspie2";
+ Restart = "on-failure";
+ RestartSec = 1;
+ TimeoutStopSec = 10;
+ };
+ };
+ };
+}
diff --git a/modules/keyboard.nix b/modules/keyboard.nix
new file mode 100644
index 0000000..9dcc502
--- /dev/null
+++ b/modules/keyboard.nix
@@ -0,0 +1,9 @@
+{ pkgs, ... }: {
+ environment.systemPackages = with pkgs; [
+ via qmk
+ ];
+ services.udev.packages = with pkgs; [
+ via qmk
+ ];
+ hardware.keyboard.qmk.enable = true;
+}
diff --git a/modules/laptop_control.nix b/modules/laptop_control.nix
new file mode 100644
index 0000000..95de027
--- /dev/null
+++ b/modules/laptop_control.nix
@@ -0,0 +1,13 @@
+{ pkgs, ... }: {
+ environment.systemPackages = with pkgs; [
+ # Power
+ powertop upower acpid tlp
+ # Other
+ brightnessctl libinput-gestures epkowa
+ ];
+
+ services = {
+ upower.enable = true;
+ tlp.enable = true;
+ };
+}
diff --git a/modules/openbox-de.nix b/modules/openbox-de.nix
new file mode 100644
index 0000000..8102d6b
--- /dev/null
+++ b/modules/openbox-de.nix
@@ -0,0 +1,98 @@
+{ pkgs, ... }: {
+ environment.systemPackages = with pkgs; [
+ # Essential libs
+ dbus cairo libnotify gtk3 yad gnome.zenity gnome.gvfs gmtp at-spi2-atk
+ # Main apps and their config apps
+ # window manager, compositor, taskbar, notifications, app menu, lockscreen, session manager
+ openbox lxappearance obconf picom nixpkgs-2305.tint2 dunst jgmenu i3lock-color lightdm lightdm-gtk-greeter
+ # General X11 tools
+ lxqt.lxqt-policykit xorg.xev xfontsel xorg.xmodmap xorg.xwininfo xorg.xprop clipnotify xdotool xautolock xcape xorg.setxkbmap xkbmon xorg.xhost xclip wmctrl
+ menu-cache
+ # Tray
+ libappindicator networkmanagerapplet pnmixer
+ # File openers
+ evince gnome.eog gnome.file-roller cinnamon.nemo-with-extensions gnome.seahorse
+ # System
+ gnome.gnome-system-monitor udisks gnome.gnome-disk-utility baobab gnome.simple-scan
+ # Theme
+ nixpkgs-mint.cinnamon.mint-themes nixpkgs-mint.cinnamon.mint-y-icons oreo-black-bordered-cursor
+ openbox-theme-collections openbox-blocks-dark
+
+ xdg-desktop-portal-gtk xdg-desktop-portal-xapp
+ ];
+
+ security.polkit.enable = true;
+
+ xdg.portal = {
+ enable = true;
+ configPackages = with pkgs; [ xdg-desktop-portal-gtk xdg-desktop-portal-xapp ];
+ config.common = {
+ default = [ "gtk" "xapp" ];
+ "org.freedesktop.impl.portal.Screenshot" = [ "xapp" ];
+ };
+ };
+
+ programs = {
+ dconf.enable = true;
+ gnome-disks.enable = true;
+ };
+
+ services = {
+ dbus.packages = with pkgs; [ gnome2.GConf ];
+ udev.packages = with pkgs; [ gnome.gnome-settings-daemon ];
+
+ udisks2.enable = true; # gnome-disks disk access
+ gnome.gnome-keyring.enable = true;
+ gvfs.enable = true; # MTP (for nemo)
+
+ logind.extraConfig = ''
+ InhibitDelayMaxSec=1
+ HoldoffTimeoutSec=1s
+ HandlePowerKey=poweroff'';
+ };
+
+ services.xserver = {
+ enable = true;
+ # Window manager
+ windowManager.openbox.enable = true;
+
+ xautolock = {
+ enable = true;
+ time = 15;
+ locker = "/home/kamen/.a/sys/lock.sh";
+ extraOptions = [ "-detectsleep" "-secure" ];
+ };
+ };
+
+ systemd.services = {
+ lockscreen = {
+ wantedBy = [ "sleep.target" ];
+ before = [ "suspend.target" ];
+ serviceConfig = {
+ User = "kamen";
+ Environment = [ "DISPLAY=:0" "PATH=/run/current-system/sw/bin" "DBUS_SESSION_BUS_ADDRESS=\"unix:path=/run/user/1000/bus\"" ];
+ ExecStart = "/home/kamen/.a/sys/lock.sh";
+ };
+ };
+ };
+
+ systemd.user.services = {
+ lxqt-policykit = {
+ description = "lxqt-policykit runner";
+ wantedBy = [ "graphical-session.target" ];
+ wants = [ "graphical-session.target" ];
+ after = [ "graphical-session.target" ];
+ serviceConfig = {
+ Type = "simple";
+ ExecStart = "${pkgs.lxqt.lxqt-policykit}/bin/lxqt-policykit-agent";
+ Restart = "on-failure";
+ RestartSec = 1;
+ TimeoutStopSec = 10;
+ };
+ };
+
+ # This is kinda gross, because the xautolock service is already defined and configured
+ # inside services.xserver.xautolock, but it's the only way I know
+ xautolock.serviceConfig.Environment = [ "DISPLAY=:0" "PATH=/run/current-system/sw/bin" ];
+ };
+}
diff --git a/modules/web-server.nix b/modules/web-server.nix
new file mode 100644
index 0000000..f8a13b5
--- /dev/null
+++ b/modules/web-server.nix
@@ -0,0 +1,15 @@
+{ pkgs, ... }: {
+ environment.systemPackages = with pkgs; [ apacheHttpd ];
+
+ services.httpd = {
+ enable = true;
+
+ virtualHosts = {
+ syndamiadotcom-local = {
+ hostName = "synd.local";
+ listen = [ { port = 80; } ];
+ documentRoot = "/home/kamen/Programming/GitLab-repos/syndamiadotcom/website";
+ };
+ };
+ };
+}
diff --git a/packages/default.nix b/packages/default.nix
deleted file mode 100644
index 7b036f2..0000000
--- a/packages/default.nix
+++ /dev/null
@@ -1,297 +0,0 @@
-{
- cli-apps = { pkgs, ... }: {
- environment.systemPackages = with pkgs; [
- # Hardware managing apps
- pipewire libinput lm_sensors lshw usbutils chrony iotop bluez efibootmgr libva-utils
- parted dosfstools mtpfs ntfs3g squashfsTools
- # Network
- wget git rsync inetutils vnstat yt-dlp
- # Working with files
- vim-full inotify-tools lsof tree xmlstarlet
- # General usage
- zsh dash htop rlwrap bc ddrescue cron
- # Working with files
- ffmpeg img2pdf pdftk imagemagick pngcrush jpegoptim optipng gd kid3 pandoc libisoburn mediainfo
- # Archive formats
- p7zip dpkg cdrtools zip unzip rar unrar rpm
- # Misc
- neofetch nixpkgs-2305.exa moc lazygit aspell
- ];
-
- # zsh
- programs.zsh.enable = true;
- environment.shells = with pkgs; [ zsh ];
-
- # bluez
-
- programs = {
- mtr.enable = true;
- gnupg.agent = {
- enable = true;
- enableSSHSupport = true;
- };
- };
- };
-
-
-
- gui-apps = { pkgs, ... }:
- let
- tex = (pkgs.texlive.combine {
- inherit (pkgs.texlive) scheme-medium
- babel-bulgarian cyrillic cancel enumitem;
- });
- in {
- environment.systemPackages = with pkgs; [
- terminator
- obs-studio qbittorrent speedcrunch
- rtl-sdr gqrx sdrangel xed-editor
- devilspie2 sxhkd
- glava
- # Settings and backup tools
- feh xterm arandr pavucontrol blueberry piper
- # Tray
- copyq flameshot barrier redshift
- # File openers/players
- audacious mpv libreoffice
- # File/image/audio editors
- gimp inkscape texmaker tex krita ardour
- # Web (app) clients
- brave bitwarden nextcloud-client thunderbird birdtray
- # System
- peek gparted
- # Virtualization
- virt-manager libvirt qemu_kvm kvmtool qemu_full
- ];
-
- programs.firefox.enable = true;
-
- # libvirt
- virtualisation.libvirtd.enable = true;
-
- # docker
- virtualisation.docker.enable = true;
-
- # rtl-sdr
-
- systemd.user.services = {
- devilspie2 = {
- description = "devilspie2 runner";
- wantedBy = [ "graphical-session.target" ];
- wants = [ "graphical-session.target" ];
- after = [ "graphical-session.target" ];
- serviceConfig = {
- ExecStart = "${pkgs.devilspie2}/bin/devilspie2";
- Restart = "on-failure";
- RestartSec = 1;
- TimeoutStopSec = 10;
- };
- };
- };
- };
-
-
-
- dev = { pkgs, ... }: {
- environment.systemPackages = with pkgs; [
- gnumake
- lowdown wakatime cloc go php fontforge ruby csslint
- # C/C++
- clang clang-tools glibc gcc gdb valgrind pugixml cmake libusb libusb-compat-0_1 meson
- # .NET
- dotnet-sdk mono
- # Python
- python3Minimal
- # Android
- android-tools heimdall
- # Networking
- wireshark gns3-gui gns3-server dynamips
- # awk
- gawk mawk nawk
- # DB
- mysql sqlite sqlitebrowser flyway
- # Functional
- racket ghc sbcl
- # Compilers
- flex bison
- ];
- };
-
-
-
- web-server = { pkgs, ... }: {
- environment.systemPackages = with pkgs; [ apacheHttpd ];
-
- services.httpd = {
- enable = true;
-
- virtualHosts = {
- syndamiadotcom-local = {
- hostName = "synd.local";
- listen = [ { port = 80; } ];
- documentRoot = "/home/kamen/Programming/GitLab-repos/syndamiadotcom/website";
- };
- };
- };
- };
-
-
-
- laptop_control = { pkgs, ... }: {
- environment.systemPackages = with pkgs; [
- # Power
- powertop upower acpid tlp
- # Other
- brightnessctl libinput-gestures epkowa
- ];
-
- services = {
- upower.enable = true;
- tlp.enable = true;
- };
- };
-
-
-
- desktop_archiving = { pkgs, ... }: {
- environment.systemPackages = with pkgs; [
- timeshift
- # k3s
- ];
-
- networking.firewall = {
- allowedTCPPorts = [ 6443 ];
- };
-
- services.k3s = {
- enable = false;
- role = "server";
- };
- };
-
-
-
- openbox-de = { pkgs, ... }: {
- environment.systemPackages = with pkgs; [
- # Essential libs
- dbus cairo libnotify gtk3 yad gnome.zenity gnome.gvfs gmtp at-spi2-atk
- # Main apps and their config apps
- # window manager, compositor, taskbar, notifications, app menu, lockscreen, session manager
- openbox lxappearance obconf picom nixpkgs-2305.tint2 dunst jgmenu i3lock-color lightdm lightdm-gtk-greeter
- # General X11 tools
- lxqt.lxqt-policykit xorg.xev xfontsel xorg.xmodmap xorg.xwininfo xorg.xprop clipnotify xdotool xautolock xcape xorg.setxkbmap xkbmon xorg.xhost xclip wmctrl
- menu-cache
- # Tray
- libappindicator networkmanagerapplet pnmixer
- # File openers
- evince gnome.eog gnome.file-roller cinnamon.nemo-with-extensions gnome.seahorse
- # System
- gnome.gnome-system-monitor udisks gnome.gnome-disk-utility baobab gnome.simple-scan
- # Theme
- nixpkgs-mint.cinnamon.mint-themes nixpkgs-mint.cinnamon.mint-y-icons oreo-black-bordered-cursor
- openbox-theme-collections openbox-blocks-dark
- ];
-
- security.polkit.enable = true;
-
- programs = {
- dconf.enable = true;
- gnome-disks.enable = true;
- };
-
- services = {
- dbus.packages = with pkgs; [ gnome2.GConf ];
- udev.packages = with pkgs; [ gnome.gnome-settings-daemon ];
-
- udisks2.enable = true; # gnome-disks disk access
- gnome.gnome-keyring.enable = true;
- gvfs.enable = true; # MTP (for nemo)
-
- logind.extraConfig = ''
- InhibitDelayMaxSec=1
- HoldoffTimeoutSec=1s
- HandlePowerKey=poweroff'';
- };
-
- services.xserver = {
- enable = true;
- # Window manager
- windowManager.openbox.enable = true;
-
- xautolock = {
- enable = true;
- time = 15;
- locker = "/home/kamen/.a/sys/lock.sh";
- extraOptions = [ "-detectsleep" "-secure" ];
- };
- };
-
- systemd.services = {
- lockscreen = {
- wantedBy = [ "sleep.target" ];
- before = [ "suspend.target" ];
- serviceConfig = {
- User = "kamen";
- Environment = [ "DISPLAY=:0" "PATH=/run/current-system/sw/bin" "DBUS_SESSION_BUS_ADDRESS=\"unix:path=/run/user/1000/bus\"" ];
- ExecStart = "/home/kamen/.a/sys/lock.sh";
- };
- };
- };
-
- systemd.user.services = {
- lxqt-policykit = {
- description = "lxqt-policykit runner";
- wantedBy = [ "graphical-session.target" ];
- wants = [ "graphical-session.target" ];
- after = [ "graphical-session.target" ];
- serviceConfig = {
- Type = "simple";
- ExecStart = "${pkgs.lxqt.lxqt-policykit}/bin/lxqt-policykit-agent";
- Restart = "on-failure";
- RestartSec = 1;
- TimeoutStopSec = 10;
- };
- };
-
- # This is kinda gross, because the xautolock service is already defined and configured
- # inside services.xserver.xautolock, but it's the only way I know
- xautolock.serviceConfig.Environment = [ "DISPLAY=:0" "PATH=/run/current-system/sw/bin" ];
- };
- };
-
-
-
- general-settings = { pkgs, ... }: {
- nixpkgs.config.allowUnfree = true;
-
- services.xserver = {
- # xkbmap
- layout = "us,bg-custom";
- xkbVariant = ",phonetic-nonstandard";
- xkbOptions = "grp:rwin_toggle,grp:alt_shift_toggle,lv3:switch,caps:escape";
- xkb.extraLayouts.bg-custom = {
- description = "Non-standard variant of the traditional Bulgarian phonetic keyboard, which replaces some characters with their English counterparts";
- languages = [ "bg" ];
- symbolsFile = ./bg-custom;
- };
-
- # touchpad support
- libinput = {
- enable = true;
- touchpad.naturalScrolling = true;
- };
- };
- };
-
-
-
- fonts = { pkgs, ... }: {
- fonts.packages = with pkgs; [
- meslolgs-nerdfont
- # Note to self: DO NOT INSTALL ADOBE FONTS!
- corefonts vistafonts liberation_ttf helvetica-neue-lt-std noto-fonts noto-fonts-emoji cm_unicode symbola
- # CJK
- noto-fonts-cjk arphic-ukai arphic-uming takao wqy_microhei wqy_zenhei
- ];
- };
-}