From 13ceb5f40cb230f178ac05ca15933fef2e6cc02f Mon Sep 17 00:00:00 2001 From: Syndamia Date: Sun, 28 Dec 2025 17:48:33 +0200 Subject: feat(modules)!: Complete reorganisation and renaming of module groups --- modules/personal/battery.nix | 27 ----- modules/personal/cli-essential.nix | 21 ---- modules/personal/cli-linux.nix | 90 ++++++++++++++++ modules/personal/cli-other.nix | 14 +++ modules/personal/cli-posix.nix | 10 ++ modules/personal/cli-powerful.nix | 19 ---- modules/personal/de-openbox-syndamia.nix | 145 ++++++++++++++++++++++++++ modules/personal/default.nix | 6 +- modules/personal/desktop-basics.nix | 38 +++++++ modules/personal/desktop-media-creation.nix | 8 ++ modules/personal/desktop-x11.nix | 68 ++++++++++++ modules/personal/dev-android.nix | 6 ++ modules/personal/dev-c.nix | 27 +++++ modules/personal/dev-cli.nix | 25 ----- modules/personal/dev-db.nix | 12 +++ modules/personal/dev-gui.nix | 8 -- modules/personal/dev-kubernetes.nix | 10 ++ modules/personal/dev-netsim.nix | 7 ++ modules/personal/dev-oop.nix | 7 ++ modules/personal/dev-other.nix | 23 +++++ modules/personal/dev-tex.nix | 13 +++ modules/personal/dev.nix | 11 ++ modules/personal/fonts.nix | 4 + modules/personal/gui-essential.nix | 42 -------- modules/personal/gui-powerful.nix | 8 -- modules/personal/hardware-general.nix | 60 ----------- modules/personal/hardware-laptop.nix | 17 --- modules/personal/hw-audio.nix | 21 ++++ modules/personal/hw-battery.nix | 30 ++++++ modules/personal/hw-bluetooth.nix | 7 ++ modules/personal/hw-brightness.nix | 5 + modules/personal/hw-printers-scanners.nix | 19 ++++ modules/personal/hw-rtl-sdr.nix | 154 ++++++++++++++++++++++++++++ modules/personal/hw-touchpad.nix | 11 ++ modules/personal/hw-video-accel.nix | 15 +++ modules/personal/hw-wacom.nix | 5 + modules/personal/kubernetes.nix | 10 -- modules/personal/openbox-de.nix | 100 ------------------ modules/personal/rtl-sdr.nix | 150 --------------------------- modules/personal/tex.nix | 12 --- modules/personal/users-standard.nix | 3 - modules/personal/virtualization.nix | 6 +- modules/personal/work.nix | 2 - modules/personal/xserver.nix | 13 --- modules/server/cli-essential.nix | 21 ---- modules/server/cli-linux.nix | 59 +++++++++++ modules/server/cli-posix.nix | 10 ++ 47 files changed, 835 insertions(+), 544 deletions(-) delete mode 100644 modules/personal/battery.nix delete mode 100644 modules/personal/cli-essential.nix create mode 100644 modules/personal/cli-linux.nix create mode 100644 modules/personal/cli-other.nix create mode 100644 modules/personal/cli-posix.nix delete mode 100644 modules/personal/cli-powerful.nix create mode 100644 modules/personal/de-openbox-syndamia.nix create mode 100644 modules/personal/desktop-basics.nix create mode 100644 modules/personal/desktop-media-creation.nix create mode 100644 modules/personal/desktop-x11.nix create mode 100644 modules/personal/dev-android.nix create mode 100644 modules/personal/dev-c.nix delete mode 100644 modules/personal/dev-cli.nix create mode 100644 modules/personal/dev-db.nix delete mode 100644 modules/personal/dev-gui.nix create mode 100644 modules/personal/dev-kubernetes.nix create mode 100644 modules/personal/dev-netsim.nix create mode 100644 modules/personal/dev-oop.nix create mode 100644 modules/personal/dev-other.nix create mode 100644 modules/personal/dev-tex.nix create mode 100644 modules/personal/dev.nix delete mode 100644 modules/personal/gui-essential.nix delete mode 100644 modules/personal/gui-powerful.nix delete mode 100644 modules/personal/hardware-general.nix delete mode 100644 modules/personal/hardware-laptop.nix create mode 100644 modules/personal/hw-audio.nix create mode 100644 modules/personal/hw-battery.nix create mode 100644 modules/personal/hw-bluetooth.nix create mode 100644 modules/personal/hw-brightness.nix create mode 100644 modules/personal/hw-printers-scanners.nix create mode 100644 modules/personal/hw-rtl-sdr.nix create mode 100644 modules/personal/hw-touchpad.nix create mode 100644 modules/personal/hw-video-accel.nix create mode 100644 modules/personal/hw-wacom.nix delete mode 100644 modules/personal/kubernetes.nix delete mode 100644 modules/personal/openbox-de.nix delete mode 100644 modules/personal/rtl-sdr.nix delete mode 100644 modules/personal/tex.nix delete mode 100644 modules/personal/work.nix delete mode 100644 modules/personal/xserver.nix delete mode 100644 modules/server/cli-essential.nix create mode 100644 modules/server/cli-linux.nix create mode 100644 modules/server/cli-posix.nix (limited to 'modules') diff --git a/modules/personal/battery.nix b/modules/personal/battery.nix deleted file mode 100644 index 8c6af72..0000000 --- a/modules/personal/battery.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - powertop upower acpid tlp - ]; - - services = { - upower.enable = true; - tlp = { - enable = true; - settings = { - START_CHARGE_THRESH_BAT0 = 75; - STOP_CHARGE_THRESH_BAT0 = 85; - - START_CHARGE_THRESH_BAT1 = 75; - STOP_CHARGE_THRESH_BAT1 = 85; - - MEM_SLEEP_ON_AC = "deep"; - MEM_SLEEP_ON_BAT = "deep"; - - CPU_SCALING_GOVERNOR_ON_AC = "performance"; - CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; - CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; - CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; - }; - }; - }; -} diff --git a/modules/personal/cli-essential.nix b/modules/personal/cli-essential.nix deleted file mode 100644 index 5491ac3..0000000 --- a/modules/personal/cli-essential.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - dash htop rlwrap bc - # Hardware - lm_sensors lshw - # Network - wget git rsync inetutils - # Files - vim-full nnn - # Archive formats - gnutar p7zip zip unzip rar unrar - ]; - - programs = { - gnupg.agent = { - enable = true; - enableSSHSupport = true; - pinentryPackage = pkgs.pinentry-all; - }; - }; -} diff --git a/modules/personal/cli-linux.nix b/modules/personal/cli-linux.nix new file mode 100644 index 0000000..0600bf0 --- /dev/null +++ b/modules/personal/cli-linux.nix @@ -0,0 +1,90 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + bash + git + rlwrap # readline processing in non-readline cli apps + chrony # set system time from the internet + + #== Editor/Player/File manager ==# + nnn + vim-full + moc # music on console + + #== Hardware ==# + lshw + efibootmgr + screenfetch # better neofetch + lm_sensors # provides sensors, sensors-detects, isadump, ... + ddrescue # data recovery tool + usbutils # lsusb, ... + + #== Processes ==# + htop + lsof # lists open files, mostly under /proc + iotop # IO utilisation per process + + #== Network ==# + dnsutils + netcat + curl + ipfetch # neofetch but for your IP + vnstat # network statistics + inetutils # ftp, hostname, ifconfig, ping, telnet, traceroute, rexec, rcp, ... + wget # download http/https/ftp files + rsync # file transfering + + #== CD/DVD/BluRay ==# + cdrtools # isodump, isoinfo, readcd, ... + libisoburn # disc filesystem editor + + #== HDD/SSD ==# + udisks # access and manipulate storage devices; udisksctl, ... + + #== Package manager ==# + rpm dpkg + + #== File systems ==# + parted # partition editor + dosfstools # dosfsck, mkfs.fat, mkfs.dos, ... + mtpfs # media transfering file system management + ntfs3g # NTFS driver + squashfsTools # create and unpack squashfs; used in LiveCDs, AppImages, snaps, ... + + #== Media files ==# + img2pdf + imagemagick # image editor + exiftool # EXIF metadata editor + gd # image creation library + pngcrush # png optimizer + optipng # png optimizer + jpegoptim # jpeg optimizer + mediainfo # tag info + ffmpeg # record, convert, stream audio and video + kid3 # audio tag editor + + #== PDF files ==# + pdftk # pdf editor + poppler-utils # PDF rendering; pdftotext, ... + + #== Archive files ==# + gnutar + p7zip + zip unzip + rar unrar + + #== Other files ==# + inotify-tools # inotifywait, inotifywatch, ... + xmlstarlet # edit and query xml + pandoc # document converter + aspell # spelling program + ]; + + programs = { + mtr.enable = true; + gnupg.agent = { + enable = true; + enableSSHSupport = true; + pinentryPackage = pkgs.pinentry-all; + }; + }; +} diff --git a/modules/personal/cli-other.nix b/modules/personal/cli-other.nix new file mode 100644 index 0000000..359f579 --- /dev/null +++ b/modules/personal/cli-other.nix @@ -0,0 +1,14 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + yt-dlp + nixpkgs-2305.exa + + #== POSIX ==# + gawk_mpfr mawk nawk + dash yash + + #== Markup ==# + lowdown + highlight + ]; +} diff --git a/modules/personal/cli-posix.nix b/modules/personal/cli-posix.nix new file mode 100644 index 0000000..7a639b3 --- /dev/null +++ b/modules/personal/cli-posix.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + # Multi-tool packages + busybox util-linux + # Specific tools + bc dash nawk ed cron tree + # (GNU) software development tools + gcc gnumake flex bison + ]; +} diff --git a/modules/personal/cli-powerful.nix b/modules/personal/cli-powerful.nix deleted file mode 100644 index 7b237ff..0000000 --- a/modules/personal/cli-powerful.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - neovim cron - yash - # Hardware - usbutils chrony iotop efibootmgr libva-utils - # File systems - parted dosfstools mtpfs ntfs3g squashfsTools - # Network - vnstat yt-dlp dnsutils - # Working with files - neovim inotify-tools lsof tree xmlstarlet - # Working with (media) files - ffmpeg img2pdf pdftk imagemagick pngcrush jpegoptim optipng gd kid3 pandoc libisoburn mediainfo exiftool - cdrtools rpm dpkg - # Misc - neofetch nixpkgs-2305.exa moc lazygit aspell ddrescue - ]; -} diff --git a/modules/personal/de-openbox-syndamia.nix b/modules/personal/de-openbox-syndamia.nix new file mode 100644 index 0000000..6d61ed0 --- /dev/null +++ b/modules/personal/de-openbox-syndamia.nix @@ -0,0 +1,145 @@ +{ pkgs, config, ... }: { + environment.systemPackages = with pkgs; [ + #== Essential libraries ==# + dbus + at-spi2-atk + libnotify + gtk3 + yad # GUI dialogs in shell scripts + cairo # 2D graphics + zenity # display dialogs from cli + gnome.gvfs # virtual filesystem + + #== Primary applications ==# + openbox lxappearance obconf # window manager and tools + picom # compositor + nixpkgs-2305.tint2 # taskbar + dunst dunst-applet # notifications + jgmenu # app menu + i3lock-color # lockscreen + lightdm lightdm-gtk-greeter # session manager + + #== X11 tools ==# + lxqt.lxqt-policykit + xautolock # lock on inactivity + xkbmon # keyboard language/layout monitor + + #== System tools ==# + gnome-disk-utility + nixpkgs-mint.gnome.gnome-system-monitor # system monitor + nixpkgs-mint.gnome.baobab # disk usage analyzer + nixpkgs-2305.simple-scan # document scanner + + #== Freedesktop ==# + xdg-desktop-portal-gtk + xdg-desktop-portal-xapp + menu-cache # read menu files + + #== Tray applications ==# + libappindicator + pnmixer # audio control + + #== File viewers/editors ==# + mate.atril # PDF/PostScript/DJVU/... + mate.eom # PNG/JPEG/... + mate.engrampa # archives + nemo-with-extensions # file manager + seahorse # GnomeKeyring manager + + #== Themes ==# + nixpkgs-mint.cinnamon.mint-themes + nixpkgs-mint.cinnamon.mint-y-icons + oreo-black-bordered-cursor + openbox-theme-collections + openbox-blocks-dark + ] ++ + (if config.hardware.bluetooth.enable then + [ + blueberry # bluetooth configuration + ] + else []) ++ + (if config.networking.networkmanager.enable then + [ + networkmanagerapplet + ] + else []); + + security = { + polkit.enable = true; + pam.services.i3lock.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-settings-daemon ]; + + udisks2.enable = true; # gnome-disks disk access + gnome.gnome-keyring.enable = true; + gvfs.enable = true; # MTP (for nemo) + + logind.settings.Login = { + InhibitDelayMaxSec = 1; + HoldoffTimeoutSec = "1s"; + HandlePowerKey = "poweroff"; + }; + }; + + services.xserver = { + enable = true; + # Window manager + windowManager.openbox.enable = true; + + xautolock = { + enable = true; + time = 15; + locker = "/home/kamen/.scripts/lock"; + 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/.scripts/lock suspend"; + }; + }; + }; + + 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/personal/default.nix b/modules/personal/default.nix index 9db866c..6093d5a 100644 --- a/modules/personal/default.nix +++ b/modules/personal/default.nix @@ -35,19 +35,15 @@ # Timezone and locale # - # Set your time zone. time.timeZone = "Europe/Sofia"; - # Select internationalisation properties. i18n.defaultLocale = "en_US.UTF-8"; # # Networking # - # Pick only one of the below networking options. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. - + networking.networkmanager.enable = true; networking.firewall.allowedTCPPorts = [ 20 ]; # zeroconf networking diff --git a/modules/personal/desktop-basics.nix b/modules/personal/desktop-basics.nix new file mode 100644 index 0000000..a40338f --- /dev/null +++ b/modules/personal/desktop-basics.nix @@ -0,0 +1,38 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + speedcrunch + copyq + nixpkgs-2305.barrier + redshift + + #== Recording ==# + obs-studio + flameshot + + #== File viewer/player/editor ==# + keepassxc + audacious + mpv + libreoffice + gimp + + #== Network-connected ==# + firefox + ungoogled-chromium + wireshark + nixpkgs-2305.bitwarden + nextcloud-client + thunderbird + qbittorrent + ]; + + nixpkgs.config.permittedInsecurePackages = [ + "qbittorrent-4.6.4" + "electron-36.9.5" + ]; + + programs = { + firefox.enable = true; + chromium.enable = true; + }; +} diff --git a/modules/personal/desktop-media-creation.nix b/modules/personal/desktop-media-creation.nix new file mode 100644 index 0000000..0c6c945 --- /dev/null +++ b/modules/personal/desktop-media-creation.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + inkscape + krita + ardour + blender-hip + ]; +} diff --git a/modules/personal/desktop-x11.nix b/modules/personal/desktop-x11.nix new file mode 100644 index 0000000..923e1b9 --- /dev/null +++ b/modules/personal/desktop-x11.nix @@ -0,0 +1,68 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + devilspie2 + find-cursor + xed-editor + sxhkd # hotkeys + peek # simple video recorder + birdtray # thunderbird on the tray + pdfpc # PDF multi-monitor presenting + glava # video visualiser + + #== X11 tools ==# + xorg.xev # print events in terminal + xorg.xhost # manage host/user names, allowed xserver access + xclip # access X11 clipboard from command-line + clipnotify # notify on text selection events + xdotool # simulate keyboard & mouse activity + xorg.xmodmap # modify keymaps + xorg.setxkbmap # configure keymaps + xcape # configure modifier keys + xfontsel # browse and preview fonts + xorg.xprop # display and set window and font properties + xorg.xwininfo # print information about a window + wmctrl # manage windows + + #== Terminal emulators ==# + terminator + xterm + + #== Configuration ==# + feh + arandr + pavucontrol + piper + + #== Files and filesystems ==# + gparted + qdirstat + timeshift + ]; + + 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; + }; + }; + }; + + services.xserver = { + # xkbmap + xkb.layout = "us,bg-custom"; + xkb.variant = ",phonetic-nonstandard"; + xkb.options = "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; + }; + }; +} diff --git a/modules/personal/dev-android.nix b/modules/personal/dev-android.nix new file mode 100644 index 0000000..add8894 --- /dev/null +++ b/modules/personal/dev-android.nix @@ -0,0 +1,6 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + android-tools # adb, fastboot, ... + heimdall + ]; +} diff --git a/modules/personal/dev-c.nix b/modules/personal/dev-c.nix new file mode 100644 index 0000000..f20c398 --- /dev/null +++ b/modules/personal/dev-c.nix @@ -0,0 +1,27 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + #== Build tools ==# + meson + cmake # build system generator + + #== clang ==# + clang + clang-tools # C++ cli tools + libclang # clang C library + + #== gcc ==# + gcc + gdb # GNU debugger + valgrind # debugger and (memory) profiler + glibc # GNU C library + + #== Code generators ==# + flex + bison + + #== Libraries ==# + libusb1 + libusb-compat-0_1 + pugixml # XML parser for C++ + ]; +} diff --git a/modules/personal/dev-cli.nix b/modules/personal/dev-cli.nix deleted file mode 100644 index d13fc8e..0000000 --- a/modules/personal/dev-cli.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - gnumake just - lowdown wakatime-cli cloc go php fontforge ruby highlight ripgrep - # C/C++ - clang clang-tools libclang glibc gcc gdb valgrind pugixml cmake libusb1 libusb-compat-0_1 meson - # .NET - dotnet-sdk mono - # Python - python3Minimal - # Android - android-tools heimdall - # awk - gawk_mpfr mawk nawk - # DB - sqlite sqlitebrowser flyway - # Functional - racket ghc sbcl - # Compilers - flex bison - ]; - - services.mysql.enable = false; - services.mysql.package = pkgs.mysql; -} diff --git a/modules/personal/dev-db.nix b/modules/personal/dev-db.nix new file mode 100644 index 0000000..776e346 --- /dev/null +++ b/modules/personal/dev-db.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + sqlite + sqlitebrowser + flyway + ]; + + services.mysql = { + enable = false; + package = pkgs.mysql; + }; +} diff --git a/modules/personal/dev-gui.nix b/modules/personal/dev-gui.nix deleted file mode 100644 index fd066f3..0000000 --- a/modules/personal/dev-gui.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - # Networking - gns3-gui gns3-server dynamips - # Other - rstudio - ]; -} diff --git a/modules/personal/dev-kubernetes.nix b/modules/personal/dev-kubernetes.nix new file mode 100644 index 0000000..dfac020 --- /dev/null +++ b/modules/personal/dev-kubernetes.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + minikube + ]; + + services.k3s = { + enable = true; + extraFlags = "--kubelet-arg='eviction-hard=nodefs.available<1%,imagefs.available<1%,nodefs.inodesFree<1%' --write-kubeconfig-mode=644"; + }; +} diff --git a/modules/personal/dev-netsim.nix b/modules/personal/dev-netsim.nix new file mode 100644 index 0000000..36b7b77 --- /dev/null +++ b/modules/personal/dev-netsim.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + gns3-gui + gns3-server + dynamips + ]; +} diff --git a/modules/personal/dev-oop.nix b/modules/personal/dev-oop.nix new file mode 100644 index 0000000..73f638b --- /dev/null +++ b/modules/personal/dev-oop.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + #== .NET ==# + dotnet-sdk + mono + ]; +} diff --git a/modules/personal/dev-other.nix b/modules/personal/dev-other.nix new file mode 100644 index 0000000..44539ce --- /dev/null +++ b/modules/personal/dev-other.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + #== Python ==# + python3Minimal + + #== Functional ==# + racket + sbcl # Steel Bank common lisp + ghc # Glasgow haskell compiler + + #== Go ==# + go + + #== PHP ==# + php + + #== Ruby ==# + ruby + + #== R ==# + rstudio + ]; +} diff --git a/modules/personal/dev-tex.nix b/modules/personal/dev-tex.nix new file mode 100644 index 0000000..9336a14 --- /dev/null +++ b/modules/personal/dev-tex.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: +let + tex = (pkgs.texlive.combine { + inherit (pkgs.texlive) scheme-medium + babel-bulgarian cyrillic cancel enumitem; + }); +in { + environment.systemPackages = with pkgs; [ + texmaker + tex + ]; +} + diff --git a/modules/personal/dev.nix b/modules/personal/dev.nix new file mode 100644 index 0000000..587ba93 --- /dev/null +++ b/modules/personal/dev.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + neovim + git + lazygit + wakatime-cli + cloc + ripgrep + just + ]; +} diff --git a/modules/personal/fonts.nix b/modules/personal/fonts.nix index b0790d9..97aa6ad 100644 --- a/modules/personal/fonts.nix +++ b/modules/personal/fonts.nix @@ -1,4 +1,8 @@ { pkgs, ... }: { + environment.systemPackages = with pkgs; [ + fontforge + ]; + fonts.packages = with pkgs; [ meslolgs-nerdfont # Note to self: DO NOT INSTALL ADOBE FONTS! diff --git a/modules/personal/gui-essential.nix b/modules/personal/gui-essential.nix deleted file mode 100644 index 6878463..0000000 --- a/modules/personal/gui-essential.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - devilspie2 sxhkd speedcrunch peek wireshark - obs-studio qbittorrent glava - keepassxc - find-cursor - # Terminals - terminator xterm - # Settings and backup tools - feh arandr pavucontrol blueberry piper - # Tray - copyq flameshot nixpkgs-2305.barrier redshift - # File openers/players - audacious mpv libreoffice - # File editors - gimp xed-editor - # Web (app) clients - brave nixpkgs-2305.bitwarden nextcloud-client thunderbird birdtray - ]; - - nixpkgs.config.permittedInsecurePackages = [ - "qbittorrent-4.6.4" - "electron-36.9.5" - ]; - - programs.firefox.enable = true; - - 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/personal/gui-powerful.nix b/modules/personal/gui-powerful.nix deleted file mode 100644 index c913a44..0000000 --- a/modules/personal/gui-powerful.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - # File/image/audio editors - inkscape krita ardour blender-hip - # System - gparted timeshift qdirstat - ]; -} diff --git a/modules/personal/hardware-general.nix b/modules/personal/hardware-general.nix deleted file mode 100644 index 9a5962d..0000000 --- a/modules/personal/hardware-general.nix +++ /dev/null @@ -1,60 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - pipewire bluez - ]; - - programs = { - mtr.enable = true; - }; - - # - # Graphics - # - - # https://nixos.wiki/wiki/Accelerated_Video_Playback - hardware.graphics = { - enable = true; - extraPackages = with pkgs; [ - libva-vdpau-driver - libvdpau-va-gl - ]; - }; - - # - # Sound - # - - # hardware.pulseaudio.enable = true; - - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; - services.dbus = { - enable = true; - packages = [ pkgs.dconf ]; - }; - - # - # Bluetooth - # - - hardware.bluetooth.enable = true; - - # - # Printers and scanners - # - - # Enable CUPS to print documents. - services.printing.enable = true; - hardware.sane.enable = true; - - # - # Other hardware - # - - hardware.rtl-sdr.enable = true; -} diff --git a/modules/personal/hardware-laptop.nix b/modules/personal/hardware-laptop.nix deleted file mode 100644 index 1e59258..0000000 --- a/modules/personal/hardware-laptop.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - brightnessctl - libinput libinput-gestures - epkowa - (epsonscan2.override { withNonFreePlugins = true; withGui = true; }) - pdfpc - ]; - - hardware.sane.extraBackends = [ (pkgs.epsonscan2.override { withNonFreePlugins = true; withGui = true; }) ]; - - # touchpad support - services.libinput = { - enable = true; - touchpad.naturalScrolling = true; - }; -} diff --git a/modules/personal/hw-audio.nix b/modules/personal/hw-audio.nix new file mode 100644 index 0000000..9fddd9b --- /dev/null +++ b/modules/personal/hw-audio.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + pipewire + ]; + + security.rtkit.enable = true; + + services = { + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + dbus = { + enable = true; + packages = [ pkgs.dconf ]; + }; + }; +} diff --git a/modules/personal/hw-battery.nix b/modules/personal/hw-battery.nix new file mode 100644 index 0000000..7d94f9a --- /dev/null +++ b/modules/personal/hw-battery.nix @@ -0,0 +1,30 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + powertop + upower + acpid + tlp + ]; + + services = { + upower.enable = true; + tlp = { + enable = true; + settings = { + START_CHARGE_THRESH_BAT0 = 75; + STOP_CHARGE_THRESH_BAT0 = 85; + + START_CHARGE_THRESH_BAT1 = 75; + STOP_CHARGE_THRESH_BAT1 = 85; + + MEM_SLEEP_ON_AC = "deep"; + MEM_SLEEP_ON_BAT = "deep"; + + CPU_SCALING_GOVERNOR_ON_AC = "performance"; + CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; + CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; + }; + }; + }; +} diff --git a/modules/personal/hw-bluetooth.nix b/modules/personal/hw-bluetooth.nix new file mode 100644 index 0000000..955db94 --- /dev/null +++ b/modules/personal/hw-bluetooth.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + bluez + ]; + + hardware.bluetooth.enable = true; +} diff --git a/modules/personal/hw-brightness.nix b/modules/personal/hw-brightness.nix new file mode 100644 index 0000000..18dc183 --- /dev/null +++ b/modules/personal/hw-brightness.nix @@ -0,0 +1,5 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + brightnessctl + ]; +} diff --git a/modules/personal/hw-printers-scanners.nix b/modules/personal/hw-printers-scanners.nix new file mode 100644 index 0000000..7e88752 --- /dev/null +++ b/modules/personal/hw-printers-scanners.nix @@ -0,0 +1,19 @@ +{ pkgs, ... }: let + epsonscan2_Unfree = pkgs.epsonscan2.override { + withNonFreePlugins = true; + withGui = true; + }; +in { + environment.systemPackages = with pkgs; [ + epkowa + epsonscan2_Unfree + ]; + + # Enable CUPS to print documents. + services.printing.enable = true; + + hardware.sane = { + enable = true; + extraBackends = [ epsonscan2_Unfree ]; + }; +} diff --git a/modules/personal/hw-rtl-sdr.nix b/modules/personal/hw-rtl-sdr.nix new file mode 100644 index 0000000..1b3b832 --- /dev/null +++ b/modules/personal/hw-rtl-sdr.nix @@ -0,0 +1,154 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + rtl-sdr + gqrx + sdrangel + ]; + + hardware.rtl-sdr.enable = true; + + services.udev.extraRules = '' +# +# Copyright 2012-2013 Osmocom rtl-sdr project +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# original RTL2832U vid/pid (hama nano, for example) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2832", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# RTL2832U OEM vid/pid, e.g. ezcap EzTV668 (E4000), Newsky TV28T (E4000/R820T) etc. +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# DigitalNow Quad DVB-T PCI-E card (4x FC0012?) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0413", ATTRS{idProduct}=="6680", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Leadtek WinFast DTV Dongle mini D (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0413", ATTRS{idProduct}=="6f0f", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Genius TVGo DVB-T03 USB dongle (Ver. B) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0458", ATTRS{idProduct}=="707f", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Terratec Cinergy T Stick Black (rev 1) (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00a9", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Terratec NOXON rev 1 (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b3", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Terratec Deutschlandradio DAB Stick (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b4", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Terratec NOXON DAB Stick - Radio Energy (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b5", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Terratec Media Broadcast DAB Stick (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b7", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Terratec BR DAB Stick (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b8", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Terratec WDR DAB Stick (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b9", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Terratec MuellerVerlag DAB Stick (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00c0", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Terratec Fraunhofer DAB Stick (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00c6", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Terratec Cinergy T Stick RC (Rev.3) (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00d3", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Terratec T Stick PLUS (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00d7", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Terratec NOXON rev 2 (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00e0", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# PixelView PV-DT235U(RN) (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1554", ATTRS{idProduct}=="5020", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Astrometa DVB-T/DVB-T2 (R828D) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="15f4", ATTRS{idProduct}=="0131", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# HanfTek DAB+FM+DVB-T +SUBSYSTEMS=="usb", ATTRS{idVendor}=="15f4", ATTRS{idProduct}=="0133", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Compro Videomate U620F (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0620", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Compro Videomate U650F (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0650", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Compro Videomate U680F (E4000) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0680", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# GIGABYTE GT-U7300 (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d393", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# DIKOM USB-DVBT HD +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d394", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Peak 102569AGPK (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d395", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# KWorld KW-UB450-T USB DVB-T Pico TV (TUA9001) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d397", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Zaapa ZT-MINDVBZP (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d398", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# SVEON STV20 DVB-T USB & FM (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d39d", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Twintech UT-40 (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3a4", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# ASUS U3100MINI_PLUS_V2 (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3a8", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# SVEON STV27 DVB-T USB & FM (FC0013) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3af", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# SVEON STV21 DVB-T USB & FM +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3b0", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Dexatek DK DVB-T Dongle (Logilink VG0002A) (FC2580) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1101", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Dexatek DK DVB-T Dongle (MSI DigiVox mini II V3.0) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1102", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Dexatek DK 5217 DVB-T Dongle (FC2580) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1103", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# MSI DigiVox Micro HD (FC2580) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1104", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Sweex DVB-T USB (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="a803", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# GTek T803 (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="b803", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# Lifeview LV5TDeluxe (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="c803", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# MyGica TD312 (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="d286", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + +# PROlectrix DV107669 (FC0012) +SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="d803", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" + ''; +} diff --git a/modules/personal/hw-touchpad.nix b/modules/personal/hw-touchpad.nix new file mode 100644 index 0000000..20af569 --- /dev/null +++ b/modules/personal/hw-touchpad.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + libinput + libinput-gestures + ]; + + services.libinput = { + enable = true; + touchpad.naturalScrolling = true; + }; +} diff --git a/modules/personal/hw-video-accel.nix b/modules/personal/hw-video-accel.nix new file mode 100644 index 0000000..53a937a --- /dev/null +++ b/modules/personal/hw-video-accel.nix @@ -0,0 +1,15 @@ +{ pkgs, ... }: { + # https://nixos.wiki/wiki/Accelerated_Video_Playback + + environment.systemPackages = with pkgs; [ + libva-utils + ]; + + hardware.graphics = { + enable = true; + extraPackages = with pkgs; [ + libva-vdpau-driver + libvdpau-va-gl + ]; + }; +} diff --git a/modules/personal/hw-wacom.nix b/modules/personal/hw-wacom.nix new file mode 100644 index 0000000..8bb7949 --- /dev/null +++ b/modules/personal/hw-wacom.nix @@ -0,0 +1,5 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + xf86_input_wacom + ]; +} diff --git a/modules/personal/kubernetes.nix b/modules/personal/kubernetes.nix deleted file mode 100644 index dfac020..0000000 --- a/modules/personal/kubernetes.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - minikube - ]; - - services.k3s = { - enable = true; - extraFlags = "--kubelet-arg='eviction-hard=nodefs.available<1%,imagefs.available<1%,nodefs.inodesFree<1%' --write-kubeconfig-mode=644"; - }; -} diff --git a/modules/personal/openbox-de.nix b/modules/personal/openbox-de.nix deleted file mode 100644 index aa5163e..0000000 --- a/modules/personal/openbox-de.nix +++ /dev/null @@ -1,100 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - # Essential libs - dbus cairo libnotify gtk3 yad zenity gnome.gvfs 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 dunst-applet - # File openers - mate.atril mate.eom mate.engrampa nemo-with-extensions seahorse - # System - nixpkgs-mint.gnome.gnome-system-monitor udisks gnome-disk-utility nixpkgs-mint.gnome.baobab nixpkgs-2305.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; - security.pam.services.i3lock.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-settings-daemon ]; - - udisks2.enable = true; # gnome-disks disk access - gnome.gnome-keyring.enable = true; - gvfs.enable = true; # MTP (for nemo) - - logind.settings.Login = { - InhibitDelayMaxSec = 1; - HoldoffTimeoutSec = "1s"; - HandlePowerKey = "poweroff"; - }; - }; - - services.xserver = { - enable = true; - # Window manager - windowManager.openbox.enable = true; - - xautolock = { - enable = true; - time = 15; - locker = "/home/kamen/.scripts/lock"; - 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/.scripts/lock suspend"; - }; - }; - }; - - 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/personal/rtl-sdr.nix b/modules/personal/rtl-sdr.nix deleted file mode 100644 index 4347bf4..0000000 --- a/modules/personal/rtl-sdr.nix +++ /dev/null @@ -1,150 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - rtl-sdr gqrx sdrangel - ]; - - services.udev.extraRules = '' -# -# Copyright 2012-2013 Osmocom rtl-sdr project -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -# - -# original RTL2832U vid/pid (hama nano, for example) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2832", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# RTL2832U OEM vid/pid, e.g. ezcap EzTV668 (E4000), Newsky TV28T (E4000/R820T) etc. -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# DigitalNow Quad DVB-T PCI-E card (4x FC0012?) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0413", ATTRS{idProduct}=="6680", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Leadtek WinFast DTV Dongle mini D (FC0012) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0413", ATTRS{idProduct}=="6f0f", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Genius TVGo DVB-T03 USB dongle (Ver. B) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0458", ATTRS{idProduct}=="707f", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Terratec Cinergy T Stick Black (rev 1) (FC0012) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00a9", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Terratec NOXON rev 1 (FC0013) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b3", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Terratec Deutschlandradio DAB Stick (FC0013) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b4", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Terratec NOXON DAB Stick - Radio Energy (FC0013) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b5", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Terratec Media Broadcast DAB Stick (FC0013) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b7", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Terratec BR DAB Stick (FC0013) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b8", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Terratec WDR DAB Stick (FC0013) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00b9", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Terratec MuellerVerlag DAB Stick (FC0013) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00c0", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Terratec Fraunhofer DAB Stick (FC0013) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00c6", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Terratec Cinergy T Stick RC (Rev.3) (E4000) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00d3", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Terratec T Stick PLUS (E4000) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00d7", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Terratec NOXON rev 2 (E4000) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="0ccd", ATTRS{idProduct}=="00e0", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# PixelView PV-DT235U(RN) (FC0012) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1554", ATTRS{idProduct}=="5020", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Astrometa DVB-T/DVB-T2 (R828D) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="15f4", ATTRS{idProduct}=="0131", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# HanfTek DAB+FM+DVB-T -SUBSYSTEMS=="usb", ATTRS{idVendor}=="15f4", ATTRS{idProduct}=="0133", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Compro Videomate U620F (E4000) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0620", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Compro Videomate U650F (E4000) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0650", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Compro Videomate U680F (E4000) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="185b", ATTRS{idProduct}=="0680", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# GIGABYTE GT-U7300 (FC0012) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d393", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# DIKOM USB-DVBT HD -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d394", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Peak 102569AGPK (FC0012) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d395", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# KWorld KW-UB450-T USB DVB-T Pico TV (TUA9001) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d397", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Zaapa ZT-MINDVBZP (FC0012) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d398", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# SVEON STV20 DVB-T USB & FM (FC0012) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d39d", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Twintech UT-40 (FC0013) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3a4", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# ASUS U3100MINI_PLUS_V2 (FC0013) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3a8", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# SVEON STV27 DVB-T USB & FM (FC0013) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3af", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# SVEON STV21 DVB-T USB & FM -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1b80", ATTRS{idProduct}=="d3b0", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Dexatek DK DVB-T Dongle (Logilink VG0002A) (FC2580) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1101", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Dexatek DK DVB-T Dongle (MSI DigiVox mini II V3.0) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1102", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Dexatek DK 5217 DVB-T Dongle (FC2580) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1103", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# MSI DigiVox Micro HD (FC2580) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d19", ATTRS{idProduct}=="1104", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Sweex DVB-T USB (FC0012) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="a803", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# GTek T803 (FC0012) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="b803", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# Lifeview LV5TDeluxe (FC0012) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="c803", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# MyGica TD312 (FC0012) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="d286", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - -# PROlectrix DV107669 (FC0012) -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1f4d", ATTRS{idProduct}=="d803", ENV{ID_SOFTWARE_RADIO}="1", MODE="0660", GROUP="plugdev" - ''; -} diff --git a/modules/personal/tex.nix b/modules/personal/tex.nix deleted file mode 100644 index 9e45bb6..0000000 --- a/modules/personal/tex.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ pkgs, ... }: -let - tex = (pkgs.texlive.combine { - inherit (pkgs.texlive) scheme-medium - babel-bulgarian cyrillic cancel enumitem; - }); -in { - environment.systemPackages = with pkgs; [ - texmaker tex - ]; -} - diff --git a/modules/personal/users-standard.nix b/modules/personal/users-standard.nix index 368f6f8..51a0be6 100644 --- a/modules/personal/users-standard.nix +++ b/modules/personal/users-standard.nix @@ -1,7 +1,4 @@ { config, pkgs, ... }: { - # zsh - programs.zsh.enable = true; - environment.shells = with pkgs; [ zsh ]; # Thanks https://discourse.nixos.org/t/gns3-setcap-and-ubridge-gns3-unable-to-execute-setcap-command/13485/3 users = { groups.ubridge = {}; diff --git a/modules/personal/virtualization.nix b/modules/personal/virtualization.nix index 38c7536..ca162a4 100644 --- a/modules/personal/virtualization.nix +++ b/modules/personal/virtualization.nix @@ -1,6 +1,10 @@ { pkgs, ... }: { environment.systemPackages = with pkgs; [ - virt-manager libvirt qemu_kvm kvmtool qemu_full + virt-manager + libvirt + qemu_kvm + kvmtool + qemu_full ]; virtualisation = { diff --git a/modules/personal/work.nix b/modules/personal/work.nix deleted file mode 100644 index 0222734..0000000 --- a/modules/personal/work.nix +++ /dev/null @@ -1,2 +0,0 @@ -{ pkgs, ... }: { -} diff --git a/modules/personal/xserver.nix b/modules/personal/xserver.nix deleted file mode 100644 index 810122a..0000000 --- a/modules/personal/xserver.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ pkgs, ... }: { - services.xserver = { - # xkbmap - xkb.layout = "us,bg-custom"; - xkb.variant = ",phonetic-nonstandard"; - xkb.options = "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; - }; - }; -} diff --git a/modules/server/cli-essential.nix b/modules/server/cli-essential.nix deleted file mode 100644 index 3f5c6e7..0000000 --- a/modules/server/cli-essential.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ pkgs, ... }: { - environment.systemPackages = with pkgs; [ - dash htop rlwrap bc - # Hardware - lm_sensors lshw - # Network - curl wget git rsync inetutils netcat - # Files - vim-full nnn - # Archive formats - gnutar p7zip zip unzip rar unrar - ]; - - programs = { - gnupg.agent = { - enable = true; - enableSSHSupport = true; - pinentryPackage = pkgs.pinentry-tty; - }; - }; -} diff --git a/modules/server/cli-linux.nix b/modules/server/cli-linux.nix new file mode 100644 index 0000000..46c9c04 --- /dev/null +++ b/modules/server/cli-linux.nix @@ -0,0 +1,59 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + bash + git + rlwrap # readline processing in non-readline cli apps + chrony # set system time from the internet + + #== Editor/Player/File manager ==# + nnn + vim-full + moc # music on console + + #== Hardware ==# + lshw + efibootmgr + screenfetch # better neofetch + lm_sensors # provides sensors, sensors-detects, isadump, ... + ddrescue # data recovery tool + usbutils # lsusb, ... + + #== Processes ==# + htop + lsof # lists open files, mostly under /proc + iotop # IO utilisation per process + + #== Network ==# + dnsutils + netcat + curl + ipfetch # neofetch but for your IP + vnstat # network statistics + inetutils # ftp, hostname, ifconfig, ping, telnet, traceroute, rexec, rcp, ... + wget # download http/https/ftp files + rsync # file transfering + + #== HDD/SSD ==# + udisks # access and manipulate storage devices; udisksctl, ... + + #== File systems ==# + parted # partition editor + dosfstools # dosfsck, mkfs.fat, mkfs.dos, ... + ntfs3g # NTFS driver + + #== Archive files ==# + gnutar + p7zip + zip unzip + rar unrar + ]; + + programs = { + mtr.enable = true; + gnupg.agent = { + enable = true; + enableSSHSupport = true; + pinentryPackage = pkgs.pinentry-tty; + }; + }; +} diff --git a/modules/server/cli-posix.nix b/modules/server/cli-posix.nix new file mode 100644 index 0000000..7a639b3 --- /dev/null +++ b/modules/server/cli-posix.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: { + environment.systemPackages = with pkgs; [ + # Multi-tool packages + busybox util-linux + # Specific tools + bc dash nawk ed cron tree + # (GNU) software development tools + gcc gnumake flex bison + ]; +} -- cgit v1.3.1-23-gd82d