From 05dd85210e465caa44ef7254f2781b2d12ba2882 Mon Sep 17 00:00:00 2001
From: Alan Pearce
Date: Sun, 16 Oct 2022 23:49:18 +0200
Subject: Reformat files with alejandra
---
user/config.nix | 4 +-
user/mba.nix | 6 +-
user/modules/eshell.nix | 15 +-
user/modules/nvim-coc.nix | 15 +-
user/modules/tabnine.nix | 47 +-
user/overlays/extra-packages.nix | 3 +-
user/packages/lumen/default.nix | 9 +-
user/packages/node2nix/default.nix | 27 +-
user/packages/node2nix/node-env.nix | 1096 ++++++++++++++++--------------
user/packages/node2nix/node-packages.nix | 180 ++---
user/prefect.nix | 6 +-
user/satoshipad.nix | 12 +-
user/server.nix | 10 +-
user/settings/accounting.nix | 6 +-
user/settings/base.nix | 64 +-
user/settings/chat.nix | 6 +-
user/settings/darwin.nix | 65 +-
user/settings/development/base.nix | 51 +-
user/settings/development/clojure.nix | 6 +-
user/settings/development/javascript.nix | 72 +-
user/settings/development/lisp.nix | 9 +-
user/settings/development/rust.nix | 6 +-
user/settings/development/web.nix | 21 +-
user/settings/dunst.nix | 6 +-
user/settings/emacs.nix | 247 +++----
user/settings/gaming.nix | 6 +-
user/settings/git.nix | 6 +-
user/settings/gnupg.nix | 6 +-
user/settings/golang.nix | 10 +-
user/settings/i3.nix | 70 +-
user/settings/ledger.nix | 6 +-
user/settings/mail.nix | 7 +-
user/settings/music-management.nix | 6 +-
user/settings/music.nix | 10 +-
user/settings/nix.nix | 6 +-
user/settings/nixos.nix | 6 +-
user/settings/nixpkgs.nix | 15 +-
user/settings/passwords.nix | 6 +-
user/settings/rofi.nix | 9 +-
user/settings/satoshipay.nix | 62 +-
user/settings/ssh.nix | 7 +-
user/settings/sxhkd.nix | 6 +-
user/settings/tabnine.nix | 29 +-
user/settings/trezor.nix | 6 +-
user/settings/user-interface.nix | 33 +-
user/settings/xresources.nix | 6 +-
user/settings/zsh.nix | 76 ++-
47 files changed, 1300 insertions(+), 1083 deletions(-)
(limited to 'user')
diff --git a/user/config.nix b/user/config.nix
index 53c7c8e2..d138ff20 100644
--- a/user/config.nix
+++ b/user/config.nix
@@ -1,4 +1,4 @@
-{ pkgs }: {
+{pkgs}: {
allowUnfree = true;
- allowUnfreePredicate = (pkg: true);
+ allowUnfreePredicate = pkg: true;
}
diff --git a/user/mba.nix b/user/mba.nix
index 9183108d..93418622 100644
--- a/user/mba.nix
+++ b/user/mba.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
imports = [
./settings/base.nix
./settings/development/base.nix
diff --git a/user/modules/eshell.nix b/user/modules/eshell.nix
index eaa4a206..fd108af6 100644
--- a/user/modules/eshell.nix
+++ b/user/modules/eshell.nix
@@ -1,12 +1,15 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let cfg = config.programs.emacs;
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+with lib; let
+ cfg = config.programs.emacs;
in {
options.programs.emacs.eshell = {
aliases = mkOption {
- default = { };
+ default = {};
type = types.attrsOf types.str;
example = {
ll = "ls -l $*";
diff --git a/user/modules/nvim-coc.nix b/user/modules/nvim-coc.nix
index 5aa462f0..bc8fbb19 100644
--- a/user/modules/nvim-coc.nix
+++ b/user/modules/nvim-coc.nix
@@ -1,12 +1,13 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+with lib; let
inherit (pkgs) stdenv;
cfg = config.programs.neovim.coc;
-in
-{
+in {
options.programs.neovim.coc = {
config = mkOption {
type = types.attrs;
diff --git a/user/modules/tabnine.nix b/user/modules/tabnine.nix
index 16065ab1..261176dc 100644
--- a/user/modules/tabnine.nix
+++ b/user/modules/tabnine.nix
@@ -1,32 +1,35 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+with lib; let
inherit (pkgs) stdenv;
cfg = config.programs.tabnine;
lspConfigFile = config:
- pkgs.runCommand "TabNine.toml"
- {
- buildInputs = [ pkgs.remarshal ];
- preferLocalBuild = true;
- allowSubstitutes = false;
- }
- ''
- remarshal -if json -of toml \
- < ${pkgs.writeText "config.json" (builtins.toJSON cfg.lspConfig)} \
- | sed -e 's/^\["\(.*\)"\]/[\1]/' \
- > $out
- '';
-in
-{
-
+ pkgs.runCommand "TabNine.toml"
+ {
+ buildInputs = [pkgs.remarshal];
+ preferLocalBuild = true;
+ allowSubstitutes = false;
+ }
+ ''
+ remarshal -if json -of toml \
+ < ${pkgs.writeText "config.json" (builtins.toJSON cfg.lspConfig)} \
+ | sed -e 's/^\["\(.*\)"\]/[\1]/' \
+ > $out
+ '';
+in {
options.programs.tabnine = {
enable = mkEnableOption "TabNine, Smart Compose for code.";
configDir = mkOption {
type = types.str;
- default = if stdenv.isDarwin then "Library/Preferences/TabNine" else "${config.xdg.configHome}/TabNine";
+ default =
+ if stdenv.isDarwin
+ then "Library/Preferences/TabNine"
+ else "${config.xdg.configHome}/TabNine";
description = ''
Location of TabNine configuration directory relative to \$HOME
'';
@@ -34,7 +37,7 @@ in
config = mkOption {
type = types.attrs;
- default = { };
+ default = {};
description = ''
TabNine configuration written to
\${configDir}/tabnine_config.json
diff --git a/user/overlays/extra-packages.nix b/user/overlays/extra-packages.nix
index 0329120b..ec315586 100644
--- a/user/overlays/extra-packages.nix
+++ b/user/overlays/extra-packages.nix
@@ -1,4 +1,3 @@
-self: super:
-{
+self: super: {
lumen = super.callPackage ../packages/lumen {};
}
diff --git a/user/packages/lumen/default.nix b/user/packages/lumen/default.nix
index b4406855..91e1b726 100644
--- a/user/packages/lumen/default.nix
+++ b/user/packages/lumen/default.nix
@@ -1,5 +1,10 @@
-{ stdenv, lib, go, buildGoPackage, fetchFromGitHub }:
-
+{
+ stdenv,
+ lib,
+ go,
+ buildGoPackage,
+ fetchFromGitHub,
+}:
buildGoPackage rec {
pname = "lumen";
version = "0.4.1";
diff --git a/user/packages/node2nix/default.nix b/user/packages/node2nix/default.nix
index 66f82712..09eea0fe 100644
--- a/user/packages/node2nix/default.nix
+++ b/user/packages/node2nix/default.nix
@@ -1,17 +1,22 @@
# This file has been generated by node2nix 1.11.1. Do not edit!
-
-{pkgs ? import {
- inherit system;
-}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-18_x"}:
-
-let
+{
+ pkgs ?
+ import {
+ inherit system;
+ },
+ system ? builtins.currentSystem,
+ nodejs ? pkgs."nodejs-18_x",
+}: let
nodeEnv = import ./node-env.nix {
inherit (pkgs) stdenv lib python2 runCommand writeTextFile writeShellScript;
inherit pkgs nodejs;
- libtool = if pkgs.stdenv.isDarwin then pkgs.darwin.cctools else null;
+ libtool =
+ if pkgs.stdenv.isDarwin
+ then pkgs.darwin.cctools
+ else null;
};
in
-import ./node-packages.nix {
- inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
- inherit nodeEnv;
-}
+ import ./node-packages.nix {
+ inherit (pkgs) fetchurl nix-gitignore stdenv lib fetchgit;
+ inherit nodeEnv;
+ }
diff --git a/user/packages/node2nix/node-env.nix b/user/packages/node2nix/node-env.nix
index 0dd75272..b81347da 100644
--- a/user/packages/node2nix/node-env.nix
+++ b/user/packages/node2nix/node-env.nix
@@ -1,12 +1,25 @@
# This file originates from node2nix
-
-{lib, stdenv, nodejs, python2, pkgs, libtool, runCommand, writeTextFile, writeShellScript}:
-
-let
+{
+ lib,
+ stdenv,
+ nodejs,
+ python2,
+ pkgs,
+ libtool,
+ runCommand,
+ writeTextFile,
+ writeShellScript,
+}: let
# Workaround to cope with utillinux in Nixpkgs 20.09 and util-linux in Nixpkgs master
- utillinux = if pkgs ? utillinux then pkgs.utillinux else pkgs.util-linux;
+ utillinux =
+ if pkgs ? utillinux
+ then pkgs.utillinux
+ else pkgs.util-linux;
- python = if nodejs ? python then nodejs.python else python2;
+ python =
+ if nodejs ? python
+ then nodejs.python
+ else python2;
# Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise
tarWrapper = runCommand "tarWrapper" {} ''
@@ -21,13 +34,16 @@ let
'';
# Function that generates a TGZ file from a NPM project
- buildNodeSourceDist =
- { name, version, src, ... }:
-
+ buildNodeSourceDist = {
+ name,
+ version,
+ src,
+ ...
+ }:
stdenv.mkDerivation {
name = "node-tarball-${name}-${version}";
inherit src;
- buildInputs = [ nodejs ];
+ buildInputs = [nodejs];
buildPhase = ''
export HOME=$TMPDIR
tgzFile=$(npm pack | tail -n 1) # Hooks to the pack command will add output (https://docs.npmjs.com/misc/scripts)
@@ -40,468 +56,495 @@ let
'';
};
- # Common shell logic
- installPackage = writeShellScript "install-package" ''
- installPackage() {
- local packageName=$1 src=$2
+ # Common shell logic
+ installPackage = writeShellScript "install-package" ''
+ installPackage() {
+ local packageName=$1 src=$2
- local strippedName
+ local strippedName
- local DIR=$PWD
- cd $TMPDIR
+ local DIR=$PWD
+ cd $TMPDIR
- unpackFile $src
+ unpackFile $src
- # Make the base dir in which the target dependency resides first
- mkdir -p "$(dirname "$DIR/$packageName")"
+ # Make the base dir in which the target dependency resides first
+ mkdir -p "$(dirname "$DIR/$packageName")"
- if [ -f "$src" ]
- then
- # Figure out what directory has been unpacked
- packageDir="$(find . -maxdepth 1 -type d | tail -1)"
+ if [ -f "$src" ]
+ then
+ # Figure out what directory has been unpacked
+ packageDir="$(find . -maxdepth 1 -type d | tail -1)"
- # Restore write permissions to make building work
- find "$packageDir" -type d -exec chmod u+x {} \;
- chmod -R u+w "$packageDir"
+ # Restore write permissions to make building work
+ find "$packageDir" -type d -exec chmod u+x {} \;
+ chmod -R u+w "$packageDir"
- # Move the extracted tarball into the output folder
- mv "$packageDir" "$DIR/$packageName"
- elif [ -d "$src" ]
- then
- # Get a stripped name (without hash) of the source directory.
- # On old nixpkgs it's already set internally.
- if [ -z "$strippedName" ]
- then
- strippedName="$(stripHash $src)"
- fi
+ # Move the extracted tarball into the output folder
+ mv "$packageDir" "$DIR/$packageName"
+ elif [ -d "$src" ]
+ then
+ # Get a stripped name (without hash) of the source directory.
+ # On old nixpkgs it's already set internally.
+ if [ -z "$strippedName" ]
+ then
+ strippedName="$(stripHash $src)"
+ fi
- # Restore write permissions to make building work
- chmod -R u+w "$strippedName"
+ # Restore write permissions to make building work
+ chmod -R u+w "$strippedName"
- # Move the extracted directory into the output folder
- mv "$strippedName" "$DIR/$packageName"
- fi
+ # Move the extracted directory into the output folder
+ mv "$strippedName" "$DIR/$packageName"
+ fi
- # Change to the package directory to install dependencies
- cd "$DIR/$packageName"
- }
- '';
+ # Change to the package directory to install dependencies
+ cd "$DIR/$packageName"
+ }
+ '';
- # Bundle the dependencies of the package
- #
- # Only include dependencies if they don't exist. They may also be bundled in the package.
- includeDependencies = {dependencies}:
+ # Bundle the dependencies of the package
+ #
+ # Only include dependencies if they don't exist. They may also be bundled in the package.
+ includeDependencies = {dependencies}:
lib.optionalString (dependencies != []) (
''
mkdir -p node_modules
cd node_modules
''
- + (lib.concatMapStrings (dependency:
- ''
- if [ ! -e "${dependency.packageName}" ]; then
- ${composePackage dependency}
- fi
- ''
- ) dependencies)
+ + (lib.concatMapStrings (
+ dependency: ''
+ if [ ! -e "${dependency.packageName}" ]; then
+ ${composePackage dependency}
+ fi
+ ''
+ )
+ dependencies)
+ ''
cd ..
''
);
- # Recursively composes the dependencies of a package
- composePackage = { name, packageName, src, dependencies ? [], ... }@args:
+ # Recursively composes the dependencies of a package
+ composePackage = {
+ name,
+ packageName,
+ src,
+ dependencies ? [],
+ ...
+ } @ args:
builtins.addErrorContext "while evaluating node package '${packageName}'" ''
installPackage "${packageName}" "${src}"
- ${includeDependencies { inherit dependencies; }}
- cd ..
- ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
- '';
-
- pinpointDependencies = {dependencies, production}:
- let
- pinpointDependenciesFromPackageJSON = writeTextFile {
- name = "pinpointDependencies.js";
- text = ''
- var fs = require('fs');
- var path = require('path');
-
- function resolveDependencyVersion(location, name) {
- if(location == process.env['NIX_STORE']) {
- return null;
- } else {
- var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
-
- if(fs.existsSync(dependencyPackageJSON)) {
- var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
-
- if(dependencyPackageObj.name == name) {
- return dependencyPackageObj.version;
- }
- } else {
- return resolveDependencyVersion(path.resolve(location, ".."), name);
- }
- }
- }
-
- function replaceDependencies(dependencies) {
- if(typeof dependencies == "object" && dependencies !== null) {
- for(var dependency in dependencies) {
- var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
-
- if(resolvedVersion === null) {
- process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
- } else {
- dependencies[dependency] = resolvedVersion;
- }
- }
- }
- }
-
- /* Read the package.json configuration */
- var packageObj = JSON.parse(fs.readFileSync('./package.json'));
-
- /* Pinpoint all dependencies */
- replaceDependencies(packageObj.dependencies);
- if(process.argv[2] == "development") {
- replaceDependencies(packageObj.devDependencies);
- }
- else {
- packageObj.devDependencies = {};
- }
- replaceDependencies(packageObj.optionalDependencies);
- replaceDependencies(packageObj.peerDependencies);
-
- /* Write the fixed package.json file */
- fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
- '';
- };
- in
- ''
- node ${pinpointDependenciesFromPackageJSON} ${if production then "production" else "development"}
-
- ${lib.optionalString (dependencies != [])
- ''
- if [ -d node_modules ]
- then
- cd node_modules
- ${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
- cd ..
- fi
- ''}
- '';
-
- # Recursively traverses all dependencies of a package and pinpoints all
- # dependencies in the package.json file to the versions that are actually
- # being used.
-
- pinpointDependenciesOfPackage = { packageName, dependencies ? [], production ? true, ... }@args:
- ''
- if [ -d "${packageName}" ]
- then
- cd "${packageName}"
- ${pinpointDependencies { inherit dependencies production; }}
+ ${includeDependencies {inherit dependencies;}}
cd ..
${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
- fi
'';
- # Extract the Node.js source code which is used to compile packages with
- # native bindings
- nodeSources = runCommand "node-sources" {} ''
- tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
- mv node-* $out
- '';
-
- # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
- addIntegrityFieldsScript = writeTextFile {
- name = "addintegrityfields.js";
+ pinpointDependencies = {
+ dependencies,
+ production,
+ }: let
+ pinpointDependenciesFromPackageJSON = writeTextFile {
+ name = "pinpointDependencies.js";
text = ''
var fs = require('fs');
var path = require('path');
- function augmentDependencies(baseDir, dependencies) {
- for(var dependencyName in dependencies) {
- var dependency = dependencies[dependencyName];
-
- // Open package.json and augment metadata fields
- var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
- var packageJSONPath = path.join(packageJSONDir, "package.json");
+ function resolveDependencyVersion(location, name) {
+ if(location == process.env['NIX_STORE']) {
+ return null;
+ } else {
+ var dependencyPackageJSON = path.join(location, "node_modules", name, "package.json");
- if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
- console.log("Adding metadata fields to: "+packageJSONPath);
- var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
+ if(fs.existsSync(dependencyPackageJSON)) {
+ var dependencyPackageObj = JSON.parse(fs.readFileSync(dependencyPackageJSON));
- if(dependency.integrity) {
- packageObj["_integrity"] = dependency.integrity;
- } else {
- packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
+ if(dependencyPackageObj.name == name) {
+ return dependencyPackageObj.version;
}
-
- if(dependency.resolved) {
- packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided
} else {
- packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
+ return resolveDependencyVersion(path.resolve(location, ".."), name);
}
-
- if(dependency.from !== undefined) { // Adopt from property if one has been provided
- packageObj["_from"] = dependency.from;
}
-
- fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
}
- // Augment transitive dependencies
- if(dependency.dependencies !== undefined) {
- augmentDependencies(packageJSONDir, dependency.dependencies);
+ function replaceDependencies(dependencies) {
+ if(typeof dependencies == "object" && dependencies !== null) {
+ for(var dependency in dependencies) {
+ var resolvedVersion = resolveDependencyVersion(process.cwd(), dependency);
+
+ if(resolvedVersion === null) {
+ process.stderr.write("WARNING: cannot pinpoint dependency: "+dependency+", context: "+process.cwd()+"\n");
+ } else {
+ dependencies[dependency] = resolvedVersion;
}
}
}
-
- if(fs.existsSync("./package-lock.json")) {
- var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
-
- if(![1, 2].includes(packageLock.lockfileVersion)) {
- process.stderr.write("Sorry, I only understand lock file versions 1 and 2!\n");
- process.exit(1);
}
- if(packageLock.dependencies !== undefined) {
- augmentDependencies(".", packageLock.dependencies);
+ /* Read the package.json configuration */
+ var packageObj = JSON.parse(fs.readFileSync('./package.json'));
+
+ /* Pinpoint all dependencies */
+ replaceDependencies(packageObj.dependencies);
+ if(process.argv[2] == "development") {
+ replaceDependencies(packageObj.devDependencies);
}
+ else {
+ packageObj.devDependencies = {};
}
+ replaceDependencies(packageObj.optionalDependencies);
+ replaceDependencies(packageObj.peerDependencies);
+
+ /* Write the fixed package.json file */
+ fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
'';
};
+ in ''
+ node ${pinpointDependenciesFromPackageJSON} ${
+ if production
+ then "production"
+ else "development"
+ }
+
+ ${lib.optionalString (dependencies != [])
+ ''
+ if [ -d node_modules ]
+ then
+ cd node_modules
+ ${lib.concatMapStrings (dependency: pinpointDependenciesOfPackage dependency) dependencies}
+ cd ..
+ fi
+ ''}
+ '';
- # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
- reconstructPackageLock = writeTextFile {
- name = "reconstructpackagelock.js";
- text = ''
- var fs = require('fs');
- var path = require('path');
+ # Recursively traverses all dependencies of a package and pinpoints all
+ # dependencies in the package.json file to the versions that are actually
+ # being used.
+
+ pinpointDependenciesOfPackage = {
+ packageName,
+ dependencies ? [],
+ production ? true,
+ ...
+ } @ args: ''
+ if [ -d "${packageName}" ]
+ then
+ cd "${packageName}"
+ ${pinpointDependencies {inherit dependencies production;}}
+ cd ..
+ ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
+ fi
+ '';
- var packageObj = JSON.parse(fs.readFileSync("package.json"));
-
- var lockObj = {
- name: packageObj.name,
- version: packageObj.version,
- lockfileVersion: 2,
- requires: true,
- packages: {
- "": {
- name: packageObj.name,
- version: packageObj.version,
- license: packageObj.license,
- bin: packageObj.bin,
- dependencies: packageObj.dependencies,
- engines: packageObj.engines,
- optionalDependencies: packageObj.optionalDependencies
- }
- },
- dependencies: {}
- };
-
- function augmentPackageJSON(filePath, packages, dependencies) {
- var packageJSON = path.join(filePath, "package.json");
- if(fs.existsSync(packageJSON)) {
- var packageObj = JSON.parse(fs.readFileSync(packageJSON));
- packages[filePath] = {
- version: packageObj.version,
- integrity: "sha1-000000000000000000000000000=",
- dependencies: packageObj.dependencies,
- engines: packageObj.engines,
- optionalDependencies: packageObj.optionalDependencies
- };
- dependencies[packageObj.name] = {
- version: packageObj.version,
- integrity: "sha1-000000000000000000000000000=",
- dependencies: {}
- };
- processDependencies(path.join(filePath, "node_modules"), packages, dependencies[packageObj.name].dependencies);
- }
- }
+ # Extract the Node.js source code which is used to compile packages with
+ # native bindings
+ nodeSources = runCommand "node-sources" {} ''
+ tar --no-same-owner --no-same-permissions -xf ${nodejs.src}
+ mv node-* $out
+ '';
+
+ # Script that adds _integrity fields to all package.json files to prevent NPM from consulting the cache (that is empty)
+ addIntegrityFieldsScript = writeTextFile {
+ name = "addintegrityfields.js";
+ text = ''
+ var fs = require('fs');
+ var path = require('path');
+
+ function augmentDependencies(baseDir, dependencies) {
+ for(var dependencyName in dependencies) {
+ var dependency = dependencies[dependencyName];
+
+ // Open package.json and augment metadata fields
+ var packageJSONDir = path.join(baseDir, "node_modules", dependencyName);
+ var packageJSONPath = path.join(packageJSONDir, "package.json");
+
+ if(fs.existsSync(packageJSONPath)) { // Only augment packages that exist. Sometimes we may have production installs in which development dependencies can be ignored
+ console.log("Adding metadata fields to: "+packageJSONPath);
+ var packageObj = JSON.parse(fs.readFileSync(packageJSONPath));
+
+ if(dependency.integrity) {
+ packageObj["_integrity"] = dependency.integrity;
+ } else {
+ packageObj["_integrity"] = "sha1-000000000000000000000000000="; // When no _integrity string has been provided (e.g. by Git dependencies), add a dummy one. It does not seem to harm and it bypasses downloads.
+ }
- function processDependencies(dir, packages, dependencies) {
- if(fs.existsSync(dir)) {
- var files = fs.readdirSync(dir);
+ if(dependency.resolved) {
+ packageObj["_resolved"] = dependency.resolved; // Adopt the resolved property if one has been provided
+ } else {
+ packageObj["_resolved"] = dependency.version; // Set the resolved version to the version identifier. This prevents NPM from cloning Git repositories.
+ }
- files.forEach(function(entry) {
- var filePath = path.join(dir, entry);
- var stats = fs.statSync(filePath);
+ if(dependency.from !== undefined) { // Adopt from property if one has been provided
+ packageObj["_from"] = dependency.from;
+ }
- if(stats.isDirectory()) {
- if(entry.substr(0, 1) == "@") {
- // When we encounter a namespace folder, augment all packages belonging to the scope
- var pkgFiles = fs.readdirSync(filePath);
+ fs.writeFileSync(packageJSONPath, JSON.stringify(packageObj, null, 2));
+ }
- pkgFiles.forEach(function(entry) {
- if(stats.isDirectory()) {
- var pkgFilePath = path.join(filePath, entry);
- augmentPackageJSON(pkgFilePath, packages, dependencies);
- }
- });
- } else {
- augmentPackageJSON(filePath, packages, dependencies);
- }
- }
- });
- }
- }
+ // Augment transitive dependencies
+ if(dependency.dependencies !== undefined) {
+ augmentDependencies(packageJSONDir, dependency.dependencies);
+ }
+ }
+ }
- processDependencies("node_modules", lockObj.packages, lockObj.dependencies);
+ if(fs.existsSync("./package-lock.json")) {
+ var packageLock = JSON.parse(fs.readFileSync("./package-lock.json"));
- fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
- '';
- };
+ if(![1, 2].includes(packageLock.lockfileVersion)) {
+ process.stderr.write("Sorry, I only understand lock file versions 1 and 2!\n");
+ process.exit(1);
+ }
- # Script that links bins defined in package.json to the node_modules bin directory
- # NPM does not do this for top-level packages itself anymore as of v7
- linkBinsScript = writeTextFile {
- name = "linkbins.js";
- text = ''
- var fs = require('fs');
- var path = require('path');
+ if(packageLock.dependencies !== undefined) {
+ augmentDependencies(".", packageLock.dependencies);
+ }
+ }
+ '';
+ };
+
+ # Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
+ reconstructPackageLock = writeTextFile {
+ name = "reconstructpackagelock.js";
+ text = ''
+ var fs = require('fs');
+ var path = require('path');
+
+ var packageObj = JSON.parse(fs.readFileSync("package.json"));
+
+ var lockObj = {
+ name: packageObj.name,
+ version: packageObj.version,
+ lockfileVersion: 2,
+ requires: true,
+ packages: {
+ "": {
+ name: packageObj.name,
+ version: packageObj.version,
+ license: packageObj.license,
+ bin: packageObj.bin,
+ dependencies: packageObj.dependencies,
+ engines: packageObj.engines,
+ optionalDependencies: packageObj.optionalDependencies
+ }
+ },
+ dependencies: {}
+ };
- var packageObj = JSON.parse(fs.readFileSync("package.json"));
+ function augmentPackageJSON(filePath, packages, dependencies) {
+ var packageJSON = path.join(filePath, "package.json");
+ if(fs.existsSync(packageJSON)) {
+ var packageObj = JSON.parse(fs.readFileSync(packageJSON));
+ packages[filePath] = {
+ version: packageObj.version,
+ integrity: "sha1-000000000000000000000000000=",
+ dependencies: packageObj.dependencies,
+ engines: packageObj.engines,
+ optionalDependencies: packageObj.optionalDependencies
+ };
+ dependencies[packageObj.name] = {
+ version: packageObj.version,
+ integrity: "sha1-000000000000000000000000000=",
+ dependencies: {}
+ };
+ processDependencies(path.join(filePath, "node_modules"), packages, dependencies[packageObj.name].dependencies);
+ }
+ }
- var nodeModules = Array(packageObj.name.split("/").length).fill("..").join(path.sep);
+ function processDependencies(dir, packages, dependencies) {
+ if(fs.existsSync(dir)) {
+ var files = fs.readdirSync(dir);
- if(packageObj.bin !== undefined) {
- fs.mkdirSync(path.join(nodeModules, ".bin"))
+ files.forEach(function(entry) {
+ var filePath = path.join(dir, entry);
+ var stats = fs.statSync(filePath);
- if(typeof packageObj.bin == "object") {
- Object.keys(packageObj.bin).forEach(function(exe) {
- if(fs.existsSync(packageObj.bin[exe])) {
- console.log("linking bin '" + exe + "'");
- fs.symlinkSync(
- path.join("..", packageObj.name, packageObj.bin[exe]),
- path.join(nodeModules, ".bin", exe)
- );
- }
- else {
- console.log("skipping non-existent bin '" + exe + "'");
- }
- })
- }
- else {
- if(fs.existsSync(packageObj.bin)) {
- console.log("linking bin '" + packageObj.bin + "'");
- fs.symlinkSync(
- path.join("..", packageObj.name, packageObj.bin),
- path.join(nodeModules, ".bin", packageObj.name.split("/").pop())
- );
- }
- else {
- console.log("skipping non-existent bin '" + packageObj.bin + "'");
- }
- }
- }
- else if(packageObj.directories !== undefined && packageObj.directories.bin !== undefined) {
- fs.mkdirSync(path.join(nodeModules, ".bin"))
-
- fs.readdirSync(packageObj.directories.bin).forEach(function(exe) {
- if(fs.existsSync(path.join(packageObj.directories.bin, exe))) {
- console.log("linking bin '" + exe + "'");
- fs.symlinkSync(
- path.join("..", packageObj.name, packageObj.directories.bin, exe),
- path.join(nodeModules, ".bin", exe)
- );
- }
- else {
- console.log("skipping non-existent bin '" + exe + "'");
- }
- })
- }
- '';
- };
+ if(stats.isDirectory()) {
+ if(entry.substr(0, 1) == "@") {
+ // When we encounter a namespace folder, augment all packages belonging to the scope
+ var pkgFiles = fs.readdirSync(filePath);
- prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
- let
- forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
- in
- ''
- # Pinpoint the versions of all dependencies to the ones that are actually being used
- echo "pinpointing versions of dependencies..."
- source $pinpointDependenciesScriptPath
-
- # Patch the shebangs of the bundled modules to prevent them from
- # calling executables outside the Nix store as much as possible
- patchShebangs .
-
- # Deploy the Node.js package by running npm install. Since the
- # dependencies have been provided already by ourselves, it should not
- # attempt to install them again, which is good, because we want to make
- # it Nix's responsibility. If it needs to install any dependencies
- # anyway (e.g. because the dependency parameters are
- # incomplete/incorrect), it fails.
- #
- # The other responsibilities of NPM are kept -- version checks, build
- # steps, postprocessing etc.
-
- export HOME=$TMPDIR
- cd "${packageName}"
- runHook preRebuild
-
- ${lib.optionalString bypassCache ''
- ${lib.optionalString reconstructLock ''
- if [ -f package-lock.json ]
- then
- echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
- echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
- rm package-lock.json
- else
- echo "No package-lock.json file found, reconstructing..."
- fi
+ pkgFiles.forEach(function(entry) {
+ if(stats.isDirectory()) {
+ var pkgFilePath = path.join(filePath, entry);
+ augmentPackageJSON(pkgFilePath, packages, dependencies);
+ }
+ });
+ } else {
+ augmentPackageJSON(filePath, packages, dependencies);
+ }
+ }
+ });
+ }
+ }
+
+ processDependencies("node_modules", lockObj.packages, lockObj.dependencies);
+
+ fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
+ '';
+ };
+
+ # Script that links bins defined in package.json to the node_modules bin directory
+ # NPM does not do this for top-level packages itself anymore as of v7
+ linkBinsScript = writeTextFile {
+ name = "linkbins.js";
+ text = ''
+ var fs = require('fs');
+ var path = require('path');
+
+ var packageObj = JSON.parse(fs.readFileSync("package.json"));
+
+ var nodeModules = Array(packageObj.name.split("/").length).fill("..").join(path.sep);
+
+ if(packageObj.bin !== undefined) {
+ fs.mkdirSync(path.join(nodeModules, ".bin"))
+
+ if(typeof packageObj.bin == "object") {
+ Object.keys(packageObj.bin).forEach(function(exe) {
+ if(fs.existsSync(packageObj.bin[exe])) {
+ console.log("linking bin '" + exe + "'");
+ fs.symlinkSync(
+ path.join("..", packageObj.name, packageObj.bin[exe]),
+ path.join(nodeModules, ".bin", exe)
+ );
+ }
+ else {
+ console.log("skipping non-existent bin '" + exe + "'");
+ }
+ })
+ }
+ else {
+ if(fs.existsSync(packageObj.bin)) {
+ console.log("linking bin '" + packageObj.bin + "'");
+ fs.symlinkSync(
+ path.join("..", packageObj.name, packageObj.bin),
+ path.join(nodeModules, ".bin", packageObj.name.split("/").pop())
+ );
+ }
+ else {
+ console.log("skipping non-existent bin '" + packageObj.bin + "'");
+ }
+ }
+ }
+ else if(packageObj.directories !== undefined && packageObj.directories.bin !== undefined) {
+ fs.mkdirSync(path.join(nodeModules, ".bin"))
+
+ fs.readdirSync(packageObj.directories.bin).forEach(function(exe) {
+ if(fs.existsSync(path.join(packageObj.directories.bin, exe))) {
+ console.log("linking bin '" + exe + "'");
+ fs.symlinkSync(
+ path.join("..", packageObj.name, packageObj.directories.bin, exe),
+ path.join(nodeModules, ".bin", exe)
+ );
+ }
+ else {
+ console.log("skipping non-existent bin '" + exe + "'");
+ }
+ })
+ }
+ '';
+ };
+
+ prepareAndInvokeNPM = {
+ packageName,
+ bypassCache,
+ reconstructLock,
+ npmFlags,
+ production,
+ }: let
+ forceOfflineFlag =
+ if bypassCache
+ then "--offline"
+ else "--registry http://www.example.com";
+ in ''
+ # Pinpoint the versions of all dependencies to the ones that are actually being used
+ echo "pinpointing versions of dependencies..."
+ source $pinpointDependenciesScriptPath
+
+ # Patch the shebangs of the bundled modules to prevent them from
+ # calling executables outside the Nix store as much as possible
+ patchShebangs .
+
+ # Deploy the Node.js package by running npm install. Since the
+ # dependencies have been provided already by ourselves, it should not
+ # attempt to install them again, which is good, because we want to make
+ # it Nix's responsibility. If it needs to install any dependencies
+ # anyway (e.g. because the dependency parameters are
+ # incomplete/incorrect), it fails.
+ #
+ # The other responsibilities of NPM are kept -- version checks, build
+ # steps, postprocessing etc.
- node ${reconstructPackageLock}
- ''}
+ export HOME=$TMPDIR
+ cd "${packageName}"
+ runHook preRebuild
- node ${addIntegrityFieldsScript}
+ ${lib.optionalString bypassCache ''
+ ${lib.optionalString reconstructLock ''
+ if [ -f package-lock.json ]
+ then
+ echo "WARNING: Reconstruct lock option enabled, but a lock file already exists!"
+ echo "This will most likely result in version mismatches! We will remove the lock file and regenerate it!"
+ rm package-lock.json
+ else
+ echo "No package-lock.json file found, reconstructing..."
+ fi
+
+ node ${reconstructPackageLock}
''}
- npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
+ node ${addIntegrityFieldsScript}
+ ''}
- runHook postRebuild
+ npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
- if [ "''${dontNpmInstall-}" != "1" ]
- then
- # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
- rm -f npm-shrinkwrap.json
+ runHook postRebuild
- npm ${forceOfflineFlag} --nodedir=${nodeSources} --no-bin-links --ignore-scripts ${npmFlags} ${lib.optionalString production "--production"} install
- fi
+ if [ "''${dontNpmInstall-}" != "1" ]
+ then
+ # NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
+ rm -f npm-shrinkwrap.json
- # Link executables defined in package.json
- node ${linkBinsScript}
- '';
+ npm ${forceOfflineFlag} --nodedir=${nodeSources} --no-bin-links --ignore-scripts ${npmFlags} ${lib.optionalString production "--production"} install
+ fi
- # Builds and composes an NPM package including all its dependencies
- buildNodePackage =
- { name
- , packageName
- , version ? null
- , dependencies ? []
- , buildInputs ? []
- , production ? true
- , npmFlags ? ""
- , dontNpmInstall ? false
- , bypassCache ? false
- , reconstructLock ? false
- , preRebuild ? ""
- , dontStrip ? true
- , unpackPhase ? "true"
- , buildPhase ? "true"
- , meta ? {}
- , ... }@args:
-
- let
- extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta" ];
- in
- stdenv.mkDerivation ({
- name = "${name}${if version == null then "" else "-${version}"}";
- buildInputs = [ tarWrapper python nodejs ]
- ++ lib.optional (stdenv.isLinux) utillinux
- ++ lib.optional (stdenv.isDarwin) libtool
- ++ buildInputs;
+ # Link executables defined in package.json
+ node ${linkBinsScript}
+ '';
+
+ # Builds and composes an NPM package including all its dependencies
+ buildNodePackage = {
+ name,
+ packageName,
+ version ? null,
+ dependencies ? [],
+ buildInputs ? [],
+ production ? true,
+ npmFlags ? "",
+ dontNpmInstall ? false,
+ bypassCache ? false,
+ reconstructLock ? false,
+ preRebuild ? "",
+ dontStrip ? true,
+ unpackPhase ? "true",
+ buildPhase ? "true",
+ meta ? {},
+ ...
+ } @ args: let
+ extraArgs = removeAttrs args ["name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "preRebuild" "unpackPhase" "buildPhase" "meta"];
+ in
+ stdenv.mkDerivation ({
+ name = "${name}${
+ if version == null
+ then ""
+ else "-${version}"
+ }";
+ buildInputs =
+ [tarWrapper python nodejs]
+ ++ lib.optional (stdenv.isLinux) utillinux
+ ++ lib.optional (stdenv.isDarwin) libtool
+ ++ buildInputs;
inherit nodejs;
@@ -511,7 +554,7 @@ let
compositionScript = composePackage args;
pinpointDependenciesScript = pinpointDependenciesOfPackage args;
- passAsFile = [ "compositionScript" "pinpointDependenciesScript" ];
+ passAsFile = ["compositionScript" "pinpointDependenciesScript"];
installPhase = ''
source ${installPackage}
@@ -523,7 +566,7 @@ let
# Compose the package and all its dependencies
source $compositionScriptPath
- ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
+ ${prepareAndInvokeNPM {inherit packageName bypassCache reconstructLock npmFlags production;}}
# Create symlink to the deployed executable folder, if applicable
if [ -d "$out/lib/node_modules/.bin" ]
@@ -557,128 +600,139 @@ let
runHook postInstall
'';
- meta = {
- # default to Node.js' platforms
- platforms = nodejs.meta.platforms;
- } // meta;
- } // extraArgs);
-
- # Builds a node environment (a node_modules folder and a set of binaries)
- buildNodeDependencies =
- { name
- , packageName
- , version ? null
- , src
- , dependencies ? []
- , buildInputs ? []
- , production ? true
- , npmFlags ? ""
- , dontNpmInstall ? false
- , bypassCache ? false
- , reconstructLock ? false
- , dontStrip ? true
- , unpackPhase ? "true"
- , buildPhase ? "true"
- , ... }@args:
-
- let
- extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" ];
- in
- stdenv.mkDerivation ({
- name = "node-dependencies-${name}${if version == null then "" else "-${version}"}";
-
- buildInputs = [ tarWrapper python nodejs ]
+ meta =
+ {
+ # default to Node.js' platforms
+ platforms = nodejs.meta.platforms;
+ }
+ // meta;
+ }
+ // extraArgs);
+
+ # Builds a node environment (a node_modules folder and a set of binaries)
+ buildNodeDependencies = {
+ name,
+ packageName,
+ version ? null,
+ src,
+ dependencies ? [],
+ buildInputs ? [],
+ production ? true,
+ npmFlags ? "",
+ dontNpmInstall ? false,
+ bypassCache ? false,
+ reconstructLock ? false,
+ dontStrip ? true,
+ unpackPhase ? "true",
+ buildPhase ? "true",
+ ...
+ } @ args: let
+ extraArgs = removeAttrs args ["name" "dependencies" "buildInputs"];
+ in
+ stdenv.mkDerivation ({
+ name = "node-dependencies-${name}${
+ if version == null
+ then ""
+ else "-${version}"
+ }";
+
+ buildInputs =
+ [tarWrapper python nodejs]
++ lib.optional (stdenv.isLinux) utillinux
++ lib.optional (stdenv.isDarwin) libtool
++ buildInputs;
- inherit dontStrip; # Stripping may fail a build for some package deployments
- inherit dontNpmInstall unpackPhase buildPhase;
-
- includeScript = includeDependencies { inherit dependencies; };
- pinpointDependenciesScript = pinpointDependenciesOfPackage args;
-
- passAsFile = [ "includeScript" "pinpointDependenciesScript" ];
-
- installPhase = ''
- source ${installPackage}
-
- mkdir -p $out/${packageName}
- cd $out/${packageName}
-
- source $includeScriptPath
-
- # Create fake package.json to make the npm commands work properly
- cp ${src}/package.json .
- chmod 644 package.json
- ${lib.optionalString bypassCache ''
- if [ -f ${src}/package-lock.json ]
- then
- cp ${src}/package-lock.json .
- chmod 644 package-lock.json
- fi
- ''}
-
- # Go to the parent folder to make sure that all packages are pinpointed
- cd ..
- ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
-
- ${prepareAndInvokeNPM { inherit packageName bypassCache reconstructLock npmFlags production; }}
-
- # Expose the executables that were installed
- cd ..
- ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."}
-
- mv ${packageName} lib
- ln -s $out/lib/node_modules/.bin $out/bin
- '';
- } // extraArgs);
-
- # Builds a development shell
- buildNodeShell =
- { name
- , packageName
- , version ? null
- , src
- , dependencies ? []
- , buildInputs ? []
- , production ? true
- , npmFlags ? ""
- , dontNpmInstall ? false
- , bypassCache ? false
- , reconstructLock ? false
- , dontStrip ? true
- , unpackPhase ? "true"
- , buildPhase ? "true"
- , ... }@args:
-
- let
- nodeDependencies = buildNodeDependencies args;
- extraArgs = removeAttrs args [ "name" "dependencies" "buildInputs" "dontStrip" "dontNpmInstall" "unpackPhase" "buildPhase" ];
- in
- stdenv.mkDerivation ({
- name = "node-shell-${name}${if version == null then "" else "-${version}"}";
-
- buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs;
- buildCommand = ''
- mkdir -p $out/bin
- cat > $out/bin/shell < $out/bin/shell < $out/share/zsh/site-functions/_darwin-rebuild
- #compdef darwin-rebuild
- #autoload
- _nix-common-options
- local -a _1st_arguments
- _1st_arguments=(
- 'switch:Build, activate, and update the current generation'\
- 'build:Build without activating or updating the current generation'\
- 'check:Build and run the activation sanity checks'\
- 'changelog:Show most recent entries in the changelog'\
- )
- _arguments \
- '--list-generations[Print a list of all generations in the active profile]'\
- '--rollback[Roll back to the previous configuration]'\
- {--switch-generation,-G}'[Activate specified generation]'\
- '(--profile-name -p)'{--profile-name,-p}'[Profile to use to track current and previous system configurations]:Profile:_nix_profiles'\
- '1:: :->subcmds' && return 0
- case $state in
- subcmds)
- _describe -t commands 'darwin-rebuild subcommands' _1st_arguments
- ;;
- esac
- EOF
- '';
+ darwin-zsh-completions =
+ super.runCommand "darwin-zsh-completions-0.0.0" {
+ preferLocalBuild = true;
+ } ''
+ mkdir -p $out/share/zsh/site-functions
+ cat <<-'EOF' > $out/share/zsh/site-functions/_darwin-rebuild
+ #compdef darwin-rebuild
+ #autoload
+ _nix-common-options
+ local -a _1st_arguments
+ _1st_arguments=(
+ 'switch:Build, activate, and update the current generation'\
+ 'build:Build without activating or updating the current generation'\
+ 'check:Build and run the activation sanity checks'\
+ 'changelog:Show most recent entries in the changelog'\
+ )
+ _arguments \
+ '--list-generations[Print a list of all generations in the active profile]'\
+ '--rollback[Roll back to the previous configuration]'\
+ {--switch-generation,-G}'[Activate specified generation]'\
+ '(--profile-name -p)'{--profile-name,-p}'[Profile to use to track current and previous system configurations]:Profile:_nix_profiles'\
+ '1:: :->subcmds' && return 0
+ case $state in
+ subcmds)
+ _describe -t commands 'darwin-rebuild subcommands' _1st_arguments
+ ;;
+ esac
+ EOF
+ '';
})
];
- home.packages = with pkgs; [ aspell aspellDicts.en darwin-zsh-completions ];
+ home.packages = with pkgs; [aspell aspellDicts.en darwin-zsh-completions];
programs.emacs.package = pkgs.emacsMacport;
diff --git a/user/settings/development/base.nix b/user/settings/development/base.nix
index 64f52db9..d57680bd 100644
--- a/user/settings/development/base.nix
+++ b/user/settings/development/base.nix
@@ -1,31 +1,38 @@
-{ config, lib, pkgs, ... }:
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: {
+ home.packages = with pkgs;
+ [
+ shellcheck
+ shfmt
+ editorconfig-core-c
+ python3Packages.yamllint
+ nodePackages.dockerfile-language-server-nodejs
+ nodePackages.yaml-language-server
-{ home.packages = with pkgs; [
- shellcheck
- shfmt
- editorconfig-core-c
- python3Packages.yamllint
- nodePackages.dockerfile-language-server-nodejs
- nodePackages.yaml-language-server
+ mosh
- mosh
+ nix-prefetch-scripts
+ alejandra # nix formatter
- nix-prefetch-scripts
- alejandra # nix formatter
-
- httpie
- jq
- ] ++ (
- if !stdenv.isDarwin
- then [
- httping
- (lib.lowPrio firefox-devedition-bin)
- ] else [
+ httpie
+ jq
]
- );
+ ++ (
+ if !stdenv.isDarwin
+ then [
+ httping
+ (lib.lowPrio firefox-devedition-bin)
+ ]
+ else [
+ ]
+ );
nixpkgs.overlays = [
(self: super: {
- ripgrep = super.ripgrep.override { withPCRE2 = true; };
+ ripgrep = super.ripgrep.override {withPCRE2 = true;};
})
];
}
diff --git a/user/settings/development/clojure.nix b/user/settings/development/clojure.nix
index 0994ef19..7b06691a 100644
--- a/user/settings/development/clojure.nix
+++ b/user/settings/development/clojure.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
home.packages = with pkgs; [
clojure
node2nixPackages.node-cljfmt
diff --git a/user/settings/development/javascript.nix b/user/settings/development/javascript.nix
index 232ad4ce..9b8bdabf 100644
--- a/user/settings/development/javascript.nix
+++ b/user/settings/development/javascript.nix
@@ -1,9 +1,10 @@
-{ config, pkgs, ... }:
-
-let
- nodejs = pkgs.nodejs-18_x;
-in
{
+ config,
+ pkgs,
+ ...
+}: let
+ nodejs = pkgs.nodejs-18_x;
+in {
nixpkgs.overlays = [
(self: super: {
node2nixPackages = super.callPackage ../../packages/node2nix {
@@ -11,37 +12,40 @@ in
};
})
];
- home.packages = (with pkgs; [
- nodejs
- ] ++ (
- if stdenv.isDarwin
- then
- [
- ]
- else
- [
- # npm install may use any of these
- binutils
- gnumake
- gcc
- python2
- ]
- )) ++ (with pkgs.nodePackages; [
- node2nix
- nodemon
- javascript-typescript-langserver
- typescript-language-server
- eslint_d
- typescript
+ home.packages =
+ (with pkgs;
+ [
+ nodejs
+ ]
+ ++ (
+ if stdenv.isDarwin
+ then [
+ ]
+ else [
+ # npm install may use any of these
+ binutils
+ gnumake
+ gcc
+ python2
+ ]
+ ))
+ ++ (with pkgs.nodePackages; [
+ node2nix
+ nodemon
+ javascript-typescript-langserver
+ typescript-language-server
+ eslint_d
+ typescript
- node-gyp
- node-gyp-build
- node-pre-gyp
- ]) ++ (with pkgs.node2nixPackages; [
- pkgs.node2nixPackages."pnpm-7.12"
+ node-gyp
+ node-gyp-build
+ node-pre-gyp
+ ])
+ ++ (with pkgs.node2nixPackages; [
+ pkgs.node2nixPackages."pnpm-7.12"
- pino-pretty
- ]);
+ pino-pretty
+ ]);
home.sessionVariables = {
NO_UPDATE_NOTIFIER = "1"; # stop npm update-notifier
diff --git a/user/settings/development/lisp.nix b/user/settings/development/lisp.nix
index 9d591651..7a55c41c 100644
--- a/user/settings/development/lisp.nix
+++ b/user/settings/development/lisp.nix
@@ -1,6 +1,9 @@
-{ config, pkgs, ... }:
-
-{ home.packages = with pkgs; [
+{
+ config,
+ pkgs,
+ ...
+}: {
+ home.packages = with pkgs; [
ccl
sbcl
lispPackages.quicklisp
diff --git a/user/settings/development/rust.nix b/user/settings/development/rust.nix
index d45b1a19..63d0db35 100644
--- a/user/settings/development/rust.nix
+++ b/user/settings/development/rust.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
home.packages = with pkgs; [
cargo
cargo-edit
diff --git a/user/settings/development/web.nix b/user/settings/development/web.nix
index f8b74adc..f1f45878 100644
--- a/user/settings/development/web.nix
+++ b/user/settings/development/web.nix
@@ -1,10 +1,15 @@
-{ config, pkgs, ... }:
{
- home.packages = with pkgs.nodePackages; [
- vscode-css-languageserver-bin
- vscode-html-languageserver-bin
- csslint
- ] ++ [
- pkgs.nodePackages.stylelint
- ];
+ config,
+ pkgs,
+ ...
+}: {
+ home.packages = with pkgs.nodePackages;
+ [
+ vscode-css-languageserver-bin
+ vscode-html-languageserver-bin
+ csslint
+ ]
+ ++ [
+ pkgs.nodePackages.stylelint
+ ];
}
diff --git a/user/settings/dunst.nix b/user/settings/dunst.nix
index 950c77a2..0232d47f 100644
--- a/user/settings/dunst.nix
+++ b/user/settings/dunst.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
services.dunst = {
enable = true;
settings = {
diff --git a/user/settings/emacs.nix b/user/settings/emacs.nix
index 32fb24af..f8eb5c19 100644
--- a/user/settings/emacs.nix
+++ b/user/settings/emacs.nix
@@ -1,6 +1,9 @@
-{ config, pkgs, lib, ... }:
-
-let
+{
+ config,
+ pkgs,
+ lib,
+ ...
+}: let
inherit (pkgs) stdenv;
editorScript = pkgs.writeScriptBin "edit" ''
@@ -29,15 +32,14 @@ let
Keywords=Text;Editor;
'';
};
-in
-{
+in {
imports = [
../modules/eshell.nix
];
programs.emacs = {
enable = true;
- package = lib.mkDefault (pkgs.emacsNativeComp.override { withGTK3 = true; });
+ package = lib.mkDefault (pkgs.emacsNativeComp.override {withGTK3 = true;});
eshell = {
aliases = {
pk = "eshell-up-pk $1";
@@ -66,120 +68,123 @@ in
cdg = "cd (projectile-project-root)";
};
};
- extraPackages = epkgs: (with epkgs; [
- ace-link
- all-the-icons
- almost-mono-themes
- add-node-modules-path
- ag
- all-the-icons
- amx
- auto-async-byte-compile
- avy
- bash-completion
- caddyfile-mode
- cider
- clojure-mode
- company
- company-web
- company-tabnine
- consult
- consult-eglot
- counsel
- counsel-projectile
- crux
- docker-compose-mode
- dockerfile-mode
- dired-git-info
- editorconfig
- eglot
- eldoc-box
- emmet-mode
- esh-autosuggest
- esh-buf-stack
- esh-help
- eshell-fringe-status
- eshell-toggle
- eshell-up
- evil
- evil-anzu
- evil-collection
- evil-commentary
- evil-embrace
- evil-ledger
- evil-matchit
- evil-mu4e
- evil-numbers
- evil-org
- evil-quickscope
- evil-space
- evil-surround
- eyebrowse
- feature-mode
- format-all
- flycheck
- flyspell-correct
- general
- git-gutter-fringe
- git-messenger
- git-modes
- git-timemachine
- gitlab-ci-mode
- gitlab-ci-mode-flycheck
- go-mode
- goto-chg
- haskell-mode
- helpful
- ivy-hydra
- janet-mode
- jinja2-mode
- js2-mode
- json-mode
- k8s-mode
- kubel
- kubel-evil
- ledger-mode
- magit
- markdown-mode
- modus-themes
- doom-modeline
- nginx-mode
- nix-mode
- nix-update
- org-journal
- paredit
- php-mode
- posframe
- projectile
- projectile-ripgrep
- quickrun
- racket-mode
- rainbow-mode
- rainbow-delimiters
- restclient
- ripgrep
- rjsx-mode
- rustic
- scss-mode
- spacemacs-theme
- swiper
- tide
- toml-mode
- tree-sitter
- tree-sitter-langs
- tree-sitter-indent
- typescript-mode
- undo-tree
- use-package
- web-mode
- wgrep-ag
- ws-butler
- which-key
- yaml-mode
- yasnippet
- ] ++ lib.optionals (!stdenv.isDarwin) [
- pkgs.mu
- ]);
+ extraPackages = epkgs: (with epkgs;
+ [
+ ace-link
+ all-the-icons
+ almost-mono-themes
+ add-node-modules-path
+ ag
+ all-the-icons
+ amx
+ apheleia
+ auto-async-byte-compile
+ avy
+ bash-completion
+ caddyfile-mode
+ cider
+ clojure-mode
+ company
+ company-web
+ company-tabnine
+ consult
+ consult-eglot
+ counsel
+ counsel-projectile
+ crux
+ docker-compose-mode
+ dockerfile-mode
+ dired-git-info
+ editorconfig
+ eglot
+ eldoc-box
+ emmet-mode
+ esh-autosuggest
+ esh-buf-stack
+ esh-help
+ eshell-fringe-status
+ eshell-toggle
+ eshell-up
+ evil
+ evil-anzu
+ evil-collection
+ evil-commentary
+ evil-embrace
+ evil-ledger
+ evil-matchit
+ evil-mu4e
+ evil-numbers
+ evil-org
+ evil-quickscope
+ evil-space
+ evil-surround
+ eyebrowse
+ feature-mode
+ format-all
+ flycheck
+ flyspell-correct
+ general
+ git-gutter-fringe
+ git-messenger
+ git-modes
+ git-timemachine
+ gitlab-ci-mode
+ gitlab-ci-mode-flycheck
+ go-mode
+ goto-chg
+ haskell-mode
+ helpful
+ ivy-hydra
+ janet-mode
+ jinja2-mode
+ js2-mode
+ json-mode
+ k8s-mode
+ kubel
+ kubel-evil
+ ledger-mode
+ magit
+ markdown-mode
+ modus-themes
+ doom-modeline
+ nginx-mode
+ nix-mode
+ nix-update
+ org-journal
+ paredit
+ php-mode
+ posframe
+ projectile
+ projectile-ripgrep
+ quickrun
+ racket-mode
+ rainbow-mode
+ rainbow-delimiters
+ restclient
+ ripgrep
+ rjsx-mode
+ rustic
+ scss-mode
+ spacemacs-theme
+ swiper
+ tide
+ toml-mode
+ tree-sitter
+ tree-sitter-langs
+ tree-sitter-indent
+ typescript-mode
+ undo-tree
+ use-package
+ web-mode
+ wgrep-ag
+ ws-butler
+ which-key
+ yaml-mode
+ yasnippet
+ ]
+ ++ lib.optionals (!stdenv.isDarwin) [
+ pkgs.mu
+ ]);
};
home.packages = [
editorScript
@@ -191,7 +196,7 @@ in
source = ../emacs/early-init.el;
onChange = ''
${config.programs.emacs.finalPackage}/bin/emacs -Q -batch -f batch-byte-compile .config/emacs/early-init.el
- '';
+ '';
};
xdg.configFile."emacs/init.el" = {
source = ../emacs/init.el;
diff --git a/user/settings/gaming.nix b/user/settings/gaming.nix
index 4132bba1..fb732904 100644
--- a/user/settings/gaming.nix
+++ b/user/settings/gaming.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
home.packages = with pkgs; [
steam
wineWowPackages.stable
diff --git a/user/settings/git.nix b/user/settings/git.nix
index f52f198d..7a0c35da 100644
--- a/user/settings/git.nix
+++ b/user/settings/git.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
home.packages = with pkgs; [
gitAndTools.git-extras
];
diff --git a/user/settings/gnupg.nix b/user/settings/gnupg.nix
index 86480aee..7f96223c 100644
--- a/user/settings/gnupg.nix
+++ b/user/settings/gnupg.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
home.file.".gnupg" = {
recursive = true;
source = ../gnupg;
diff --git a/user/settings/golang.nix b/user/settings/golang.nix
index 4cc59343..92abbf4d 100644
--- a/user/settings/golang.nix
+++ b/user/settings/golang.nix
@@ -1,10 +1,12 @@
-{ config, pkgs, ... }:
-
{
- home.packages = (with pkgs; [
+ config,
+ pkgs,
+ ...
+}: {
+ home.packages = with pkgs; [
go
go-langserver
goimports
gotools
- ]);
+ ];
}
diff --git a/user/settings/i3.nix b/user/settings/i3.nix
index cb71baf3..5443d1d6 100644
--- a/user/settings/i3.nix
+++ b/user/settings/i3.nix
@@ -1,6 +1,9 @@
-{ config, pkgs, lib, ... }:
-
{
+ config,
+ pkgs,
+ lib,
+ ...
+}: {
xdg.configFile.i3status = {
recursive = true;
source = ../i3/i3status;
@@ -9,32 +12,58 @@
mod = "Mod4";
mode_system = "System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown";
locker = "${pkgs.xautolock}/bin/xautolock -locknow";
- in
- {
+ in {
enable = true;
config = {
modifier = mod;
assigns = {
- "1" = [{ class = "^Ripcord$"; }];
- "3" = [{ class = "^Firefox Developer Edition$"; }];
- "8" = [{ class = "^Emacs$"; }];
- "9" = [{ class = "\.exe$"; }];
- "10" = [{ class = "^Barrier$"; }];
+ "1" = [{class = "^Ripcord$";}];
+ "3" = [{class = "^Firefox Developer Edition$";}];
+ "8" = [{class = "^Emacs$";}];
+ "9" = [{class = "\.exe$";}];
+ "10" = [{class = "^Barrier$";}];
};
floating = {
criteria = [
- { class = "Pinentry$"; }
+ {class = "Pinentry$";}
# https://github.com/ValveSoftware/steam-for-linux/issues/1040
- { class = "^Steam$"; title = "^Friends$"; }
- { class = "^Steam$"; title = "Steam - News"; }
- { class = "^Steam$"; title = ".* - Chat"; }
- { class = "^Steam$"; title = "^Settings$"; }
- { class = "^Steam$"; title = ".* - event started"; }
- { class = "^Steam$"; title = ".* CD key"; }
- { class = "^Steam$"; title = "^Steam - Self Updater$"; }
- { class = "^Steam$"; title = "^Screenshot Uploader$"; }
- { class = "^Steam$"; title = "^Steam Guard - Computer Authorization Required$"; }
- { title = "^Steam Keyboard$"; }
+ {
+ class = "^Steam$";
+ title = "^Friends$";
+ }
+ {
+ class = "^Steam$";
+ title = "Steam - News";
+ }
+ {
+ class = "^Steam$";
+ title = ".* - Chat";
+ }
+ {
+ class = "^Steam$";
+ title = "^Settings$";
+ }
+ {
+ class = "^Steam$";
+ title = ".* - event started";
+ }
+ {
+ class = "^Steam$";
+ title = ".* CD key";
+ }
+ {
+ class = "^Steam$";
+ title = "^Steam - Self Updater$";
+ }
+ {
+ class = "^Steam$";
+ title = "^Screenshot Uploader$";
+ }
+ {
+ class = "^Steam$";
+ title = "^Steam Guard - Computer Authorization Required$";
+ }
+ {title = "^Steam Keyboard$";}
];
};
window = {
@@ -85,7 +114,6 @@
"${mod}+Shift+9" = "move container to workspace 9";
"${mod}+Shift+0" = "move container to workspace 10";
-
# move workspace
"${mod}+Mod1+h" = "move workspace to output left";
"${mod}+Mod1+j" = "move workspace to output down";
diff --git a/user/settings/ledger.nix b/user/settings/ledger.nix
index 61d3df7e..6c674ff9 100644
--- a/user/settings/ledger.nix
+++ b/user/settings/ledger.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
home.file.".ledgerrc".text = ''
--date-format %F
--start-of-week 1
diff --git a/user/settings/mail.nix b/user/settings/mail.nix
index 59fdc7d2..b3f288fb 100644
--- a/user/settings/mail.nix
+++ b/user/settings/mail.nix
@@ -1,6 +1,9 @@
-{ config, lib, pkgs, ... }:
-
{
+ config,
+ lib,
+ pkgs,
+ ...
+}: {
home.packages = [
pkgs.html2text
];
diff --git a/user/settings/music-management.nix b/user/settings/music-management.nix
index 6dd1f12e..6f42eb35 100644
--- a/user/settings/music-management.nix
+++ b/user/settings/music-management.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
home.packages = with pkgs; [
beets
];
diff --git a/user/settings/music.nix b/user/settings/music.nix
index 5120bd19..e7b80ce2 100644
--- a/user/settings/music.nix
+++ b/user/settings/music.nix
@@ -1,18 +1,20 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
home.packages = with pkgs; [
cmus
playerctl
sonixd
- (tauon.override { withDiscordRPC = true; })
+ (tauon.override {withDiscordRPC = true;})
];
xdg.desktopEntries.sonixd = {
name = "sonixd";
exec = "sonixd";
comment = "Sonixd Music Player";
- categories = [ "Audio" "AudioVideo" ];
+ categories = ["Audio" "AudioVideo"];
genericName = "Music Player";
};
}
diff --git a/user/settings/nix.nix b/user/settings/nix.nix
index 8e4bf513..f7f0a44c 100644
--- a/user/settings/nix.nix
+++ b/user/settings/nix.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
nixpkgs.config = import ../config.nix;
nixpkgs.overlays = [
(import ../overlays/extra-packages.nix)
diff --git a/user/settings/nixos.nix b/user/settings/nixos.nix
index de386db3..50e38e89 100644
--- a/user/settings/nixos.nix
+++ b/user/settings/nixos.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
imports = [
./nix.nix
./nixpkgs.nix
diff --git a/user/settings/nixpkgs.nix b/user/settings/nixpkgs.nix
index 9f939c33..ee993bd5 100644
--- a/user/settings/nixpkgs.nix
+++ b/user/settings/nixpkgs.nix
@@ -1,17 +1,18 @@
-{ config, pkgs, ... }:
-
-let
+{
+ config,
+ pkgs,
+ ...
+}: let
inherit (pkgs) stdenv;
stableConfig = config.nixpkgs.config;
-in
-{
+in {
imports = [
./nix.nix
];
nixpkgs.overlays = [
(self: super: {
- firefox-bin-unwrapped = super.firefox-bin-unwrapped.override { systemLocale = "en-GB"; };
- firefox-devedition-bin-unwrapped = super.firefox-devedition-bin-unwrapped.override { systemLocale = "en-GB"; };
+ firefox-bin-unwrapped = super.firefox-bin-unwrapped.override {systemLocale = "en-GB";};
+ firefox-devedition-bin-unwrapped = super.firefox-devedition-bin-unwrapped.override {systemLocale = "en-GB";};
})
];
}
diff --git a/user/settings/passwords.nix b/user/settings/passwords.nix
index 909c9633..ff78281c 100644
--- a/user/settings/passwords.nix
+++ b/user/settings/passwords.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
home.packages = with pkgs; [
keepassxc
pwgen
diff --git a/user/settings/rofi.nix b/user/settings/rofi.nix
index 4c932224..d62ea7cf 100644
--- a/user/settings/rofi.nix
+++ b/user/settings/rofi.nix
@@ -1,6 +1,9 @@
-{ config, lib, pkgs, ... }:
-
{
+ config,
+ lib,
+ pkgs,
+ ...
+}: {
xdg.configFile."networkmanager-dmenu/config.ini".text = ''
[dmenu]
dmenu_command = ${pkgs.rofi}/bin/dmenu
@@ -12,7 +15,7 @@
nixpkgs.overlays = [
(self: super: {
- rofi= super.rofi.overrideAttrs (oldAttrs: rec {
+ rofi = super.rofi.overrideAttrs (oldAttrs: rec {
postInstall = ''
ln $out/bin/rofi $out/bin/dmenu
'';
diff --git a/user/settings/satoshipay.nix b/user/settings/satoshipay.nix
index 4e96a227..2ecb4761 100644
--- a/user/settings/satoshipay.nix
+++ b/user/settings/satoshipay.nix
@@ -1,12 +1,14 @@
-{ config, lib, pkgs, ... }:
-
-let
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
inherit (pkgs) stdenv;
spGitConfig = {
user.email = "alan@satoshipay.io";
};
-in
-{
+in {
imports = [
./development/javascript.nix
./development/web.nix
@@ -16,32 +18,33 @@ in
KUBECTX_IGNORE_FZF = "1";
};
home.packages = with pkgs; ([
- caddy
- openssl
- mongodb-tools
- pgcli
- pgformatter
- postgresql
- s3cmd
- sops
+ caddy
+ openssl
+ mongodb-tools
+ pgcli
+ pgformatter
+ postgresql
+ s3cmd
+ sops
- lumen
+ lumen
- mkcert
- google-cloud-sdk
- doctl
- kubectl
- kubetail
- kubectx
- kubernetes-helm
- helmfile
- ] ++ (lib.optionals (!stdenv.isDarwin)
- [
- docker-compose
+ mkcert
+ google-cloud-sdk
+ doctl
+ kubectl
+ kubetail
+ kubectx
+ kubernetes-helm
+ helmfile
+ ]
+ ++ (lib.optionals (!stdenv.isDarwin)
+ [
+ docker-compose
- ripcord
- robo3t
- ]));
+ ripcord
+ robo3t
+ ]));
programs.git.includes = [
{
@@ -84,8 +87,7 @@ in
accounts.email.accounts.satoshipay = let
address = "alan@satoshipay.io";
- in
- {
+ in {
inherit address;
primary = lib.mkDefault true;
realName = "Alan Pearce";
diff --git a/user/settings/ssh.nix b/user/settings/ssh.nix
index 0c8300eb..0ccc9796 100644
--- a/user/settings/ssh.nix
+++ b/user/settings/ssh.nix
@@ -1,6 +1,9 @@
-{ config, lib, pkgs, ... }:
-
{
+ config,
+ lib,
+ pkgs,
+ ...
+}: {
programs.ssh = {
enable = true;
compression = true;
diff --git a/user/settings/sxhkd.nix b/user/settings/sxhkd.nix
index a30db28a..cc21264b 100644
--- a/user/settings/sxhkd.nix
+++ b/user/settings/sxhkd.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
xdg.configFile."sxhkd/sxhkdrc".text = ''
XF86AudioMute
pamixer --toggle-mute
diff --git a/user/settings/tabnine.nix b/user/settings/tabnine.nix
index dab2273b..61cbf29c 100644
--- a/user/settings/tabnine.nix
+++ b/user/settings/tabnine.nix
@@ -1,7 +1,9 @@
-{ config, pkgs, ... }:
-
{
- imports = [ ../modules/tabnine.nix ];
+ config,
+ pkgs,
+ ...
+}: {
+ imports = [../modules/tabnine.nix];
home.packages = with pkgs; [
tabnine
];
@@ -26,7 +28,7 @@
tabnine_cloud_certificate_domain = null;
tabnine_cloud_host = null;
tabnine_cloud_port = null;
- cloud_whitelist = [ ];
+ cloud_whitelist = [];
api_key = null;
api_key_service_level = null;
api_base_url = null;
@@ -44,40 +46,41 @@
lspConfig = {
"language.typescript" = {
command = "typescript-language-server";
- args = [ "--stdio" ];
+ args = ["--stdio"];
};
"language.javascript" = {
command = "javascript-typescript-stdio";
- args = [ "--stdio" ];
+ args = ["--stdio"];
};
"language.css" = {
command = "css-languageserver";
- args = [ "--stdio" ];
+ args = ["--stdio"];
};
"language.scss" = {
command = "css-languageserver";
- args = [ "--stdio" ];
+ args = ["--stdio"];
};
"language.html" = {
command = "html-languageserver";
- args = [ "--stdio" ];
+ args = ["--stdio"];
};
"language.dockerfile" = {
command = "docker-langserver";
- args = [ "--stdio" ];
+ args = ["--stdio"];
};
"language.yaml" = {
command = "yaml-language-server";
- args = [ "--stdio" ];
+ args = ["--stdio"];
};
"language.haskell" = {
command = "hie";
- args = [ "--stdio" ];
+ args = ["--stdio"];
};
"language.go" = {
command = "go-langserver";
args = [
- "-mode" "stdio"
+ "-mode"
+ "stdio"
"-gocodecompletion"
];
};
diff --git a/user/settings/trezor.nix b/user/settings/trezor.nix
index a4f3ba75..3211bb42 100644
--- a/user/settings/trezor.nix
+++ b/user/settings/trezor.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
home.file.".ssh/agent.config" = {
text = ''
ecdsa-curve-name = ed25519
diff --git a/user/settings/user-interface.nix b/user/settings/user-interface.nix
index f0e4c798..af432a91 100644
--- a/user/settings/user-interface.nix
+++ b/user/settings/user-interface.nix
@@ -1,28 +1,31 @@
-{ config, pkgs, ... }:
-
-let
- inherit (pkgs) stdenv;
-in
{
+ config,
+ pkgs,
+ ...
+}: let
+ inherit (pkgs) stdenv;
+in {
home.sessionVariables = {
TERMINAL = "xterm";
};
programs.keychain = {
enable = true;
- extraFlags = [ "--quiet" "--systemd" ];
- keys = [ ];
+ extraFlags = ["--quiet" "--systemd"];
+ keys = [];
};
nixpkgs.config.librewolf = {
enablePlasmaBrowserIntegration = true;
};
- home.packages = with pkgs; [
- librewolf
- logseq
- ] ++ lib.optionals (!stdenv.isDarwin) (with pkgs; [
- falkon
- mu
- signal-desktop
- ]);
+ home.packages = with pkgs;
+ [
+ librewolf
+ logseq
+ ]
+ ++ lib.optionals (!stdenv.isDarwin) (with pkgs; [
+ falkon
+ mu
+ signal-desktop
+ ]);
}
diff --git a/user/settings/xresources.nix b/user/settings/xresources.nix
index 5ab0bb49..3481962d 100644
--- a/user/settings/xresources.nix
+++ b/user/settings/xresources.nix
@@ -1,6 +1,8 @@
-{ config, pkgs, ... }:
-
{
+ config,
+ pkgs,
+ ...
+}: {
home.file.".xresources" = {
recursive = true;
source = ../xresources;
diff --git a/user/settings/zsh.nix b/user/settings/zsh.nix
index 6e6c04d3..2a30bc63 100644
--- a/user/settings/zsh.nix
+++ b/user/settings/zsh.nix
@@ -1,16 +1,25 @@
-{ config, lib, pkgs, ... }:
-
-let
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
inherit (pkgs) stdenv;
- lsOptions = if stdenv.isDarwin then "-p" else "-v --group-directories-first";
- lsIsoDate = if stdenv.isDarwin then "" else "--time-style=long-iso";
+ lsOptions =
+ if stdenv.isDarwin
+ then "-p"
+ else "-v --group-directories-first";
+ lsIsoDate =
+ if stdenv.isDarwin
+ then ""
+ else "--time-style=long-iso";
zshrc = ".config/zsh/.zshrc";
mkZshPlugin = attrs: {
name = attrs.name;
src = stdenv.mkDerivation {
inherit (attrs) src;
name = "zsh-plugin-${attrs.name}";
- buildInputs = [ pkgs.zsh ];
+ buildInputs = [pkgs.zsh];
buildPhase = ''
zsh -c 'for f in **/*.zsh; zcompile "$f"'
'';
@@ -19,8 +28,7 @@ let
'';
};
};
-in
-{
+in {
home.packages = with pkgs; [
fzf
ghq
@@ -52,7 +60,7 @@ in
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "fg=8";
};
- plugins = (map mkZshPlugin [
+ plugins = map mkZshPlugin [
{
name = "cd-gitroot";
src = pkgs.fetchFromGitHub {
@@ -93,7 +101,7 @@ in
sha256 = "0qmm0xm1aiy3fnn2vib26z10cfy707yqg0vg5236r7978glswdlg";
};
}
- ]);
+ ];
shellAliases = {
l = "ls ${lsOptions} -Bp";
@@ -111,10 +119,8 @@ in
https = "http --default-scheme https";
history = "fc -l $(( $LINES - 2 ))";
- hist-freq-lines =
- "fc -l -10000 | cut -d' ' -f4- | sort | uniq -c | sort -g | tail -n100 | less";
- hist-freq-commands =
- "fc -l -10000 | cut -d' ' -f4 | sort | uniq -c | sort -g | tail -n10 | less";
+ hist-freq-lines = "fc -l -10000 | cut -d' ' -f4- | sort | uniq -c | sort -g | tail -n100 | less";
+ hist-freq-commands = "fc -l -10000 | cut -d' ' -f4 | sort | uniq -c | sort -g | tail -n10 | less";
wprop = "xprop | egrep '^WM_(CLASS|NAME|WINDOW_ROLE|TYPE)'";
# Enable the following commands to support aliases.
@@ -213,26 +219,28 @@ in
fi
'';
- initExtra = ''
- autoload -Uz compinit
- compinit -C
- typeset -T GHQ_ROOT ghq_root
- export GHQ_ROOT="$HOME/projects"
-
- function hist-freq-subcommands () {
- fc -l -m "$1*" -10000 | cut -d' ' -f4- | sort | uniq -c | sort -g | tail -n100 | less
- }
-
- source ${pkgs.fzf}/share/fzf/key-bindings.zsh
- source ${pkgs.fzf}/share/fzf/completion.zsh
-
- '' + builtins.readFile ../zsh/zshrc + (
- if stdenv.isDarwin
- then builtins.readFile ../zsh/zshrc.darwin
- else ""
- );
+ initExtra =
+ ''
+ autoload -Uz compinit
+ compinit -C
+ typeset -T GHQ_ROOT ghq_root
+ export GHQ_ROOT="$HOME/projects"
+
+ function hist-freq-subcommands () {
+ fc -l -m "$1*" -10000 | cut -d' ' -f4- | sort | uniq -c | sort -g | tail -n100 | less
+ }
+
+ source ${pkgs.fzf}/share/fzf/key-bindings.zsh
+ source ${pkgs.fzf}/share/fzf/completion.zsh
+
+ ''
+ + builtins.readFile ../zsh/zshrc
+ + (
+ if stdenv.isDarwin
+ then builtins.readFile ../zsh/zshrc.darwin
+ else ""
+ );
};
- home.file."${zshrc}".onChange =
- "${pkgs.zsh}/bin/zsh -i -c 'autoload -Uz compinit && compinit && zcompile ${zshrc}'";
+ home.file."${zshrc}".onChange = "${pkgs.zsh}/bin/zsh -i -c 'autoload -Uz compinit && compinit && zcompile ${zshrc}'";
}
--
cgit 1.4.1