summaryrefslogtreecommitdiff
path: root/docs/guide/getting-started/nix.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/guide/getting-started/nix.md')
-rw-r--r--docs/guide/getting-started/nix.md208
1 files changed, 85 insertions, 123 deletions
diff --git a/docs/guide/getting-started/nix.md b/docs/guide/getting-started/nix.md
index 1e0572e..6bc5d9b 100644
--- a/docs/guide/getting-started/nix.md
+++ b/docs/guide/getting-started/nix.md
@@ -5,13 +5,15 @@ next:
---
# Nix
-## Astal
-
Using Astal on Nix will require you to package your project.
+## TypeScript
+
+Using [AGS](https://aylur.github.io/ags/) as the bundler.
+
:::code-group
-```nix [<i class="devicon-lua-plain"></i> Lua]
+```nix [<i class="devicon-nixos-plain"></i> flake.nix]
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
@@ -19,80 +21,49 @@ Using Astal on Nix will require you to package your project.
url = "github:aylur/astal";
inputs.nixpkgs.follows = "nixpkgs";
};
+ ags = {
+ url = "github:aylur/ags";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
};
- outputs = { self, nixpkgs, astal }: let
+ outputs = { self, nixpkgs, astal, ags }: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
- packages.${system}.default = astal.lib.mkLuaPackage {
- inherit pkgs;
- src = ./path/to/project; # should contain init.lua
-
- # add extra glib packages or binaries
- extraPackages = [
- astal.packages.${system}.battery
- pkgs.dart-sass
+ packages.${system}. default = pkgs.stdenvNoCC.mkDerivation rec {
+ name = "my-shell";
+ src = ./.;
+
+ nativeBuildInputs = [
+ ags.packages.${system}.default
+ pkgs.wrapGAppsHook
+ pkgs.gobject-introspection
];
- };
- };
-}
-```
-```nix [<i class="devicon-python-plain"></i> Python]
-# Not documented yet
-```
-
-```nix [<i class="devicon-vala-plain"></i> Vala]
-# keep in mind that this is just the nix derivation
-# and you still have to use some build tool like meson
-{
- inputs = {
- nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
- astal.url = "github:aylur/astal";
- };
-
- outputs = { self, nixpkgs, astal }: let
- system = "x86_64-linux";
- pkgs = nixpkgs.legacyPackages.${system};
- in {
- packages.${system} = {
- default = pkgs.stdenv.mkDerivation {
- name = "my-shell";
- src = ./.;
-
- nativeBuildInputs = with pkgs; [
- meson
- ninja
- pkg-config
- vala
- gobject-introspection
- ];
+ buildInputs = with astal.packages.${system}; [
+ astal3
+ io
+ # any other package
+ ];
- # add extra packages
- buildInputs = [
- astal.packages.${system}.astal
- ];
- };
+ installPhase = ''
+ mkdir -p $out/bin
+ ags bundle app.ts $out/bin/${name}
+ '';
};
};
}
```
-```nix [<i class="devicon-typescript-plain"></i> TypeScript]
-# The usage of AGS (read below) is recommended
-# Usage without AGS is not yet documented
-```
-
:::
-## AGS
-
-The recommended way to use [AGS](../typescript/first-widgets#first-widgets) on NixOS is through the home-manager module.
-
-Example content of a `flake.nix` file that contains your `homeConfigurations`.
+:::tip
+You can use any other bundler too like `esbuild`
+which is what `ags` uses under the hood.
+:::
-<!--TODO: remove v2 after merge-->
+## Lua
:::code-group
@@ -100,28 +71,26 @@ Example content of a `flake.nix` file that contains your `homeConfigurations`.
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
- home-manager = {
- url = "github:nix-community/home-manager";
+ astal = {
+ url = "github:aylur/astal";
inputs.nixpkgs.follows = "nixpkgs";
};
-
- # add ags https://github.com/Aylur/ags/pull/504
- ags.url = "github:aylur/ags/v2";
};
- outputs = { home-manager, nixpkgs, ... }@inputs:
- let
+ outputs = { self, nixpkgs, astal }: let
system = "x86_64-linux";
- in
- {
- homeConfigurations."${username}" = home-manager.lib.homeManagerConfiguration {
- pkgs = import nixpkgs { inherit system; };
-
- # pass inputs as specialArgs
- extraSpecialArgs = { inherit inputs; };
+ pkgs = nixpkgs.legacyPackages.${system};
+ in {
+ packages.${system}.default = astal.lib.mkLuaPackage {
+ inherit pkgs;
+ name = "my-shell"; # how to name the executable
+ src = ./path/to/project; # should contain init.lua
- # import your home.nix
- modules = [ ./home-manager/home.nix ];
+ # add extra glib packages or binaries
+ extraPackages = [
+ astal.packages.${system}.battery
+ pkgs.dart-sass
+ ];
};
};
}
@@ -129,65 +98,58 @@ Example content of a `flake.nix` file that contains your `homeConfigurations`.
:::
-Example content of `home.nix` file
+## Python
:::code-group
-```nix [<i class="devicon-nixos-plain"></i> home.nix]
-{ inputs, pkgs, ... }:
-{
- # add the home manager module
- imports = [ inputs.ags.homeManagerModules.default ];
-
- programs.ags = {
- enable = true;
- configDir = ../ags;
-
- # additional packages to add to gjs's runtime
- extraPackages = with pkgs; [
- inputs.ags.packages.${pkgs.system}.battery
- fzf
- ];
- };
-}
+```nix [<i class="devicon-nixos-plain"></i> flake.nix]
+# Not documented yet
```
:::
-AGS by default only includes the core `astal3/astal4` and `astal-io` libraries.
-If you want to include any other [library](../libraries/references) you have to add them to `extraPackages`.
-You can also add binaries which will be added to the gjs runtime.
-
-:::warning
-The `configDir` option symlinks the given path to `~/.config/ags`.
-If you already have your source code there leave it as `null`.
-:::
+## Vala
-The AGS flake does not expose the `astal` cli to the home environment, you have to do that yourself if you want:
+Keep in mind that this is just the nix derivation
+and you still have to use some build tool like meson.
:::code-group
-```nix [<i class="devicon-nixos-plain"></i> home.nix]
-home.packages = [ inputs.ags.packages.${pkgs.system}.io ];
-```
-
-```sh [<i class="devicon-bash-plain"></i> sh]
-astal --help
-```
-
-:::
-
-Same applies to the `extraPackages` option, it does not expose the passed packages to the home environment.
-To make astal cli tools available to home environments, you have to add them yourself:
-
-:::code-group
+```nix [<i class="devicon-nixos-plain"></i> flake.nix]
+{
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ astal = {
+ url = "github:aylur/astal";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ };
-```nix [<i class="devicon-nixos-plain"></i> home.nix]
-home.packages = [ inputs.ags.packages.${pkgs.system}.notifd ];
-```
+ outputs = { self, nixpkgs, astal }: let
+ system = "x86_64-linux";
+ pkgs = nixpkgs.legacyPackages.${system};
+ in {
+ packages.${system}.default = pkgs.stdenv.mkDerivation {
+ name = "my-shell";
+ src = ./.;
+
+ nativeBuildInputs = with pkgs; [
+ meson
+ ninja
+ pkg-config
+ vala
+ gobject-introspection
+ ];
-```sh [<i class="devicon-bash-plain"></i> sh]
-astal-notifd --help
+ buildInputs = [
+ astal.packages.${system}.io
+ astal.packages.${system}.astal3
+ astal.packages.${system}.battery
+ # add extra packages
+ ];
+ };
+ };
+}
```
:::