diff --git a/configuration.nix b/configuration.nix index e075ce8..43470d3 100644 --- a/configuration.nix +++ b/configuration.nix @@ -4,15 +4,11 @@ { config, lib, nixpkgs, pkgs, home-manager, ... }: -let - my_python = (pkgs.python3.withPackages (ps: with ps; [ - git_plan])); -in -{ - imports = - [ - #./gnupg.nix - ]; +let my_python = (pkgs.python3.withPackages (ps: with ps; [ git_plan ])); +in { + imports = [ + #./gnupg.nix + ]; nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.extraOptions = '' !include ${config.sops.secrets.github_token.path} @@ -39,7 +35,7 @@ in owner = config.users.users.knazarov.name; group = config.users.users.knazarov.group; }; - mullvad_account = {}; + mullvad_account = { }; }; }; @@ -76,7 +72,6 @@ in package = lib.mkForce pkgs.gnome3.gvfs; }; - # Configure keymap in X11 services.xserver = { layout = "us"; @@ -87,12 +82,8 @@ in users.users.knazarov = { isNormalUser = true; description = "Konstantin Nazarov"; - extraGroups = [ - "networkmanager" - "wheel" - config.users.groups.keys.name - ]; - packages = with pkgs; []; + extraGroups = [ "networkmanager" "wheel" config.users.groups.keys.name ]; + packages = with pkgs; [ ]; openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDGxebDydOcs7URJjXFHMU++ruaZOJpXbK4ixH19pWTsX7WtxxriZxD4+RQ3oyllGG/8sEFzEe0NoTHUPU6YrBpfwT/ekGDmCJHtvZ+rZs+cRQd6tObfAUip1B1Mcvhuaj0prnrbfohOuHpvQ/L8TogIKuHgczDmud4KGUu0mxCsUHbD5tlKpsgN+dJXkvjxsO7JhhF9JpFTrYAU0gTuBPTt3ynpnZKrE1NgnE0iy+CEr/v41dLqxw3fUjT3nOFUQ1l/VKTw5mLt5Iw7XmBLuFGLRAVrwzXxeBCfYqKGYgY4QV8HCcVpcqC8zWmRskiRetzQ/5HwRagm4yZr0I+LZ305nGB0cSJzLWXXOUF6SDg2cqAXFpF/o2LoFCmaV5h3jmCGOUrowF7oV4mYwBMWfabrbZx21z/R56GkAOOEKc2h+Qh5wIj4yayX081SkqJK3J9+3vGG4VvXnwGnPnWQFqrzeedyV74maffGBGFYm0UOcD+oG6EwM+7MEUBpJm9m4c= knazarov" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHkDvP2BO1uV0AwEjABYFEiA2BbGo1IsSht4emYMRLgi root@mira" @@ -131,6 +122,7 @@ in pciutils slack q-sh + notes-sh transmission-gtk mpv imv @@ -161,14 +153,16 @@ in xournalpp dnsutils graphviz + fzf + nixfmt #network-manager-applet - (clang-tools.override { llvmPackages = llvmPackages_16; }) # mainly for clang-format + (clang-tools.override { + llvmPackages = llvmPackages_16; + }) # mainly for clang-format (emacsWithPackagesFromUsePackage { config = ./emacs.el; defaultInitFile = true; - package = emacs29-pgtk.overrideAttrs (old: { - withTreeSitter = true; - }); + package = emacs29-pgtk.overrideAttrs (old: { withTreeSitter = true; }); alwaysEnsure = true; extraEmacsPackages = epkgs: [ pkgs.mu @@ -179,29 +173,27 @@ in my_python ]; - services.mullvad-vpn = { - enable = true; - }; - systemd.services."mullvad-daemon".postStart = let - mullvad = config.services.mullvad-vpn.package; - in '' - while ! ${mullvad}/bin/mullvad status >/dev/null; do sleep 1; done - ${mullvad}/bin/mullvad account login `cat /var/run/secrets/mullvad_account` - ${mullvad}/bin/mullvad auto-connect set on - ${mullvad}/bin/mullvad tunnel ipv6 set on - ''; - + services.mullvad-vpn = { enable = true; }; + systemd.services."mullvad-daemon".postStart = + let mullvad = config.services.mullvad-vpn.package; + in '' + while ! ${mullvad}/bin/mullvad status >/dev/null; do sleep 1; done + ${mullvad}/bin/mullvad account login `cat /var/run/secrets/mullvad_account` + ${mullvad}/bin/mullvad auto-connect set on + ${mullvad}/bin/mullvad tunnel ipv6 set on + ''; services.fwupd.enable = true; - services.gnome.gnome-keyring.enable = true; + services.gnome.gnome-keyring.enable = true; services.emacs.package = nixpkgs.emacsUnstablePgtk; # Enables wayland support in electron apps (e.g. slack) environment.sessionVariables.NIXOS_OZONE_WL = "1"; # Set default browser to qutebrowser in electron apps - environment.sessionVariables.DEFAULT_BROWSER = "${pkgs.qutebrowser}/bin/qutebrowser"; + environment.sessionVariables.DEFAULT_BROWSER = + "${pkgs.qutebrowser}/bin/qutebrowser"; # Set default browser to qutebrowser everywhere else xdg.mime.defaultApplications = { @@ -224,16 +216,13 @@ in }; }; - - - # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; programs.gnupg.package = pkgs.gnupg; programs.gnupg.agent = { - enable = true; - enableSSHSupport = true; + enable = true; + enableSSHSupport = true; }; programs.sway = { @@ -344,20 +333,22 @@ in # Enable the OpenSSH daemon. services.openssh = { enable = true; -# settings = { -# passwordAuthentication = false; -# kbdInteractiveAuthentication = false; -# }; + # settings = { + # passwordAuthentication = false; + # kbdInteractiveAuthentication = false; + # }; }; networking.firewall.allowedTCPPorts = [ # Syncthing - 8384 22000 + 8384 + 22000 ]; networking.firewall.allowedUDPPorts = [ # Syncthing - 22000 21027 + 22000 + 21027 ]; # This value determines the NixOS release from which the default @@ -386,49 +377,46 @@ in font-awesome # for waybar indicators ]; - home-manager.users.knazarov = { - /* The home.stateVersion option does not have a default and must be set */ + # The home.stateVersion option does not have a default and must be set home.stateVersion = "23.05"; programs.bash = { enable = true; bashrcExtra = '' - if [[ "$INSIDE_EMACS" = 'vterm' ]] \ - && [[ -n ''${EMACS_VTERM_PATH} ]] \ - && [[ -f ''${EMACS_VTERM_PATH}/etc/emacs-vterm-bash.sh ]]; then - source ''${EMACS_VTERM_PATH}/etc/emacs-vterm-bash.sh - fi + if [[ "$INSIDE_EMACS" = 'vterm' ]] \ + && [[ -n ''${EMACS_VTERM_PATH} ]] \ + && [[ -f ''${EMACS_VTERM_PATH}/etc/emacs-vterm-bash.sh ]]; then + source ''${EMACS_VTERM_PATH}/etc/emacs-vterm-bash.sh + fi ''; }; gtk = { enable = true; - gtk3.extraConfig = { - gtk-enable-animations = "0"; - }; - gtk4.extraConfig = { - gtk-enable-animations = "0"; - }; + gtk3.extraConfig = { gtk-enable-animations = "0"; }; + gtk4.extraConfig = { gtk-enable-animations = "0"; }; }; programs.direnv = { enable = true; - nix-direnv = { - enable = true; - }; + nix-direnv = { enable = true; }; }; programs.gpg = { enable = true; package = pkgs.gnupg; publicKeys = [ - {source = ./gpg_public_key.asc; trust="ultimate"; } - {source = ./pgp_keys/FB4809DC51A4F483.asc; trust= "ultimate"; } + { + source = ./gpg_public_key.asc; + trust = "ultimate"; + } + { + source = ./pgp_keys/FB4809DC51A4F483.asc; + trust = "ultimate"; + } ]; - settings = { - default-key = "0x0560020C9C577C1B"; - }; + settings = { default-key = "0x0560020C9C577C1B"; }; mutableKeys = false; mutableTrust = false; }; @@ -448,7 +436,8 @@ in accounts.email = { maildirBasePath = "${config.users.users.knazarov.home}/Maildir"; accounts = { - personal = let account = "mail@knazarov.com"; in { + personal = let account = "mail@knazarov.com"; + in { primary = true; flavor = "fastmail.com"; address = account; @@ -471,14 +460,10 @@ in }; }; - programs.mu = { - enable = true; - }; + programs.mu = { enable = true; }; programs.msmtp.enable = true; - programs.mbsync = { - enable = true; - }; + programs.mbsync = { enable = true; }; #services.easyeffects = { # enable = true; @@ -487,14 +472,20 @@ in services.swayidle = { enable = true; timeouts = [ - { timeout = 300; command = "${pkgs.swaylock}/bin/swaylock -f -c 000000";} - { timeout = 600; - command = "${pkgs.sway}/bin/swaymsg \"output * dpms off\""; - resumeCommand = "${pkgs.sway}/bin/swaymsg \"output * dpms on\"";} - ]; - events = [ - { event = "before-sleep"; command = "${pkgs.swaylock}/bin/swaylock -f -c 000000"; } + { + timeout = 300; + command = "${pkgs.swaylock}/bin/swaylock -f -c 000000"; + } + { + timeout = 600; + command = ''${pkgs.sway}/bin/swaymsg "output * dpms off"''; + resumeCommand = ''${pkgs.sway}/bin/swaymsg "output * dpms on"''; + } ]; + events = [{ + event = "before-sleep"; + command = "${pkgs.swaylock}/bin/swaylock -f -c 000000"; + }]; }; wayland.windowManager.sway = { @@ -503,22 +494,26 @@ in config = rec { modifier = "Mod4"; terminal = "foot"; - bars = [{ - "command" = "waybar"; - }]; + bars = [{ "command" = "waybar"; }]; keybindings = pkgs.lib.mkOptionDefault { - "XF86AudioRaiseVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"; - "XF86AudioLowerVolume" = "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"; + "XF86AudioRaiseVolume" = + "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"; + "XF86AudioLowerVolume" = + "exec wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"; "XF86AudioMute" = "exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; - "XF86AudioMicMute" = "exec pactl set-source-mute @DEFAULT_SOURCE@ toggle"; + "XF86AudioMicMute" = + "exec pactl set-source-mute @DEFAULT_SOURCE@ toggle"; "XF86MonBrightnessUp" = "exec brightnessctl s +5%"; "XF86MonBrightnessDown" = "exec brightnessctl s 5%-"; - "Mod4+Return" = "exec emacs --eval '(progn (setq confirm-kill-processes nil) (vterm))'"; - "Mod4+space" = "exec ${pkgs.foot}/bin/foot -T mylauncher -a mylauncher ${pkgs.q-sh}/bin/q"; - "Mod4+p" = "exec '${pkgs.grim}/bin/grim -g \"$$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy -t image/png'"; + "Mod4+Return" = + "exec emacs --eval '(progn (setq confirm-kill-processes nil) (vterm))'"; + "Mod4+space" = + "exec ${pkgs.foot}/bin/foot -T mylauncher -a mylauncher ${pkgs.q-sh}/bin/q"; + "Mod4+p" = + "exec '${pkgs.grim}/bin/grim -g \"$$(${pkgs.slurp}/bin/slurp)\" - | ${pkgs.wl-clipboard}/bin/wl-copy -t image/png'"; }; output = { - "*" = { bg = "${./wallpaper.jpg} fill";}; + "*" = { bg = "${./wallpaper.jpg} fill"; }; "Lenovo Group Limited LEN T32p-20 VNA4VRNY" = { scale = "1.5"; }; }; input = { @@ -531,11 +526,13 @@ in inner = 10; outer = 5; }; - colors.unfocused = {border = "#dddddd"; - background = "#dddddd"; - text = "#888888"; - indicator = "#888888"; - childBorder = "#888888";}; + colors.unfocused = { + border = "#dddddd"; + background = "#dddddd"; + text = "#888888"; + indicator = "#888888"; + childBorder = "#888888"; + }; }; extraConfig = '' for_window [title="mylauncher"] floating enable @@ -547,36 +544,34 @@ in programs.foot = { enable = true; settings = { - main = { - font="monospace:size=10"; - }; + main = { font = "monospace:size=10"; }; colors = { - background="feffff"; - foreground="333333"; + background = "feffff"; + foreground = "333333"; - regular0="333333"; - regular1="bd4436"; - regular2="008700"; - regular3="cdcc42"; - regular4="0017f5"; - regular5="b92cc6"; - regular6="5bbdf9"; - regular7="c7c7c7"; + regular0 = "333333"; + regular1 = "bd4436"; + regular2 = "008700"; + regular3 = "cdcc42"; + regular4 = "0017f5"; + regular5 = "b92cc6"; + regular6 = "5bbdf9"; + regular7 = "c7c7c7"; - bright0="333333"; - bright1="bd4436"; - bright2="008700"; - bright3="cdcc42"; - bright4="0017f5"; - bright5="b92cc6"; - bright6="5bbdf9"; - bright7="feffff"; + bright0 = "333333"; + bright1 = "bd4436"; + bright2 = "008700"; + bright3 = "cdcc42"; + bright4 = "0017f5"; + bright5 = "b92cc6"; + bright6 = "5bbdf9"; + bright7 = "feffff"; }; key-bindings = { - clipboard-copy="Control+Insert"; - clipboard-paste="Shift+Insert"; - primary-paste="Control+Shift+v"; + clipboard-copy = "Control+Insert"; + clipboard-paste = "Shift+Insert"; + primary-paste = "Control+Shift+v"; }; }; }; @@ -601,46 +596,41 @@ in config.set('content.register_protocol_handler', False, 'https://calendar.google.com?cid=%25s') ''; keyBindings = { - insert = { - "" = "insert-text -- {clipboard}"; - }; + insert = { "" = "insert-text -- {clipboard}"; }; }; }; programs.waybar = { enable = true; settings = [{ - layer = "top"; - position = "top"; - height = 24; - modules-left = ["sway/workspaces" "sway/mode"]; - modules-center = ["sway/window"]; - modules-right = - [ "idle_inhibitor" "battery" "clock" "tray" ]; - clock.format = "{:%Y-%m-%d %H:%M}"; - battery = { - states = { - # good = 95; - warning = 30; - critical = 15; - }; - format = "{capacity}% {icon}"; - format-charging = "{capacity}% "; - format-plugged = "{capacity}% "; - format-alt = "{time} {icon}"; - format-icons = ["" "" "" "" ""]; + layer = "top"; + position = "top"; + height = 24; + modules-left = [ "sway/workspaces" "sway/mode" ]; + modules-center = [ "sway/window" ]; + modules-right = [ "idle_inhibitor" "battery" "clock" "tray" ]; + clock.format = "{:%Y-%m-%d %H:%M}"; + battery = { + states = { + # good = 95; + warning = 30; + critical = 15; }; - idle_inhibitor = { - format = "{icon}"; - format-icons = { - activated = ""; - deactivated = ""; - }; + format = "{capacity}% {icon}"; + format-charging = "{capacity}% "; + format-plugged = "{capacity}% "; + format-alt = "{time} {icon}"; + format-icons = [ "" "" "" "" "" ]; + }; + idle_inhibitor = { + format = "{icon}"; + format-icons = { + activated = ""; + deactivated = ""; }; + }; }]; }; - services.syncthing = { - enable = true; - }; + services.syncthing = { enable = true; }; home.pointerCursor = { name = "Adwaita"; package = pkgs.gnome.adwaita-icon-theme; @@ -656,59 +646,55 @@ in podman = { enable = true; dockerCompat = true; - defaultNetwork.settings = { - dns_enabled = true; - }; + defaultNetwork.settings = { dns_enabled = true; }; }; }; - services.udev.packages = [ - pkgs.android-udev-rules - ]; + services.udev.packages = [ pkgs.android-udev-rules ]; #udevadm info --query=all --name=/dev/sda1 | grep ID_SERIAL services.udev.extraRules = - ''ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="block", '' + - ''ENV{ID_FS_USAGE}=="filesystem", ENV{ID_SERIAL_SHORT}=="Hidizs_AP80PRO", '' + - ''RUN{program}+="${pkgs.systemd}/bin/systemd-mount --owner knazarov '' + - ''--no-block --automount=yes --collect $devnode /media"''; + ''ACTION=="add", SUBSYSTEMS=="usb", SUBSYSTEM=="block", '' + '' + ENV{ID_FS_USAGE}=="filesystem", ENV{ID_SERIAL_SHORT}=="Hidizs_AP80PRO", '' + + ''RUN{program}+="${pkgs.systemd}/bin/systemd-mount --owner knazarov '' + + ''--no-block --automount=yes --collect $devnode /media"''; systemd.timers."git_plan" = { wantedBy = [ "timers.target" ]; timerConfig = { - OnBootSec="1h"; - OnUnitActiveSec="1h"; + OnBootSec = "1h"; + OnUnitActiveSec = "1h"; Unit = "git_plan.service"; }; }; systemd.services."git_plan" = { script = '' - ${my_python}/bin/python3 -m git_plan -c /var/run/secrets/git_plan_config -r /var/run/secrets/git_plan_credentials oneshot - ''; + ${my_python}/bin/python3 -m git_plan -c /var/run/secrets/git_plan_config -r /var/run/secrets/git_plan_credentials oneshot + ''; serviceConfig = { Type = "oneshot"; User = "knazarov"; - StateDirectory="git_plan"; - Environment="PYTHONUNBUFFERED=1"; + StateDirectory = "git_plan"; + Environment = "PYTHONUNBUFFERED=1"; }; }; systemd.timers."git_plan_pr" = { wantedBy = [ "timers.target" ]; timerConfig = { - OnCalendar= "Mon,Tue,Wed,Thu,Fri *-*-* 10:00:00"; + OnCalendar = "Mon,Tue,Wed,Thu,Fri *-*-* 10:00:00"; Unit = "git_plan_pr.service"; }; }; systemd.services."git_plan_pr" = { script = '' - ${my_python}/bin/python3 -m git_plan -c /var/run/secrets/git_plan_config -r /var/run/secrets/git_plan_credentials pr - ''; + ${my_python}/bin/python3 -m git_plan -c /var/run/secrets/git_plan_config -r /var/run/secrets/git_plan_credentials pr + ''; serviceConfig = { Type = "oneshot"; User = "knazarov"; - StateDirectory="git_plan"; - Environment="PYTHONUNBUFFERED=1"; + StateDirectory = "git_plan"; + Environment = "PYTHONUNBUFFERED=1"; }; }; } diff --git a/emacs.el b/emacs.el index 9eac7fe..ef08503 100755 --- a/emacs.el +++ b/emacs.el @@ -290,6 +290,9 @@ (evil-define-key 'normal 'global (kbd "b") 'switch-to-buffer) (evil-define-key 'normal 'global (kbd "r") 'consult-ripgrep) +;; Make :q close the current buffer, and not the whole emacs process +(global-set-key [remap evil-quit] 'kill-buffer-and-window) + ;; -------- Tools and environment -------- ;; By default, Emacs doesn't add system path to its search places diff --git a/flake.lock b/flake.lock index ac1e9a3..33a1d12 100755 --- a/flake.lock +++ b/flake.lock @@ -90,11 +90,11 @@ ] }, "locked": { - "lastModified": 1695674553, - "narHash": "sha256-gl/4yEfN0nsAhY/gBRO/GmxbbJZMQHXERm7Jrr2lJug=", + "lastModified": 1695939862, + "narHash": "sha256-YKDlS3HCXiMflP5i/uEQnZf2henO10beetINHj80hmU=", "owner": "~knazarov", "repo": "knazarov.com", - "rev": "b851bb106e03996a1c00212986217db464b90424", + "rev": "ea70e4a202b4fdc0e5e20c5fce9a631093d3cf35", "type": "sourcehut" }, "original": { @@ -134,6 +134,26 @@ "type": "github" } }, + "notes-sh": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1696081283, + "narHash": "sha256-ldiJ3gWOvW/aq3zwetnSg1pjU7PfKYVsQWxIZGM/NNA=", + "owner": "~knazarov", + "repo": "notes.sh", + "rev": "38e2883be54cd6634d83888f8f8545ddb44b9556", + "type": "sourcehut" + }, + "original": { + "owner": "~knazarov", + "repo": "notes.sh", + "type": "sourcehut" + } + }, "q-sh": { "inputs": { "nixpkgs": [ @@ -162,6 +182,7 @@ "knazarovcom": "knazarovcom", "nixpkgs": "nixpkgs", "nixpkgs-stable": "nixpkgs-stable", + "notes-sh": "notes-sh", "q-sh": "q-sh", "sops-nix": "sops-nix", "vmatveevacom": "vmatveevacom" diff --git a/flake.nix b/flake.nix index a634537..08091db 100755 --- a/flake.nix +++ b/flake.nix @@ -3,36 +3,40 @@ { inputs = { - nixpkgs.url = github:NixOS/nixpkgs; - nixpkgs-stable.url = github:NixOS/nixpkgs/nixos-23.05; - home-manager.url = github:nix-community/home-manager/release-23.05; + nixpkgs.url = "github:NixOS/nixpkgs"; + nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-23.05"; + home-manager.url = "github:nix-community/home-manager/release-23.05"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; - emacs-overlay.url = github:nix-community/emacs-overlay; + emacs-overlay.url = "github:nix-community/emacs-overlay"; emacs-overlay.inputs.nixpkgs.follows = "nixpkgs"; emacs-overlay.inputs.nixpkgs-stable.follows = "nixpkgs-stable"; - sops-nix.url = github:Mic92/sops-nix; + sops-nix.url = "github:Mic92/sops-nix"; sops-nix.inputs.nixpkgs.follows = "nixpkgs"; sops-nix.inputs.nixpkgs-stable.follows = "nixpkgs-stable"; - q-sh.url = sourcehut:~knazarov/q.sh; + q-sh.url = "sourcehut:~knazarov/q.sh"; q-sh.inputs.nixpkgs.follows = "nixpkgs"; - knazarovcom.url = sourcehut:~knazarov/knazarov.com; + notes-sh.url = "sourcehut:~knazarov/notes.sh"; + notes-sh.inputs.nixpkgs.follows = "nixpkgs"; + knazarovcom.url = "sourcehut:~knazarov/knazarov.com"; knazarovcom.inputs.nixpkgs.follows = "nixpkgs"; - vmatveevacom.url = github:valeriya-matveeva/vmatveeva.com; + vmatveevacom.url = "github:valeriya-matveeva/vmatveeva.com"; vmatveevacom.inputs.nixpkgs.follows = "nixpkgs"; - git-plan.url = sourcehut:~knazarov/git-plan; + git-plan.url = "sourcehut:~knazarov/git-plan"; git-plan.inputs.nixpkgs.follows = "nixpkgs"; - }; + }; - outputs = { self, nixpkgs, nixpkgs-stable, home-manager, emacs-overlay, sops-nix, q-sh, knazarovcom, vmatveevacom, git-plan, ... }@attrs: + outputs = { self, nixpkgs, nixpkgs-stable, home-manager, emacs-overlay + , sops-nix, q-sh, notes-sh, knazarovcom, vmatveevacom, git-plan, ... + }@attrs: let system = "x86_64-linux"; - specialArgs = { - inherit attrs; - }; + specialArgs = { inherit attrs; }; buildConfig = modules: system: { inherit modules system specialArgs; }; - buildSystem = modules: system: nixpkgs.lib.nixosSystem (buildConfig modules system); - buildSystemStable = modules: system: nixpkgs-stable.lib.nixosSystem (buildConfig modules system); + buildSystem = modules: system: + nixpkgs.lib.nixosSystem (buildConfig modules system); + buildSystemStable = modules: system: + nixpkgs-stable.lib.nixosSystem (buildConfig modules system); hostAttrs = dir: { settings = import "${dir}/host-metadata.nix"; @@ -40,37 +44,46 @@ hw-config = import "${dir}/hardware-configuration.nix"; }; - node = dir: with hostAttrs dir; buildSystemStable [ - ({ config, pkgs, ... }: { nixpkgs.overlays = [ emacs-overlay.overlay q-sh.overlays.default - git-plan.overlays.default - ]; }) - sops-nix.nixosModules.sops - home-manager.nixosModule - config - hw-config - ./configuration.nix - ] - settings.system; + node = dir: + with hostAttrs dir; + buildSystemStable [ + ({ config, pkgs, ... }: { + nixpkgs.overlays = [ + emacs-overlay.overlay + q-sh.overlays.default + notes-sh.overlays.default + git-plan.overlays.default + ]; + }) + sops-nix.nixosModules.sops + home-manager.nixosModule + config + hw-config + ./configuration.nix + ] settings.system; - server = dir: with hostAttrs dir; buildSystem [ - ({ config, pkgs, ... }: { nixpkgs.overlays = [ - emacs-overlay.overlay - q-sh.overlays.default - knazarovcom.overlays.default - vmatveevacom.overlays.default]; }) - sops-nix.nixosModules.sops - home-manager.nixosModule - config - hw-config - #(dir + "/configuration.nix") - ] - settings.system; - in - { - nixosConfigurations = { - mira = node ./nodes/mira; - framework = node ./nodes/framework; - knazarovcom = server ./nodes/knazarovcom; - }; + server = dir: + with hostAttrs dir; + buildSystem [ + ({ config, pkgs, ... }: { + nixpkgs.overlays = [ + emacs-overlay.overlay + q-sh.overlays.default + knazarovcom.overlays.default + vmatveevacom.overlays.default + ]; + }) + sops-nix.nixosModules.sops + home-manager.nixosModule + config + hw-config + #(dir + "/configuration.nix") + ] settings.system; + in { + nixosConfigurations = { + mira = node ./nodes/mira; + framework = node ./nodes/framework; + knazarovcom = server ./nodes/knazarovcom; }; + }; }