fmt(nix): add nix fmt, fmt and update flake.lock

This commit is contained in:
2025-07-07 02:38:04 +02:00
parent 3625aa9426
commit 4611ad87a8
6 changed files with 180 additions and 147 deletions

View File

@@ -1,13 +1,20 @@
{ cfg, src, lib, ... }:
{
cfg,
src,
lib,
...
}:
let
maker = import ./make-cfg.nix {
inherit lib;
keys-h-file = builtins.readFile "${src}/include/keys.h";
};
in builtins.toFile "lidm.conf" (
if builtins.isString cfg
then builtins.readFile "${src}/themes/${cfg}.ini"
else if builtins.isAttrs cfg
then maker.make cfg
else builtins.throw "invalid cfg type, expected str or attrs"
maker = import ./make-cfg.nix {
inherit lib;
keys-h-file = builtins.readFile "${src}/include/keys.h";
};
in
builtins.toFile "lidm.conf" (
if builtins.isString cfg then
builtins.readFile "${src}/themes/${cfg}.ini"
else if builtins.isAttrs cfg then
maker.make cfg
else
builtins.throw "invalid cfg type, expected str or attrs"
)

View File

@@ -1,35 +1,44 @@
{ config, pkgs, lib, ...}:
{
config,
pkgs,
lib,
...
}:
let
cfg-file = if config.cfg != null then
import ./get-cfg-file.nix {
inherit lib;
inherit (config) cfg src;
}
else null;
cfg-file =
if config.cfg != null then
import ./get-cfg-file.nix {
inherit lib;
inherit (config) cfg src;
}
else
null;
in
pkgs.stdenv.mkDerivation rec {
pname = "lidm";
version = config.version;
src = config.src;
pname = "lidm";
version = config.version;
src = config.src;
nativeBuildInputs = with pkgs; [
gcc
gnumake
linux-pam
];
nativeBuildInputs = with pkgs; [
gcc
gnumake
linux-pam
];
makeFlags = [
"DESTDIR=$(out)"
"PREFIX="
makeFlags =
[
"DESTDIR=$(out)"
"PREFIX="
]
++ lib.optional (config.xsessions != null)
"CPPFLAGS+=-DSESSIONS_XSESSIONS=\\\"${config.xsessions}\\\""
++ lib.optional (config.wayland-sessions != null)
"CPPFLAGS+=-DSESSIONS_WAYLAND=\\\"${config.wayland-sessions}\\\""
++ lib.optional (cfg-file != null)
"CPPFLAGS+=-DLIDM_CONF_PATH=\\\"${cfg-file}\\\"";
++ lib.optional (
config.xsessions != null
) "CPPFLAGS+=-DSESSIONS_XSESSIONS=\\\"${config.xsessions}\\\""
++ lib.optional (
config.wayland-sessions != null
) "CPPFLAGS+=-DSESSIONS_WAYLAND=\\\"${config.wayland-sessions}\\\""
++ lib.optional (cfg-file != null) "CPPFLAGS+=-DLIDM_CONF_PATH=\\\"${cfg-file}\\\"";
fixupPhase = ''
rm -rf $out/etc
'';
fixupPhase = ''
rm -rf $out/etc
'';
}

View File

@@ -1,70 +1,73 @@
{ lib, keys-h-file }:
let
double-match-to-nameval = dmatch: { name = builtins.elemAt dmatch 0; value = builtins.elemAt dmatch 1; };
double-match-to-nameval = dmatch: {
name = builtins.elemAt dmatch 0;
value = builtins.elemAt dmatch 1;
};
keys-enum = let
key-names = builtins.replaceStrings ["\n" " "] ["" ""] (
builtins.elemAt (
builtins.match
".*KEY_NAMES\\[][[:blank:]]*=[[:blank:]]*\\{([^}]*)}.*"
keys-h-file
) 0
);
keys-enum =
let
key-names = builtins.replaceStrings [ "\n" " " ] [ "" "" ] (
builtins.elemAt (builtins.match ".*KEY_NAMES\\[][[:blank:]]*=[[:blank:]]*\\{([^}]*)}.*" keys-h-file) 0
);
keys-2d-list = builtins.map
(builtins.match "\\[(.*)]=\"(.*)\"")
(builtins.filter
(s: builtins.isString s && s != "")
(builtins.split "," key-names)
);
keys-2d-list = builtins.map (builtins.match "\\[(.*)]=\"(.*)\"") (
builtins.filter (s: builtins.isString s && s != "") (builtins.split "," key-names)
);
in builtins.listToAttrs (
builtins.map
(k: k // { value = { __enum_key = k.value; }; })
(builtins.map double-match-to-nameval keys-2d-list)
in
builtins.listToAttrs (
builtins.map (
k:
k
// {
value = {
__enum_key = k.value;
};
}
) (builtins.map double-match-to-nameval keys-2d-list)
);
in {
inherit keys-enum;
make = let
name-val-to-attrs = (name: value: { inherit name value; } );
map-attrs = attrset: fn: lib.map fn
(lib.attrsets.mapAttrsToList name-val-to-attrs attrset);
in
{
inherit keys-enum;
make =
let
name-val-to-attrs = (name: value: { inherit name value; });
map-attrs = attrset: fn: lib.map fn (lib.attrsets.mapAttrsToList name-val-to-attrs attrset);
try-foldl' = op: nul: list:
if (builtins.length list) == 0 then ""
else builtins.foldl' op nul list;
concat-with = sepr: list: try-foldl'
(x: y: if x == null then y else x + sepr + y)
null
list;
try-foldl' =
op: nul: list:
if (builtins.length list) == 0 then "" else builtins.foldl' op nul list;
concat-with = sepr: list: try-foldl' (x: y: if x == null then y else x + sepr + y) null list;
ser-bool = bool: if bool then "true" else "false";
ser-str = str: "\"${builtins.replaceStrings ["\n" "\""] ["\\n" "\\\""] str}\"";
ser-kvs = { name, value }: if builtins.isList value then
concat-with "\n" (
builtins.map
(value: ser-kvs { inherit name value; })
value
)
else "${name} = ${
ser-bool = bool: if bool then "true" else "false";
ser-str = str: "\"${builtins.replaceStrings [ "\n" "\"" ] [ "\\n" "\\\"" ] str}\"";
ser-kvs =
{ name, value }:
if builtins.isList value then
concat-with "\n" (builtins.map (value: ser-kvs { inherit name value; }) value)
else
"${name} = ${
if builtins.isString value then
ser-str value
ser-str value
else if builtins.isInt value then
builtins.toString value
builtins.toString value
else if builtins.isBool value then
ser-bool value
ser-bool value
else if builtins.isAttrs value then
value.__enum_key
else builtins.throw "type not supported"
}";
value.__enum_key
else
builtins.throw "type not supported"
}";
ser-table = table': let
tname = table'.name;
table = table'.value;
ser-table =
table':
let
tname = table'.name;
table = table'.value;
in
"[${tname}]\n" + (
concat-with "\n" (map-attrs table ser-kvs)
);
in cfg: concat-with "\n\n" (map-attrs cfg ser-table);
"[${tname}]\n" + (concat-with "\n" (map-attrs table ser-kvs));
in
cfg: concat-with "\n\n" (map-attrs cfg ser-table);
}

