renamed: desktop.nix -> flake.nix
new file: weekday.hs
This commit is contained in:
parent
72abd34637
commit
1afd996a53
2 changed files with 61 additions and 50 deletions
|
|
@ -1,4 +1,9 @@
|
||||||
|
{
|
||||||
|
description = "MIREA desktop";
|
||||||
|
inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||||
|
outputs = { self, nixpkgs, ... }:
|
||||||
let
|
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";
|
||||||
|
|
@ -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
34
weekday.hs
Normal 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue