renamed: desktop.nix -> flake.nix

new file:   weekday.hs
This commit is contained in:
Gregory Bednov 2025-01-02 21:27:32 +03:00
commit 1afd996a53
2 changed files with 61 additions and 50 deletions

View file

@ -1,4 +1,9 @@
let {
description = "MIREA desktop";
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
outputs = { self, nixpkgs, ... }:
let
pkgs = import nixpkgs { system = "x86_64-linux"; };
wallpaper = builtins.readFile "./wallpaper.svg"; wallpaper = builtins.readFile "./wallpaper.svg";
folderIcon = builtins.readFile "./folderIcon.svg"; folderIcon = builtins.readFile "./folderIcon.svg";
pcmanfmConf = builtins.readFile "./pcmanfm.conf"; pcmanfmConf = builtins.readFile "./pcmanfm.conf";
@ -70,11 +75,11 @@ execp_padding = 5 5
${tint2conf2} ${tint2conf2}
''; '';
jgmenu_run_prepared = jgmenu_run_prepared =
(pkgs.writeShellScript "jgmenu_run_prepared" '' (pkgs.writeShellScript "jgmenu_run_prepared" ''
${pkgs.jgmenu}/bin/jgmenu_run apps | ${preparejgmenu} | ${pkgs.jgmenu}/bin/jgmenu --simple ${pkgs.jgmenu}/bin/jgmenu_run apps | ${preparejgmenu} | ${pkgs.jgmenu}/bin/jgmenu --simple
''); '');
powermenu = (pkgs.writeShellScript "powermenu" powermenu = (pkgs.writeShellScript "powermenu"
'' ''
if [ "$1" = "poweroff" ]; then if [ "$1" = "poweroff" ]; then
${pkgs.zenity}/bin/zenity --question --text "Уверены, что хотите выключить?" --default-cancel && poweroff ${pkgs.zenity}/bin/zenity --question --text "Уверены, что хотите выключить?" --default-cancel && poweroff
@ -89,44 +94,7 @@ fi
mireaweek = pkgs.stdenv.mkDerivation rec { mireaweek = pkgs.stdenv.mkDerivation rec {
pname = "mireaweek"; pname = "mireaweek";
version = "0.2.0"; version = "0.2.0";
src = pkgs.writeTextFile { src = ./weekday.hs;
name = "weekday.hs";
text = ''
import Data.Time
import Data.Time.Calendar.WeekDate (toWeekDate)
data Period = Autumn
| Winter
| Spring
deriving (Show, Eq)
period :: (Ord a, Num t) => (MonthOfYear -> t -> a) -> a -> Period
period thisYear today
| today < thisYear February 9 = Winter
| today >= thisYear September 1 = Autumn
| otherwise = Spring
week :: Period -> Day -> String
week Winter _ = "Хороших праздников, удачной сессии!"
week p d
| dayOfWeek d == Sunday = "Сегодня воскресенье, лучше иди домой"
| otherwise = show x ++ " неделя" where
x = 1 + x0 - x1 - if limitIsSunday then 1 else 0
limitIsSunday = dayOfWeek limit == Sunday
(_, x1, _) = toWeekDate limit
(y, x0, _) = toWeekDate d
limit = if p == Spring
then this February 9
else this September 1
this = fromGregorian y
main :: IO ()
main = do
now <- getCurrentTime
let today = utctDay now
--let today = fromGregorian 2024 September 9 -- it was TEST
let (year,_,_) = toGregorian today
putStr $ week (period (fromGregorian year) today) today'';
};
dontInstall = true; dontInstall = true;
dontUnpack = true; dontUnpack = true;
nativeBuildInputs = [pkgs.ghc]; nativeBuildInputs = [pkgs.ghc];
@ -151,5 +119,14 @@ s/\^tag(apps-dir-Database)/\^tag(apps-dir-Database)\nArchi (Archimate Modeling T
printf "$str\n\n^tag(apps-dir-Powermenu)\nВыключить,${powermenu} poweroff,,,#System\nПерезагрузить,${powermenu} reboot,,,#System\n" printf "$str\n\n^tag(apps-dir-Powermenu)\nВыключить,${powermenu} poweroff,,,#System\nПерезагрузить,${powermenu} reboot,,,#System\n"
''); '');
myxinitrc = pkgs.writeText ".xinitrc" "${tint2} &\n${pkgs.pcmanfm}/bin/pcmanfm --desktop &\nexec ${pkgs.metacity}"; myxinitrc = pkgs.writeText ".xinitrc" "${tint2} &\n${pkgs.pcmanfm}/bin/pcmanfm --desktop &\nexec ${pkgs.metacity}";
in startmireadesktop = pkgs.writeShellScript "startmireadesktop"
myxinitrc; ''
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty ]]; then
startx ${myxinitrc}
fi
'';
in {
packages.x86_64-linux.xinitrc = startmireadesktop;
defaultPackage.x86_64-linux = startmireadesktop;
};
}

34
weekday.hs Normal file
View file

@ -0,0 +1,34 @@
import Data.Time
import Data.Time.Calendar.WeekDate (toWeekDate)
data Period = Autumn
| Winter
| Spring
deriving (Show, Eq)
period :: (Ord a, Num t) => (MonthOfYear -> t -> a) -> a -> Period
period thisYear today
| today < thisYear February 9 = Winter
| today >= thisYear September 1 = Autumn
| otherwise = Spring
week :: Period -> Day -> String
week Winter _ = "Хороших праздников, удачной сессии!"
week p d
| dayOfWeek d == Sunday = "Сегодня воскресенье, лучше иди домой"
| otherwise = show x ++ " неделя" where
x = 1 + x0 - x1 - if limitIsSunday then 1 else 0
limitIsSunday = dayOfWeek limit == Sunday
(_, x1, _) = toWeekDate limit
(y, x0, _) = toWeekDate d
limit = if p == Spring
then this February 9
else this September 1
this = fromGregorian y
main :: IO ()
main = do
now <- getCurrentTime
let today = utctDay now
--let today = fromGregorian 2024 September 9 -- it was TEST
let (year,_,_) = toGregorian today
putStr $ week (period (fromGregorian year) today) today