問題タブ [nixos]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
shell - Bash 以外のシェルを使用するように nix-shell を構成しますか?
私は NixOS 15 と nix-shell v1.10 を使用しています。現在、Zsh をメイン シェルとして使用しており、Nix 式によって構築された開発環境で作業しているときにも、nix-shell 内で Oh-My-Zsh と組み合わせて使用したいと考えています。
もしお役に立てれば、Rails プロジェクト用にセットアップした Nix 環境の 1 つを次に示します。
** 編集 **
この方法でコマンドを実行しても、nix-shell にいることが CLI プロンプトで示されません。これをすばやくスクリプト化できるように、これを検出する簡単な方法はありzshrc
ますか?
nixos - 複製された nixpkgs を使用して nixos パッケージを再構築するにはどうすればよいですか?
nixos/nix の決定論的な性質は本当に気に入っていますが、パッケージを自分の用途に合わせてカスタマイズする最善の方法を理解するのに苦労しています。私はこの属性を使用して限られた成功を収めましたnixpkgs.config.packageOverrides
が、それは苦痛であり、機能するよりも頻繁に失敗することがわかりました (たとえば、安定したチャネルと不安定なチャネルで取得した virtualbox のバージョンをオーバーライドしようとして何週間も費やしましたが、正しく機能することはありませんでした) )。
私の次の試みは、nixpkgs リポジトリのクローンを作成し、式を直接変更することでした。の先頭にクローンのパスを追加すると、これが機能すると思いました$NIX_PATH
。ただし、再構築しても変更が反映されないようです。https://nixos.org/wiki/Create_and_debug_nix_packagesnixos-rebuild -I $NIXPKGS switch
で説明されているようにバリアントも試しましたが、変更も反映されません。
このクローン作成アプローチは可能ですか?もしそうなら、何が間違っていますか?
nixos - NixOS システムの完全な構成を収集する方法は?
最近、NixOS について少し読んで試してみました。1 つのファイルだけで Linux を構成できるという印象を受けたからです。
私がそれを使用したとき、私はたくさんのパッケージを でインストールしたnix-env
ので、それらconfiguration.nix
はconfiguration.nix
. npm i -g <package>
これをグローバルにインストールするようなものがあるので、最終的configuration.nix
には別のマシンにコピーできます。
また、私はzsh
andのようなものをインストールatom
しましたが、構成とカスタマイズに対するアプローチがまったく異なります (bashscript、javascript、less など)。
Nix/NixOS がパッケージ固有の構成も追跡する方法はありますか?
それはすでに起こっていて、私はそれを見ませんか?パッケージの nix 式と同様に、パッケージがその構成などを保存する場所を知っています。
つまり、これらのパッケージをメイン構成に追加できるのはいいことです。別の PC で使用すると、同じソフトウェアがインストールされますが、インストールされたパッケージの構成もかなり多く書いていることがわかります。
haskell - NixOS でのビルド時に Cabal が外部ライブラリを見つけられない
cabal2nix を使用して、NixOS で内部 Haskell プロジェクトを構築しようとしています。wget
これは、Ubuntuでソースを実行してビルドする外部ライブラリをラップします (したがって依存します) make && make install && ldconfig
。したがって、cabal がプログラムをビルドしようとすると、明らかに適切なヘッダー ファイル (/usr/local/include/ta-lib
またはにあります) を見つけることができます/usr/include/ta-lib
。
Nix では、ソースを取得してビルドする方法を指定するために .nix ファイルをセットアップし、次に Nix が分離されたビルド環境をセットアップするというプロセスを理解しています。これを行うと、外部ライブラリが取得され、適切に構築されます。
Nix が構成ステップを実行すると、問題ないように見えます。
Nixストアで正しいパスに設定し--extra-include-dirs
ます。--extra-lib-dirs
ただし、ビルドに行くと文句を言いますが、
残念ながら、カバールが外国の図書館が存在するかどうかをどのように判断しているのかわかりません。私はここを読んだ ( Haskell how to resolve cabal error: Missing dependencies on foreign libraries? ) cabal は、見つかったヘッダーごとに構成される C プログラムをビルドしてリンクしようとすることを読みました。そのため、どういうわけか正しいライブラリが見つかりません。
なにが問題ですか?これは、Ubuntu で ldconfig を実行するステップと関係がありますか?
nix - Nix でのビルドとランタイムの依存関係
私は Nix を理解し始めたばかりなので、ドキュメントの質問への回答を見逃していたら申し訳ありません。
Nix を使用して、ライブラリと実行可能ファイルの最小限のセットで安全な運用マシンをセットアップしたいと考えています。セキュリティ上のリスクになる可能性があるため、コンパイラやその他のビルド ツールは存在させたくありません。
いくつかのパッケージをインストールすると、実行時の依存関係の最小セットのみに依存しているように見えます。たとえば、インストールするapache-tomcat-8.0.23
と、Java ランタイム (JRE) と、Tomcat を構成するビルド済みの JAR ファイルが取得されます。
一方、一部のパッケージには、依存関係として完全なビルド ツールチェーンが含まれているようです。別の Java ベースの例を挙げると、spark-1.4.0
Nix をインストールすると、コンパイラを含む Java 開発キット (JDK) がプルダウンされ、Maven ビルド ツールなどもプルされます。
だから、私の質問は次のとおりです。
- Nix パッケージは、ビルドとランタイムの依存関係を区別しますか?
- 一部のパッケージはビルド ツールに依存しているように見えるのに、他のパッケージはランタイムのみを必要とするのはなぜですか? これはすべて、パッケージ作成者がアプリケーションをどのようにまとめたかにかかっているのでしょうか?
- パッケージに不要なビルド依存関係が含まれている場合、同じアプリケーション用に独自の代替パッケージを設計する以外に、オペレーターとしてできることはありますか?
どうもありがとう。
nixos - NixOS は可能なすべての設定オプションを一覧表示します
数日前に NixOS を使い始めました。hardware.opengl.driSupport32Bit
or など、すべてに構成オプションがあるようsystem.copySystemConfiguration
です。
しかし問題は、利用可能なすべてのオプションを見ることができるかということです。いくつかの例を挙げると:
- 「kde4」、「kde5」、「gnome3」以外に利用可能なデスクトップマネージャーを知るにはどうすればよいですか?
- と 以外に、どのシナプス オプションを使用できます
accelFactor
かtwoFingerScroll
?
nixos - NixOS 世代にラベルを追加する方法
マシンを起動すると、すべての世代がリストに表示されますが、「Generation 49」、「Generation 50」などの名前が付けられています。
後で何が変更されたかを簡単に確認できるように、世代にラベルを追加する方法はありますか? オプションのコミットメッセージのようなものが欲しいので、「第 49 世代 - KDE5 に切り替え」、「第 50 世代 - gnome3 に切り替え」のようにすることができます。
linux - unshare を使用し、元の機能を引き続き実行する
このページの指示からシェル スクリプトを一般化して作成しようとしています。具体的にはこちら: https://nixos.org/wiki/How_to_add_files_to_the_nix-store#Large_filesメモリエラーの。
したがって...
私の現在のコードは次のとおりです。
...で呼び出されるという考えでsudo -HE
そして問題はunshare
、新しい bash シェルがすぐに開始され、「親」コードの実行が停止することです。もちろん、そのロジックを終了する必要があるため、これは私にとって悪いことです。nix-store
また、パスなどがまだ有効である必要があるため、現在のユーザーの環境を保持する必要がありsudo -HE
ます。