Merge staging-next into staging
This commit is contained in:
commit
baa80fd5aa
524 changed files with 62997 additions and 578 deletions
|
@ -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" />
|
||||
|
|
304
doc/languages-frameworks/lisp.section.md
Normal file
304
doc/languages-frameworks/lisp.section.md
Normal 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"];
|
||||
}
|
||||
```
|
|
@ -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}
|
||||
|
|
|
@ -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}$";
|
||||
|
|
201
nixos/modules/services/x11/desktop-managers/budgie.nix
Normal file
201
nixos/modules/services/x11/desktop-managers/budgie.nix
Normal 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;
|
||||
};
|
||||
}
|
|
@ -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 = {
|
||||
|
|
|
@ -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 ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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
51
nixos/tests/budgie.nix
Normal 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")
|
||||
'';
|
||||
})
|
|
@ -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 \
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 ];
|
||||
|
|
40
pkgs/desktops/budgie/budgie-backgrounds/default.nix
Normal file
40
pkgs/desktops/budgie/budgie-backgrounds/default.nix
Normal 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;
|
||||
};
|
||||
}
|
175
pkgs/desktops/budgie/budgie-control-center/default.nix
Normal file
175
pkgs/desktops/budgie/budgie-control-center/default.nix
Normal 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;
|
||||
};
|
||||
}
|
185
pkgs/desktops/budgie/budgie-control-center/paths.patch
Normal file
185
pkgs/desktops/budgie/budgie-control-center/paths.patch
Normal 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] = "--";
|
53
pkgs/desktops/budgie/budgie-desktop-view/default.nix
Normal file
53
pkgs/desktops/budgie/budgie-desktop-view/default.nix
Normal 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;
|
||||
};
|
||||
}
|
101
pkgs/desktops/budgie/budgie-desktop/default.nix
Normal file
101
pkgs/desktops/budgie/budgie-desktop/default.nix
Normal 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];
|
||||
};
|
||||
}
|
78
pkgs/desktops/budgie/budgie-gsettings-overrides/default.nix
Normal file
78
pkgs/desktops/budgie/budgie-gsettings-overrides/default.nix
Normal 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"
|
||||
''
|
|
@ -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 { };
|
||||
})
|
||||
|
|
|
@ -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"
|
||||
'';
|
||||
|
||||
|
|
|
@ -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/"
|
|
@ -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";
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 ];
|
||||
|
|
23
pkgs/development/libraries/parson/default.nix
Normal file
23
pkgs/development/libraries/parson/default.nix
Normal 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 ];
|
||||
};
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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:
|
38
pkgs/development/lisp-modules-obsolete/asdf/2.26.nix
Normal file
38
pkgs/development/lisp-modules-obsolete/asdf/2.26.nix
Normal 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;
|
||||
};
|
||||
}
|
37
pkgs/development/lisp-modules-obsolete/asdf/3.1.nix
Normal file
37
pkgs/development/lisp-modules-obsolete/asdf/3.1.nix
Normal 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;
|
||||
};
|
||||
}
|
37
pkgs/development/lisp-modules-obsolete/asdf/default.nix
Normal file
37
pkgs/development/lisp-modules-obsolete/asdf/default.nix
Normal 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
Loading…
Reference in a new issue