Başlıkta her ne kadar DEB/RPM/AppImage yazmış olsam da asıl mantık içinde bulunan yürütülebilir dosyaları çalıştırmak. NixOS, diğer dağıtımlar gibi
Önceden sistemin kurallarına göre manuel olarak yapılması gerekirdi ama Nix-Alien isimli bu araç her şeyi otomatikeştirmiş durumda.
Flake, konfigürasyon ve Home Manager olmak üzere 3 yöntemle de kuruluyor ancak ben hala flake kısmına hakim deiğilim, flake kullanmak isterseniz alta bırakacağım GitHub sayfasından kendiniz inceleyip görebilirsiniz.
Bazı kodlar değişebileceğinden lazım kendinizin kontrol etmesi gerekebilir.
nix-alien.nix dosyamızın içine yapıştırın.
Daha sonra içe aktarmak için konfigürasyondaki import kısmına bu dosyamızı ekleyelim. Sonuç alttaki gibi olmalı.
Daha sonra rebuild etmeniz yeterli.
Eğer ilk defa home-manager kullanıyorsanız bu kodu direkt kopyala yapıştır yapmamanız gerektiğini bildirmeliyim. Kodda yazan "let" ile "in" kısımlarını göz önünde bulundurmalısınız. eğer yapamam derseniz konfigürasyondaki gibi içe aktarabilirsiniz. dosyanın home.nix ile aynı konumda olduğundan emin olun.
Nix-Alien direkt paketleri çalıştırmaz, içindeki dosyayı çıkarıp ona vermelisiniz. DEB için dpkg, RPM için ise cpio kurmamız gerek. alttaki kodu keni konfigürasyonunuza veya home.nix dosyanıza ekleyebilirsiniz.
İlgili dosyanın olduğu konuma gidin ve terminal açın.
DEB dosyaları için:
RPM dosyaları için:
AppImage dosyaları için:
Her pakette yürütülebilir dosyanın konumu farklı olabileceğinden klasörleri incelemeniz gerekmekte. çalıştırılabilir dosyanın uzantısı yoktur. terminalde klasörlere cd ile girip dosyalaro listelediğinizde mavi veya yeşil bir şekilde adı yazar. eğer bulursanız o dosyanın olduğu konumda terminale attaki kodu yazabilirsiniz:
Burada olduğu gibi derleme yapacak ve size çeşitli sorular soracaktır. ok tuşları ile sorduğu soruları cevaplayın. açılmış olacaktır.
Sadece denemek için kurmak istemiyorsanız nix-run ile de kullanılabiliyor. Eğer flake kullanıyorsanız alttaki kodu kullanmanız yeterli olur.
Eğer flake kullanmıyorsanız alttaki kodu kullanabilirsiniz:
İki kodda da çalıştırılabilir dosya ile aynı dizinde olmalısınız.
Rehber buraya kadardı, yazması beklediğimden uzun sürdü, yazım yanlışları varsa affınıza sığınıyorum.
İlgili GitHub linki:
github.com
/usr/bin
ve daha farklı dizinlerde paketlerini tutmaz. Konfigörasyon ile kurulursa /nix/store
üzerine, eğer nix env -iA
ile kurulursa da ~/.nix-profile
konumuna kurar. Ki bu da yürütülebilen paketlerin aradığı konumu bulamamasına yol açar.Önceden sistemin kurallarına göre manuel olarak yapılması gerekirdi ama Nix-Alien isimli bu araç her şeyi otomatikeştirmiş durumda.
Nix-Alien'ın kurulumu:
Flake, konfigürasyon ve Home Manager olmak üzere 3 yöntemle de kuruluyor ancak ben hala flake kısmına hakim deiğilim, flake kullanmak isterseniz alta bırakacağım GitHub sayfasından kendiniz inceleyip görebilirsiniz.
Bazı kodlar değişebileceğinden lazım kendinizin kontrol etmesi gerekebilir.
Konfigürasyon ile kurulum:
Normal bir şekilde konfigürasyona da ekleyebiliriz ancak bu aracı yapan kişi muhtemelen işimiz bittiğinde daha rahat silebilmemiz için konfigürasyonun içine aktarmamızın daha kolay olacağını düşünmüş.
Kod:
cd /etc/nixos
touch nix-alien.nix
sudo nano nix-alien.nix
nix-alien.nix dosyamızın içine yapıştırın.
Kod:
{ ... }:
let
nix-alien-pkgs = import (
builtins.fetchTarball "https://github.com/thiagokokada/nix-alien/tarball/master"
) { };
in
{
environment.systemPackages = with nix-alien-pkgs; [
nix-alien
];
# Optional, but this is needed for `nix-alien-ld` command
programs.nix-ld.enable = true;
}
Daha sonra içe aktarmak için konfigürasyondaki import kısmına bu dosyamızı ekleyelim. Sonuç alttaki gibi olmalı.
Kod:
{pkgs, lib, config, ...}
{
imports =
[.hardware-configuration.nix
.nix-alien.nix
];
#geri kalan konfigürasyonunuz
}
Daha sonra rebuild etmeniz yeterli.
Home-Manager ile kurulum:
Kod:
{ ... }:
let
nix-alien-pkgs = import (
builtins.fetchTarball "https://github.com/thiagokokada/nix-alien/tarball/master"
) { };
in
{
# ...
home.packages = with nix-alien-pkgs; [
nix-alien
];
}
Eğer ilk defa home-manager kullanıyorsanız bu kodu direkt kopyala yapıştır yapmamanız gerektiğini bildirmeliyim. Kodda yazan "let" ile "in" kısımlarını göz önünde bulundurmalısınız. eğer yapamam derseniz konfigürasyondaki gibi içe aktarabilirsiniz. dosyanın home.nix ile aynı konumda olduğundan emin olun.
Yürütülebilir dosyaları için gerekli paketler:
Nix-Alien direkt paketleri çalıştırmaz, içindeki dosyayı çıkarıp ona vermelisiniz. DEB için dpkg, RPM için ise cpio kurmamız gerek. alttaki kodu keni konfigürasyonunuza veya home.nix dosyanıza ekleyebilirsiniz.
Kod:
#configuration.nix
{pkgs, ...}
{ environment.systemPackages = with pkgs; {
dpkg
dnf
cpio
};
}
Kod:
#home-manager
{pkgs, ...}
{
home.packages = with pkgs; {
dpkg
dnf
cpio
};
}
Dosyaları çıkarmak:
İlgili dosyanın olduğu konuma gidin ve terminal açın.
DEB dosyaları için:
Kod:
dpkg-deb -e dosya.deb klasöradı
RPM dosyaları için:
Kod:
rpm2cpio paket.rpm | cpio -idmv
AppImage dosyaları için:
Kod:
./dosyaadı.appimage --appimage-exract
Nix-Alien ile çalıştırmak:
Her pakette yürütülebilir dosyanın konumu farklı olabileceğinden klasörleri incelemeniz gerekmekte. çalıştırılabilir dosyanın uzantısı yoktur. terminalde klasörlere cd ile girip dosyalaro listelediğinizde mavi veya yeşil bir şekilde adı yazar. eğer bulursanız o dosyanın olduğu konumda terminale attaki kodu yazabilirsiniz:
Kod:
nix-alien uygulama adı
#örnek. bu chrome'un deb ve rpm
#paketlerinde bulabileceğiniz dosyadır ancak NixOS'ta buna gerek yoktur.
#başka tarayıcı kullanabilir veya Flatpak'tan indirebilirsiniz.
nix-alien chrome
Burada olduğu gibi derleme yapacak ve size çeşitli sorular soracaktır. ok tuşları ile sorduğu soruları cevaplayın. açılmış olacaktır.
Kurulumsuz kullanım:
Sadece denemek için kurmak istemiyorsanız nix-run ile de kullanılabiliyor. Eğer flake kullanıyorsanız alttaki kodu kullanmanız yeterli olur.
Kod:
nix run "github:thiagokokada/nix-alien#nix-alien" -- ~/uygulamaadı
Eğer flake kullanmıyorsanız alttaki kodu kullanabilirsiniz:
Kod:
$ nix --extra-experimental-features "nix-command flakes" run "github:thiagokokada/nix-alien#nix-alien" -- ~/uygulamaadı
İki kodda da çalıştırılabilir dosya ile aynı dizinde olmalısınız.
Rehber buraya kadardı, yazması beklediğimden uzun sürdü, yazım yanlışları varsa affınıza sığınıyorum.
İlgili GitHub linki:
GitHub - thiagokokada/nix-alien: Run unpatched binaries on Nix/NixOS
Run unpatched binaries on Nix/NixOS. Contribute to thiagokokada/nix-alien development by creating an account on GitHub.