我想以在 NixOs (linux) 和 MacOs (darwin) 上都能工作的方式编写我的 nixos-configuration 和 home-manager-configuration 文件。
虽然有些东西在两个系统上的配置方式相同(例如 git),但其他东西仅在其中一个系统上有意义(例如 wayland-windowmanagers 仅在 Linux 上)。
Nix 语言具有if-else-语句,所以现在我需要的是一种方法来找出我所在的系统类型。
我所追求的是这样的:
wayland.sway.enable = if (os == "MacOs") then false else true;
Run Code Online (Sandbox Code Playgroud)
有没有办法找出我在 nix 上的系统?
我有一个小的 shell 脚本scrape.sh,可以抓取网站并将结果数据放入新目录中:
website=\'test.com\'\ndir_name="datev_data/$(date -u +\'%Y-%m-%dT%H:%M:%S\')"\nmkdir $dirname\nwget --directory-prefix="$dir_name" "$website"\nRun Code Online (Sandbox Code Playgroud)\n(我并不关心数据最终在哪里,只要它每次都会获得一个新目录并且我可以访问数据。因此,我现在将其放入我的主目录中/home/kaligule。)
手动运行这个脚本效果很好,所以现在我想在我的 nixos 服务器上每小时运行这个脚本。因此,我将以下内容放入我的配置中(受这篇文章的启发):
\n systemd.services.test_systemd_timers = {\n serviceConfig.Type = "oneshot";\n script = \'\'\n echo "Will start scraping now."\n {pkgs.bash}/bin/bash /home/kaligule/scrape.sh\n echo "Done scraping."\n \'\';\n };\n\n systemd.timers.test_systemd_timers = {\n wantedBy = [ "timers.target" ];\n partOf = [ "test_systemd_timers.service" ];\n timerConfig.OnCalendar = [ "*-*-* *:00:00" ];\n };\nRun Code Online (Sandbox Code Playgroud)\n然后我测试一下:
\nsudo nixos-rebuild switch # everything is fine\nsudo systemctl start test_systemd_timers # run it …Run Code Online (Sandbox Code Playgroud) 我是C++的新手,想要上课.
在我的世界里有英雄和剑.英雄携带剑.这不应该太难.
// Defining swords
class Sword
{
// The most important thing about a sword is its length.
int lenght;
public:
// only constructor and destructor
Sword(int swordlength){
lenght = swordlength;
};
~Sword(){};
};
// defining heros (as people with magic swords)
class Hero
{
Sword magic_sword;
public:
// each hero gets a standard sword
Hero(){
int meters = 2;
magic_sword = Sword(meters);
};
~Hero(){};
};
int main(){
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我编译这段代码(g++ hero.cpp)时,我收到一个错误:
In constructor …Run Code Online (Sandbox Code Playgroud) 费里斯船长有一张地图 ( seven_seas.png),显示他隐藏了多个宝藏(在坐标 (5,7) 和 (7,9) 处)。他想为每个宝藏创建一个单独的藏宝图。不应更改原始地图。
为此,他决定使用 Rust 和图像箱。
extern crate image;
use crate::image::GenericImage;
struct Desk {
map_of_seven_seas: image::DynamicImage,
colored_ink: image::Rgba<u8>,
}
impl Desk {
fn create_treasure_map(mut self, x: u32, y:u32) -> image::DynamicImage {
self.map_of_seven_seas.put_pixel(x, y, self.colored_ink);
self.map_of_seven_seas
}
}
fn main() {
let desk = Desk {
map_of_seven_seas: image::open("seven_seas.png").unwrap(),
colored_ink: image::Rgba([255, 0, 0, 255]), // red
};
println!("Marking my treasures!");
// works fine
let treasure_map_0 = desk.create_treasure_map(5, 7);
treasure_map_0.save("treasure_map_0.png").unwrap();
// breaks
let treasure_map_1 = desk.create_treasure_map(7, …Run Code Online (Sandbox Code Playgroud)