From 0d97bc51a2b0431942a6d175b06906a23f9f2ab9 Mon Sep 17 00:00:00 2001 From: derped Date: Wed, 24 Nov 2021 22:47:40 +0100 Subject: [PATCH 1/4] zsh: Fix map function. --- config/zsh.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/zsh.nix b/config/zsh.nix index 9761dec..5897896 100644 --- a/config/zsh.nix +++ b/config/zsh.nix @@ -16,6 +16,7 @@ mkIf (elem "zsh" config.machine.conffiles) { ustrip = "sed -e '/\.service\|\.timer\|\.target\|\.socket\|\.slice\|\.scope\|\.path\|\.mount\|\.device)/!d' -e 's/loaded.*$//g' -e 's/^ \|^● //g'"; lsunits = "systemctl list-units | ustrip"; }; + shellInit = '' function ll() { exa -abgHhl@ --git --color=always --group-directories-first $@ | bat --paging=always --style=changes --color=always --theme="Solarized (dark)" } function lln() { exa -abgHhl@ --git --color=always --group-directories-first $@ | bat --paging=always --style=changes --color=always --theme="Solarized (dark)" -n } @@ -23,8 +24,9 @@ mkIf (elem "zsh" config.machine.conffiles) { function rwhich() { realpath $(which $@) } function cdf() { cd $(rwhich $@ | sed "s/$@$//") } function sfu() { lsunits | rg -i $@ } - function map() { for f in "$\{@:2\}"; do; eval $1 $f; done } + function map() { for f in "$\{@:2\}"; do; eval $1 \"$f\"; done } ''; + ohMyZsh = { enable = true; plugins = [ "cabal" "docker" "gitfast" "python" "pip" "sudo" "systemd" "man" ]; From e8f26ac86eaa66b5569402112b27849be119d9d4 Mon Sep 17 00:00:00 2001 From: derped Date: Thu, 25 Nov 2021 21:43:49 +0100 Subject: [PATCH 2/4] emacs: add telega mode --- pkgsets/emacs/telega.nix | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 pkgsets/emacs/telega.nix diff --git a/pkgsets/emacs/telega.nix b/pkgsets/emacs/telega.nix new file mode 100644 index 0000000..2df8925 --- /dev/null +++ b/pkgsets/emacs/telega.nix @@ -0,0 +1,15 @@ +{ config, lib, ... }: + +with lib; + +mkIf (elem "emacs::telega" config.machine.pkgs) { + programs.emacs.init.usePackage.telegram = { + enable = true; + defer = true; + package = epkgs: [ epkgs.telega epkgs.visual-fill-column ]; + command = [ "telega" ]; + config = '' + (telega-alert-mode 1) + ''; + }; +} From 47500b78e322d902a90c3efd918c1b1d77265cef Mon Sep 17 00:00:00 2001 From: derped Date: Thu, 25 Nov 2021 22:03:04 +0100 Subject: [PATCH 3/4] Add new machine Marid. --- machines/Marid/configuration.nix | 7 ++ machines/Marid/hardware-configuration.nix | 79 +++++++++++++++++++++++ machines/Marid/options.nix | 67 +++++++++++++++++++ pkgsets/xpkgs.nix | 6 +- services/desktop.nix | 1 - services/fprintd.nix | 18 ++++++ 6 files changed, 175 insertions(+), 3 deletions(-) create mode 100644 machines/Marid/configuration.nix create mode 100644 machines/Marid/hardware-configuration.nix create mode 100644 machines/Marid/options.nix create mode 100644 services/fprintd.nix diff --git a/machines/Marid/configuration.nix b/machines/Marid/configuration.nix new file mode 100644 index 0000000..22a41f0 --- /dev/null +++ b/machines/Marid/configuration.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: + +{ + services.cron.enable = false; + networking.dhcpcd.extraConfig = "noarp"; + system.stateVersion = "21.05"; +} diff --git a/machines/Marid/hardware-configuration.nix b/machines/Marid/hardware-configuration.nix new file mode 100644 index 0000000..75678ad --- /dev/null +++ b/machines/Marid/hardware-configuration.nix @@ -0,0 +1,79 @@ +{ config, pkgs, modulesPath, ... }: + +let + cfg = config.machine; +in { + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; + + boot = { + loader.systemd-boot = { + enable = true; + }; + loader.efi.canTouchEfiVariables = true; + tmpOnTmpfs = true; + cleanTmpDir = true; + + kernelPackages = pkgs.linuxPackages_latest; + initrd.availableKernelModules = [ "nvme" "xhci_pci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + kernelModules = [ "kvm-amd" ]; + kernelParams = [ + # get backlight service to work part one (fixes systemd backlight service) + "acpi_backlight=native" + ]; + kernel.sysctl = { + "kernel.nmi_watchdog" = 0; + "fs.inotify.max_user_watches" = 524288; + "vm.dirty_writeback_centisecs" = 1500; + }; + }; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/cf8db7d5-5da7-4fb9-818d-ed5dd2815f0d"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/96E4-9DF3"; + fsType = "vfat"; + }; + + hardware = { + firmware = with pkgs; [ firmwareLinuxNonfree ]; + enableAllFirmware = true; + ksm.enable = true; + opengl = { + driSupport = true; + driSupport32Bit = true; + }; + + pulseaudio = { + enable = true; + support32Bit = true; + package = pkgs.pulseaudioFull; + zeroconf.discovery.enable = false; + extraClientConf = '' + autospawn = no + ''; + }; + + bluetooth = { + enable = true; + powerOnBoot = true; + }; + }; + + powerManagement = { + enable = true; + cpuFreqGovernor = "powersave"; + }; + services = { + upower.enable = true; + # Fix Backlight Part 2 (allows acpilight to modify brightness) + udev.extraRules = '' + ACTION=="add", SUBSYSTEM=="backlight", RUN+="${pkgs.coreutils}/bin/chgrp video /sys/class/backlight/%k/brightness" + ACTION=="add", SUBSYSTEM=="backlight", RUN+="${pkgs.coreutils}/bin/chmod 664 /sys/class/backlight/%k/brightness" + ''; + }; + + time.timeZone = "Europe/Berlin"; +} diff --git a/machines/Marid/options.nix b/machines/Marid/options.nix new file mode 100644 index 0000000..0390133 --- /dev/null +++ b/machines/Marid/options.nix @@ -0,0 +1,67 @@ +{ pkgs, lib, ... }: + +with lib; + +{ + imports = [ + ../../options/copySysConf.nix + ]; + config.machine = { + allowUnfree = true; + hostName = "Marid"; + administrators = [ { name = "derped"; id = 1337; } ]; + conffiles = [ + "etcfiles" + "etcvars" + "fonts" + "zsh" + ]; + pkgs = [ + "base" + "dict" + "nodejs" + "emacs" + "emacs::company" + "emacs::docker" + "emacs::doom-modeline" + "emacs::doom-themes" + "emacs::elpy" + "emacs::fcitx" + "emacs::flycheck" + "emacs::flyspell" + "emacs::undo-tree" + "emacs::lsp" + "emacs::magit" + "emacs::mu4e" + "emacs::nix-mode" + "emacs::org" + "emacs::php-mode" + "emacs::web-mode" + "emacs::yasnippet" + "extra" + "mail_utils" + "python3" + "xpkgs" + ]; + services = [ + "docker" + "desktop" + "udev" + "fprintd" + ]; + firewall = { + enable = true; + allowPing = true; + allowedUDPPorts = [ ]; + allowedTCPPorts = [ ]; + allowedUDPPortRanges = [ ]; + allowedTCPPortRanges = [ ]; + }; + desktop.wms = [ "none+i3" "i3" ]; + }; + + config.system.copySysConf = { + enable = false; + addToNixPath = false; + }; +} diff --git a/pkgsets/xpkgs.nix b/pkgsets/xpkgs.nix index f70574c..a11247b 100644 --- a/pkgsets/xpkgs.nix +++ b/pkgsets/xpkgs.nix @@ -1,6 +1,8 @@ { config, pkgs, ... }: -{ +let + cfg = config.machine; +in { config.machine.pkgsets.xpkgs.pkgs = with pkgs; [ feh scrot @@ -15,7 +17,7 @@ pavucontrol xclip xlibs.xkill - xorg.xbacklight + (if (cfg.hostName == "Marid") then xbacklight else xorg.xbacklight) xdiskusage ]; } diff --git a/services/desktop.nix b/services/desktop.nix index cc2edbc..d7ee21e 100644 --- a/services/desktop.nix +++ b/services/desktop.nix @@ -39,7 +39,6 @@ in mkIf (elem "desktop" cfg.services) { services.xserver = { enable = !(elem "sway" cfg.desktop.wms); layout = "de"; - videoDrivers = [ "intel" ]; displayManager.defaultSession = ifelse (cfg.desktop.wms != []) (elemAt cfg.desktop.wms 0) null; windowManager = mkIf (cfg.desktop.wms != []) { i3 = mkIf (elem "i3" cfg.desktop.wms) (import ./desktop/i3.nix { inherit pkgs; }); diff --git a/services/fprintd.nix b/services/fprintd.nix new file mode 100644 index 0000000..c0d59c6 --- /dev/null +++ b/services/fprintd.nix @@ -0,0 +1,18 @@ +{ config, lib, ... }: + +with lib; + +mkIf (elem "fprintd" config.machine.services) { + security.pam.services = let + unlock = [ + "sudo" + "i3lock" + "login" + "lightdm" + ]; + in listToAttrs (forEach unlock (n: {name = n; value = { fprintAuth = true; }; })); + + services.fprintd = { + enable = true; + }; +} From 2d3ca78643c64b7639a6690caf8ffc20e470760e Mon Sep 17 00:00:00 2001 From: derped Date: Thu, 25 Nov 2021 22:13:28 +0100 Subject: [PATCH 4/4] emacs/web: switch to typescript mode + lsp. --- pkgsets/emacs/lsp.nix | 4 ++++ pkgsets/emacs/web-mode.nix | 35 ++++++++++++++++++++++++----------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/pkgsets/emacs/lsp.nix b/pkgsets/emacs/lsp.nix index 982f0ea..30cd584 100644 --- a/pkgsets/emacs/lsp.nix +++ b/pkgsets/emacs/lsp.nix @@ -18,6 +18,10 @@ mkIf (elem "emacs::lsp" config.machine.pkgs) { ${optionalString (elem "emacs::rust" config.machine.pkgs) '' (setq lsp-rust-clippy-preference "on") ''} + ${optionalString (elem "emacs::web-mode" config.machine.pkgs) '' + (setq lsp-clients-deno-enable-unstable 't) + (setq lsp-disabled-clients '(ts-ls)) + ''} ''; }; diff --git a/pkgsets/emacs/web-mode.nix b/pkgsets/emacs/web-mode.nix index 027c7b8..99b1f7d 100644 --- a/pkgsets/emacs/web-mode.nix +++ b/pkgsets/emacs/web-mode.nix @@ -28,19 +28,32 @@ mkIf (elem "emacs::web-mode" config.machine.pkgs) { }; js2-mode = { enable = true; - }; - tide = { - enable = true; - after = [ "typescript-mode" "company" "flycheck" ]; - hook = [ - "(typescript-mode . tide-setup)" - "(typescript-mode . tide-hl-identifier-mode)" - "(before-save . tide-format-before-save)" + mode = [ + ''("\\.js\\'" . js2-mode)'' ]; - config = '' - (setq company-tooltip-align-annotations t) - ''; }; + typescript-mode = { + enable = true; + hook = lib.optional (elem "emacs::lsp" config.machine.pkgs) + ''(typescript-mode . (lambda () (lsp)))''; + mode = [ + ''("\\.ts\\'" . typescript-mode)'' + ]; + }; + # tide = { + # enable = true; + # after = [ "typescript-mode" "company" "flycheck" ]; + # hook = [ + # "(typescript-mode . tide-setup)" + # "(typescript-mode . tide-hl-identifier-mode)" + # "(before-save . tide-format-before-save)" + # ]; + # config = '' + # (flycheck-mode +1) + # (setq flycheck-check-syntax-automatically '(save mode-enabled)) + # (setq company-tooltip-align-annotations t) + # ''; + # }; impatient-mode = { enable = true; };