Merge master into haskell-updates
This commit is contained in:
+1
-1
@@ -111,7 +111,7 @@ in pkgs.stdenv.mkDerivation {
|
||||
${lib-docs}/index.md \
|
||||
> ./functions/library.md
|
||||
substitute ./manual.md.in ./manual.md \
|
||||
--replace '@MANUAL_VERSION@' '${pkgs.lib.version}'
|
||||
--replace-fail '@MANUAL_VERSION@' '${pkgs.lib.version}'
|
||||
|
||||
mkdir -p out/media
|
||||
|
||||
|
||||
@@ -9,14 +9,14 @@ In Nixpkgs, `zig.hook` overrides the default build, check and install phases.
|
||||
```nix
|
||||
{ lib
|
||||
, stdenv
|
||||
, zig_0_11
|
||||
, zig
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
# . . .
|
||||
|
||||
nativeBuildInputs = [
|
||||
zig_0_11.hook
|
||||
zig.hook
|
||||
];
|
||||
|
||||
zigBuildFlags = [ "-Dman-pages=true" ];
|
||||
|
||||
+60
-1
@@ -53,6 +53,53 @@ rec {
|
||||
|
||||
inherit type isGVariant;
|
||||
|
||||
intConstructors = [
|
||||
{
|
||||
name = "mkInt32";
|
||||
type = type.int32;
|
||||
min = -2147483648;
|
||||
max = 2147483647;
|
||||
}
|
||||
{
|
||||
name = "mkUint32";
|
||||
type = type.uint32;
|
||||
min = 0;
|
||||
max = 4294967295;
|
||||
}
|
||||
{
|
||||
name = "mkInt64";
|
||||
type = type.int64;
|
||||
# Nix does not support such large numbers.
|
||||
min = null;
|
||||
max = null;
|
||||
}
|
||||
{
|
||||
name = "mkUint64";
|
||||
type = type.uint64;
|
||||
min = 0;
|
||||
# Nix does not support such large numbers.
|
||||
max = null;
|
||||
}
|
||||
{
|
||||
name = "mkInt16";
|
||||
type = type.int16;
|
||||
min = -32768;
|
||||
max = 32767;
|
||||
}
|
||||
{
|
||||
name = "mkUint16";
|
||||
type = type.uint16;
|
||||
min = 0;
|
||||
max = 65535;
|
||||
}
|
||||
{
|
||||
name = "mkUchar";
|
||||
type = type.uchar;
|
||||
min = 0;
|
||||
max = 255;
|
||||
}
|
||||
];
|
||||
|
||||
/* Returns the GVariant value that most closely matches the given Nix value.
|
||||
If no GVariant value can be found unambiguously then error is thrown.
|
||||
|
||||
@@ -70,8 +117,20 @@ rec {
|
||||
mkArray v
|
||||
else if isGVariant v then
|
||||
v
|
||||
else if builtins.isInt v then
|
||||
let
|
||||
validConstructors = builtins.filter ({ min, max, ... }: (min == null || min <= v) && (max == null || v <= max)) intConstructors;
|
||||
in
|
||||
throw ''
|
||||
The GVariant type for number “${builtins.toString v}” is unclear.
|
||||
Please wrap the value with one of the following, depending on the value type in GSettings schema:
|
||||
|
||||
${lib.concatMapStringsSep "\n" ({ name, type, ...}: "- `lib.gvariant.${name}` for `${type}`") validConstructors}
|
||||
''
|
||||
else if builtins.isAttrs v then
|
||||
throw "Cannot construct GVariant value from an attribute set. If you want to construct a dictionary, you will need to create an array containing items constructed with `lib.gvariant.mkDictionaryEntry`."
|
||||
else
|
||||
throw "The GVariant type of ${v} can't be inferred.";
|
||||
throw "The GVariant type of “${builtins.typeOf v}” can't be inferred.";
|
||||
|
||||
/* Returns the GVariant array from the given type of the elements and a Nix list.
|
||||
|
||||
|
||||
@@ -632,6 +632,11 @@ in mkLicense lset) ({
|
||||
url = "https://old.calculate-linux.org/packages/licenses/iASL";
|
||||
};
|
||||
|
||||
icu = {
|
||||
spdxId = "ICU";
|
||||
fullName = "ICU";
|
||||
};
|
||||
|
||||
ijg = {
|
||||
spdxId = "IJG";
|
||||
fullName = "Independent JPEG Group License";
|
||||
|
||||
@@ -429,6 +429,12 @@
|
||||
githubId = 1517066;
|
||||
name = "Aiken Cairncross";
|
||||
};
|
||||
a-camarillo = {
|
||||
name = "Anthony Camarillo";
|
||||
email = "anthony.camarillo.96@gmail.com";
|
||||
github = "a-camarillo";
|
||||
githubId = 58638902;
|
||||
};
|
||||
aciceri = {
|
||||
name = "Andrea Ciceri";
|
||||
email = "andrea.ciceri@autistici.org";
|
||||
@@ -1448,6 +1454,12 @@
|
||||
githubId = 5411704;
|
||||
name = "Manuel Sanchez Pinar";
|
||||
};
|
||||
aos = {
|
||||
email = "n@aos.sh";
|
||||
github = "aos";
|
||||
githubId = 25783780;
|
||||
name = "aos";
|
||||
};
|
||||
apeschar = {
|
||||
email = "albert@peschar.net";
|
||||
github = "apeschar";
|
||||
@@ -2937,6 +2949,12 @@
|
||||
fingerprint = "BF4FCB85C69989B4ED95BF938AE74787A4B7C07E";
|
||||
}];
|
||||
};
|
||||
b-rodrigues = {
|
||||
email = "bruno@brodrigues.co";
|
||||
github = "b-rodrigues";
|
||||
githubId = 2998834;
|
||||
name = "Bruno Rodrigues";
|
||||
};
|
||||
broke = {
|
||||
email = "broke@in-fucking.space";
|
||||
github = "broke";
|
||||
@@ -3012,6 +3030,12 @@
|
||||
githubId = 37375448;
|
||||
name = "Buildit";
|
||||
};
|
||||
buurro = {
|
||||
email = "marcoburro98@gmail.com";
|
||||
github = "buurro";
|
||||
githubId = 9320677;
|
||||
name = "Marco Burro";
|
||||
};
|
||||
bwc9876 = {
|
||||
email = "bwc9876@gmail.com";
|
||||
github = "Bwc9876";
|
||||
@@ -5792,6 +5816,15 @@
|
||||
githubId = 4576666;
|
||||
name = "Eliza Velasquez";
|
||||
};
|
||||
eljamm = {
|
||||
name = "Fedi Jamoussi";
|
||||
email = "fedi.jamoussi@protonmail.ch";
|
||||
github = "eljamm";
|
||||
githubId = 83901271;
|
||||
keys = [{
|
||||
fingerprint = "FF59 E027 4EE2 E792 512B BDC8 7630 FDF7 C8FB 1F3F";
|
||||
}];
|
||||
};
|
||||
elkowar = {
|
||||
email = "thereal.elkowar@gmail.com";
|
||||
github = "elkowar";
|
||||
@@ -7567,6 +7600,12 @@
|
||||
githubId = 76716;
|
||||
name = "Graham Christensen";
|
||||
};
|
||||
grahamnorris = {
|
||||
email = "oss@grahamjnorris.com";
|
||||
github = "grahamnorris";
|
||||
githubId = 66037909;
|
||||
name = "Graham J. Norris";
|
||||
};
|
||||
gravndal = {
|
||||
email = "gaute.ravndal+nixos@gmail.com";
|
||||
github = "gravndal";
|
||||
@@ -7791,6 +7830,12 @@
|
||||
github = "HannahMR";
|
||||
githubId = 9088467;
|
||||
};
|
||||
hannesgith = {
|
||||
email = "nix@h-h.win";
|
||||
github = "hannesgith";
|
||||
githubId = 33062605;
|
||||
name = "Hannes Hattenbach";
|
||||
};
|
||||
hansjoergschurr = {
|
||||
email = "commits@schurr.at";
|
||||
github = "hansjoergschurr";
|
||||
@@ -15846,6 +15891,13 @@
|
||||
githubId = 4056630;
|
||||
name = "Patrick Steinhardt";
|
||||
};
|
||||
pkulak = {
|
||||
name = "Phil Kulak";
|
||||
email = "phil@kulak.us";
|
||||
matrix = "@phil:kulak.us";
|
||||
github = "pkulak";
|
||||
githubId = 502905;
|
||||
};
|
||||
plabadens = {
|
||||
name = "Pierre Labadens";
|
||||
email = "labadens.pierre+nixpkgs@gmail.com";
|
||||
@@ -16512,6 +16564,11 @@
|
||||
githubId = 35229674;
|
||||
name = "Armin Rothfuss";
|
||||
};
|
||||
r3n3gad3p3arl = {
|
||||
github = "r3n3gad3p3arl";
|
||||
githubId = 20760527;
|
||||
name = "Madelyn";
|
||||
};
|
||||
raboof = {
|
||||
email = "arnout@bzzt.net";
|
||||
matrix = "@raboof:matrix.org";
|
||||
@@ -16815,6 +16872,12 @@
|
||||
githubId = 18155001;
|
||||
name = "Gabe Dunn";
|
||||
};
|
||||
redyf = {
|
||||
email = "mateusalvespereira7@gmail.com";
|
||||
github = "redyf";
|
||||
githubId = 98139059;
|
||||
name = "Mateus Alves";
|
||||
};
|
||||
reedrw = {
|
||||
email = "reedrw5601@gmail.com";
|
||||
github = "reedrw";
|
||||
|
||||
@@ -854,8 +854,10 @@ with lib.maintainers; {
|
||||
|
||||
r = {
|
||||
members = [
|
||||
b-rodrigues
|
||||
bcdarwin
|
||||
jbedo
|
||||
kupac
|
||||
];
|
||||
scope = "Maintain the R programming language and related packages.";
|
||||
shortName = "R";
|
||||
|
||||
@@ -80,17 +80,17 @@ let
|
||||
cp -r --no-preserve=all $inputs/* .
|
||||
|
||||
substituteInPlace ./manual.md \
|
||||
--replace '@NIXOS_VERSION@' "${version}"
|
||||
--replace-fail '@NIXOS_VERSION@' "${version}"
|
||||
substituteInPlace ./configuration/configuration.md \
|
||||
--replace \
|
||||
--replace-fail \
|
||||
'@MODULE_CHAPTERS@' \
|
||||
${escapeShellArg (concatMapStringsSep "\n" (p: "${p.value}") config.meta.doc)}
|
||||
substituteInPlace ./nixos-options.md \
|
||||
--replace \
|
||||
--replace-fail \
|
||||
'@NIXOS_OPTIONS_JSON@' \
|
||||
${optionsDoc.optionsJSON}/${common.outputPath}/options.json
|
||||
substituteInPlace ./development/writing-nixos-tests.section.md \
|
||||
--replace \
|
||||
--replace-fail \
|
||||
'@NIXOS_TEST_OPTIONS_JSON@' \
|
||||
${testOptionsDoc.optionsJSON}/${common.outputPath}/options.json
|
||||
sed -e '/@PYTHON_MACHINE_METHODS@/ {' -e 'r ${testDriverMachineDocstrings}/machine-methods.md' -e 'd' -e '}' \
|
||||
|
||||
@@ -92,6 +92,8 @@ Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for Pi
|
||||
|
||||
- [PhotonVision](https://photonvision.org/), a free, fast, and easy-to-use computer vision solution for the FIRST® Robotics Competition.
|
||||
|
||||
- [clatd](https://github.com/toreanderson/clatd), a a CLAT / SIIT-DC Edge Relay implementation for Linux.
|
||||
|
||||
- [pyLoad](https://pyload.net/), a FOSS download manager written in Python. Available as [services.pyload](#opt-services.pyload.enable)
|
||||
|
||||
- [maubot](https://github.com/maubot/maubot), a plugin-based Matrix bot framework. Available as [services.maubot](#opt-services.maubot.enable).
|
||||
@@ -131,6 +133,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||
|
||||
- [mautrix-meta](https://github.com/mautrix/meta), a Matrix <-> Facebook and Matrix <-> Instagram hybrid puppeting/relaybot bridge. Available as services.mautrix-meta
|
||||
|
||||
- [Jottacloud Command-line Tool](https://docs.jottacloud.com/en/articles/1436834-jottacloud-command-line-tool), a CLI for the [Jottacloud](https://jottacloud.com/) cloud storage provider. Available as [user.services.jotta-cli](#opt-user.services.jotta-cli.enable).
|
||||
|
||||
- [transfer-sh](https://github.com/dutchcoders/transfer.sh), a tool that supports easy and fast file sharing from the command-line. Available as [services.transfer-sh](#opt-services.transfer-sh.enable).
|
||||
|
||||
- [FCast Receiver](https://fcast.org), an open-source alternative to Chromecast and AirPlay. Available as [programs.fcast-receiver](#opt-programs.fcast-receiver.enable).
|
||||
@@ -398,6 +402,8 @@ The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been m
|
||||
|
||||
- `services.zope2` has been removed as `zope2` is unmaintained and was relying on Python2.
|
||||
|
||||
- `services.oauth2_proxy` was renamed to `services.oauth2-proxy`. Also the corresponding service, user and group were renamed.
|
||||
|
||||
- `services.avahi.nssmdns` got split into `services.avahi.nssmdns4` and `services.avahi.nssmdns6` which enable the mDNS NSS switch for IPv4 and IPv6 respectively.
|
||||
Since most mDNS responders only register IPv4 addresses, most users want to keep the IPv6 support disabled to avoid long timeouts.
|
||||
|
||||
|
||||
@@ -946,6 +946,7 @@
|
||||
./services/networking/charybdis.nix
|
||||
./services/networking/chisel-server.nix
|
||||
./services/networking/cjdns.nix
|
||||
./services/networking/clatd.nix
|
||||
./services/networking/cloudflare-dyndns.nix
|
||||
./services/networking/cloudflared.nix
|
||||
./services/networking/cntlm.nix
|
||||
@@ -1029,6 +1030,7 @@
|
||||
./services/networking/jigasi.nix
|
||||
./services/networking/jitsi-videobridge.nix
|
||||
./services/networking/jool.nix
|
||||
./services/networking/jotta-cli.nix
|
||||
./services/networking/kea.nix
|
||||
./services/networking/keepalived/default.nix
|
||||
./services/networking/keybase.nix
|
||||
@@ -1256,8 +1258,8 @@
|
||||
./services/security/kanidm.nix
|
||||
./services/security/munge.nix
|
||||
./services/security/nginx-sso.nix
|
||||
./services/security/oauth2_proxy.nix
|
||||
./services/security/oauth2_proxy_nginx.nix
|
||||
./services/security/oauth2-proxy.nix
|
||||
./services/security/oauth2-proxy-nginx.nix
|
||||
./services/security/opensnitch.nix
|
||||
./services/security/pass-secret-service.nix
|
||||
./services/security/physlock.nix
|
||||
|
||||
@@ -2,28 +2,19 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let cfg = config.programs.evince;
|
||||
|
||||
in {
|
||||
|
||||
# Added 2019-08-09
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "evince" "enable" ]
|
||||
[ "programs" "evince" "enable" ])
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
programs.evince = {
|
||||
|
||||
enable = mkEnableOption "Evince, the GNOME document viewer";
|
||||
enable = lib.mkEnableOption "Evince, the GNOME document viewer";
|
||||
|
||||
package = mkPackageOption pkgs "evince" { };
|
||||
package = lib.mkPackageOption pkgs "evince" { };
|
||||
|
||||
};
|
||||
|
||||
@@ -32,7 +23,7 @@ in {
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.programs.evince.enable {
|
||||
config = lib.mkIf config.programs.evince.enable {
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
|
||||
@@ -2,28 +2,19 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let cfg = config.programs.file-roller;
|
||||
|
||||
in {
|
||||
|
||||
# Added 2019-08-09
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "file-roller" "enable" ]
|
||||
[ "programs" "file-roller" "enable" ])
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
programs.file-roller = {
|
||||
|
||||
enable = mkEnableOption "File Roller, an archive manager for GNOME";
|
||||
enable = lib.mkEnableOption "File Roller, an archive manager for GNOME";
|
||||
|
||||
package = mkPackageOption pkgs [ "gnome" "file-roller" ] { };
|
||||
package = lib.mkPackageOption pkgs [ "gnome" "file-roller" ] { };
|
||||
|
||||
};
|
||||
|
||||
@@ -32,7 +23,7 @@ in {
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
|
||||
@@ -2,29 +2,20 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
# Added 2019-08-09
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "gnome-disks" "enable" ]
|
||||
[ "programs" "gnome-disks" "enable" ])
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
programs.gnome-disks = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable GNOME Disks daemon, a program designed to
|
||||
@@ -39,7 +30,7 @@ with lib;
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.programs.gnome-disks.enable {
|
||||
config = lib.mkIf config.programs.gnome-disks.enable {
|
||||
|
||||
environment.systemPackages = [ pkgs.gnome.gnome-disk-utility ];
|
||||
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.programs.gnome-terminal;
|
||||
@@ -13,21 +11,14 @@ in
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
# Added 2019-08-19
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "gnome-terminal-server" "enable" ]
|
||||
[ "programs" "gnome-terminal" "enable" ])
|
||||
];
|
||||
|
||||
options = {
|
||||
programs.gnome-terminal.enable = mkEnableOption "GNOME Terminal";
|
||||
programs.gnome-terminal.enable = lib.mkEnableOption "GNOME Terminal";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [ pkgs.gnome.gnome-terminal ];
|
||||
services.dbus.packages = [ pkgs.gnome.gnome-terminal ];
|
||||
systemd.packages = [ pkgs.gnome.gnome-terminal ];
|
||||
|
||||
@@ -1,22 +1,13 @@
|
||||
# GPaste.
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
# Added 2019-08-09
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "gpaste" "enable" ]
|
||||
[ "programs" "gpaste" "enable" ])
|
||||
];
|
||||
|
||||
###### interface
|
||||
options = {
|
||||
programs.gpaste = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable GPaste, a clipboard manager.
|
||||
@@ -26,7 +17,7 @@ with lib;
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf config.programs.gpaste.enable {
|
||||
config = lib.mkIf config.programs.gpaste.enable {
|
||||
environment.systemPackages = [ pkgs.gnome.gpaste ];
|
||||
services.dbus.packages = [ pkgs.gnome.gpaste ];
|
||||
systemd.packages = [ pkgs.gnome.gpaste ];
|
||||
|
||||
@@ -2,25 +2,15 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
# Added 2019-08-27
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "seahorse" "enable" ]
|
||||
[ "programs" "seahorse" "enable" ])
|
||||
];
|
||||
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
programs.seahorse = {
|
||||
|
||||
enable = mkEnableOption "Seahorse, a GNOME application for managing encryption keys and passwords in the GNOME Keyring";
|
||||
enable = lib.mkEnableOption "Seahorse, a GNOME application for managing encryption keys and passwords in the GNOME Keyring";
|
||||
|
||||
};
|
||||
|
||||
@@ -29,9 +19,9 @@ with lib;
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.programs.seahorse.enable {
|
||||
config = lib.mkIf config.programs.seahorse.enable {
|
||||
|
||||
programs.ssh.askPassword = mkDefault "${pkgs.gnome.seahorse}/libexec/seahorse/ssh-askpass";
|
||||
programs.ssh.askPassword = lib.mkDefault "${pkgs.gnome.seahorse}/libexec/seahorse/ssh-askpass";
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.gnome.seahorse
|
||||
|
||||
@@ -315,6 +315,14 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
mailErrorSummaryTo = mkOption {
|
||||
type = singleLineStr;
|
||||
default = "";
|
||||
description = ''
|
||||
Email address to send a summary to if "send task(s) failed".
|
||||
'';
|
||||
};
|
||||
|
||||
noDestroy = mkOption {
|
||||
type = bool;
|
||||
default = false;
|
||||
@@ -455,6 +463,8 @@ in
|
||||
"--loglevel=${cfg.logLevel}"
|
||||
(optionalString cfg.noDestroy "--nodestroy")
|
||||
(optionalString cfg.autoCreation "--autoCreation")
|
||||
(optionalString (cfg.mailErrorSummaryTo != "")
|
||||
"--mailErrorSummaryTo=${cfg.mailErrorSummaryTo}")
|
||||
(optionalString (enabledFeatures != [])
|
||||
"--features=${concatStringsSep "," enabledFeatures}")
|
||||
]; in "${pkgs.znapzend}/bin/znapzend ${args}";
|
||||
|
||||
@@ -2,30 +2,19 @@
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
###### interface
|
||||
|
||||
# Added 2021-05-07
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "at-spi2-core" "enable" ]
|
||||
[ "services" "gnome" "at-spi2-core" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome.at-spi2-core = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable at-spi2-core, a service for the Assistive Technologies
|
||||
@@ -43,14 +32,14 @@ with lib;
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkMerge [
|
||||
(mkIf config.services.gnome.at-spi2-core.enable {
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf config.services.gnome.at-spi2-core.enable {
|
||||
environment.systemPackages = [ pkgs.at-spi2-core ];
|
||||
services.dbus.packages = [ pkgs.at-spi2-core ];
|
||||
systemd.packages = [ pkgs.at-spi2-core ];
|
||||
})
|
||||
|
||||
(mkIf (!config.services.gnome.at-spi2-core.enable) {
|
||||
(lib.mkIf (!config.services.gnome.at-spi2-core.enable) {
|
||||
environment.sessionVariables = {
|
||||
NO_AT_BRIDGE = "1";
|
||||
GTK_A11Y = "none";
|
||||
|
||||
@@ -2,44 +2,30 @@
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
# Added 2021-05-07
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "evolution-data-server" "enable" ]
|
||||
[ "services" "gnome" "evolution-data-server" "enable" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "evolution-data-server" "plugins" ]
|
||||
[ "services" "gnome" "evolution-data-server" "plugins" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome.evolution-data-server = {
|
||||
enable = mkEnableOption "Evolution Data Server, a collection of services for storing addressbooks and calendars";
|
||||
plugins = mkOption {
|
||||
type = types.listOf types.package;
|
||||
enable = lib.mkEnableOption "Evolution Data Server, a collection of services for storing addressbooks and calendars";
|
||||
plugins = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [ ];
|
||||
description = "Plugins for Evolution Data Server.";
|
||||
};
|
||||
};
|
||||
programs.evolution = {
|
||||
enable = mkEnableOption "Evolution, a Personal information management application that provides integrated mail, calendaring and address book functionality";
|
||||
plugins = mkOption {
|
||||
type = types.listOf types.package;
|
||||
enable = lib.mkEnableOption "Evolution, a Personal information management application that provides integrated mail, calendaring and address book functionality";
|
||||
plugins = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [ ];
|
||||
example = literalExpression "[ pkgs.evolution-ews ]";
|
||||
example = lib.literalExpression "[ pkgs.evolution-ews ]";
|
||||
description = "Plugins for Evolution.";
|
||||
};
|
||||
|
||||
@@ -52,15 +38,15 @@ with lib;
|
||||
let
|
||||
bundle = pkgs.evolutionWithPlugins.override { inherit (config.services.gnome.evolution-data-server) plugins; };
|
||||
in
|
||||
mkMerge [
|
||||
(mkIf config.services.gnome.evolution-data-server.enable {
|
||||
lib.mkMerge [
|
||||
(lib.mkIf config.services.gnome.evolution-data-server.enable {
|
||||
environment.systemPackages = [ bundle ];
|
||||
|
||||
services.dbus.packages = [ bundle ];
|
||||
|
||||
systemd.packages = [ bundle ];
|
||||
})
|
||||
(mkIf config.programs.evolution.enable {
|
||||
(lib.mkIf config.programs.evolution.enable {
|
||||
services.gnome.evolution-data-server = {
|
||||
enable = true;
|
||||
plugins = [ pkgs.evolution ] ++ config.programs.evolution.plugins;
|
||||
|
||||
@@ -2,29 +2,19 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
# Added 2021-05-07
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "glib-networking" "enable" ]
|
||||
[ "services" "gnome" "glib-networking" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome.glib-networking = {
|
||||
|
||||
enable = mkEnableOption "network extensions for GLib";
|
||||
enable = lib.mkEnableOption "network extensions for GLib";
|
||||
|
||||
};
|
||||
|
||||
@@ -32,7 +22,7 @@ with lib;
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.services.gnome.glib-networking.enable {
|
||||
config = lib.mkIf config.services.gnome.glib-networking.enable {
|
||||
|
||||
services.dbus.packages = [ pkgs.glib-networking ];
|
||||
|
||||
|
||||
@@ -9,19 +9,6 @@ in
|
||||
maintainers = teams.gnome.members;
|
||||
};
|
||||
|
||||
imports = [
|
||||
# Added 2021-05-07
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "chrome-gnome-shell" "enable" ]
|
||||
[ "services" "gnome" "gnome-browser-connector" "enable" ]
|
||||
)
|
||||
# Added 2022-07-25
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome" "chrome-gnome-shell" "enable" ]
|
||||
[ "services" "gnome" "gnome-browser-connector" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
options = {
|
||||
services.gnome.gnome-browser-connector.enable = mkEnableOption ''
|
||||
native host connector for the GNOME Shell browser extension, a DBus service
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
# GNOME initial setup's run is conditioned on whether
|
||||
@@ -45,24 +43,16 @@ in
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
# Added 2021-05-07
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "gnome-initial-setup" "enable" ]
|
||||
[ "services" "gnome" "gnome-initial-setup" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome.gnome-initial-setup = {
|
||||
|
||||
enable = mkEnableOption "GNOME Initial Setup, a Simple, easy, and safe way to prepare a new system";
|
||||
enable = lib.mkEnableOption "GNOME Initial Setup, a Simple, easy, and safe way to prepare a new system";
|
||||
|
||||
};
|
||||
|
||||
@@ -71,12 +61,12 @@ in
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.services.gnome.gnome-initial-setup.enable {
|
||||
config = lib.mkIf config.services.gnome.gnome-initial-setup.enable {
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.gnome.gnome-initial-setup
|
||||
]
|
||||
++ optional (versionOlder config.system.stateVersion "20.03") createGisStampFilesAutostart
|
||||
++ lib.optional (lib.versionOlder config.system.stateVersion "20.03") createGisStampFilesAutostart
|
||||
;
|
||||
|
||||
systemd.packages = [
|
||||
|
||||
@@ -2,30 +2,20 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
# Added 2021-05-07
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "gnome-keyring" "enable" ]
|
||||
[ "services" "gnome" "gnome-keyring" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome.gnome-keyring = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable GNOME Keyring daemon, a service designed to
|
||||
@@ -41,7 +31,7 @@ with lib;
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.services.gnome.gnome-keyring.enable {
|
||||
config = lib.mkIf config.services.gnome.gnome-keyring.enable {
|
||||
|
||||
environment.systemPackages = [ pkgs.gnome.gnome-keyring ];
|
||||
|
||||
|
||||
@@ -2,30 +2,20 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
# Added 2021-05-07
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "gnome-online-accounts" "enable" ]
|
||||
[ "services" "gnome" "gnome-online-accounts" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome.gnome-online-accounts = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable GNOME Online Accounts daemon, a service that provides
|
||||
@@ -40,7 +30,7 @@ with lib;
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.services.gnome.gnome-online-accounts.enable {
|
||||
config = lib.mkIf config.services.gnome.gnome-online-accounts.enable {
|
||||
|
||||
environment.systemPackages = [ pkgs.gnome-online-accounts ];
|
||||
|
||||
|
||||
@@ -2,30 +2,20 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
# Added 2021-05-07
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "gnome-online-miners" "enable" ]
|
||||
[ "services" "gnome" "gnome-online-miners" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome.gnome-online-miners = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable GNOME Online Miners, a service that
|
||||
@@ -40,7 +30,7 @@ with lib;
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.services.gnome.gnome-online-miners.enable {
|
||||
config = lib.mkIf config.services.gnome.gnome-online-miners.enable {
|
||||
|
||||
environment.systemPackages = [ pkgs.gnome.gnome-online-miners ];
|
||||
|
||||
|
||||
@@ -1,30 +1,20 @@
|
||||
# Remote desktop daemon using Pipewire.
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
# Added 2021-05-07
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "gnome-remote-desktop" "enable" ]
|
||||
[ "services" "gnome" "gnome-remote-desktop" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
options = {
|
||||
services.gnome.gnome-remote-desktop = {
|
||||
enable = mkEnableOption "Remote Desktop support using Pipewire";
|
||||
enable = lib.mkEnableOption "Remote Desktop support using Pipewire";
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf config.services.gnome.gnome-remote-desktop.enable {
|
||||
config = lib.mkIf config.services.gnome.gnome-remote-desktop.enable {
|
||||
services.pipewire.enable = true;
|
||||
|
||||
systemd.packages = [ pkgs.gnome.gnome-remote-desktop ];
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.gnome.gnome-settings-daemon;
|
||||
@@ -13,28 +11,16 @@ in
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
imports = [
|
||||
(mkRemovedOptionModule
|
||||
["services" "gnome3" "gnome-settings-daemon" "package"]
|
||||
"")
|
||||
|
||||
# Added 2021-05-07
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "gnome-settings-daemon" "enable" ]
|
||||
[ "services" "gnome" "gnome-settings-daemon" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome.gnome-settings-daemon = {
|
||||
|
||||
enable = mkEnableOption "GNOME Settings Daemon";
|
||||
enable = lib.mkEnableOption "GNOME Settings Daemon";
|
||||
|
||||
};
|
||||
|
||||
@@ -43,7 +29,7 @@ in
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.gnome.gnome-settings-daemon
|
||||
|
||||
@@ -2,29 +2,19 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
imports = [
|
||||
# Added 2021-05-07
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "gnome-user-share" "enable" ]
|
||||
[ "services" "gnome" "gnome-user-share" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome.gnome-user-share = {
|
||||
|
||||
enable = mkEnableOption "GNOME User Share, a user-level file sharing service for GNOME";
|
||||
enable = lib.mkEnableOption "GNOME User Share, a user-level file sharing service for GNOME";
|
||||
|
||||
};
|
||||
|
||||
@@ -33,7 +23,7 @@ with lib;
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.services.gnome.gnome-user-share.enable {
|
||||
config = lib.mkIf config.services.gnome.gnome-user-share.enable {
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.gnome.gnome-user-share
|
||||
|
||||
@@ -1,38 +1,28 @@
|
||||
# rygel service.
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
imports = [
|
||||
# Added 2021-05-07
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "rygel" "enable" ]
|
||||
[ "services" "gnome" "rygel" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
options = {
|
||||
services.gnome.rygel = {
|
||||
enable = mkOption {
|
||||
enable = lib.mkOption {
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable Rygel UPnP Mediaserver.
|
||||
|
||||
You will need to also allow UPnP connections in firewall, see the following [comment](https://github.com/NixOS/nixpkgs/pull/45045#issuecomment-416030795).
|
||||
'';
|
||||
type = types.bool;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf config.services.gnome.rygel.enable {
|
||||
config = lib.mkIf config.services.gnome.rygel.enable {
|
||||
environment.systemPackages = [ pkgs.gnome.rygel ];
|
||||
|
||||
services.dbus.packages = [ pkgs.gnome.rygel ];
|
||||
|
||||
@@ -2,30 +2,20 @@
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
imports = [
|
||||
# Added 2021-05-07
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "sushi" "enable" ]
|
||||
[ "services" "gnome" "sushi" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome.sushi = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable Sushi, a quick previewer for nautilus.
|
||||
@@ -39,7 +29,7 @@ with lib;
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.services.gnome.sushi.enable {
|
||||
config = lib.mkIf config.services.gnome.sushi.enable {
|
||||
|
||||
environment.systemPackages = [ pkgs.gnome.sushi ];
|
||||
|
||||
|
||||
@@ -2,30 +2,20 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
imports = [
|
||||
# Added 2021-05-07
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "tracker-miners" "enable" ]
|
||||
[ "services" "gnome" "tracker-miners" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome.tracker-miners = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable Tracker miners, indexing services for Tracker
|
||||
@@ -39,7 +29,7 @@ with lib;
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.services.gnome.tracker-miners.enable {
|
||||
config = lib.mkIf config.services.gnome.tracker-miners.enable {
|
||||
|
||||
environment.systemPackages = [ pkgs.tracker-miners ];
|
||||
|
||||
|
||||
@@ -2,33 +2,23 @@
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.gnome.tracker;
|
||||
in
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
imports = [
|
||||
# Added 2021-05-07
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "tracker" "enable" ]
|
||||
[ "services" "gnome" "tracker" "enable" ]
|
||||
)
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome.tracker = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable Tracker services, a search engine,
|
||||
@@ -36,8 +26,8 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
subcommandPackages = mkOption {
|
||||
type = types.listOf types.package;
|
||||
subcommandPackages = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.package;
|
||||
default = [ ];
|
||||
internal = true;
|
||||
description = ''
|
||||
@@ -52,7 +42,7 @@ in
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = [ pkgs.tracker ];
|
||||
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.gvfs;
|
||||
@@ -13,26 +11,19 @@ in
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
# Added 2019-08-19
|
||||
imports = [
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "gvfs" "enable" ]
|
||||
[ "services" "gvfs" "enable" ])
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.gvfs = {
|
||||
|
||||
enable = mkEnableOption "GVfs, a userspace virtual filesystem";
|
||||
enable = lib.mkEnableOption "GVfs, a userspace virtual filesystem";
|
||||
|
||||
# gvfs can be built with multiple configurations
|
||||
package = mkPackageOption pkgs [ "gnome" "gvfs" ] { };
|
||||
package = lib.mkPackageOption pkgs [ "gnome" "gvfs" ] { };
|
||||
|
||||
};
|
||||
|
||||
@@ -41,7 +32,7 @@ in
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
|
||||
@@ -29,12 +29,6 @@ let
|
||||
fi
|
||||
'') cfg.sessionPackages}
|
||||
'';
|
||||
|
||||
dmDefault = config.services.xserver.desktopManager.default;
|
||||
# fallback default for cases when only default wm is set
|
||||
dmFallbackDefault = if dmDefault != null then dmDefault else "none";
|
||||
wmDefault = config.services.xserver.windowManager.default;
|
||||
defaultSessionFromLegacyOptions = dmFallbackDefault + lib.optionalString (wmDefault != null && wmDefault != "none") "+${wmDefault}";
|
||||
in
|
||||
{
|
||||
options = {
|
||||
@@ -125,14 +119,7 @@ in
|
||||
${lib.concatStringsSep "\n " cfg.displayManager.sessionData.sessionNames}
|
||||
'';
|
||||
};
|
||||
default =
|
||||
if dmDefault != null || wmDefault != null then
|
||||
defaultSessionFromLegacyOptions
|
||||
else
|
||||
null;
|
||||
defaultText = lib.literalMD ''
|
||||
Taken from display manager settings or window manager settings, if either is set.
|
||||
'';
|
||||
default = null;
|
||||
example = "gnome";
|
||||
description = ''
|
||||
Graphical session to pre-select in the session chooser (only effective for GDM, LightDM and SDDM).
|
||||
@@ -192,20 +179,6 @@ in
|
||||
}
|
||||
];
|
||||
|
||||
warnings =
|
||||
lib.mkIf (dmDefault != null || wmDefault != null) [
|
||||
''
|
||||
The following options are deprecated:
|
||||
${lib.concatStringsSep "\n " (map ({c, t}: t) (lib.filter ({c, t}: c != null) [
|
||||
{ c = dmDefault; t = "- services.xserver.desktopManager.default"; }
|
||||
{ c = wmDefault; t = "- services.xserver.windowManager.default"; }
|
||||
]))}
|
||||
Please use
|
||||
services.displayManager.defaultSession = "${defaultSessionFromLegacyOptions}";
|
||||
instead.
|
||||
''
|
||||
];
|
||||
|
||||
# Make xsessions and wayland sessions available in XDG_DATA_DIRS
|
||||
# as some programs have behavior that depends on them being present
|
||||
environment.sessionVariables.XDG_DATA_DIRS = lib.mkIf (cfg.sessionPackages != [ ]) [
|
||||
|
||||
@@ -18,6 +18,8 @@ let
|
||||
gitalySocket = "${cfg.statePath}/tmp/sockets/gitaly.socket";
|
||||
pathUrlQuote = url: replaceStrings ["/"] ["%2F"] url;
|
||||
|
||||
gitlabVersionAtLeast = version: lib.versionAtLeast (lib.getVersion cfg.packages.gitlab) version;
|
||||
|
||||
databaseConfig = let
|
||||
val = {
|
||||
adapter = "postgresql";
|
||||
@@ -27,10 +29,16 @@ let
|
||||
encoding = "utf8";
|
||||
pool = cfg.databasePool;
|
||||
} // cfg.extraDatabaseConfig;
|
||||
in if lib.versionAtLeast (lib.getVersion cfg.packages.gitlab) "15.0" then {
|
||||
production.main = val;
|
||||
} else {
|
||||
production = val;
|
||||
in {
|
||||
production = (
|
||||
if (gitlabVersionAtLeast "15.0")
|
||||
then { main = val; }
|
||||
else val
|
||||
) // lib.optionalAttrs (gitlabVersionAtLeast "15.9") {
|
||||
ci = val // {
|
||||
database_tasks = false;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# We only want to create a database if we're actually going to connect to it.
|
||||
@@ -1168,7 +1176,7 @@ in {
|
||||
set -eu
|
||||
|
||||
PSQL() {
|
||||
psql --port=${toString pgsql.port} "$@"
|
||||
psql --port=${toString pgsql.settings.port} "$@"
|
||||
}
|
||||
|
||||
PSQL -tAc "SELECT 1 FROM pg_database WHERE datname = '${cfg.databaseName}'" | grep -q 1 || PSQL -tAc 'CREATE DATABASE "${cfg.databaseName}" OWNER "${cfg.databaseUsername}"'
|
||||
@@ -1348,7 +1356,7 @@ in {
|
||||
|
||||
rm -f '${cfg.statePath}/config/database.yml'
|
||||
|
||||
${if cfg.databasePasswordFile != null then ''
|
||||
${lib.optionalString (cfg.databasePasswordFile != null) ''
|
||||
db_password="$(<'${cfg.databasePasswordFile}')"
|
||||
export db_password
|
||||
|
||||
@@ -1356,16 +1364,24 @@ in {
|
||||
>&2 echo "Database password was an empty string!"
|
||||
exit 1
|
||||
fi
|
||||
''}
|
||||
|
||||
jq <${pkgs.writeText "database.yml" (builtins.toJSON databaseConfig)} \
|
||||
'.${if lib.versionAtLeast (lib.getVersion cfg.packages.gitlab) "15.0" then "production.main" else "production"}.password = $ENV.db_password' \
|
||||
>'${cfg.statePath}/config/database.yml'
|
||||
''
|
||||
else ''
|
||||
jq <${pkgs.writeText "database.yml" (builtins.toJSON databaseConfig)} \
|
||||
>'${cfg.statePath}/config/database.yml'
|
||||
''
|
||||
}
|
||||
# GitLab expects the `production.main` section to be the first entry in the file.
|
||||
jq <${pkgs.writeText "database.yml" (builtins.toJSON databaseConfig)} '{
|
||||
production: [
|
||||
${lib.optionalString (cfg.databasePasswordFile != null) (
|
||||
builtins.concatStringsSep "\n " (
|
||||
[ ".production${lib.optionalString (gitlabVersionAtLeast "15.0") ".main"}.password = $ENV.db_password" ]
|
||||
++ lib.optional (gitlabVersionAtLeast "15.9") "| .production.ci.password = $ENV.db_password"
|
||||
++ [ "|" ]
|
||||
)
|
||||
)} .production
|
||||
| to_entries[]
|
||||
]
|
||||
| sort_by(.key)
|
||||
| reverse
|
||||
| from_entries
|
||||
}' >'${cfg.statePath}/config/database.yml'
|
||||
|
||||
${utils.genJqSecretsReplacementSnippet
|
||||
gitlabConfig
|
||||
|
||||
@@ -301,7 +301,7 @@ in
|
||||
description = ''
|
||||
The addresses to send outgoing mail to.
|
||||
'';
|
||||
apply = x: if x == [] then null else lib.concatStringsSep "," x;
|
||||
apply = x: if x == [] || x == null then null else lib.concatStringsSep "," x;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -438,7 +438,7 @@ in
|
||||
];
|
||||
dashboards.settings.providers = lib.mkIf cfg.provision.grafana.dashboard [{
|
||||
name = "parsedmarc";
|
||||
options.path = "${pkgs.python3Packages.parsedmarc.dashboard}";
|
||||
options.path = "${pkgs.parsedmarc.dashboard}";
|
||||
}];
|
||||
};
|
||||
};
|
||||
@@ -446,7 +446,7 @@ in
|
||||
services.parsedmarc.settings = lib.mkMerge [
|
||||
(lib.mkIf cfg.provision.elasticsearch {
|
||||
elasticsearch = {
|
||||
hosts = [ "localhost:9200" ];
|
||||
hosts = [ "http://localhost:9200" ];
|
||||
ssl = false;
|
||||
};
|
||||
})
|
||||
@@ -530,7 +530,7 @@ in
|
||||
MemoryDenyWriteExecute = true;
|
||||
LockPersonality = true;
|
||||
SystemCallArchitectures = "native";
|
||||
ExecStart = "${pkgs.python3Packages.parsedmarc}/bin/parsedmarc -c /run/parsedmarc/parsedmarc.ini";
|
||||
ExecStart = "${lib.getExe pkgs.parsedmarc} -c /run/parsedmarc/parsedmarc.ini";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.services.clatd;
|
||||
|
||||
settingsFormat = pkgs.formats.keyValue {};
|
||||
|
||||
configFile = settingsFormat.generate "clatd.conf" cfg.settings;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.clatd = {
|
||||
enable = mkEnableOption "clatd";
|
||||
|
||||
package = mkPackageOption pkgs "clatd" { };
|
||||
|
||||
settings = mkOption {
|
||||
type = types.submodule ({ name, ... }: {
|
||||
freeformType = settingsFormat.type;
|
||||
});
|
||||
default = { };
|
||||
example = literalExpression ''
|
||||
{
|
||||
plat-prefix = "64:ff9b::/96";
|
||||
}
|
||||
'';
|
||||
description = ''
|
||||
Configuration of clatd. See [clatd Documentation](https://github.com/toreanderson/clatd/blob/master/README.pod#configuration).
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.clatd = {
|
||||
description = "464XLAT CLAT daemon";
|
||||
documentation = [ "man:clatd(8)" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
startLimitIntervalSec = 0;
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.package}/bin/clatd -c ${configFile}";
|
||||
startLimitIntervalSec = 0;
|
||||
|
||||
# Hardening
|
||||
CapabilityBoundingSet = [
|
||||
"CAP_NET_ADMIN"
|
||||
];
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateTmp = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectProc = "invisible";
|
||||
ProtectSystem = true;
|
||||
RestrictAddressFamilies = [
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
"AF_NETLINK"
|
||||
];
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [
|
||||
"@network-io"
|
||||
"@system-service"
|
||||
"~@privileged"
|
||||
"~@resources"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
# Jottacloud Command-line Tool {#module-services-jotta-cli}
|
||||
|
||||
The [Jottacloud Command-line Tool](https://docs.jottacloud.com/en/articles/1436834-jottacloud-command-line-tool) is a headless [Jottacloud](https://jottacloud.com) client.
|
||||
|
||||
## Quick Start {#module-services-jotta-cli-quick-start}
|
||||
|
||||
```nix
|
||||
{
|
||||
user.services.jotta-cli.enable = true;
|
||||
}
|
||||
```
|
||||
|
||||
This adds `jotta-cli` to `environment.systemPackages` and starts a user service that runs `jottad` with the default options.
|
||||
|
||||
## Example Configuration {#module-services-jotta-cli-example-configuration}
|
||||
|
||||
```nix
|
||||
user.services.jotta-cli = {
|
||||
enable = true;
|
||||
options = [ "slow" ];
|
||||
package = pkgs.jotta-cli;
|
||||
};
|
||||
```
|
||||
|
||||
This uses `jotta-cli` and `jottad` from the `pkgs.jotta-cli` package and starts `jottad` in low memory mode.
|
||||
|
||||
`jottad` is also added to `environment.systemPackages`, so `jottad --help` can be used to explore options.
|
||||
@@ -0,0 +1,43 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let cfg = config.user.services.jotta-cli;
|
||||
in {
|
||||
options = {
|
||||
user.services.jotta-cli = {
|
||||
|
||||
enable = mkEnableOption "Jottacloud Command-line Tool";
|
||||
|
||||
options = mkOption {
|
||||
default = [ "stdoutlog" "datadir" "%h/.jottad/" ];
|
||||
example = [ ];
|
||||
type = with types; listOf str;
|
||||
description = "Command-line options passed to jottad.";
|
||||
};
|
||||
|
||||
package = lib.mkPackageOption pkgs "jotta-cli" { };
|
||||
};
|
||||
};
|
||||
config = mkIf cfg.enable {
|
||||
systemd.user.services.jottad = {
|
||||
|
||||
description = "Jottacloud Command-line Tool daemon";
|
||||
|
||||
serviceConfig = {
|
||||
Type = "notify";
|
||||
EnvironmentFile = "-%h/.config/jotta-cli/jotta-cli.env";
|
||||
ExecStart = "${lib.getExe' cfg.package "jottad"} ${concatStringsSep " " cfg.options}";
|
||||
Restart = "on-failure";
|
||||
};
|
||||
|
||||
wantedBy = [ "default.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
};
|
||||
environment.systemPackages = [ pkgs.jotta-cli ];
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ evenbrenden ];
|
||||
meta.doc = ./jotta-cli.md;
|
||||
}
|
||||
@@ -51,7 +51,7 @@ in
|
||||
package = mkPackageOption pkgs "trust-dns" {
|
||||
extraDescription = ''
|
||||
::: {.note}
|
||||
The package must provide `meta.mainProgram` which names the server binayr; any other utilities (client, resolver) are not needed.
|
||||
The package must provide `meta.mainProgram` which names the server binary; any other utilities (client, resolver) are not needed.
|
||||
:::
|
||||
'';
|
||||
};
|
||||
@@ -86,7 +86,7 @@ in
|
||||
type = types.listOf types.str;
|
||||
default = [ "0.0.0.0" ];
|
||||
description = ''
|
||||
List of ipv4 addresses on which to listen for DNS queries.
|
||||
List of ipv4 addresses on which to listen for DNS queries.
|
||||
'';
|
||||
};
|
||||
listen_addrs_ipv6 = mkOption {
|
||||
@@ -114,7 +114,7 @@ in
|
||||
};
|
||||
zones = mkOption {
|
||||
description = "List of zones to serve.";
|
||||
default = {};
|
||||
default = [];
|
||||
type = types.listOf (types.coercedTo types.str (zone: { inherit zone; }) zoneType);
|
||||
};
|
||||
};
|
||||
|
||||
+27
-28
@@ -1,56 +1,55 @@
|
||||
{ config, lib, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.services.oauth2_proxy.nginx;
|
||||
cfg = config.services.oauth2-proxy.nginx;
|
||||
in
|
||||
{
|
||||
options.services.oauth2_proxy.nginx = {
|
||||
proxy = mkOption {
|
||||
type = types.str;
|
||||
default = config.services.oauth2_proxy.httpAddress;
|
||||
defaultText = literalExpression "config.services.oauth2_proxy.httpAddress";
|
||||
options.services.oauth2-proxy.nginx = {
|
||||
proxy = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = config.services.oauth2-proxy.httpAddress;
|
||||
defaultText = lib.literalExpression "config.services.oauth2-proxy.httpAddress";
|
||||
description = ''
|
||||
The address of the reverse proxy endpoint for oauth2_proxy
|
||||
The address of the reverse proxy endpoint for oauth2-proxy
|
||||
'';
|
||||
};
|
||||
|
||||
domain = mkOption {
|
||||
type = types.str;
|
||||
domain = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
The domain under which the oauth2_proxy will be accesible and the path of cookies are set to.
|
||||
The domain under which the oauth2-proxy will be accesible and the path of cookies are set to.
|
||||
This setting must be set to ensure back-redirects are working properly
|
||||
if oauth2-proxy is configured with {option}`services.oauth2_proxy.cookie.domain`
|
||||
or multiple {option}`services.oauth2_proxy.nginx.virtualHosts` that are not on the same domain.
|
||||
if oauth2-proxy is configured with {option}`services.oauth2-proxy.cookie.domain`
|
||||
or multiple {option}`services.oauth2-proxy.nginx.virtualHosts` that are not on the same domain.
|
||||
'';
|
||||
};
|
||||
|
||||
virtualHosts = mkOption {
|
||||
virtualHosts = lib.mkOption {
|
||||
type = let
|
||||
vhostSubmodule = types.submodule {
|
||||
vhostSubmodule = lib.types.submodule {
|
||||
options = {
|
||||
allowed_groups = mkOption {
|
||||
type = types.nullOr (types.listOf types.str);
|
||||
allowed_groups = lib.mkOption {
|
||||
type = lib.types.nullOr (lib.types.listOf lib.types.str);
|
||||
description = "List of groups to allow access to this vhost, or null to allow all.";
|
||||
default = null;
|
||||
};
|
||||
allowed_emails = mkOption {
|
||||
type = types.nullOr (types.listOf types.str);
|
||||
allowed_emails = lib.mkOption {
|
||||
type = lib.types.nullOr (lib.types.listOf lib.types.str);
|
||||
description = "List of emails to allow access to this vhost, or null to allow all.";
|
||||
default = null;
|
||||
};
|
||||
allowed_email_domains = mkOption {
|
||||
type = types.nullOr (types.listOf types.str);
|
||||
allowed_email_domains = lib.mkOption {
|
||||
type = lib.types.nullOr (lib.types.listOf lib.types.str);
|
||||
description = "List of email domains to allow access to this vhost, or null to allow all.";
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
};
|
||||
oldType = types.listOf types.str;
|
||||
oldType = lib.types.listOf lib.types.str;
|
||||
convertFunc = x:
|
||||
lib.warn "services.oauth2_proxy.nginx.virtualHosts should be an attrset, found ${lib.generators.toPretty {} x}"
|
||||
lib.warn "services.oauth2-proxy.nginx.virtualHosts should be an attrset, found ${lib.generators.toPretty {} x}"
|
||||
lib.genAttrs x (_: {});
|
||||
newType = types.attrsOf vhostSubmodule;
|
||||
in types.coercedTo oldType convertFunc newType;
|
||||
newType = lib.types.attrsOf vhostSubmodule;
|
||||
in lib.types.coercedTo oldType convertFunc newType;
|
||||
default = {};
|
||||
example = {
|
||||
"protected.foo.com" = {
|
||||
@@ -65,11 +64,11 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
config.services.oauth2_proxy = mkIf (cfg.virtualHosts != [] && (hasPrefix "127.0.0.1:" cfg.proxy)) {
|
||||
config.services.oauth2-proxy = lib.mkIf (cfg.virtualHosts != [] && (lib.hasPrefix "127.0.0.1:" cfg.proxy)) {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
config.services.nginx = mkIf (cfg.virtualHosts != [] && config.services.oauth2_proxy.enable) (mkMerge ([
|
||||
config.services.nginx = lib.mkIf (cfg.virtualHosts != [] && config.services.oauth2-proxy.enable) (lib.mkMerge ([
|
||||
{
|
||||
virtualHosts.${cfg.domain}.locations."/oauth2/" = {
|
||||
proxyPass = cfg.proxy;
|
||||
@@ -79,7 +78,7 @@ in
|
||||
'';
|
||||
};
|
||||
}
|
||||
] ++ optional (cfg.virtualHosts != []) {
|
||||
] ++ lib.optional (cfg.virtualHosts != []) {
|
||||
recommendedProxySettings = true; # needed because duplicate headers
|
||||
} ++ (lib.mapAttrsToList (vhost: conf: {
|
||||
virtualHosts.${vhost} = {
|
||||
+124
-125
@@ -1,15 +1,12 @@
|
||||
# NixOS module for oauth2_proxy.
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.services.oauth2_proxy;
|
||||
cfg = config.services.oauth2-proxy;
|
||||
|
||||
# oauth2_proxy provides many options that are only relevant if you are using
|
||||
# oauth2-proxy provides many options that are only relevant if you are using
|
||||
# a certain provider. This set maps from provider name to a function that
|
||||
# takes the configuration and returns a string that can be inserted into the
|
||||
# command-line to launch oauth2_proxy.
|
||||
# command-line to launch oauth2-proxy.
|
||||
providerSpecificOptions = {
|
||||
azure = cfg: {
|
||||
azure-tenant = cfg.azure.tenant;
|
||||
@@ -73,28 +70,28 @@ let
|
||||
} // (getProviderOptions cfg cfg.provider) // cfg.extraConfig;
|
||||
|
||||
mapConfig = key: attr:
|
||||
optionalString (attr != null && attr != []) (
|
||||
if isDerivation attr then mapConfig key (toString attr) else
|
||||
if (builtins.typeOf attr) == "set" then concatStringsSep " "
|
||||
(mapAttrsToList (name: value: mapConfig (key + "-" + name) value) attr) else
|
||||
if (builtins.typeOf attr) == "list" then concatMapStringsSep " " (mapConfig key) attr else
|
||||
if (builtins.typeOf attr) == "bool" then "--${key}=${boolToString attr}" else
|
||||
lib.optionalString (attr != null && attr != []) (
|
||||
if lib.isDerivation attr then mapConfig key (toString attr) else
|
||||
if (builtins.typeOf attr) == "set" then lib.concatStringsSep " "
|
||||
(lib.mapAttrsToList (name: value: mapConfig (key + "-" + name) value) attr) else
|
||||
if (builtins.typeOf attr) == "list" then lib.concatMapStringsSep " " (mapConfig key) attr else
|
||||
if (builtins.typeOf attr) == "bool" then "--${key}=${lib.boolToString attr}" else
|
||||
if (builtins.typeOf attr) == "string" then "--${key}='${attr}'" else
|
||||
"--${key}=${toString attr}");
|
||||
|
||||
configString = concatStringsSep " " (mapAttrsToList mapConfig allConfig);
|
||||
configString = lib.concatStringsSep " " (lib.mapAttrsToList mapConfig allConfig);
|
||||
in
|
||||
{
|
||||
options.services.oauth2_proxy = {
|
||||
enable = mkEnableOption "oauth2_proxy";
|
||||
options.services.oauth2-proxy = {
|
||||
enable = lib.mkEnableOption "oauth2-proxy";
|
||||
|
||||
package = mkPackageOption pkgs "oauth2-proxy" { };
|
||||
package = lib.mkPackageOption pkgs "oauth2-proxy" { };
|
||||
|
||||
##############################################
|
||||
# PROVIDER configuration
|
||||
# Taken from: https://github.com/oauth2-proxy/oauth2-proxy/blob/master/providers/providers.go
|
||||
provider = mkOption {
|
||||
type = types.enum [
|
||||
provider = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"adfs"
|
||||
"azure"
|
||||
"bitbucket"
|
||||
@@ -116,24 +113,24 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
approvalPrompt = mkOption {
|
||||
type = types.enum ["force" "auto"];
|
||||
approvalPrompt = lib.mkOption {
|
||||
type = lib.types.enum ["force" "auto"];
|
||||
default = "force";
|
||||
description = ''
|
||||
OAuth approval_prompt.
|
||||
'';
|
||||
};
|
||||
|
||||
clientID = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
clientID = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
description = ''
|
||||
The OAuth Client ID.
|
||||
'';
|
||||
example = "123456.apps.googleusercontent.com";
|
||||
};
|
||||
|
||||
oidcIssuerUrl = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
oidcIssuerUrl = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
The OAuth issuer URL.
|
||||
@@ -141,15 +138,15 @@ in
|
||||
example = "https://login.microsoftonline.com/{TENANT_ID}/v2.0";
|
||||
};
|
||||
|
||||
clientSecret = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
clientSecret = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
description = ''
|
||||
The OAuth Client Secret.
|
||||
'';
|
||||
};
|
||||
|
||||
skipAuthRegexes = mkOption {
|
||||
type = types.listOf types.str;
|
||||
skipAuthRegexes = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [];
|
||||
description = ''
|
||||
Skip authentication for requests matching any of these regular
|
||||
@@ -159,8 +156,8 @@ in
|
||||
|
||||
# XXX: Not clear whether these two options are mutually exclusive or not.
|
||||
email = {
|
||||
domains = mkOption {
|
||||
type = types.listOf types.str;
|
||||
domains = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [];
|
||||
description = ''
|
||||
Authenticate emails with the specified domains. Use
|
||||
@@ -168,8 +165,8 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
addresses = mkOption {
|
||||
type = types.nullOr types.lines;
|
||||
addresses = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.lines;
|
||||
default = null;
|
||||
description = ''
|
||||
Line-separated email addresses that are allowed to authenticate.
|
||||
@@ -177,8 +174,8 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
loginURL = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
loginURL = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Authentication endpoint.
|
||||
@@ -190,8 +187,8 @@ in
|
||||
example = "https://provider.example.com/oauth/authorize";
|
||||
};
|
||||
|
||||
redeemURL = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
redeemURL = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Token redemption endpoint.
|
||||
@@ -203,8 +200,8 @@ in
|
||||
example = "https://provider.example.com/oauth/token";
|
||||
};
|
||||
|
||||
validateURL = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
validateURL = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Access token validation endpoint.
|
||||
@@ -216,10 +213,10 @@ in
|
||||
example = "https://provider.example.com/user/emails";
|
||||
};
|
||||
|
||||
redirectURL = mkOption {
|
||||
redirectURL = lib.mkOption {
|
||||
# XXX: jml suspects this is always necessary, but the command-line
|
||||
# doesn't require it so making it optional.
|
||||
type = types.nullOr types.str;
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
The OAuth2 redirect URL.
|
||||
@@ -228,16 +225,16 @@ in
|
||||
};
|
||||
|
||||
azure = {
|
||||
tenant = mkOption {
|
||||
type = types.str;
|
||||
tenant = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "common";
|
||||
description = ''
|
||||
Go to a tenant-specific or common (tenant-independent) endpoint.
|
||||
'';
|
||||
};
|
||||
|
||||
resource = mkOption {
|
||||
type = types.str;
|
||||
resource = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
The resource that is protected.
|
||||
'';
|
||||
@@ -245,8 +242,8 @@ in
|
||||
};
|
||||
|
||||
google = {
|
||||
adminEmail = mkOption {
|
||||
type = types.str;
|
||||
adminEmail = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
description = ''
|
||||
The Google Admin to impersonate for API calls.
|
||||
|
||||
@@ -258,16 +255,16 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
groups = mkOption {
|
||||
type = types.listOf types.str;
|
||||
groups = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
default = [];
|
||||
description = ''
|
||||
Restrict logins to members of these Google groups.
|
||||
'';
|
||||
};
|
||||
|
||||
serviceAccountJSON = mkOption {
|
||||
type = types.path;
|
||||
serviceAccountJSON = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = ''
|
||||
The path to the service account JSON credentials.
|
||||
'';
|
||||
@@ -275,16 +272,16 @@ in
|
||||
};
|
||||
|
||||
github = {
|
||||
org = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
org = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Restrict logins to members of this organisation.
|
||||
'';
|
||||
};
|
||||
|
||||
team = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
team = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Restrict logins to members of this team.
|
||||
@@ -295,8 +292,8 @@ in
|
||||
|
||||
####################################################
|
||||
# UPSTREAM Configuration
|
||||
upstream = mkOption {
|
||||
type = with types; coercedTo str (x: [x]) (listOf str);
|
||||
upstream = lib.mkOption {
|
||||
type = with lib.types; coercedTo str (x: [x]) (listOf str);
|
||||
default = [];
|
||||
description = ''
|
||||
The http url(s) of the upstream endpoint or `file://`
|
||||
@@ -304,40 +301,40 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
passAccessToken = mkOption {
|
||||
type = types.bool;
|
||||
passAccessToken = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Pass OAuth access_token to upstream via X-Forwarded-Access-Token header.
|
||||
'';
|
||||
};
|
||||
|
||||
passBasicAuth = mkOption {
|
||||
type = types.bool;
|
||||
passBasicAuth = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Pass HTTP Basic Auth, X-Forwarded-User and X-Forwarded-Email information to upstream.
|
||||
'';
|
||||
};
|
||||
|
||||
basicAuthPassword = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
basicAuthPassword = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
The password to set when passing the HTTP Basic Auth header.
|
||||
'';
|
||||
};
|
||||
|
||||
passHostHeader = mkOption {
|
||||
type = types.bool;
|
||||
passHostHeader = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Pass the request Host Header to upstream.
|
||||
'';
|
||||
};
|
||||
|
||||
signatureKey = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
signatureKey = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
GAP-Signature request signature key.
|
||||
@@ -346,8 +343,8 @@ in
|
||||
};
|
||||
|
||||
cookie = {
|
||||
domain = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
domain = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Optional cookie domains to force cookies to (ie: `.yourcompany.com`).
|
||||
@@ -357,33 +354,33 @@ in
|
||||
example = ".yourcompany.com";
|
||||
};
|
||||
|
||||
expire = mkOption {
|
||||
type = types.str;
|
||||
expire = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "168h0m0s";
|
||||
description = ''
|
||||
Expire timeframe for cookie.
|
||||
'';
|
||||
};
|
||||
|
||||
httpOnly = mkOption {
|
||||
type = types.bool;
|
||||
httpOnly = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Set HttpOnly cookie flag.
|
||||
'';
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
name = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "_oauth2_proxy";
|
||||
description = ''
|
||||
The name of the cookie that the oauth_proxy creates.
|
||||
'';
|
||||
};
|
||||
|
||||
refresh = mkOption {
|
||||
refresh = lib.mkOption {
|
||||
# XXX: Unclear what the behavior is when this is not specified.
|
||||
type = types.nullOr types.str;
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Refresh the cookie after this duration; 0 to disable.
|
||||
@@ -391,15 +388,15 @@ in
|
||||
example = "168h0m0s";
|
||||
};
|
||||
|
||||
secret = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
secret = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
description = ''
|
||||
The seed string for secure cookies.
|
||||
'';
|
||||
};
|
||||
|
||||
secure = mkOption {
|
||||
type = types.bool;
|
||||
secure = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Set secure (HTTPS) cookie flag.
|
||||
@@ -410,8 +407,8 @@ in
|
||||
####################################################
|
||||
# OAUTH2 PROXY configuration
|
||||
|
||||
httpAddress = mkOption {
|
||||
type = types.str;
|
||||
httpAddress = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "http://127.0.0.1:4180";
|
||||
description = ''
|
||||
HTTPS listening address. This module does not expose the port by
|
||||
@@ -421,8 +418,8 @@ in
|
||||
};
|
||||
|
||||
htpasswd = {
|
||||
file = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
file = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
description = ''
|
||||
Additionally authenticate against a htpasswd file. Entries must be
|
||||
@@ -430,8 +427,8 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
displayForm = mkOption {
|
||||
type = types.bool;
|
||||
displayForm = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Display username / password login form if an htpasswd file is provided.
|
||||
@@ -439,16 +436,16 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
customTemplatesDir = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
customTemplatesDir = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
description = ''
|
||||
Path to custom HTML templates.
|
||||
'';
|
||||
};
|
||||
|
||||
reverseProxy = mkOption {
|
||||
type = types.bool;
|
||||
reverseProxy = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
In case when running behind a reverse proxy, controls whether headers
|
||||
@@ -458,8 +455,8 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
proxyPrefix = mkOption {
|
||||
type = types.str;
|
||||
proxyPrefix = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/oauth2";
|
||||
description = ''
|
||||
The url root path that this proxy should be nested under.
|
||||
@@ -467,30 +464,30 @@ in
|
||||
};
|
||||
|
||||
tls = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to serve over TLS.
|
||||
'';
|
||||
};
|
||||
|
||||
certificate = mkOption {
|
||||
type = types.path;
|
||||
certificate = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = ''
|
||||
Path to certificate file.
|
||||
'';
|
||||
};
|
||||
|
||||
key = mkOption {
|
||||
type = types.path;
|
||||
key = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
description = ''
|
||||
Path to private key file.
|
||||
'';
|
||||
};
|
||||
|
||||
httpsAddress = mkOption {
|
||||
type = types.str;
|
||||
httpsAddress = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = ":443";
|
||||
description = ''
|
||||
`addr:port` to listen on for HTTPS clients.
|
||||
@@ -502,8 +499,8 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
requestLogging = mkOption {
|
||||
type = types.bool;
|
||||
requestLogging = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Log requests to stdout.
|
||||
@@ -514,42 +511,42 @@ in
|
||||
# UNKNOWN
|
||||
|
||||
# XXX: Is this mandatory? Is it part of another group? Is it part of the provider specification?
|
||||
scope = mkOption {
|
||||
scope = lib.mkOption {
|
||||
# XXX: jml suspects this is always necessary, but the command-line
|
||||
# doesn't require it so making it optional.
|
||||
type = types.nullOr types.str;
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
OAuth scope specification.
|
||||
'';
|
||||
};
|
||||
|
||||
profileURL = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
profileURL = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Profile access endpoint.
|
||||
'';
|
||||
};
|
||||
|
||||
setXauthrequest = mkOption {
|
||||
type = types.nullOr types.bool;
|
||||
setXauthrequest = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Set X-Auth-Request-User and X-Auth-Request-Email response headers (useful in Nginx auth_request mode). Setting this to 'null' means using the upstream default (false).
|
||||
'';
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
extraConfig = lib.mkOption {
|
||||
default = {};
|
||||
type = types.attrsOf types.anything;
|
||||
type = lib.types.attrsOf lib.types.anything;
|
||||
description = ''
|
||||
Extra config to pass to oauth2-proxy.
|
||||
'';
|
||||
};
|
||||
|
||||
keyFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
keyFile = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
description = ''
|
||||
oauth2-proxy allows passing sensitive configuration via environment variables.
|
||||
@@ -557,28 +554,30 @@ in
|
||||
OAUTH2_PROXY_CLIENT_SECRET=asdfasdfasdf.apps.googleuserscontent.com
|
||||
and specify the path here.
|
||||
'';
|
||||
example = "/run/keys/oauth2_proxy";
|
||||
example = "/run/keys/oauth2-proxy";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
imports = [
|
||||
(lib.mkRenamedOptionModule [ "services" "oauth2_proxy" ] [ "services" "oauth2-proxy" ])
|
||||
];
|
||||
|
||||
services.oauth2_proxy = mkIf (cfg.keyFile != null) {
|
||||
clientID = mkDefault null;
|
||||
clientSecret = mkDefault null;
|
||||
cookie.secret = mkDefault null;
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.oauth2-proxy = lib.mkIf (cfg.keyFile != null) {
|
||||
clientID = lib.mkDefault null;
|
||||
clientSecret = lib.mkDefault null;
|
||||
cookie.secret = lib.mkDefault null;
|
||||
};
|
||||
|
||||
users.users.oauth2_proxy = {
|
||||
users.users.oauth2-proxy = {
|
||||
description = "OAuth2 Proxy";
|
||||
isSystemUser = true;
|
||||
group = "oauth2_proxy";
|
||||
group = "oauth2-proxy";
|
||||
};
|
||||
|
||||
users.groups.oauth2_proxy = {};
|
||||
users.groups.oauth2-proxy = {};
|
||||
|
||||
systemd.services.oauth2_proxy = {
|
||||
systemd.services.oauth2-proxy = {
|
||||
description = "OAuth2 Proxy";
|
||||
path = [ cfg.package ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
@@ -586,10 +585,10 @@ in
|
||||
after = [ "network-online.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
User = "oauth2_proxy";
|
||||
User = "oauth2-proxy";
|
||||
Restart = "always";
|
||||
ExecStart = "${cfg.package}/bin/oauth2-proxy ${configString}";
|
||||
EnvironmentFile = mkIf (cfg.keyFile != null) cfg.keyFile;
|
||||
EnvironmentFile = lib.mkIf (cfg.keyFile != null) cfg.keyFile;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (lib) mkOption types;
|
||||
|
||||
xcfg = config.services.xserver;
|
||||
cfg = xcfg.desktopManager;
|
||||
@@ -59,7 +58,7 @@ in
|
||||
session = mkOption {
|
||||
internal = true;
|
||||
default = [];
|
||||
example = singleton
|
||||
example = lib.singleton
|
||||
{ name = "kde";
|
||||
bgSupport = true;
|
||||
start = "...";
|
||||
@@ -73,26 +72,15 @@ in
|
||||
manage = "desktop";
|
||||
start = d.start
|
||||
# literal newline to ensure d.start's last line is not appended to
|
||||
+ optionalString (needBGCond d) ''
|
||||
+ lib.optionalString (needBGCond d) ''
|
||||
|
||||
if [ -e $HOME/.background-image ]; then
|
||||
${pkgs.feh}/bin/feh --bg-${cfg.wallpaper.mode} ${optionalString cfg.wallpaper.combineScreens "--no-xinerama"} $HOME/.background-image
|
||||
${pkgs.feh}/bin/feh --bg-${cfg.wallpaper.mode} ${lib.optionalString cfg.wallpaper.combineScreens "--no-xinerama"} $HOME/.background-image
|
||||
fi
|
||||
'';
|
||||
});
|
||||
};
|
||||
|
||||
default = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "none";
|
||||
description = ''
|
||||
**Deprecated**, please use [](#opt-services.displayManager.defaultSession) instead.
|
||||
|
||||
Default desktop manager loaded if none have been chosen.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
{ config, lib, pkgs, utils, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (lib) mkOption types mkDefault mkEnableOption literalExpression;
|
||||
|
||||
cfg = config.services.xserver.desktopManager.gnome;
|
||||
serviceCfg = config.services.gnome;
|
||||
@@ -51,8 +50,8 @@ let
|
||||
destination = "/share/gnome-background-properties/nixos.xml";
|
||||
};
|
||||
|
||||
flashbackEnabled = cfg.flashback.enableMetacity || length cfg.flashback.customSessions > 0;
|
||||
flashbackWms = optional cfg.flashback.enableMetacity {
|
||||
flashbackEnabled = cfg.flashback.enableMetacity || lib.length cfg.flashback.customSessions > 0;
|
||||
flashbackWms = lib.optional cfg.flashback.enableMetacity {
|
||||
wmName = "metacity";
|
||||
wmLabel = "Metacity";
|
||||
wmCommand = "${pkgs.gnome.metacity}/bin/metacity";
|
||||
@@ -67,73 +66,9 @@ in
|
||||
|
||||
meta = {
|
||||
doc = ./gnome.md;
|
||||
maintainers = teams.gnome.members;
|
||||
maintainers = lib.teams.gnome.members;
|
||||
};
|
||||
|
||||
imports = [
|
||||
# Added 2021-05-07
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "core-os-services" "enable" ]
|
||||
[ "services" "gnome" "core-os-services" "enable" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "core-shell" "enable" ]
|
||||
[ "services" "gnome" "core-shell" "enable" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "core-utilities" "enable" ]
|
||||
[ "services" "gnome" "core-utilities" "enable" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "core-developer-tools" "enable" ]
|
||||
[ "services" "gnome" "core-developer-tools" "enable" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "games" "enable" ]
|
||||
[ "services" "gnome" "games" "enable" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "gnome3" "experimental-features" "realtime-scheduling" ]
|
||||
[ "services" "gnome" "experimental-features" "realtime-scheduling" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "xserver" "desktopManager" "gnome3" "enable" ]
|
||||
[ "services" "xserver" "desktopManager" "gnome" "enable" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "xserver" "desktopManager" "gnome3" "sessionPath" ]
|
||||
[ "services" "xserver" "desktopManager" "gnome" "sessionPath" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "xserver" "desktopManager" "gnome3" "favoriteAppsOverride" ]
|
||||
[ "services" "xserver" "desktopManager" "gnome" "favoriteAppsOverride" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "xserver" "desktopManager" "gnome3" "extraGSettingsOverrides" ]
|
||||
[ "services" "xserver" "desktopManager" "gnome" "extraGSettingsOverrides" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "xserver" "desktopManager" "gnome3" "extraGSettingsOverridePackages" ]
|
||||
[ "services" "xserver" "desktopManager" "gnome" "extraGSettingsOverridePackages" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "xserver" "desktopManager" "gnome3" "debug" ]
|
||||
[ "services" "xserver" "desktopManager" "gnome" "debug" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "xserver" "desktopManager" "gnome3" "flashback" ]
|
||||
[ "services" "xserver" "desktopManager" "gnome" "flashback" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "environment" "gnome3" "excludePackages" ]
|
||||
[ "environment" "gnome" "excludePackages" ]
|
||||
)
|
||||
(mkRemovedOptionModule
|
||||
[ "services" "gnome" "experimental-features" "realtime-scheduling" ]
|
||||
"Set `security.rtkit.enable = true;` to make realtime scheduling possible. (Still needs to be enabled using GSettings.)"
|
||||
)
|
||||
];
|
||||
|
||||
options = {
|
||||
|
||||
services.gnome = {
|
||||
@@ -248,8 +183,8 @@ in
|
||||
|
||||
};
|
||||
|
||||
config = mkMerge [
|
||||
(mkIf (cfg.enable || flashbackEnabled) {
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf (cfg.enable || flashbackEnabled) {
|
||||
# Seed our configuration into nixos-generate-config
|
||||
system.nixos-generate-config.desktopConfiguration = [''
|
||||
# Enable the GNOME Desktop Environment.
|
||||
@@ -264,7 +199,7 @@ in
|
||||
services.displayManager.sessionPackages = [ pkgs.gnome.gnome-session.sessions ];
|
||||
|
||||
environment.extraInit = ''
|
||||
${concatMapStrings (p: ''
|
||||
${lib.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
|
||||
@@ -278,19 +213,19 @@ in
|
||||
|
||||
environment.systemPackages = cfg.sessionPath;
|
||||
|
||||
environment.sessionVariables.GNOME_SESSION_DEBUG = mkIf cfg.debug "1";
|
||||
environment.sessionVariables.GNOME_SESSION_DEBUG = lib.mkIf cfg.debug "1";
|
||||
|
||||
# Override GSettings schemas
|
||||
environment.sessionVariables.NIX_GSETTINGS_OVERRIDES_DIR = "${nixos-gsettings-desktop-schemas}/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas";
|
||||
})
|
||||
|
||||
(mkIf flashbackEnabled {
|
||||
(lib.mkIf flashbackEnabled {
|
||||
services.displayManager.sessionPackages =
|
||||
let
|
||||
wmNames = map (wm: wm.wmName) flashbackWms;
|
||||
namesAreUnique = lib.unique wmNames == wmNames;
|
||||
in
|
||||
assert (assertMsg namesAreUnique "Flashback WM names must be unique.");
|
||||
assert (lib.assertMsg namesAreUnique "Flashback WM names must be unique.");
|
||||
map
|
||||
(wm:
|
||||
pkgs.gnome.gnome-flashback.mkSessionForWm {
|
||||
@@ -318,7 +253,7 @@ in
|
||||
++ (map (wm: gnome-flashback.mkGnomeSession { inherit (wm) wmName wmLabel enableGnomePanel; }) flashbackWms);
|
||||
})
|
||||
|
||||
(mkIf serviceCfg.core-os-services.enable {
|
||||
(lib.mkIf serviceCfg.core-os-services.enable {
|
||||
hardware.bluetooth.enable = mkDefault true;
|
||||
hardware.pulseaudio.enable = mkDefault true;
|
||||
programs.dconf.enable = true;
|
||||
@@ -371,7 +306,7 @@ in
|
||||
];
|
||||
})
|
||||
|
||||
(mkIf serviceCfg.core-shell.enable {
|
||||
(lib.mkIf serviceCfg.core-shell.enable {
|
||||
services.xserver.desktopManager.gnome.sessionPath =
|
||||
let
|
||||
mandatoryPackages = [
|
||||
@@ -393,7 +328,7 @@ in
|
||||
services.gnome.gnome-user-share.enable = mkDefault true;
|
||||
services.gnome.rygel.enable = mkDefault true;
|
||||
services.gvfs.enable = true;
|
||||
services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
|
||||
services.system-config-printer.enable = (lib.mkIf config.services.printing.enable (mkDefault true));
|
||||
|
||||
systemd.packages = with pkgs.gnome; [
|
||||
gnome-session
|
||||
@@ -463,7 +398,7 @@ in
|
||||
})
|
||||
|
||||
# Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/gnome-45/elements/core/meta-gnome-core-utilities.bst
|
||||
(mkIf serviceCfg.core-utilities.enable {
|
||||
(lib.mkIf serviceCfg.core-utilities.enable {
|
||||
environment.systemPackages =
|
||||
with pkgs.gnome;
|
||||
utils.removePackagesByName
|
||||
@@ -524,7 +459,7 @@ in
|
||||
];
|
||||
})
|
||||
|
||||
(mkIf serviceCfg.games.enable {
|
||||
(lib.mkIf serviceCfg.games.enable {
|
||||
environment.systemPackages = with pkgs.gnome; utils.removePackagesByName [
|
||||
aisleriot
|
||||
atomix
|
||||
@@ -550,7 +485,7 @@ in
|
||||
})
|
||||
|
||||
# Adapt from https://gitlab.gnome.org/GNOME/gnome-build-meta/-/blob/3.38.0/elements/core/meta-gnome-core-developer-tools.bst
|
||||
(mkIf serviceCfg.core-developer-tools.enable {
|
||||
(lib.mkIf serviceCfg.core-developer-tools.enable {
|
||||
environment.systemPackages = with pkgs.gnome; utils.removePackagesByName [
|
||||
dconf-editor
|
||||
devhelp
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
|
||||
{ config, lib, options, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (lib) mkOption types literalExpression optionalString;
|
||||
|
||||
cfg = config.services.xserver;
|
||||
xorg = pkgs.xorg;
|
||||
@@ -91,7 +90,7 @@ let
|
||||
# Import environment variables into the systemd user environment.
|
||||
${optionalString (cfg.displayManager.importedVariables != []) (
|
||||
"/run/current-system/systemd/bin/systemctl --user import-environment "
|
||||
+ toString (unique cfg.displayManager.importedVariables)
|
||||
+ toString (lib.unique cfg.displayManager.importedVariables)
|
||||
)}
|
||||
|
||||
# Speed up application start by 50-150ms according to
|
||||
@@ -222,13 +221,6 @@ in
|
||||
};
|
||||
|
||||
config = {
|
||||
assertions = [
|
||||
{
|
||||
assertion = cfg.desktopManager.default != null || cfg.windowManager.default != null -> cfg.displayManager.defaultSession == defaultSessionFromLegacyOptions;
|
||||
message = "You cannot use both services.displayManager.defaultSession option and legacy options (services.xserver.desktopManager.default and services.xserver.windowManager.default).";
|
||||
}
|
||||
];
|
||||
|
||||
services.displayManager.sessionData.wrapper = xsessionWrapper;
|
||||
|
||||
services.xserver.displayManager.xserverBin = "${xorg.xorgserver.out}/bin/X";
|
||||
@@ -254,8 +246,8 @@ in
|
||||
# that do not have upstream session files (those defined using services.{display,desktop,window}Manager.session options).
|
||||
services.displayManager.sessionPackages =
|
||||
let
|
||||
dms = filter (s: s.manage == "desktop") cfg.displayManager.session;
|
||||
wms = filter (s: s.manage == "window") cfg.displayManager.session;
|
||||
dms = lib.filter (s: s.manage == "desktop") cfg.displayManager.session;
|
||||
wms = lib.filter (s: s.manage == "window") cfg.displayManager.session;
|
||||
|
||||
# Script responsible for starting the window manager and the desktop manager.
|
||||
xsession = dm: wm: pkgs.writeScript "xsession" ''
|
||||
@@ -283,16 +275,16 @@ in
|
||||
'';
|
||||
in
|
||||
# We will generate every possible pair of WM and DM.
|
||||
concatLists (
|
||||
lib.concatLists (
|
||||
lib.mapCartesianProduct
|
||||
({dm, wm}: let
|
||||
sessionName = "${dm.name}${optionalString (wm.name != "none") ("+" + wm.name)}";
|
||||
script = xsession dm wm;
|
||||
desktopNames = if dm ? desktopNames
|
||||
then concatStringsSep ";" dm.desktopNames
|
||||
then lib.concatStringsSep ";" dm.desktopNames
|
||||
else sessionName;
|
||||
in
|
||||
optional (dm.name != "none" || wm.name != "none")
|
||||
lib.optional (dm.name != "none" || wm.name != "none")
|
||||
(pkgs.writeTextFile {
|
||||
name = "${sessionName}-xsession";
|
||||
destination = "/share/xsessions/${sessionName}.desktop";
|
||||
@@ -317,11 +309,11 @@ in
|
||||
};
|
||||
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "xserver" "displayManager" "desktopManagerHandlesLidAndPower" ]
|
||||
(lib.mkRemovedOptionModule [ "services" "xserver" "displayManager" "desktopManagerHandlesLidAndPower" ]
|
||||
"The option is no longer necessary because all display managers have already delegated lid management to systemd.")
|
||||
(mkRenamedOptionModule [ "services" "xserver" "displayManager" "job" "logsXsession" ] [ "services" "displayManager" "logToFile" ])
|
||||
(mkRenamedOptionModule [ "services" "xserver" "displayManager" "logToJournal" ] [ "services" "displayManager" "logToJournal" ])
|
||||
(mkRenamedOptionModule [ "services" "xserver" "displayManager" "extraSessionFilesPackages" ] [ "services" "displayManager" "sessionPackages" ])
|
||||
(lib.mkRenamedOptionModule [ "services" "xserver" "displayManager" "job" "logsXsession" ] [ "services" "displayManager" "logToFile" ])
|
||||
(lib.mkRenamedOptionModule [ "services" "xserver" "displayManager" "logToJournal" ] [ "services" "displayManager" "logToJournal" ])
|
||||
(lib.mkRenamedOptionModule [ "services" "xserver" "displayManager" "extraSessionFilesPackages" ] [ "services" "displayManager" "sessionPackages" ])
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
inherit (lib) mkOption types;
|
||||
cfg = config.services.xserver.windowManager;
|
||||
in
|
||||
|
||||
@@ -72,17 +71,6 @@ in
|
||||
});
|
||||
};
|
||||
|
||||
default = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "wmii";
|
||||
description = ''
|
||||
**Deprecated**, please use [](#opt-services.displayManager.defaultSession) instead.
|
||||
|
||||
Default window manager loaded if none have been chosen.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
@@ -6,7 +6,6 @@ let
|
||||
concatMap
|
||||
concatMapStrings
|
||||
concatStrings
|
||||
concatStringsSep
|
||||
escapeShellArg
|
||||
flip
|
||||
foldr
|
||||
@@ -491,10 +490,10 @@ in
|
||||
|
||||
theme = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
example = literalExpression "pkgs.nixos-grub2-theme";
|
||||
example = literalExpression ''"''${pkgs.libsForQt5.breeze-grub}/grub/themes/breeze"'';
|
||||
default = null;
|
||||
description = ''
|
||||
Grub theme to be used.
|
||||
Path to the grub theme to be used.
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
@@ -219,6 +219,11 @@ in
|
||||
systemd.services.podman.environment = config.networking.proxy.envVars;
|
||||
systemd.sockets.podman.wantedBy = [ "sockets.target" ];
|
||||
systemd.sockets.podman.socketConfig.SocketGroup = "podman";
|
||||
# Podman does not support multiple sockets, as of podman 5.0.2, so we use
|
||||
# a symlink. Unfortunately this does not let us use an alternate group,
|
||||
# such as `docker`.
|
||||
systemd.sockets.podman.socketConfig.Symlinks =
|
||||
lib.mkIf cfg.dockerSocket.enable [ "/run/docker.sock" ];
|
||||
|
||||
systemd.user.services.podman.environment = config.networking.proxy.envVars;
|
||||
systemd.user.sockets.podman.wantedBy = [ "sockets.target" ];
|
||||
@@ -239,11 +244,6 @@ in
|
||||
'')
|
||||
];
|
||||
|
||||
systemd.tmpfiles.rules =
|
||||
lib.optionals cfg.dockerSocket.enable [
|
||||
"L! /run/docker.sock - - - - /run/podman/podman.sock"
|
||||
];
|
||||
|
||||
users.groups.podman = { };
|
||||
|
||||
assertions = [
|
||||
|
||||
@@ -82,7 +82,9 @@ in rec {
|
||||
(onFullSupported "nixos.tests.gitlab")
|
||||
(onFullSupported "nixos.tests.gnome")
|
||||
(onFullSupported "nixos.tests.gnome-xorg")
|
||||
(onSystems ["x86_64-linux"] "nixos.tests.hibernate")
|
||||
# FIXME: broken by QEMU 8.2.3 upgrade, reenable when fixed
|
||||
# Upstream issue: https://gitlab.com/qemu-project/qemu/-/issues/2321
|
||||
# (onSystems ["x86_64-linux"] "nixos.tests.hibernate")
|
||||
(onFullSupported "nixos.tests.i3wm")
|
||||
(onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSimple")
|
||||
(onSystems ["x86_64-linux"] "nixos.tests.installer.btrfsSubvolDefault")
|
||||
|
||||
@@ -193,6 +193,7 @@ in {
|
||||
cinnamon = handleTest ./cinnamon.nix {};
|
||||
cinnamon-wayland = handleTest ./cinnamon-wayland.nix {};
|
||||
cjdns = handleTest ./cjdns.nix {};
|
||||
clatd = handleTest ./clatd.nix {};
|
||||
clickhouse = handleTest ./clickhouse.nix {};
|
||||
cloud-init = handleTest ./cloud-init.nix {};
|
||||
cloud-init-hostname = handleTest ./cloud-init-hostname.nix {};
|
||||
@@ -451,6 +452,7 @@ in {
|
||||
jirafeau = handleTest ./jirafeau.nix {};
|
||||
jitsi-meet = handleTest ./jitsi-meet.nix {};
|
||||
jool = import ./jool.nix { inherit pkgs runTest; };
|
||||
jotta-cli = handleTest ./jotta-cli.nix {};
|
||||
k3s = handleTest ./k3s {};
|
||||
kafka = handleTest ./kafka.nix {};
|
||||
kanidm = handleTest ./kanidm.nix {};
|
||||
|
||||
@@ -0,0 +1,189 @@
|
||||
# This test verifies that we can ping an IPv4-only server from an IPv6-only
|
||||
# client via a NAT64 router using CLAT on the client. The hosts and networks
|
||||
# are configured as follows:
|
||||
#
|
||||
# +------
|
||||
# Client | clat Address: 192.0.0.1/32 (configured via clatd)
|
||||
# | Route: default
|
||||
# |
|
||||
# | eth1 Address: 2001:db8::2/64
|
||||
# | | Route: default via 2001:db8::1
|
||||
# +--|---
|
||||
# | VLAN 3
|
||||
# +--|---
|
||||
# | eth2 Address: 2001:db8::1/64
|
||||
# Router |
|
||||
# | nat64 Address: 64:ff9b::1/128
|
||||
# | Route: 64:ff9b::/96
|
||||
# | Address: 192.0.2.0/32
|
||||
# | Route: 192.0.2.0/24
|
||||
# |
|
||||
# | eth1 Address: 100.64.0.1/24
|
||||
# +--|---
|
||||
# | VLAN 2
|
||||
# +--|---
|
||||
# Server | eth1 Address: 100.64.0.2/24
|
||||
# | Route: 192.0.2.0/24 via 100.64.0.1
|
||||
# +------
|
||||
|
||||
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
name = "clatd";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ hax404 ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
# The server is configured with static IPv4 addresses. RFC 6052 Section 3.1
|
||||
# disallows the mapping of non-global IPv4 addresses like RFC 1918 into the
|
||||
# Well-Known Prefix 64:ff9b::/96. TAYGA also does not allow the mapping of
|
||||
# documentation space (RFC 5737). To circumvent this, 100.64.0.2/24 from
|
||||
# RFC 6589 (Carrier Grade NAT) is used here.
|
||||
# To reach the IPv4 address pool of the NAT64 gateway, there is a static
|
||||
# route configured. In normal cases, where the router would also source NAT
|
||||
# the pool addresses to one IPv4 addresses, this would not be needed.
|
||||
server = {
|
||||
virtualisation.vlans = [
|
||||
2 # towards router
|
||||
];
|
||||
networking = {
|
||||
useDHCP = false;
|
||||
interfaces.eth1 = lib.mkForce {};
|
||||
};
|
||||
systemd.network = {
|
||||
enable = true;
|
||||
networks."vlan1" = {
|
||||
matchConfig.Name = "eth1";
|
||||
address = [
|
||||
"100.64.0.2/24"
|
||||
];
|
||||
routes = [
|
||||
{ routeConfig = { Destination = "192.0.2.0/24"; Gateway = "100.64.0.1"; }; }
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# The router is configured with static IPv4 addresses towards the server
|
||||
# and IPv6 addresses towards the client. For NAT64, the Well-Known prefix
|
||||
# 64:ff9b::/96 is used. NAT64 is done with TAYGA which provides the
|
||||
# tun-interface nat64 and does the translation over it. The IPv6 packets
|
||||
# are sent to this interfaces and received as IPv4 packets and vice versa.
|
||||
# As TAYGA only translates IPv6 addresses to dedicated IPv4 addresses, it
|
||||
# needs a pool of IPv4 addresses which must be at least as big as the
|
||||
# expected amount of clients. In this test, the packets from the pool are
|
||||
# directly routed towards the client. In normal cases, there would be a
|
||||
# second source NAT44 to map all clients behind one IPv4 address.
|
||||
router = {
|
||||
boot.kernel.sysctl = {
|
||||
"net.ipv4.ip_forward" = 1;
|
||||
"net.ipv6.conf.all.forwarding" = 1;
|
||||
};
|
||||
|
||||
virtualisation.vlans = [
|
||||
2 # towards server
|
||||
3 # towards client
|
||||
];
|
||||
|
||||
networking = {
|
||||
useDHCP = false;
|
||||
useNetworkd = true;
|
||||
firewall.enable = false;
|
||||
interfaces.eth1 = lib.mkForce {
|
||||
ipv4 = {
|
||||
addresses = [ { address = "100.64.0.1"; prefixLength = 24; } ];
|
||||
};
|
||||
};
|
||||
interfaces.eth2 = lib.mkForce {
|
||||
ipv6 = {
|
||||
addresses = [ { address = "2001:db8::1"; prefixLength = 64; } ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.tayga = {
|
||||
enable = true;
|
||||
ipv4 = {
|
||||
address = "192.0.2.0";
|
||||
router = {
|
||||
address = "192.0.2.1";
|
||||
};
|
||||
pool = {
|
||||
address = "192.0.2.0";
|
||||
prefixLength = 24;
|
||||
};
|
||||
};
|
||||
ipv6 = {
|
||||
address = "2001:db8::1";
|
||||
router = {
|
||||
address = "64:ff9b::1";
|
||||
};
|
||||
pool = {
|
||||
address = "64:ff9b::";
|
||||
prefixLength = 96;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# The client is configured with static IPv6 addresses. It has also a static
|
||||
# default route towards the router. To reach the IPv4-only server, the
|
||||
# client starts the clat daemon which starts and configures the local
|
||||
# IPv4 -> IPv6 translation via Tayga.
|
||||
client = {
|
||||
virtualisation.vlans = [
|
||||
3 # towards router
|
||||
];
|
||||
|
||||
networking = {
|
||||
useDHCP = false;
|
||||
interfaces.eth1 = lib.mkForce {};
|
||||
};
|
||||
|
||||
systemd.network = {
|
||||
enable = true;
|
||||
networks."vlan1" = {
|
||||
matchConfig.Name = "eth1";
|
||||
address = [
|
||||
"2001:db8::2/64"
|
||||
];
|
||||
routes = [
|
||||
{ routeConfig = { Destination = "::/0"; Gateway = "2001:db8::1"; }; }
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
services.clatd = {
|
||||
enable = true;
|
||||
settings.plat-prefix = "64:ff9b::/96";
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.mtr ];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
# wait for all machines to start up
|
||||
for machine in client, router, server:
|
||||
machine.wait_for_unit("network-online.target")
|
||||
|
||||
with subtest("Wait for tayga and clatd"):
|
||||
router.wait_for_unit("tayga.service")
|
||||
client.wait_for_unit("clatd.service")
|
||||
# clatd checks if this system has IPv4 connectivity for 10 seconds
|
||||
client.wait_until_succeeds(
|
||||
'journalctl -u clatd -e | grep -q "Starting up TAYGA, using config file"'
|
||||
)
|
||||
|
||||
with subtest("Test ICMP"):
|
||||
client.wait_until_succeeds("ping -c 3 100.64.0.2 >&2")
|
||||
|
||||
with subtest("Test ICMP and show a traceroute"):
|
||||
client.wait_until_succeeds("mtr --show-ips --report-wide 100.64.0.2 >&2")
|
||||
|
||||
client.log(client.execute("systemd-analyze security clatd.service")[1])
|
||||
'';
|
||||
})
|
||||
@@ -0,0 +1,25 @@
|
||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
|
||||
name = "jotta-cli";
|
||||
meta.maintainers = with pkgs.lib.maintainers; [ evenbrenden ];
|
||||
|
||||
nodes.machine = { pkgs, ... }: {
|
||||
user.services.jotta-cli.enable = true;
|
||||
imports = [ ./common/user-account.nix ];
|
||||
};
|
||||
|
||||
testScript = { nodes, ... }:
|
||||
let uid = toString nodes.machine.users.users.alice.uid;
|
||||
in ''
|
||||
machine.start()
|
||||
|
||||
machine.succeed("loginctl enable-linger alice")
|
||||
machine.wait_for_unit("user@${uid}.service")
|
||||
|
||||
machine.wait_for_unit("jottad.service", "alice")
|
||||
machine.wait_for_open_unix_socket("/run/user/${uid}/jottad/jottad.socket")
|
||||
|
||||
# "jotta-cli version" should fail if jotta-cli cannot connect to jottad
|
||||
machine.succeed('XDG_RUNTIME_DIR=/run/user/${uid} su alice -c "jotta-cli version"')
|
||||
'';
|
||||
})
|
||||
+8
-11
@@ -76,14 +76,17 @@ import ./make-test-python.nix ({ pkgs, ... }:
|
||||
with subtest("Test LDAP interface"):
|
||||
server.succeed("ldapsearch -H ldaps://${serverDomain}:636 -b '${ldapBaseDN}' -x '(name=test)'")
|
||||
|
||||
with subtest("Test CLI login"):
|
||||
client.succeed("kanidm login -D anonymous")
|
||||
client.succeed("kanidm self whoami | grep anonymous@${serverDomain}")
|
||||
client.succeed("kanidm logout")
|
||||
|
||||
with subtest("Recover idm_admin account"):
|
||||
idm_admin_password = server.succeed("su - kanidm -c 'kanidmd recover-account -c ${serverConfigFile} idm_admin 2>&1 | rg -o \'[A-Za-z0-9]{48}\' '").strip().removeprefix("'").removesuffix("'")
|
||||
|
||||
with subtest("Test CLI login"):
|
||||
client.wait_until_tty_matches("1", "login: ")
|
||||
client.send_chars("root\n")
|
||||
client.send_chars("kanidm login -D idm_admin\n")
|
||||
client.wait_until_tty_matches("1", "Enter password: ")
|
||||
client.send_chars(f"{idm_admin_password}\n")
|
||||
client.wait_until_tty_matches("1", "Login Success for idm_admin")
|
||||
|
||||
with subtest("Test unixd connection"):
|
||||
client.wait_for_unit("kanidm-unixd.service")
|
||||
client.wait_for_file("/run/kanidm-unixd/sock")
|
||||
@@ -92,12 +95,6 @@ import ./make-test-python.nix ({ pkgs, ... }:
|
||||
with subtest("Test user creation"):
|
||||
client.wait_for_unit("getty@tty1.service")
|
||||
client.wait_until_succeeds("pgrep -f 'agetty.*tty1'")
|
||||
client.wait_until_tty_matches("1", "login: ")
|
||||
client.send_chars("root\n")
|
||||
client.send_chars("kanidm login -D idm_admin\n")
|
||||
client.wait_until_tty_matches("1", "Enter password: ")
|
||||
client.send_chars(f"{idm_admin_password}\n")
|
||||
client.wait_until_tty_matches("1", "Login Success for idm_admin")
|
||||
client.succeed("kanidm person create testuser TestUser")
|
||||
client.succeed("kanidm person posix set --shell \"$SHELL\" testuser")
|
||||
client.send_chars("kanidm person posix set-password testuser\n")
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
Shows build and link errors in configure for ease of debugging which
|
||||
options require what.
|
||||
diff --git a/scripts/checks.sh b/scripts/checks.sh
|
||||
index 64cbbf3..fab4d9b 100644
|
||||
--- a/scripts/checks.sh
|
||||
+++ b/scripts/checks.sh
|
||||
@@ -425,7 +425,7 @@ try_compile()
|
||||
echo "$1" > $__src || exit 1
|
||||
shift
|
||||
__cmd="$CC -c $CFLAGS $@ $__src -o $__obj"
|
||||
- $CC -c $CFLAGS "$@" $__src -o $__obj 2>/dev/null
|
||||
+ $CC -c $CFLAGS "$@" $__src -o $__obj
|
||||
;;
|
||||
cxx)
|
||||
__src=`tmp_file prog.cc`
|
||||
@@ -433,7 +433,7 @@ try_compile()
|
||||
echo "$1" > $__src || exit 1
|
||||
shift
|
||||
__cmd="$CXX -c $CXXFLAGS $@ $__src -o $__obj"
|
||||
- $CXX -c $CXXFLAGS "$@" $__src -o $__obj 2>/dev/null
|
||||
+ $CXX -c $CXXFLAGS "$@" $__src -o $__obj
|
||||
;;
|
||||
esac
|
||||
return $?
|
||||
@@ -451,7 +451,7 @@ try_compile_link()
|
||||
echo "$1" > $__src || exit 1
|
||||
shift
|
||||
__cmd="$CC $__src -o $__exe $CFLAGS $LDFLAGS $@"
|
||||
- $CC $__src -o $__exe $CFLAGS $LDFLAGS "$@" 2>/dev/null
|
||||
+ $CC $__src -o $__exe $CFLAGS $LDFLAGS "$@"
|
||||
;;
|
||||
cxx)
|
||||
__src=`tmp_file prog.cc`
|
||||
@@ -459,7 +459,7 @@ try_compile_link()
|
||||
echo "$1" > $__src || exit 1
|
||||
shift
|
||||
__cmd="$CXX $__src -o $__exe $CXXFLAGS $CXXLDFLAGS $@"
|
||||
- $CXX $__src -o $__exe $CXXFLAGS $CXXLDFLAGS "$@" 2>/dev/null
|
||||
+ $CXX $__src -o $__exe $CXXFLAGS $CXXLDFLAGS "$@"
|
||||
;;
|
||||
esac
|
||||
return $?
|
||||
@@ -13,14 +13,14 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "qpwgraph";
|
||||
version = "0.6.3";
|
||||
version = "0.7.1";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.freedesktop.org";
|
||||
owner = "rncbc";
|
||||
repo = "qpwgraph";
|
||||
rev = "v${finalAttrs.version}";
|
||||
sha256 = "sha256-mTWmXHC9KkXgUIO5CIcGOoYYLx+5si/LETSmHFhmrRE=";
|
||||
sha256 = "sha256-mtW+dbjdp7as0N5+iacMSNrJ4jm8HWYqJP6G+lutucc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ];
|
||||
|
||||
@@ -250,6 +250,7 @@ stdenv.mkDerivation rec {
|
||||
# no-derivatives clause
|
||||
license = with licenses; [ gpl3Plus cc-by-nc-40 unfreeRedistributable ];
|
||||
maintainers = with maintainers; [ nathyong jpotier ddelabru ];
|
||||
mainProgram = "Rack";
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "youtube-music";
|
||||
version = "3.3.5";
|
||||
version = "3.3.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "th-ch";
|
||||
repo = "youtube-music";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-JOmcfe7xrKRaxJwj2No3e99HBYbX+ROTjHl5Frc2P9Q=";
|
||||
hash = "sha256-nxpctEG4XoxW6jOAxGdgTEYr6YnhFRR8+5HUQLxRJB0=";
|
||||
};
|
||||
|
||||
pnpmDeps = stdenvNoCC.mkDerivation {
|
||||
@@ -47,10 +47,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
dontFixup = true;
|
||||
outputHashMode = "recursive";
|
||||
outputHash = {
|
||||
x86_64-linux = "sha256-K2yJdoi+bJpz0Xf2MHlFzQXbP+H3uVE2hYfkzoB7vBE=";
|
||||
aarch64-linux = "sha256-ZiA6XKPnkoAl9m2vEJth2wyDxj61Efye4cUk+76znnM=";
|
||||
x86_64-darwin = "sha256-wh5Y47c5qD2PctROP9AWqLDs7H5S2/8X0zxkSMkr1xQ=";
|
||||
aarch64-darwin = "sha256-e2h4bLVnSEtZcHERsfkNmawgxQHQXxgXrNlFKB+IRTw=";
|
||||
x86_64-linux = "sha256-bujlQxP6Lr3qPUDxYXKyb702ZJY/xbuCsu3wVDhcb+8=";
|
||||
aarch64-linux = "sha256-0kyjjttpXpFVhdza5NAjGrRn++qc/N5/u2dQl7VufLE=";
|
||||
x86_64-darwin = "sha256-Q37QJt/mhfpSguOlkJGKFTCrIOrpbG3OBwaD/Bg09Us=";
|
||||
aarch64-darwin = "sha256-wbfjzoGa/6vIlOOVX3bKNQ2uxzph3WSofo3MGXqA6yQ=";
|
||||
}.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
|
||||
};
|
||||
|
||||
|
||||
@@ -25,13 +25,13 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "bitcoin" + lib.optionalString (!withGui) "d" + "-abc";
|
||||
version = "0.29.2";
|
||||
version = "0.29.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bitcoin-ABC";
|
||||
repo = "bitcoin-abc";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-og9hMQdDXGdUQN+A+z0064E6svF+qPd9CWtDQsdvNYQ=";
|
||||
hash = "sha256-hYA0O7nDT8J1EnpW4i1+eBzkNw77JC6M7GwO3BdBh3U=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config cmake ];
|
||||
|
||||
+1
-2
@@ -16,9 +16,8 @@
|
||||
let
|
||||
inherit (melpaStablePackages) tree-sitter-langs;
|
||||
|
||||
libSuffix = if stdenv.isDarwin then "dylib" else "so";
|
||||
langName = g: lib.removeSuffix "-grammar" (lib.removePrefix "tree-sitter-" g.pname);
|
||||
soName = g: langName g + "." + libSuffix;
|
||||
soName = g: langName g + stdenv.hostPlatform.extensions.sharedLibrary;
|
||||
|
||||
grammarDir = runCommand "emacs-tree-sitter-grammars" {
|
||||
# Fake same version number as upstream language bundle to prevent triggering runtime downloads
|
||||
|
||||
@@ -5590,6 +5590,18 @@ final: prev:
|
||||
meta.homepage = "https://github.com/smjonas/live-command.nvim/";
|
||||
};
|
||||
|
||||
llm-nvim = buildVimPlugin {
|
||||
pname = "llm.nvim";
|
||||
version = "2024-02-22";
|
||||
src = fetchFromGitHub {
|
||||
owner = "huggingface";
|
||||
repo = "llm.nvim";
|
||||
rev = "51b76dac9c33c0122adfe28daf52ceaa31c4aa02";
|
||||
sha256 = "07i1ixbiby4c81lkydwvygz6vxs1xhqnwzcsad3xzcaz7zdl00kx";
|
||||
};
|
||||
meta.homepage = "https://github.com/huggingface/llm.nvim/";
|
||||
};
|
||||
|
||||
lsp-colors-nvim = buildVimPlugin {
|
||||
pname = "lsp-colors.nvim";
|
||||
version = "2023-02-27";
|
||||
|
||||
@@ -468,6 +468,7 @@ https://github.com/ldelossa/litee-filetree.nvim/,,
|
||||
https://github.com/ldelossa/litee-symboltree.nvim/,,
|
||||
https://github.com/ldelossa/litee.nvim/,,
|
||||
https://github.com/smjonas/live-command.nvim/,HEAD,
|
||||
https://github.com/huggingface/llm.nvim/,HEAD,
|
||||
https://github.com/folke/lsp-colors.nvim/,,
|
||||
https://github.com/lukas-reineke/lsp-format.nvim/,HEAD,
|
||||
https://github.com/lvimuser/lsp-inlayhints.nvim/,HEAD,
|
||||
|
||||
@@ -970,7 +970,7 @@ let
|
||||
version = "0.8.25";
|
||||
}
|
||||
// sources.${stdenv.system};
|
||||
nativeBuildInputs = [ autoPatchelfHook ];
|
||||
nativeBuildInputs = lib.optionals stdenv.isLinux [ autoPatchelfHook ];
|
||||
buildInputs = [ stdenv.cc.cc.lib ];
|
||||
meta = {
|
||||
description = "Open-source autopilot for software development - bring the power of ChatGPT to your IDE";
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, callPackage
|
||||
, patchelf
|
||||
, unzip
|
||||
, poco
|
||||
, openssl
|
||||
, SDL2
|
||||
@@ -16,18 +14,18 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "2.8.1";
|
||||
version = "2.8.2";
|
||||
craftos2-lua = fetchFromGitHub {
|
||||
owner = "MCJack123";
|
||||
repo = "craftos2-lua";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-8bl83AOIWtUQ06F2unYEF08VT13o9EGo9YDZpdNxd8w=";
|
||||
hash = "sha256-Kv0supnYKWLaVqOeZAzQNd3tQRP2KJugZqytyoj8QtY=";
|
||||
};
|
||||
craftos2-rom = fetchFromGitHub {
|
||||
owner = "McJack123";
|
||||
repo = "craftos2-rom";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-aCRJ3idSrRM8ydt8hP8nA1RR0etPnWpQKphXcOGgTfk=";
|
||||
hash = "sha256-5ZsLsqrkO02NLJCzsgf0k/ifsqNybTi4DcB9GLmWDHw=";
|
||||
};
|
||||
in
|
||||
|
||||
@@ -39,7 +37,7 @@ stdenv.mkDerivation rec {
|
||||
owner = "MCJack123";
|
||||
repo = "craftos2";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-iQCv4EDdqmnU0fYxMwpCZ2Z5p43P0MGBNIG/dZrWndg=";
|
||||
hash = "sha256-ozebHgUgwdqYtWAyL+EdwpjEvZC+PkWcLYCPWz2FjSw=";
|
||||
};
|
||||
|
||||
buildInputs = [ patchelf poco openssl SDL2 SDL2_mixer ncurses libpng pngpp libwebp ];
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "urlscan";
|
||||
version = "1.0.1";
|
||||
version = "1.0.2";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "firecat53";
|
||||
repo = pname;
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-OzcoOIgEiadWrsUPIxBJTuZQYjScJBYKyqCu1or6fz8=";
|
||||
hash = "sha256-nyq4BrpfbZwK/nOnB8ZEN1wlM8CssYVRvV7ytpX7k40=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = with python3.pkgs; [
|
||||
|
||||
@@ -248,8 +248,8 @@ let
|
||||
# Partial revert of https://github.com/chromium/chromium/commit/3687976b0c6d36cf4157419a24a39f6770098d61
|
||||
# allowing us to use our rustc and our clang.
|
||||
./patches/chromium-121-rust.patch
|
||||
] ++ lib.optionals (chromiumVersionAtLeast "124" && !chromiumVersionAtLeast "125") [
|
||||
# M124 shipped with broken --ozone-platform-hint flag handling, which we rely on
|
||||
] ++ lib.optionals (chromiumVersionAtLeast "124" && !chromiumVersionAtLeast "124.0.6367.118") [
|
||||
# M124 < 124.0.6367.118 shipped with broken --ozone-platform-hint flag handling, which we rely on
|
||||
# for our NIXOS_OZONE_WL (wayland) environment variable.
|
||||
# See <https://issues.chromium.org/issues/329678163>.
|
||||
# This is the commit for the fix that landed in M125, which applies clean on M124.
|
||||
|
||||
@@ -15,9 +15,9 @@
|
||||
version = "2024-03-14";
|
||||
};
|
||||
};
|
||||
hash = "sha256-tajZtdiXgs5lRLTmDmgNTM2vD+N+LuWpBS0dYzxUsMA=";
|
||||
hash_deb_amd64 = "sha256-CyCbZQ5ce8WLTt2JVSqbDkLDboE4BloiZ8pJff3dmSY=";
|
||||
version = "124.0.6367.91";
|
||||
hash = "sha256-+r/48dxipSAo74v1deMuKalW+Hj85hCun63ZcgLYDLk=";
|
||||
hash_deb_amd64 = "sha256-H3bv6WiVBl4j38ROZ80+SD9UO9ok+xxcKFxDd9yjWNY=";
|
||||
version = "124.0.6367.118";
|
||||
};
|
||||
ungoogled-chromium = {
|
||||
deps = {
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
{ callPackage }:
|
||||
|
||||
{
|
||||
helm-cm-push = callPackage ./helm-cm-push.nix { };
|
||||
|
||||
helm-diff = callPackage ./helm-diff.nix { };
|
||||
|
||||
helm-git = callPackage ./helm-git.nix { };
|
||||
|
||||
helm-cm-push = callPackage ./helm-cm-push.nix { };
|
||||
helm-mapkubeapis = callPackage ./helm-mapkubeapis.nix { };
|
||||
|
||||
helm-s3 = callPackage ./helm-s3.nix { };
|
||||
|
||||
helm-secrets = callPackage ./helm-secrets.nix { };
|
||||
|
||||
helm-unittest = callPackage ./helm-unittest.nix { };
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
{ buildGoModule, fetchFromGitHub, lib }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "helm-mapkubeapis";
|
||||
version = "0.4.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "helm";
|
||||
repo = "helm-mapkubeapis";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-6NeePXTdp5vlBLfIlWeXQZMZ0Uz/e1ZCgZmJvBJfaFw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-rVrQqeakPQl3rjzmqzHw74ffreLEVzP153wWJ8TEOIM=";
|
||||
|
||||
# NOTE: Remove the install and upgrade hooks.
|
||||
postPatch = ''
|
||||
sed -i '/^hooks:/,+2 d' plugin.yaml
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
install -dm755 $out/helm-mapkubeapis
|
||||
mv $out/bin $out/helm-mapkubeapis/
|
||||
install -m644 -Dt $out/helm-mapkubeapis/config/ config/Map.yaml
|
||||
install -m644 -Dt $out/helm-mapkubeapis plugin.yaml
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "A Helm plugin which maps deprecated or removed Kubernetes APIs in a release to supported APIs";
|
||||
homepage = "https://github.com/helm/helm-mapkubeapis";
|
||||
license = with lib.licenses; [ asl20 ];
|
||||
maintainers = with lib.maintainers; [ aos ];
|
||||
};
|
||||
}
|
||||
@@ -14,22 +14,22 @@
|
||||
let
|
||||
package = buildGoModule rec {
|
||||
pname = "opentofu";
|
||||
version = "1.6.2";
|
||||
version = "1.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "opentofu";
|
||||
repo = "opentofu";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-CYiwn2NDIAx30J8tmbrV45dbCIGoA3U+yBdMj4RX5Ho=";
|
||||
hash = "sha256-e0u8aFua3oMsBafwRPYuWQ9M6DtC7f9LlCDGJ5vdAWE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-kSm5RZqQRgbmPaKt5IWmuMhHwAu+oJKTX1q1lbE7hWk=";
|
||||
vendorHash = "sha256-cML742FfWFNIwGyIdRd3JWcfDlOXnJVgUXz4j5fa74Q=";
|
||||
ldflags = [ "-s" "-w" "-X" "github.com/opentofu/opentofu/version.dev=no" ];
|
||||
|
||||
postConfigure = ''
|
||||
# speakeasy hardcodes /bin/stty https://github.com/bgentry/speakeasy/issues/22
|
||||
substituteInPlace vendor/github.com/bgentry/speakeasy/speakeasy_unix.go \
|
||||
--replace "/bin/stty" "${coreutils}/bin/stty"
|
||||
--replace-fail "/bin/stty" "${coreutils}/bin/stty"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "stern";
|
||||
version = "1.28.0";
|
||||
version = "1.29.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "stern";
|
||||
repo = "stern";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-Lx5f2dqjdhgMXky1Pv2ik9i56ugsQmZK/ag4veC9Dac=";
|
||||
sha256 = "sha256-8Tvhul7GwVbRJqJenbYID8OY5zGzFhIormUwEtLE0Lw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-6jI/I7Nw/vJwKNvgH/35uHYu51SBX+WFH5s0WKfCqBo=";
|
||||
vendorHash = "sha256-RLcF7KfKtkwB+nWzaQb8Va9pau+TS2uE9AmJ0aFNsik=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "2023.09.06";
|
||||
version = "2024.04.17";
|
||||
dropboxd = "${dropbox}/bin/dropbox";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
@@ -23,7 +23,7 @@ stdenv.mkDerivation {
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://linux.dropbox.com/packages/nautilus-dropbox-${version}.tar.bz2";
|
||||
hash = "sha256-kZMwj8Fn8Hf58C57wE025TlmiSs5TaKMGEzvb2QjgSw=";
|
||||
hash = "sha256-pqCYzxaqR0f0CBaseT1Z436K47cIDQswYR1sK4Zj8sE=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
@@ -1,40 +1,27 @@
|
||||
{ stdenv, lib, fetchurl, dpkg, makeWrapper, electron }:
|
||||
{ lib
|
||||
, appimageTools
|
||||
, fetchurl }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
appimageTools.wrapType2 rec {
|
||||
pname = "clockify";
|
||||
version = "2.1.6";
|
||||
version = "2.1.17.1354";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://web.archive.org/web/20231110130133/https://clockify.me/downloads/Clockify_Setup_x64.deb";
|
||||
hash = "sha256-jndoMk3vqk8a5jMzKVo6ThovSISmcu+hef9IJcg3reQ=";
|
||||
url = "https://web.archive.org/web/20240406052908/https://clockify.me/downloads/Clockify_Setup.AppImage";
|
||||
hash = "sha256-G5VOAf6PrjHUsnk7IlXdqJ2D941cnggjuHkkgrOaVaA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
dpkg
|
||||
makeWrapper
|
||||
];
|
||||
extraInstallCommands =
|
||||
let appimageContents = appimageTools.extract { inherit pname version src; };
|
||||
in ''
|
||||
mv $out/bin/${pname}-${version} $out/bin/${pname}
|
||||
|
||||
dontBuild = true;
|
||||
dontConfigure = true;
|
||||
install -Dm 444 ${appimageContents}/clockify.desktop -t $out/share/applications
|
||||
install -Dm 444 ${appimageContents}/clockify.png -t $out/share/pixmaps
|
||||
|
||||
unpackPhase = ''
|
||||
dpkg-deb -x ${src} ./
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mv usr $out
|
||||
mv opt $out
|
||||
|
||||
substituteInPlace $out/share/applications/clockify.desktop \
|
||||
--replace "/opt/Clockify/" ""
|
||||
|
||||
makeWrapper ${electron}/bin/electron $out/bin/clockify \
|
||||
--add-flags $out/opt/Clockify/resources/app.asar
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
substituteInPlace $out/share/applications/clockify.desktop \
|
||||
--replace 'Exec=AppRun' 'Exec=${pname}'
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Free time tracker and timesheet app that lets you track work hours across projects";
|
||||
|
||||
@@ -58,6 +58,10 @@ let
|
||||
# may wish to wrap GR without python support.
|
||||
pythonPkgs = extraPythonPackages
|
||||
++ [ (unwrapped.python.pkgs.toPythonModule unwrapped) ]
|
||||
++ unwrapped.passthru.uhd.pythonPath
|
||||
++ lib.optionals (unwrapped.passthru.uhd.pythonPath != []) [
|
||||
(unwrapped.python.pkgs.toPythonModule unwrapped.passthru.uhd)
|
||||
]
|
||||
# Add the extraPackages as python modules as well
|
||||
++ (builtins.map unwrapped.python.pkgs.toPythonModule extraPackages)
|
||||
++ lib.flatten (lib.mapAttrsToList (
|
||||
|
||||
@@ -8,15 +8,8 @@
|
||||
, boost
|
||||
, ncurses
|
||||
, enableCApi ? true
|
||||
# Although we handle the Python API's dependencies in pythonEnvArg, this
|
||||
# feature is currently disabled as upstream attempts to run `python setup.py
|
||||
# install` by itself, and it fails because the Python's environment's prefix is
|
||||
# not a writable directly. Adding support for this feature would require using
|
||||
# python's pypa/build nad pypa/install hooks directly, and currently it is hard
|
||||
# to do that because it all happens after a long buildPhase of the C API.
|
||||
, enablePythonApi ? false
|
||||
, enablePythonApi ? true
|
||||
, python3
|
||||
, buildPackages
|
||||
, enableExamples ? false
|
||||
, enableUtils ? true
|
||||
, libusb1
|
||||
@@ -38,13 +31,7 @@
|
||||
}:
|
||||
|
||||
let
|
||||
onOffBool = b: if b then "ON" else "OFF";
|
||||
inherit (lib) optionals;
|
||||
# Later used in pythonEnv generation. Python + mako are always required for the build itself but not necessary for runtime.
|
||||
pythonEnvArg = (ps: with ps; [ mako ]
|
||||
++ optionals (enablePythonApi) [ numpy setuptools ]
|
||||
++ optionals (enableUtils) [ requests six ]
|
||||
);
|
||||
inherit (lib) optionals cmakeBool;
|
||||
in
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -72,7 +59,30 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
# hash.
|
||||
sha256 = "17g503mhndaabrdl7qai3rdbafr8xx8awsyr7h2bdzwzprzmh4m3";
|
||||
};
|
||||
# This are the minimum required Python dependencies, this attribute might
|
||||
# be useful if you want to build a development environment with a python
|
||||
# interpreter able to import the uhd module.
|
||||
pythonPath = optionals (enablePythonApi || enableUtils) [
|
||||
python3.pkgs.numpy
|
||||
python3.pkgs.setuptools
|
||||
] ++ optionals (enableUtils) [
|
||||
python3.pkgs.requests
|
||||
python3.pkgs.six
|
||||
|
||||
/* These deps are needed for the usrp_hwd.py utility, however even if they
|
||||
would have been added here, the utility wouldn't have worked because it
|
||||
depends on an old python library mprpc that is not supported for Python >
|
||||
3.8. See also report upstream:
|
||||
https://github.com/EttusResearch/uhd/issues/744
|
||||
|
||||
python3.pkgs.gevent
|
||||
python3.pkgs.pyudev
|
||||
python3.pkgs.pyroute2
|
||||
|
||||
*/
|
||||
];
|
||||
passthru = {
|
||||
runtimePython = python3.withPackages (ps: finalAttrs.pythonPath);
|
||||
updateScript = [
|
||||
./update.sh
|
||||
# Pass it this file name as argument
|
||||
@@ -83,66 +93,91 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
cmakeFlags = [
|
||||
"-DENABLE_LIBUHD=ON"
|
||||
"-DENABLE_USB=ON"
|
||||
"-DENABLE_TESTS=ON" # This installs tests as well so we delete them via postPhases
|
||||
"-DENABLE_EXAMPLES=${onOffBool enableExamples}"
|
||||
"-DENABLE_UTILS=${onOffBool enableUtils}"
|
||||
"-DENABLE_C_API=${onOffBool enableCApi}"
|
||||
"-DENABLE_PYTHON_API=${onOffBool enablePythonApi}"
|
||||
"-DENABLE_DPDK=${onOffBool enableDpdk}"
|
||||
# Regardless of doCheck, we want to build the tests to help us gain
|
||||
# confident that the package is OK.
|
||||
"-DENABLE_TESTS=ON"
|
||||
(cmakeBool "ENABLE_EXAMPLES" enableExamples)
|
||||
(cmakeBool "ENABLE_UTILS" enableUtils)
|
||||
(cmakeBool "ENABLE_C_API" enableCApi)
|
||||
(cmakeBool "ENABLE_PYTHON_API" enablePythonApi)
|
||||
/*
|
||||
|
||||
Otherwise python tests fail. Using a dedicated pythonEnv for either or both
|
||||
nativeBuildInputs and buildInputs makes upstream's cmake scripts fail to
|
||||
install the Python API as reported on our end at [1] (we don't want
|
||||
upstream to think we are in a virtual environment because we use
|
||||
python3.withPackages...).
|
||||
|
||||
Putting simply the python dependencies in the nativeBuildInputs and
|
||||
buildInputs as they are now from some reason makes the `python` in the
|
||||
checkPhase fail to find the python dependencies, as reported at [2]. Even
|
||||
using nativeCheckInputs with the python dependencies, or using a
|
||||
`python3.withPackages` wrapper in nativeCheckInputs, doesn't help, as the
|
||||
`python` found in $PATH first is the one from nativeBuildInputs.
|
||||
|
||||
[1]: https://github.com/NixOS/nixpkgs/pull/307435
|
||||
[2]: https://discourse.nixos.org/t/missing-python-package-in-checkphase/9168/
|
||||
|
||||
Hence we use upstream's provided cmake flag to control which python
|
||||
interpreter they will use to run the the python tests.
|
||||
|
||||
*/
|
||||
"-DRUNTIME_PYTHON_EXECUTABLE=${lib.getExe finalAttrs.passthru.runtimePython}"
|
||||
(cmakeBool "ENABLE_DPDK" enableDpdk)
|
||||
# Devices
|
||||
"-DENABLE_OCTOCLOCK=${onOffBool enableOctoClock}"
|
||||
"-DENABLE_MPMD=${onOffBool enableMpmd}"
|
||||
"-DENABLE_B100=${onOffBool enableB100}"
|
||||
"-DENABLE_B200=${onOffBool enableB200}"
|
||||
"-DENABLE_USRP1=${onOffBool enableUsrp1}"
|
||||
"-DENABLE_USRP2=${onOffBool enableUsrp2}"
|
||||
"-DENABLE_X300=${onOffBool enableX300}"
|
||||
"-DENABLE_N300=${onOffBool enableN300}"
|
||||
"-DENABLE_N320=${onOffBool enableN320}"
|
||||
"-DENABLE_E300=${onOffBool enableE300}"
|
||||
"-DENABLE_E320=${onOffBool enableE320}"
|
||||
]
|
||||
(cmakeBool "ENABLE_OCTOCLOCK" enableOctoClock)
|
||||
(cmakeBool "ENABLE_MPMD" enableMpmd)
|
||||
(cmakeBool "ENABLE_B100" enableB100)
|
||||
(cmakeBool "ENABLE_B200" enableB200)
|
||||
(cmakeBool "ENABLE_USRP1" enableUsrp1)
|
||||
(cmakeBool "ENABLE_USRP2" enableUsrp2)
|
||||
(cmakeBool "ENABLE_X300" enableX300)
|
||||
(cmakeBool "ENABLE_N300" enableN300)
|
||||
(cmakeBool "ENABLE_N320" enableN320)
|
||||
(cmakeBool "ENABLE_E300" enableE300)
|
||||
(cmakeBool "ENABLE_E320" enableE320)
|
||||
# TODO: Check if this still needed
|
||||
# ABI differences GCC 7.1
|
||||
# /nix/store/wd6r25miqbk9ia53pp669gn4wrg9n9cj-gcc-7.3.0/include/c++/7.3.0/bits/vector.tcc:394:7: note: parameter passing for argument of type 'std::vector<uhd::range_t>::iterator {aka __gnu_cxx::__normal_iterator<uhd::range_t*, std::vector<uhd::range_t> >}' changed in GCC 7.1
|
||||
++ [ (lib.optionalString stdenv.isAarch32 "-DCMAKE_CXX_FLAGS=-Wno-psabi") ]
|
||||
;
|
||||
|
||||
pythonEnv = python3.withPackages pythonEnvArg;
|
||||
] ++ optionals stdenv.isAarch32 [
|
||||
"-DCMAKE_CXX_FLAGS=-Wno-psabi"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
# Present both here and in buildInputs for cross compilation.
|
||||
(buildPackages.python3.withPackages pythonEnvArg)
|
||||
python3
|
||||
python3.pkgs.mako
|
||||
# We add this unconditionally, but actually run wrapPythonPrograms only if
|
||||
# python utilities are enabled
|
||||
python3.pkgs.wrapPython
|
||||
];
|
||||
buildInputs = [
|
||||
buildInputs = finalAttrs.pythonPath ++ [
|
||||
boost
|
||||
libusb1
|
||||
]
|
||||
# However, if enableLibuhd_Python_api *or* enableUtils is on, we need
|
||||
# pythonEnv for runtime as well. The utilities' runtime dependencies are
|
||||
# handled at the environment
|
||||
++ optionals (enableExamples) [ ncurses ncurses.dev ]
|
||||
++ optionals (enablePythonApi || enableUtils) [ finalAttrs.pythonEnv ]
|
||||
++ optionals (enableDpdk) [ dpdk ]
|
||||
;
|
||||
] ++ optionals (enableExamples) [
|
||||
ncurses ncurses.dev
|
||||
] ++ optionals (enableDpdk) [
|
||||
dpdk
|
||||
];
|
||||
|
||||
# many tests fails on darwin, according to ofborg
|
||||
doCheck = !stdenv.isDarwin;
|
||||
|
||||
# Build only the host software
|
||||
preConfigure = "cd host";
|
||||
# TODO: Check if this still needed, perhaps relevant:
|
||||
# https://files.ettus.com/manual_archive/v3.15.0.0/html/page_build_guide.html#build_instructions_unix_arm
|
||||
patches = [
|
||||
# Disable tests that fail in the sandbox
|
||||
# Disable tests that fail in the sandbox, last checked at version 4.6.0.0
|
||||
./no-adapter-tests.patch
|
||||
];
|
||||
|
||||
postPhases = [ "installFirmware" "removeInstalledTests" ]
|
||||
++ optionals (enableUtils && stdenv.hostPlatform.isLinux) [ "moveUdevRules" ]
|
||||
;
|
||||
postPhases = [
|
||||
"installFirmware"
|
||||
"removeInstalledTests"
|
||||
] ++ optionals (enableUtils && stdenv.hostPlatform.isLinux) [
|
||||
"moveUdevRules"
|
||||
];
|
||||
|
||||
# UHD expects images in `$CMAKE_INSTALL_PREFIX/share/uhd/images`
|
||||
installFirmware = ''
|
||||
@@ -162,6 +197,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
mv $out/lib/uhd/utils/uhd-usrp.rules $out/lib/udev/rules.d/
|
||||
'';
|
||||
|
||||
# Wrap the python utilities with our pythonPath definition
|
||||
postFixup = lib.optionalString (enablePythonApi && enableUtils) ''
|
||||
wrapPythonPrograms
|
||||
'';
|
||||
disallowedReferences = optionals (!enablePythonApi && !enableUtils) [
|
||||
python3
|
||||
];
|
||||
|
||||
@@ -3,17 +3,18 @@
|
||||
}:
|
||||
|
||||
let
|
||||
pname = "digital";
|
||||
pkgDescription = "A digital logic designer and circuit simulator.";
|
||||
version = "0.30";
|
||||
buildDate = "2023-02-03T08:00:56+01:00"; # v0.30 commit date
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
type = "Application";
|
||||
name = "Digital";
|
||||
desktopName = pkgDescription;
|
||||
name = pname;
|
||||
desktopName = "Digital";
|
||||
comment = "Easy-to-use digital logic designer and circuit simulator";
|
||||
exec = "digital";
|
||||
icon = "digital";
|
||||
exec = pname;
|
||||
icon = pname;
|
||||
categories = [ "Education" "Electronics" ];
|
||||
mimeTypes = [ "text/x-digital" ];
|
||||
terminal = false;
|
||||
@@ -28,8 +29,7 @@ let
|
||||
mvnParameters = "-Pno-git-rev -Dgit.commit.id.describe=${version} -Dproject.build.outputTimestamp=${buildDate} -DbuildTimestamp=${buildDate}";
|
||||
in
|
||||
maven.buildMavenPackage rec {
|
||||
pname = "digital";
|
||||
inherit version jre;
|
||||
inherit pname version jre;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hneemann";
|
||||
@@ -44,6 +44,8 @@ maven.buildMavenPackage rec {
|
||||
nativeBuildInputs = [ copyDesktopItems makeWrapper ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin
|
||||
mkdir -p $out/share/java
|
||||
|
||||
@@ -53,6 +55,13 @@ maven.buildMavenPackage rec {
|
||||
makeWrapper ${jre}/bin/java $out/bin/${pname} \
|
||||
--add-flags "-classpath $out/share/java/${pname}-${version}.jar:''${classpath#:}" \
|
||||
--add-flags "-jar $out/share/java/Digital.jar"
|
||||
|
||||
install -Dm644 src/main/svg/icon.svg $out/share/icons/hicolor/scalable/apps/${pname}.svg
|
||||
for size in 16 32 48 64 128; do
|
||||
install -Dm644 src/main/resources/icons/icon"$size".png $out/share/icons/hicolor/"$size"x"$size"/apps/${pname}.png
|
||||
done
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
desktopItems = [ desktopItem ];
|
||||
|
||||
@@ -16,11 +16,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gtkwave";
|
||||
version = "3.3.118";
|
||||
version = "3.3.119";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/gtkwave/${pname}-gtk3-${version}.tar.gz";
|
||||
sha256 = "sha256-D0MwwCiiqz0vTUzur222kl2wEMS2/VLRECLQ5d6gSGo=";
|
||||
sha256 = "sha256-6rPgnnZBEVwHhIv7MPfdDDu+K4y+RQF+leB327pqwDg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config wrapGAppsHook ];
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
diff --git a/src/sage/libs/linbox/conversion.pxd b/src/sage/libs/linbox/conversion.pxd
|
||||
index 7794c9edc3..1753277b1f 100644
|
||||
--- a/src/sage/libs/linbox/conversion.pxd
|
||||
+++ b/src/sage/libs/linbox/conversion.pxd
|
||||
@@ -177,9 +177,8 @@ cdef inline Vector_integer_dense new_sage_vector_integer_dense(P, DenseVector_in
|
||||
- v -- linbox vector
|
||||
"""
|
||||
cdef Vector_integer_dense res = P()
|
||||
- cdef cppvector[Integer] * vec = &v.refRep()
|
||||
cdef size_t i
|
||||
for i in range(<size_t> res._degree):
|
||||
- mpz_set(res._entries[i], vec[0][i].get_mpz_const())
|
||||
+ mpz_set(res._entries[i], v.getEntry(i).get_mpz_const())
|
||||
|
||||
return res
|
||||
diff --git a/src/sage/libs/linbox/linbox.pxd b/src/sage/libs/linbox/linbox.pxd
|
||||
index 9112d151f8..dcc482960c 100644
|
||||
--- a/src/sage/libs/linbox/linbox.pxd
|
||||
+++ b/src/sage/libs/linbox/linbox.pxd
|
||||
@@ -32,7 +32,7 @@ cdef extern from "linbox/matrix/dense-matrix.h":
|
||||
ctypedef Modular_double Field
|
||||
ctypedef double Element
|
||||
DenseMatrix_Modular_double(Field F, size_t m, size_t n)
|
||||
- DenseMatrix_Modular_double(Field F, Element*, size_t m, size_t n)
|
||||
+ DenseMatrix_Modular_double(Field F, size_t m, size_t n, Element*)
|
||||
void setEntry(size_t i, size_t j, Element& a)
|
||||
Element &getEntry(size_t i, size_t j)
|
||||
|
||||
@@ -42,7 +42,7 @@ cdef extern from "linbox/matrix/dense-matrix.h":
|
||||
ctypedef Modular_float Field
|
||||
ctypedef float Element
|
||||
DenseMatrix_Modular_float(Field F, size_t m, size_t n)
|
||||
- DenseMatrix_Modular_float(Field F, Element*, size_t m, size_t n)
|
||||
+ DenseMatrix_Modular_float(Field F, size_t m, size_t n, Element*)
|
||||
void setEntry(size_t i, size_t j, Element& a)
|
||||
Element &getEntry(size_t i, size_t j)
|
||||
|
||||
@@ -101,7 +101,6 @@ cdef extern from "linbox/vector/vector.h":
|
||||
DenseVector_integer (Field &F)
|
||||
DenseVector_integer (Field &F, long& m)
|
||||
DenseVector_integer (Field &F, cppvector[Integer]&)
|
||||
- cppvector[Element]& refRep()
|
||||
size_t size()
|
||||
void resize(size_t)
|
||||
void resize(size_t n, const Element&)
|
||||
diff --git a/src/sage/matrix/matrix_modn_dense_template.pxi b/src/sage/matrix/matrix_modn_dense_template.pxi
|
||||
index 010365d76f..3d60726ff9 100644
|
||||
--- a/src/sage/matrix/matrix_modn_dense_template.pxi
|
||||
+++ b/src/sage/matrix/matrix_modn_dense_template.pxi
|
||||
@@ -219,7 +219,7 @@ cdef inline linbox_echelonize_efd(celement modulus, celement* entries, Py_ssize_
|
||||
return 0,[]
|
||||
|
||||
cdef ModField *F = new ModField(<long>modulus)
|
||||
- cdef DenseMatrix *A = new DenseMatrix(F[0], <ModField.Element*>entries,<Py_ssize_t>nrows, <Py_ssize_t>ncols)
|
||||
+ cdef DenseMatrix *A = new DenseMatrix(F[0], <Py_ssize_t>nrows, <Py_ssize_t>ncols, <ModField.Element*>entries)
|
||||
cdef Py_ssize_t r = reducedRowEchelonize(A[0])
|
||||
cdef Py_ssize_t i,j
|
||||
for i in range(nrows):
|
||||
@@ -1,75 +0,0 @@
|
||||
diff --unified --recursive a/src/gui/TopologyTools.cc b/src/gui/TopologyTools.cc
|
||||
--- a/src/gui/TopologyTools.cc 2021-07-05 05:11:47.000000000 +0200
|
||||
+++ b/src/gui/TopologyTools.cc 2022-12-07 22:35:20.444054124 +0100
|
||||
@@ -3448,7 +3448,7 @@
|
||||
std::find_if(
|
||||
d_visible_boundary_section_seq.begin(),
|
||||
d_visible_boundary_section_seq.end(),
|
||||
- boost::bind(&VisibleSection::d_section_info_index, _1) ==
|
||||
+ boost::bind(&VisibleSection::d_section_info_index, boost::placeholders::_1) ==
|
||||
boost::cref(section_index));
|
||||
|
||||
if (visible_section_iter == d_visible_boundary_section_seq.end())
|
||||
@@ -3467,7 +3467,7 @@
|
||||
std::find_if(
|
||||
d_visible_interior_section_seq.begin(),
|
||||
d_visible_interior_section_seq.end(),
|
||||
- boost::bind(&VisibleSection::d_section_info_index, _1) ==
|
||||
+ boost::bind(&VisibleSection::d_section_info_index, boost::placeholders::_1) ==
|
||||
boost::cref(section_index));
|
||||
|
||||
if (visible_section_iter == d_visible_interior_section_seq.end())
|
||||
diff --unified --recursive a/src/presentation/ReconstructionGeometryRenderer.cc b/src/presentation/ReconstructionGeometryRenderer.cc
|
||||
--- a/src/presentation/ReconstructionGeometryRenderer.cc 2021-07-05 05:11:50.000000000 +0200
|
||||
+++ b/src/presentation/ReconstructionGeometryRenderer.cc 2022-12-07 22:36:11.117884262 +0100
|
||||
@@ -274,7 +274,7 @@
|
||||
GPlatesPresentation::ReconstructionGeometryRenderer::RenderParamsPopulator::visit_reconstruct_visual_layer_params(
|
||||
const ReconstructVisualLayerParams ¶ms)
|
||||
{
|
||||
- d_render_params.show_vgp = boost::bind(&ReconstructVisualLayerParams::show_vgp, ¶ms, _1, _2);
|
||||
+ d_render_params.show_vgp = boost::bind(&ReconstructVisualLayerParams::show_vgp, ¶ms, boost::placeholders::_1, boost::placeholders::_2);
|
||||
d_render_params.vgp_draw_circular_error = params.get_vgp_draw_circular_error();
|
||||
d_render_params.fill_polygons = params.get_fill_polygons();
|
||||
d_render_params.fill_polylines = params.get_fill_polylines();
|
||||
diff --unified --recursive a/src/presentation/VisualLayerRegistry.cc b/src/presentation/VisualLayerRegistry.cc
|
||||
--- a/src/presentation/VisualLayerRegistry.cc 2021-07-05 05:11:50.000000000 +0200
|
||||
+++ b/src/presentation/VisualLayerRegistry.cc 2022-12-07 22:38:12.950877614 +0100
|
||||
@@ -448,7 +448,7 @@
|
||||
&GPlatesQtWidgets::ReconstructScalarCoverageLayerOptionsWidget::create,
|
||||
boost::bind(
|
||||
&ReconstructScalarCoverageVisualLayerParams::create,
|
||||
- _1),
|
||||
+ boost::placeholders::_1),
|
||||
true);
|
||||
|
||||
registry.register_visual_layer_type(
|
||||
@@ -498,7 +498,7 @@
|
||||
// NOTE: We pass in ViewState and not the GlobeAndMapWidget, obtained from
|
||||
// ViewportWindow, because ViewportWindow is not yet available (a reference to
|
||||
// it not yet been initialised inside ViewState) so accessing it would crash...
|
||||
- _1, boost::ref(view_state)),
|
||||
+ boost::placeholders::_1, boost::ref(view_state)),
|
||||
true);
|
||||
|
||||
// DERIVED_DATA group.
|
||||
@@ -549,7 +549,7 @@
|
||||
&GPlatesQtWidgets::VelocityFieldCalculatorLayerOptionsWidget::create,
|
||||
boost::bind(
|
||||
&VelocityFieldCalculatorVisualLayerParams::create,
|
||||
- _1, boost::cref(view_state.get_rendered_geometry_parameters())),
|
||||
+ boost::placeholders::_1, boost::cref(view_state.get_rendered_geometry_parameters())),
|
||||
true);
|
||||
|
||||
using namespace GPlatesUtils;
|
||||
diff --unified --recursive a/src/qt-widgets/ViewportWindow.cc b/src/qt-widgets/ViewportWindow.cc
|
||||
--- a/src/qt-widgets/ViewportWindow.cc 2021-08-05 05:44:01.000000000 +0200
|
||||
+++ b/src/qt-widgets/ViewportWindow.cc 2022-12-07 22:39:20.487981302 +0100
|
||||
@@ -326,7 +326,7 @@
|
||||
*d_geometry_operation_state_ptr,
|
||||
*d_modify_geometry_state,
|
||||
*d_measure_distance_state_ptr,
|
||||
- boost::bind(&canvas_tool_status_message, boost::ref(*this), _1),
|
||||
+ boost::bind(&canvas_tool_status_message, boost::ref(*this), boost::placeholders::_1),
|
||||
get_view_state(),
|
||||
*this);
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
diff --git a/source/thirdparty/breakpad/src/client/linux/handler/exception_handler.cc b/source/thirdparty/breakpad/src/client/linux/handler/exception_handler.cc
|
||||
index ca353c4099..499be0a986 100644
|
||||
--- a/source/thirdparty/breakpad/src/client/linux/handler/exception_handler.cc
|
||||
+++ b/source/thirdparty/breakpad/src/client/linux/handler/exception_handler.cc
|
||||
@@ -138,7 +138,7 @@ void InstallAlternateStackLocked() {
|
||||
// SIGSTKSZ may be too small to prevent the signal handlers from overrunning
|
||||
// the alternative stack. Ensure that the size of the alternative stack is
|
||||
// large enough.
|
||||
- static const unsigned kSigStackSize = std::max(16384, SIGSTKSZ);
|
||||
+ const unsigned kSigStackSize = std::max<unsigned>(16384, SIGSTKSZ);
|
||||
|
||||
// Only set an alternative stack if there isn't already one, or if the current
|
||||
// one is too small.
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "tym";
|
||||
version = "3.5.0";
|
||||
version = "3.5.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "endaaman";
|
||||
repo = "${pname}";
|
||||
rev = version;
|
||||
sha256 = "sha256-aXV3TNjHxg/9Lb2o+ci5/cCAPbkWhxqOka3wv21ajSA=";
|
||||
sha256 = "sha256-53XAHyDiFPUTmw/rgoEoSoh+c/t4rS12gxwH1yKHqvw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -1,17 +1,22 @@
|
||||
{ lib, fetchFromGitHub, rustPlatform }:
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
rustPlatform,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
rustPlatform.buildRustPackage {
|
||||
pname = "git-vanity-hash";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "prasmussen";
|
||||
repo = "git-vanity-hash";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-jD8cSFXf9UNBZ9d8JTnuwhs6nPHY/xGd5RyqF+mQOlo=";
|
||||
# v1.0.0 + build fix
|
||||
rev = "a80e7725ac6d0b7e6807cd7315cfdc7eaf0584f6";
|
||||
hash = "sha256-1z4jbtzUB3SH79dDXAITf7Vup1YZdTLHBieSrhrvSXc=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-8oW6gRtdQdmSmdwKlcU2EhHsyhk9hFhKl7RtsYwC7Ps=";
|
||||
cargoHash = "sha256-+SQ0HpURBjnnwH1Ue7IUReOtI4LxVPK9AGSAihs0qsc=";
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/doc/git-vanity-hash
|
||||
|
||||
@@ -75,6 +75,7 @@ let
|
||||
modernx-zydezu = callPackage ./modernx-zydezu.nix { };
|
||||
mpris = callPackage ./mpris.nix { };
|
||||
mpv-cheatsheet = callPackage ./mpv-cheatsheet.nix { };
|
||||
mpv-notify-send = callPackage ./mpv-notify-send.nix { };
|
||||
mpv-osc-modern = callPackage ./mpv-osc-modern.nix { };
|
||||
mpv-playlistmanager = callPackage ./mpv-playlistmanager.nix { };
|
||||
mpv-slicing = callPackage ./mpv-slicing.nix { };
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
{ lib, fetchFromGitHub, nodePackages, stdenvNoCC }:
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, gitUpdater
|
||||
, nodePackages
|
||||
, stdenvNoCC
|
||||
}:
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "mpv-cheatsheet";
|
||||
version = "0.30.0.2";
|
||||
@@ -9,6 +14,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-MWK0CYto3zgn3fivmL43tvgZn6XrjPxKLp0lgTFdplM=";
|
||||
};
|
||||
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodePackages.browserify
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
{ lib
|
||||
, buildLua
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, unstableGitUpdater
|
||||
, libnotify }:
|
||||
|
||||
buildLua rec {
|
||||
pname = "mpv-notify-send";
|
||||
version = "0-unstable-2020-02-24";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "emilazy";
|
||||
repo = pname;
|
||||
rev = "a2bab8b2fd8e8d14faa875b5cc3a73f1276cd88a";
|
||||
sha256 = "sha256-EwVkhyB87TJ3i9xJmmZMSTMUKvfbImI1S+y1vgRWbDk=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# show title of online videos instead of url
|
||||
(fetchpatch {
|
||||
url = "https://github.com/emilazy/mpv-notify-send/pull/6.patch";
|
||||
hash = "sha256-7aXQ8qeqG4yX0Uyn09xCIESnwPZsb6Frd7C49XgbpFw=";
|
||||
})
|
||||
];
|
||||
|
||||
passthru.extraWrapperArgs = [
|
||||
"--prefix" "PATH" ":" (lib.makeBinPath libnotify)
|
||||
];
|
||||
|
||||
passthru.updateScript = unstableGitUpdater { };
|
||||
|
||||
meta = with lib; {
|
||||
description = "A Lua script for mpv to send notifications with notify-send";
|
||||
homepage = "https://github.com/emilazy/mpv-notify-send";
|
||||
license = licenses.wtfpl;
|
||||
maintainers = with maintainers; [ r3n3gad3p3arl ];
|
||||
};
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
buildLua,
|
||||
fetchFromGitHub,
|
||||
ffmpeg,
|
||||
unstableGitUpdater,
|
||||
}:
|
||||
|
||||
buildLua {
|
||||
@@ -15,6 +16,7 @@ buildLua {
|
||||
rev = "d09c11227704c8d5bdaa2c799ef64dce881c63a7";
|
||||
hash = "sha256-MKoM0f74/XoctiHQVOB3LzFWtJXpsREfQh5icaebCJo=";
|
||||
};
|
||||
passthru.updateScript = unstableGitUpdater { };
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace slicing.lua \
|
||||
|
||||
@@ -12,15 +12,16 @@
|
||||
, libxkbcommon
|
||||
, pkg-config
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "showmethekey";
|
||||
version = "1.12.0";
|
||||
version = "1.13.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "AlynxZhou";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-eeObomb4Gv/vpvViHsi3+O0JR/rYamrlZNZaXKL6KJw=";
|
||||
repo = "showmethekey";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-pVFkO/+a7GAOXbYBfU0zcO/uD26PX+y02bEZa3f1ZP8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -40,8 +41,9 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://showmethekey.alynx.one/";
|
||||
description = "Show keys you typed on screen";
|
||||
homepage = "https://showmethekey.alynx.one/";
|
||||
changelog = "https://github.com/AlynxZhou/showmethekey/releases/tag/v${version}";
|
||||
license = licenses.asl20;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ ocfox ];
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "cri-o";
|
||||
version = "1.29.3";
|
||||
version = "1.29.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cri-o";
|
||||
repo = "cri-o";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-JJuqYC4GAZqXyyAjVoPipnGjRGbVx1rfH4UrtIOP7cc=";
|
||||
hash = "sha256-bF9hvKKwhsmX606Jk34qn32JklUrG939BW2x4tbknjo=";
|
||||
};
|
||||
vendorHash = null;
|
||||
|
||||
|
||||
@@ -7,20 +7,30 @@
|
||||
, mesa
|
||||
, pango
|
||||
, udev
|
||||
, shaderc
|
||||
, libglvnd
|
||||
, vulkan-loader
|
||||
, autoPatchelfHook
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "jay";
|
||||
version = "unstable-2022-11-20";
|
||||
version = "1.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mahkoh";
|
||||
repo = pname;
|
||||
rev = "09b4668a5363a6e93dfb8ba35b244835f4edb0f2";
|
||||
sha256 = "sha256-0IIzXY7AFTGEe0TzJVKOtTPUZee0Wz40yKgEWLeIYJw=";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-9fWwVUqeYADt33HGaJRRFmM20WM7qRWbNGpt3rk9xQM=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-zSq6YBlm6gJXGlF9xZ8gWSTMewdNqrJzwP58a0x8QIU=";
|
||||
cargoSha256 = "sha256-oPGY/rVx94BkWgKkwwyDjfASMyGGU32R5IZuNjOv+EM=";
|
||||
|
||||
SHADERC_LIB_DIR = "${lib.getLib shaderc}/lib";
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libGL
|
||||
@@ -29,9 +39,18 @@ rustPlatform.buildRustPackage rec {
|
||||
pango
|
||||
udev
|
||||
libinput
|
||||
shaderc
|
||||
];
|
||||
|
||||
RUSTC_BOOTSTRAP = 1;
|
||||
runtimeDependencies = [
|
||||
libglvnd
|
||||
vulkan-loader
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
install -D etc/jay.portal $out/usr/share/xdg-desktop-portal/portals/jay.portal
|
||||
install -D etc/jay-portals.conf $out/usr/share/xdg-desktop-portal/jay-portals.conf
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A Wayland compositor written in Rust";
|
||||
|
||||
@@ -27,9 +27,9 @@ composerInstallConfigureHook() {
|
||||
setComposeRootVersion
|
||||
|
||||
composer \
|
||||
--no-ansi \
|
||||
--no-install \
|
||||
--no-interaction \
|
||||
--no-progress \
|
||||
${composerNoDev:+--no-dev} \
|
||||
${composerNoPlugins:+--no-plugins} \
|
||||
${composerNoScripts:+--no-scripts} \
|
||||
@@ -104,8 +104,8 @@ composerInstallInstallHook() {
|
||||
# Finally, run `composer install` to install the dependencies and generate
|
||||
# the autoloader.
|
||||
composer \
|
||||
--no-ansi \
|
||||
--no-interaction \
|
||||
--no-progress \
|
||||
${composerNoDev:+--no-dev} \
|
||||
${composerNoPlugins:+--no-plugins} \
|
||||
${composerNoScripts:+--no-scripts} \
|
||||
@@ -117,8 +117,9 @@ composerInstallInstallHook() {
|
||||
|
||||
# Create symlinks for the binaries.
|
||||
jq -r -c 'try (.bin[] | select(test(".bat$")? | not) )' composer.json | while read -r bin; do
|
||||
mkdir -p "$out"/share/php/"${pname}" "$out"/bin
|
||||
makeWrapper "$out"/share/php/"${pname}"/"$bin" "$out"/bin/"$(basename "$bin")"
|
||||
echo -e "\e[32mCreating symlink ${bin}...\e[0m"
|
||||
mkdir -p "$out"/bin
|
||||
ln -s "$out"/share/php/"${pname}"/"$bin" "$out"/bin/"$(basename "$bin")"
|
||||
done
|
||||
|
||||
echo "Finished composerInstallInstallHook"
|
||||
|
||||
@@ -23,9 +23,9 @@ composerRepositoryConfigureHook() {
|
||||
setComposeRootVersion
|
||||
|
||||
composer \
|
||||
--no-ansi \
|
||||
--no-install \
|
||||
--no-interaction \
|
||||
--no-progress \
|
||||
${composerNoDev:+--no-dev} \
|
||||
${composerNoPlugins:+--no-plugins} \
|
||||
${composerNoScripts:+--no-scripts} \
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
, jq
|
||||
, writeShellApplication
|
||||
, moreutils
|
||||
, makeBinaryWrapper
|
||||
, cacert
|
||||
, buildPackages
|
||||
}:
|
||||
@@ -29,7 +28,7 @@ in
|
||||
composerInstallHook = makeSetupHook
|
||||
{
|
||||
name = "composer-install-hook.sh";
|
||||
propagatedBuildInputs = [ jq makeBinaryWrapper moreutils cacert ];
|
||||
propagatedBuildInputs = [ jq moreutils cacert ];
|
||||
substitutions = {
|
||||
# Specify the stdenv's `diff` by abspath to ensure that the user's build
|
||||
# inputs do not cause us to find the wrong `diff`.
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
, fetchFromGitHub
|
||||
}: buildNpmPackage rec {
|
||||
pname = "arrpc";
|
||||
version = "3.3.1";
|
||||
version = "3.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "OpenAsar";
|
||||
repo = "arrpc";
|
||||
# Release commits are not tagged
|
||||
# release: 3.3.0
|
||||
rev = "b4796fffe3bf1b1361cc4781024349f7a4f9400e";
|
||||
hash = "sha256-iEfV85tRl2KyjodoaSxVHiqweBpLeiCAYWc8+afl/sA=";
|
||||
# release: 3.4.0
|
||||
rev = "cca93db585dedf8acc1423f5e2db215de95c4c3b";
|
||||
hash = "sha256-SeegrCgbjfVxG/9xfOcdfbVdDssZOhjBRnDipu6L7Wg=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-YlSUGncpY0MyTiCfZcPsfcNx3fR+SCtkOFWbjOPLUzk=";
|
||||
npmDepsHash = "sha256-S9cIyTXqCp8++Yj3VjBbcStOjzjgd0Cq7KL7NNzZFpY=";
|
||||
|
||||
dontNpmBuild = true;
|
||||
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
}:
|
||||
buildGoModule rec {
|
||||
pname = "athens";
|
||||
version = "0.13.3";
|
||||
version = "0.14.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gomods";
|
||||
repo = "athens";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-psO3x8xLWGSlsZT2HiAvYWP1rCvbWUx+WoJ4eves9lw=";
|
||||
hash = "sha256-5E9jBV+m19AUtSTpTlkCx8JUHwlcM2pgSGfo4zPqDNk=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-hk0hmkmhRPRbh2Yqf1lYei6iiKUurMfc1Y3VPNStcBs=";
|
||||
vendorHash = "sha256-LajNPzGbWqW+9aqiquk2LvSUjKwi1gbDY4cKXmn3PWk=";
|
||||
|
||||
CGO_ENABLED = "0";
|
||||
ldflags = [ "-s" "-w" "-X github.com/gomods/athens/pkg/build.version=${version}" ];
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, autoconf
|
||||
, protobuf
|
||||
, pkg-config
|
||||
, grpc
|
||||
, libtool
|
||||
, which
|
||||
, automake
|
||||
, libax25
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "ax25ms";
|
||||
version = "0-unstable-2024-04-28";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ThomasHabets";
|
||||
repo = "ax25ms";
|
||||
rev = "c7d7213bb182e4b60f655c3f9f1bcb2b2440406b";
|
||||
hash = "sha256-GljGJa44topJ6T0g5wuU8GTHLKzNmQqUl8/AR+pw2+I=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
protobuf
|
||||
grpc
|
||||
libax25
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
which
|
||||
pkg-config
|
||||
autoconf
|
||||
libtool
|
||||
automake
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
patchShebangs scripts
|
||||
./bootstrap.sh
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
set +e
|
||||
for binary_path in "$out/bin"/*; do
|
||||
filename=$(basename "$binary_path")
|
||||
mv "$binary_path" "$out/bin/ax25ms-$filename"
|
||||
done
|
||||
set -e
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Set of AX.25 microservices, designed to be pluggable for any implementation";
|
||||
homepage = "https://github.com/ThomasHabets/ax25ms";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [
|
||||
matthewcroughan
|
||||
sarcasticadmin
|
||||
pkharvey
|
||||
];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "broom";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "a-camarillo";
|
||||
repo = "broom";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-a2hUgYpiKm/dZWLRuCZKuGStmZ/7jDtLRAjd/B57Vxw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-zNklqGjMt89b+JOZfKjTO6c75SXO10e7YtQOqqQZpnA=";
|
||||
|
||||
ldflags = [ "-s" "-w" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "An interactive CLI tool for managing local git branches";
|
||||
homepage = "https://github.com/a-camarillo/broom";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ a-camarillo ];
|
||||
mainProgram = "broom";
|
||||
};
|
||||
}
|
||||
@@ -3,11 +3,11 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "butt";
|
||||
version = "0.1.41";
|
||||
version = "1.41.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://danielnoethen.de/butt/release/${finalAttrs.version}/butt-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-wTypjqd2PpmDSA8vScMLkAL44xE/WAccm747PS9ClVA=";
|
||||
hash = "sha256-y/XIcFm1TWVd5SL+kDCJc21CtMwipMQgRE4gPra5+98=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
, tayga
|
||||
, iproute2
|
||||
, iptables
|
||||
, nixosTests
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
@@ -52,6 +53,8 @@ stdenv.mkDerivation rec {
|
||||
}
|
||||
'';
|
||||
|
||||
passthru.tests.clatd = nixosTests.clatd;
|
||||
|
||||
meta = with lib; {
|
||||
description = "A 464XLAT CLAT implementation for Linux";
|
||||
homepage = "https://github.com/toreanderson/clatd";
|
||||
|
||||
+3852
-4200
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,101 @@
|
||||
{ lib
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, wrapGAppsHook
|
||||
, atk
|
||||
, cairo
|
||||
, gdk-pixbuf
|
||||
, glib
|
||||
, gtk3
|
||||
, libsecret
|
||||
, libxkbcommon
|
||||
, openssl
|
||||
, pango
|
||||
, sqlite
|
||||
, vulkan-loader
|
||||
, stdenv
|
||||
, darwin
|
||||
, wayland
|
||||
}:
|
||||
|
||||
let
|
||||
commitDate = "2024-04-30";
|
||||
in rustPlatform.buildRustPackage rec {
|
||||
pname = "cosmic-tasks";
|
||||
version = "0-unstable-${commitDate}";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "edfloreshz";
|
||||
repo = "cosmic-tasks";
|
||||
rev = "020ae8633b23091f113b19f4b6f992e36404f2e2";
|
||||
hash = "sha256-ZPEzvscLYH4vJ+5Nh5J9m8ZX2jXXDMOLswSnHaCdSdA=";
|
||||
};
|
||||
|
||||
cargoLock = {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
"accesskit-0.12.2" = "sha256-ksaYMGT/oug7isQY8/1WD97XDUsX2ShBdabUzxWffYw=";
|
||||
"atomicwrites-0.4.2" = "sha256-QZSuGPrJXh+svMeFWqAXoqZQxLq/WfIiamqvjJNVhxA=";
|
||||
"clipboard_macos-0.1.0" = "sha256-KVcKQ4DtoZCgFBnejIaQfQxJJJxd/mFzHBI+4PbGBio=";
|
||||
"cosmic-config-0.1.0" = "sha256-VEE/1XQZaojz9gxTV/Zz++eVplsCfiDPgf/cAr2Rih8=";
|
||||
"cosmic-text-0.11.2" = "sha256-gUIQFHPaFTmtUfgpVvsGTnw2UKIBx9gl0K67KPuynWs=";
|
||||
"d3d12-0.19.0" = "sha256-usrxQXWLGJDjmIdw1LBXtBvX+CchZDvE8fHC0LjvhD4=";
|
||||
"glyphon-0.5.0" = "sha256-j1HrbEpUBqazWqNfJhpyjWuxYAxkvbXzRKeSouUoPWg=";
|
||||
"smithay-client-toolkit-0.18.0" = "sha256-/7twYMt5/LpzxLXAQKTGNnWcfspUkkZsN5hJu7KaANc=";
|
||||
"smithay-clipboard-0.8.0" = "sha256-LDd56TJ175qsj2/EV/dbBRV9HMU7RzgrG5JP7H2PmhE=";
|
||||
"softbuffer-0.4.1" = "sha256-a0bUFz6O8CWRweNt/OxTvflnPYwO5nm6vsyc/WcXyNg=";
|
||||
"taffy-0.3.11" = "sha256-SCx9GEIJjWdoNVyq+RZAGn0N71qraKZxf9ZWhvyzLaI=";
|
||||
"winit-0.29.10" = "sha256-ScTII2AzK3SC8MVeASZ9jhVWsEaGrSQ2BnApTxgfxK4=";
|
||||
};
|
||||
};
|
||||
|
||||
# COSMIC applications now uses vergen for the About page
|
||||
# Update the COMMIT_DATE to match when the commit was made
|
||||
env.VERGEN_GIT_COMMIT_DATE = commitDate;
|
||||
env.VERGEN_GIT_SHA = src.rev;
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
atk
|
||||
cairo
|
||||
gdk-pixbuf
|
||||
glib
|
||||
gtk3
|
||||
libsecret
|
||||
libxkbcommon
|
||||
openssl
|
||||
pango
|
||||
sqlite
|
||||
vulkan-loader
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.AppKit
|
||||
darwin.apple_sdk.frameworks.CoreFoundation
|
||||
darwin.apple_sdk.frameworks.CoreGraphics
|
||||
darwin.apple_sdk.frameworks.CoreServices
|
||||
darwin.apple_sdk.frameworks.Foundation
|
||||
darwin.apple_sdk.frameworks.Metal
|
||||
darwin.apple_sdk.frameworks.QuartzCore
|
||||
darwin.apple_sdk.frameworks.Security
|
||||
] ++ lib.optionals stdenv.isLinux [
|
||||
wayland
|
||||
];
|
||||
|
||||
postFixup = lib.optionalString stdenv.isLinux ''
|
||||
wrapProgram $out/bin/cosmic-tasks \
|
||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libxkbcommon wayland ]}"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "A simple task management application for the COSMIC desktop";
|
||||
homepage = "https://github.com/edfloreshz/cosmic-tasks";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ GaetanLepage ];
|
||||
platforms = platforms.linux;
|
||||
mainProgram = "cosmic-tasks";
|
||||
};
|
||||
}
|
||||
@@ -2,10 +2,10 @@
|
||||
|
||||
buildDotnetGlobalTool {
|
||||
pname = "csharpier";
|
||||
version = "0.27.2";
|
||||
version = "0.28.2";
|
||||
executables = "dotnet-csharpier";
|
||||
|
||||
nugetSha256 = "sha256-P4v4h09FuisIry9B/6batrG0CpLqnrkxnlk1yEd1JbY=";
|
||||
nugetSha256 = "sha256-fXyE25niM80pPXCLC80Hm9XEHGUMx0XZOMxdVoA0h18=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "An opinionated code formatter for C#";
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitLab
|
||||
, libuv
|
||||
, coreutils-full
|
||||
, pkg-config
|
||||
, gnugrep
|
||||
, gnused
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dps8m";
|
||||
version = "3.0.1";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "dps8m";
|
||||
repo = "dps8m";
|
||||
rev = "R${version}";
|
||||
hash = "sha256-YCDeHryxXZXOXqUXkbWwH7Vna+ljzydFXPeo2et87x8=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
env = {
|
||||
ENV = "${coreutils-full}/bin/env";
|
||||
GREP = "${gnugrep}/bin/grep";
|
||||
SED = "${gnused}/bin/sed";
|
||||
PREFIX = placeholder "out";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
coreutils-full
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libuv
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "DPS8M: GE / Honeywell / Bull DPS‑8/M mainframe simulator";
|
||||
homepage = "https://gitlab.com/dps8m/dps8m";
|
||||
license = licenses.icu;
|
||||
maintainers = with maintainers; [ matthewcroughan sarcasticadmin ];
|
||||
mainProgram = "dps8m";
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user