diff options
27 files changed, 236 insertions, 175 deletions
diff --git a/flake.lock b/flake.lock index 7390826..60fd9cb 100644 --- a/flake.lock +++ b/flake.lock @@ -13,11 +13,11 @@ ] }, "locked": { - "lastModified": 1696775529, - "narHash": "sha256-TYlE4B0ktPtlJJF9IFxTWrEeq+XKG8Ny0gc2FGEAdj0=", + "lastModified": 1701216516, + "narHash": "sha256-jKSeJn+7hZ1dZdiH1L+NWUGT2i/BGomKAJ54B9kT06Q=", "owner": "ryantm", "repo": "agenix", - "rev": "daf42cb35b2dc614d1551e37f96406e4c4a2d3e4", + "rev": "13ac9ac6d68b9a0896e3d43a082947233189e247", "type": "github" }, "original": { @@ -70,11 +70,11 @@ ] }, "locked": { - "lastModified": 1698052066, - "narHash": "sha256-KnSOyt4Ro66kNf2UIVfIy5Qj5idR9+3QrxJmbo3kzrQ=", + "lastModified": 1701036929, + "narHash": "sha256-5TkAr5a3EoY9/oeO53SU+FRNfOUTpChj7mEW/Ax3T1w=", "owner": "dwarfmaster", "repo": "arkenfox-nixos", - "rev": "f787d60c3308f067d5f68abbe85083f8a169d72c", + "rev": "1c9d061a4ef7bf3ce8a5260eaee4acdb3ee097f9", "type": "github" }, "original": { @@ -147,11 +147,11 @@ ] }, "locked": { - "lastModified": 1699867978, - "narHash": "sha256-+arl45HUOcBdKiRGrKXZYXDyBQ6MQGkYPZa/28f6Yzo=", + "lastModified": 1700795494, + "narHash": "sha256-gzGLZSiOhf155FW7262kdHo2YDeugp3VuIFb4/GGng0=", "owner": "LnL7", "repo": "nix-darwin", - "rev": "e67f2bf515343da378c3f82f098df8ca01bccc5f", + "rev": "4b9b83d5a92e8c1fbfd8eb27eda375908c11ec4d", "type": "github" }, "original": { @@ -246,11 +246,11 @@ ] }, "locked": { - "lastModified": 1694102001, - "narHash": "sha256-vky6VPK1n1od6vXbqzOXnekrQpTL4hbPAwUhT5J9c9E=", + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", "owner": "hercules-ci", "repo": "gitignore.nix", - "rev": "9e21c80adf67ebcb077d75bd5e7d724d21eeafd6", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", "type": "github" }, "original": { @@ -266,11 +266,11 @@ ] }, "locked": { - "lastModified": 1700553346, - "narHash": "sha256-kW7uWsCv/lxuA824Ng6EYD9hlVYRyjuFn0xBbYltAeQ=", + "lastModified": 1701071203, + "narHash": "sha256-lQywA7QU/vzTdZ1apI0PfgCWNyQobXUYghVrR5zuIeM=", "owner": "nix-community", "repo": "home-manager", - "rev": "1aabb0a31b25ad83cfaa37c3fe29053417cd9a0f", + "rev": "db1878f013b52ba5e4034db7c1b63e8d04173a86", "type": "github" }, "original": { @@ -309,11 +309,11 @@ ] }, "locked": { - "lastModified": 1700529763, - "narHash": "sha256-O3BcD/xmO1BPP87wuntpBiADOH1QEbSS3/A//2HrN74=", + "lastModified": 1701220839, + "narHash": "sha256-mD8SYyQ47zvHcHWe2TfPgSDZhrh+rd7o1Qxc012ikaQ=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "6e99ae61a7e8271343ab5bad736070cd098aca2b", + "rev": "0fa82d954e4f9a2f14b43f9301232447b90184e9", "type": "github" }, "original": { @@ -336,11 +336,11 @@ ] }, "locked": { - "lastModified": 1700616109, - "narHash": "sha256-RtcYmcqzS1sWAw4q85YiOxEsPL4yo0EhGJIUatExh1A=", + "lastModified": 1701220899, + "narHash": "sha256-esWkfkEM5P78BKtVIf5qbgcD3L4CdXpkkWv+LhPr6PE=", "owner": "nix-community", "repo": "nix-vscode-extensions", - "rev": "744feda10f39afb587354bb98d04415662b57236", + "rev": "f9d2a701aabc5ce2f109f9154fa26eb8d3d785b3", "type": "github" }, "original": { @@ -352,11 +352,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1700559156, - "narHash": "sha256-gL4epO/qf+wo30JjC3g+b5Bs8UrpxzkhNBBsUYxpw2g=", + "lastModified": 1701250978, + "narHash": "sha256-ohu3cz4edjpGxs2qUTgbs0WrnewOX4crnUJNEB6Jox4=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "c3abafb01cd7045dba522af29b625bd1e170c2fb", + "rev": "8772491ed75f150f02552c60694e1beff9f46013", "type": "github" }, "original": { @@ -368,11 +368,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1700538105, - "narHash": "sha256-uZhOCmwv8VupEmPZm3erbr9XXmyg7K67Ul3+Rx2XMe0=", + "lastModified": 1701174899, + "narHash": "sha256-1W+FMe8mWsJKXoBc+QgKmEeRj33kTFnPq7XCjU+bfnA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "51a01a7e5515b469886c120e38db325c96694c2f", + "rev": "010c7296f3b19a58b206fdf7d68d75a5b0a09e9e", "type": "github" }, "original": { @@ -384,11 +384,11 @@ }, "nixpkgs-master": { "locked": { - "lastModified": 1700692803, - "narHash": "sha256-ZmLkPHlPWhfRUqlHcX6oDICqiDOWga674DMjyv+k7fM=", + "lastModified": 1701282011, + "narHash": "sha256-8VA8Dgir7gxye7SGJtnkA0s3CokCDDNsKu8miAbRqT8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e4baad1ea299fc9488bc10d0b506389b9ed7c3f2", + "rev": "f6a06211e6018028ddaf11fac093ca9b9a13cd7f", "type": "github" }, "original": { @@ -400,11 +400,11 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1700682076, - "narHash": "sha256-+v5Q0qDioOXNuih+mmiwpyw8vdFy6WG13tzozG5TWxc=", + "lastModified": 1701282134, + "narHash": "sha256-5Tm7yLcFcBqjjKAm3Asy8TK7jghjZ/eH5++kDEnlCuw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ee5ddacfab29812b32b5ea8c1dacdadfdf264475", + "rev": "2bc6ba12ff5e3806c41e29aaafd28c6e4fee8a70", "type": "github" }, "original": { @@ -428,11 +428,11 @@ ] }, "locked": { - "lastModified": 1700659845, - "narHash": "sha256-nU3fHWd/YKPtnJ+PVqtooVNlFtkSQIfrsq14wyufUXA=", + "lastModified": 1701250280, + "narHash": "sha256-Nx2nqkUfOAvW+GlVIs5HK8WfuZsbN8FqW2bXNx0fMJc=", "owner": "nix-community", "repo": "nixvim", - "rev": "796e7391cec5134fd36951d275e7a0809e2107c8", + "rev": "f56d412f84e2cee53365ade1093f9cc449d58fa3", "type": "github" }, "original": { @@ -520,11 +520,11 @@ ] }, "locked": { - "lastModified": 1700064067, - "narHash": "sha256-1ZWNDzhu8UlVCK7+DUN9dVQfiHX1bv6OQP9VxstY/gs=", + "lastModified": 1700922917, + "narHash": "sha256-ej2fch/T584b5K9sk1UhmZF7W6wEfDHuoUYpFN8dtvM=", "owner": "cachix", "repo": "pre-commit-hooks.nix", - "rev": "e558068cba67b23b4fbc5537173dbb43748a17e8", + "rev": "e5ee5c5f3844550c01d2131096c7271cec5e9b78", "type": "github" }, "original": { diff --git a/modules/common/bat.nix b/modules/common/bat.nix index d95f709..2dc0913 100644 --- a/modules/common/bat.nix +++ b/modules/common/bat.nix @@ -13,6 +13,7 @@ in { baj = "bat --language=json --tabs 2"; bay = "bat --language=yaml --tabs 2"; bas = "bat --language=syslog"; + less = "bat"; }; hm.programs.bat = { diff --git a/modules/common/common/nix.nix b/modules/common/common/nix.nix index 39e3282..3735174 100644 --- a/modules/common/common/nix.nix +++ b/modules/common/common/nix.nix @@ -54,6 +54,8 @@ with lib; { warn-dirty = false; + keep-going = true; + substituters = [ "https://azahi.cachix.org" "https://cache.iog.io" diff --git a/modules/common/default.nix b/modules/common/default.nix index b360049..3b42031 100644 --- a/modules/common/default.nix +++ b/modules/common/default.nix @@ -7,6 +7,7 @@ _: { ./curl.nix ./direnv.nix ./emacs + ./eza.nix ./fonts.nix ./git.nix ./gnupg.nix diff --git a/modules/common/emacs/default.nix b/modules/common/emacs/default.nix index 94c7729..5402b34 100644 --- a/modules/common/emacs/default.nix +++ b/modules/common/emacs/default.nix @@ -66,13 +66,15 @@ in { extraBins = with pkgs; [ (aspellWithDicts (p: with p; [en ru])) # :checkers (spell +aspell) + # wordnet # :tools (lookup +dictionary +offline) asmfmt # :editor format - bashdb # :lang sh :tools debugger cargo # :lang rust clang-tools # :lang (cc +lsp) :editor format cmake # :lang cc :term vterm cmake-format # :lang cc :editor format cmigemo # :lang japanese + config.hm.programs.emacs.package # !doom + config.nix.package # !doom dockerfile-language-server-nodejs # :tools (docker +lsp) dockfmt # :tools docker :editor format editorconfig-core-c # :tools editorconfig @@ -137,7 +139,6 @@ in { texlab # lang (tex +lsp) texlive.combined.scheme-full # :lang org tex unzip # :tools debugger - wordnet # :tools (lookup +dictionary +offline) yaml-language-server # :lang (yaml +lsp) zig # :lang zig :editor format zls # :lang (zig +lsp) @@ -151,6 +152,11 @@ in { then [gdb] # :tools debugger else [lldb] # :tools debugger ); + + parinferRustLibrary = + if (hasSuffix "linux" this.system) + then "${pkgs.parinfer-rust}/lib/libparinfer_rust.so" + else "${pkgs.parinfer-rust}/lib/libparinfer_rust.dylib"; in '' ;; Integrate packages which are required by various modules ;; without polluting the user's profile. @@ -181,7 +187,7 @@ in { ;; :editor parinfer (setq parinfer-rust-auto-download nil - parinfer-rust-library "${pkgs.parinfer-rust}/lib/libparinfer_rust.so") + parinfer-rust-library "${parinferRustLibrary}") ;; :lang nix ;; HACK Trick `nix-mode' to use alejandra instead of nixfmt. @@ -239,18 +245,7 @@ in { programs = { emacs = { enable = true; - package = - (pkgs.emacs29.override (finalAttrs: { - stdenv = pkgs.useMoldLinker finalAttrs.stdenv; - })) - .overrideAttrs (_: final: { - configureFlags = - (final.configureFlags or []) - ++ [ - "--without-mailutils" - "--without-pop" - ]; - }); + package = pkgs.emacs29; }; bash.initExtra = mkAfter '' @@ -268,6 +263,10 @@ in { vterm_cmd find-file "$(realpath "''${@:-.}")" } fi + + # Not sourced from inside Emacs for some reason. Maybe it's not + # considered an interactive shell? + [[ -f ~/.profile ]] && . ~/.profile ''; }; }; diff --git a/modules/common/emacs/doom/config.el b/modules/common/emacs/doom/config.el index dee3d3d..7d92aea 100644 --- a/modules/common/emacs/doom/config.el +++ b/modules/common/emacs/doom/config.el @@ -196,8 +196,9 @@ (mapcar (lambda (server) `(,server :server-buffer-name ,server - :host "shire.net" - :port 6667 + :host "azahi.cc" + :port 6697 + :tls t :user ,(concat circe-default-user "/" server) :pass ,(lambda (&rest _) (+pass-get-secret "server/soju.manwe.shire.net/azahi")))) diff --git a/modules/common/eza.nix b/modules/common/eza.nix new file mode 100644 index 0000000..be590b4 --- /dev/null +++ b/modules/common/eza.nix @@ -0,0 +1,21 @@ +{ + config, + lib, + pkgs, + ... +}: +with lib; let + cfg = config.nixfiles.modules.eza; +in { + options.nixfiles.modules.eza.enable = mkEnableOption "eza, an alternative to ls"; + + config = mkIf cfg.enable { + nixfiles.modules.common.shell.aliases = rec { + ls = "eza --smart-group --dereference"; + ll = "${ls} --long --grid"; + la = "${ll} --header --all"; + }; + + hm.home.packages = [pkgs.eza]; + }; +} diff --git a/modules/common/fonts.nix b/modules/common/fonts.nix index 1e204e5..6bd3e71 100644 --- a/modules/common/fonts.nix +++ b/modules/common/fonts.nix @@ -28,8 +28,6 @@ with lib; { source-han-sans source-han-serif noto-fonts - noto-fonts-emoji - twitter-color-emoji font-awesome ]; }; diff --git a/modules/common/profiles/default.nix b/modules/common/profiles/default.nix index ad5e841..2b24752 100644 --- a/modules/common/profiles/default.nix +++ b/modules/common/profiles/default.nix @@ -73,6 +73,8 @@ in { ]; nixfiles.modules = { + bat.enable = true; + eza.enable = true; htop.enable = true; tmux.enable = true; vim.enable = true; diff --git a/modules/common/profiles/dev/default.nix b/modules/common/profiles/dev/default.nix index 822778f..2d0c0f6 100644 --- a/modules/common/profiles/dev/default.nix +++ b/modules/common/profiles/dev/default.nix @@ -17,7 +17,6 @@ in { config = mkIf cfg.enable { nixfiles.modules = { - common.nix.allowedUnfreePackages = ["terraform"]; bat.enable = true; curl.enable = true; direnv.enable = true; @@ -90,8 +89,6 @@ in { sops httpie logcli - terraform - opentofu ]; }; }; diff --git a/modules/darwin/profiles/headful.nix b/modules/darwin/profiles/headful.nix index 01b1951..826e45a 100644 --- a/modules/darwin/profiles/headful.nix +++ b/modules/darwin/profiles/headful.nix @@ -10,18 +10,21 @@ in { config = mkIf cfg.enable { nixfiles.modules.homebrew.enable = true; + # I'm addicted to GNU... hm.home.packages = with pkgs; [ coreutils findutils + getopt gnugrep gnused gnutar + gzip + which ]; homebrew.casks = [ {name = "firefox";} {name = "iterm2";} - {name = "macfuse";} {name = "telegram-desktop";} ]; }; diff --git a/modules/nixos/common/locale.nix b/modules/nixos/common/locale.nix index 09e0686..9d73af4 100644 --- a/modules/nixos/common/locale.nix +++ b/modules/nixos/common/locale.nix @@ -23,6 +23,31 @@ with lib; { }; }; + hm.xdg.configFile."fcitx5/profile".text = generators.toINI {} { + "Groups/0" = { + Name = "Default"; + DefaultIM = "mozc"; + "Default Layout" = "us"; + }; + + "Groups/0/Items/0" = { + Name = "keyboard-us"; + Layout = ""; + }; + + "Groups/0/Items/1" = { + Name = "mozc"; + Layout = "us"; + }; + + "Groups/0/Items/2" = { + Name = "keyboard-ru-phonetic"; + Layout = ""; + }; + + GroupOrder."0" = "Default"; + }; + services.xserver = { layout = "us"; xkbOptions = concatStringsSep "," [ diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 35694f4..ee63ba1 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -66,6 +66,7 @@ _: { ./unbound.nix ./vaultwarden.nix ./vim + ./wayland.nix ./wireguard.nix ./x11.nix ./xmonad.nix diff --git a/modules/nixos/dwm.nix b/modules/nixos/dwm.nix index 459aae5..9c5e283 100644 --- a/modules/nixos/dwm.nix +++ b/modules/nixos/dwm.nix @@ -94,28 +94,28 @@ in { }; static const Key keys[] = { - { MODKEY, XK_x, spawn, {.v = dmenucmd } }, - { MODKEY, XK_Return, spawn, {.v = termcmd } }, - { MODKEY, XK_b, togglebar, {0} }, - { MODKEY, XK_j, focusstack, {.i = +1 } }, - { MODKEY, XK_k, focusstack, {.i = -1 } }, - { MODKEY|ShiftMask, XK_k, incnmaster, {.i = +1 } }, - { MODKEY|ShiftMask, XK_j, incnmaster, {.i = -1 } }, - { MODKEY, XK_comma, setmfact, {.f = -0.05} }, - { MODKEY, XK_period, setmfact, {.f = +0.05} }, - { MODKEY, XK_p, zoom, {0} }, - { MODKEY, XK_Tab, view, {0} }, - { MODKEY, XK_d, killclient, {0} }, - { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, - { MODKEY, XK_m, setlayout, {.v = &layouts[1]} }, - { MODKEY, XK_f, setlayout, {.v = &layouts[2]} }, - { MODKEY, XK_o, togglefloating, {0} }, - { MODKEY, XK_0, view, {.ui = ~0 } }, - { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, - { MODKEY, XK_h, focusmon, {.i = -1 } }, - { MODKEY, XK_l, focusmon, {.i = +1 } }, - { MODKEY|ShiftMask, XK_h, tagmon, {.i = -1 } }, - { MODKEY|ShiftMask, XK_l, tagmon, {.i = +1 } }, + { MODKEY, XK_x, spawn, {.v = dmenucmd} }, + { MODKEY, XK_Return, spawn, {.v = termcmd} }, + { MODKEY, XK_b, togglebar, {0} }, + { MODKEY, XK_j, focusstack, {.i = +1} }, + { MODKEY, XK_k, focusstack, {.i = -1} }, + { MODKEY|ShiftMask, XK_k, incnmaster, {.i = +1} }, + { MODKEY|ShiftMask, XK_j, incnmaster, {.i = -1} }, + { MODKEY, XK_comma, setmfact, {.f = -0.05} }, + { MODKEY, XK_period, setmfact, {.f = +0.05} }, + { MODKEY, XK_p, zoom, {0} }, + { MODKEY, XK_Tab, view, {0} }, + { MODKEY, XK_d, killclient, {0} }, + { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XK_m, setlayout, {.v = &layouts[1]} }, + { MODKEY, XK_f, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_o, togglefloating, {0} }, + { MODKEY, XK_0, view, {.ui = ~0} }, + { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0} }, + { MODKEY, XK_h, focusmon, {.i = -1} }, + { MODKEY, XK_l, focusmon, {.i = +1} }, + { MODKEY|ShiftMask, XK_h, tagmon, {.i = -1} }, + { MODKEY|ShiftMask, XK_l, tagmon, {.i = +1} }, TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) TAGKEYS( XK_3, 2) @@ -125,21 +125,21 @@ in { TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) - { MODKEY|ShiftMask, XK_q, quit, {0} }, + { MODKEY|ShiftMask, XK_q, quit, {0} }, }; static const Button buttons[] = { - { ClkLtSymbol, 0, Button1, setlayout, {0} }, + { ClkLtSymbol, 0, Button1, setlayout, {0} }, { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} }, - { ClkWinTitle, 0, Button2, zoom, {0} }, - { ClkStatusText, 0, Button2, spawn, {.v = termcmd } }, - { ClkClientWin, MODKEY, Button1, movemouse, {0} }, - { ClkClientWin, MODKEY, Button2, togglefloating, {0} }, - { ClkClientWin, MODKEY, Button3, resizemouse, {0} }, - { ClkTagBar, 0, Button1, view, {0} }, - { ClkTagBar, 0, Button3, toggleview, {0} }, - { ClkTagBar, MODKEY, Button1, tag, {0} }, - { ClkTagBar, MODKEY, Button3, toggletag, {0} }, + { ClkWinTitle, 0, Button2, zoom, {0} }, + { ClkStatusText, 0, Button2, spawn, {.v = termcmd} }, + { ClkClientWin, MODKEY, Button1, movemouse, {0} }, + { ClkClientWin, MODKEY, Button2, togglefloating, {0} }, + { ClkClientWin, MODKEY, Button3, resizemouse, {0} }, + { ClkTagBar, 0, Button1, view, {0} }, + { ClkTagBar, 0, Button3, toggleview, {0} }, + { ClkTagBar, MODKEY, Button1, tag, {0} }, + { ClkTagBar, MODKEY, Button3, toggletag, {0} }, }; ''; }; diff --git a/modules/nixos/emacs.nix b/modules/nixos/emacs.nix index c851389..7d2112b 100644 --- a/modules/nixos/emacs.nix +++ b/modules/nixos/emacs.nix @@ -7,19 +7,15 @@ with lib; let cfg = config.nixfiles.modules.emacs; in { config = mkIf cfg.enable { - nixfiles.modules = { - common.xdg.defaultApplications.emacs = [ - "application/atom+xml" - "application/json" - "application/rss+xml" - "application/schema+json" - "application/xhtml+xml" - "application/xml" - "text/csv" - "text/plain" - ]; - - x11.enable = true; - }; + nixfiles.modules.common.xdg.defaultApplications.emacs = [ + "application/atom+xml" + "application/json" + "application/rss+xml" + "application/schema+json" + "application/xhtml+xml" + "application/xml" + "text/csv" + "text/plain" + ]; }; } diff --git a/modules/nixos/firefox/addons.nix b/modules/nixos/firefox/addons.nix index fc4d51b..544b5cd 100644 --- a/modules/nixos/firefox/addons.nix +++ b/modules/nixos/firefox/addons.nix @@ -892,10 +892,10 @@ }; "rikaichamp" = buildFirefoxXpiAddon { pname = "rikaichamp"; - version = "1.15.1"; + version = "1.16.0"; addonId = "{59812185-ea92-4cca-8ab7-cfcacee81281}"; - url = "https://addons.mozilla.org/firefox/downloads/file/4162143/10ten_ja_reader-1.15.1.xpi"; - sha256 = "cf638be78da479ccd54fe6ace7990a5ba7757562ec48b2a177e24c86d2ee235c"; + url = "https://addons.mozilla.org/firefox/downloads/file/4200662/10ten_ja_reader-1.16.0.xpi"; + sha256 = "ac91a5aee5c6a018c397257eb090eaa640feb0a17aa2e0f91248bad7d1a3e6c1"; meta = with lib; { homepage = "https://github.com/birchill/10ten-ja-reader/"; description = "Quickly translate Japanese by hovering over words. Formerly released as Rikaichamp."; diff --git a/modules/nixos/fonts.nix b/modules/nixos/fonts.nix index f9624ec..a333cb3 100644 --- a/modules/nixos/fonts.nix +++ b/modules/nixos/fonts.nix @@ -12,7 +12,13 @@ in { nixfiles.modules.common.nix.allowedUnfreePackages = ["symbola"]; hm.fonts.fontconfig.enable = true; fonts = { - packages = cfg.packages ++ [pkgs.symbola]; + packages = + cfg.packages + ++ (with pkgs; [ + noto-fonts-emoji + twitter-color-emoji + symbola + ]); fontconfig = { enable = true; diff --git a/modules/nixos/kde.nix b/modules/nixos/kde.nix index 1a02d9d..adec490 100644 --- a/modules/nixos/kde.nix +++ b/modules/nixos/kde.nix @@ -15,7 +15,6 @@ in { gnupg.pinentry = "qt"; sound.enable = true; - x11.enable = true; }; hm = { diff --git a/modules/nixos/loki.nix b/modules/nixos/loki.nix index 0a92fbd..6794ba9 100644 --- a/modules/nixos/loki.nix +++ b/modules/nixos/loki.nix @@ -87,10 +87,6 @@ in { retention_period = "720h"; }; - cache_config = { - enable_fifocache = false; - }; - schema_config.configs = [ { from = "2020-01-01"; diff --git a/modules/nixos/profiles/headful.nix b/modules/nixos/profiles/headful.nix index 938b711..a168d0a 100644 --- a/modules/nixos/profiles/headful.nix +++ b/modules/nixos/profiles/headful.nix @@ -19,6 +19,9 @@ in { dwm.enable = mkDefault false; kde.enable = mkDefault true; xmonad.enable = mkDefault false; + + # Potentially remove in favor of Wayland in the future. + x11.enable = mkDefault true; }; hm = { diff --git a/modules/nixos/soju.nix b/modules/nixos/soju.nix index b43fbdc..ea95bb3 100644 --- a/modules/nixos/soju.nix +++ b/modules/nixos/soju.nix @@ -11,12 +11,6 @@ in { options.nixfiles.modules.soju = { enable = mkEnableOption "soju"; - protocol = mkOption { - description = "Port."; - type = with types; enum ["ircs" "irc+insecure"]; - default = "irc+insecure"; - }; - address = mkOption { description = "Address."; type = with types; str; @@ -26,7 +20,7 @@ in { port = mkOption { description = "Port."; type = with types; port; - default = 6667; + default = 6697; }; domain = mkOption { @@ -50,13 +44,17 @@ in { db = "soju"; in mkIf cfg.enable { - nixfiles.modules.postgresql = { - enable = true; - extraPostStart = [ - '' - $PSQL "${db}" -tAc 'GRANT ALL ON SCHEMA "public" TO "${db}"' - '' - ]; + nixfiles.modules = { + acme.enable = true; + nginx.enable = true; + postgresql = { + enable = true; + extraPostStart = [ + '' + $PSQL "${db}" -tAc 'GRANT ALL ON SCHEMA "public" TO "${db}"' + '' + ]; + }; }; services.postgresql = { @@ -77,7 +75,8 @@ in { ExecStart = let # https://soju.im/doc/soju.1.html configFile = pkgs.writeText "soju.conf" '' - listen ${cfg.protocol}://${cfg.address}:${toString cfg.port} + listen ircs://${cfg.address}:${toString cfg.port} + tls ${with config.certs.${cfg.domain}; "${directory}/fullchain.pem ${directory}/key.pem"} ${ with cfg.prometheus; optionalString enable @@ -100,6 +99,7 @@ in { "-config ${configFile}" ]; DynamicUser = true; + SupplementaryGroups = [config.services.nginx.group]; AmbientCapabilities = [""]; CapabilityBoundingSet = [""]; UMask = "0077"; diff --git a/modules/nixos/syncthing.nix b/modules/nixos/syncthing.nix index 39579f8..ecc983f 100644 --- a/modules/nixos/syncthing.nix +++ b/modules/nixos/syncthing.nix @@ -12,6 +12,12 @@ in { options.nixfiles.modules.syncthing = { enable = mkEnableOption "Syncthing"; + port = mkOption { + description = "Port."; + type = with types; port; + default = 8384; + }; + domain = mkOption { description = "Domain name sans protocol scheme."; type = with types; str; @@ -41,15 +47,16 @@ in { user = my.username; inherit (config.my) group; - dataDir = config.my.home; + dataDir = "${config.dirs.config}/syncthing"; + configDir = config.services.syncthing.dataDir; - guiAddress = "127.0.0.1:8384"; + guiAddress = "127.0.0.1:${toString cfg.port}"; cert = config.secrets."syncthing-cert-${this.hostname}".path; key = config.secrets."syncthing-key-${this.hostname}".path; - overrideDevices = true; - overrideFolders = true; + overrideDevices = false; + overrideFolders = false; settings = { options = { @@ -70,8 +77,11 @@ in { devices = mapAttrs (name: attr: mkIf (attr.syncthing.id != null && hasAttr "wireguard" attr) { inherit (attr.syncthing) id; - addresses = ["tcp://${name}.${config.networking.domain}:22000"]; - introducer = this.isHeadless; + compression = "metadata"; + introducer = false; + address = "tcp://${name}.${config.networking.domain}:22000"; + autoAcceptFolders = true; + untrusted = false; }) my.configurations; @@ -107,17 +117,17 @@ in { versioning = trashcan; }; org = { - path = "${documents}/org"; # Configured by Emacs. + path = "${documents}/org"; devices = all; versioning = simple; }; roam = { - path = "${documents}/roam"; # Configured by Emacs. + path = "${documents}/roam"; devices = notOther; versioning = simple; }; elfeed = { - path = "${config.my.home}/.elfeed"; # Configured by Emacs. + path = "${config.my.home}/.elfeed"; devices = notOther; versioning = trashcan; }; diff --git a/modules/nixos/wayland.nix b/modules/nixos/wayland.nix new file mode 100644 index 0000000..5068c25 --- /dev/null +++ b/modules/nixos/wayland.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + ... +}: +with lib; let + cfg = config.nixfiles.modules.wayland; +in { + options.nixfiles.modules.wayland.enable = mkEnableOption "Wayland"; + + config = mkIf cfg.enable { + assertions = [ + { + assertion = !config.nixfiles.modules.x11.enable; + message = "Pick only one!"; + } + ]; + }; +} diff --git a/modules/nixos/x11.nix b/modules/nixos/x11.nix index b1bca8f..b629aeb 100644 --- a/modules/nixos/x11.nix +++ b/modules/nixos/x11.nix @@ -10,7 +10,12 @@ in { options.nixfiles.modules.x11.enable = mkEnableOption "X11"; config = mkIf cfg.enable { - nixfiles.modules.fonts.enable = true; + assertions = [ + { + assertion = !config.nixfiles.modules.wayland.enable; + message = "Pick only one!"; + } + ]; hm = { home.sessionVariables = { diff --git a/nixosConfigurations/eonwe/default.nix b/nixosConfigurations/eonwe/default.nix index 97ff5e5..a469fff 100644 --- a/nixosConfigurations/eonwe/default.nix +++ b/nixosConfigurations/eonwe/default.nix @@ -86,7 +86,6 @@ with lib; { # parallelisation support enabled, so we will make sure that all cores are # utilised and limit the job queue to one. nix.settings = { - keep-going = true; max-jobs = 1; cores = 32; }; diff --git a/nixosConfigurations/manwe/default.nix b/nixosConfigurations/manwe/default.nix index c2ac8be..d9ec359 100644 --- a/nixosConfigurations/manwe/default.nix +++ b/nixosConfigurations/manwe/default.nix @@ -47,35 +47,6 @@ with lib; { plausible.enable = true; }; - # A VPN to play old LAN games with the boys. - # secrets."wireguard-private-key-70".file = "${inputs.self}/secrets/wireguard-private-key-70"; - # networking = mkIf config.nixfiles.modules.wireguard.server.enable { - # wireguard.interfaces.wg70 = { - # ips = ["10.70.0.1/16"]; - # listenPort = 7070; - # privateKeyFile = config.secrets."wireguard-private-key-70".path; - # peers = [ - # { - # publicKey = "@PUBLIC_KEY@"; - # allowedIPs = ["10.70.1.1/32"]; - # } - # { - # publicKey = "@PUBLIC_KEY@"; - # allowedIPs = ["10.70.1.2/32"]; - # } - # { - # publicKey = "@PUBLIC_KEY@"; - # allowedIPs = ["10.70.1.3/32"]; - # } - # { - # publicKey = "@PUBLIC_KEY@"; - # allowedIPs = ["10.70.1.4/32"]; - # } - # ]; - # }; - # firewall.allowedUDPPorts = [7070]; - # }; - boot = { loader.grub = { enable = true; diff --git a/packages/nixfiles.nix b/packages/nixfiles.nix index 02e89f2..bfc869a 100644 --- a/packages/nixfiles.nix +++ b/packages/nixfiles.nix @@ -26,6 +26,12 @@ # Hopefully Naïm will not sue me for copyright infrigment. text = '' nixfiles="''${NIXFILES:-.}" + rebuild="nixos-rebuild" + rebuild_opts=(--fast --use-remote-sudo) + if [[ "$(uname)" == Darwin ]]; then + rebuild="darwin-rebuild" + rebuild_opts=() + fi cmd=$1 shift case $cmd in @@ -108,10 +114,10 @@ # Assumes that hosts are configured in the OpenSSH configuration. host=''${cmd#@} hostname=$(ssh -q "$host" 'echo "$HOSTNAME"') - exec nixos-rebuild -v --flake "$nixfiles#$hostname" --target-host "$host" --use-remote-sudo --show-trace "$@" + exec "$rebuild" -v --flake "$nixfiles#$hostname" --target-host "$host" "''${rebuild_opts[@]}" --show-trace "$@" ;; *) - exec nixos-rebuild -v --fast --flake "$nixfiles" --use-remote-sudo --show-trace "$cmd" "$@" + exec "$rebuild" -v --flake "$nixfiles" "''${rebuild_opts[@]}" --show-trace "$cmd" "$@" ;; esac ''; |