Sudo Blog
81 subscribers
63 photos
2 videos
35 files
148 links
Linuxdagi hayotim
Download Telegram
@rafanochi nixosda flutter loyiha uchun minimal config tayyorlab berdilar.

Buni ishlatish uchun loyiha uchun bo'sh folder yaratamiz shu flake.nix'ni o'sha yerga tashlaymiz.

configuration.nix'ga manabuni qo'shamiz

programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs;
[
aapt
];


keyin flake.nix turgan folderga o'tib

nix develop -c $SHELL


flutter create .



Faqat x86_64 da test qilib ko'rdik.
sudo nixos-rebuild switch --flake ~/dev/nix-config/#arava

Buyruq izohi:
​sudo: Tizim sozlamalarini o'zgartirish uchun admin huquqi kerak.
​--flake: Nix-ga flake ishlatayotganimizni bildiradi.
​~/dev/nix-config/: Flake faylingiz joylashgan papka.
#arava: Bu flake.nix faylingiz ichidagi nixosConfigurations qismida yozilgan hostname nomingiz. (Agar u yerda boshqa nom ishlatgan bo'lsangiz, o'sha nomni yozing).
👍1
Bo'sh vaqt topib shuni ishlatib ko'rish kerak ekan.

https://github.com/nvim-flutter/flutter-tools.nvim
NixOSʻda VM ishlatmoqchi boʻlsalaring quickemu zoʻr variant ekan.

1. quickemuni oʻranatasiz

Oʻrnatish uchun havola

2. kerakli distroni download qilish ham oʻzida bor ekan. Misol uchun debian 13.3.0 ni oʻnratish

quickget debian 13.3.0 gnome


3. Oʻrnab boʻlganidan keyin esa ishga tushirib yuboramiz.

quickemu --vm debian-13.3.0-gnome.conf

Tamom
👍1
NixOSʼda debug qilmoqchi boʻlsangiz loglarni yaxshiroq oʻqimoqchi boʻlsangiz komanda oxirigi

--show-trace -L


qoʻyib yuborishni maslahat beraman, --show-trace error boʻlsa chiqaradi -L loglarni chiqaradi
👍1
Forwarded from bahrom04
Uzinfocom Open Source jamoasi tomonidan chiqarilgan uchar messenjerini ishlatib koʻrishilarni maslahat beraman. Ishxonada shu uchar orqali muloqot qilamiz tel*gram oʻrniga.

https://play.google.com/store/apps/details?id=uz.uzinfocom.ucharmessenger&pli=1

https://apps.apple.com/uz/app/uchar/id6756061583

https://uchar.uz/
rust odamni zeriktirmaydi
Forwarded from CYBER SECURITY (Abbosxon Ahmadxoʻjayev)
Windows'dan Linux'ga nega ko'chishimiz kerak?

Mana bu yil 25-avgustda Linux 30 yoshni qarshi oladi. Manashu 30 yil davomida U Windows'ga jiddiy raqobatchi bo'lib yetishdi. Linux har joyda, Android qurilmalar, aqlli soatlar, yugurish yo'lagi ana boringki kosmik kemalarda ham. Linux Fondi ma'lumotlariga qaraganda dunyodagi har 10 ta kompyuterdan 9 tasida Linux ishlaydi. Qolgan bittasida yo Windows yoki BSD ishlaydi. Linux nafaqat gigant loyihalarda, balki oddiy kompyuterda ham ishlaydi va Windows'ga qaraganda so'ngi 5 yilda juda tez o'sayapdi. Keling endi Windows'dan Linux'ga nega ko'chib o'tish kerakligi haqida 5 ta sabab aytsam.

- Linux doimo bepul
- Linux kompyuter viruslariga chidamli. (Shaxsiy tajribamdan kelib chiqib aytaman. Hali biron marta Linux'da virus uchratganim yo'q)
- Ochiq manbaali (Linux OSning dasturiy manbaasi ochiq holatda saqlanadi va uni ushbu linkdan yuklab olishingiz mumkun)
- Linux boshqa operatsion tizimlarga qaraganda ancha tez ishlaydi
- Moslashuvchan. (Linux eski kompyuterlardan tortib, eng so'ngga super kompyuterda ham ishlayveradi)

Linux'ning O'zbekistonda ham Jamolari bor. Ularga misol qilib Xinux'ni keltirish mumkun. Ushbu hamjamiyat O'zbekistondagi rasmiy Linux hamjamiyati bo'lib Linux asosida zamonaviy o'zbek Linux operatsion tizimini ishlab chiqmoqda.

Xinux hamjamiyatiga qo'shiling: @xinuxuz

Manba: @saidbekarislonov
Forwarded from E'zozbek
bugun nix boyicha bilmagan narsalarimni bildm

funksiya faqat 1ta parameter qabul qilib, 1ta result qaytararkan
oldin, shuni 2ta parameter deb oylardim

overlay = final: prev: {}

bilsam bu 2ta func ekan

va bu {} aslida type ekan, attrset
{pkgs,...}: {} men buni destructurizatsiya deb oylardim

FP borgan sari yoqib boryapti
#nix_001

Ko'pchilik nix haqida eshitganda darhol nixos o'rnatib, operatsion tizimni almashtirish kerak deb o'ylaydi. Lekin aslo unday emas! nix-ni prosta package manager sifatida o'rnatib, loyihalaringizni izolyatsiya qilishingiz mumkin. buzilsa faqat shu project buziladi side effectlar bo'lormaydi

- ok muammo nimada?
Odatda loyihalarimizda turli versiyadagi paketlar kerak bo'ladi: nodejs 19, go 2.22, flutter 3.41 va hokazo. Biz bularni boshqarish uchun nvm, fvm, fnm yoki uv kabi o'nlab alohida instrumentlarni o'rnatamiz. Agar loyiha ko'p tilli (polyglot) bo'lsa, tizim "axlatxonaga" aylanib ketishi hech gap emas. nix-shell sizga vaqtinchalik muhit beradi
Nix-ning eng zo'r tarafi u hech narsani global darajada o'rnatmaydi. Paketlar faqat ma'lum bir terminal sessiyasi uchun "yashaydi".

— Bir martalik paketni ishlatish:
Agar sizga biror dastur faqat bir marta kerak bo'lsa, uni tizimga o'rnatib o'tirmang:
nix-shell --packages cowsay

Bu buyruqdan so'ng terminalda cowsay paydo bo'ladi. Sessiyani yopsangiz (exit), paket ham yo'q bo'ladi. Tizimingiz esa doim tozacha qoladi!

— Paketni o'rnatish, ishlatish va sessiyani darhol yopish:
Agar shunchaki bitta buyruqni run qilib, sessiyani o'chirmoqchi bo'lsangiz --run flagidan foydalaning:
nix-shell --packages cowsay --run "cowsay Nix juda zo'r!"

Bu buyruq bajariladi va terminal darhol eski holatiga qaytadi.

bundan tashqari
--pure to'liq izolyatsiya

Odatda nix-shellga kirganingizda, u sizning tizimingizdagi ba'zi muhit o'zgaruvchilarini (masalan, $PATH) o'zi bilan olib kiradi. --pure flagi tizimdagi barcha global o'zgaruvchilarni "tozalab" tashlaydi. Nima uchun kerak? Loyihangiz faqat nix ichidagi paketlarga tayanayotganiga va tashqi omillar (masalan, tizimga oldin o'rnatilgan kutubxonalar) ta'sir qilmayotganiga ishonch hosil qilish uchun.
nix-shell --packages nodejs --pure

Bu muhitda hatto ls yoki cat ham ishlamasligi mumkin (chunki ular Nix orqali berilmagan), bu haqiqiy laboratoriya sharoitini yaratadi.

--impure tizim bilan aloqani saqlash
Bu flag --purening teskarisi. U sizning joriy shell muhitingizdagi o'zgaruvchilarni nix muhiti ichiga olib kirishga ruxsat beradi.

Global PATHingiz paketlar bilan to'lib ketmaydi. Bir vaqtning o'zida bir nechta terminalda nodejs ning turli versiyalarini hech qanday konfliktlarsiz ishlatish mumkin. macos yoki ubuntu da bo'lsangiz ham, muhit bir xil ishlaydi.

nix-shell orqali paketlar bilan ishlab ko'rganingizdan so'ng, loyihalaringiz uchun shell.nix yoki flake.nix fayllarini yaratishni o'rgansangiz bo'ladi. Shunda loyiha papkasiga kirishingiz bilan barcha instrumentlar (node, postgres, redis) avtomatik tayyor turadi.

nixosga o'tish esa tizim darajasida (drayverlar, kernel, DE) to'liq nazoratni xohlovchilar uchun keyingi step.

packagelarni shu yerdan topsa buladi
search.nixos.org


@nnolan_labs
👍3🔥1👏1
#nix_002

endi keyingi muammo kelib chiqadi, doim imperative yo'l bilan shell command bilan ishlanadimi degan
bunga yechim shell.nix orqali declarative config bilan control qilish, bunda imkoniyatlar ancha keng, packagelar turlari, boshqa shell larda input qilib foydalanish separate config.

(import <nixpkgs> {}).mkShell {
# buildInputs: runtimeda kerak bo'ladigan narsalar
buildInputs = [
(import <nixpkgs> {}).openssl
(import <nixpkgs> {}).zlib
];

# nativeBuildInputs: compilyatsiya va build uchun
nativeBuildInputs = [
(import <nixpkgs> {}).gnumake
(import <nixpkgs> {}).gcc
];

# packages: terminalda bevosita ishlatiladigan dasturlar
packages = [
(import <nixpkgs> {}).nodejs_20
(import <nixpkgs> {}).nodePackages.pnpm
(import <nixpkgs> {}).git
(import <nixpkgs> {}).btop
];

# inputsFrom: agar boshqa paketdan meros olish kerak bo'lsa
inputsFrom = [];

# shu session uchun o'zgaruvchilar
QANAQADIR_VAR = "porjectim";

# shell ochilganda ishga tushadi, nix-shell shell.nix qilganizda shu command run bo'ladi
shellHook = ''
echo "------------------------------------------"
echo "$QANAQADIR_VAR muhiti yuklandi"
echo "nodejs: $(node -v)"
echo "pnpm: $(pnpm -v)"
echo "------------------------------------------"
'';
}

import <nixpkgs> { } devicega o'rnatilgan nixpkgsni import qil degani, huddi boshqa tillardagi importlar kabi, keyin ko'ramiz, boshqa versionlar bilan ishlashni ham  

buni qisqartiramiz

let
pkgs = import <nixpkgs> {};
in
pkgs.mkShell {
buildInputs = [
pkgs.openssl
pkgs.zlib
];
nativeBuildInputs = [
pkgs.gnumake
pkgs.gcc
];
packages = [
pkgs.nodejs_20
pkgs.nodePackages.pnpm
pkgs.git
pkgs.btop
];

inputsFrom = [];

QANAQADIR_VAR = "projectim";

shellHook = ''
echo "------------------------------------------"
echo "$QANAQADIR_VAR muhiti yuklandi"
echo "nodejs: $(node -v)"
echo "pnpm: $(pnpm -v)"
echo "------------------------------------------"
'';
}

let bizga variable declaration imkonini beradi, keyin uni in partda ishlata olishim uchun

huddi shu tartibda biz turli projectlar uchun shell environmentni setup qilishimiz mumkin, keyin boshqa deviceda prosta nix-shell shell.nix qivorsak tamom hamma narsa tayyor va manda ishlardi degan gap yo'qoladi )

separate qilib ishlatish. masalan front uchun alohida shell bo'lsa.
{ pkgs ? import <nixpkgs> {} }:

pkgs.mkShell {
packages = [
pkgs.nodejs_20
pkgs.nodePackages.pnpm
pkgs.nodePackages.typescript-language-server
];
}


backend uchun alohida
{ pkgs ? import <nixpkgs> {} }:

pkgs.mkShell {
packages = [
pkgs.go
pkgs.sqlc
pkgs.golangci-lint
pkgs.postgresql
];
}


biz buni merge qilib yuborishimiz mumkin

let
pkgs = import <nixpkgs> {};

# alohida shell-larni import qilib
fronend-env = import ./frontend.nix { inherit pkgs; };
backend-env = import ./backend.nix { inherit pkgs; };
in
pkgs.mkShell {
# ikkala shell ichidagi barcha paketlarni meros qilib oladi
inputsFrom = [ frontend-env backend-env ];

# natija, qayta yozish shart emas )
# bu hammasida shunday builtInputs, nativeBuildInputs, packages

# packages = [
# pkgs.go
# pkgs.sqlc
# pkgs.golangci-lint
# pkgs.postgresql
# pkgs.nodejs_20
# pkgs.nodePackages.pnpm
# pkgs.nodePackages.typescript-language-server
# ]
}


* .mkShellNoCC qilib ham shell create qilish mumkin, bunda C Compiler kerak bo'lmasa ishlatiladi odatda, masalan nodejs ga aloqador narsalar bo'lsa mkShellNoCC ishlatish mumkin, bu shell enviromentni tezroq setup qiladi

@nnolan_labs