View File

@@ -1,55 +1,65 @@
{ config, lib, pkgs, ... }:
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.lidm;
cfg = config.services.lidm;
dmcfg = config.services.displayManager;
desktops = dmcfg.sessionData.desktops;
dmcfg = config.services.displayManager;
desktops = dmcfg.sessionData.desktops;
version = "1.2.1";
lidmPkg = pkgs.callPackage ./lidm.nix {
inherit pkgs;
config = {
inherit version lib;
cfg = cfg.config;
src = pkgs.fetchFromGitHub {
owner = "javalsai";
repo = "lidm";
rev = "v${version}";
sha256 = "sha256-3CgUI8PUs4c1bfBrykPw87SSa4lzrh4E4Hug7cGRKFk=";
};
version = "1.2.1";
lidmPkg = pkgs.callPackage ./lidm.nix {
inherit pkgs;
config = {
inherit version lib;
cfg = cfg.config;
src = pkgs.fetchFromGitHub {
owner = "javalsai";
repo = "lidm";
rev = "v${version}";
sha256 = "sha256-3CgUI8PUs4c1bfBrykPw87SSa4lzrh4E4Hug7cGRKFk=";
};
xsessions = "${desktops}/share/xsessions";
wayland-sessions = "${desktops}/share/wayland-sessions";
};
xsessions = "${desktops}/share/xsessions";
wayland-sessions = "${desktops}/share/wayland-sessions";
};
};
in
{
options.services.lidm.config = lib.mkOption {
type = with lib.types; oneOf [ str attrs ];
default = {};
description = "Config options for lidm | Either attr tree or name of bundled themes";
};
config = {
services.displayManager.defaultSession = "lidm";
options.services.lidm.config = lib.mkOption {
type =
with lib.types;
oneOf [
str
attrs
];
default = { };
description = "Config options for lidm | Either attr tree or name of bundled themes";
};
config = {
services.displayManager.defaultSession = "lidm";
systemd.services.lidm = {
description = "TUI display manager";
aliases = [ "display-manager.service" ];
after = [
"systemd-user-sessions.service"
"plymouth-quit-wait.service"
];
serviceConfig = {
Type = "idle";
ExecStart = "${lidmPkg}/bin/lidm 7";
StandardInput = "tty";
StandardOutput = "tty";
StandardError = "tty";
TTYPath = "/dev/tty7";
TTYReset = "yes";
TTYVHangup = "yes";
};
};
systemd.services.lidm = {
description = "TUI display manager";
aliases = [ "display-manager.service" ];
after = [
"systemd-user-sessions.service"
"plymouth-quit-wait.service"
];
serviceConfig = {
Type = "idle";
ExecStart = "${lidmPkg}/bin/lidm 7";
StandardInput = "tty";
StandardOutput = "tty";
StandardError = "tty";
TTYPath = "/dev/tty7";
TTYReset = "yes";
TTYVHangup = "yes";
};
};
};
}

12
flake.lock generated
View File

@@ -5,11 +5,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@@ -20,11 +20,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1724224976,
"narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=",
"lastModified": 1751637120,
"narHash": "sha256-xVNy/XopSfIG9c46nRmPaKfH1Gn/56vQ8++xWA8itO4=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c374d94f1536013ca8e92341b540eba4c22f9c62",
"rev": "5c724ed1388e53cc231ed98330a60eb2f7be4be3",
"type": "github"
},
"original": {

View File

@@ -7,16 +7,18 @@
};
outputs =
{ flake-utils, nixpkgs, ... }:
{
flake-utils,
nixpkgs,
self,
}:
flake-utils.lib.eachDefaultSystem (
system:
let
pkgs = import nixpkgs { inherit system; };
name = "lidm";
version = builtins.elemAt (
builtins.match "VERSION[[:blank:]]*=[[:space:]]*([^\n]*)\n.*" (builtins.readFile ./Makefile)
) 0;
version = builtins.elemAt (builtins.match "VERSION[[:blank:]]*=[[:space:]]*([^\n]*)\n.*" (builtins.readFile ./Makefile)) 0;
lidm = pkgs.callPackage assets/pkg/nix/lidm.nix {
inherit pkgs;
@@ -35,8 +37,10 @@
defaultApp = flake-utils.lib.mkApp { drv = defaultPackage; };
defaultPackage = lidm;
devShell = pkgs.mkShell { buildInputs = lidm.nativeBuildInputs ++ [ pkgs.clang-tools ]; };
formatter = nixpkgs.legacyPackages.${system}.nixfmt-tree;
}
) // {
)
// {
nixosModules.lidm = assets/pkg/nix/module.nix;
};
}