2025-01-02 21:27:32 +03:00
|
|
|
|
{
|
|
|
|
|
|
description = "MIREA desktop";
|
|
|
|
|
|
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
|
|
|
|
|
outputs = { self, nixpkgs, ... }:
|
|
|
|
|
|
let
|
|
|
|
|
|
pkgs = import nixpkgs { system = "x86_64-linux"; };
|
2025-01-02 22:04:53 +03:00
|
|
|
|
wallpaper = builtins.readFile "${self}/wallpaper.svg";
|
|
|
|
|
|
folderIcon = builtins.readFile "${self}/folderIcon.svg";
|
2025-01-02 22:47:00 +03:00
|
|
|
|
pcmanfmConf = "${self}/pcmanfm.conf";
|
2025-01-02 21:27:32 +03:00
|
|
|
|
desktopItems0 = (pkgs.writeText "desktop-items-0.conf"
|
2025-01-02 21:27:01 +03:00
|
|
|
|
''
|
|
|
|
|
|
[*]
|
|
|
|
|
|
wallpaper_mode=center
|
|
|
|
|
|
wallpaper_common=1
|
|
|
|
|
|
wallpapers_configured=1
|
|
|
|
|
|
wallpaper=${wallpaper}
|
|
|
|
|
|
desktop_bg=#77767b
|
|
|
|
|
|
desktop_fg=#ffffff
|
|
|
|
|
|
desktop_shadow=#000000
|
|
|
|
|
|
desktop_font=Sans 12
|
|
|
|
|
|
folder=/home/student
|
|
|
|
|
|
show_wm_menu=1
|
|
|
|
|
|
sort=mtime;ascending;
|
|
|
|
|
|
show_documents=0
|
|
|
|
|
|
show_trash=1
|
|
|
|
|
|
show_mounts=1
|
|
|
|
|
|
'');
|
2025-01-02 22:04:53 +03:00
|
|
|
|
tint2conf1 = builtins.readFile "${self}/tint2conf.1";
|
|
|
|
|
|
tint2conf2 = builtins.readFile "${self}/tint2conf.2";
|
2025-01-02 21:27:32 +03:00
|
|
|
|
tint2config = pkgs.writeText "tint2conf"
|
2025-01-02 21:27:01 +03:00
|
|
|
|
''
|
|
|
|
|
|
${tint2conf1}
|
|
|
|
|
|
#-------------------------------------
|
|
|
|
|
|
button = new
|
|
|
|
|
|
button_lclick_command = ${jgmenu_run_prepared}
|
2025-01-02 23:57:44 +03:00
|
|
|
|
button_icon = ${self}/wallpaper.svg
|
2025-01-02 21:27:01 +03:00
|
|
|
|
|
|
|
|
|
|
separator = new
|
|
|
|
|
|
separator_style = empty
|
|
|
|
|
|
separator_padding = 3 4
|
|
|
|
|
|
|
|
|
|
|
|
button = new
|
|
|
|
|
|
button_lclick_command = ${pkgs.chromium}/bin/chromium
|
|
|
|
|
|
button_icon = ${pkgs.chromium}/share/icons/hicolor/48x48/apps/chromium.png
|
|
|
|
|
|
|
|
|
|
|
|
button = new
|
|
|
|
|
|
button_lclick_command = ${pkgs.pcmanfm}/bin/pcmanfm
|
2025-01-02 23:57:44 +03:00
|
|
|
|
button_icon = ${self}/folderIcon.svg
|
2025-01-02 21:27:01 +03:00
|
|
|
|
|
|
|
|
|
|
separator = new
|
|
|
|
|
|
separator_style = empty
|
|
|
|
|
|
separator_padding = 3 4
|
|
|
|
|
|
|
|
|
|
|
|
#-------------------------------------
|
|
|
|
|
|
execp = new
|
|
|
|
|
|
execp_name = switch
|
|
|
|
|
|
execp_command = ${pkgs.xkb-switch}/bin/xkb-switch
|
|
|
|
|
|
execp_interval = 1
|
|
|
|
|
|
execp_font = mono 10
|
|
|
|
|
|
execp_font_color = #dddddd 100
|
|
|
|
|
|
execp_centered = 1
|
|
|
|
|
|
execp_has_icon = 0
|
|
|
|
|
|
execp_padding = 5 5
|
|
|
|
|
|
|
|
|
|
|
|
#-------------------------------------
|
|
|
|
|
|
execp = new
|
|
|
|
|
|
execp_name = mireaweek
|
2025-01-24 20:56:29 +03:00
|
|
|
|
execp_command = ${mireaweek}/bin/mireaweek
|
2025-01-02 21:27:01 +03:00
|
|
|
|
execp_interval = 0
|
|
|
|
|
|
execp_font = mono 10
|
|
|
|
|
|
execp_font_color = #dddddd 100
|
|
|
|
|
|
execp_centered = 1
|
|
|
|
|
|
execp_has_icon = 0
|
|
|
|
|
|
execp_padding = 5 5
|
|
|
|
|
|
|
|
|
|
|
|
${tint2conf2}
|
|
|
|
|
|
'';
|
2025-01-02 21:27:32 +03:00
|
|
|
|
jgmenu_run_prepared =
|
2025-01-24 20:56:29 +03:00
|
|
|
|
(pkgs.writeShellScript "jgmenu_run_prepared"
|
|
|
|
|
|
''${pkgs.jgmenu}/bin/jgmenu_run apps | ${prepare_jgmenu}/bin/prepare_jgmenu | ${pkgs.jgmenu}/bin/jgmenu --simple'');
|
2025-01-02 21:27:32 +03:00
|
|
|
|
powermenu = (pkgs.writeShellScript "powermenu"
|
2025-01-02 21:27:01 +03:00
|
|
|
|
''
|
|
|
|
|
|
if [ "$1" = "poweroff" ]; then
|
|
|
|
|
|
${pkgs.zenity}/bin/zenity --question --text "Уверены, что хотите выключить?" --default-cancel && poweroff
|
|
|
|
|
|
exit 0
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
if [ "$1" = "reboot" ]; then
|
|
|
|
|
|
${pkgs.zenity}/bin/zenity --question --text "Уверены, что хотите перезагрузить?" --default-cancel && reboot
|
|
|
|
|
|
exit 0
|
|
|
|
|
|
fi
|
|
|
|
|
|
'');
|
2025-01-08 02:21:41 +03:00
|
|
|
|
mireaweek = pkgs.stdenv.mkDerivation rec {
|
2025-01-24 20:56:29 +03:00
|
|
|
|
pname = "mireaweek";
|
|
|
|
|
|
version = "0.1.0";
|
|
|
|
|
|
src = ./weekday.kt;
|
2025-01-08 02:21:41 +03:00
|
|
|
|
dontInstall = true;
|
|
|
|
|
|
dontUnpack = true;
|
2025-01-24 20:56:29 +03:00
|
|
|
|
nativeBuildInputs = [pkgs.kotlin];
|
2025-01-08 02:21:41 +03:00
|
|
|
|
buildPhase = ''
|
2025-01-24 20:56:29 +03:00
|
|
|
|
mkdir -p $out/{bin,lib}
|
2025-01-24 21:10:32 +03:00
|
|
|
|
kotlinc $src -d -include-runtime mireaweek.jar
|
|
|
|
|
|
mv mireaweek.jar $out/lib
|
2025-01-24 20:59:12 +03:00
|
|
|
|
printf "${pkgs.jre}/bin/java -jar ../lib/mireaweek.jar" > $out/bin/mireaweek
|
2025-01-24 20:56:29 +03:00
|
|
|
|
chmod +x $out/bin/mireaweek
|
2025-01-08 02:21:41 +03:00
|
|
|
|
'';
|
2025-01-24 20:56:29 +03:00
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
prepare_jgmenu = pkgs.stdenv.mkDerivation rec {
|
|
|
|
|
|
pname = "prepare_jgmenu";
|
|
|
|
|
|
version = "0.1.0";
|
|
|
|
|
|
src = ./JgmenuCorrector.kt;
|
|
|
|
|
|
dontInstall = true;
|
|
|
|
|
|
dontUnpack = true;
|
|
|
|
|
|
nativeBuildInputs = [pkgs.kotlin];
|
|
|
|
|
|
buildPhase = ''
|
|
|
|
|
|
mkdir -p $out/{bin,lib}
|
2025-01-24 21:10:32 +03:00
|
|
|
|
kotlinc $src -d -include-runtime prepare.jar
|
|
|
|
|
|
mv prepare.jar $out/lib
|
2025-01-24 20:59:12 +03:00
|
|
|
|
printf "${pkgs.jre}/bin/java -jar ../lib/prepare.jar" > $out/bin/prepare_jgmenu
|
2025-01-24 20:56:29 +03:00
|
|
|
|
chmod +x $out/bin/prepare_jgmenu
|
|
|
|
|
|
'';
|
|
|
|
|
|
};
|
2025-01-06 21:29:51 +03:00
|
|
|
|
myxinitrc = pkgs.writeText ".xinitrc" "${tint2custom} &\n${pcmanfmdesktop} &\nexec ${pkgs.metacity}/bin/metacity";
|
2025-01-02 21:27:32 +03:00
|
|
|
|
startmireadesktop = pkgs.writeShellScript "startmireadesktop"
|
|
|
|
|
|
''
|
2025-01-03 01:44:28 +03:00
|
|
|
|
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
|
2025-01-02 23:57:44 +03:00
|
|
|
|
mkdir -p "$HOME/.config/pcmanfm/default"
|
|
|
|
|
|
rm -rf "$HOME/.config/pcmanfm/default/*"
|
|
|
|
|
|
cp ${desktopItems0} "$HOME/.config/default/desktop-items-0.conf"
|
|
|
|
|
|
cp ${pcmanfmConf} "$HOME/.config/pcmanfm/default/pcmanfm.conf"
|
|
|
|
|
|
chmod +w "$HOME/.config/pcmanfm/default/*"
|
|
|
|
|
|
mkdir -p "$HOME/.config/gtk-3.0"
|
|
|
|
|
|
printf "[Settings]\ngtk-icon-theme-name = WhiteSur" > "$HOME/.config/gtk-3.0/settings.ini"
|
2025-01-03 00:17:43 +03:00
|
|
|
|
XINITRC=${myxinitrc} startx
|
2025-01-02 21:27:32 +03:00
|
|
|
|
fi
|
|
|
|
|
|
'';
|
2025-01-06 21:29:51 +03:00
|
|
|
|
tint2custom = pkgs.writeShellScript "tint2"
|
|
|
|
|
|
''
|
|
|
|
|
|
${pkgs.tint2}/bin/tint2 -c ${tint2config}
|
|
|
|
|
|
'';
|
|
|
|
|
|
pcmanfmdesktop = pkgs.writeShellScript "pcmanfm"
|
|
|
|
|
|
''
|
|
|
|
|
|
${pkgs.pcmanfm}/bin/pcmanfm --desktop
|
|
|
|
|
|
'';
|
2025-01-02 21:27:32 +03:00
|
|
|
|
in {
|
2025-01-24 20:56:29 +03:00
|
|
|
|
packages.x86_64-linux.powermenu = powermenu; # must be imported into configuration.nix!
|
2025-01-06 21:29:51 +03:00
|
|
|
|
packages.x86_64-linux.tint2 = tint2custom;
|
|
|
|
|
|
packages.x86_64-linux.pcmanfm = pcmanfmdesktop;
|
2025-01-02 21:48:00 +03:00
|
|
|
|
packages.x86_64-linux.startmireadesktop = startmireadesktop;
|
2025-01-02 21:27:32 +03:00
|
|
|
|
defaultPackage.x86_64-linux = startmireadesktop;
|
|
|
|
|
|
};
|
2025-01-02 21:48:00 +03:00
|
|
|
|
}
|