diff --git a/Droidnix/assets/common/apps/flatpaks.conf b/Droidnix/assets/common/apps/flatpaks.conf new file mode 100644 index 000000000..627a8daf5 --- /dev/null +++ b/Droidnix/assets/common/apps/flatpaks.conf @@ -0,0 +1,22 @@ +############################################## +# These files are just for reference. +# If you want to change anything, edit the source files in: +# ~/henrovnix/assets/conf +# +# After that, run: +# cd ~/henrovnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .# +# +# If everything still works, you can use the same command but: +# - keep "switch" +# - and add a reboot: +# +# cd ~/henrovnix && sudo nixos-rebuild switch --flake .# && systemctl reboot +# +# NOTE: +# Make sure the lines starting with: cd ~/henrovnix +# are written as ONE single line. +############################################## +#app.zen_browser.zen +com.github.tchx84.Flatseal +eu.betterbird.Betterbird +com.todoist.Todoist diff --git a/Droidnix/assets/common/apps/packages.conf b/Droidnix/assets/common/apps/packages.conf new file mode 100644 index 000000000..8dc2d8722 --- /dev/null +++ b/Droidnix/assets/common/apps/packages.conf @@ -0,0 +1,79 @@ +############################################## +# These files are just for reference. +# If you want to change anything, edit the source files in: +# ~/henrovnix/assets/conf +# +# After that, run: +# cd ~/henrovnix && emacs README.org --batch -f org-babel-tangle && git add . && git commit -m "Adjusted conf files" && sudo nixos-rebuild switch --flake .# +# +# If everything still works, you can use the same command but: +# - keep "switch" +# - and add a reboot: +# +# cd ~/henrovnix && sudo nixos-rebuild switch --flake .# && systemctl reboot +# +# Make sure the lines starting with: cd ~/henrovnix +# are written as ONE single line. +# +#IMPORTANT: +# Only packages/attributes that exist in Nixpkgs can be installed. +# Check names on https://search.nixos.org/packages +# A wrong package name (or attribute path) will cause the Nix build to fail. +############################################### + + +# system +nixVersions.latest +wofi +xdg-utils +desktop-file-utils +playerctl +mpv +networkmanagerapplet + +#productivity +todoist + +# browsers +brave +vivaldi +chromium + +# hyprland +hyprpaper + +# utils +wget +kdePackages.kdeconnect-kde +_1password-gui +tree +gparted +file +htop +wev +solaar +baobab +duf +zed-editor + +# office +obsidian +onlyoffice-desktopeditors + +# development +postman +tea + +#jetbrains.pycharm +python3 + +# communication +nextcloud-talk-desktop +signal-desktop +openssl + +# multimedia +audacity +handbrake +spotify +vlc diff --git a/Droidnix/generated/system/applications/flatpaks.nix b/Droidnix/generated/system/applications/flatpaks.nix index e660c723e..ea4958de7 100644 --- a/Droidnix/generated/system/applications/flatpaks.nix +++ b/Droidnix/generated/system/applications/flatpaks.nix @@ -1,101 +1,111 @@ -{ config, pkgs, lib, flakeRoot, ... }: +{ + config, + pkgs, + lib, + flakeRoot, + ... +}: let moduleName = "install-flatpaks"; - flatpakConfPath = flakeRoot.outPath + "/assets/conf/apps/flatpaks.conf"; + flatpakConfPath = flakeRoot.outPath + "/assets/common/apps/flatpaks.conf"; raw = builtins.readFile flatpakConfPath; # Explicit "\n" so we never accidentally split into characters rawLines = lib.splitString "\n" raw; # Guard: if we accidentally split into characters, rawLines length ~= stringLength raw - _guard = assert !( - builtins.stringLength raw > 1 && - builtins.length rawLines == builtins.stringLength raw - ); true; + _guard = + assert !(builtins.stringLength raw > 1 && builtins.length rawLines == builtins.stringLength raw); + true; - cleanLine = l: - let - noCR = lib.replaceStrings [ "\r" ] [ "" ] l; - noInlineComment = lib.head (lib.splitString "#" noCR); - in - lib.strings.trim noInlineComment; + cleanLine = + l: + let + noCR = lib.replaceStrings [ "\r" ] [ "" ] l; + noInlineComment = lib.head (lib.splitString "#" noCR); + in + lib.strings.trim noInlineComment; - entries = - builtins.filter (l: l != "") - (map cleanLine rawLines); + entries = builtins.filter (l: l != "") (map cleanLine rawLines); # Flatpak app IDs are reverse-DNS style like org.example.App (at least 2 dots). # We'll validate and fail early with a clear message. dotCount = s: builtins.length (lib.splitString "." s) - 1; - isValidId = s: - (dotCount s) >= 2; # matches the error you're seeing: "at least 2 periods" + isValidId = s: (dotCount s) >= 2; # matches the error you're seeing: "at least 2 periods" - _validate = - builtins.seq _guard ( - builtins.map (id: - if isValidId id then true else - throw '' - ${moduleName}: invalid Flatpak ID in flatpaks.conf (needs reverse-DNS with at least 2 dots) + _validate = builtins.seq _guard ( + builtins.map ( + id: + if isValidId id then + true + else + throw '' + ${moduleName}: invalid Flatpak ID in flatpaks.conf (needs reverse-DNS with at least 2 dots) - Token : ${builtins.toJSON id} - flatpaks.conf : ${toString flatpakConfPath} + Token : ${builtins.toJSON id} + flatpaks.conf : ${toString flatpakConfPath} - Fix: remove stray tokens/headers, or comment them out with '#'. - '' - ) entries + Fix: remove stray tokens/headers, or comment them out with '#'. + '' + ) entries ); # Use validated entries flatpakApps = builtins.seq _validate entries; syncFlatpaks = pkgs.writeShellScript "sync-flatpaks" '' - set -euo pipefail + set -euo pipefail - # Use the deployed config path (matches environment.etc below) - CONF="/etc/flatpak/flatpaks.conf" - if [[ -f "$CONF" ]]; then - echo "flatpak-sync: using $CONF" - else - echo "flatpak-sync: WARNING: $CONF not found, using embedded list" - fi + # Use the deployed config path (matches environment.etc below) + CONF="/etc/flatpak/flatpaks.conf" + if [[ -f "$CONF" ]]; then + echo "flatpak-sync: using $CONF" + else + echo "flatpak-sync: WARNING: $CONF not found, using embedded list" + fi - if ! flatpak remotes --system --columns=name | grep -qx flathub; then - flatpak remote-add --system --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo - fi + if ! flatpak remotes --system --columns=name | grep -qx flathub; then + flatpak remote-add --system --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + fi - desired_apps=( - ${lib.concatStringsSep "\n" (map (a: ''"${a}"'') flatpakApps)} - ) + desired_apps=( + ${lib.concatStringsSep "\n" (map (a: ''"${a}"'') flatpakApps)} + ) - for app in "''${desired_apps[@]}"; do - if ! flatpak info --system "$app" >/dev/null 2>&1; then - flatpak install --system -y --noninteractive flathub "$app" - fi - done + for app in "''${desired_apps[@]}"; do + if ! flatpak info --system "$app" >/dev/null 2>&1; then + flatpak install --system -y --noninteractive flathub "$app" + fi + done ''; in { services.flatpak.enable = true; xdg.portal = { - enable = true; + enable = true; }; # Deploy the config file for runtime visibility/debugging environment.etc."flatpak/flatpaks.conf".source = lib.mkForce flatpakConfPath; systemd.services.flatpak-sync = { - description = "Install Flatpak apps listed in flatpaks.conf"; - wantedBy = [ "multi-user.target" ]; - wants = [ "network-online.target" ]; - after = [ "network-online.target" ]; + description = "Install Flatpak apps listed in flatpaks.conf"; + wantedBy = [ "multi-user.target" ]; + wants = [ "network-online.target" ]; + after = [ "network-online.target" ]; - serviceConfig = { - Type = "oneshot"; - ExecStart = syncFlatpaks; - }; + serviceConfig = { + Type = "oneshot"; + ExecStart = syncFlatpaks; + }; - restartTriggers = [ flatpakConfPath ]; - path = [ pkgs.flatpak pkgs.coreutils pkgs.gnugrep pkgs.gnused ]; + restartTriggers = [ flatpakConfPath ]; + path = [ + pkgs.flatpak + pkgs.coreutils + pkgs.gnugrep + pkgs.gnused + ]; }; } diff --git a/Droidnix/generated/system/applications/packages.nix b/Droidnix/generated/system/applications/packages.nix index a8a29312e..88b2b04bf 100644 --- a/Droidnix/generated/system/applications/packages.nix +++ b/Droidnix/generated/system/applications/packages.nix @@ -1,43 +1,46 @@ -{ config, lib, pkgs, flakeRoot, inputs, ... }: +{ + config, + lib, + pkgs, + flakeRoot, + inputs, + ... +}: let - packagesConfPath = flakeRoot.outPath + "/assets/conf/apps/packages.conf"; + packagesConfPath = flakeRoot.outPath + "/assets/common/apps/packages.conf"; raw = builtins.readFile packagesConfPath; # IMPORTANT: explicit "\n" so we never accidentally split into characters rawLines = lib.splitString "\n" raw; # Guard: if we accidentally split into characters, rawLines length ~= stringLength raw - _guard = assert !( - builtins.stringLength raw > 1 && - builtins.length rawLines == builtins.stringLength raw - ); true; - cleanLine = l: - let - noCR = lib.replaceStrings [ "\r" ] [ "" ] l; - noInlineComment = lib.head (lib.splitString "#" noCR); - in - lib.strings.trim noInlineComment; - entries = - builtins.filter (l: l != "") - (map cleanLine rawLines); - resolvePkg = name: - let - parts = lib.splitString "." name; - found = lib.attrByPath parts null pkgs; - in - if found == null then - throw '' - packages.nix: package not found in pkgs - Token : ${builtins.toJSON name} - packages.conf : ${toString packagesConfPath} - Hint : check the attribute name on search.nixos.org/packages - '' - else - found; + _guard = + assert !(builtins.stringLength raw > 1 && builtins.length rawLines == builtins.stringLength raw); + true; + cleanLine = + l: + let + noCR = lib.replaceStrings [ "\r" ] [ "" ] l; + noInlineComment = lib.head (lib.splitString "#" noCR); + in + lib.strings.trim noInlineComment; + entries = builtins.filter (l: l != "") (map cleanLine rawLines); + resolvePkg = + name: + let + parts = lib.splitString "." name; + found = lib.attrByPath parts null pkgs; + in + if found == null then + throw '' + packages.nix: package not found in pkgs + Token : ${builtins.toJSON name} + packages.conf : ${toString packagesConfPath} + Hint : check the attribute name on search.nixos.org/packages + '' + else + found; packages = builtins.seq _guard (map resolvePkg entries); - zenBrowser = - inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.default; + zenBrowser = inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.default; in { - environment.systemPackages = - packages - ++ [ zenBrowser ]; + environment.systemPackages = packages ++ [ zenBrowser ]; }