Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2023-04-03 06:02:15 +00:00 committed by GitHub
commit baa80fd5aa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
524 changed files with 62997 additions and 578 deletions

View file

@ -25,6 +25,7 @@
<xi:include href="ios.section.xml" />
<xi:include href="java.section.xml" />
<xi:include href="javascript.section.xml" />
<xi:include href="lisp.section.xml" />
<xi:include href="lua.section.xml" />
<xi:include href="maven.section.xml" />
<xi:include href="nim.section.xml" />

View file

@ -0,0 +1,304 @@
# lisp-modules {#lisp}
This document describes the Nixpkgs infrastructure for building Common Lisp
libraries that use ASDF (Another System Definition Facility). It lives in
`pkgs/development/lisp-modules`.
## Overview {#lisp-overview}
The main entry point of the API are the Common Lisp implementation packages
(e.g. `abcl`, `ccl`, `clasp-common-lisp`, `clisp` `ecl`, `sbcl`)
themselves. They have the `pkgs` and `withPackages` attributes, which can be
used to discover available packages and to build wrappers, respectively.
The `pkgs` attribute set contains packages that were automatically imported from
Quicklisp, and any other manually defined ones. Not every package works for all
the CL implementations (e.g. `nyxt` only makes sense for `sbcl`).
The `withPackages` function is of primary utility. It is used to build runnable
wrappers, with a pinned and pre-built ASDF FASL available in the `ASDF`
environment variable, and `CL_SOURCE_REGISTRY`/`ASDF_OUTPUT_TRANSLATIONS`
configured to find the desired systems on runtime.
With a few exceptions, the primary thing that the infrastructure does is to run
`asdf:load-system` for each system specified in the `systems` argument to
`build-asdf-system`, and save the FASLs to the Nix store. Then, it makes these
FASLs available to wrappers. Any other use-cases, such as producing SBCL
executables with `sb-ext:save-lisp-and-die`, are achieved via overriding the
`buildPhase` etc.
In addition, Lisps have the `withOverrides` function, which can be used to
substitute any package in the scope of their `pkgs`. This will be useful
together with `overrideLispAttrs` when dealing with slashy ASDF systems, because
they should stay in the main package and be build by specifying the `systems`
argument to `build-asdf-system`.
## The 90% use case example {#lisp-use-case-example}
The most common way to use the library is to run ad-hoc wrappers like this:
`nix-shell -p 'sbcl.withPackages (ps: with ps; [ alexandria ])'`
Then, in a shell:
```
$ result/bin/sbcl
* (load (sb-ext:posix-getenv "ASDF"))
* (asdf:load-system 'alexandria)
```
Also one can create a `pkgs.mkShell` environment in `shell.nix`/`flake.nix`:
```
let
sbcl' = sbcl.withPackages (ps: [ ps.alexandria ]);
in mkShell {
buildInputs = [ sbcl' ];
}
```
Such a Lisp can be now used e.g. to compile your sources:
```
buildPhase = ''
${sbcl'}/bin/sbcl --load my-build-file.lisp
''
```
## Importing packages from Quicklisp {#lisp-importing-packages-from-quicklisp}
The library is able to very quickly import all the packages distributed by
Quicklisp by parsing its `releases.txt` and `systems.txt` files. These files are
available from [http://beta.quicklisp.org/dist/quicklisp.txt].
The import process is implemented in the `import` directory as Common Lisp
functions in the `org.lispbuilds.nix` ASDF system. To run the script, one can
execute `ql-import.lisp`:
```
nix-shell --run 'sbcl --script ql-import.lisp'
```
The script will:
1. Download the latest Quicklisp `systems.txt` and `releases.txt` files
2. Generate an SQLite database of all QL systems in `packages.sqlite`
3. Generate an `imported.nix` file from the database
The maintainer's job there is to:
1. Re-run the `ql-import.lisp` script
2. Add missing native dependencies in `ql.nix`
3. For packages that still don't build, package them manually in `packages.nix`
Also, the `imported.nix` file **must not be edited manually**! It should only be
generated as described in this section.
### Adding native dependencies {#lisp-quicklisp-adding-native-dependencies}
The Quicklisp files contain ASDF dependency data, but don't include native
library (CFFI) dependencies, and, in the case of ABCL, Java dependencies.
The `ql.nix` file contains a long list of overrides, where these dependencies
can be added.
Packages defined in `packages.nix` contain these dependencies naturally.
### Trusting `systems.txt` and `releases.txt` {#lisp-quicklisp-trusting}
The previous implementation of `lisp-modules` didn't fully trust the Quicklisp
data, because there were times where the dependencies specified were not
complete, and caused broken builds. It instead used a `nix-shell` environment to
discover real dependencies by using the ASDF APIs.
The current implementation has chosen to trust this data, because it's faster to
parse a text file than to build each system to generate its Nix file, and
because that way packages can be mass-imported. Because of that, there may come
a day where some packages will break, due to bugs in Quicklisp. In that case,
the fix could be a manual override in `packages.nix` and `ql.nix`.
A known fact is that Quicklisp doesn't include dependencies on slashy systems in
its data. This is an example of a situation where such fixes were used, e.g. to
replace the `systems` attribute of the affected packages. (See the definition of
`iolib`).
### Quirks {#lisp-quicklisp-quirks}
During Quicklisp import:
- `+` in names are converted to `_plus{_,}`: `cl+ssl`->`cl_plus_ssl`, `alexandria+`->`alexandria_plus`
- `.` to `_dot_`: `iolib.base`->`iolib_dot_base`
- names starting with a number have a `_` prepended (`3d-vectors`->`_3d-vectors`)
- `_` in names is converted to `__` for reversibility
## Defining packages manually inside Nixpkgs {#lisp-defining-packages-inside}
New packages, that for some reason are not in Quicklisp, and so cannot be
auto-imported, can be written in the `packages.nix` file.
In that file, use the `build-asdf-system` function, which is a wrapper around
`mkDerivation` for building ASDF systems. Various other hacks are present, such
as `build-with-compile-into-pwd` for systems which create files during
compilation.
The `build-asdf-system` function is documented with comments in
`nix-cl.nix`. Also, `packages.nix` is full of examples of how to use it.
## Defining packages manually outside Nixpkgs {#lisp-defining-packages-outside}
Lisp derivations (`abcl`, `sbcl` etc.) also export the `buildASDFSystem`
function, which is the same as `build-asdf-system`, except for the `lisp`
argument which is set to the given CL implementation.
It can be used to define packages outside Nixpkgs, and, for example, add them
into the package scope with `withOverrides` which will be discussed later on.
### Including an external package in scope {#lisp-including-external-pkg-in-scope}
A package defined outside Nixpkgs using `buildASDFSystem` can be woven into the
Nixpkgs-provided scope like this:
```
let
alexandria = sbcl.buildASDFSystem rec {
pname = "alexandria";
version = "1.4";
src = fetchFromGitLab {
domain = "gitlab.common-lisp.net";
owner = "alexandria";
repo = "alexandria";
rev = "v${version}";
hash = "sha256-1Hzxt65dZvgOFIljjjlSGgKYkj+YBLwJCACi5DZsKmQ=";
};
};
sbcl' = sbcl.withOverrides (self: super: {
inherit alexandria;
});
in sbcl'.pkgs.alexandria
```
## Overriding package attributes {#lisp-overriding-package-attributes}
Packages export the `overrideLispAttrs` function, which can be used to build a
new package with different parameters.
Example of overriding `alexandria`:
```
sbcl.pkgs.alexandria.overrideLispAttrs (oldAttrs: rec {
version = "1.4";
src = fetchFromGitLab {
domain = "gitlab.common-lisp.net";
owner = "alexandria";
repo = "alexandria";
rev = "v${version}";
hash = "sha256-1Hzxt65dZvgOFIljjjlSGgKYkj+YBLwJCACi5DZsKmQ=";
};
})
```
## Overriding packages in scope {#lisp-overriding-packages-in-scope}
Packages can be woven into a new scope by using `withOverrides`:
```
let
sbcl' = sbcl.withOverrides (self: super: {
alexandria = super.alexandria.overrideLispAttrs (oldAttrs: rec {
pname = "alexandria";
version = "1.4";
src = fetchFromGitLab {
domain = "gitlab.common-lisp.net";
owner = "alexandria";
repo = "alexandria";
rev = "v${version}";
hash = "sha256-1Hzxt65dZvgOFIljjjlSGgKYkj+YBLwJCACi5DZsKmQ=";
};
});
});
in builtins.elemAt sbcl'.pkgs.bordeaux-threads.lispLibs 0
```
### Dealing with slashy systems {#lisp-dealing-with-slashy-systems}
Slashy (secondary) systems should not exist in their own packages! Instead, they
should be included in the parent package as an extra entry in the `systems`
argument to the `build-asdf-system`/`buildASDFSystem` functions.
The reason is that ASDF searches for a secondary system in the `.asd` of the
parent package. Thus, having them separate would cause either one of them not to
load cleanly, because one will contains FASLs of itself but not the other, and
vice versa.
To package slashy systems, use `overrideLispAttrs`, like so:
```
ecl.pkgs.alexandria.overrideLispAttrs (oldAttrs: {
systems = oldAttrs.systems ++ [ "alexandria/tests" ];
lispLibs = oldAttrs.lispLibs ++ [ ecl.pkgs.rt ];
})
```
See the respective section on using `withOverrides` for how to weave it back
into `ecl.pkgs`.
Note that sometimes the slashy systems might not only have more dependencies
than the main one, but create a circular dependency between `.asd`
files. Unfortunately, in this case an adhoc solution becomes necessary.
## Building Wrappers {#lisp-building-wrappers}
Wrappers can be built using the `withPackages` function of Common Lisp
implementations (`abcl`, `ecl`, `sbcl` etc.):
```
sbcl.withPackages (ps: [ ps.alexandria ps.bordeaux-threads ])
```
Such a wrapper can then be executed like this:
```
result/bin/sbcl
```
### Loading ASDF {#lisp-loading-asdf}
For best results, avoid calling `(require 'asdf)` When using the
library-generated wrappers.
Use `(load (ext:getenv "ASDF"))` instead, supplying your implementation's way of
getting an environment variable for `ext:getenv`. This will load the
(pre-compiled to FASL) Nixpkgs-provided version of ASDF.
### Loading systems {#lisp-loading-systems}
There, you can simply use `asdf:load-system`. This works by setting the right
values for the `CL_SOURCE_REGISTRY`/`ASDF_OUTPUT_TRANSLATIONS` environment
variables, so that systems are found in the Nix store and pre-compiled FASLs are
loaded.
## Adding a new Lisp {#lisp-adding-a-new-lisp}
The function `wrapLisp` is used to wrap Common Lisp implementations. It adds the
`pkgs`, `withPackages`, `withOverrides` and `buildASDFSystem` attributes to the
derivation.
`wrapLisp` takes these arguments:
- `pkg`: the Lisp package
- `faslExt`: Implementation-specific extension for FASL files
- `program`: The name of executable file in `${pkg}/bin/` (Default: `pkg.pname`)
- `flags`: A list of flags to always pass to `program` (Default: `[]`)
- `asdf`: The ASDF version to use (Default: `pkgs.asdf_3_3`)
- `packageOverrides`: Package overrides config (Default: `(self: super: {})`)
This example wraps CLISP:
```
wrapLisp {
pkg = clisp;
faslExt = "fas";
flags = ["-E" "UTF8"];
}
```

View file

@ -47,6 +47,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- [stevenblack-blocklist](https://github.com/StevenBlack/hosts), A unified hosts file with base extensions for blocking unwanted websites. Available as [networking.stevenblack](options.html#opt-networking.stevenblack.enable).
- [Budgie Desktop](https://github.com/BuddiesOfBudgie/budgie-desktop), a familiar, modern desktop environment. Availabe as [services.xserver.desktopManager.budgie](options.html#opt-services.xserver.desktopManager.budgie).
- [imaginary](https://github.com/h2non/imaginary), a microservice for high-level image processing that Nextcloud can use to generate previews. Available as [services.imaginary](#opt-services.imaginary.enable).
- [opensearch](https://opensearch.org), a search server alternative to Elasticsearch. Available as [services.opensearch](options.html#opt-services.opensearch.enable).
@ -365,6 +367,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- `boot.initrd.luks.device.<name>` has a new `tryEmptyPassphrase` option, this is useful for OEM's who need to install an encrypted disk with a future settable passphrase
- Lisp gained a [manual section](https://nixos.org/manual/nixpkgs/stable/#lisp), documenting a new and backwards incompatible interface. The previous interface will be removed in a future release.
## Detailed migration information {#sec-release-23.05-migration}
### Pipewire configuration overrides {#sec-release-23.05-migration-pipewire}

View file

@ -733,8 +733,9 @@ in {
sep = "\\$";
base64 = "[a-zA-Z0-9./]+";
id = cryptSchemeIdPatternGroup;
name = "[a-z0-9-]+";
value = "[a-zA-Z0-9/+.-]+";
options = "${id}(=${value})?(,${id}=${value})*";
options = "${name}(=${value})?(,${name}=${value})*";
scheme = "${id}(${sep}${options})?";
content = "${base64}${sep}${base64}(${sep}${base64})?";
mcf = "^${sep}${scheme}${sep}${content}$";

View file

@ -0,0 +1,201 @@
{ lib, pkgs, config, utils, ... }:
let
inherit (lib) concatMapStrings literalExpression mdDoc mkDefault mkEnableOption mkIf mkOption types;
cfg = config.services.xserver.desktopManager.budgie;
nixos-background-light = pkgs.nixos-artwork.wallpapers.nineish;
nixos-background-dark = pkgs.nixos-artwork.wallpapers.nineish-dark-gray;
nixos-gsettings-overrides = pkgs.budgie.budgie-gsettings-overrides.override {
inherit (cfg) extraGSettingsOverrides extraGSettingsOverridePackages;
inherit nixos-background-dark nixos-background-light;
};
in {
options = {
services.xserver.desktopManager.budgie = {
enable = mkEnableOption (mdDoc "Budgie desktop");
sessionPath = mkOption {
description = mdDoc "Additional list of packages to be added to the session search path. Useful for GSettings-conditional autostart.";
type = with types; listOf package;
example = literalExpression "[ pkgs.budgie.budgie-desktop-view ]";
default = [];
};
extraGSettingsOverrides = mkOption {
description = mdDoc "Additional GSettings overrides.";
type = types.lines;
default = "";
};
extraGSettingsOverridePackages = mkOption {
description = mdDoc "List of packages for which GSettings are overridden.";
type = with types; listOf path;
default = [];
};
};
environment.budgie.excludePackages = mkOption {
description = mdDoc "Which packages Budgie should exclude from the default environment.";
type = with types; listOf package;
default = [];
example = literalExpression "[ pkgs.mate-terminal ]";
};
};
config = mkIf cfg.enable {
services.xserver.displayManager.sessionPackages = with pkgs; [
budgie.budgie-desktop
];
services.xserver.displayManager.lightdm.greeters.slick = {
enable = mkDefault true;
theme = mkDefault { name = "Qogir"; package = pkgs.qogir-theme; };
iconTheme = mkDefault { name = "Qogir"; package = pkgs.qogir-icon-theme; };
cursorTheme = mkDefault { name = "Qogir"; package = pkgs.qogir-icon-theme; };
};
services.xserver.desktopManager.budgie.sessionPath = [ pkgs.budgie.budgie-desktop-view ];
environment.extraInit = ''
${concatMapStrings (p: ''
if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}
fi
if [ -d "${p}/lib/girepository-1.0" ]; then
export GI_TYPELIB_PATH=$GI_TYPELIB_PATH''${GI_TYPELIB_PATH:+:}${p}/lib/girepository-1.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH''${LD_LIBRARY_PATH:+:}${p}/lib
fi
'') cfg.sessionPath}
'';
environment.systemPackages = with pkgs;
[
# Budgie Desktop.
budgie.budgie-backgrounds
budgie.budgie-control-center
budgie.budgie-desktop
budgie.budgie-desktop-view
budgie.budgie-screensaver
# Required by the Budgie Desktop session.
(gnome.gnome-session.override {gnomeShellSupport = false;})
# Required by Budgie Menu.
gnome-menus
# Provides `gsettings`.
glib
# Update user directories.
xdg-user-dirs
]
++ (utils.removePackagesByName [
cinnamon.nemo
mate.eom
mate.pluma
mate.atril
mate.engrampa
mate.mate-calc
mate.mate-terminal
mate.mate-system-monitor
vlc
# Desktop themes.
qogir-theme
qogir-icon-theme
# Default settings.
nixos-gsettings-overrides
] config.environment.budgie.excludePackages)
++ cfg.sessionPath;
# Fonts.
fonts.fonts = mkDefault [
pkgs.noto-fonts
pkgs.hack-font
];
fonts.fontconfig.defaultFonts = {
sansSerif = mkDefault ["Noto Sans"];
monospace = mkDefault ["Hack"];
};
# Qt application style.
qt = {
enable = mkDefault true;
style = mkDefault "gtk2";
platformTheme = mkDefault "gtk2";
};
environment.pathsToLink = [
"/share" # TODO: https://github.com/NixOS/nixpkgs/issues/47173
];
# GSettings overrides.
environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-overrides}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
# Required by Budgie Desktop.
services.xserver.updateDbusEnvironment = true;
programs.dconf.enable = true;
# Required by Budgie Screensaver.
security.pam.services.budgie-screensaver = {};
# Required by Budgie's Polkit Dialog.
security.polkit.enable = mkDefault true;
# Required by Budgie Panel plugins and/or Budgie Control Center panels.
networking.networkmanager.enable = mkDefault true; # for BCC's Network panel.
programs.nm-applet.enable = config.networking.networkmanager.enable; # Budgie has no Network applet.
programs.nm-applet.indicator = false; # Budgie doesn't support AppIndicators.
hardware.bluetooth.enable = mkDefault true; # for Budgie's Status Indicator and BCC's Bluetooth panel.
hardware.pulseaudio.enable = mkDefault true; # for Budgie's Status Indicator and BCC's Sound panel.
xdg.portal.enable = mkDefault true; # for BCC's Applications panel.
xdg.portal.extraPortals = with pkgs; [
xdg-desktop-portal-gtk # provides a XDG Portals implementation.
];
services.geoclue2.enable = mkDefault true; # for BCC's Privacy > Location Services panel.
services.upower.enable = config.powerManagement.enable; # for Budgie's Status Indicator and BCC's Power panel.
services.xserver.libinput.enable = mkDefault true; # for BCC's Mouse panel.
services.colord.enable = mkDefault true; # for BCC's Color panel.
services.gnome.at-spi2-core.enable = mkDefault true; # for BCC's A11y panel.
services.accounts-daemon.enable = mkDefault true; # for BCC's Users panel.
services.fprintd.enable = mkDefault true; # for BCC's Users panel.
services.udisks2.enable = mkDefault true; # for BCC's Details panel.
# For BCC's Online Accounts panel.
services.gnome.gnome-online-accounts.enable = mkDefault true;
services.gnome.gnome-online-miners.enable = true;
# For BCC's Printers panel.
services.printing.enable = mkDefault true;
services.system-config-printer.enable = config.services.printing.enable;
# For BCC's Sharing panel.
services.dleyna-renderer.enable = mkDefault true;
services.dleyna-server.enable = mkDefault true;
services.gnome.gnome-user-share.enable = mkDefault true;
services.gnome.rygel.enable = mkDefault true;
# Other default services.
services.gnome.evolution-data-server.enable = mkDefault true;
services.gnome.glib-networking.enable = mkDefault true;
services.gnome.gnome-keyring.enable = mkDefault true;
services.gnome.gnome-settings-daemon.enable = mkDefault true;
services.gvfs.enable = mkDefault true;
# Register packages for DBus.
services.dbus.packages = with pkgs; [
budgie.budgie-control-center
];
# Shell integration for MATE Terminal.
programs.bash.vteIntegration = true;
programs.zsh.vteIntegration = true;
};
}

View file

@ -21,7 +21,7 @@ in
./none.nix ./xterm.nix ./phosh.nix ./xfce.nix ./plasma5.nix ./lumina.nix
./lxqt.nix ./enlightenment.nix ./gnome.nix ./retroarch.nix ./kodi.nix
./mate.nix ./pantheon.nix ./surf-display.nix ./cde.nix
./cinnamon.nix
./cinnamon.nix ./budgie.nix
];
options = {

View file

@ -15,10 +15,10 @@ in
services.xserver.windowManager.session = singleton {
name = "stumpwm";
start = ''
${pkgs.lispPackages.stumpwm}/bin/stumpwm &
${pkgs.sbclPackages.stumpwm}/bin/stumpwm &
waitPID=$!
'';
};
environment.systemPackages = [ pkgs.lispPackages.stumpwm ];
environment.systemPackages = [ pkgs.sbclPackages.stumpwm ];
};
}

View file

@ -112,6 +112,7 @@ in {
btrbk-doas = handleTest ./btrbk-doas.nix {};
btrbk-no-timer = handleTest ./btrbk-no-timer.nix {};
btrbk-section-order = handleTest ./btrbk-section-order.nix {};
budgie = handleTest ./budgie.nix {};
buildbot = handleTest ./buildbot.nix {};
buildkite-agents = handleTest ./buildkite-agents.nix {};
caddy = handleTest ./caddy.nix {};

51
nixos/tests/budgie.nix Normal file
View file

@ -0,0 +1,51 @@
import ./make-test-python.nix ({ pkgs, lib, ... }: {
name = "budgie";
meta = with lib; {
maintainers = [ maintainers.federicoschonborn ];
};
nodes.machine = { ... }: {
imports = [
./common/user-account.nix
];
services.xserver.enable = true;
services.xserver.displayManager = {
lightdm.enable = true;
autoLogin = {
enable = true;
user = "alice";
};
};
services.xserver.desktopManager.budgie.enable = true;
};
testScript = { nodes, ... }:
let
user = nodes.machine.users.users.alice;
in
''
with subtest("Wait for login"):
machine.wait_for_x()
machine.wait_for_file("${user.home}/.Xauthority")
machine.succeed("xauth merge ${user.home}/.Xauthority")
with subtest("Check that logging in has given the user ownership of devices"):
machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}")
with subtest("Check if Budgie session components actually start"):
machine.wait_until_succeeds("pgrep budgie-daemon")
machine.wait_for_window("budgie-daemon")
machine.wait_until_succeeds("pgrep budgie-panel")
machine.wait_for_window("budgie-panel")
with subtest("Open MATE terminal"):
machine.succeed("su - ${user.name} -c 'DISPLAY=:0 mate-terminal >&2 &'")
machine.wait_for_window("Terminal")
machine.sleep(20)
machine.screenshot("screen")
'';
})

View file

@ -1,4 +1,4 @@
{ stdenv, lib, lispPackages
{ stdenv, lib, sbclPackages
, makeWrapper, wrapGAppsHook, gst_all_1
, glib, gdk-pixbuf, cairo
, mailcap, pango, gtk3
@ -8,9 +8,9 @@
stdenv.mkDerivation rec {
pname = "nyxt";
inherit (lispPackages.nyxt.meta) version;
inherit (sbclPackages.nyxt) version;
src = lispPackages.nyxt;
src = sbclPackages.nyxt;
nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
gstBuildInputs = with gst_all_1; [
@ -32,10 +32,10 @@ stdenv.mkDerivation rec {
dontWrapGApps = true;
installPhase = ''
mkdir -p $out/share/applications/
sed "s/VERSION/$version/" $src/lib/common-lisp/nyxt/assets/nyxt.desktop > $out/share/applications/nyxt.desktop
sed "s/VERSION/$version/" $src/assets/nyxt.desktop > $out/share/applications/nyxt.desktop
for i in 16 32 128 256 512; do
mkdir -p "$out/share/icons/hicolor/''${i}x''${i}/apps/"
cp -f $src/lib/common-lisp/nyxt/assets/nyxt_''${i}x''${i}.png "$out/share/icons/hicolor/''${i}x''${i}/apps/nyxt.png"
cp -f $src/assets/nyxt_''${i}x''${i}.png "$out/share/icons/hicolor/''${i}x''${i}/apps/nyxt.png"
done
mkdir -p $out/bin && makeWrapper $src/bin/nyxt $out/bin/nyxt \

View file

@ -9,13 +9,13 @@
stdenv.mkDerivation rec {
pname = "last";
version = "1447";
version = "1453";
src = fetchFromGitLab {
owner = "mcfrith";
repo = "last";
rev = "refs/tags/${version}";
hash = "sha256-zts1F2tFeBP7CQifpc2M4i6duK8FA7hQXTOizv8/kWM=";
hash = "sha256-r8bWk1+weSyQ5QPGKKwdAzMkzh3DgzTUr5YCMUq5UUM=";
};
nativeBuildInputs = [

View file

@ -6,13 +6,13 @@
stdenv.mkDerivation rec {
pname = "ddccontrol-db";
version = "20230223";
version = "20230328";
src = fetchFromGitHub {
owner = "ddccontrol";
repo = pname;
rev = version;
sha256 = "sha256-ehmMSriBYVOeKbXDybpnbYwBEQJcN0NQJ3zaneMxFmQ=";
sha256 = "sha256-74HZqgIEDCKeByPFsuUy3A9zutc5ALNxCrRipi7nbI4=";
};
nativeBuildInputs = [ autoreconfHook intltool ];

View file

@ -0,0 +1,40 @@
{ lib
, stdenv
, fetchFromGitHub
, imagemagick
, jhead
, meson
, ninja
}:
stdenv.mkDerivation rec {
pname = "budgie-backgrounds";
version = "0.1";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "budgie-backgrounds";
rev = "v${version}";
hash = "sha256-pDFd+WvWOPgDoSffmX9mzjDQbhePsJV1wGqmPDcnOlw=";
};
nativeBuildInputs = [
imagemagick
jhead
meson
ninja
];
preConfigure = ''
chmod +x ./scripts/optimizeImage.sh
patchShebangs ./scripts/optimizeImage.sh
'';
meta = with lib; {
description = "The default background set for the Budgie Desktop";
homepage = "https://github.com/BuddiesOfBudgie/budgie-backgrounds";
platforms = platforms.linux;
maintainers = [ maintainers.federicoschonborn ];
license = licenses.cc0;
};
}

View file

@ -0,0 +1,175 @@
{ lib
, stdenv
, fetchFromGitHub
, substituteAll
, accountsservice
, budgie-desktop
, clutter
, clutter-gtk
, colord
, colord-gtk
, cups
, docbook-xsl-nons
, fontconfig
, gcr
, gdk-pixbuf
, gettext
, glib
, glib-networking
, glibc
, gnome
, gnome-desktop
, gnome-online-accounts
, gsettings-desktop-schemas
, gsound
, gtk3
, ibus
, libcanberra-gtk3
, libepoxy
, libgnomekbd
, libgtop
, libgudev
, libhandy
, libkrb5
, libnma
, libpulseaudio
, libpwquality
, librsvg
, libsecret
, libwacom
, libxml2
, libxslt
, meson
, modemmanager
, networkmanager
, networkmanagerapplet
, ninja
, pkg-config
, polkit
, samba
, shadow
, shared-mime-info
, tzdata
, udisks2
, upower
, webp-pixbuf-loader
, wrapGAppsHook
}:
stdenv.mkDerivation rec {
pname = "budgie-control-center";
version = "1.2.0";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = pname;
rev = "v${version}";
fetchSubmodules = true;
sha256 = "sha256-z9apestNLEUKzrCMNo0BNAWeyE6FsUCAzcHIom8LcUs=";
};
patches = [
(substituteAll {
src = ./paths.patch;
budgie_desktop = budgie-desktop;
gcm = gnome.gnome-color-manager;
inherit cups glibc libgnomekbd shadow;
inherit networkmanagerapplet tzdata;
})
];
nativeBuildInputs = [
docbook-xsl-nons
gettext
libxslt
meson
ninja
pkg-config
shared-mime-info
wrapGAppsHook
];
buildInputs = [
accountsservice
clutter
clutter-gtk
colord
colord-gtk
fontconfig
gcr
gdk-pixbuf
glib
glib-networking
gnome-desktop
gnome-online-accounts
gnome.adwaita-icon-theme
gnome.cheese
gnome.gnome-bluetooth_1_0
gnome.gnome-remote-desktop
gnome.gnome-settings-daemon
gnome.gnome-user-share
gnome.mutter
gsettings-desktop-schemas
gsound
gtk3
ibus
libcanberra-gtk3
libepoxy
libgtop
libgudev
libhandy
libkrb5
libnma
libpulseaudio
libpwquality
librsvg
libsecret
libwacom
libxml2
modemmanager
networkmanager
polkit
samba
udisks2
upower
];
preConfigure = ''
# For ITS rules
addToSearchPath "XDG_DATA_DIRS" "${polkit.out}/share"
'';
postInstall = ''
# Pull in WebP support for gnome-backgrounds.
# In postInstall to run before gappsWrapperArgsHook.
export GDK_PIXBUF_MODULE_FILE="${gnome._gdkPixbufCacheBuilder_DO_NOT_USE {
extraLoaders = [
librsvg
webp-pixbuf-loader
];
}}"
'';
preFixup = ''
gappsWrapperArgs+=(
# Sound theme
--prefix XDG_DATA_DIRS : "${budgie-desktop}/share"
# Thumbnailers (for setting user profile pictures)
--prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
--prefix XDG_DATA_DIRS : "${librsvg}/share"
# WM keyboard shortcuts
--prefix XDG_DATA_DIRS : "${gnome.mutter}/share"
)
'';
separateDebugInfo = true;
meta = with lib; {
description = "A fork of GNOME Control Center for the Budgie 10 Series";
homepage = "https://github.com/BuddiesOfBudgie/budgie-control-center";
mainProgram = "budgie-control-center";
platforms = platforms.linux;
maintainers = [ maintainers.federicoschonborn ];
license = licenses.gpl2Plus;
};
}

View file

@ -0,0 +1,185 @@
diff --git a/panels/color/cc-color-panel.c b/panels/color/cc-color-panel.c
index a2f90b093..7801b4a5e 100644
--- a/panels/color/cc-color-panel.c
+++ b/panels/color/cc-color-panel.c
@@ -587,7 +587,7 @@ gcm_prefs_calibrate_cb (CcColorPanel *prefs)
/* run with modal set */
argv = g_ptr_array_new_with_free_func (g_free);
- g_ptr_array_add (argv, g_strdup ("gcm-calibrate"));
+ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-calibrate", NULL));
g_ptr_array_add (argv, g_strdup ("--device"));
g_ptr_array_add (argv, g_strdup (cd_device_get_id (prefs->current_device)));
g_ptr_array_add (argv, g_strdup ("--parent-window"));
@@ -940,7 +940,7 @@ gcm_prefs_profile_view (CcColorPanel *prefs, CdProfile *profile)
/* open up gcm-viewer as a info pane */
argv = g_ptr_array_new_with_free_func (g_free);
- g_ptr_array_add (argv, g_strdup ("gcm-viewer"));
+ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-viewer", NULL));
g_ptr_array_add (argv, g_strdup ("--profile"));
g_ptr_array_add (argv, g_strdup (cd_profile_get_id (profile)));
g_ptr_array_add (argv, g_strdup ("--parent-window"));
@@ -1186,15 +1186,12 @@ gcm_prefs_device_clicked (CcColorPanel *prefs, CdDevice *device)
static void
gcm_prefs_profile_clicked (CcColorPanel *prefs, CdProfile *profile, CdDevice *device)
{
- g_autofree gchar *s = NULL;
-
/* get profile */
g_debug ("selected profile = %s",
cd_profile_get_filename (profile));
/* allow getting profile info */
- if (cd_profile_get_filename (profile) != NULL &&
- (s = g_find_program_in_path ("gcm-viewer")) != NULL)
+ if (cd_profile_get_filename (profile) != NULL)
gtk_widget_set_sensitive (prefs->toolbutton_profile_view, TRUE);
else
gtk_widget_set_sensitive (prefs->toolbutton_profile_view, FALSE);
diff --git a/panels/datetime/tz.h b/panels/datetime/tz.h
index b6b7ab9d0..31f268e91 100644
--- a/panels/datetime/tz.h
+++ b/panels/datetime/tz.h
@@ -4,7 +4,7 @@
* Copyright (C) 2000-2001 Ximian, Inc.
*
* Authors: Hans Petter Jansson <hpj@ximian.com>
- *
+ *
* Largely based on Michael Fulbright's work on Anaconda.
*
* This program is free software; you can redistribute it and/or modify
@@ -27,11 +27,7 @@
G_BEGIN_DECLS
-#ifndef __sun
-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
-#else
-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
-#endif
+#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
typedef struct _TzDB TzDB;
typedef struct _TzLocation TzLocation;
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index 25cda02d3..db664bc56 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -156,7 +156,7 @@ load_budgie_version (char **version)
gsize length;
g_autoptr(VersionData) data = NULL;
- if (!g_file_get_contents (DATADIR "/budgie/budgie-version.xml",
+ if (!g_file_get_contents ("@budgie_desktop@/share/budgie/budgie-version.xml",
&contents,
&length,
&error))
diff --git a/panels/keyboard/cc-input-list-box.c b/panels/keyboard/cc-input-list-box.c
index 191207490..37e0fddc2 100644
--- a/panels/keyboard/cc-input-list-box.c
+++ b/panels/keyboard/cc-input-list-box.c
@@ -62,7 +62,7 @@ struct _CcInputListBox {
};
G_DEFINE_TYPE (CcInputListBox, cc_input_list_box, GTK_TYPE_LIST_BOX)
-
+
typedef struct
{
CcInputListBox *panel;
@@ -223,10 +223,10 @@ row_layout_cb (CcInputListBox *self,
layout_variant = cc_input_source_get_layout_variant (source);
if (layout_variant && layout_variant[0])
- commandline = g_strdup_printf ("gkbd-keyboard-display -l \"%s\t%s\"",
+ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l \"%s\t%s\"",
layout, layout_variant);
else
- commandline = g_strdup_printf ("gkbd-keyboard-display -l %s",
+ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l %s",
layout);
g_spawn_command_line_async (commandline, NULL);
diff --git a/panels/network/connection-editor/net-connection-editor.c b/panels/network/connection-editor/net-connection-editor.c
index 505b8ee25..62e94009f 100644
--- a/panels/network/connection-editor/net-connection-editor.c
+++ b/panels/network/connection-editor/net-connection-editor.c
@@ -267,9 +267,9 @@ net_connection_editor_do_fallback (NetConnectionEditor *self, const gchar *type)
g_autoptr(GError) error = NULL;
if (self->is_new_connection) {
- cmdline = g_strdup_printf ("nm-connection-editor --type='%s' --create", type);
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --type='%s' --create", type);
} else {
- cmdline = g_strdup_printf ("nm-connection-editor --edit='%s'",
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit='%s'",
nm_connection_get_uuid (self->connection));
}
diff --git a/panels/network/net-device-bluetooth.c b/panels/network/net-device-bluetooth.c
index 372c0c4f8..464f4b6a0 100644
--- a/panels/network/net-device-bluetooth.c
+++ b/panels/network/net-device-bluetooth.c
@@ -141,7 +141,7 @@ options_button_clicked_cb (NetDeviceBluetooth *self)
connection = net_device_get_find_connection (self->client, self->device);
uuid = nm_connection_get_uuid (connection);
- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid);
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid);
g_debug ("Launching '%s'\n", cmdline);
if (!g_spawn_command_line_async (cmdline, &error))
g_warning ("Failed to launch nm-connection-editor: %s", error->message);
diff --git a/panels/network/net-device-mobile.c b/panels/network/net-device-mobile.c
index f50fd5d07..c6f6f776e 100644
--- a/panels/network/net-device-mobile.c
+++ b/panels/network/net-device-mobile.c
@@ -522,7 +522,7 @@ options_button_clicked_cb (NetDeviceMobile *self)
connection = net_device_get_find_connection (self->client, self->device);
uuid = nm_connection_get_uuid (connection);
- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid);
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid);
g_debug ("Launching '%s'\n", cmdline);
if (!g_spawn_command_line_async (cmdline, &error))
g_warning ("Failed to launch nm-connection-editor: %s", error->message);
diff --git a/panels/printers/pp-host.c b/panels/printers/pp-host.c
index a31a606e3..ed5133d29 100644
--- a/panels/printers/pp-host.c
+++ b/panels/printers/pp-host.c
@@ -256,7 +256,7 @@ _pp_host_get_snmp_devices_thread (GTask *task,
devices = g_ptr_array_new_with_free_func (g_object_unref);
argv = g_new0 (gchar *, 3);
- argv[0] = g_strdup ("/usr/lib/cups/backend/snmp");
+ argv[0] = g_strdup ("@cups@/lib/cups/backend/snmp");
argv[1] = g_strdup (priv->hostname);
/* Use SNMP to get printer's informations */
diff --git a/panels/user-accounts/run-passwd.c b/panels/user-accounts/run-passwd.c
index 86f53d4fc..0b052856f 100644
--- a/panels/user-accounts/run-passwd.c
+++ b/panels/user-accounts/run-passwd.c
@@ -150,7 +150,7 @@ spawn_passwd (PasswdHandler *passwd_handler, GError **error)
gchar **envp;
gint my_stdin, my_stdout, my_stderr;
- argv[0] = "/usr/bin/passwd"; /* Is it safe to rely on a hard-coded path? */
+ argv[0] = "/run/wrappers/bin/passwd"; /* Is it safe to rely on a hard-coded path? */
argv[1] = NULL;
envp = g_get_environ ();
diff --git a/panels/user-accounts/user-utils.c b/panels/user-accounts/user-utils.c
index 0de83479e..628e35247 100644
--- a/panels/user-accounts/user-utils.c
+++ b/panels/user-accounts/user-utils.c
@@ -497,7 +497,7 @@ is_valid_username_async (const gchar *username,
* future, so it would be nice to have some official way for this
* instead of relying on the current "--login" implementation.
*/
- argv[0] = "/usr/sbin/usermod";
+ argv[0] = "@shadow@/bin/usermod";
argv[1] = "--login";
argv[2] = data->username;
argv[3] = "--";

View file

@ -0,0 +1,53 @@
{ lib
, stdenv
, fetchFromGitHub
, desktop-file-utils
, glib
, gtk3
, intltool
, meson
, ninja
, pkg-config
, vala
, wrapGAppsHook
}:
stdenv.mkDerivation rec {
pname = "budgie-desktop-view";
version = "1.2.1";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = pname;
rev = "v${version}";
sha256 = "sha256-USsySJuDov2oe9UXyzACBAyYIRLKSXOMXdia8Ix/8TE=";
};
nativeBuildInputs = [
desktop-file-utils
intltool
meson
ninja
pkg-config
vala
wrapGAppsHook
];
buildInputs = [
glib
gtk3
];
preInstall = ''
substituteInPlace ../scripts/mesonPostInstall.sh --replace "update-desktop-database -q" "update-desktop-database $out/share/applications"
'';
meta = with lib; {
description = "The official Budgie desktop icons application/implementation";
homepage = "https://github.com/BuddiesOfBudgie/budgie-desktop-view";
mainProgram = "org.buddiesofbudgie.budgie-desktop-view";
platforms = platforms.linux;
maintainers = [ maintainers.federicoschonborn ];
license = licenses.asl20;
};
}

View file

@ -0,0 +1,101 @@
{ lib
, stdenv
, fetchFromGitHub
, accountsservice
, alsa-lib
, budgie-screensaver
, docbook-xsl-nons
, glib
, gnome
, gnome-desktop
, gnome-menus
, graphene
, gst_all_1
, gtk-doc
, gtk3
, ibus
, intltool
, libcanberra-gtk3
, libgee
, libGL
, libnotify
, libpeas
, libpulseaudio
, libuuid
, libwnck
, mesa
, meson
, ninja
, pkg-config
, polkit
, sassc
, upower
, vala
, wrapGAppsHook
}:
stdenv.mkDerivation rec {
pname = "budgie-desktop";
version = "10.7.1";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = pname;
rev = "v${version}";
fetchSubmodules = true;
sha256 = "sha256-ww65J9plixbxFza6xCfaz1WYtT9giKkLVH1XYxH41+0=";
};
nativeBuildInputs = [
docbook-xsl-nons
gtk-doc
intltool
meson
ninja
pkg-config
vala
wrapGAppsHook
];
buildInputs = [
accountsservice
alsa-lib
budgie-screensaver
glib
gnome-desktop
gnome-menus
gnome.gnome-bluetooth_1_0
gnome.gnome-settings-daemon
gnome.mutter
graphene
gtk3
ibus
libcanberra-gtk3
libgee
libGL
libnotify
libpeas
libpulseaudio
libuuid
libwnck
mesa
polkit
sassc
upower
] ++ (with gst_all_1; [
gstreamer
gst-plugins-base
]);
passthru.providedSessions = [
"budgie-desktop"
];
meta = with lib; {
description = "A feature-rich, modern desktop designed to keep out the way of the user";
homepage = "https://github.com/BuddiesOfBudgie/budgie-desktop";
platforms = platforms.linux;
maintainers = [ maintainers.federicoschonborn ];
license = with licenses; [ gpl2Plus lgpl21Plus cc-by-sa-30];
};
}

View file

@ -0,0 +1,78 @@
{ lib
, runCommand
, budgie-desktop
, budgie-desktop-view
, glib
, gnome
, gsettings-desktop-schemas
, mate
, nixos-artwork
, nixos-background-light ? nixos-artwork.wallpapers.nineish
, nixos-background-dark ? nixos-artwork.wallpapers.nineish-dark-gray
, extraGSettingsOverrides ? ""
, extraGSettingsOverridePackages ? []
}:
let
inherit (lib) concatMapStringsSep;
gsettingsOverrides = ''
[org.gnome.desktop.background:Budgie]
picture-uri="file://${nixos-background-light.gnomeFilePath}"
picture-uri-dark="file://${nixos-background-dark.gnomeFilePath}"
[org.gnome.desktop.screensaver:Budgie]
picture-uri="file://${nixos-background-dark.gnomeFilePath}"
[org.gnome.desktop.interface:Budgie]
gtk-theme="Qogir"
icon-theme="Qogir"
cursor-theme="Qogir"
font-name="Noto Sans 10"
document-font-name="Noto Sans 10"
monospace-font-name="Hack 10"
enable-hot-corners=true
[org.gnome.desktop.wm.preferences:Budgie]
titlebar-font="Noto Sans Bold 10"
[org.gnome.mutter:Budgie]
workspaces-only-on-primary=true
[com.solus-project.budgie-panel:Budgie]
dark-theme=false
builtin-theme=false
[com.solus-project.icon-tasklist:Budgie]
pinned-launchers=["nemo.desktop", "vlc.desktop", "mate-terminal.desktop"]
[org.buddiesofbudgie.budgie-desktop-view:Budgie]
show=true
click-policy="double"
terminal="${mate.mate-terminal}/bin/mate-terminal"
${extraGSettingsOverrides}
'';
gsettingsOverridePackages = [
budgie-desktop
budgie-desktop-view
gsettings-desktop-schemas
gnome.mutter
] ++ extraGSettingsOverridePackages;
in
runCommand "budgie-gsettings-overrides" { preferLocalBuild = true; } ''
data_dir="$out/share/gsettings-schemas/nixos-gsettings-overrides"
schema_dir="$data_dir/glib-2.0/schemas"
mkdir -p "$schema_dir"
${concatMapStringsSep "\n" (pkg: "cp -rf \"${glib.getSchemaPath pkg}\"/*.xml \"${glib.getSchemaPath pkg}\"/*.gschema.override \"$schema_dir\"") gsettingsOverridePackages}
chmod -R a+w "$data_dir"
cat - > "$schema_dir/zz-nixos-defaults.gschema.override" <<- EOF
${gsettingsOverrides}
EOF
${glib.dev}/bin/glib-compile-schemas --strict "$schema_dir"
''

View file

@ -1,5 +1,10 @@
{ lib, pkgs }:
lib.makeScope pkgs.newScope (self: with self; {
budgie-backgrounds = callPackage ./budgie-backgrounds { };
budgie-control-center = callPackage ./budgie-control-center { };
budgie-desktop = callPackage ./budgie-desktop { };
budgie-desktop-view = callPackage ./budgie-desktop-view { };
budgie-gsettings-overrides = callPackage ./budgie-gsettings-overrides { };
budgie-screensaver = callPackage ./budgie-screensaver { };
})

View file

@ -25,6 +25,7 @@
, libepoxy
, bash
, gnome-session-ctl
, gnomeShellSupport ? true
}:
stdenv.mkDerivation rec {
@ -113,7 +114,7 @@ stdenv.mkDerivation rec {
wrapProgram "$out/libexec/gnome-session-binary" \
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
--suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \
--suffix XDG_DATA_DIRS : "${gnome.gnome-shell}/share"\
${lib.optionalString gnomeShellSupport "--suffix XDG_DATA_DIRS : \"${gnome.gnome-shell}/share\""} \
--suffix XDG_CONFIG_DIRS : "${gnome.gnome-settings-daemon}/etc/xdg"
'';

View file

@ -0,0 +1,60 @@
diff --git a/repos.sexp b/repos.sexp
index 2b2459655..ad346d8e5 100644
--- a/repos.sexp
+++ b/repos.sexp
@@ -7,15 +7,15 @@
((:name :ansi-test
:repository "https://gitlab.common-lisp.net/yitzchak/ansi-test"
:directory "dependencies/ansi-test/"
- :branch "add-expected-failures")
+ :commit "346cf2eb1133942054df8ce2125ed7e999b6d82b")
(:name :cl-bench
:repository "https://gitlab.common-lisp.net/ansi-test/cl-bench.git"
:directory "dependencies/cl-bench/"
- :branch "master")
+ :commit "7d184b4ef2a6272f0e3de88f6c243edb20f7071a")
(:name :cl-who
:repository "https://github.com/edicl/cl-who.git"
:directory "dependencies/cl-who/"
- :branch "master")
+ :commit "07dafe9b351c32326ce20b5804e798f10d4f273d")
(:name :quicklisp-client
:repository "https://github.com/quicklisp/quicklisp-client.git"
:directory "dependencies/quicklisp-client/"
@@ -23,15 +23,15 @@
(:name :shasht
:repository "https://github.com/yitzchak/shasht.git"
:directory "dependencies/shasht/"
- :branch "master")
+ :commit "f38e866990c6b5381a854d63f7ea0227c87c2f6d")
(:name :trivial-do
:repository "https://github.com/yitzchak/trivial-do.git"
:directory "dependencies/trivial-do/"
- :branch "master")
+ :commit "a19f93227cb80a6bec8846655ebcc7998020bd7e")
(:name :trivial-gray-streams
:repository "https://github.com/trivial-gray-streams/trivial-gray-streams.git"
:directory "dependencies/trivial-gray-streams/"
- :branch "master")
+ :commit "2b3823edbc78a450db4891fd2b566ca0316a7876")
(:name :acclimation
:repository "https://github.com/robert-strandh/Acclimation.git"
:directory "src/lisp/kernel/contrib/Acclimation/"
@@ -128,7 +128,7 @@
(:name :lparallel
:repository "https://github.com/yitzchak/lparallel.git"
:directory "src/lisp/kernel/contrib/lparallel/"
- :branch "fix-asdf-feature"
+ :commit "9c98bf629328b27a5a3fbb7a637afd1db439c00f"
:extension :cando)
(:name :parser.common-rules
:repository "https://github.com/scymtym/parser.common-rules.git"
@@ -152,7 +152,7 @@
(:name :trivial-features ; Needed both by the host and eclasp
:repository "https://github.com/yitzchak/trivial-features.git"
:directory "src/lisp/kernel/contrib/trivial-features/"
- :branch "asdf-feature")
+ :commit "0008ef4f3376fb76f63c35ecee6573d0d0f98d57")
(:name :trivial-garbage
:repository "https://github.com/trivial-garbage/trivial-garbage.git"
:directory "src/lisp/kernel/contrib/trivial-garbage/"

View file

@ -1,129 +1,98 @@
{ lib, stdenv, fetchFromGitHub, fetchFromGitLab
, llvmPackages
, cmake, boehmgc, gmp, zlib, ncurses, boost, libelf
, python3, git, sbcl
, wafHook
}:
{ pkgs, lib, fetchFromGitHub, llvmPackages_15 }:
let
sicl = fetchFromGitHub {
owner = "Bike";
repo = "SICL";
rev = "78052fb5f02a3814eb7295f3dcac09f21f98702b";
sha256 = "0wnmp40310ls6q9gkr5ysfkj2qirq26ljjicnkqifc53mm0ghz4i";
};
cst = fetchFromGitHub {
owner = "robert-strandh";
repo = "Concrete-Syntax-Tree";
rev = "8d8c5abf8f1690cb2b765241d81c2eb86d60d77e";
sha256 = "1rs8a5nbfffdyli126sccd0z1a8h5axp222b4pgwvgfxsb9w7g3s";
};
c2mop = fetchFromGitHub {
owner = "pcostanza";
repo = "closer-mop";
rev = "d4d1c7aa6aba9b4ac8b7bb78ff4902a52126633f";
sha256 = "1amcv0f3vbsq0aqhai7ki5bi367giway1pbfxyc47r7q3hq5hw3c";
};
acclimation = fetchFromGitHub {
owner = "robert-strandh";
repo = "Acclimation";
rev = "dd15c86b0866fc5d8b474be0da15c58a3c04c45c";
sha256 = "0ql224qs3zgflvdhfbca621v3byhhqfb71kzy70bslyczxv1bsh2";
};
eclector = fetchFromGitHub {
owner = "robert-strandh";
repo = "Eclector";
rev = "287ce817c0478668bd389051d2cc6b26ddc62ec9";
sha256 = "0v7mgkq49ddyx5vvsradcp772y5l7cv9xrll3280hyginpm8w6q3";
};
alexandria = fetchFromGitHub {
owner = "clasp-developers";
repo = "alexandria";
rev = "e5c54bc30b0887c237bde2827036d17315f88737";
sha256 = "14h7a9fwimiw9gqxjm2h47d95bfhrm7b81f6si7x8vy18d78fn4g";
};
mps = fetchFromGitHub {
owner = "Ravenbrook";
repo = "mps";
rev = "b8a05a3846430bc36c8200f24d248c8293801503";
sha256 = "1q2xqdw832jrp0w9yhgr8xihria01j4z132ac16lr9ssqznkprv6";
};
asdf = fetchFromGitLab {
domain = "gitlab.common-lisp.net";
owner = "asdf";
repo = "asdf";
rev = "3.3.1.2";
sha256 = "0ljr2vc0cb2wrijcyjmp9hcaj2bdhh05ci3zf4f43hdq6i2fgg6g";
};
in
stdenv.mkDerivation rec {
pname = "clasp";
version = "0.8.99.20181128";
src = fetchFromGitHub {
owner = "drmeister";
owner = "clasp-developers";
repo = "clasp";
rev = "2f2b52ccb750048460562b5987a7eaf7a1aa4445";
sha256 = "0ra55vdnk59lygwzlxr5cg16vb9c45fmg59wahaxclwm461w7fwz";
fetchSubmodules = true;
rev = "2.2.0";
hash = "sha256-gvUqUb0dftW1miiBcAPJur0wOunox4y2SUYeeJpR9R4=";
};
nativeBuildInputs = [ cmake python3 git sbcl wafHook ] ++
(with llvmPackages; [ llvm clang ]);
buildInputs = with llvmPackages;
(
builtins.map (x: lib.overrideDerivation x
(x: {NIX_CFLAGS_COMPILE= (x.NIX_CFLAGS_COMPILE or "") + " -frtti"; }))
[ llvm clang clang-unwrapped clang ]) ++
[
gmp zlib ncurses
boost boehmgc libelf
(boost.override {enableStatic = true; enableShared = false;})
(lib.overrideDerivation boehmgc
(x: {configureFlags = (x.configureFlags or []) ++ ["--enable-static"];}))
reposDirs = [
"dependencies"
"src/lisp/kernel/contrib"
"src/lisp/modules/asdf"
"src/mps"
"src/bdwgc"
"src/libatomic_ops"
];
NIX_CXXSTDLIB_COMPILE = " -frtti ";
reposTarball = llvmPackages_15.stdenv.mkDerivation {
pname = "clasp-repos";
version = "tarball";
inherit src;
patches = [ ./clasp-pin-repos-commits.patch ];
nativeBuildInputs = with pkgs; [
sbcl
git
cacert
];
buildPhase = ''
export SOURCE_DATE_EPOCH=1
export ASDF_OUTPUT_TRANSLATIONS=$(pwd):$(pwd)/__fasls
sbcl --script koga --help
for x in {${lib.concatStringsSep "," reposDirs}}; do
find $x -type d -name .git -exec rm -rvf {} \; || true
done
'';
installPhase = ''
tar --owner=0 --group=0 --numeric-owner --format=gnu \
--sort=name --mtime="@$SOURCE_DATE_EPOCH" \
-czf $out ${lib.concatStringsSep " " reposDirs}
'';
outputHashMode = "flat";
outputHashAlgo = "sha256";
outputHash = "sha256-vgwThjn2h3nKnShtKoHgaPdH/FDHv28fLMQvKFEwG6o=";
};
postPatch = ''
echo "
PREFIX = '$out'
" | sed -e 's/^ *//' > wscript.config
mkdir -p src/lisp/kernel/contrib/sicl
mkdir -p src/lisp/kernel/contrib/Concrete-Syntax-Tree
mkdir -p src/lisp/kernel/contrib/closer-mop
mkdir -p src/lisp/kernel/contrib/Acclimation
mkdir -p src/lisp/kernel/contrib/Eclector
mkdir -p src/lisp/kernel/contrib/alexandria
mkdir -p src/mps
mkdir -p src/lisp/modules/asdf
cp -rfT "${sicl}" src/lisp/kernel/contrib/sicl
cp -rfT "${cst}" src/lisp/kernel/contrib/Concrete-Syntax-Tree
cp -rfT "${c2mop}" src/lisp/kernel/contrib/closer-mop
cp -rfT "${acclimation}" src/lisp/kernel/contrib/Acclimation
cp -rfT "${eclector}" src/lisp/kernel/contrib/Eclector
cp -rfT "${alexandria}" src/lisp/kernel/contrib/alexandria
cp -rfT "${mps}" src/mps
cp -rfT "${asdf}" src/lisp/modules/asdf
chmod -R u+rwX src
( cd src/lisp/modules/asdf; make )
'';
buildTargets = "build_cboehm";
installTargets = "install_cboehm";
CLASP_SRC_DONTTOUCH = "true";
in llvmPackages_15.stdenv.mkDerivation {
pname = "clasp";
version = "2.2.0";
inherit src;
nativeBuildInputs = (with pkgs; [
sbcl
git
pkg-config
fmt
gmpxx
libelf
boost
libunwind
ninja
]) ++ (with llvmPackages_15; [
llvm
libclang
]);
configurePhase = ''
export SOURCE_DATE_EPOCH=1
export ASDF_OUTPUT_TRANSLATIONS=$(pwd):$(pwd)/__fasls
tar xf ${reposTarball}
sbcl --script koga \
--skip-sync \
--cc=$NIX_CC/bin/cc \
--cxx=$NIX_CC/bin/c++ \
--reproducible-build \
--package-path=/ \
--bin-path=$out/bin \
--lib-path=$out/lib \
--share-path=$out/share
'';
buildPhase = ''
ninja -C build
'';
installPhase = ''
ninja -C build install
'';
meta = {
description = "A Common Lisp implementation based on LLVM with C++ integration";
license = lib.licenses.lgpl21Plus ;
maintainers = [lib.maintainers.raskin];
maintainers = [lib.maintainers.raskin lib.maintainers.uthar];
platforms = lib.platforms.linux;
# Large, long to build, a private build of clang is needed, a prerelease.
hydraPlatforms = [];
homepage = "https://github.com/drmeister/clasp";
homepage = "https://github.com/clasp-developers/clasp";
};
}

View file

@ -6,13 +6,13 @@
stdenv.mkDerivation rec {
pname = "cyclonedds";
version = "0.10.2";
version = "0.10.3";
src = fetchFromGitHub {
owner = "eclipse-cyclonedds";
repo = "cyclonedds";
rev = version;
sha256 = "sha256-xr9H9n+gyFMgEMHn59T6ELYVZJ1m8laG0d99SE9k268=";
sha256 = "sha256-Ie2l2TwEXqhMZWL3CmQD+c8LdQlclP6egsP7jnsOAlM=";
};
patches = [

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "libamqpcpp";
version = "4.3.20";
version = "4.3.22";
src = fetchFromGitHub {
owner = "CopernicaMarketingSoftware";
repo = "AMQP-CPP";
rev = "v${version}";
sha256 = "sha256-Eby+gwcvsN5lcB+oxiqqcJiJAgTf2SQud4i1VTCXXKE=";
sha256 = "sha256-G5UgkINfkUKq0yvke0LPaogPmCMWb+jVR6+YBk0pyic=";
};
buildInputs = [ openssl ];

View file

@ -0,0 +1,23 @@
{ lib, stdenv, fetchFromGitHub, meson, ninja }:
stdenv.mkDerivation {
pname = "parson";
version = "1.5.1";
src = fetchFromGitHub {
owner = "kgabis";
repo = "parson";
rev = "3c4ee26dbb3df177a2d7b9d80e154ec435ca8c01"; # upstream doesn't use tags
sha256 = "sha256-fz2yhxy6Q5uEPAbzMxMiaXqSYkQ9uB3A4sV2qYOekJ8=";
};
nativeBuildInputs = [ meson ninja ];
meta = with lib; {
description = "Lightweight JSON library written in C";
homepage = "https://github.com/kgabis/parson";
license = licenses.mit;
platforms = platforms.all;
maintainers = [ maintainers.marsam ];
};
}

View file

@ -3,40 +3,63 @@
, fetchFromGitHub
, fetchpatch
, cmake
, blas
}:
let
suitesparseVersion = "7.0.1";
in
stdenv.mkDerivation rec {
pname = "mongoose";
version = "2.0.4";
version = "3.0.4";
outputs = [ "bin" "out" "dev" ];
src = fetchFromGitHub {
owner = "ScottKolo";
repo = "Mongoose";
rev = "v${version}";
sha256 = "0ymwd4n8p8s0ndh1vcbmjcsm0x2cc2b7v3baww5y6as12873bcrh";
owner = "DrTimothyAldenDavis";
repo = "SuiteSparse";
rev = "v${suitesparseVersion}";
hash = "sha256-EIreweeOx44YDxlnxnJ7l31Ie1jSx6y87VAyEX+4NsQ=";
};
patches = [
# TODO: remove on next release
(fetchpatch {
name = "add-an-option-to-disable-coverage.patch";
url = "https://github.com/ScottKolo/Mongoose/commit/39f4a0059ff7bad5bffa84369f31839214ac7877.patch";
sha256 = "sha256-V8lCq22ixCCzLmKtW6bUL8cvJFZzdgYoA4BFs4xYd3c=";
})
];
nativeBuildInputs = [
cmake
];
# ld: file not found: libclang_rt.profile_osx.a
cmakeFlags = lib.optional (stdenv.isDarwin && stdenv.isAarch64) "-DENABLE_COVERAGE=OFF";
buildInputs = [
blas
];
dontUseCmakeConfigure = true;
cmakeFlags = [
"-DBLAS_LIBRARIES=${blas}"
"-DCMAKE_BUILD_WITH_INSTALL_NAME_DIR=ON"
];
buildPhase = ''
runHook preConfigure
for f in SuiteSparse_config Mongoose; do
(cd $f && cmakeConfigurePhase && make -j$NIX_BUILD_CORES)
done
runHook postConfigure
'';
installPhase = ''
runHook preInstall
for f in SuiteSparse_config Mongoose; do
(cd $f/build && make install -j$NIX_BUILD_CORES)
done
runHook postInstall
'';
meta = with lib; {
description = "Graph Coarsening and Partitioning Library";
homepage = "https://github.com/ScottKolo/Mongoose";
homepage = "https://github.com/DrTimothyAldenDavis/SuiteSparse/tree/dev/Mongoose";
license = licenses.gpl3Only;
maintainers = with maintainers; [ wegank ];
platforms = with platforms; unix;

View file

@ -85,7 +85,8 @@ let
#
# Wrapper around stdenv.mkDerivation for building ASDF systems.
#
build-asdf-system = makeOverridableLispPackage (
build-asdf-system =
(makeOverridableLispPackage (
{ pname,
version,
src ? null,
@ -256,7 +257,7 @@ let
(builtins.concatLists
(lib.catAttrs "propagatedBuildInputs"
(builtins.concatLists [[args] lispLibs nativeLibs javaLibs])));
})));
}))));
# Build the set of lisp packages using `lisp`
# These packages are defined manually for one reason or another:

View file

@ -0,0 +1,38 @@
{ lib, stdenv, fetchurl, texinfo, texLive, perl }:
stdenv.mkDerivation rec {
pname = "asdf";
version = "2.26";
src = fetchurl {
url = "http://common-lisp.net/project/asdf/archives/asdf-${version}.tar.gz";
sha256 = "sha256-tuUuIlZcS+a0izXeJl3Ckp+/PYAWkZ0+Cw7blwkh9+M=";
};
strictDeps = true;
nativeBuildInputs = [
texinfo
texLive
perl
];
buildPhase = ''
make asdf.lisp
mkdir build
ln -s ../asdf.lisp build
'';
installPhase = ''
mkdir -p "$out"/lib/common-lisp/asdf/
mkdir -p "$out"/share/doc/asdf/
cp -r ./* "$out"/lib/common-lisp/asdf/
cp -r doc/* "$out"/share/doc/asdf/
ln -s "$out"/lib/common-lisp/{asdf/uiop,uiop}
'';
meta = with lib; {
description = "Standard software-system definition library for Common Lisp";
license = licenses.mit;
maintainers = with maintainers; [ raskin ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,37 @@
{ lib, stdenv, fetchurl, texinfo, texLive, perl }:
stdenv.mkDerivation rec {
pname = "asdf";
version = "3.1.7";
src = fetchurl {
url = "http://common-lisp.net/project/asdf/archives/asdf-${version}.tar.gz";
sha256 = "sha256-+P+FLM1mr2KRdj7bfhWq4ync86bJS/uE0Jm/E/e4HL0=";
};
strictDeps = true;
nativeBuildInputs = [
texinfo
texLive
perl
];
buildPhase = ''
make build/asdf.lisp
make -C doc asdf.info asdf.html
'';
installPhase = ''
mkdir -p "$out"/lib/common-lisp/asdf/
mkdir -p "$out"/share/doc/asdf/
cp -r ./* "$out"/lib/common-lisp/asdf/
cp -r doc/* "$out"/share/doc/asdf/
ln -s "$out"/lib/common-lisp/{asdf/uiop,uiop}
'';
meta = with lib; {
description = "Standard software-system definition library for Common Lisp";
license = licenses.mit;
maintainers = with maintainers; [ raskin ];
platforms = platforms.unix;
};
}

View file

@ -0,0 +1,37 @@
{ lib, stdenv, fetchurl, texinfo, texLive, perl }:
stdenv.mkDerivation rec {
pname = "asdf";
version = "3.3.4";
src = fetchurl {
url = "http://common-lisp.net/project/asdf/archives/asdf-${version}.tar.gz";
sha256 = "sha256-/k7cmN0ymZUgpP4K+IWfhq85TkzfPjTR4QdUgV9n1x4=";
};
strictDeps = true;
nativeBuildInputs = [
texinfo
texLive
perl
];
buildPhase = ''
make build/asdf.lisp
make -C doc asdf.info asdf.html
'';
installPhase = ''
mkdir -p "$out"/lib/common-lisp/asdf/
mkdir -p "$out"/share/doc/asdf/
cp -r ./* "$out"/lib/common-lisp/asdf/
cp -r doc/* "$out"/share/doc/asdf/
ln -s "$out"/lib/common-lisp/{asdf/uiop,uiop}
'';
meta = with lib; {
description = "Standard software-system definition library for Common Lisp";
license = licenses.mit;
maintainers = with maintainers; [ raskin ];
platforms = platforms.unix;
};
}

Some files were not shown because too many files have changed in this diff Show more