Skip to content
Open
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
6 changes: 6 additions & 0 deletions maintainers/maintainer-list.nix
Original file line number Diff line number Diff line change
Expand Up @@ -1951,6 +1951,12 @@
githubId = 62168569;
name = "arjix";
};
arkimium_76 = {
email = "kamialef2345@gmail.com";
github = "arkimium";
githubId = 114994536;
name = "Lycaon Constantine Cayde";
};
arkivm = {
email = "vikram186@gmail.com";
github = "arkivm";
Expand Down
2 changes: 1 addition & 1 deletion nixos/modules/services/x11/desktop-managers/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ in
imports = [
./none.nix ./xterm.nix ./phosh.nix ./xfce.nix ./plasma5.nix ../../desktop-managers/plasma6.nix ./lumina.nix
./lxqt.nix ./enlightenment.nix ./gnome.nix ./retroarch.nix ./kodi.nix
./mate.nix ./pantheon.nix ./surf-display.nix ./cde.nix
./mate.nix ./pantheon.nix ./surf-display.nix ./cde.nix ./lingmo.nix
./cinnamon.nix ./budgie.nix ./deepin.nix ../../desktop-managers/lomiri.nix
];

Expand Down
54 changes: 54 additions & 0 deletions nixos/modules/services/x11/desktop-managers/lingmo.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
config,
lib,
pkgs,
...
}:
with lib; let
xcfg = config.services.xserver;
cfg = xcfg.desktopManager.lingmo;
in {
options = {
services.xserver.desktopManager.lingmo.enable = mkOption {
type = types.bool;
default = false;
description = "Enable the Lingmo Desktop manager";
};
};

config = mkIf cfg.enable {
services.xserver.displayManager.sessionPackages = [pkgs.lingmo.core];
services.xserver.displayManager.sddm.theme = mkDefault "lingmo";
services.accounts-daemon.enable = true;

environment.pathsToLink = ["/share"];
environment.systemPackages = let
lingmoPkgs = with pkgs.lingmo; [
core
lingmoui
texteditor
terminal
videoplayer
wallpapers
statusbar
settings
sddm-theme
screenshots
screenlocker
qt-plugins
launcher
kwin-plugins
filemanager
dock
calculator
liblingmo
];
plasmaPkgs = with pkgs.libsForQt5; [
kglobalaccel
kinit
kwin
];
in
lingmoPkgs ++ plasmaPkgs;
};
}
1 change: 1 addition & 0 deletions nixos/tests/all-tests.nix
Original file line number Diff line number Diff line change
Expand Up @@ -615,6 +615,7 @@ in {
lighttpd = handleTest ./lighttpd.nix {};
limesurvey = handleTest ./limesurvey.nix {};
limine = import ./limine { inherit runTest; };
lingmo = handleTest ./lingmo.nix {};
listmonk = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./listmonk.nix {};
litestream = handleTest ./litestream.nix {};
lldap = handleTest ./lldap.nix {};
Expand Down
68 changes: 68 additions & 0 deletions nixos/tests/lingmo.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
import ./make-test-python.nix ({pkgs, ...}: {
name = "lingmo";
meta = with pkgs.lib.maintainers; [arkimium_76];

machine = {...}: {
imports = [./common/user-account.nix];
services.xserver.enable = true;
services.xserver.displayManager.sddm.enable = true;
services.xserver.displayManager.defaultSession = "lingmo-session";
services.xserver.desktopManager.lingmo.enable = true;
services.xserver.displayManager.autoLogin = {
enable = true;
user = "alice";
};
virtualisation.memorySize = 1024;
};

enableOCR = true;

testScript = {nodes, ...}: let
user = nodes.machine.config.users.users.alice;
userCommand = "su - ${user.name} -c 'DISPLAY=:0.0 XDG_RUNTIME_DIR=/run/user/${toString user.uid}'";
in ''
def assert_process_running(processes):
for process in processes:
machine.wait_until_succeeds("pgrep -f " + process)

def assert_can_run_app(executable, windows, texts):
machine.execute("${userCommand} ${executable} &")

Check failure on line 29 in nixos/tests/lingmo.nix

View workflow job for this annotation

GitHub Actions / exp-nixf-tidy-check

sema-undefined-variable

undefined variable `executable`

for window in windows:
machine.wait_for_window(window)

for text in texts:
machine.wait_for_text(text)

with subtest("Wait for login"):
start_all()
machine.wait_for_file("${user.home}/.Xauthority")
machine.succeed("xauth merge ${user.home}/.Xauthority")

with subtest("Lingmo components are running"):
assert_process_running([
"chotkeys",
"lingmo-dock",
"lingmo-filemanager",
"lingmo-launcher",
"lingmo-polkit-agent",
"lingmo-powerman",
"lingmo-session",
"lingmo-settings-daemon",
"lingmo-statusbar",
"lingmo-xembedsniproxy",
"kwin_x11"
])

with subtest("Launcher can find apps"):
assert_can_run_app("lingmo-launcher", [], ["Calculator", "File Manager", "Settings", "Terminal"])

with subtest("Can run Settings"):
assert_can_run_app("lingmo-settings", ["lingmo-settings"], ["Settings"])

with subtest("Can run basic gui apps"):
assert_can_run_app("lingmo-calculator", ["lingmo-calculator"], ["Calculator"])
assert_can_run_app("lingmo-filemanager", ["lingmo-filemanager"], ["File Manager"])
assert_can_run_app("lingmo-terminal", ["lingmo-terminal"], ["Terminal"])
'';
})
48 changes: 48 additions & 0 deletions pkgs/applications/lingmo/calculator/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
lib,
stdenv,
fetchFromGitHub,
pkgs ? import <nixpkgs> {},
}:
stdenv.mkDerivation rec {
pname = "lingmo-calculator";
version = "0.6.3";

src = fetchFromGitHub {
owner = "LingmoOS";
repo = "lingmo-calculator";
rev = version;
sha256 = "18r4wpd7467rspdbnkvzsq87gd09jxxjl5ifwvnp8j41lx9s8lmz";
};

buildInputs = with pkgs; [
qt5-tools
qt5-quickcontrols2
cmake
extra-cmake-modules
make
gcc
pkgconf
];

buildPhase = ''
echo "Compiling $pkgname"
mkdir -pv $out/build && cd $out/build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make -j$(nproc) || return 1
'';

installPhase = ''
mkdir -pv $out
cd $out/build
make DESTDIR=$out install
'';

meta = with lib; {
description = "LingmoOS - Calculator";
homepage = "https://github.com/lingmoos/lingmo-calculator";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ arkimium_76 ];
};
}
53 changes: 53 additions & 0 deletions pkgs/applications/lingmo/terminal/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
lib,
stdenv,
fetchFromGitHub,
pkgs ? import <nixpkgs> {},
}:
stdenv.mkDerivation rec {
pname = "lingmo-terminal";
version = "2.0.0";

src = fetchFromGitHub {
owner = "LingmoOS";
repo = "lingmo-terminal";
rev = version;
sha256 = "18zkllkj9s5s5a27sa8n4sq2cq18kx0mk09p982zim6d4frk5nq2";
};

buildInputs = with pkgs; [
qt5-base
qt5-declarative
qt5-tools
qt5-quickcontrols2
qt5-graphicaleffects
lingmoui
cmake
extra-cmake-modules
qt5-x11extras
make
gcc
pkgconf
];

buildPhase = ''
echo "Compiling $pkgname"
mkdir -pv $out/build && cd $out/build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make -j$(nproc) || return 1
'';

installPhase = ''
mkdir -pv $out
cd $out/build
make DESTDIR=$out install
'';

meta = with lib; {
description = "LingmoOS - Terminal";
homepage = "https://github.com/lingmoos/lingmo-terminal";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ arkimium_76 ];
};
}
59 changes: 59 additions & 0 deletions pkgs/desktops/lingmo/core/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
lib,
stdenv,
fetchFromGitHub,
pkgs ? import <nixpkgs> {},
}:
stdenv.mkDerivation rec {
pname = "lingmo-core";
version = "2.0.2";

src = fetchFromGitHub {
owner = "LingmoOS";
repo = "lingmo-core";
rev = version;
sha256 = "0v65zhm59xli70xgif3yrynqmmjy77dcsz4f975ggxa3ylj77p2g";
};

buildInputs = with pkgs; [
qt5-tools
qt5-quickcontrols2
cmake
extra-cmake-modules
kcoreaddons5
libxcursor
qt5-x11extras
qt5-graphicaleffects
kwindowsystem5
kidletime5
polkit
polkit-qt5
xorg-server-devel
xf86-input-libinput
xf86-input-synaptics
make
gcc
pkgconf
];

buildPhase = ''
echo "Compiling $pkgname"
mkdir -pv $out/build && cd $out/build
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make -j$(nproc) || return 1
'';

installPhase = ''
mkdir -pv $out
cd $out/build
make DESTDIR=$out install
'';

meta = with lib; {
description = "LingmoOS - Core";
homepage = "https://github.com/lingmoos/lingmo-core";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = with maintainers; [arkimium_76];
};
}
35 changes: 35 additions & 0 deletions pkgs/desktops/lingmo/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{ pkgs, makeScope, libsForQt5 }:

