Nix
Astal
Using Astal on Nix will require you to package your project.
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
astal = {
url = "github:aylur/astal";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, astal }: let
system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system};
in {
packages.${system}.default = astal.lib.mkLuaPacakge {
inherit pkgs;
src = ./path/to/project; # should contain init.lua
# add extra glib packages or binaries
extraPackages = [
astal.packages.${system}.battery
pkgs.dart-sass
];
};
};
}
# Not documented yet
# 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
];
# add extra packages
buildInputs = [
astal.packages.${system}.astal
];
};
};
};
}
AGS
The recommended way to use AGS on NixOS is through the home-manager module.
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";
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
system = "x86_64-linux";
in
{
homeConfigurations."${username}" = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs { inherit system; };
# pass inputs as specialArgs
extraSpecialArgs = { inherit inputs; };
# import your home.nix
modules = [ ./home-manager/home.nix ];
};
};
}
Example content of home.nix
file
{ 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
];
};
}
AGS by default only includes the core libastal
library. If you want to include any other library 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
.
The AGS flake does not expose the astal
cli to the home environment, you have to do that yourself if you want:
home.packages = [ inputs.ags.packages.${pkgs.system}.astal ];
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:
home.packages = [ inputs.ags.packages.${pkgs.system}.notifd ];
astal-notifd --help