Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions modules/default/welcome.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,11 @@
}:

let
nix-disk-manager = pkgs.callPackage ../../pkgs/glfos-welcome-screen {};
nix-disk-manager = pkgs.callPackage ../../pkgs/welcome-screen {};
in

{
environment.systemPackages = with pkgs; [
glfos-welcome-screen
welcome-screen
];
}
504 changes: 504 additions & 0 deletions pkgs/welcome-screen/LICENSE

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions pkgs/welcome-screen/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# glfos-welcome-screen
Welcome screen for glf os (a linux distribution, based on nixos)

## Build the derivation and test it

```bash
nix-shell -p appimage-run
appimage-run Welcome_screen-x86_64.AppImage
```
28 changes: 28 additions & 0 deletions pkgs/welcome-screen/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.

# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml

linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at https://dart.dev/lints.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule

# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
4 changes: 4 additions & 0 deletions pkgs/welcome-screen/appImage/AppRun
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/bin/sh
HERE="$(dirname "$(readlink -f "$0")")"
export LD_LIBRARY_PATH="$HERE/lib:$HERE/usr/lib:$LD_LIBRARY_PATH"
exec "$HERE/glfos_welcome_screen"
8 changes: 8 additions & 0 deletions pkgs/welcome-screen/appImage/glfosWelcomeScreen.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=Welcome screen
Exec=glfos_welcome_screen %u
Icon=glfosWelcomeScreen
Categories=Utility;
Binary file added pkgs/welcome-screen/assets/images/512x512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pkgs/welcome-screen/assets/images/gaming.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pkgs/welcome-screen/assets/images/gaming_menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pkgs/welcome-screen/assets/images/help.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pkgs/welcome-screen/assets/images/help_dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pkgs/welcome-screen/assets/images/help_menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pkgs/welcome-screen/assets/images/studio_128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added pkgs/welcome-screen/assets/images/updates.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
21 changes: 21 additions & 0 deletions pkgs/welcome-screen/assets/localizations/en.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"lang_en": "English",
"lang_fr": "French",
"app_title": "Welcome",
"menu_home": "Home",
"menu_gaming": "Gaming",
"menu_studio": "Studio",
"menu_updates": "Updates",
"menu_diskManager": "Disk Management",
"menu_easyflatpak": "Software Center",
"menu_powerusers": "Advanced Users",
"menu_help": "Need help?",
"page_home_title": "Home",
"page_gaming_title": "Gaming-Oriented",
"page_studio_title": "Studio",
"page_updates_title": "Updates",
"page_diskmanager_title": "Disk Management",
"page_easyflatpak_title": "Software Center",
"page_help_title": "Need help?",
"bottom_show_window_next_time": "Show this window next time?"
}
21 changes: 21 additions & 0 deletions pkgs/welcome-screen/assets/localizations/fr.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"lang_en": "English",
"lang_fr": "Français",
"app_title": "Bienvenue",
"menu_home": "Accueil",
"menu_gaming": "Gaming",
"menu_studio": "Studio",
"menu_updates": "Mises à jour",
"menu_diskManager": "Gestion des disques",
"menu_easyflatpak": "Logithèque",
"menu_powerusers": "Utilisateurs avancés",
"menu_help": "Besoin d'aide ?",
"page_home_title": "Accueil",
"page_gaming_title": "Orientée Gaming",
"page_studio_title": "Studio",
"page_updates_title": "Mises à jour",
"page_diskmanager_title": "Gestion des disques",
"page_easyflatpak_title": "Logithèque",
"page_help_title": "Besoin d'aide ?",
"bottom_show_window_next_time": "Afficher au démarrage"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
GLF OS comes with a disk management tool.
You can mount your secondary drives using a graphical interface.
They will then be automatically mounted and accessible each time you restart.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
GLF OS includes the EasyFlatpak software center, which lets you install flatpak applications in just a few clicks.

You can also install multiple applications at once.
We’ve also created app groups organized by theme: Gaming, Graphic Design, and Software Development.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Compatible with any x86_64 PC, GLF OS comes with everything you need to game on Linux: Steam, Lutris, Heroic Games Launcher, and MangoHud—preinstalled and configurable using our custom tool, GLF-OS MangoHud Configuration.

GLF OS also includes specific configurations to support your hardware, such as your PS5 DualSense™, Xbox™, or 8bitdo® controller, and your racing wheels.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Here are some useful links to find help with GLF OS:

* [GLF OS Page](https://www.gaminglinux.fr/glf-os/)
* [Our Documentation](https://gaming-linux-fr.github.io/GLF-OS/)
* [Our GitHub](https://github.com/Gaming-Linux-FR/GLF-OS/)
* [Our Discord](https://discord.gg/tqXyUMEwq3)
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Welcome to GLF OS!

This tool is designed to introduce you to the main features of your new system so you can quickly get your bearings.

If you don't find the answers to your questions, use the "Need help" section to contact us!
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
While GLF OS is primarily focused on Gaming, it also offers tools for content creators with its Studio edition!

This edition includes tools like OBS, Kdenlive, GIMP, Audacity, and especially DaVinci Resolve (free or Studio version).
To use this edition, you can select it during the installation of GLF OS or later using the GLF-OS Environment Selection tool, which allows you to switch desktop environments and editions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
GLF OS will check for new updates (glf-update) 5 minutes after your PC starts, and then every 12 hours if the PC remains on.

If updates are available, they will be applied in the background.
You’ll be notified via a notification once the update is complete.
At the next reboot, the system will switch to a new image with the latest updates.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
GLF OS est fournit avec un outil de gestion de disques.
Vous pourrez monter vos disques secondaires via une interface graphique.
Vous les retrouverez ainsi automatiquement montés et accessibles à chaque redémarrage.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
GLF OS possède la logithèque EasyFlatpak qui vous permet d'installer vos logiciels au format flatpak en quelques clics.

Il est également possible d'installer plusieurs applications en une seule fois.
Nous avons aussi créé des groupes d'application classés par thème : Gaming, Créations graphiques et Développement logiciel.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Compatible avec tout PC x86_64, GLF OS embarque tout ce qu’il faut pour jouer sous Linux : Steam, Lutris, Heroic Games Launcher, Mangohud préinstallé et configurable grâce à notre outil maison "GLF-OS MongoHud Configuration".

GLF OS arrive également avec des configurations spécifiques pour prendre en charge votre matériel, comme votre manette PS5 DualSense™, Xbox™ ou 8bitdo® ou vos volants.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Voici quelques liens utiles pour trouver de l'aide sur GLF OS :

- [Page GLF OS](https://www.gaminglinux.fr/glf-os/)
- [Notre documentation](https://gaming-linux-fr.github.io/GLF-OS/)
- [Notre Github](https://github.com/Gaming-Linux-FR/GLF-OS/)
- [Notre Discord](https://discord.gg/tqXyUMEwq3)
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Bienvenue sur GLF OS !

Cet outil a pour but de vous présenter les principales fonctionnalités de votre nouveau système afin que vous puissiez prendre vos repères rapidement.

Si vous ne trouvez pas les réponses à vos questions, utilisez la section "Besoin d'aide" pour nous contacter !
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Si GLF OS est principalement axée sur le Gaming, elle offre aussi des outils pour les créateurs de contenus avec son édition Studio !

Cette édition embarque les outils OBS, Kdenlive, GIMP, Audacity et surtout Davinci Resolve (version gratuite ou studio).
Pour profiter de cette édition, vous pouvez faire ce choix directement à l'installation de GLF OS ou plus tard graĉe à l'outil "GLF-OS Environment Selection" qui permet de changer d'environnement de bureau et d'édition.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
GLF OS vérifiera si de nouvelles mises à jour sont disponibles (glf-update) 5 minutes après le démarrage de votre PC, puis toutes les 12 heures si le PC reste allumé.

Si des mises à jour sont disponibles, elles seront appliquées en tâche de fond.
Vous serez informé via une notification lorsque la mise à jour sera terminée.
Au prochain redémarrage, le système basculera sur une nouvelle image avec les dernières mises à jour.
Binary file added pkgs/welcome-screen/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
89 changes: 89 additions & 0 deletions pkgs/welcome-screen/buildAppImage.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
#!/usr/bin/env bash

# Clean up previous build
rm -rf /tmp/glfosWelcomeScreen.AppDir

# Build Flutter app for Linux
flutter build linux --release

# Create AppDir structure
mkdir -p /tmp/glfosWelcomeScreen.AppDir/usr/lib

set -euo pipefail
SEEN_LIBS=() # <--- FIX: initialize this array

APP_BIN="build/linux/x64/release/bundle/glfos_welcome_screen"
DEST_DIR="/tmp/glfosWelcomeScreen.AppDir/usr/lib"

copy_lib() {
local lib_path="$1"

[[ "$lib_path" != /* || ! -f "$lib_path" ]] && return

local lib_name
lib_name=$(basename "$lib_path")
local dest_path="$DEST_DIR/$lib_name"

# Only include libraries that match your whitelist
case "$lib_name" in
libepoxy.so.*| \
libgtk-3.so.*| \
libadwaita-1.so.*| \
libgraphite2.so.*| \
libpangocairo-1.0.so.*| \
libpango-1.0.so.*| \
libatk-1.0.so.*| \
libgdk-3.so.*| \
libcairo.so.*| \
libatk-bridge-2.0.so.*| \
libpangoft2-1.0.so.*| \
libpng16.so.*)
;;
*)
#echo "Skipping (not whitelisted): $lib_name"
return
;;
esac

if [[ ! " ${SEEN_LIBS[*]} " =~ " ${lib_name} " ]]; then
SEEN_LIBS+=("$lib_name")
#echo "Copying $lib_name"
cp "$lib_path" "$dest_path"

# Recursively resolve whitelisted dependencies
ldd "$lib_path" | while read -r line; do
subdep=$(echo "$line" | grep -o '/[^ ]*' || true)
if [[ -n "$subdep" && -f "$subdep" ]]; then
copy_lib "$subdep"
fi
done
fi
}




# Start with main binary
# Start with main binary: extract all valid absolute paths
ldd "$APP_BIN" | while read -r line; do
lib_path=$(echo "$line" | grep -o '/[^ ]*' || true)
if [[ -n "$lib_path" && -f "$lib_path" ]]; then
copy_lib "$lib_path"
fi
done



# Copy main bundle contents and AppImage metadata
cp -r build/linux/x64/release/bundle/* /tmp/glfosWelcomeScreen.AppDir/
cp assets/logo.png /tmp/glfosWelcomeScreen.AppDir/glfosWelcomeScreen.png
cp appImage/AppRun /tmp/glfosWelcomeScreen.AppDir/AppRun
chmod +x /tmp/glfosWelcomeScreen.AppDir/AppRun
cp appImage/glfosWelcomeScreen.desktop /tmp/glfosWelcomeScreen.AppDir/
mkdir -p /tmp/glfosWelcomeScreen.AppDir/usr/lib/flutter_assets
cp -r assets /tmp/glfosWelcomeScreen.AppDir/usr/lib/flutter_assets/

# Build the AppImage
appimagetool-x86_64.AppImage /tmp/glfosWelcomeScreen.AppDir
rm -f dist/Welcome_screen-x86_64.AppImage
mv Welcome_screen-x86_64.AppImage dist/
89 changes: 89 additions & 0 deletions pkgs/welcome-screen/buildAppImageWithDebug.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
#!/usr/bin/env bash

# Clean up previous build
rm -rf /tmp/glfosWelcomeScreen.AppDir

# Build Flutter app for Linux
flutter build linux --debug

# Create AppDir structure
mkdir -p /tmp/glfosWelcomeScreen.AppDir/usr/lib

set -euo pipefail
SEEN_LIBS=() # <--- FIX: initialize this array

APP_BIN="build/linux/x64/release/bundle/glfos_welcome_screen"
DEST_DIR="/tmp/glfosWelcomeScreen.AppDir/usr/lib"

copy_lib() {
local lib_path="$1"

[[ "$lib_path" != /* || ! -f "$lib_path" ]] && return

local lib_name
lib_name=$(basename "$lib_path")
local dest_path="$DEST_DIR/$lib_name"

# Only include libraries that match your whitelist
case "$lib_name" in
libepoxy.so.*| \
libgtk-3.so.*| \
libadwaita-1.so.*| \
libgraphite2.so.*| \
libpangocairo-1.0.so.*| \
libpango-1.0.so.*| \
libatk-1.0.so.*| \
libgdk-3.so.*| \
libcairo.so.*| \
libatk-bridge-2.0.so.*| \
libpangoft2-1.0.so.*| \
libpng16.so.*)
;;
*)
#echo "Skipping (not whitelisted): $lib_name"
return
;;
esac

if [[ ! " ${SEEN_LIBS[*]} " =~ " ${lib_name} " ]]; then
SEEN_LIBS+=("$lib_name")
echo "Copying $lib_name"
cp "$lib_path" "$dest_path"

# Recursively resolve whitelisted dependencies
ldd "$lib_path" | while read -r line; do
subdep=$(echo "$line" | grep -o '/[^ ]*' || true)
if [[ -n "$subdep" && -f "$subdep" ]]; then
copy_lib "$subdep"
fi
done
fi
}




# Start with main binary
# Start with main binary: extract all valid absolute paths
ldd "$APP_BIN" | while read -r line; do
lib_path=$(echo "$line" | grep -o '/[^ ]*' || true)
if [[ -n "$lib_path" && -f "$lib_path" ]]; then
copy_lib "$lib_path"
fi
done



# Copy main bundle contents and AppImage metadata
cp -r build/linux/x64/release/bundle/* /tmp/glfosWelcomeScreen.AppDir/
cp assets/logo.png /tmp/glfosWelcomeScreen.AppDir/glfosWelcomeScreen.png
cp appImage/AppRun /tmp/glfosWelcomeScreen.AppDir/AppRun
chmod +x /tmp/glfosWelcomeScreen.AppDir/AppRun
cp appImage/glfosWelcomeScreen.desktop /tmp/glfosWelcomeScreen.AppDir/
mkdir -p /tmp/glfosWelcomeScreen.AppDir/usr/lib/flutter_assets
cp -r assets /tmp/glfosWelcomeScreen.AppDir/usr/lib/flutter_assets/

# Build the AppImage
appimagetool-x86_64.AppImage /tmp/glfosWelcomeScreen.AppDir
rm -f dist/Welcome_screen-x86_64.AppImage
mv Welcome_screen-x86_64.AppImage dist/Welcome_screen-x86_64_withDebug.AppImage
1 change: 1 addition & 0 deletions pkgs/welcome-screen/buildNixDerivation.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
nix-build -A glfos_welcome_screen --show-trace
10 changes: 10 additions & 0 deletions pkgs/welcome-screen/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# default.nix

let
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/archive/refs/tags/25.11-pre.tar.gz";
pkgs = import nixpkgs { config = { }; overlays = [ ]; };
in
# Export glfos_welcome_screen as an attribute at the top level
{
glfos_welcome_screen = pkgs.callPackage ./glfos_welcome_screen.nix { };
}
Loading
Loading