makeScope libsForQt5.newScope (self: with self; {
lingmoUpdateScript = { name, version }: pkgs.genericUpdater {
inherit version;
pname = "lingmo-${name}";
attrPath = "lingmo.${name}";
versionLister = "${pkgs.common-updater-scripts}/bin/list-git-tags https://github.com/LingmoOS/${name}";
};

fetchFromLingmoGitHub = { name, version, sha256 }: pkgs.fetchFromGitHub {
inherit sha256;
owner = "LingmoOS";
repo = name;
rev = version;
};

calculator = callPackage ../../applications/lingmo/calculator { };
core = callPackage ./core { };
dock = callPackage ./dock { };
filemanager = callPackage ./filemanager { };
lingmoui = callPackage ../../development/libraries/lingmo/lingmoui { };
kwin-plugins = callPackage ./kwin-plugins { };
launcher = callPackage ./launcher { };
liblingmo = callPackage ../../development/libraries/lingmo/liblingmo { };
qt-plugins = callPackage ./qt-plugins { };
screenlocker = callPackage ./screenlocker { };
sddm-theme = callPackage ./sddm-theme { };
settings = callPackage ./settings { };
statusbar = callPackage ./statusbar { };
terminal = callPackage ../../applications/lingmo/terminal { };
wallpapers = callPackage ./wallpapers { };
texteditor = callPackage ./texteditor { };
videoplayer = callPackage ./videoplayer { };
})
Loading
Loading