···119```
120121Then, run more phases up until the failure is reached.
122-For example, if the failure is in the build phase, the following phases would be required:
123124```bash
125-phases="${preConfigurePhases[*]:-} configurePhase ${preBuildPhases[*]:-} buildPhase" genericBuild
00000126```
127128-Re-run a single phase as many times as necessary to examine the failure like so:
129130```bash
131phases="buildPhase" genericBuild
···119```
120121Then, run more phases up until the failure is reached.
122+If the failure is in the build or check phase, the following phases would be required:
123124```bash
125+phases="${preConfigurePhases[*]:-} configurePhase ${preBuildPhases[*]:-} buildPhase checkPhase" genericBuild
126+```
127+128+Use this command to run all install phases:
129+```bash
130+phases="${preInstallPhases[*]:-} installPhase ${preFixupPhases[*]:-} fixupPhase installCheckPhase" genericBuild
131```
132133+Single phase can be re-run as many times as necessary to examine the failure like so:
134135```bash
136phases="buildPhase" genericBuild
+1-1
lib/fileset/default.nix
···312 lib.fileset.fromSource: The source origin of the argument is of type ${typeOf path}, but it should be a path instead.''
313 else if ! pathExists path then
314 throw ''
315- lib.fileset.fromSource: The source origin (${toString path}) of the argument does not exist.''
316 else if isFiltered then
317 _fromSourceFilter path source.filter
318 else
···312 lib.fileset.fromSource: The source origin of the argument is of type ${typeOf path}, but it should be a path instead.''
313 else if ! pathExists path then
314 throw ''
315+ lib.fileset.fromSource: The source origin (${toString path}) of the argument is a path that does not exist.''
316 else if isFiltered then
317 _fromSourceFilter path source.filter
318 else
+4-4
lib/fileset/internal.nix
···381382 # Turn a fileset into a source filter function suitable for `builtins.path`
383 # Only directories recursively containing at least one files are recursed into
384- # Type: Path -> fileset -> (String -> String -> Bool)
385 _toSourceFilter = fileset:
386 let
387 # Simplify the tree, necessary to make sure all empty directories are null
···753754 resultingTree =
755 _differenceTree
756- positive._internalBase
757- positive._internalTree
758- negativeTreeWithPositiveBase;
759 in
760 # If the first file set is empty, we can never have any files in the result
761 if positive._internalIsEmptyWithoutBase then
···381382 # Turn a fileset into a source filter function suitable for `builtins.path`
383 # Only directories recursively containing at least one files are recursed into
384+ # Type: fileset -> (String -> String -> Bool)
385 _toSourceFilter = fileset:
386 let
387 # Simplify the tree, necessary to make sure all empty directories are null
···753754 resultingTree =
755 _differenceTree
756+ positive._internalBase
757+ positive._internalTree
758+ negativeTreeWithPositiveBase;
759 in
760 # If the first file set is empty, we can never have any files in the result
761 if positive._internalIsEmptyWithoutBase then
+6-1
lib/fileset/tests.sh
···1064## lib.fileset.fromSource
10651066# Check error messages
1067-expectFailure 'fromSource null' 'lib.fileset.fromSource: The source origin of the argument is of type null, but it should be a path instead.'
106801069expectFailure 'fromSource (lib.cleanSource "")' 'lib.fileset.fromSource: The source origin of the argument is a string-like value \(""\), but it should be a path instead.
1070\s*Sources created from paths in strings cannot be turned into file sets, use `lib.sources` or derivations instead.'
1071001072expectFailure 'fromSource (lib.cleanSource null)' 'lib.fileset.fromSource: The source origin of the argument is of type null, but it should be a path instead.'
00010731074# fromSource on a path works and is the same as coercing that path
1075mkdir a
···1064## lib.fileset.fromSource
10651066# Check error messages
010671068+# String-like values are not supported
1069expectFailure 'fromSource (lib.cleanSource "")' 'lib.fileset.fromSource: The source origin of the argument is a string-like value \(""\), but it should be a path instead.
1070\s*Sources created from paths in strings cannot be turned into file sets, use `lib.sources` or derivations instead.'
10711072+# Wrong type
1073+expectFailure 'fromSource null' 'lib.fileset.fromSource: The source origin of the argument is of type null, but it should be a path instead.'
1074expectFailure 'fromSource (lib.cleanSource null)' 'lib.fileset.fromSource: The source origin of the argument is of type null, but it should be a path instead.'
1075+1076+# fromSource on non-existent paths gives an error
1077+expectFailure 'fromSource ./a' 'lib.fileset.fromSource: The source origin \('"$work"'/a\) of the argument is a path that does not exist.'
10781079# fromSource on a path works and is the same as coercing that path
1080mkdir a
···1+# OCS Inventory Agent {#module-services-ocsinventory-agent}
2+3+[OCS Inventory NG](https://ocsinventory-ng.org/) or Open Computers and Software inventory
4+is an application designed to help IT administrator to keep track of the hardware and software
5+configurations of computers that are installed on their network.
6+7+OCS Inventory collects information about the hardware and software of networked machines
8+through the **OCS Inventory Agent** program.
9+10+This NixOS module enables you to install and configure this agent so that it sends information from your computer to the OCS Inventory server.
11+12+For more technical information about OCS Inventory Agent, refer to [the Wiki documentation](https://wiki.ocsinventory-ng.org/03.Basic-documentation/Setting-up-the-UNIX-agent-manually-on-client-computers/).
13+14+15+## Basic Usage {#module-services-ocsinventory-agent-basic-usage}
16+17+A minimal configuration looks like this:
18+19+```nix
20+{
21+ services.ocsinventory-agent = {
22+ enable = true;
23+ settings = {
24+ server = "https://ocsinventory.localhost:8080/ocsinventory";
25+ tag = "01234567890123";
26+ };
27+ };
28+}
29+```
30+31+This configuration will periodically run the ocsinventory-agent SystemD service.
32+33+The OCS Inventory Agent will inventory the computer and then sends the results to the specified OCS Inventory Server.
···28 xorg.libICE
29 xorg.libSM
30 zlib
031 # qsys requirements
32 xorg.libXtst
33 xorg.libXi
···53 xorg.libX11
54 xorg.libXext
55 xorg.libXrender
56- libudev0-shim
57 libxcrypt-legacy
58 ];
59···95 # LD_PRELOAD fixes issues in the licensing system that cause memory corruption and crashes when
96 # starting most operations in many containerized environments, including WSL2, Docker, and LXC
97 # (a similiar fix involving LD_PRELOADing tcmalloc did not solve the issue in my situation)
98- # we use the name so that quartus can load the 64 bit verson and modelsim can load the 32 bit version
99 # https://community.intel.com/t5/Intel-FPGA-Software-Installation/Running-Quartus-Prime-Standard-on-WSL-crashes-in-libudev-so/m-p/1189032
100 #
101 # But, as can be seen in the above resource, LD_PRELOADing libudev breaks
···103 # `(vlog-2163) Macro `<protected> is undefined.`), so only use LD_PRELOAD
104 # for non-ModelSim wrappers.
105 if [ "$NIXPKGS_IS_MODELSIM_WRAPPER" != 1 ]; then
106- export LD_PRELOAD=''${LD_PRELOAD:+$LD_PRELOAD:}libudev.so.0
107 fi
108 '';
109
···28 xorg.libICE
29 xorg.libSM
30 zlib
31+ libudev0-shim
32 # qsys requirements
33 xorg.libXtst
34 xorg.libXi
···54 xorg.libX11
55 xorg.libXext
56 xorg.libXrender
057 libxcrypt-legacy
58 ];
59···95 # LD_PRELOAD fixes issues in the licensing system that cause memory corruption and crashes when
96 # starting most operations in many containerized environments, including WSL2, Docker, and LXC
97 # (a similiar fix involving LD_PRELOADing tcmalloc did not solve the issue in my situation)
098 # https://community.intel.com/t5/Intel-FPGA-Software-Installation/Running-Quartus-Prime-Standard-on-WSL-crashes-in-libudev-so/m-p/1189032
99 #
100 # But, as can be seen in the above resource, LD_PRELOADing libudev breaks
···102 # `(vlog-2163) Macro `<protected> is undefined.`), so only use LD_PRELOAD
103 # for non-ModelSim wrappers.
104 if [ "$NIXPKGS_IS_MODELSIM_WRAPPER" != 1 ]; then
105+ export LD_PRELOAD=''${LD_PRELOAD:+$LD_PRELOAD:}/usr/lib/libudev.so.0
106 fi
107 '';
108
···115116 nameArray = builtins.map(a: a.name) (lib.optionals usesNixExtensions nixExtensions);
117118- requiresSigning = browser ? MOZ_REQUIRE_SIGNING
119- -> toString browser.MOZ_REQUIRE_SIGNING != "";
120-121 # Check that every extension has a unqiue .name attribute
122 # and an extid attribute
123 extensions = if nameArray != (lib.unique nameArray) then
124 throw "Firefox addon name needs to be unique"
125- else if requiresSigning && !lib.hasSuffix "esr" browser.name then
126- throw "Nix addons are only supported without signature enforcement (eg. Firefox ESR)"
127 else builtins.map (a:
128 if ! (builtins.hasAttr "extid" a) then
129- throw "nixExtensions has an invalid entry. Missing extid attribute. Please use fetchfirefoxaddon"
130 else
131 a
132 ) (lib.optionals usesNixExtensions nixExtensions);
···115116 nameArray = builtins.map(a: a.name) (lib.optionals usesNixExtensions nixExtensions);
117000118 # Check that every extension has a unqiue .name attribute
119 # and an extid attribute
120 extensions = if nameArray != (lib.unique nameArray) then
121 throw "Firefox addon name needs to be unique"
122+ else if browser.requireSigning || !browser.allowAddonSideload then
123+ throw "Nix addons are only supported with signature enforcement disabled and addon sideloading enabled (eg. LibreWolf)"
124 else builtins.map (a:
125 if ! (builtins.hasAttr "extid" a) then
126+ throw "nixExtensions has an invalid entry. Missing extid attribute. Please use fetchFirefoxAddon"
127 else
128 a
129 ) (lib.optionals usesNixExtensions nixExtensions);
···1{ lib
2, stdenv
00003, copyDesktopItems
4-, makeDesktopItem
5, makeWrapper
6-, fetchzip
7, ffmpeg
8, gtk2
9, hunspell
10-, icoutils
11, mono
12, mpv
13, tesseract4
14-, nix-update-script
15}:
1617stdenv.mkDerivation rec {
18 pname = "subtitleedit";
19- version = "4.0.1";
2021 src = fetchzip {
22 url = "https://github.com/SubtitleEdit/subtitleedit/releases/download/${version}/SE${lib.replaceStrings [ "." ] [ "" ] version}.zip";
23- hash = "sha256-Z7NVn4F19Hx55YWPNmbpWZ8yQulXd50bcy2A/8pCqJ4=";
24 stripRoot = false;
25 };
26···8081 meta = with lib; {
82 description = "A subtitle editor";
83- homepage = "https://nikse.dk/subtitleedit";
84- license = licenses.gpl3Plus;
85 longDescription = ''
86 With Subtitle Edit you can easily adjust a subtitle if it is out of sync with
87 the video in several different ways. You can also use it for making
88 new subtitles from scratch (using the time-line /waveform/spectrogram)
89 or for translating subtitles.
90 '';
91- maintainers = with maintainers; [ paveloom ];
092 platforms = platforms.all;
93 sourceProvenance = with sourceTypes; [ binaryNativeCode ];
094 };
95}
···1{ lib
2, stdenv
3+, fetchzip
4+, makeDesktopItem
5+, nix-update-script
6+7, copyDesktopItems
8+, icoutils
9, makeWrapper
10+11, ffmpeg
12, gtk2
13, hunspell
014, mono
15, mpv
16, tesseract4
017}:
1819stdenv.mkDerivation rec {
20 pname = "subtitleedit";
21+ version = "4.0.2";
2223 src = fetchzip {
24 url = "https://github.com/SubtitleEdit/subtitleedit/releases/download/${version}/SE${lib.replaceStrings [ "." ] [ "" ] version}.zip";
25+ hash = "sha256-kcs2h6HeWniJhGDNsy+EBauXbiDIlLCOJkVOCIzLBzM=";
26 stripRoot = false;
27 };
28···8283 meta = with lib; {
84 description = "A subtitle editor";
0085 longDescription = ''
86 With Subtitle Edit you can easily adjust a subtitle if it is out of sync with
87 the video in several different ways. You can also use it for making
88 new subtitles from scratch (using the time-line /waveform/spectrogram)
89 or for translating subtitles.
90 '';
91+ homepage = "https://nikse.dk/subtitleedit";
92+ license = licenses.gpl3Plus;
93 platforms = platforms.all;
94 sourceProvenance = with sourceTypes; [ binaryNativeCode ];
95+ maintainers = with maintainers; [ paveloom ];
96 };
97}
···35mapAliases ({
36 abodepy = jaraco-abode; # added 2023-02-01
37 acebinf = throw "acebinf has been removed because it is abandoned and broken."; # Added 2023-05-19
038 aioh2 = throw "aioh2 has been removed because it is abandoned and broken."; # Added 2022-03-30
39 aionotify = throw "aionotify has been removed because is unmaintained and incompatible with python3.11."; # Added 2023-10-27
40 aiosenseme = throw "aiosenseme has been removed, because it does no longer work with the latest firmware and has become unmaintained"; # Added 2023-07-05
···35mapAliases ({
36 abodepy = jaraco-abode; # added 2023-02-01
37 acebinf = throw "acebinf has been removed because it is abandoned and broken."; # Added 2023-05-19
38+ adafruit-nrfutil = throw "adafruit-nrfutil has been promoted to a top-level attribute."; # Added 2023-11-19
39 aioh2 = throw "aioh2 has been removed because it is abandoned and broken."; # Added 2022-03-30
40 aionotify = throw "aionotify has been removed because is unmaintained and incompatible with python3.11."; # Added 2023-10-27
41 aiosenseme = throw "aiosenseme has been removed, because it does no longer work with the latest firmware and has become unmaintained"; # Added 2023-07-05