Merge branch 'staging-next' into staging
This commit is contained in:
commit
8ab6ba6b1c
|
@ -13,6 +13,7 @@ In the following is an example expression using `buildGoModule`, the following a
|
|||
|
||||
- `vendorSha256`: is the hash of the output of the intermediate fetcher derivation. `vendorSha256` can also take `null` as an input. When `null` is used as a value, rather than fetching the dependencies and vendoring them, we use the vendoring included within the source repo. If you'd like to not have to update this field on dependency changes, run `go mod vendor` in your source repo and set `vendorSha256 = null;`
|
||||
- `runVend`: runs the vend command to generate the vendor directory. This is useful if your code depends on c code and go mod tidy does not include the needed sources to build.
|
||||
- `proxyVendor`: Fetches (go mod download) and proxies the vendor directory. This is useful if any dependency has case-insensitive conflicts which will produce platform dependant `vendorSha256` checksums.
|
||||
|
||||
```nix
|
||||
pet = buildGoModule rec {
|
||||
|
@ -112,16 +113,6 @@ done
|
|||
|
||||
Both `buildGoModule` and `buildGoPackage` can be tweaked to behave slightly differently, if the following attributes are used:
|
||||
|
||||
### `buildFlagsArray` and `buildFlags`: {#ex-goBuildFlags-noarray}
|
||||
|
||||
These attributes set build flags supported by `go build`. We recommend using `buildFlagsArray`.
|
||||
|
||||
```nix
|
||||
buildFlagsArray = [
|
||||
"-tags=release"
|
||||
];
|
||||
```
|
||||
|
||||
### `ldflags` {#var-go-ldflags}
|
||||
|
||||
Arguments to pass to the Go linker tool via the `-ldflags` argument of `go build`. The most common use case for this argument is to make the resulting executable aware of its own version. For example:
|
||||
|
@ -134,6 +125,21 @@ Arguments to pass to the Go linker tool via the `-ldflags` argument of `go build
|
|||
];
|
||||
```
|
||||
|
||||
### `tags` {#var-go-tags}
|
||||
|
||||
Arguments to pass to the Go via the `-tags` argument of `go build`. For example:
|
||||
|
||||
```nix
|
||||
tags = [
|
||||
"production"
|
||||
"sqlite"
|
||||
];
|
||||
```
|
||||
|
||||
```nix
|
||||
tags = [ "production" ] ++ lib.optionals withSqlite [ "sqlite" ];
|
||||
```
|
||||
|
||||
### `deleteVendor` {#var-go-deleteVendor}
|
||||
|
||||
Removes the pre-existing vendor directory. This should only be used if the dependencies included in the vendor folder are broken or incomplete.
|
||||
|
|
|
@ -39,7 +39,7 @@ To add a package from NPM to nixpkgs:
|
|||
1. Modify `pkgs/development/node-packages/node-packages.json` to add, update
|
||||
or remove package entries to have it included in `nodePackages` and
|
||||
`nodePackages_latest`.
|
||||
2. Run the script: `(cd pkgs/development/node-packages && ./generate.sh)`.
|
||||
2. Run the script: `cd pkgs/development/node-packages && ./generate.sh`.
|
||||
3. Build your new package to test your changes:
|
||||
`cd /path/to/nixpkgs && nix-build -A nodePackages.<new-or-updated-package>`.
|
||||
To build against the latest stable Current Node.js version (e.g. 14.x):
|
||||
|
|
|
@ -4007,6 +4007,16 @@
|
|||
fingerprint = "5214 2D39 A7CE F8FA 872B CA7F DE62 E1E2 A614 5556";
|
||||
}];
|
||||
};
|
||||
gpanders = {
|
||||
name = "Gregory Anders";
|
||||
email = "greg@gpanders.com";
|
||||
github = "gpanders";
|
||||
githubId = 8965202;
|
||||
keys = [{
|
||||
longkeyid = "rsa2048/0x56E93C2FB6B08BDB";
|
||||
fingerprint = "B9D5 0EDF E95E ECD0 C135 00A9 56E9 3C2F B6B0 8BDB";
|
||||
}];
|
||||
};
|
||||
gpyh = {
|
||||
email = "yacine.hmito@gmail.com";
|
||||
github = "yacinehmito";
|
||||
|
@ -7856,6 +7866,12 @@
|
|||
githubId = 1839979;
|
||||
name = "Niklas Thörne";
|
||||
};
|
||||
nukaduka = {
|
||||
email = "ksgokte@gmail.com";
|
||||
github = "NukaDuka";
|
||||
githubId = 22592293;
|
||||
name = "Kartik Gokte";
|
||||
};
|
||||
nullx76 = {
|
||||
email = "nix@xirion.net";
|
||||
github = "NULLx76";
|
||||
|
|
|
@ -149,6 +149,13 @@
|
|||
<link linkend="opt-services.meshcentral.enable">services.meshcentral.enable</link>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://github.com/Arksine/moonraker">moonraker</link>,
|
||||
an API web server for Klipper. Available as
|
||||
<link linkend="opt-services.moonraker.enable">moonraker</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section xml:id="sec-release-21.11-incompatibilities">
|
||||
|
@ -799,6 +806,15 @@
|
|||
this up.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Zfs: <literal>latestCompatibleLinuxPackages</literal> is now
|
||||
exported on the zfs package. One can use
|
||||
<literal>boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;</literal>
|
||||
to always track the latest compatible kernel with a given
|
||||
version of zfs.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
@ -45,6 +45,9 @@ pt-services.clipcat.enable).
|
|||
|
||||
- [MeshCentral](https://www.meshcommander.com/meshcentral2/overview), a remote administration service ("TeamViewer but self-hosted and with more features") is now available with a package and a module: [services.meshcentral.enable](#opt-services.meshcentral.enable)
|
||||
|
||||
- [moonraker](https://github.com/Arksine/moonraker), an API web server for Klipper.
|
||||
Available as [moonraker](#opt-services.moonraker.enable).
|
||||
|
||||
## Backward Incompatibilities {#sec-release-21.11-incompatibilities}
|
||||
|
||||
- The `staticjinja` package has been upgraded from 1.0.4 to 3.0.1
|
||||
|
@ -204,3 +207,5 @@ pt-services.clipcat.enable).
|
|||
- The [networking.wireless.iwd](options.html#opt-networking.wireless.iwd.enable) module has a new [networking.wireless.iwd.settings](options.html#opt-networking.wireless.iwd.settings) option.
|
||||
|
||||
- The [services.syncoid.enable](options.html#opt-services.syncoid.enable) module now properly drops ZFS permissions after usage. Before it delegated permissions to whole pools instead of datasets and didn't clean up after execution. You can manually look this up for your pools by running `zfs allow your-pool-name` and use `zfs unallow syncoid your-pool-name` to clean this up.
|
||||
|
||||
- Zfs: `latestCompatibleLinuxPackages` is now exported on the zfs package. One can use `boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages;` to always track the latest compatible kernel with a given version of zfs.
|
||||
|
|
|
@ -258,8 +258,7 @@ in
|
|||
|
||||
environment.systemPackages = []
|
||||
++ optional cfg.man.enable manual.manpages
|
||||
++ optionals cfg.doc.enable ([ manual.manualHTML nixos-help ]
|
||||
++ optionals config.services.xserver.enable [ pkgs.nixos-icons ]);
|
||||
++ optionals cfg.doc.enable [ manual.manualHTML nixos-help ];
|
||||
|
||||
services.getty.helpLine = mkIf cfg.doc.enable (
|
||||
"\nRun 'nixos-help' for the NixOS manual."
|
||||
|
|
|
@ -349,6 +349,7 @@ in
|
|||
zigbee2mqtt = 317;
|
||||
# shadow = 318; # unused
|
||||
hqplayer = 319;
|
||||
moonraker = 320;
|
||||
|
||||
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
||||
|
||||
|
@ -652,6 +653,7 @@ in
|
|||
zigbee2mqtt = 317;
|
||||
shadow = 318;
|
||||
hqplayer = 319;
|
||||
moonraker = 320;
|
||||
|
||||
# When adding a gid, make sure it doesn't match an existing
|
||||
# uid. Users and groups with the same name should have equal
|
||||
|
|
|
@ -533,9 +533,11 @@
|
|||
./services/misc/mbpfan.nix
|
||||
./services/misc/mediatomb.nix
|
||||
./services/misc/metabase.nix
|
||||
./services/misc/moonraker.nix
|
||||
./services/misc/mwlib.nix
|
||||
./services/misc/mx-puppet-discord.nix
|
||||
./services/misc/n8n.nix
|
||||
./services/misc/nitter.nix
|
||||
./services/misc/nix-daemon.nix
|
||||
./services/misc/nix-gc.nix
|
||||
./services/misc/nix-optimise.nix
|
||||
|
|
|
@ -278,7 +278,10 @@ in
|
|||
fi
|
||||
'';
|
||||
|
||||
environment.etc.zinputrc.source = ./zinputrc;
|
||||
# Bug in nix flakes:
|
||||
# If we use `.source` here the path is garbage collected also we point to it with a symlink
|
||||
# see https://github.com/NixOS/nixpkgs/issues/132732
|
||||
environment.etc.zinputrc.text = builtins.readFile ./zinputrc;
|
||||
|
||||
environment.systemPackages =
|
||||
let
|
||||
|
|
|
@ -406,7 +406,7 @@ let
|
|||
${let oath = config.security.pam.oath; in optionalString cfg.oathAuth
|
||||
"auth requisite ${pkgs.oathToolkit}/lib/security/pam_oath.so window=${toString oath.window} usersfile=${toString oath.usersFile} digits=${toString oath.digits}"}
|
||||
${let yubi = config.security.pam.yubico; in optionalString cfg.yubicoAuth
|
||||
"auth ${yubi.control} ${pkgs.yubico-pam}/lib/security/pam_yubico.so mode=${toString yubi.mode} ${optionalString (yubi.mode == "client") "id=${toString yubi.id}"} ${optionalString yubi.debug "debug"}"}
|
||||
"auth ${yubi.control} ${pkgs.yubico-pam}/lib/security/pam_yubico.so mode=${toString yubi.mode} ${optionalString (yubi.challengeResponsePath != null) "chalresp_path=${yubi.challengeResponsePath}"} ${optionalString (yubi.mode == "client") "id=${toString yubi.id}"} ${optionalString yubi.debug "debug"}"}
|
||||
${optionalString cfg.fprintAuth
|
||||
"auth sufficient ${pkgs.fprintd}/lib/security/pam_fprintd.so"}
|
||||
'' +
|
||||
|
@ -822,6 +822,16 @@ in
|
|||
Challenge-Response configurations. See the man-page ykpamcfg(1) for further
|
||||
details on how to configure offline Challenge-Response validation.
|
||||
|
||||
More information can be found <link
|
||||
xlink:href="https://developers.yubico.com/yubico-pam/Authentication_Using_Challenge-Response.html">here</link>.
|
||||
'';
|
||||
};
|
||||
challengeResponsePath = mkOption {
|
||||
default = null;
|
||||
type = types.path;
|
||||
description = ''
|
||||
If not null, set the path used by yubico pam module where the challenge expected response is stored.
|
||||
|
||||
More information can be found <link
|
||||
xlink:href="https://developers.yubico.com/yubico-pam/Authentication_Using_Challenge-Response.html">here</link>.
|
||||
'';
|
||||
|
|
|
@ -56,22 +56,6 @@ in
|
|||
Open TCP port 8088 in the firewall for the server.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "hqplayer";
|
||||
description = ''
|
||||
User account under which hqplayerd runs.
|
||||
'';
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "hqplayer";
|
||||
description = ''
|
||||
Group account under which hqplayerd runs.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -100,68 +84,44 @@ in
|
|||
|
||||
systemd = {
|
||||
tmpfiles.rules = [
|
||||
"d ${configDir} 0755 ${cfg.user} ${cfg.group} - -"
|
||||
"d ${stateDir} 0755 ${cfg.user} ${cfg.group} - -"
|
||||
"d ${stateDir}/home 0755 ${cfg.user} ${cfg.group} - -"
|
||||
"d ${configDir} 0755 hqplayer hqplayer - -"
|
||||
"d ${stateDir} 0755 hqplayer hqplayer - -"
|
||||
"d ${stateDir}/home 0755 hqplayer hqplayer - -"
|
||||
];
|
||||
|
||||
packages = [ pkg ];
|
||||
|
||||
services.hqplayerd = {
|
||||
description = "HQPlayer daemon";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
requires = [ "network-online.target" "sound.target" "systemd-udev-settle.service" ];
|
||||
after = [ "network-online.target" "sound.target" "systemd-udev-settle.service" "local-fs.target" "remote-fs.target" "systemd-tmpfiles-setup.service" ];
|
||||
after = [ "systemd-tmpfiles-setup.service" ];
|
||||
|
||||
environment.HOME = "${stateDir}/home";
|
||||
|
||||
unitConfig.ConditionPathExists = [ configDir stateDir ];
|
||||
|
||||
preStart =
|
||||
let
|
||||
blankCfg = pkgs.writeText "hqplayerd.xml" ''
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xml>
|
||||
</xml>
|
||||
'';
|
||||
in
|
||||
''
|
||||
cp -r "${pkg}/var/lib/hqplayer/web" "${stateDir}"
|
||||
chmod -R u+wX "${stateDir}/web"
|
||||
preStart = ''
|
||||
cp -r "${pkg}/var/lib/hqplayer/web" "${stateDir}"
|
||||
chmod -R u+wX "${stateDir}/web"
|
||||
|
||||
if [ ! -f "${configDir}/hqplayerd.xml" ]; then
|
||||
echo "creating blank config file"
|
||||
install -m 0644 "${blankCfg}" "${configDir}/hqplayerd.xml"
|
||||
fi
|
||||
'' + optionalString (cfg.auth.username != null && cfg.auth.password != null) ''
|
||||
${pkg}/bin/hqplayerd -s ${cfg.auth.username} ${cfg.auth.password}
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkg}/bin/hqplayerd";
|
||||
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
|
||||
Restart = "on-failure";
|
||||
RestartSec = 5;
|
||||
|
||||
Nice = -10;
|
||||
IOSchedulingClass = "realtime";
|
||||
LimitMEMLOCK = "1G";
|
||||
LimitNICE = -10;
|
||||
LimitRTPRIO = 98;
|
||||
};
|
||||
if [ ! -f "${configDir}/hqplayerd.xml" ]; then
|
||||
echo "creating initial config file"
|
||||
install -m 0644 "${pkg}/etc/hqplayer/hqplayerd.xml" "${configDir}/hqplayerd.xml"
|
||||
fi
|
||||
'' + optionalString (cfg.auth.username != null && cfg.auth.password != null) ''
|
||||
${pkg}/bin/hqplayerd -s ${cfg.auth.username} ${cfg.auth.password}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
users.groups = mkIf (cfg.group == "hqplayer") {
|
||||
users.groups = {
|
||||
hqplayer.gid = config.ids.gids.hqplayer;
|
||||
};
|
||||
|
||||
users.users = mkIf (cfg.user == "hqplayer") {
|
||||
users.users = {
|
||||
hqplayer = {
|
||||
description = "hqplayer daemon user";
|
||||
extraGroups = [ "audio" ];
|
||||
group = cfg.group;
|
||||
group = "hqplayer";
|
||||
uid = config.ids.uids.hqplayer;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -7,28 +7,49 @@ let
|
|||
cfg = config.services.postgresqlBackup;
|
||||
|
||||
postgresqlBackupService = db: dumpCmd:
|
||||
{
|
||||
let
|
||||
compressSuffixes = {
|
||||
"none" = "";
|
||||
"gzip" = ".gz";
|
||||
"zstd" = ".zstd";
|
||||
};
|
||||
compressSuffix = getAttr cfg.compression compressSuffixes;
|
||||
|
||||
compressCmd = getAttr cfg.compression {
|
||||
"none" = "cat";
|
||||
"gzip" = "${pkgs.gzip}/bin/gzip -c";
|
||||
"zstd" = "${pkgs.zstd}/bin/zstd -c";
|
||||
};
|
||||
|
||||
mkSqlPath = prefix: suffix: "${cfg.location}/${db}${prefix}.sql${suffix}";
|
||||
curFile = mkSqlPath "" compressSuffix;
|
||||
prevFile = mkSqlPath ".prev" compressSuffix;
|
||||
prevFiles = map (mkSqlPath ".prev") (attrValues compressSuffixes);
|
||||
inProgressFile = mkSqlPath ".in-progress" compressSuffix;
|
||||
in {
|
||||
enable = true;
|
||||
|
||||
description = "Backup of ${db} database(s)";
|
||||
|
||||
requires = [ "postgresql.service" ];
|
||||
|
||||
path = [ pkgs.coreutils pkgs.gzip config.services.postgresql.package ];
|
||||
path = [ pkgs.coreutils config.services.postgresql.package ];
|
||||
|
||||
script = ''
|
||||
set -e -o pipefail
|
||||
|
||||
umask 0077 # ensure backup is only readable by postgres user
|
||||
|
||||
if [ -e ${cfg.location}/${db}.sql.gz ]; then
|
||||
mv ${cfg.location}/${db}.sql.gz ${cfg.location}/${db}.prev.sql.gz
|
||||
if [ -e ${curFile} ]; then
|
||||
rm -f ${toString prevFiles}
|
||||
mv ${curFile} ${prevFile}
|
||||
fi
|
||||
|
||||
${dumpCmd} | \
|
||||
gzip -c > ${cfg.location}/${db}.in-progress.sql.gz
|
||||
${dumpCmd} \
|
||||
| ${compressCmd} \
|
||||
> ${inProgressFile}
|
||||
|
||||
mv ${cfg.location}/${db}.in-progress.sql.gz ${cfg.location}/${db}.sql.gz
|
||||
mv ${inProgressFile} ${curFile}
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
|
@ -87,7 +108,7 @@ in {
|
|||
default = "/var/backup/postgresql";
|
||||
type = types.path;
|
||||
description = ''
|
||||
Location to put the gzipped PostgreSQL database dumps.
|
||||
Path of directory where the PostgreSQL database dumps will be placed.
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -101,6 +122,14 @@ in {
|
|||
when no databases where specified.
|
||||
'';
|
||||
};
|
||||
|
||||
compression = mkOption {
|
||||
type = types.enum ["none" "gzip" "zstd"];
|
||||
default = "gzip";
|
||||
description = ''
|
||||
The type of compression to use on the generated database dump.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
|
|
@ -30,8 +30,7 @@ in
|
|||
|
||||
apiSocket = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
example = "/run/klipper/api";
|
||||
default = "/run/klipper/api";
|
||||
description = "Path of the API socket to create.";
|
||||
};
|
||||
|
||||
|
|
135
nixos/modules/services/misc/moonraker.nix
Normal file
135
nixos/modules/services/misc/moonraker.nix
Normal file
|
@ -0,0 +1,135 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
let
|
||||
pkg = pkgs.moonraker;
|
||||
cfg = config.services.moonraker;
|
||||
format = pkgs.formats.ini {
|
||||
# https://github.com/NixOS/nixpkgs/pull/121613#issuecomment-885241996
|
||||
listToValue = l:
|
||||
if builtins.length l == 1 then generators.mkValueStringDefault {} (head l)
|
||||
else lib.concatMapStrings (s: "\n ${generators.mkValueStringDefault {} s}") l;
|
||||
mkKeyValue = generators.mkKeyValueDefault {} ":";
|
||||
};
|
||||
in {
|
||||
options = {
|
||||
services.moonraker = {
|
||||
enable = mkEnableOption "Moonraker, an API web server for Klipper";
|
||||
|
||||
klipperSocket = mkOption {
|
||||
type = types.path;
|
||||
default = config.services.klipper.apiSocket;
|
||||
description = "Path to Klipper's API socket.";
|
||||
};
|
||||
|
||||
stateDir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/moonraker";
|
||||
description = "The directory containing the Moonraker databases.";
|
||||
};
|
||||
|
||||
configDir = mkOption {
|
||||
type = types.path;
|
||||
default = cfg.stateDir + "/config";
|
||||
description = ''
|
||||
The directory containing client-writable configuration files.
|
||||
|
||||
Clients will be able to edit files in this directory via the API. This directory must be writable.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "moonraker";
|
||||
description = "User account under which Moonraker runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "moonraker";
|
||||
description = "Group account under which Moonraker runs.";
|
||||
};
|
||||
|
||||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
example = "0.0.0.0";
|
||||
description = "The IP or host to listen on.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.ints.unsigned;
|
||||
default = 7125;
|
||||
description = "The port to listen on.";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = format.type;
|
||||
default = { };
|
||||
example = {
|
||||
authorization = {
|
||||
trusted_clients = [ "10.0.0.0/24" ];
|
||||
cors_domains = [ "https://app.fluidd.xyz" ];
|
||||
};
|
||||
};
|
||||
description = ''
|
||||
Configuration for Moonraker. See the <link xlink:href="https://moonraker.readthedocs.io/en/latest/configuration/">documentation</link>
|
||||
for supported values.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
warnings = optional (cfg.settings ? update_manager)
|
||||
''Enabling update_manager is not supported on NixOS and will lead to non-removable warnings in some clients.'';
|
||||
|
||||
users.users = optionalAttrs (cfg.user == "moonraker") {
|
||||
moonraker = {
|
||||
group = cfg.group;
|
||||
uid = config.ids.uids.moonraker;
|
||||
};
|
||||
};
|
||||
|
||||
users.groups = optionalAttrs (cfg.group == "moonraker") {
|
||||
moonraker.gid = config.ids.gids.moonraker;
|
||||
};
|
||||
|
||||
environment.etc."moonraker.cfg".source = let
|
||||
forcedConfig = {
|
||||
server = {
|
||||
host = cfg.address;
|
||||
port = cfg.port;
|
||||
klippy_uds_address = cfg.klipperSocket;
|
||||
config_path = cfg.configDir;
|
||||
database_path = "${cfg.stateDir}/database";
|
||||
};
|
||||
};
|
||||
fullConfig = recursiveUpdate cfg.settings forcedConfig;
|
||||
in format.generate "moonraker.cfg" fullConfig;
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.stateDir}' - ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.configDir}' - ${cfg.user} ${cfg.group} - -"
|
||||
];
|
||||
|
||||
systemd.services.moonraker = {
|
||||
description = "Moonraker, an API web server for Klipper";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ]
|
||||
++ optional config.services.klipper.enable "klipper.service";
|
||||
|
||||
# Moonraker really wants its own config to be writable...
|
||||
script = ''
|
||||
cp /etc/moonraker.cfg ${cfg.configDir}/moonraker-temp.cfg
|
||||
chmod u+w ${cfg.configDir}/moonraker-temp.cfg
|
||||
exec ${pkg}/bin/moonraker -c ${cfg.configDir}/moonraker-temp.cfg
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
WorkingDirectory = cfg.stateDir;
|
||||
Group = cfg.group;
|
||||
User = cfg.user;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
326
nixos/modules/services/misc/nitter.nix
Normal file
326
nixos/modules/services/misc/nitter.nix
Normal file
|
@ -0,0 +1,326 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.nitter;
|
||||
configFile = pkgs.writeText "nitter.conf" ''
|
||||
${generators.toINI {
|
||||
# String values need to be quoted
|
||||
mkKeyValue = generators.mkKeyValueDefault {
|
||||
mkValueString = v:
|
||||
if isString v then "\"" + (strings.escape ["\""] (toString v)) + "\""
|
||||
else generators.mkValueStringDefault {} v;
|
||||
} " = ";
|
||||
} (lib.recursiveUpdate {
|
||||
Server = cfg.server;
|
||||
Cache = cfg.cache;
|
||||
Config = cfg.config // { hmacKey = "@hmac@"; };
|
||||
Preferences = cfg.preferences;
|
||||
} cfg.settings)}
|
||||
'';
|
||||
# `hmac` is a secret used for cryptographic signing of video URLs.
|
||||
# Generate it on first launch, then copy configuration and replace
|
||||
# `@hmac@` with this value.
|
||||
# We are not using sed as it would leak the value in the command line.
|
||||
preStart = pkgs.writers.writePython3 "nitter-prestart" {} ''
|
||||
import os
|
||||
import secrets
|
||||
|
||||
state_dir = os.environ.get("STATE_DIRECTORY")
|
||||
if not os.path.isfile(f"{state_dir}/hmac"):
|
||||
# Generate hmac on first launch
|
||||
hmac = secrets.token_hex(32)
|
||||
with open(f"{state_dir}/hmac", "w") as f:
|
||||
f.write(hmac)
|
||||
else:
|
||||
# Load previously generated hmac
|
||||
with open(f"{state_dir}/hmac", "r") as f:
|
||||
hmac = f.read()
|
||||
|
||||
configFile = "${configFile}"
|
||||
with open(configFile, "r") as f_in:
|
||||
with open(f"{state_dir}/nitter.conf", "w") as f_out:
|
||||
f_out.write(f_in.read().replace("@hmac@", hmac))
|
||||
'';
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.nitter = {
|
||||
enable = mkEnableOption "If enabled, start Nitter.";
|
||||
|
||||
server = {
|
||||
address = mkOption {
|
||||
type = types.str;
|
||||
default = "0.0.0.0";
|
||||
example = "127.0.0.1";
|
||||
description = "The address to listen on.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 8080;
|
||||
example = 8000;
|
||||
description = "The port to listen on.";
|
||||
};
|
||||
|
||||
https = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Set secure attribute on cookies. Keep it disabled to enable cookies when not using HTTPS.";
|
||||
};
|
||||
|
||||
httpMaxConnections = mkOption {
|
||||
type = types.int;
|
||||
default = 100;
|
||||
description = "Maximum number of HTTP connections.";
|
||||
};
|
||||
|
||||
staticDir = mkOption {
|
||||
type = types.path;
|
||||
default = "${pkgs.nitter}/share/nitter/public";
|
||||
defaultText = "\${pkgs.nitter}/share/nitter/public";
|
||||
description = "Path to the static files directory.";
|
||||
};
|
||||
|
||||
title = mkOption {
|
||||
type = types.str;
|
||||
default = "nitter";
|
||||
description = "Title of the instance.";
|
||||
};
|
||||
|
||||
hostname = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
example = "nitter.net";
|
||||
description = "Hostname of the instance.";
|
||||
};
|
||||
};
|
||||
|
||||
cache = {
|
||||
listMinutes = mkOption {
|
||||
type = types.int;
|
||||
default = 240;
|
||||
description = "How long to cache list info (not the tweets, so keep it high).";
|
||||
};
|
||||
|
||||
rssMinutes = mkOption {
|
||||
type = types.int;
|
||||
default = 10;
|
||||
description = "How long to cache RSS queries.";
|
||||
};
|
||||
|
||||
redisHost = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
description = "Redis host.";
|
||||
};
|
||||
|
||||
redisPort = mkOption {
|
||||
type = types.port;
|
||||
default = 6379;
|
||||
description = "Redis port.";
|
||||
};
|
||||
|
||||
redisConnections = mkOption {
|
||||
type = types.int;
|
||||
default = 20;
|
||||
description = "Redis connection pool size.";
|
||||
};
|
||||
|
||||
redisMaxConnections = mkOption {
|
||||
type = types.int;
|
||||
default = 30;
|
||||
description = ''
|
||||
Maximum number of connections to Redis.
|
||||
|
||||
New connections are opened when none are available, but if the
|
||||
pool size goes above this, they are closed when released, do not
|
||||
worry about this unless you receive tons of requests per second.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
base64Media = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Use base64 encoding for proxied media URLs.";
|
||||
};
|
||||
|
||||
tokenCount = mkOption {
|
||||
type = types.int;
|
||||
default = 10;
|
||||
description = ''
|
||||
Minimum amount of usable tokens.
|
||||
|
||||
Tokens are used to authorize API requests, but they expire after
|
||||
~1 hour, and have a limit of 187 requests. The limit gets reset
|
||||
every 15 minutes, and the pool is filled up so there is always at
|
||||
least tokenCount usable tokens. Only increase this if you receive
|
||||
major bursts all the time.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
preferences = {
|
||||
replaceTwitter = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
example = "nitter.net";
|
||||
description = "Replace Twitter links with links to this instance (blank to disable).";
|
||||
};
|
||||
|
||||
replaceYouTube = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
example = "piped.kavin.rocks";
|
||||
description = "Replace YouTube links with links to this instance (blank to disable).";
|
||||
};
|
||||
|
||||
replaceInstagram = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = "Replace Instagram links with links to this instance (blank to disable).";
|
||||
};
|
||||
|
||||
mp4Playback = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Enable MP4 video playback.";
|
||||
};
|
||||
|
||||
hlsPlayback = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enable HLS video streaming (requires JavaScript).";
|
||||
};
|
||||
|
||||
proxyVideos = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Proxy video streaming through the server (might be slow).";
|
||||
};
|
||||
|
||||
muteVideos = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Mute videos by default.";
|
||||
};
|
||||
|
||||
autoplayGifs = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Autoplay GIFs.";
|
||||
};
|
||||
|
||||
theme = mkOption {
|
||||
type = types.str;
|
||||
default = "Nitter";
|
||||
description = "Instance theme.";
|
||||
};
|
||||
|
||||
infiniteScroll = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Infinite scrolling (requires JavaScript, experimental!).";
|
||||
};
|
||||
|
||||
stickyProfile = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Make profile sidebar stick to top.";
|
||||
};
|
||||
|
||||
bidiSupport = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Support bidirectional text (makes clicking on tweets harder).";
|
||||
};
|
||||
|
||||
hideTweetStats = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Hide tweet stats (replies, retweets, likes).";
|
||||
};
|
||||
|
||||
hideBanner = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Hide profile banner.";
|
||||
};
|
||||
|
||||
hidePins = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Hide pinned tweets.";
|
||||
};
|
||||
|
||||
hideReplies = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Hide tweet replies.";
|
||||
};
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = types.attrs;
|
||||
default = {};
|
||||
description = ''
|
||||
Add settings here to override NixOS module generated settings.
|
||||
|
||||
Check the official repository for the available settings:
|
||||
https://github.com/zedeus/nitter/blob/master/nitter.conf
|
||||
'';
|
||||
};
|
||||
|
||||
redisCreateLocally = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Configure local Redis server for Nitter.";
|
||||
};
|
||||
|
||||
openFirewall = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Open ports in the firewall for Nitter web interface.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = !cfg.redisCreateLocally || (cfg.cache.redisHost == "localhost" && cfg.cache.redisPort == 6379);
|
||||
message = "When services.nitter.redisCreateLocally is enabled, you need to use localhost:6379 as a cache server.";
|
||||
}
|
||||
];
|
||||
|
||||
systemd.services.nitter = {
|
||||
description = "Nitter (An alternative Twitter front-end)";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "syslog.target" "network.target" ];
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
StateDirectory = "nitter";
|
||||
Environment = [ "NITTER_CONF_FILE=/var/lib/nitter/nitter.conf" ];
|
||||
# Some parts of Nitter expect `public` folder in working directory,
|
||||
# see https://github.com/zedeus/nitter/issues/414
|
||||
WorkingDirectory = "${pkgs.nitter}/share/nitter";
|
||||
ExecStart = "${pkgs.nitter}/bin/nitter";
|
||||
ExecStartPre = "${preStart}";
|
||||
AmbientCapabilities = lib.mkIf (cfg.server.port < 1024) [ "CAP_NET_BIND_SERVICE" ];
|
||||
Restart = "on-failure";
|
||||
RestartSec = "5s";
|
||||
};
|
||||
};
|
||||
|
||||
services.redis = lib.mkIf (cfg.redisCreateLocally) {
|
||||
enable = true;
|
||||
};
|
||||
|
||||
networking.firewall = mkIf cfg.openFirewall {
|
||||
allowedTCPPorts = [ cfg.server.port ];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -271,13 +271,14 @@ in
|
|||
kmenuedit
|
||||
kscreen
|
||||
kscreenlocker
|
||||
ksysguard
|
||||
ksystemstats
|
||||
kwayland
|
||||
kwin
|
||||
kwrited
|
||||
libkscreen
|
||||
libksysguard
|
||||
milou
|
||||
plasma-systemmonitor
|
||||
plasma-browser-integration
|
||||
plasma-integration
|
||||
polkit-kde-agent
|
||||
|
|
|
@ -26,6 +26,7 @@ in
|
|||
./leftwm.nix
|
||||
./lwm.nix
|
||||
./metacity.nix
|
||||
./mlvwm.nix
|
||||
./mwm.nix
|
||||
./openbox.nix
|
||||
./pekwm.nix
|
||||
|
|
41
nixos/modules/services/x11/window-managers/mlvwm.nix
Normal file
41
nixos/modules/services/x11/window-managers/mlvwm.nix
Normal file
|
@ -0,0 +1,41 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let cfg = config.services.xserver.windowManager.mlvwm;
|
||||
|
||||
in
|
||||
{
|
||||
|
||||
options.services.xserver.windowManager.mlvwm = {
|
||||
enable = mkEnableOption "Macintosh-like Virtual Window Manager";
|
||||
|
||||
configFile = mkOption {
|
||||
default = null;
|
||||
type = with types; nullOr path;
|
||||
description = ''
|
||||
Path to the mlvwm configuration file.
|
||||
If left at the default value, $HOME/.mlvwmrc will be used.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.xserver.windowManager.session = [{
|
||||
name = "mlvwm";
|
||||
start = ''
|
||||
${pkgs.mlvwm}/bin/mlvwm ${optionalString (cfg.configFile != null)
|
||||
"-f /etc/mlvwm/mlvwmrc"
|
||||
} &
|
||||
waitPID=$!
|
||||
'';
|
||||
}];
|
||||
|
||||
environment.etc."mlvwm/mlvwmrc" = mkIf (cfg.configFile != null) {
|
||||
source = cfg.configFile;
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.mlvwm ];
|
||||
};
|
||||
}
|
|
@ -657,6 +657,7 @@ in
|
|||
pkgs.xterm
|
||||
pkgs.xdg-utils
|
||||
xorg.xf86inputevdev.out # get evdev.4 man page
|
||||
pkgs.nixos-icons # needed for gnome and pantheon about dialog, nixos-manual and maybe more
|
||||
]
|
||||
++ optional (elem "virtualbox" cfg.videoDrivers) xorg.xrefresh;
|
||||
|
||||
|
|
|
@ -301,6 +301,7 @@ in
|
|||
nginx-sandbox = handleTestOn ["x86_64-linux"] ./nginx-sandbox.nix {};
|
||||
nginx-sso = handleTest ./nginx-sso.nix {};
|
||||
nginx-variants = handleTest ./nginx-variants.nix {};
|
||||
nitter = handleTest ./nitter.nix {};
|
||||
nix-serve = handleTest ./nix-ssh-serve.nix {};
|
||||
nix-ssh-serve = handleTest ./nix-ssh-serve.nix {};
|
||||
nixos-generate-config = handleTest ./nixos-generate-config.nix {};
|
||||
|
|
|
@ -75,7 +75,6 @@ let
|
|||
}) { inherit system; });
|
||||
|
||||
in with pkgs; {
|
||||
kafka_2_4 = makeKafkaTest "kafka_2_4" apacheKafka_2_4;
|
||||
kafka_2_5 = makeKafkaTest "kafka_2_5" apacheKafka_2_5;
|
||||
kafka_2_6 = makeKafkaTest "kafka_2_6" apacheKafka_2_6;
|
||||
kafka_2_7 = makeKafkaTest "kafka_2_7" apacheKafka_2_7;
|
||||
kafka_2_8 = makeKafkaTest "kafka_2_8" apacheKafka_2_8;
|
||||
}
|
||||
|
|
16
nixos/tests/nitter.nix
Normal file
16
nixos/tests/nitter.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
import ./make-test-python.nix ({ pkgs, ... }:
|
||||
|
||||
{
|
||||
name = "nitter";
|
||||
meta.maintainers = with pkgs.lib.maintainers; [ erdnaxe ];
|
||||
|
||||
nodes.machine = {
|
||||
services.nitter.enable = true;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_unit("nitter.service")
|
||||
machine.wait_for_open_port("8080")
|
||||
machine.succeed("curl --fail http://localhost:8080/")
|
||||
'';
|
||||
})
|
|
@ -43,6 +43,7 @@ let
|
|||
testScript = let
|
||||
backupName = if backup-all then "all" else "postgres";
|
||||
backupService = if backup-all then "postgresqlBackup" else "postgresqlBackup-postgres";
|
||||
backupFileBase = "/var/backup/postgresql/${backupName}";
|
||||
in ''
|
||||
def check_count(statement, lines):
|
||||
return 'test $(sudo -u postgres psql postgres -tAc "{}"|wc -l) -eq {}'.format(
|
||||
|
@ -72,9 +73,32 @@ let
|
|||
with subtest("Backup service works"):
|
||||
machine.succeed(
|
||||
"systemctl start ${backupService}.service",
|
||||
"zcat /var/backup/postgresql/${backupName}.sql.gz | grep '<test>ok</test>'",
|
||||
"zcat ${backupFileBase}.sql.gz | grep '<test>ok</test>'",
|
||||
"ls -hal /var/backup/postgresql/ >/dev/console",
|
||||
"stat -c '%a' /var/backup/postgresql/${backupName}.sql.gz | grep 600",
|
||||
"stat -c '%a' ${backupFileBase}.sql.gz | grep 600",
|
||||
)
|
||||
with subtest("Backup service removes prev files"):
|
||||
machine.succeed(
|
||||
# Create dummy prev files.
|
||||
"touch ${backupFileBase}.prev.sql{,.gz,.zstd}",
|
||||
"chown postgres:postgres ${backupFileBase}.prev.sql{,.gz,.zstd}",
|
||||
|
||||
# Run backup.
|
||||
"systemctl start ${backupService}.service",
|
||||
"ls -hal /var/backup/postgresql/ >/dev/console",
|
||||
|
||||
# Since nothing has changed in the database, the cur and prev files
|
||||
# should match.
|
||||
"zcat ${backupFileBase}.sql.gz | grep '<test>ok</test>'",
|
||||
"cmp ${backupFileBase}.sql.gz ${backupFileBase}.prev.sql.gz",
|
||||
|
||||
# The prev files with unused suffix should be removed.
|
||||
"[ ! -f '${backupFileBase}.prev.sql' ]",
|
||||
"[ ! -f '${backupFileBase}.prev.sql.zstd' ]",
|
||||
|
||||
# Both cur and prev file should only be accessible by the postgres user.
|
||||
"stat -c '%a' ${backupFileBase}.sql.gz | grep 600",
|
||||
"stat -c '%a' '${backupFileBase}.prev.sql.gz' | grep 600",
|
||||
)
|
||||
with subtest("Backup service fails gracefully"):
|
||||
# Sabotage the backup process
|
||||
|
@ -84,8 +108,8 @@ let
|
|||
)
|
||||
machine.succeed(
|
||||
"ls -hal /var/backup/postgresql/ >/dev/console",
|
||||
"zcat /var/backup/postgresql/${backupName}.prev.sql.gz | grep '<test>ok</test>'",
|
||||
"stat /var/backup/postgresql/${backupName}.in-progress.sql.gz",
|
||||
"zcat ${backupFileBase}.prev.sql.gz | grep '<test>ok</test>'",
|
||||
"stat ${backupFileBase}.in-progress.sql.gz",
|
||||
)
|
||||
# In a previous version, the second run would overwrite prev.sql.gz,
|
||||
# so we test a second run as well.
|
||||
|
@ -93,8 +117,8 @@ let
|
|||
"systemctl start ${backupService}.service",
|
||||
)
|
||||
machine.succeed(
|
||||
"stat /var/backup/postgresql/${backupName}.in-progress.sql.gz",
|
||||
"zcat /var/backup/postgresql/${backupName}.prev.sql.gz | grep '<test>ok</test>'",
|
||||
"stat ${backupFileBase}.in-progress.sql.gz",
|
||||
"zcat ${backupFileBase}.prev.sql.gz | grep '<test>ok</test>'",
|
||||
)
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,16 @@
|
|||
import ./make-test-python.nix ({ pkgs, ...} :
|
||||
|
||||
{
|
||||
let
|
||||
sqlcipher-signal = pkgs.writeShellScriptBin "sqlcipher" ''
|
||||
set -eu
|
||||
|
||||
readonly CFG=~/.config/Signal/config.json
|
||||
readonly KEY="$(${pkgs.jq}/bin/jq --raw-output '.key' $CFG)"
|
||||
readonly DB="$1"
|
||||
readonly SQL="SELECT * FROM sqlite_master where type='table'"
|
||||
${pkgs.sqlcipher}/bin/sqlcipher "$DB" "PRAGMA key = \"x'$KEY'\"; $SQL"
|
||||
'';
|
||||
in {
|
||||
name = "signal-desktop";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ flokli primeos ];
|
||||
|
@ -16,7 +26,9 @@ import ./make-test-python.nix ({ pkgs, ...} :
|
|||
|
||||
services.xserver.enable = true;
|
||||
test-support.displayManager.auto.user = "alice";
|
||||
environment.systemPackages = with pkgs; [ signal-desktop file ];
|
||||
environment.systemPackages = with pkgs; [
|
||||
signal-desktop file sqlite sqlcipher-signal
|
||||
];
|
||||
virtualisation.memorySize = 1024;
|
||||
};
|
||||
|
||||
|
@ -44,11 +56,15 @@ import ./make-test-python.nix ({ pkgs, ...} :
|
|||
# - https://github.com/NixOS/nixpkgs/issues/108772
|
||||
# - https://github.com/NixOS/nixpkgs/pull/117555
|
||||
print(machine.succeed("su - alice -c 'file ~/.config/Signal/sql/db.sqlite'"))
|
||||
machine.succeed(
|
||||
"su - alice -c 'file ~/.config/Signal/sql/db.sqlite' | grep 'db.sqlite: data'"
|
||||
)
|
||||
machine.fail(
|
||||
"su - alice -c 'file ~/.config/Signal/sql/db.sqlite' | grep -e SQLite -e database"
|
||||
)
|
||||
# Only SQLCipher should be able to read the encrypted DB:
|
||||
machine.fail(
|
||||
"su - alice -c 'sqlite3 ~/.config/Signal/sql/db.sqlite .databases'"
|
||||
)
|
||||
print(machine.succeed(
|
||||
"su - alice -c 'sqlcipher ~/.config/Signal/sql/db.sqlite'"
|
||||
))
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kdev-php";
|
||||
version = "5.6.1";
|
||||
version = "5.6.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz";
|
||||
sha256 = "0xjijkmp3drnfrx4gb4bwf8n1dgwk310c0mssm6drffwix7ljpbz";
|
||||
sha256 = "sha256-P7u/KIf/1YkJ2uWsuVThILP87vaYSbHpx5CtnSR3YbU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake extra-cmake-modules ];
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kdev-python";
|
||||
version = "5.6.1";
|
||||
version = "5.6.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/KDE/${pname}/archive/v${version}.tar.gz";
|
||||
sha256 = "1jma7j70imzxlyz8580m79jycif7zphga3zzfmqimn8syzz917hv";
|
||||
sha256 = "sha256-Iw3puQ3ZS0eNfBvaZ4cxsP49IRqIMX3R+r3OPG771RI=";
|
||||
};
|
||||
|
||||
cmakeFlags = [
|
||||
|
|
|
@ -13,23 +13,24 @@
|
|||
, wrapGAppsHook
|
||||
, cairo
|
||||
, glib
|
||||
, goocanvas2
|
||||
, goocanvas3
|
||||
, gtk3
|
||||
, gtksourceview3
|
||||
, json-glib
|
||||
, libarchive
|
||||
, libgee
|
||||
, libxml2 }:
|
||||
, libxml2
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "akira";
|
||||
version = "0.0.13";
|
||||
version = "0.0.14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "akiraux";
|
||||
repo = "Akira";
|
||||
rev = "v${version}";
|
||||
sha256 = "1i20q78jagy8xky68nmd0n7mqvh88r98kp626rnlgyzvlc3c22cm";
|
||||
sha256 = "1zbb2bsc6v2rwrbigbkgrzfjmlj96s3ri73zbdcyqg4p08v1w4l6";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -47,7 +48,7 @@ stdenv.mkDerivation rec {
|
|||
buildInputs = [
|
||||
cairo
|
||||
glib
|
||||
goocanvas2
|
||||
goocanvas3
|
||||
pantheon.granite
|
||||
gtk3
|
||||
gtksourceview3
|
||||
|
@ -67,7 +68,7 @@ stdenv.mkDerivation rec {
|
|||
meta = with lib; {
|
||||
description = "Native Linux Design application built in Vala and GTK";
|
||||
homepage = "https://github.com/akiraux/Akira";
|
||||
license = licenses.gpl3;
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ Br1ght0ne neonfuz ] ++ pantheon.maintainers;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
|
|
|
@ -51,6 +51,7 @@
|
|||
, makeWrapper
|
||||
, autoreconfHook
|
||||
, gtk-doc
|
||||
, graphviz
|
||||
}:
|
||||
let
|
||||
python = python2.withPackages (pp: [ pp.pygtk ]);
|
||||
|
@ -154,7 +155,8 @@ stdenv.mkDerivation rec {
|
|||
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/glimpse-${lib.versions.majorMinor version} \
|
||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE"
|
||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
|
||||
--prefix PATH ":" ${ lib.makeBinPath [ graphviz ] }
|
||||
'';
|
||||
|
||||
passthru = rec {
|
||||
|
|
|
@ -26,13 +26,13 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "megapixels";
|
||||
version = "1.1.0";
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~martijnbraam";
|
||||
repo = "megapixels";
|
||||
rev = version;
|
||||
sha256 = "0y56c6vchlzidfmp3a3bdc228vbhy7zaxvmhkyxchfb752yzr0n3";
|
||||
sha256 = "0jnfzwvq58p4ksyifma10i158r2fb7fv72ymibgcxbnx596xpjb2";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ meson ninja pkg-config wrapGAppsHook ];
|
||||
|
@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
|
|||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "GTK3 camera application using raw v4l2 and media-requests";
|
||||
description = "GTK4 camera application that knows how to deal with the media request api";
|
||||
homepage = "https://sr.ht/~martijnbraam/Megapixels";
|
||||
changelog = "https://git.sr.ht/~martijnbraam/megapixels/refs/${version}";
|
||||
license = licenses.gpl3Only;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{ stdenv, lib, fetchurl, runtimeShell
|
||||
, gettext, pkg-config, python3
|
||||
, avahi, libgphoto2, libieee1284, libjpeg, libpng, libtiff, libusb1, libv4l, net-snmp
|
||||
, curl, systemd, libxml2, poppler
|
||||
, curl, systemd, libxml2, poppler, gawk
|
||||
, sane-drivers
|
||||
|
||||
# List of { src name backend } attibute sets - see installFirmware below:
|
||||
|
@ -51,6 +51,7 @@ stdenv.mkDerivation {
|
|||
systemd
|
||||
libxml2
|
||||
poppler
|
||||
gawk
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
|
|
@ -3,14 +3,11 @@
|
|||
, docbook_xsl_ns }:
|
||||
|
||||
mkDerivation rec {
|
||||
|
||||
pname = "bibletime";
|
||||
version = "3.0.1";
|
||||
|
||||
pname = "bibletime";
|
||||
|
||||
src = fetchurl {
|
||||
url =
|
||||
"https://github.com/bibletime/bibletime/releases/download/v${version}/${pname}-${version}.tar.xz";
|
||||
url = "https://github.com/bibletime/bibletime/releases/download/v${version}/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-ay4o8mfgj/m3BBoBMXVgw0NTlaFgJQvLlNYvEZRXSiA=";
|
||||
};
|
||||
|
||||
|
@ -37,11 +34,11 @@ mkDerivation rec {
|
|||
"-DBT_DOCBOOK_XSL_PDF_DOCBOOK_XSL=${docbook_xsl_ns}/share/xml/docbook-xsl-ns/html/chunk.xsl"
|
||||
];
|
||||
|
||||
meta = {
|
||||
meta = with lib; {
|
||||
description = "A Qt4 Bible study tool";
|
||||
homepage = "http://www.bibletime.info/";
|
||||
platforms = lib.platforms.linux;
|
||||
license = lib.licenses.gpl2Plus;
|
||||
maintainers = [ lib.maintainers.piotr ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = [ maintainers.piotr ];
|
||||
};
|
||||
}
|
||||
|
|
34
pkgs/applications/misc/fluidd/default.nix
Normal file
34
pkgs/applications/misc/fluidd/default.nix
Normal file
|
@ -0,0 +1,34 @@
|
|||
{ lib, stdenvNoCC, fetchurl, unzip }:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "fluidd";
|
||||
version = "1.16.2";
|
||||
|
||||
src = fetchurl {
|
||||
name = "fluidd-v${version}.zip";
|
||||
url = "https://github.com/cadriel/fluidd/releases/download/v${version}/fluidd.zip";
|
||||
sha256 = "1qwj25xvvxvm1fxx216nn2gp7js4d682mm3l4s7ns90fc5ygvc8i";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
unpackPhase = ''
|
||||
mkdir fluidd
|
||||
unzip $src -d fluidd
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/fluidd
|
||||
cp -r fluidd $out/share/fluidd/htdocs
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Klipper web interface";
|
||||
homepage = "https://docs.fluidd.xyz";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ zhaofengli ];
|
||||
};
|
||||
}
|
|
@ -1,2 +1,8 @@
|
|||
source 'https://rubygems.org'
|
||||
gem 'gollum'
|
||||
|
||||
gem 'asciidoctor'
|
||||
gem 'creole'
|
||||
gem 'wikicloth'
|
||||
gem 'org-ruby'
|
||||
gem 'RedCloth'
|
||||
|
|
|
@ -1,9 +1,14 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
RedCloth (4.3.2)
|
||||
asciidoctor (2.0.15)
|
||||
builder (3.2.4)
|
||||
concurrent-ruby (1.1.8)
|
||||
crass (1.0.6)
|
||||
creole (0.5.0)
|
||||
execjs (2.7.0)
|
||||
expression_parser (0.9.0)
|
||||
ffi (1.14.2)
|
||||
gemojione (4.3.3)
|
||||
json
|
||||
|
@ -36,6 +41,7 @@ GEM
|
|||
gollum-rugged_adapter (1.0)
|
||||
mime-types (>= 1.15)
|
||||
rugged (~> 0.99)
|
||||
htmlentities (4.3.4)
|
||||
json (2.5.1)
|
||||
kramdown (2.3.0)
|
||||
rexml
|
||||
|
@ -59,6 +65,8 @@ GEM
|
|||
racc (~> 1.4)
|
||||
octicons (12.1.0)
|
||||
nokogiri (>= 1.6.3.1)
|
||||
org-ruby (0.9.12)
|
||||
rubypants (~> 0.2)
|
||||
racc (1.5.2)
|
||||
rack (2.2.3)
|
||||
rack-protection (2.1.0)
|
||||
|
@ -71,6 +79,7 @@ GEM
|
|||
rss (0.2.9)
|
||||
rexml
|
||||
ruby2_keywords (0.0.4)
|
||||
rubypants (0.7.1)
|
||||
rugged (0.99.0)
|
||||
sass (3.7.4)
|
||||
sass-listen (~> 4.0.0)
|
||||
|
@ -105,12 +114,23 @@ GEM
|
|||
unf_ext
|
||||
unf_ext (0.0.7.7)
|
||||
useragent (0.16.10)
|
||||
wikicloth (0.8.3)
|
||||
builder
|
||||
expression_parser
|
||||
htmlentities
|
||||
nokogiri
|
||||
twitter-text
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
RedCloth
|
||||
asciidoctor
|
||||
creole
|
||||
gollum
|
||||
org-ruby
|
||||
wikicloth
|
||||
|
||||
BUNDLED WITH
|
||||
2.1.4
|
||||
2.2.20
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{ lib, stdenv, bundlerEnv, ruby, makeWrapper, bundlerUpdateScript
|
||||
, git }:
|
||||
, git, docutils, perl }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gollum";
|
||||
|
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
|
|||
in ''
|
||||
mkdir -p $out/bin
|
||||
makeWrapper ${env}/bin/gollum $out/bin/gollum \
|
||||
--prefix PATH ":" ${lib.makeBinPath [ git ]}
|
||||
--prefix PATH ":" ${lib.makeBinPath [ git docutils perl]}
|
||||
makeWrapper ${env}/bin/gollum-migrate-tags $out/bin/gollum-migrate-tags \
|
||||
--prefix PATH ":" ${lib.makeBinPath [ git ]}
|
||||
'';
|
||||
|
|
|
@ -1,4 +1,24 @@
|
|||
{
|
||||
asciidoctor = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0k3lijm4dmiz977bfmpclk5glj5jwv7bidamwwwywm60ywb0n4n4";
|
||||
type = "gem";
|
||||
};
|
||||
version = "2.0.15";
|
||||
};
|
||||
builder = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "045wzckxpwcqzrjr353cxnyaxgf0qg22jh00dcx7z38cys5g1jlr";
|
||||
type = "gem";
|
||||
};
|
||||
version = "3.2.4";
|
||||
};
|
||||
concurrent-ruby = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
|
@ -19,6 +39,16 @@
|
|||
};
|
||||
version = "1.0.6";
|
||||
};
|
||||
creole = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "00rcscz16idp6dx0dk5yi5i0fz593i3r6anbn5bg2q07v3i025wm";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.5.0";
|
||||
};
|
||||
execjs = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
|
@ -29,6 +59,16 @@
|
|||
};
|
||||
version = "2.7.0";
|
||||
};
|
||||
expression_parser = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1938z3wmmdabqxlh5d5c56xfg1jc6z15p7zjyhvk7364zwydnmib";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.9.0";
|
||||
};
|
||||
ffi = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
|
@ -93,6 +133,16 @@
|
|||
};
|
||||
version = "1.0";
|
||||
};
|
||||
htmlentities = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1nkklqsn8ir8wizzlakncfv42i32wc0w9hxp00hvdlgjr7376nhj";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.3.4";
|
||||
};
|
||||
json = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
|
@ -231,6 +281,17 @@
|
|||
};
|
||||
version = "12.1.0";
|
||||
};
|
||||
org-ruby = {
|
||||
dependencies = ["rubypants"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0x69s7aysfiwlcpd9hkvksfyld34d8kxr62adb59vjvh8hxfrjwk";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.9.12";
|
||||
};
|
||||
racc = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
|
@ -283,6 +344,16 @@
|
|||
};
|
||||
version = "0.10.1";
|
||||
};
|
||||
RedCloth = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0m9dv7ya9q93r8x1pg2gi15rxlbck8m178j1fz7r5v6wr1avrrqy";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.3.2";
|
||||
};
|
||||
rexml = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
|
@ -324,6 +395,16 @@
|
|||
};
|
||||
version = "0.0.4";
|
||||
};
|
||||
rubypants = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0kv2way45d2dz3h5b7wxyw36clvlwrz7ydf6699d0za5vm56gsrh";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.7.1";
|
||||
};
|
||||
rugged = {
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
|
@ -484,4 +565,15 @@
|
|||
};
|
||||
version = "0.16.10";
|
||||
};
|
||||
wikicloth = {
|
||||
dependencies = ["builder" "expression_parser" "htmlentities" "nokogiri" "twitter-text"];
|
||||
groups = ["default"];
|
||||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "0c78r1rg93mb5rcrfxl01b162ma9sh46dhjksc4c9dngg62nhbjh";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.8.3";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
let
|
||||
inherit (pythonPackages) python buildPythonApplication;
|
||||
in buildPythonApplication rec {
|
||||
version = "5.1.3";
|
||||
version = "5.1.4";
|
||||
pname = "gramps";
|
||||
|
||||
nativeBuildInputs = [ wrapGAppsHook intltool gettext ];
|
||||
|
@ -26,7 +26,7 @@ in buildPythonApplication rec {
|
|||
owner = "gramps-project";
|
||||
repo = "gramps";
|
||||
rev = "v${version}";
|
||||
sha256 = "109dwkswz2h2328xkqk2zj736d117s9pp7rz5cc1qg2vxn1lpm93";
|
||||
sha256 = "00358nzyw686ypqv45imc5k9frcqnhla0hpx9ynna3iy6iz5006x";
|
||||
};
|
||||
|
||||
pythonPath = with pythonPackages; [ bsddb3 PyICU pygobject3 pycairo ];
|
||||
|
|
|
@ -2,22 +2,22 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "hugo";
|
||||
version = "0.86.1";
|
||||
version = "0.87.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gohugoio";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-2tCR4iabTLD9SynXjUM7+zNsFCCAa/n88brPnZ1DQ0Q=";
|
||||
sha256 = "sha256-2I1PDxbqtaOOlVbr7zhuawaFrFWM/PYt5QJm3N74Noc=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-ZIGw349m6k8qqrzUN/oYV/HrgBvfOo/ovjo1SUDRmyk=";
|
||||
vendorSha256 = "sha256-0pkQ+VcmK2XLaQ2XJHh5/QftSdud6Eo1nlBK+L92xKU=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
runVend = true;
|
||||
|
||||
buildFlags = [ "-tags" "extended" ];
|
||||
tags = [ "extended" ];
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
|
|
|
@ -3,20 +3,20 @@
|
|||
}:
|
||||
let
|
||||
pname = "josm";
|
||||
version = "18004";
|
||||
version = "18118";
|
||||
srcs = {
|
||||
jar = fetchurl {
|
||||
url = "https://josm.openstreetmap.de/download/josm-snapshot-${version}.jar";
|
||||
sha256 = "sha256-Cd+/sE6A0MddHeAxy3gx7ev+9UR3ZNcR0tCTmdX2FtY=";
|
||||
sha256 = "01wcbf1mh1gqxnqkc3j6h64h9sz0yd5wiwpyx4ic4d5fwkh65qym";
|
||||
};
|
||||
macosx = fetchurl {
|
||||
url = "https://josm.openstreetmap.de/download/macosx/josm-macos-${version}-java16.zip";
|
||||
sha256 = "sha256-QSVh8043K/f7gPEjosGo/DNj1d75LUFwf6EMeHk68fM=";
|
||||
sha256 = "0i1vglqg49fd3w2bny01l92wj4hvr3y35rrmd1mdff0lc1zhi397";
|
||||
};
|
||||
pkg = fetchsvn {
|
||||
url = "https://josm.openstreetmap.de/svn/trunk/native/linux/tested";
|
||||
rev = version;
|
||||
sha256 = "sha256-Ic6RtQPqpQIci1IbKgTcFmLfMdPxSVybrEAk+ttM0j8=";
|
||||
sha256 = "0gyj9kdzl920mjdmqjgiscqxyqhnvh22l6sjicf059ga0fsr3ki1";
|
||||
};
|
||||
};
|
||||
in
|
||||
|
|
|
@ -15,7 +15,7 @@ buildGoModule rec {
|
|||
|
||||
subPackages = [ "." ];
|
||||
|
||||
buildFlags = [ "-tags sqlite" ];
|
||||
tags = [ "sqlite" ];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
|
|
@ -60,6 +60,11 @@ stdenv.mkDerivation rec {
|
|||
url = "http://git.ghostscript.com/?p=mupdf.git;a=patch;h=cee7cefc610d42fd383b3c80c12cbc675443176a";
|
||||
sha256 = "18g9jsj90jnqibaff8pqi70a7x8ygc3sh4jl4xnvlv8vr7fxxbh6";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "CVE-2021-37220.patch";
|
||||
url = "http://git.ghostscript.com/?p=mupdf.git;a=patch;h=f5712c9949d026e4b891b25837edd2edc166151f";
|
||||
sha256 = "1zyw6w6zr7k2akpzkyycj2zzw3y5qc7afsn1ysklfj2rvb6cnsx3";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -8,17 +8,18 @@
|
|||
, pkg-config
|
||||
, swaylock
|
||||
, makeWrapper
|
||||
, gtk-layer-shell
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "nwg-launchers";
|
||||
version = "0.4.4";
|
||||
version = "0.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nwg-piotr";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-krhFtFQZSwfKPHmVxPGNySPL2Y9+kA0fxjZ/D+mNks4=";
|
||||
sha256 = "sha256-ZtlAs7McVQKH626h2iOhjpVaiEHeaqs9ncZ6/KnGibg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -32,6 +33,7 @@ stdenv.mkDerivation rec {
|
|||
buildInputs = [
|
||||
gtkmm3
|
||||
nlohmann_json
|
||||
gtk-layer-shell
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
|
|
|
@ -5,16 +5,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "nwg-menu";
|
||||
version = "unstable-2021-06-12";
|
||||
version = "0.1.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nwg-piotr";
|
||||
repo = "nwg-menu";
|
||||
rev = "b0746e26514a047ed9c6b975a71b7263aa39bd56";
|
||||
hash = "sha256-rxyf3CfpfWnRAlIR/pl+s7LGAZbZjdtNWPPK7BecdhQ=";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-M948RGU9/PwUtFRmf1Po7KlrGxqRPiOZKfS1Vv3vqW8=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-nN5iBleK12SKY9PBiDA+tM4B8FiVGZLXbtJM2+YrEfA=";
|
||||
vendorSha256 = "sha256-AnYtqSe8mq10FQ071GEVh65MaWek5gYlR+9d8yL0RAc=";
|
||||
|
||||
runVend = true;
|
||||
|
||||
|
|
|
@ -13,13 +13,13 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "nwg-panel";
|
||||
version = "0.3.2";
|
||||
version = "0.4.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nwg-piotr";
|
||||
repo = "nwg-panel";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-x5lGVF6eRhOVXrsBatdsiUiWs/+FxRlCtp79zA206RY=";
|
||||
sha256 = "sha256-+zJNTFYNIJKa5jK/215MoxjMKScCdWAAh4cQjEise/Q=";
|
||||
};
|
||||
|
||||
# No tests
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
python3Packages.buildPythonPackage rec {
|
||||
pname = "nwg-wrapper";
|
||||
version = "0.0.1";
|
||||
version = "0.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nwg-piotr";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1rpkcjr0chmgsfkan88lsi476bamg9a6y7h0x9zsh60a9rdf7dl8";
|
||||
sha256 = "sha256-LkAB0MrwQxP3X7glfSnI0GZMv8tjaeSOz7WSOW33wuo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ gobject-introspection wrapGAppsHook ];
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
{ lib, stdenv
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, fetchpatch
|
||||
, vala
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
, python3
|
||||
, libgee
|
||||
, gsettings-desktop-schemas
|
||||
, gnome
|
||||
, pantheon
|
||||
, wrapGAppsHook
|
||||
, gtk3
|
||||
, json-glib
|
||||
, glib
|
||||
, glib-networking
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "olifant";
|
||||
version = "0.2.1-beta6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cleac";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-3hnEa4Q1dH0R8Jp+Ew0+dH1PEm3F+56jYwqhJ+vll4M=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
python3
|
||||
vala
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
glib
|
||||
glib-networking
|
||||
gnome.libsoup
|
||||
gsettings-desktop-schemas
|
||||
gtk3
|
||||
json-glib
|
||||
libgee
|
||||
pantheon.granite
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
chmod +x meson/post_install.py
|
||||
patchShebangs meson/post_install.py
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script {
|
||||
attrPath = pname;
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "A simple Mastodon client designed for elementary OS, originally developed by @bleakgrey";
|
||||
homepage = "https://github.com/cleac/olifant";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ ] ++ teams.pantheon.members;
|
||||
};
|
||||
}
|
|
@ -21,8 +21,7 @@ buildGoModule rec {
|
|||
buildInputs = [ unixODBC icu ];
|
||||
|
||||
# These tags and flags are copied from build-release.sh
|
||||
buildFlags = [ "-tags" ];
|
||||
buildFlagsArray = [
|
||||
tags = [
|
||||
"most"
|
||||
"sqlite_app_armor"
|
||||
"sqlite_fts5"
|
||||
|
|
|
@ -136,11 +136,9 @@ let
|
|||
|
||||
nativeBuildInputs = [
|
||||
ninja pkg-config
|
||||
python2WithPackages perl nodejs
|
||||
python2WithPackages python3WithPackages perl nodejs
|
||||
gnutar which
|
||||
llvmPackages.bintools
|
||||
] ++ lib.optionals (chromiumVersionAtLeast "92") [
|
||||
python3WithPackages
|
||||
];
|
||||
|
||||
buildInputs = defaultDependencies ++ [
|
||||
|
|
|
@ -18,9 +18,9 @@
|
|||
}
|
||||
},
|
||||
"beta": {
|
||||
"version": "93.0.4577.18",
|
||||
"sha256": "1h1ppyizj5vbnrv11iy9vlcpcv8mgb9r8m2zmz6vp7q1ch6w0w4x",
|
||||
"sha256bin64": "1s5qj0pd79qbchq3awhxc86l9vmi6304z7sd9ls9f8q138789cha",
|
||||
"version": "93.0.4577.25",
|
||||
"sha256": "09v7wyy9xwrpzmsa030j8jjww30jps3lbvlq4bzppdg04fk6rbsn",
|
||||
"sha256bin64": "1l86aqym4dxsrp81ppv5cwyki4wnh7cpqy4dw88kdxgqbiwwii27",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2021-07-08",
|
||||
|
@ -44,19 +44,19 @@
|
|||
}
|
||||
},
|
||||
"ungoogled-chromium": {
|
||||
"version": "91.0.4472.164",
|
||||
"sha256": "1g96hk72ds2b0aymgw7yjr0akgx7mkp17i99nk511ncnmni6zrc4",
|
||||
"sha256bin64": "1j6p2gqlikaibcwa40k46dsm9jlrpbj21lv1snnjw8apjnjfd2wr",
|
||||
"version": "92.0.4515.131",
|
||||
"sha256": "0fnfyh61w6dmavvfbf2x1zzrby0xpx4jd4ifjsgyc39rsl789b5n",
|
||||
"sha256bin64": "04ykc7vgq47m595j0g0gl28n5rkki6aic7ck8xr08r5cia46gk3g",
|
||||
"deps": {
|
||||
"gn": {
|
||||
"version": "2021-04-06",
|
||||
"version": "2021-05-07",
|
||||
"url": "https://gn.googlesource.com/gn",
|
||||
"rev": "dba01723a441c358d843a575cb7720d54ddcdf92",
|
||||
"sha256": "199xkks67qrn0xa5fhp24waq2vk8qb78a96cb3kdd8v1hgacgb8x"
|
||||
"rev": "39a87c0b36310bdf06b692c098f199a0d97fc810",
|
||||
"sha256": "0x63jr5hssm9dl6la4q5ahy669k4gxvbapqxi5w32vv107jrj8v4"
|
||||
},
|
||||
"ungoogled-patches": {
|
||||
"rev": "91.0.4472.164-1",
|
||||
"sha256": "1vlirqrsliyl1dvm511p5axzvhvqil1m1jlk5zngvl9zfbdjw910"
|
||||
"rev": "92.0.4515.131-1",
|
||||
"sha256": "1nbgknj5ba116y47sxbp7pbma1bp0lmkyi3vk915x837ysaf6mrd"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -89,8 +89,6 @@ stdenv.mkDerivation {
|
|||
|
||||
src = fetchurl { inherit (source) url sha256; };
|
||||
|
||||
phases = [ "unpackPhase" "patchPhase" "installPhase" "fixupPhase" ];
|
||||
|
||||
libPath = lib.makeLibraryPath
|
||||
[ stdenv.cc.cc
|
||||
alsa-lib
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "telescope";
|
||||
version = "0.3.1";
|
||||
version = "0.4.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/omar-polo/telescope/releases/download/${version}/telescope-${version}.tar.gz";
|
||||
sha256 = "11xrsh064ph1idhygh52y4mqapgwn1cqr0l3naj5n2a2p7lcsvvw";
|
||||
sha256 = "086zps4nslv5isfw1b5gvms7vp3fglm7x1a6ks0h0wxarzj350bl";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -15,8 +15,8 @@ buildGoModule rec {
|
|||
|
||||
doCheck = false;
|
||||
|
||||
buildFlagsArray = [
|
||||
"-ldflags=-X github.com/containernetworking/plugins/pkg/utils/buildversion.BuildVersion=v${version}"
|
||||
ldflags = [
|
||||
"-X github.com/containernetworking/plugins/pkg/utils/buildversion.BuildVersion=v${version}"
|
||||
];
|
||||
|
||||
subPackages = [
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "fluxctl";
|
||||
version = "1.23.1";
|
||||
version = "1.23.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "weaveworks";
|
||||
repo = "flux";
|
||||
rev = version;
|
||||
sha256 = "sha256-PcDipeW+ebGm6w/htjyx1/PXaanh2gp3EyHkcLY9peo=";
|
||||
sha256 = "sha256-Ypy462QYmRiQrnOYjBA4BrtPKMT7sNpWb4St3KMVqbI=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-CxGa95x742vS+8WxK/I2ZbEn2mJPwpXa5zm3xBNbX4U=";
|
||||
vendorSha256 = "sha256-GUeLbngahbjEXetCfFbwWhn7jtyqKu7I2dyfjKalUM0=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "helmfile";
|
||||
version = "0.139.9";
|
||||
version = "0.140.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "roboll";
|
||||
repo = "helmfile";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-MHvfDeN4r9jwnXANHTpMEQUIoAZ+uXAmDtl8wdcpjHI=";
|
||||
sha256 = "sha256-Y1BlvUudxEZ1G893dwYU+R6k2QAYohx4+0yysYaUM0E=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-QYI5HxEUNrZKSjk0LlbhjvxXlWCbbLup51Ht3HJDNC8=";
|
||||
|
|
|
@ -22,8 +22,8 @@ let generic = { channel, version, sha256, vendorSha256 }:
|
|||
env GOFLAGS="" go generate ./viz/static
|
||||
'';
|
||||
|
||||
buildFlagsArray = [
|
||||
"-tags=prod"
|
||||
tags = [
|
||||
"prod"
|
||||
];
|
||||
|
||||
ldflags = [
|
||||
|
|
|
@ -6,6 +6,6 @@
|
|||
|
||||
callPackage ./generic.nix {
|
||||
inherit buildGoPackage nvidia_x11 nvidiaGpuSupport;
|
||||
version = "1.0.8";
|
||||
sha256 = "1kjwa9lnxh5zfzijqgkp94wslkzn6kspwi42kf46vrn0qkiz39f2";
|
||||
version = "1.0.9";
|
||||
sha256 = "0ml6l5xq1310ib5zqfdwlxmsmhpc5ybd05z7pc6zgxbma1brxdv4";
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
, nvidiaGpuSupport
|
||||
, patchelf
|
||||
, nvidia_x11
|
||||
, nixosTests
|
||||
}:
|
||||
|
||||
buildGoPackage rec {
|
||||
|
@ -29,16 +30,7 @@ buildGoPackage rec {
|
|||
# ui:
|
||||
# Nomad release commits include the compiled version of the UI, but the file
|
||||
# is only included if we build with the ui tag.
|
||||
preBuild =
|
||||
let
|
||||
tags = [ "ui" ] ++ lib.optional (!nvidiaGpuSupport) "nonvidia";
|
||||
tagsString = lib.concatStringsSep " " tags;
|
||||
in
|
||||
''
|
||||
export buildFlagsArray=(
|
||||
-tags="${tagsString}"
|
||||
)
|
||||
'';
|
||||
tags = [ "ui" ] ++ lib.optional (!nvidiaGpuSupport) "nonvidia";
|
||||
|
||||
# The dependency on NVML isn't explicit. We have to make it so otherwise the
|
||||
# binary will not know where to look for the relevant symbols.
|
||||
|
@ -48,6 +40,8 @@ buildGoPackage rec {
|
|||
done
|
||||
'';
|
||||
|
||||
passthru.tests.nomad = nixosTests.nomad;
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.nomadproject.io/";
|
||||
description = "A Distributed, Highly Available, Datacenter-Aware Scheduler";
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "octant";
|
||||
version = "0.22.0";
|
||||
version = "0.23.0";
|
||||
|
||||
src =
|
||||
let
|
||||
|
@ -19,10 +19,10 @@ stdenv.mkDerivation rec {
|
|||
};
|
||||
in
|
||||
fetchsrc version {
|
||||
x86_64-linux = "sha256-1/vyV6pUqovVpovTYFF4d75wJvtTNdrbLZyjw1lLacA=";
|
||||
aarch64-linux = "sha256-1duNW0Edj0jrpv/RMrebtZF4ph6j3PXCJ2RFejOopGQ=";
|
||||
x86_64-darwin = "sha256-Ur5jBPk5hA6cGg+pPf36Ijh94gWEdaWlJK3yCMBYyEU=";
|
||||
aarch64-darwin = "sha256-RaiXW+MUihk291UWmrf6gLpyrd5stIkhyWNFEQ0daCk=";
|
||||
x86_64-linux = "sha256-wnm4Zprlao+zbWVJNY4BsAT1fFMft7luyDaW2HfNotg=";
|
||||
aarch64-linux = "sha256-eYvfLUelSrmdY9dbgAlPm7en88hsdCnejJGq2Gz4DN0=";
|
||||
x86_64-darwin = "sha256-NXMQ4mbYfIK+arGWZVhQk5iAw6AZM9PAGJ9CEC/rmgA=";
|
||||
aarch64-darwin = "sha256-WqlbiDV2CuBYr6IXQ8vaESxKNZGp9vBj683igazcmwM=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
let
|
||||
pname = "octant-desktop";
|
||||
version = "0.22.0";
|
||||
version = "0.23.0";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
|
@ -15,8 +15,8 @@ let
|
|||
src = fetchurl {
|
||||
url = "https://github.com/vmware-tanzu/octant/releases/download/v${version}/Octant-${version}.${suffix}";
|
||||
sha256 = {
|
||||
x86_64-linux = "sha256-xMdNoH0UE/KLIQ0DjJfb+ZB/q2F+kyFEncrQ9YYJgE0=";
|
||||
x86_64-darwin = "sha256-y3fmxrsQ0hCa1wuMiRGHf79kpi25qXv/idKrVT87oc0=";
|
||||
x86_64-linux = "sha256-K4z6SVCiuqy3xkWMWpm8KM7iYVXyKcnERljMG3NEFMw=";
|
||||
x86_64-darwin = "sha256-WYra0yw/aPW/wUGrlIn5ud3kjFTkekYEi2LWZcYO5Nw=";
|
||||
}.${system};
|
||||
};
|
||||
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "starboard";
|
||||
version = "0.10.3";
|
||||
version = "0.11.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "aquasecurity";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-SJogepww3IJt+NAkJ0G/lLgZ3rMWDTC+jHIrzzkzJGA=";
|
||||
sha256 = "sha256-NV37K5JUfGPK8TwCi/4XY7MQUvp76vzdxsHUNPlYpYk=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-vNsYGlcVIj/cDijCFz8fG5Ht/s7koM62GV8zkOyA/fA=";
|
||||
vendorSha256 = "sha256-4CmAf1s+tK7cKxwetgv0YewLLROsZ5g1Zd30FCep5k8=";
|
||||
|
||||
# Don't build and check the integration tests
|
||||
excludedPackages = "itest";
|
||||
|
|
|
@ -45,18 +45,12 @@ let
|
|||
|
||||
# These are the providers that don't fall in line with the default model
|
||||
special-providers = {
|
||||
acme = automated-providers.acme.overrideAttrs (attrs: {
|
||||
prePatch = attrs.prePatch or "" + ''
|
||||
substituteInPlace go.mod --replace terraform-providers/terraform-provider-acme getstackhead/terraform-provider-acme
|
||||
substituteInPlace main.go --replace terraform-providers/terraform-provider-acme getstackhead/terraform-provider-acme
|
||||
'';
|
||||
});
|
||||
|
||||
# Packages that don't fit the default model
|
||||
ansible = callPackage ./ansible {};
|
||||
cloudfoundry = callPackage ./cloudfoundry {};
|
||||
gandi = callPackage ./gandi {};
|
||||
hcloud = callPackage ./hcloud {};
|
||||
kubernetes-alpha = throw "This has been merged as beta into the kubernetes provider. See https://www.hashicorp.com/blog/beta-support-for-crds-in-the-terraform-provider-for-kubernetes for details";
|
||||
libvirt = callPackage ./libvirt {};
|
||||
linuxbox = callPackage ./linuxbox {};
|
||||
lxd = callPackage ./lxd {};
|
||||
|
|
|
@ -7,12 +7,13 @@
|
|||
"version": "0.2.3"
|
||||
},
|
||||
"acme": {
|
||||
"owner": "getstackhead",
|
||||
"provider-source-address": "registry.terraform.io/getstackhead/acme",
|
||||
"owner": "vancluever",
|
||||
"provider-source-address": "registry.terraform.io/vancluever/acme",
|
||||
"repo": "terraform-provider-acme",
|
||||
"rev": "v1.5.0-patched",
|
||||
"sha256": "1wdrjpd3l0xadsa3lqhsc9c57g8x2qkwb76q824sk8za1a7lapii",
|
||||
"version": "1.5.0-patched"
|
||||
"rev": "v2.5.2",
|
||||
"sha256": "0yk5yxx8vdfymxggydpzsb2a0iw4n8010wlprz23qg37gb2p26yf",
|
||||
"vendorSha256": "04zrrn67w30ib0n5s4f31x3nl3h3xz2r522ldkbbx20jy5iabrkk",
|
||||
"version": "2.5.2"
|
||||
},
|
||||
"aiven": {
|
||||
"owner": "aiven",
|
||||
|
@ -244,11 +245,13 @@
|
|||
"version": "0.8.0"
|
||||
},
|
||||
"datadog": {
|
||||
"owner": "terraform-providers",
|
||||
"owner": "DataDog",
|
||||
"provider-source-address": "registry.terraform.io/DataDog/datadog",
|
||||
"repo": "terraform-provider-datadog",
|
||||
"rev": "v2.7.0",
|
||||
"sha256": "0cq11cjcm2nlszqhsrj425mk8dp0h5ljrrn7jplrbffp8g6wvadd",
|
||||
"version": "2.7.0"
|
||||
"rev": "v3.2.0",
|
||||
"sha256": "1qrk40w81qzcmm52gr3ysrh077417cxyh4xy7igwdjfzl85z22mx",
|
||||
"vendorSha256": "0iphsz6y9gajwmw5rj4yq65azx02ki093agqbqw49rnzdhc6jahr",
|
||||
"version": "3.2.0"
|
||||
},
|
||||
"digitalocean": {
|
||||
"owner": "digitalocean",
|
||||
|
@ -558,19 +561,10 @@
|
|||
"owner": "hashicorp",
|
||||
"provider-source-address": "registry.terraform.io/hashicorp/kubernetes",
|
||||
"repo": "terraform-provider-kubernetes",
|
||||
"rev": "v2.1.0",
|
||||
"sha256": "02ygydgi3fa8z6qd04hgcilbbwns8f21agaqxly2pf9j23fzi37g",
|
||||
"rev": "v2.4.1",
|
||||
"sha256": "0mk0f12yy58gjkki7xpf9bjfw9h9zdgby2b4bddqp5csq11payhd",
|
||||
"vendorSha256": null,
|
||||
"version": "2.1.0"
|
||||
},
|
||||
"kubernetes-alpha": {
|
||||
"owner": "hashicorp",
|
||||
"provider-source-address": "registry.terraform.io/hashicorp/kubernetes-alpha",
|
||||
"repo": "terraform-provider-kubernetes-alpha",
|
||||
"rev": "v0.5.0",
|
||||
"sha256": "0yqm3wlya69w9g9kzgvm28mbbwp6wik51syjnbnj8dis5kspx8gd",
|
||||
"vendorSha256": null,
|
||||
"version": "0.5.0"
|
||||
"version": "2.4.1"
|
||||
},
|
||||
"launchdarkly": {
|
||||
"owner": "terraform-providers",
|
||||
|
@ -798,11 +792,13 @@
|
|||
"version": "1.5.3"
|
||||
},
|
||||
"ovh": {
|
||||
"owner": "terraform-providers",
|
||||
"owner": "ovh",
|
||||
"provider-source-address": "registry.terraform.io/ovh/ovh",
|
||||
"repo": "terraform-provider-ovh",
|
||||
"rev": "v0.8.0",
|
||||
"sha256": "1ww4ng8w5hm50rbxd83xzbkq8qsn04dqwpdjhs587v9d0x2vwrf1",
|
||||
"version": "0.8.0"
|
||||
"rev": "v0.15.0",
|
||||
"sha256": "1cmcfg9vq8cl98d5xambm5hr516b9pblm06y1py9v7msmfh3g09i",
|
||||
"vendorSha256": null,
|
||||
"version": "0.15.0"
|
||||
},
|
||||
"packet": {
|
||||
"owner": "packethost",
|
||||
|
|
|
@ -195,8 +195,8 @@ rec {
|
|||
};
|
||||
|
||||
terraform_1_0 = mkTerraform {
|
||||
version = "1.0.3";
|
||||
sha256 = "0m7r66nw0nppra90sjhbq5d0f4q525c73q6ncmy6w37j2nixz35z";
|
||||
version = "1.0.4";
|
||||
sha256 = "09g0ln247scv8mj40gxhkij0li62v0rjm2bsgmvl953aj7g3dlh1";
|
||||
vendorSha256 = "07pzqvf9lwgc1fadmyam5hn7arlvzrjsplls445738jpn61854gg";
|
||||
patches = [ ./provider-path-0_15.patch ];
|
||||
passthru = { inherit plugins; };
|
||||
|
|
|
@ -1,10 +1,17 @@
|
|||
{ lib, stdenv, fetchFromGitHub
|
||||
, makeWrapper, makeDesktopItem, mkYarnPackage
|
||||
, electron, element-web
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, makeWrapper
|
||||
, makeDesktopItem
|
||||
, mkYarnPackage
|
||||
, electron
|
||||
, element-web
|
||||
, callPackage
|
||||
, Security
|
||||
, AppKit
|
||||
, CoreServices
|
||||
|
||||
, useWayland ? false
|
||||
}:
|
||||
# Notes for maintainers:
|
||||
# * versions of `element-web` and `element-desktop` should be kept in sync.
|
||||
|
@ -20,7 +27,8 @@ let
|
|||
sha256 = "sha256-4d2IOngiRcKd4k0jnilAR3Sojkfru3dlqtoBYi3zeLY=";
|
||||
};
|
||||
electron_exec = if stdenv.isDarwin then "${electron}/Applications/Electron.app/Contents/MacOS/Electron" else "${electron}/bin/electron";
|
||||
in mkYarnPackage rec {
|
||||
in
|
||||
mkYarnPackage rec {
|
||||
name = "element-desktop-${version}";
|
||||
inherit version src;
|
||||
|
||||
|
@ -55,6 +63,7 @@ in mkYarnPackage rec {
|
|||
rm "$out/share/element/electron/node_modules"
|
||||
cp -r './node_modules' "$out/share/element/electron"
|
||||
cp $out/share/element/electron/lib/i18n/strings/en_EN.json $out/share/element/electron/lib/i18n/strings/en-us.json
|
||||
ln -s $out/share/element/electron/lib/i18n/strings/en{-us,}.json
|
||||
|
||||
# icons
|
||||
for icon in $out/share/element/electron/build/icons/*.png; do
|
||||
|
@ -68,7 +77,7 @@ in mkYarnPackage rec {
|
|||
|
||||
# executable wrapper
|
||||
makeWrapper '${electron_exec}' "$out/bin/${executableName}" \
|
||||
--add-flags "$out/share/element/electron"
|
||||
--add-flags "$out/share/element/electron${lib.optionalString useWayland " --enable-features=UseOzonePlatform --ozone-platform=wayland"}"
|
||||
'';
|
||||
|
||||
# Do not attempt generating a tarball for element-web again.
|
||||
|
|
|
@ -28,7 +28,7 @@ let
|
|||
else "");
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "signal-desktop";
|
||||
version = "5.12.0"; # Please backport all updates to the stable channel.
|
||||
version = "5.12.2"; # Please backport all updates to the stable channel.
|
||||
# All releases have a limited lifetime and "expire" 90 days after the release.
|
||||
# When releases "expire" the application becomes unusable until an update is
|
||||
# applied. The expiration date for the current release can be extracted with:
|
||||
|
@ -38,7 +38,7 @@ in stdenv.mkDerivation rec {
|
|||
|
||||
src = fetchurl {
|
||||
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
||||
sha256 = "0cvh70ijx61rq7qjzrmn85lhkm8vkcbxvgjvkpls21v3yl5anrjb";
|
||||
sha256 = "0z8nphlm3q9gqri6bqh1iaayx5yy0bhrmjb7l7facdkm1aahmaa7";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
, lib
|
||||
, fetchurl
|
||||
, makeWrapper
|
||||
# Dynamic libraries
|
||||
# Dynamic libraries
|
||||
, alsa-lib
|
||||
, atk
|
||||
, cairo
|
||||
|
@ -18,22 +18,21 @@
|
|||
, xorg
|
||||
, libxkbcommon
|
||||
, zlib
|
||||
# Runtime
|
||||
# Runtime
|
||||
, coreutils
|
||||
, pciutils
|
||||
, procps
|
||||
, util-linux
|
||||
, pulseaudioSupport ? true, libpulseaudio ? null
|
||||
, pulseaudioSupport ? true
|
||||
, libpulseaudio
|
||||
}:
|
||||
|
||||
assert pulseaudioSupport -> libpulseaudio != null;
|
||||
|
||||
let
|
||||
version = "5.7.28852.0718";
|
||||
version = "5.7.28991.0726";
|
||||
srcs = {
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://zoom.us/client/${version}/zoom_x86_64.pkg.tar.xz";
|
||||
sha256 = "NoB9qxsuGsiwsZ3Y+F3WZpszujPBX/nehtFFI+KPV5E=";
|
||||
sha256 = "w1oeMKADG5+7EV1OXyuEbotrwcVywob82KOXKoRUifA=";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -65,9 +64,11 @@ let
|
|||
xorg.libXtst
|
||||
] ++ lib.optional (pulseaudioSupport) libpulseaudio);
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "zoom";
|
||||
inherit version;
|
||||
|
||||
src = srcs.${stdenv.hostPlatform.system};
|
||||
|
||||
dontUnpack = true;
|
||||
|
@ -118,11 +119,11 @@ in stdenv.mkDerivation rec {
|
|||
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
meta = {
|
||||
meta = with lib; {
|
||||
homepage = "https://zoom.us/";
|
||||
description = "zoom.us video conferencing application";
|
||||
license = lib.licenses.unfree;
|
||||
license = licenses.unfree;
|
||||
platforms = builtins.attrNames srcs;
|
||||
maintainers = with lib.maintainers; [ danbst tadfisher doronbehar ];
|
||||
maintainers = with maintainers; [ danbst tadfisher doronbehar ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -75,8 +75,6 @@ stdenv.mkDerivation {
|
|||
inherit (source) sha256;
|
||||
};
|
||||
|
||||
phases = "unpackPhase installPhase";
|
||||
|
||||
libPath = lib.makeLibraryPath
|
||||
[ stdenv.cc.cc
|
||||
alsa-lib
|
||||
|
|
|
@ -21,13 +21,13 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "nextcloud-client";
|
||||
version = "3.2.4";
|
||||
version = "3.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nextcloud";
|
||||
repo = "desktop";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-+APRR3Qj8jdDG2wc4hXFF40aTeoLGAXlsCsB4zKDI3Q=";
|
||||
sha256 = "sha256-KMFFRxNQUNcu7Q5515lNbEMyCWIvzXXC//s3WAWxw4g=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -70,7 +70,7 @@ mkDerivation rec {
|
|||
description = "Nextcloud themed desktop client";
|
||||
homepage = "https://nextcloud.com";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ caugner ];
|
||||
maintainers = with maintainers; [ caugner kranzes ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ in stdenv.mkDerivation {
|
|||
|
||||
jars = freenet-jars;
|
||||
|
||||
phases = [ "installPhase" ];
|
||||
dontUnpack = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
|
|
|
@ -32,7 +32,8 @@ python3Packages.buildPythonApplication rec {
|
|||
] ++
|
||||
lib.optional useGeoIP GeoIP;
|
||||
|
||||
phases = [ "unpackPhase" "installPhase" ];
|
||||
dontBuild = true;
|
||||
doCheck = false;
|
||||
|
||||
makeWrapperArgs = ["--prefix PATH : ${wrapperPath}"];
|
||||
|
||||
|
|
|
@ -4,13 +4,13 @@ let
|
|||
common = { stname, target, postInstall ? "" }:
|
||||
buildGoModule rec {
|
||||
pname = stname;
|
||||
version = "1.18.0";
|
||||
version = "1.18.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "syncthing";
|
||||
repo = "syncthing";
|
||||
rev = "v${version}";
|
||||
sha256 = "0hrdlc1dxbxvqxylk0i2f110c6bfp9azsnzqzmjj2b29xxbrmwca";
|
||||
sha256 = "1sm4d0pjgk0spz9pddqb3i8hli10pibd5xs18mhcwrhnxj2xky1y";
|
||||
};
|
||||
|
||||
vendorSha256 = "1qqpxm4s1s2yp1zmi4m25y1a6r7kxc5rmvfsg50jmqsfnwligpz6";
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{ atomEnv
|
||||
, autoPatchelfHook
|
||||
, dpkg
|
||||
, squashfsTools
|
||||
, fetchurl
|
||||
, makeDesktopItem
|
||||
, makeWrapper
|
||||
|
@ -12,13 +12,15 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "termius";
|
||||
version = "7.16.0";
|
||||
version = "7.17.1";
|
||||
|
||||
src = fetchurl {
|
||||
# find the latest version by
|
||||
# curl https://deb.termius.com/dists/squeeze/main/binary-amd64/Packages
|
||||
url = "https://deb.termius.com/pool/main/t/termius-app/termius-app_${version}_amd64.deb";
|
||||
sha256 = "013nli61bk4x4hkhr6gcpzm1y8ycmqk3vr7q0w2dn2bfdwjg559v";
|
||||
# find the latest version with
|
||||
# curl -H 'X-Ubuntu-Series: 16' https://api.snapcraft.io/api/v1/snaps/details/termius-app | jq '.version'
|
||||
# and the url with
|
||||
# curl -H 'X-Ubuntu-Series: 16' https://api.snapcraft.io/api/v1/snaps/details/termius-app | jq '.download_url' -r
|
||||
url = "https://api.snapcraft.io/api/v1/snaps/download/WkTBXwoX81rBe3s3OTt3EiiLKBx2QhuS_81.snap";
|
||||
sha256 = "sha256-jNwWQTjUy8nJ8gHlbP9WgDlARWOhTQAA7KAcQNXKhNg=";
|
||||
};
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
|
@ -36,22 +38,33 @@ stdenv.mkDerivation rec {
|
|||
dontPatchELF = true;
|
||||
dontWrapGApps = true;
|
||||
|
||||
nativeBuildInputs = [ autoPatchelfHook dpkg makeWrapper wrapGAppsHook ];
|
||||
nativeBuildInputs = [ autoPatchelfHook squashfsTools makeWrapper wrapGAppsHook ];
|
||||
|
||||
buildInputs = atomEnv.packages;
|
||||
|
||||
unpackPhase = "dpkg-deb -x $src .";
|
||||
unpackPhase = ''
|
||||
runHook preUnpack
|
||||
unsquashfs "$src"
|
||||
runHook postUnpack
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
cd squashfs-root
|
||||
mkdir -p $out/opt/termius
|
||||
cp -r \
|
||||
icudtl.dat \
|
||||
libffmpeg.so \
|
||||
locales \
|
||||
resources \
|
||||
resources.pak \
|
||||
termius-app \
|
||||
v8_context_snapshot.bin \
|
||||
$out/opt/termius
|
||||
|
||||
mkdir -p "$out/bin"
|
||||
cp -R "opt" "$out"
|
||||
cp -R "usr/share" "$out/share"
|
||||
chmod -R g-w "$out"
|
||||
# Desktop file
|
||||
mkdir -p "$out/share/applications"
|
||||
mkdir -p "$out/share/applications" "$out/share/pixmaps/termius-app.png"
|
||||
cp "${desktopItem}/share/applications/"* "$out/share/applications"
|
||||
cp meta/gui/icon.png $out/share/pixmaps/termius-app.png
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
@ -59,7 +72,7 @@ stdenv.mkDerivation rec {
|
|||
runtimeDependencies = [ (lib.getLib udev) ];
|
||||
|
||||
postFixup = ''
|
||||
makeWrapper $out/opt/Termius/termius-app $out/bin/termius-app \
|
||||
makeWrapper $out/opt/termius/termius-app $out/bin/termius-app \
|
||||
"''${gappsWrapperArgs[@]}"
|
||||
'';
|
||||
|
||||
|
|
|
@ -1,53 +0,0 @@
|
|||
{ lib, stdenv, vala, fetchFromGitHub, nix-update-script, pantheon, pkg-config, meson, ninja, python3, gtk3
|
||||
, desktop-file-utils, json-glib, libsoup, libgee, poppler, wrapGAppsHook, fetchpatch }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "aesop";
|
||||
version = "1.2.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lainsce";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "1zxyyxl959rqhyz871dyyccqga2ydybkfcpyjq4vmvdn2g9mvmb0";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
desktop-file-utils
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
python3
|
||||
vala
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
pantheon.elementary-icon-theme
|
||||
libgee
|
||||
pantheon.granite
|
||||
gtk3
|
||||
json-glib
|
||||
libsoup
|
||||
poppler
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
chmod +x meson/post_install.py
|
||||
patchShebangs meson/post_install.py
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script {
|
||||
attrPath = pname;
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "The simplest PDF viewer around";
|
||||
homepage = "https://github.com/lainsce/aesop";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = pantheon.maintainers;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -1,32 +1,57 @@
|
|||
{ lib, python3Packages, fetchFromGitHub, wrapGAppsHook, gobject-introspection
|
||||
, gtksourceview3, libappindicator-gtk3, libnotify }:
|
||||
{ lib
|
||||
, python3Packages
|
||||
, fetchFromGitHub
|
||||
, wrapGAppsHook
|
||||
, gobject-introspection
|
||||
, gtksourceview3
|
||||
, libappindicator-gtk3
|
||||
, libnotify
|
||||
}:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
name = "autokey-${version}";
|
||||
version = "0.94.1";
|
||||
pname = "autokey";
|
||||
version = "0.95.10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "autokey";
|
||||
repo = "autokey";
|
||||
rev = "v${version}";
|
||||
sha256 = "1syxyciyxzs0khbfs9wjgj03q967p948kipw27j1031q0b5z3jxr";
|
||||
sha256 = "0f0cqfnb49wwdy7zl2f2ypcnd5pc8r8n7z7ssxkq20d4xfxlgamr";
|
||||
};
|
||||
|
||||
# Arch requires a similar work around—see
|
||||
# https://aur.archlinux.org/packages/autokey-py3/?comments=all
|
||||
patches = [ ./remove-requires-dbus-python.patch ];
|
||||
|
||||
# Tests appear to be broken with import errors within the project structure
|
||||
doCheck = false;
|
||||
|
||||
# Note: no dependencies included for Qt GUI because Qt ui is poorly
|
||||
# maintained—see https://github.com/autokey/autokey/issues/51
|
||||
nativeBuildInputs = [ wrapGAppsHook ];
|
||||
|
||||
buildInputs = [ wrapGAppsHook gobject-introspection gtksourceview3
|
||||
libappindicator-gtk3 libnotify ];
|
||||
buildInputs = [
|
||||
gobject-introspection
|
||||
gtksourceview3
|
||||
libappindicator-gtk3
|
||||
libnotify
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
dbus-python pyinotify xlib pygobject3 ];
|
||||
dbus-python
|
||||
pyinotify
|
||||
xlib
|
||||
pygobject3
|
||||
];
|
||||
|
||||
dontWrapGapps = true;
|
||||
|
||||
pythonPath = with python3Packages; requiredPythonModules [ dbus-python xlib pygobject3 ];
|
||||
|
||||
postInstall = ''
|
||||
rm $out/bin/autokey-qt
|
||||
buildPythonPath "$out $pythonPath"
|
||||
makeWrapperArgs+=(
|
||||
"''${gappsWrapperArgs[@]}"
|
||||
# for autokey-shell ModuleNotFoundError: No module named 'autokey'
|
||||
--prefix "PYTHONPATH" ":" "$out/lib/${python3Packages.python.libPrefix}/site-packages"
|
||||
--prefix "PYTHONPATH" ":" "$program_PYTHONPATH"
|
||||
)
|
||||
'';
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/autokey/autokey";
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
, kcontacts, akonadi, akonadi-calendar, akonadi-contacts
|
||||
, eigen, git, gsl, ilmbase, kproperty, kreport, lcms2, marble, pcre, libgit2, libodfgen
|
||||
, librevenge, libvisio, libwpd, libwpg, libwps, okular, openexr, openjpeg, phonon
|
||||
, poppler, pstoedit, qca-qt5, vc
|
||||
, poppler, pstoedit, qca-qt5, vc, fontconfig
|
||||
# TODO: package Spnav, m2mml LibEtonyek, Libqgit2
|
||||
}:
|
||||
|
||||
|
@ -32,6 +32,7 @@ mkDerivation rec {
|
|||
kcontacts akonadi akonadi-calendar akonadi-contacts
|
||||
eigen git gsl ilmbase kproperty kreport lcms2 marble pcre libgit2 libodfgen librevenge
|
||||
libvisio libwpd libwpg libwps okular openexr openjpeg phonon poppler qca-qt5 vc
|
||||
fontconfig
|
||||
];
|
||||
|
||||
propagatedUserEnvPkgs = [ kproperty ];
|
||||
|
|
|
@ -1,81 +0,0 @@
|
|||
{ lib, stdenv
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, fetchpatch
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
, pantheon
|
||||
, python3
|
||||
, vala
|
||||
, appstream-glib
|
||||
, desktop-file-utils
|
||||
, gettext
|
||||
, glib
|
||||
, gtk3
|
||||
, libgee
|
||||
, sqlite
|
||||
, wrapGAppsHook
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "envelope";
|
||||
version = "0.0.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cjfloss";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "111lq1gijcm7qwpac09q11ymwiw2x3m12a28ki52f28fb1amvffc";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
appstream-glib
|
||||
desktop-file-utils
|
||||
gettext
|
||||
meson
|
||||
ninja
|
||||
vala
|
||||
pkg-config
|
||||
python3
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
glib
|
||||
gtk3
|
||||
libgee
|
||||
pantheon.granite
|
||||
sqlite
|
||||
];
|
||||
|
||||
doCheck = true;
|
||||
|
||||
patches = [
|
||||
# Fix AppData Validation.
|
||||
# https://github.com/cjfloss/envelope/pull/59
|
||||
(fetchpatch {
|
||||
url = "https://github.com/cjfloss/envelope/commit/b6a28eced89b8f944479fcc695aebfb9aae0c691.patch";
|
||||
sha256 = "11znc8z52kl893n3gmmdpnp3y4vpzmb263m5gp0qxbl3xykq2wzr";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
chmod +x data/post_install.py
|
||||
patchShebangs data/post_install.py
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script {
|
||||
attrPath = pname;
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Personal finance manager for elementary OS";
|
||||
homepage = "https://github.com/cjfloss/envelope";
|
||||
maintainers = with maintainers; [ xiorcale ] ++ pantheon.maintainers;
|
||||
platforms = platforms.linux;
|
||||
license = licenses.gpl3Plus;
|
||||
};
|
||||
}
|
42
pkgs/applications/office/pdfmixtool/default.nix
Normal file
42
pkgs/applications/office/pdfmixtool/default.nix
Normal file
|
@ -0,0 +1,42 @@
|
|||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitLab
|
||||
, cmake
|
||||
, pkg-config
|
||||
, qtbase
|
||||
, qttools
|
||||
, qpdf
|
||||
, podofo
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "pdfmixtool";
|
||||
version = "1.0.2";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "scarpetta";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "066ap1w05gj8n0kvilyhlr1fzwrmlczx3lax7mbw0rfid9qh3467";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qttools
|
||||
qpdf
|
||||
podofo
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "An application to split, merge, rotate and mix PDF files";
|
||||
homepage = "https://gitlab.com/scarpetta/pdfmixtool";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ onny ];
|
||||
};
|
||||
}
|
||||
|
|
@ -9,11 +9,11 @@
|
|||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
name = "zim-${version}";
|
||||
version = "0.73.1";
|
||||
version = "0.73.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://zim-wiki.org/downloads/${name}.tar.gz";
|
||||
sha256 = "13vhwsgv6mscgixypc0ixkgj0y7cpcm7z7wn1vmdrwp7kn8m3xgx";
|
||||
sha256 = "sha256-o28V2Sw5lMDVWwf4MlOz2LgmvrNxSGXturwU8cyR1jo=";
|
||||
};
|
||||
|
||||
buildInputs = [ gtk3 gobject-introspection wrapGAppsHook gnome.adwaita-icon-theme ];
|
||||
|
|
|
@ -13,17 +13,20 @@
|
|||
, gettext
|
||||
, pkg-config
|
||||
, alsa-lib
|
||||
, udev
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "fldigi";
|
||||
version = "4.1.18";
|
||||
version = "4.1.19";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.gz";
|
||||
sha256 = "sha256-PH/YSrOoS6RSWyUenVYSDa7mJqODFoSpdP2tR2+QJw0=";
|
||||
sha256 = "0zvfkmvxi31ccbpxvimkcrqrkf3wzr1pgja2ny04srrakl8ff5c7";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = [
|
||||
libXinerama
|
||||
gettext
|
||||
|
@ -34,16 +37,13 @@ stdenv.mkDerivation rec {
|
|||
portaudio
|
||||
libsndfile
|
||||
libsamplerate
|
||||
libpulseaudio
|
||||
pkg-config
|
||||
alsa-lib
|
||||
];
|
||||
] ++ lib.optionals (stdenv.isLinux) [ libpulseaudio alsa-lib udev ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Digital modem program";
|
||||
homepage = "https://sourceforge.net/projects/fldigi/";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ relrod ftrvxmtrx ];
|
||||
platforms = platforms.linux;
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
|
|||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [ jre ];
|
||||
|
||||
phases = [ "installPhase" ];
|
||||
dontUnpack = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/libexec/picard
|
||||
|
|
|
@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
|
|||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [ jre ];
|
||||
|
||||
phases = [ "installPhase" ];
|
||||
dontUnpack = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/libexec/varscan
|
||||
|
|
|
@ -5,9 +5,9 @@
|
|||
} :
|
||||
|
||||
let
|
||||
version = "21.02";
|
||||
version = "21.06";
|
||||
# The tag keeps moving, fix a hash instead
|
||||
gitLabRev = "41cee871945ac712e86ee971425a49a8fc60a936";
|
||||
gitLabRev = "dd982ad4bc94dec8ac1e3e99cb6a7dd249ff71de";
|
||||
|
||||
python = python3.withPackages (ps : with ps; [ six pyparsing ]);
|
||||
|
||||
|
@ -19,7 +19,7 @@ in stdenv.mkDerivation {
|
|||
owner = "Molcas";
|
||||
repo = "OpenMolcas";
|
||||
rev = gitLabRev;
|
||||
sha256 = "0cap53gy1wds2qaxbijw09fqhvfxphfkr93nhp9xdq84yxh4wzv6";
|
||||
sha256 = "07dm73n0s7ckif561yb3s9yqxsv39a73kb9qwny4yp39wdvv52hz";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
|
|||
libX11 libXext libXi
|
||||
];
|
||||
|
||||
phases = [ "installPhase" ];
|
||||
dontUnpack = true;
|
||||
|
||||
# NOTES:
|
||||
# Eagle for Linux comes as a self-extracting shell script with embedded
|
||||
|
|
61
pkgs/applications/science/electronics/lepton-eda/default.nix
Normal file
61
pkgs/applications/science/electronics/lepton-eda/default.nix
Normal file
|
@ -0,0 +1,61 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, pkg-config
|
||||
, makeWrapper
|
||||
, texinfo
|
||||
, fetchurl
|
||||
, autoreconfHook
|
||||
, guile
|
||||
, flex
|
||||
, gtk2
|
||||
, glib
|
||||
, gtkextra
|
||||
, gettext
|
||||
, gawk
|
||||
, shared-mime-info
|
||||
, groff
|
||||
, libstroke
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "lepton-eda";
|
||||
version = "1.9.13-20201211";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/lepton-eda/lepton-eda/releases/download/${version}/lepton-eda-${builtins.head (lib.splitString "-" version)}.tar.gz";
|
||||
sha256 = "sha256-9Be3FBWnZU2M5aNQwi3N8M81e0S7n46mwWQh1mrK4Z8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config makeWrapper texinfo autoreconfHook ];
|
||||
|
||||
propagatedBuildInputs = [ guile flex gtk2 glib gtkextra gettext gawk shared-mime-info groff libstroke ];
|
||||
|
||||
configureFlags = [
|
||||
"--disable-update-xdg-database"
|
||||
];
|
||||
|
||||
CFLAGS = [
|
||||
"-DSCM_DEBUG_TYPING_STRICTNESS=2"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
libs="${lib.makeLibraryPath propagatedBuildInputs}"
|
||||
for program in $out/bin/*; do
|
||||
wrapProgram "$program" \
|
||||
--prefix LD_LIBRARY_PATH : "$libs" \
|
||||
--prefix LTDL_LIBRARY_PATH : "$out/lib"
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/lepton-eda";
|
||||
description = "Lepton Electronic Design Automation";
|
||||
longDescription = ''
|
||||
Lepton EDA is a suite of free software tools for designing electronics.
|
||||
It provides schematic capture, netlisting into over 30 netlist formats, and many other features.
|
||||
'';
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ tesq0 ];
|
||||
};
|
||||
}
|
|
@ -48,8 +48,6 @@ stdenv.mkDerivation {
|
|||
done
|
||||
'';
|
||||
|
||||
phases = "unpackPhase installPhase fixupPhase";
|
||||
|
||||
meta = {
|
||||
description = "Tools for software verification and analysis";
|
||||
homepage = "https://saw.galois.com";
|
||||
|
|
|
@ -39,8 +39,6 @@ stdenv.mkDerivation {
|
|||
xorg.libXxf86vm
|
||||
];
|
||||
|
||||
phases = [ "unpackPhase" "fixupPhase" "installPhase" ];
|
||||
|
||||
fixupPhase = ''
|
||||
sed -i 's|\$(/bin/|$(|g' bin/scilab
|
||||
sed -i 's|/usr/bin/||g' bin/scilab
|
||||
|
|
|
@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
|
|||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [ jre ];
|
||||
|
||||
phases = [ "installPhase" ];
|
||||
dontUnpack = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/libexec/quantomatic
|
||||
|
|
|
@ -1,36 +1,48 @@
|
|||
{ stdenv, lib, fetchurl, dpkg, atk, glib, pango, gdk-pixbuf, gnome2, gtk3, cairo
|
||||
, freetype, fontconfig, dbus, libXi, libXcursor, libXdamage, libXrandr
|
||||
, libXcomposite, libXext, libXfixes, libXrender, libX11, libXtst, libXScrnSaver
|
||||
, libxcb, nss, nspr, alsa-lib, cups, expat, udev, libpulseaudio, at-spi2-atk }:
|
||||
, freetype, fontconfig, dbus, libXi, libXcursor, libXdamage, libXrandr, libXcomposite
|
||||
, libXext, libXfixes, libXrender, libX11, libXtst, libXScrnSaver, libxcb, nss, nspr
|
||||
, alsa-lib, cups, expat, udev, libpulseaudio, at-spi2-atk, at-spi2-core, libxshmfence
|
||||
, libdrm, libxkbcommon, mesa }:
|
||||
|
||||
let
|
||||
libPath = lib.makeLibraryPath [
|
||||
stdenv.cc.cc gtk3 gnome2.GConf atk glib pango gdk-pixbuf cairo freetype fontconfig dbus
|
||||
libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes libxcb
|
||||
libXrender libX11 libXtst libXScrnSaver nss nspr alsa-lib cups expat udev libpulseaudio
|
||||
at-spi2-atk
|
||||
at-spi2-atk at-spi2-core libxshmfence libdrm libxkbcommon mesa
|
||||
];
|
||||
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
version = "3.0.2";
|
||||
pname = "hyper";
|
||||
version = "3.1.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/zeit/hyper/releases/download/${version}/hyper_${version}_amd64.deb";
|
||||
sha256 = "0fv4wv5f8nc739bna83qxmgrvvbyq4w9ch764q2f12wjygrz336p";
|
||||
url = "https://github.com/vercel/hyper/releases/download/v${version}/hyper_${version}_amd64.deb";
|
||||
sha256 = "1mixy9hlgdbbnwdgidady7q828dkf09lx1pacwxw386jj7kp4y5g";
|
||||
};
|
||||
buildInputs = [ dpkg ];
|
||||
|
||||
nativeBuildInputs = [ dpkg ];
|
||||
|
||||
unpackPhase = ''
|
||||
mkdir pkg
|
||||
dpkg-deb -x $src pkg
|
||||
sourceRoot=pkg
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out/bin"
|
||||
mv opt "$out/"
|
||||
|
||||
ln -s "$out/opt/Hyper/hyper" "$out/bin/hyper"
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "${libPath}:$out/opt/Hyper:\$ORIGIN" "$out/opt/Hyper/hyper"
|
||||
|
||||
mv usr/* "$out/"
|
||||
|
||||
substituteInPlace $out/share/applications/hyper.desktop \
|
||||
--replace "/opt/Hyper/hyper" "hyper"
|
||||
'';
|
||||
|
||||
dontPatchELF = true;
|
||||
meta = with lib; {
|
||||
description = "A terminal built on web technologies";
|
||||
|
|
|
@ -18,7 +18,7 @@ in
|
|||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [ jre ];
|
||||
|
||||
phases = "installPhase";
|
||||
dontUnpack = true;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/java
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "gh";
|
||||
version = "1.13.1";
|
||||
version = "1.14.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cli";
|
||||
repo = "cli";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-6ur1ZIJRghkZk5tLMJUmKn+XfjVGFE0MRSQ/Uz+Eans=";
|
||||
sha256 = "sha256-JCuJliBr1IPdwGG9T0Bx5DhtHw8tJ45mteRLxRbkyio=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-JJNyzMYAQT/pS1+eGYQsUpxDiwa6DP7JWhIBuTtnOiE=";
|
||||
vendorSha256 = "sha256-6H56jf4QV+DdsiCetyhpXp6NHc86Hzo+CuqF06dL26A=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
|
|
@ -14,8 +14,6 @@ stdenv.mkDerivation rec {
|
|||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp git-annex-remote-rclone $out/bin
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
{
|
||||
"version": "14.1.1",
|
||||
"repo_hash": "1cygdllhqxah7d8lmx4hcx880wijwfvbbs6dfkdzcn0cd3czpcv8",
|
||||
"version": "14.1.2",
|
||||
"repo_hash": "1d28minrpgp8awcnx15bm7jv0k27i46wji3pc2d6wh1m0wk74b60",
|
||||
"owner": "gitlab-org",
|
||||
"repo": "gitlab",
|
||||
"rev": "v14.1.1-ee",
|
||||
"rev": "v14.1.2-ee",
|
||||
"passthru": {
|
||||
"GITALY_SERVER_VERSION": "14.1.1",
|
||||
"GITALY_SERVER_VERSION": "14.1.2",
|
||||
"GITLAB_PAGES_VERSION": "1.41.0",
|
||||
"GITLAB_SHELL_VERSION": "13.19.0",
|
||||
"GITLAB_WORKHORSE_VERSION": "14.1.1"
|
||||
"GITLAB_SHELL_VERSION": "13.19.1",
|
||||
"GITLAB_WORKHORSE_VERSION": "14.1.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{ stdenv, lib, fetchurl, fetchpatch, fetchFromGitLab, bundlerEnv
|
||||
, ruby, tzdata, git, nettools, nixosTests, nodejs, openssl
|
||||
, gitlabEnterprise ? false, callPackage, yarn
|
||||
, fixup_yarn_lock, replace, file
|
||||
, fixup_yarn_lock, replace, file, cacert
|
||||
}:
|
||||
|
||||
let
|
||||
|
@ -51,7 +51,7 @@ let
|
|||
pname = "gitlab-assets";
|
||||
inherit version src;
|
||||
|
||||
nativeBuildInputs = [ rubyEnv.wrappedRuby rubyEnv.bundler nodejs yarn git ];
|
||||
nativeBuildInputs = [ rubyEnv.wrappedRuby rubyEnv.bundler nodejs yarn git cacert ];
|
||||
|
||||
# Since version 12.6.0, the rake tasks need the location of git,
|
||||
# so we have to apply the location patches here too.
|
||||
|
|
|
@ -21,14 +21,14 @@ let
|
|||
};
|
||||
};
|
||||
in buildGoModule rec {
|
||||
version = "14.1.1";
|
||||
version = "14.1.2";
|
||||
pname = "gitaly";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "gitlab-org";
|
||||
repo = "gitaly";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-UCWN9TXbfysNLMOU8bDcjrwYtz7+kTCDQmRAl84ysWU=";
|
||||
sha256 = "sha256-7OqTOJDQJ/ojHevj/ld8VLjm5ZRQgCGZKchPrAlOSO8=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-/SZJGRUg0qV7RYCUSGDE/HL9CmzGVffhL6BmZ316tU0=";
|
||||
|
@ -37,7 +37,7 @@ in buildGoModule rec {
|
|||
inherit rubyEnv;
|
||||
};
|
||||
|
||||
buildFlags = [ "-tags=static,system_libgit2" ];
|
||||
tags = [ "static,system_libgit2" ];
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ rubyEnv.wrappedRuby libgit2 openssl zlib pcre http-parser ];
|
||||
doCheck = false;
|
||||
|
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "gitlab-shell";
|
||||
version = "13.19.0";
|
||||
version = "13.19.1";
|
||||
src = fetchFromGitLab {
|
||||
owner = "gitlab-org";
|
||||
repo = "gitlab-shell";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-CmatKArkpDS3GGbIIkKjs4FwywLiU+lRL32GKEpOqZ0=";
|
||||
sha256 = "sha256-F0TW0VjO5hc/lHqZhhMJJvpHazWRyR7Q7W324Fgn7fA=";
|
||||
};
|
||||
|
||||
buildInputs = [ ruby ];
|
||||
|
|
|
@ -5,7 +5,7 @@ in
|
|||
buildGoModule rec {
|
||||
pname = "gitlab-workhorse";
|
||||
|
||||
version = "14.1.1";
|
||||
version = "14.1.2";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = data.owner;
|
||||
|
|
|
@ -798,7 +798,7 @@ GEM
|
|||
nenv (~> 0.1)
|
||||
shellany (~> 0.0)
|
||||
numerizer (0.2.0)
|
||||
oauth (0.5.4)
|
||||
oauth (0.5.6)
|
||||
oauth2 (1.4.7)
|
||||
faraday (>= 0.8, < 2.0)
|
||||
jwt (>= 1.0, < 3.0)
|
||||
|
|
|
@ -3427,10 +3427,10 @@
|
|||
platforms = [];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1zszdg8q1b135z7l7crjj234k4j0m347hywp5kj6zsq7q78pw09y";
|
||||
sha256 = "1zwd6v39yqfdrpg1p3d9jvzs9ljg55ana2p06m0l7qn5w0lgx1a0";
|
||||
type = "gem";
|
||||
};
|
||||
version = "0.5.4";
|
||||
version = "0.5.6";
|
||||
};
|
||||
oauth2 = {
|
||||
dependencies = ["faraday" "jwt" "multi_json" "multi_xml" "rack"];
|
||||
|
|
|
@ -13,14 +13,14 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "pijul";
|
||||
version = "1.0.0-alpha.52";
|
||||
version = "1.0.0-alpha.53";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit version pname;
|
||||
sha256 = "0m759zfh40kxswsv40z1l332lc8lfqppyv8188y4i6biqmgbx8f1";
|
||||
sha256 = "1y5wnqscyfhd806qs6gfmssm7hvfdi7mxc9p1125jnmzca4wcsm2";
|
||||
};
|
||||
|
||||
cargoSha256 = "0f31hw2zjvhkhsb0ykvw4c3d0qy8zirgsaz7yr89hy01rs23bh8z";
|
||||
cargoSha256 = "0m9zjagq59rxf5pysklal030f4n0dqgmjsgwcnljajxc2r26665h";
|
||||
|
||||
cargoBuildFlags = lib.optional gitImportSupport "--features=git";
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ in stdenv.mkDerivation (rec {
|
|||
inherit pname;
|
||||
version = buildVersion;
|
||||
|
||||
phases = [ "installPhase" ];
|
||||
dontUnpack = true;
|
||||
|
||||
${primaryBinary} = binaryPackage;
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue