diff --git a/README.md b/README.md index c8954d0..555f35a 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ inside the moonarch config. The XDG configuration files (niri, Quickshell, foot, GTK, Qt) come from the `moonarch` repository, which is consumed as a flake input. One set of config -files therefore stays valid on both NixOS and Arch. +files therefore serves every system that pulls it in. ## Layout diff --git a/flake.nix b/flake.nix index 0711d23..ff89a68 100644 --- a/flake.nix +++ b/flake.nix @@ -15,7 +15,7 @@ }; # Project sources. These repos are not flakes themselves, they are - # consumed as plain source trees pinned to a release tag. + # consumed as plain source trees following their default branch. moonarch = { url = "git+https://gitea.moonarch.de/nevaforget/moonarch.git"; flake = false; diff --git a/modules/desktop.nix b/modules/desktop.nix index 39bcbbe..910e07b 100644 --- a/modules/desktop.nix +++ b/modules/desktop.nix @@ -8,7 +8,7 @@ let etc = "${moonarchSrc}/defaults/etc"; # waypaper calls `swww`/`swww-daemon`, but the maintained successor ships as - # `awww`. Same compatibility symlinks the Arch package creates. + # `awww`. The symlinks keep the shared config working unchanged. swww-compat = pkgs.runCommand "swww-compat" { } '' mkdir -p "$out/bin" ln -s ${pkgs.awww}/bin/awww "$out/bin/swww" @@ -28,8 +28,8 @@ let # Same treatment for swaylock's wallpaper path. swaylock searches # ~/.swaylock/config, $XDG_CONFIG_HOME/swaylock/config and # SYSCONFDIR/swaylock/config — and its sysconfdir is inside the store here, - # so the home copy seeded below is the only one it ever reads. On Arch the - # same file ships to /etc/swaylock/config, which is why it lives in + # so the home copy seeded below is the only one it ever reads. The file is a + # system config rather than an XDG one, which is why moonarch keeps it under # defaults/etc/ rather than defaults/xdg/. swaylockConfig = pkgs.runCommand "swaylock-config" { } '' substitute ${etc}/swaylock/config "$out" \ @@ -43,7 +43,7 @@ let # which is what its own option documentation shows for a conf.d file. # # The file names the plugin as `librnnoise_ladspa`, resolved through - # LADSPA_PATH — /usr/lib/ladspa on Arch, nothing here. Substituted to the + # LADSPA_PATH, which points at nothing here. Substituted to the # store path, like the wallpaper paths above. LADSPA has no counterpart to # services.pipewire.extraLv2Packages, so the path belongs in the file. denoisingConfig = pkgs.runCommand "moonarch-pipewire-denoising" { } '' @@ -57,9 +57,9 @@ let # zsh/newuser runs its setup wizard on every interactive login for as long as # the user has none of .zshenv, .zprofile, .zshrc or .zlogin — the whole # configuration living in /etc/zshrc does not count. Seeded below to stop - # that, and deliberately without configuration: on Arch this file carries - # `source /etc/zsh/zshrc.moonarch`, which here would source the shared zshrc - # a second time, on top of the one /etc/zshrc already did. + # that, and deliberately without configuration: moonarch's own copy of this + # file sources the shared zshrc, which here would run it a second time, on + # top of the one /etc/zshrc already did. userZshrc = pkgs.writeText "zshrc" '' # The moonarch zsh configuration is system-wide, in /etc/zshrc. # @@ -77,13 +77,13 @@ in environment.etc = { # niri reads /etc/niri, not /etc/xdg/niri. Both are provided: the former # is what niri actually loads, the latter keeps the layout consistent with - # the Arch package and with any user config that includes it. + # moonarch's tree and with any user config that includes it. "niri/config.kdl".source = "${xdg}/niri/config.kdl"; "xdg/niri/config.kdl".source = "${xdg}/niri/config.kdl"; "xdg/quickshell/moonarch".source = "${xdg}/quickshell/moonarch"; "xdg/foot/foot.ini".source = "${xdg}/foot/foot.ini"; "xdg/fastfetch/config.jsonc".source = "${xdg}/fastfetch/config.jsonc"; - # defaults/xdg/kanshi/config is an empty placeholder — on Arch too. Not + # defaults/xdg/kanshi/config is an empty placeholder. Not # deployed: monitor profiles are machine specific and belong in # ~/.config/kanshi/config. An empty file parses fine; a missing one is what # kanshi reports as "failed to parse config file", which is why the unit in @@ -95,15 +95,14 @@ in # No xdg/pipewire/ entry: PipeWire does not read /etc/xdg, so the file was # deployed and inert. It goes through services.pipewire.configPackages # below instead. - # Kept for layout parity with the Arch package; waypaper itself only reads + # Kept for layout parity with moonarch's tree; waypaper itself only reads # the copy in the home directory, seeded below. "xdg/waypaper/config.ini".source = waypaperConfig; - # stasis reads /etc/stasis/ as its system-wide fallback, never /etc/xdg/. - "stasis/stasis.rune".source = "${xdg}/stasis/stasis.rune"; + # No stasis entry: /etc/stasis/ is only its fallback for a missing user + # config, and the seed below means there never is one. - # Configs outside /etc/xdg/ in the Arch package as well. - "mpv/mpv.conf".source = "${etc}/mpv/mpv.conf"; + # Configs that live outside defaults/xdg/ in moonarch as well. "xdg-desktop-portal/niri-portals.conf".source = "${etc}/xdg-desktop-portal/niri-portals.conf"; }; @@ -140,13 +139,12 @@ in programs.niri.enable = true; # niri searches $XDG_CONFIG_HOME/niri/config.kdl, then /etc/niri/config.kdl — - # not /etc/xdg. On Arch a one-line ~/.config/niri/config.kdl bridges there - # via `include`; here the system path is used directly, so nothing has to be - # placed in the home directory. + # not /etc/xdg. The system path is used directly, so nothing has to be placed + # in the home directory to bridge there. # config.kdl spawns the polkit agent by its FHS path # (/usr/lib/polkit-gnome/...). Provide that path rather than diverging the - # config, which is shared with Arch. + # config, which moonarch owns. systemd.tmpfiles.rules = [ "d /usr/lib 0755 root root -" "L+ /usr/lib/polkit-gnome - - - - ${pkgs.polkit_gnome}/libexec" @@ -155,7 +153,7 @@ in # --- Shell --- programs.zsh.enable = true; - # Same file the Arch package installs as /etc/zsh/zshrc.moonarch. zsh reads + # moonarch's shared zshrc, which it installs as /etc/zsh/zshrc.moonarch. zsh reads # /etc/zshrc before ~/.zshrc, so a user file still wins over it. programs.zsh.interactiveShellInit = '' source ${moonarchSrc}/defaults/shell/zshrc @@ -167,10 +165,9 @@ in # The zshrc owns the prompt, so nothing else has to run here. programs.zsh.promptInit = ""; - # The zshrc sources both plugins from /usr/share/zsh/plugins, the path the - # Arch packages use; the lookups are guarded and silently find nothing here. - # These modules source the same plugins from the store instead. The strategy - # is the one the zshrc sets on Arch. + # The zshrc sources both plugins from /usr/share/zsh/plugins; the lookups are + # guarded and silently find nothing here. These modules source the same + # plugins from the store instead, with the strategy the zshrc sets. programs.zsh.syntaxHighlighting.enable = true; programs.zsh.autosuggestions = { enable = true; @@ -262,7 +259,7 @@ in moonarchPkgs.sweet-cursors moonarchPkgs.moonarch-scripts - # Browser. Arch runs waterfox-bin, which nixpkgs does not carry; see + # Browser. moonarch runs waterfox-bin, which nixpkgs does not carry; see # DECISIONS.md for why this is not packaged here. librewolf @@ -275,7 +272,7 @@ in # Bar, notifications, clipboard. # Neither waybar nor swaync are installed: the Quickshell bar owns both - # roles. The "kept as a reserve" notes in the Arch config date from the + # roles. The "kept as a reserve" notes in moonarch's config date from the # migration and do not apply to a fresh setup. quickshell libnotify @@ -368,7 +365,7 @@ in # Seed configs for programs that read only from the home directory and have # no system-wide fallback. 'C' copies once and never overwrites, so user - # edits survive. This is what post-install.sh does imperatively on Arch. + # edits survive. This is what moonarch's post-install.sh does imperatively. systemd.user.tmpfiles.rules = [ "C %h/.config/waypaper/config.ini 0644 - - - ${waypaperConfig}" # stasis prefers the user config over /etc and generates its own if none diff --git a/modules/zed.nix b/modules/zed.nix index a5bd096..254eff8 100644 --- a/modules/zed.nix +++ b/modules/zed.nix @@ -25,11 +25,11 @@ let "base_keymap": "SublimeText", "cursor_shape": "block", "ui_font_size": 14, - "ui_font_family": "Hack Nerd Font", + "ui_font_family": "UbuntuSans Nerd Font", "ui_font_features": { "calt": true }, - "buffer_font_family": "Hack Nerd Font", + "buffer_font_family": "UbuntuSansMono Nerd Font", "buffer_font_size": 14, "theme": { "mode": "system",