diff options
Diffstat (limited to 'user')
48 files changed, 915 insertions, 922 deletions
diff --git a/user/config.nix b/user/config.nix index d138ff20..a910c0a2 100644 --- a/user/config.nix +++ b/user/config.nix @@ -1,4 +1,4 @@ -{pkgs}: { +{ pkgs }: { allowUnfree = true; allowUnfreePredicate = pkg: true; } diff --git a/user/mba.nix b/user/mba.nix index 6bd740a9..8f052be6 100644 --- a/user/mba.nix +++ b/user/mba.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { imports = [ ./settings/base.nix diff --git a/user/modules/eshell.nix b/user/modules/eshell.nix index fd108af6..822b4262 100644 --- a/user/modules/eshell.nix +++ b/user/modules/eshell.nix @@ -1,15 +1,15 @@ -{ - config, - lib, - pkgs, - ... +{ config +, lib +, pkgs +, ... }: with lib; let cfg = config.programs.emacs; -in { +in +{ options.programs.emacs.eshell = { aliases = mkOption { - default = {}; + default = { }; type = types.attrsOf types.str; example = { ll = "ls -l $*"; diff --git a/user/modules/tabnine.nix b/user/modules/tabnine.nix index 261176dc..7e38e0ec 100644 --- a/user/modules/tabnine.nix +++ b/user/modules/tabnine.nix @@ -1,26 +1,26 @@ -{ - config, - lib, - pkgs, - ... +{ 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 { + { + 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."; @@ -37,7 +37,7 @@ in { config = mkOption { type = types.attrs; - default = {}; + default = { }; description = '' TabNine configuration written to <filename>\${configDir}/tabnine_config.json</filename> @@ -53,7 +53,7 @@ in { lspConfig = mkOption { type = types.attrs; - default = {}; + default = { }; description = '' LSP Server configuration written to <filename>\${configDir}/TabNine.toml</filename> diff --git a/user/overlays/extra-packages.nix b/user/overlays/extra-packages.nix index ec315586..7566548c 100644 --- a/user/overlays/extra-packages.nix +++ b/user/overlays/extra-packages.nix @@ -1,3 +1,3 @@ self: super: { - lumen = super.callPackage ../packages/lumen {}; + lumen = super.callPackage ../packages/lumen { }; } diff --git a/user/packages/lumen/default.nix b/user/packages/lumen/default.nix index 91e1b726..85520a2f 100644 --- a/user/packages/lumen/default.nix +++ b/user/packages/lumen/default.nix @@ -1,9 +1,9 @@ -{ - stdenv, - lib, - go, - buildGoPackage, - fetchFromGitHub, +{ stdenv +, lib +, go +, buildGoPackage +, fetchFromGitHub +, }: buildGoPackage rec { pname = "lumen"; diff --git a/user/packages/node2nix/default.nix b/user/packages/node2nix/default.nix index 09eea0fe..13d7a1e2 100644 --- a/user/packages/node2nix/default.nix +++ b/user/packages/node2nix/default.nix @@ -1,12 +1,12 @@ # This file has been generated by node2nix 1.11.1. Do not edit! -{ - pkgs ? - import <nixpkgs> { - inherit system; - }, - system ? builtins.currentSystem, - nodejs ? pkgs."nodejs-18_x", -}: let +{ pkgs ? import <nixpkgs> { + 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; @@ -16,7 +16,7 @@ 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 b81347da..16720d90 100644 --- a/user/packages/node2nix/node-env.nix +++ b/user/packages/node2nix/node-env.nix @@ -1,15 +1,16 @@ # 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 @@ -22,7 +23,7 @@ else python2; # Create a tar wrapper that filters all the 'Ignoring unknown extended header keyword' noise - tarWrapper = runCommand "tarWrapper" {} '' + tarWrapper = runCommand "tarWrapper" { } '' mkdir -p $out/bin cat > $out/bin/tar <<EOF @@ -34,16 +35,16 @@ ''; # 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) @@ -106,13 +107,14 @@ # 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 != []) ( + includeDependencies = { dependencies }: + lib.optionalString (dependencies != [ ]) ( '' mkdir -p node_modules cd node_modules '' - + (lib.concatMapStrings ( + + (lib.concatMapStrings + ( dependency: '' if [ ! -e "${dependency.packageName}" ]; then ${composePackage dependency} @@ -126,13 +128,13 @@ ); # Recursively composes the dependencies of a package - composePackage = { - name, - packageName, - src, - dependencies ? [], - ... - } @ args: + composePackage = + { name + , packageName + , src + , dependencies ? [ ] + , ... + } @ args: builtins.addErrorContext "while evaluating node package '${packageName}'" '' installPackage "${packageName}" "${src}" ${includeDependencies {inherit dependencies;}} @@ -140,106 +142,109 @@ ${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); - } - } - } + 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); + 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(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')); + /* 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); + /* 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" - } + /* 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 - ''} - ''; + ${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;}} - cd .. - ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} - fi - ''; + 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 + ''; # Extract the Node.js source code which is used to compile packages with # native bindings - nodeSources = runCommand "node-sources" {} '' + nodeSources = runCommand "node-sources" { } '' tar --no-same-owner --no-same-permissions -xf ${nodejs.src} mv node-* $out ''; @@ -446,293 +451,300 @@ ''; }; - 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 + 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 + + node ${reconstructPackageLock} + ''} - node ${reconstructPackageLock} + node ${addIntegrityFieldsScript} ''} - node ${addIntegrityFieldsScript} - ''} + npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild - npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild + runHook postRebuild - runHook postRebuild + if [ "''${dontNpmInstall-}" != "1" ] + then + # NPM tries to download packages even when they already exist if npm-shrinkwrap is used. + rm -f npm-shrinkwrap.json - if [ "''${dontNpmInstall-}" != "1" ] - then - # NPM tries to download packages even when they already exist if npm-shrinkwrap is used. - rm -f npm-shrinkwrap.json + npm ${forceOfflineFlag} --nodedir=${nodeSources} --no-bin-links --ignore-scripts ${npmFlags} ${lib.optionalString production "--production"} install + fi - npm ${forceOfflineFlag} --nodedir=${nodeSources} --no-bin-links --ignore-scripts ${npmFlags} ${lib.optionalString production "--production"} install - fi - - # Link executables defined in package.json - node ${linkBinsScript} - ''; + # 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 + 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}${ + name = "${name}${ if version == null then "" else "-${version}" }"; - buildInputs = - [tarWrapper python nodejs] + buildInputs = + [ tarWrapper python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ lib.optional (stdenv.isDarwin) libtool ++ buildInputs; - inherit nodejs; + inherit nodejs; - inherit dontStrip; # Stripping may fail a build for some package deployments - inherit dontNpmInstall preRebuild unpackPhase buildPhase; + inherit dontStrip; # Stripping may fail a build for some package deployments + inherit dontNpmInstall preRebuild unpackPhase buildPhase; - compositionScript = composePackage args; - pinpointDependenciesScript = pinpointDependenciesOfPackage args; + compositionScript = composePackage args; + pinpointDependenciesScript = pinpointDependenciesOfPackage args; - passAsFile = ["compositionScript" "pinpointDependenciesScript"]; + passAsFile = [ "compositionScript" "pinpointDependenciesScript" ]; - installPhase = '' - source ${installPackage} + installPhase = '' + source ${installPackage} - # Create and enter a root node_modules/ folder - mkdir -p $out/lib/node_modules - cd $out/lib/node_modules + # Create and enter a root node_modules/ folder + mkdir -p $out/lib/node_modules + cd $out/lib/node_modules - # Compose the package and all its dependencies - source $compositionScriptPath + # 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" ] - then - ln -s $out/lib/node_modules/.bin $out/bin - - # Patch the shebang lines of all the executables - ls $out/bin/* | while read i - do - file="$(readlink -f "$i")" - chmod u+rwx "$file" - patchShebangs "$file" - done - fi + # Create symlink to the deployed executable folder, if applicable + if [ -d "$out/lib/node_modules/.bin" ] + then + ln -s $out/lib/node_modules/.bin $out/bin + + # Patch the shebang lines of all the executables + ls $out/bin/* | while read i + do + file="$(readlink -f "$i")" + chmod u+rwx "$file" + patchShebangs "$file" + done + fi - # Create symlinks to the deployed manual page folders, if applicable - if [ -d "$out/lib/node_modules/${packageName}/man" ] - then - mkdir -p $out/share - for dir in "$out/lib/node_modules/${packageName}/man/"* - do - mkdir -p $out/share/man/$(basename "$dir") - for page in "$dir"/* - do - ln -s $page $out/share/man/$(basename "$dir") - done - done - fi + # Create symlinks to the deployed manual page folders, if applicable + if [ -d "$out/lib/node_modules/${packageName}/man" ] + then + mkdir -p $out/share + for dir in "$out/lib/node_modules/${packageName}/man/"* + do + mkdir -p $out/share/man/$(basename "$dir") + for page in "$dir"/* + do + ln -s $page $out/share/man/$(basename "$dir") + done + done + fi - # Run post install hook, if provided - runHook postInstall - ''; + # Run post install hook, if provided + runHook postInstall + ''; - meta = - { - # default to Node.js' platforms - platforms = nodejs.meta.platforms; - } - // meta; - } - // extraArgs); + 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 + 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}${ + name = "node-dependencies-${name}${ if version == null then "" else "-${version}" }"; - buildInputs = - [tarWrapper python nodejs] + 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; + inherit dontStrip; # Stripping may fail a build for some package deployments + inherit dontNpmInstall unpackPhase buildPhase; - includeScript = includeDependencies {inherit dependencies;}; - pinpointDependenciesScript = pinpointDependenciesOfPackage args; + includeScript = includeDependencies { inherit dependencies; }; + pinpointDependenciesScript = pinpointDependenciesOfPackage args; - passAsFile = ["includeScript" "pinpointDependenciesScript"]; + passAsFile = [ "includeScript" "pinpointDependenciesScript" ]; - installPhase = '' - source ${installPackage} + installPhase = '' + source ${installPackage} - mkdir -p $out/${packageName} - cd $out/${packageName} + mkdir -p $out/${packageName} + cd $out/${packageName} - source $includeScriptPath + 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 - ''} + # 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 .."} + # 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;}} + ${prepareAndInvokeNPM {inherit packageName bypassCache reconstructLock npmFlags production;}} - # Expose the executables that were installed - cd .. - ${lib.optionalString (builtins.substring 0 1 packageName == "@") "cd .."} + # 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); + 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 + 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}${ + 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 <<EOF - #! ${stdenv.shell} -e - $shellHook - exec ${stdenv.shell} - EOF - chmod +x $out/bin/shell - ''; + buildInputs = [ python nodejs ] ++ lib.optional (stdenv.isLinux) utillinux ++ buildInputs; + buildCommand = '' + mkdir -p $out/bin + cat > $out/bin/shell <<EOF + #! ${stdenv.shell} -e + $shellHook + exec ${stdenv.shell} + EOF + chmod +x $out/bin/shell + ''; - # Provide the dependencies in a development shell through the NODE_PATH environment variable - inherit nodeDependencies; - shellHook = lib.optionalString (dependencies != []) '' - export NODE_PATH=${nodeDependencies}/lib/node_modules - export PATH="${nodeDependencies}/bin:$PATH" - ''; - } - // extraArgs); -in { + # Provide the dependencies in a development shell through the NODE_PATH environment variable + inherit nodeDependencies; + shellHook = lib.optionalString (dependencies != [ ]) '' + export NODE_PATH=${nodeDependencies}/lib/node_modules + export PATH="${nodeDependencies}/bin:$PATH" + ''; + } + // extraArgs); +in +{ buildNodeSourceDist = lib.makeOverridable buildNodeSourceDist; buildNodePackage = lib.makeOverridable buildNodePackage; buildNodeDependencies = lib.makeOverridable buildNodeDependencies; diff --git a/user/packages/node2nix/node-packages.nix b/user/packages/node2nix/node-packages.nix index 64748fe5..65622884 100644 --- a/user/packages/node2nix/node-packages.nix +++ b/user/packages/node2nix/node-packages.nix @@ -1,13 +1,14 @@ # This file has been generated by node2nix 1.11.1. Do not edit! -{ - nodeEnv, - fetchurl, - fetchgit, - nix-gitignore, - stdenv, - lib, - globalBuildInputs ? [], -}: let +{ nodeEnv +, fetchurl +, fetchgit +, nix-gitignore +, stdenv +, lib +, globalBuildInputs ? [ ] +, +}: +let sources = { "abort-controller-3.0.0" = { name = "abort-controller"; @@ -1063,7 +1064,8 @@ }; }; }; -in { +in +{ "pnpm-7.12" = nodeEnv.buildNodePackage { name = "pnpm"; packageName = "pnpm"; @@ -1108,10 +1110,10 @@ in { sources."glob-8.0.3" (sources."help-me-4.1.0" // { - dependencies = [ - sources."readable-stream-3.6.0" - ]; - }) + dependencies = [ + sources."readable-stream-3.6.0" + ]; + }) sources."ieee754-1.2.1" sources."inflight-1.0.6" sources."inherits-2.0.4" @@ -1190,16 +1192,16 @@ in { dependencies = [ (sources."asn1.js-5.4.1" // { - dependencies = [ - sources."bn.js-4.12.0" - ]; - }) + dependencies = [ + sources."bn.js-4.12.0" + ]; + }) (sources."assert-1.5.0" // { - dependencies = [ - sources."util-0.10.3" - ]; - }) + dependencies = [ + sources."util-0.10.3" + ]; + }) sources."base64-js-1.5.1" sources."bn.js-5.2.1" sources."brorand-1.1.0" @@ -1209,11 +1211,11 @@ in { sources."browserify-rsa-4.1.0" (sources."browserify-sign-4.2.1" // { - dependencies = [ - sources."inherits-2.0.4" - sources."readable-stream-3.6.0" - ]; - }) + dependencies = [ + sources."inherits-2.0.4" + sources."readable-stream-3.6.0" + ]; + }) sources."browserify-zlib-0.2.0" sources."buffer-4.9.2" sources."buffer-xor-1.0.3" @@ -1225,43 +1227,43 @@ in { sources."core-util-is-1.0.3" (sources."create-ecdh-4.0.4" // { - dependencies = [ - sources."bn.js-4.12.0" - ]; - }) + dependencies = [ + sources."bn.js-4.12.0" + ]; + }) sources."create-hash-1.2.0" sources."create-hmac-1.1.7" sources."crypto-browserify-3.12.0" sources."des.js-1.0.1" (sources."diffie-hellman-5.0.3" // { - dependencies = [ - sources."bn.js-4.12.0" - ]; - }) + dependencies = [ + sources."bn.js-4.12.0" + ]; + }) sources."domain-browser-1.2.0" (sources."elliptic-6.5.4" // { - dependencies = [ - sources."bn.js-4.12.0" - sources."inherits-2.0.4" - ]; - }) + dependencies = [ + sources."bn.js-4.12.0" + sources."inherits-2.0.4" + ]; + }) sources."events-3.3.0" sources."evp_bytestokey-1.0.3" (sources."hash-base-3.1.0" // { - dependencies = [ - sources."inherits-2.0.4" - sources."readable-stream-3.6.0" - ]; - }) + dependencies = [ + sources."inherits-2.0.4" + sources."readable-stream-3.6.0" + ]; + }) (sources."hash.js-1.1.7" // { - dependencies = [ - sources."inherits-2.0.4" - ]; - }) + dependencies = [ + sources."inherits-2.0.4" + ]; + }) sources."hmac-drbg-1.0.1" sources."https-browserify-1.0.0" sources."ieee754-1.2.1" @@ -1271,10 +1273,10 @@ in { sources."md5.js-1.3.5" (sources."miller-rabin-4.0.1" // { - dependencies = [ - sources."bn.js-4.12.0" - ]; - }) + dependencies = [ + sources."bn.js-4.12.0" + ]; + }) sources."minimalistic-assert-1.0.1" sources."minimalistic-crypto-utils-1.0.1" sources."node-gyp-build-4.5.0" @@ -1289,10 +1291,10 @@ in { sources."process-nextick-args-2.0.1" (sources."public-encrypt-4.0.3" // { - dependencies = [ - sources."bn.js-4.12.0" - ]; - }) + dependencies = [ + sources."bn.js-4.12.0" + ]; + }) sources."punycode-1.4.1" sources."querystring-0.2.0" sources."querystring-es3-0.2.1" @@ -1300,12 +1302,12 @@ in { sources."randomfill-1.0.4" (sources."readable-stream-2.3.7" // { - dependencies = [ - sources."inherits-2.0.4" - sources."safe-buffer-5.1.2" - sources."string_decoder-1.1.1" - ]; - }) + dependencies = [ + sources."inherits-2.0.4" + sources."safe-buffer-5.1.2" + sources."string_decoder-1.1.1" + ]; + }) sources."readline-sync-1.4.10" sources."ripemd160-2.0.2" sources."safe-buffer-5.2.1" @@ -1323,17 +1325,17 @@ in { sources."tty-browserify-0.0.0" (sources."url-0.11.0" // { - dependencies = [ - sources."punycode-1.3.2" - ]; - }) + dependencies = [ + sources."punycode-1.3.2" + ]; + }) sources."utf-8-validate-5.0.9" (sources."util-0.11.1" // { - dependencies = [ - sources."inherits-2.0.3" - ]; - }) + dependencies = [ + sources."inherits-2.0.3" + ]; + }) sources."util-deprecate-1.0.2" sources."vm-browserify-1.1.2" sources."which-1.3.1" diff --git a/user/prefect.nix b/user/prefect.nix index 23a44ab3..e6aada55 100644 --- a/user/prefect.nix +++ b/user/prefect.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { imports = [ ./settings/base.nix diff --git a/user/satoshipad.nix b/user/satoshipad.nix index eeaf0c75..d3f24fb0 100644 --- a/user/satoshipad.nix +++ b/user/satoshipad.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { imports = [ ../private @@ -37,9 +36,9 @@ xsession.windowManager.i3 = { config = { startup = [ - {command = "firefox-devedition";} - {command = "ripcord";} - {command = "emacs";} + { command = "firefox-devedition"; } + { command = "ripcord"; } + { command = "emacs"; } ]; }; extraConfig = '' diff --git a/user/server.nix b/user/server.nix index 61ef71e8..83c70ca0 100644 --- a/user/server.nix +++ b/user/server.nix @@ -1,8 +1,7 @@ -{ - config, - lib, - pkgs, - ... +{ config +, lib +, pkgs +, ... }: with lib; { imports = [ diff --git a/user/settings/accounting.nix b/user/settings/accounting.nix index 903d6aa9..664ca083 100644 --- a/user/settings/accounting.nix +++ b/user/settings/accounting.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.packages = with pkgs; [ ledger diff --git a/user/settings/base.nix b/user/settings/base.nix index 7c785681..b8e95425 100644 --- a/user/settings/base.nix +++ b/user/settings/base.nix @@ -1,8 +1,7 @@ -{ - config, - lib, - pkgs, - ... +{ config +, lib +, pkgs +, ... }: { imports = [ ./neovim.nix diff --git a/user/settings/chat.nix b/user/settings/chat.nix index f44b2508..cc70d9c1 100644 --- a/user/settings/chat.nix +++ b/user/settings/chat.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.packages = with pkgs; [ signal-desktop diff --git a/user/settings/darwin.nix b/user/settings/darwin.nix index c7404ee0..740b4314 100644 --- a/user/settings/darwin.nix +++ b/user/settings/darwin.nix @@ -1,14 +1,14 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { nixpkgs.overlays = [ (self: super: { darwin-zsh-completions = - super.runCommand "darwin-zsh-completions-0.0.0" { - preferLocalBuild = true; - } '' + 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 @@ -36,7 +36,7 @@ ''; }) ]; - home.packages = with pkgs; [darwin-zsh-completions]; + home.packages = with pkgs; [ darwin-zsh-completions ]; programs.emacs.package = pkgs.emacs; diff --git a/user/settings/development/base.nix b/user/settings/development/base.nix index 96429c1d..97658768 100644 --- a/user/settings/development/base.nix +++ b/user/settings/development/base.nix @@ -1,8 +1,7 @@ -{ - config, - lib, - pkgs, - ... +{ config +, lib +, pkgs +, ... }: { home.packages = with pkgs; [ @@ -29,7 +28,7 @@ ); 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 a5d6ceae..0358e8da 100644 --- a/user/settings/development/clojure.nix +++ b/user/settings/development/clojure.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.packages = with pkgs; [ clojure diff --git a/user/settings/development/javascript.nix b/user/settings/development/javascript.nix index 692995e7..6421c8b3 100644 --- a/user/settings/development/javascript.nix +++ b/user/settings/development/javascript.nix @@ -1,10 +1,11 @@ -{ - config, - pkgs, - ... -}: let +{ config +, pkgs +, ... +}: +let nodejs = pkgs.nodejs-18_x; -in { +in +{ nixpkgs.overlays = [ (self: super: { node2nixPackages = super.callPackage ../../packages/node2nix { @@ -14,21 +15,21 @@ in { ]; home.packages = (with pkgs; - [ - nodejs + [ + nodejs + ] + ++ ( + if stdenv.isDarwin + then [ + ] + else [ + # npm install may use any of these + binutils + gnumake + gcc + python2 ] - ++ ( - if stdenv.isDarwin - then [ - ] - else [ - # npm install may use any of these - binutils - gnumake - gcc - python2 - ] - )) + )) ++ (with pkgs.nodePackages; [ node2nix nodemon diff --git a/user/settings/development/lisp.nix b/user/settings/development/lisp.nix index 7a55c41c..9ad918d2 100644 --- a/user/settings/development/lisp.nix +++ b/user/settings/development/lisp.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.packages = with pkgs; [ ccl diff --git a/user/settings/development/rust.nix b/user/settings/development/rust.nix index 16a50b41..46f3f4f1 100644 --- a/user/settings/development/rust.nix +++ b/user/settings/development/rust.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.packages = with pkgs; [ cargo diff --git a/user/settings/development/web.nix b/user/settings/development/web.nix index 64502198..4bd6630f 100644 --- a/user/settings/development/web.nix +++ b/user/settings/development/web.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.packages = with pkgs.nodePackages; [ diff --git a/user/settings/development/zig.nix b/user/settings/development/zig.nix index 69c2ea80..e5fab030 100644 --- a/user/settings/development/zig.nix +++ b/user/settings/development/zig.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { programs.emacs.extraPackages = epkgs: (with epkgs; [ zig-mode diff --git a/user/settings/dunst.nix b/user/settings/dunst.nix index 0232d47f..ae003f1e 100644 --- a/user/settings/dunst.nix +++ b/user/settings/dunst.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { services.dunst = { enable = true; diff --git a/user/settings/emacs.nix b/user/settings/emacs.nix index fd3909fe..73673e53 100644 --- a/user/settings/emacs.nix +++ b/user/settings/emacs.nix @@ -1,9 +1,9 @@ -{ - config, - pkgs, - lib, - ... -}: let +{ config +, pkgs +, lib +, ... +}: +let inherit (pkgs) stdenv; editorScript = pkgs.writeScriptBin "edit" '' @@ -32,14 +32,15 @@ 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"; diff --git a/user/settings/gaming.nix b/user/settings/gaming.nix index 0c5c9b58..745c1a3e 100644 --- a/user/settings/gaming.nix +++ b/user/settings/gaming.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.packages = with pkgs; [ wineWowPackages.stable diff --git a/user/settings/git.nix b/user/settings/git.nix index 7a0c35da..6936de4d 100644 --- a/user/settings/git.nix +++ b/user/settings/git.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.packages = with pkgs; [ gitAndTools.git-extras diff --git a/user/settings/gnupg.nix b/user/settings/gnupg.nix index 7f96223c..913b5d27 100644 --- a/user/settings/gnupg.nix +++ b/user/settings/gnupg.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.file.".gnupg" = { recursive = true; diff --git a/user/settings/golang.nix b/user/settings/golang.nix index 5e84488c..a07b7559 100644 --- a/user/settings/golang.nix +++ b/user/settings/golang.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.packages = with pkgs; [ go diff --git a/user/settings/i3.nix b/user/settings/i3.nix index 5443d1d6..6265e764 100644 --- a/user/settings/i3.nix +++ b/user/settings/i3.nix @@ -1,202 +1,203 @@ -{ - config, - pkgs, - lib, - ... +{ config +, pkgs +, lib +, ... }: { xdg.configFile.i3status = { recursive = true; source = ../i3/i3status; }; - xsession.windowManager.i3 = let - 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 { - enable = true; - config = { - modifier = mod; - assigns = { - "1" = [{class = "^Ripcord$";}]; - "3" = [{class = "^Firefox Developer Edition$";}]; - "8" = [{class = "^Emacs$";}]; - "9" = [{class = "\.exe$";}]; - "10" = [{class = "^Barrier$";}]; - }; - floating = { - criteria = [ - {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$"; - } + xsession.windowManager.i3 = + let + 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 + { + enable = true; + config = { + modifier = mod; + assigns = { + "1" = [{ class = "^Ripcord$"; }]; + "3" = [{ class = "^Firefox Developer Edition$"; }]; + "8" = [{ class = "^Emacs$"; }]; + "9" = [{ class = "\.exe$"; }]; + "10" = [{ class = "^Barrier$"; }]; + }; + floating = { + criteria = [ + { 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$"; } + ]; + }; + window = { + titlebar = false; + }; + keybindings = { + "${mod}+Return" = "exec --no-startup-id ${config.home.sessionVariables.TERMINAL}"; + # kill focused window + "${mod}+w" = "kill"; + "${mod}+Shift+w" = "kill"; + + "${mod}+Mod1+r" = "exec rofi -show run"; + "${mod}+space" = "exec \"rofi -show drun\""; + + # change focus + "${mod}+h" = "focus left"; + "${mod}+j" = "focus down"; + "${mod}+k" = "focus up"; + "${mod}+l" = "focus right"; + + "${mod}+grave" = "workspace 0"; + "${mod}+1" = "workspace 1"; + "${mod}+2" = "workspace 2"; + "${mod}+3" = "workspace 3"; + "${mod}+4" = "workspace 4"; + "${mod}+5" = "workspace 5"; + "${mod}+6" = "workspace 6"; + "${mod}+7" = "workspace 7"; + "${mod}+8" = "workspace 8"; + "${mod}+9" = "workspace 9"; + "${mod}+0" = "workspace 10"; + + # move focused window + "${mod}+Shift+h" = "move left"; + "${mod}+Shift+j" = "move down"; + "${mod}+Shift+k" = "move up"; + "${mod}+Shift+l" = "move right"; + + "${mod}+Shift+grave" = "move container to workspace 0"; + "${mod}+Shift+1" = "move container to workspace 1"; + "${mod}+Shift+2" = "move container to workspace 2"; + "${mod}+Shift+3" = "move container to workspace 3"; + "${mod}+Shift+4" = "move container to workspace 4"; + "${mod}+Shift+5" = "move container to workspace 5"; + "${mod}+Shift+6" = "move container to workspace 6"; + "${mod}+Shift+7" = "move container to workspace 7"; + "${mod}+Shift+8" = "move container to workspace 8"; + "${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"; + "${mod}+Mod1+k" = "move workspace to output up"; + "${mod}+Mod1+l" = "move workspace to output right"; + + # split in horizontal orientation + "${mod}+b" = "split h"; + + # split in vertical orientation + "${mod}+v" = "split v"; + + "${mod}+F11" = "fullscreen toggle"; + "${mod}+f" = "fullscreen toggle"; + + # change container layout (stacked, tabbed, toggle split) + "${mod}+Shift+s" = "layout stacking"; + "${mod}+Shift+t" = "layout tabbed"; + "${mod}+Shift+v" = "layout toggle split"; + + # toggle tiling / floating + "${mod}+Shift+f" = "floating toggle"; + + # change focus between tiling / floating windows + "${mod}+Tab" = "focus mode_toggle"; + + # focus the parent container + "${mod}+a" = "focus parent"; + + # focus the child container + "${mod}+d" = "focus child"; + + "${mod}+Shift+c" = "reload"; + "${mod}+Shift+p" = "restart"; + + "${mod}+Shift+r" = "mode resize"; + "${mod}+Shift+o" = "exec ${locker}"; + "${mod}+Pause" = "mode \"${mode_system}\""; + "${mod}+Escape" = "mode \"${mode_system}\""; + "${mod}+Shift+q" = "mode \"${mode_system}\""; + }; + + modes = { + resize = { + "h" = "resize shrink width 10 px or 10 ppt"; + "j" = "resize grow height 10 px or 10 ppt"; + "k" = "resize shrink height 10 px or 10 ppt"; + "l" = "resize grow width 10 px or 10 ppt"; + + "Left" = "resize shrink width 10 px or 10 ppt"; + "Down" = "resize grow height 10 px or 10 ppt"; + "Up" = "resize shrink height 10 px or 10 ppt"; + "Right" = "resize grow width 10 px or 10 ppt"; + + "Return" = "mode default"; + "Escape" = "mode default"; + }; + "${mode_system}" = { + "l" = "exec --no-startup-id ${locker}, mode default"; + "e" = "exec --no-startup-id i3-msg exit, mode default"; + "s" = "exec --no-startup-id systemctl suspend, mode default"; + "h" = "exec --no-startup-id systemctl hibernate, mode default"; + "r" = "exec --no-startup-id systemctl reboot, mode default"; + "Shift+s" = "exec --no-startup-id systemctl poweroff -i, mode default"; + "Return" = "mode default"; + "Escape" = "mode default"; + }; + }; + + bars = [ { - class = "^Steam$"; - title = "^Steam Guard - Computer Authorization Required$"; + position = "top"; + hiddenState = "show"; + statusCommand = "${pkgs.i3status}/bin/i3status -c ~/.config/i3status/config"; + extraConfig = '' + font -xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso10646-1 + ''; } - {title = "^Steam Keyboard$";} ]; }; - window = { - titlebar = false; - }; - keybindings = { - "${mod}+Return" = "exec --no-startup-id ${config.home.sessionVariables.TERMINAL}"; - # kill focused window - "${mod}+w" = "kill"; - "${mod}+Shift+w" = "kill"; - - "${mod}+Mod1+r" = "exec rofi -show run"; - "${mod}+space" = "exec \"rofi -show drun\""; - - # change focus - "${mod}+h" = "focus left"; - "${mod}+j" = "focus down"; - "${mod}+k" = "focus up"; - "${mod}+l" = "focus right"; - - "${mod}+grave" = "workspace 0"; - "${mod}+1" = "workspace 1"; - "${mod}+2" = "workspace 2"; - "${mod}+3" = "workspace 3"; - "${mod}+4" = "workspace 4"; - "${mod}+5" = "workspace 5"; - "${mod}+6" = "workspace 6"; - "${mod}+7" = "workspace 7"; - "${mod}+8" = "workspace 8"; - "${mod}+9" = "workspace 9"; - "${mod}+0" = "workspace 10"; - - # move focused window - "${mod}+Shift+h" = "move left"; - "${mod}+Shift+j" = "move down"; - "${mod}+Shift+k" = "move up"; - "${mod}+Shift+l" = "move right"; - - "${mod}+Shift+grave" = "move container to workspace 0"; - "${mod}+Shift+1" = "move container to workspace 1"; - "${mod}+Shift+2" = "move container to workspace 2"; - "${mod}+Shift+3" = "move container to workspace 3"; - "${mod}+Shift+4" = "move container to workspace 4"; - "${mod}+Shift+5" = "move container to workspace 5"; - "${mod}+Shift+6" = "move container to workspace 6"; - "${mod}+Shift+7" = "move container to workspace 7"; - "${mod}+Shift+8" = "move container to workspace 8"; - "${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"; - "${mod}+Mod1+k" = "move workspace to output up"; - "${mod}+Mod1+l" = "move workspace to output right"; - - # split in horizontal orientation - "${mod}+b" = "split h"; - - # split in vertical orientation - "${mod}+v" = "split v"; - - "${mod}+F11" = "fullscreen toggle"; - "${mod}+f" = "fullscreen toggle"; - - # change container layout (stacked, tabbed, toggle split) - "${mod}+Shift+s" = "layout stacking"; - "${mod}+Shift+t" = "layout tabbed"; - "${mod}+Shift+v" = "layout toggle split"; - - # toggle tiling / floating - "${mod}+Shift+f" = "floating toggle"; - - # change focus between tiling / floating windows - "${mod}+Tab" = "focus mode_toggle"; - - # focus the parent container - "${mod}+a" = "focus parent"; - - # focus the child container - "${mod}+d" = "focus child"; - - "${mod}+Shift+c" = "reload"; - "${mod}+Shift+p" = "restart"; - - "${mod}+Shift+r" = "mode resize"; - "${mod}+Shift+o" = "exec ${locker}"; - "${mod}+Pause" = "mode \"${mode_system}\""; - "${mod}+Escape" = "mode \"${mode_system}\""; - "${mod}+Shift+q" = "mode \"${mode_system}\""; - }; - modes = { - resize = { - "h" = "resize shrink width 10 px or 10 ppt"; - "j" = "resize grow height 10 px or 10 ppt"; - "k" = "resize shrink height 10 px or 10 ppt"; - "l" = "resize grow width 10 px or 10 ppt"; - - "Left" = "resize shrink width 10 px or 10 ppt"; - "Down" = "resize grow height 10 px or 10 ppt"; - "Up" = "resize shrink height 10 px or 10 ppt"; - "Right" = "resize grow width 10 px or 10 ppt"; - - "Return" = "mode default"; - "Escape" = "mode default"; - }; - "${mode_system}" = { - "l" = "exec --no-startup-id ${locker}, mode default"; - "e" = "exec --no-startup-id i3-msg exit, mode default"; - "s" = "exec --no-startup-id systemctl suspend, mode default"; - "h" = "exec --no-startup-id systemctl hibernate, mode default"; - "r" = "exec --no-startup-id systemctl reboot, mode default"; - "Shift+s" = "exec --no-startup-id systemctl poweroff -i, mode default"; - "Return" = "mode default"; - "Escape" = "mode default"; - }; - }; - - bars = [ - { - position = "top"; - hiddenState = "show"; - statusCommand = "${pkgs.i3status}/bin/i3status -c ~/.config/i3status/config"; - extraConfig = '' - font -xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso10646-1 - ''; - } - ]; + extraConfig = '' + font -xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso10646-1 + ''; }; - - extraConfig = '' - font -xos4-terminus-medium-r-normal--12-120-72-72-c-60-iso10646-1 - ''; - }; } diff --git a/user/settings/ledger.nix b/user/settings/ledger.nix index b0fe9ef9..8d4b5632 100644 --- a/user/settings/ledger.nix +++ b/user/settings/ledger.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.file.".ledgerrc".text = '' --date-format %F diff --git a/user/settings/mail.nix b/user/settings/mail.nix index b3f288fb..3009114c 100644 --- a/user/settings/mail.nix +++ b/user/settings/mail.nix @@ -1,8 +1,7 @@ -{ - 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 043bafe8..07e5486b 100644 --- a/user/settings/music-management.nix +++ b/user/settings/music-management.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.packages = with pkgs; [ (beets.override { diff --git a/user/settings/music.nix b/user/settings/music.nix index 43940755..340e4b90 100644 --- a/user/settings/music.nix +++ b/user/settings/music.nix @@ -1,18 +1,17 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.packages = with pkgs; [ 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/neovim.nix b/user/settings/neovim.nix index 59c75a91..ceae1f62 100644 --- a/user/settings/neovim.nix +++ b/user/settings/neovim.nix @@ -1,8 +1,7 @@ -{ - config, - lib, - pkgs, - ... +{ config +, lib +, pkgs +, ... }: { programs.neovim = { enable = true; diff --git a/user/settings/nix.nix b/user/settings/nix.nix index 4d313624..c0dfe9c5 100644 --- a/user/settings/nix.nix +++ b/user/settings/nix.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { nixpkgs.config = import ../config.nix; home.packages = with pkgs; [ diff --git a/user/settings/nixos.nix b/user/settings/nixos.nix index 50e38e89..62f18f96 100644 --- a/user/settings/nixos.nix +++ b/user/settings/nixos.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { imports = [ ./nix.nix diff --git a/user/settings/nixpkgs.nix b/user/settings/nixpkgs.nix index ee993bd5..9f8af5c8 100644 --- a/user/settings/nixpkgs.nix +++ b/user/settings/nixpkgs.nix @@ -1,18 +1,19 @@ -{ - 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 ff78281c..cfa17287 100644 --- a/user/settings/passwords.nix +++ b/user/settings/passwords.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.packages = with pkgs; [ keepassxc diff --git a/user/settings/rofi.nix b/user/settings/rofi.nix index d62ea7cf..c0c6990d 100644 --- a/user/settings/rofi.nix +++ b/user/settings/rofi.nix @@ -1,8 +1,7 @@ -{ - config, - lib, - pkgs, - ... +{ config +, lib +, pkgs +, ... }: { xdg.configFile."networkmanager-dmenu/config.ini".text = '' [dmenu] diff --git a/user/settings/satoshipay.nix b/user/settings/satoshipay.nix index b93d7eee..03aa1cd0 100644 --- a/user/settings/satoshipay.nix +++ b/user/settings/satoshipay.nix @@ -1,14 +1,15 @@ -{ - 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 @@ -18,33 +19,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.emacs.extraPackages = epkgs: (with epkgs; [ docker-compose-mode dockerfile-mode @@ -97,36 +98,38 @@ in { ''; }; - accounts.email.accounts.satoshipay = let - address = "alan@satoshipay.io"; - in { - inherit address; - primary = lib.mkDefault true; - realName = "Alan Pearce"; - flavor = "gmail.com"; - passwordCommand = "${pkgs.python3Packages.keyring}/bin/keyring get satoshipay-google-mail ${address}"; - folders = { - inbox = "INBOX"; - drafts = "[Gmail]/Drafts"; - sent = "[Gmail]/Sent Mail"; - trash = "[Gmail]/Bin"; - }; - imap = { - tls.enable = true; - }; - smtp = { - tls.enable = true; - }; - mbsync = { - enable = true; - create = "maildir"; - remove = "maildir"; - expunge = "both"; - }; - msmtp = { - enable = true; + accounts.email.accounts.satoshipay = + let + address = "alan@satoshipay.io"; + in + { + inherit address; + primary = lib.mkDefault true; + realName = "Alan Pearce"; + flavor = "gmail.com"; + passwordCommand = "${pkgs.python3Packages.keyring}/bin/keyring get satoshipay-google-mail ${address}"; + folders = { + inbox = "INBOX"; + drafts = "[Gmail]/Drafts"; + sent = "[Gmail]/Sent Mail"; + trash = "[Gmail]/Bin"; + }; + imap = { + tls.enable = true; + }; + smtp = { + tls.enable = true; + }; + mbsync = { + enable = true; + create = "maildir"; + remove = "maildir"; + expunge = "both"; + }; + msmtp = { + enable = true; + }; }; - }; home.file.".npmrc".text = '' @satoshipay:registry=https://registry.npmjs.org/ diff --git a/user/settings/ssh.nix b/user/settings/ssh.nix index 0ccc9796..38a47fad 100644 --- a/user/settings/ssh.nix +++ b/user/settings/ssh.nix @@ -1,8 +1,7 @@ -{ - config, - lib, - pkgs, - ... +{ config +, lib +, pkgs +, ... }: { programs.ssh = { enable = true; diff --git a/user/settings/sxhkd.nix b/user/settings/sxhkd.nix index 83033cc8..75ce0798 100644 --- a/user/settings/sxhkd.nix +++ b/user/settings/sxhkd.nix @@ -1,13 +1,14 @@ -{ - config, - pkgs, - ... -}: let +{ config +, pkgs +, ... +}: +let pamixer = "${pkgs.pamixer}/bin/pamixer"; light = "${pkgs.light}/bin/light"; playerctl = "${pkgs.playerctl}/bin/playerctl"; networkmanager_dmenu = "${pkgs.networkmanager_dmenu}/bin/networkmanager_dmenu"; -in { +in +{ xdg.configFile."sxhkd/sxhkdrc".text = '' XF86AudioMute ${pamixer} --toggle-mute diff --git a/user/settings/tabnine.nix b/user/settings/tabnine.nix index 02f0e071..4b812cb6 100644 --- a/user/settings/tabnine.nix +++ b/user/settings/tabnine.nix @@ -1,9 +1,8 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { - imports = [../modules/tabnine.nix]; + imports = [ ../modules/tabnine.nix ]; home.packages = with pkgs; [ tabnine ]; @@ -28,7 +27,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; @@ -46,35 +45,35 @@ 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"; diff --git a/user/settings/trezor.nix b/user/settings/trezor.nix index 3211bb42..6996d9b0 100644 --- a/user/settings/trezor.nix +++ b/user/settings/trezor.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.file.".ssh/agent.config" = { text = '' diff --git a/user/settings/user-interface.nix b/user/settings/user-interface.nix index af432a91..4f392377 100644 --- a/user/settings/user-interface.nix +++ b/user/settings/user-interface.nix @@ -1,18 +1,19 @@ -{ - config, - pkgs, - ... -}: let +{ config +, pkgs +, ... +}: +let inherit (pkgs) stdenv; -in { +in +{ home.sessionVariables = { TERMINAL = "xterm"; }; programs.keychain = { enable = true; - extraFlags = ["--quiet" "--systemd"]; - keys = []; + extraFlags = [ "--quiet" "--systemd" ]; + keys = [ ]; }; nixpkgs.config.librewolf = { diff --git a/user/settings/xresources.nix b/user/settings/xresources.nix index 3481962d..14d2b4fc 100644 --- a/user/settings/xresources.nix +++ b/user/settings/xresources.nix @@ -1,7 +1,6 @@ -{ - config, - pkgs, - ... +{ config +, pkgs +, ... }: { home.file.".xresources" = { recursive = true; diff --git a/user/settings/zsh.nix b/user/settings/zsh.nix index 7dffecb4..88004637 100644 --- a/user/settings/zsh.nix +++ b/user/settings/zsh.nix @@ -1,9 +1,9 @@ -{ - config, - lib, - pkgs, - ... -}: let +{ config +, lib +, pkgs +, ... +}: +let inherit (pkgs) stdenv; lsOptions = if stdenv.isDarwin @@ -19,7 +19,7 @@ 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"' ''; @@ -28,7 +28,8 @@ ''; }; }; -in { +in +{ home.packages = with pkgs; [ fzf ghq |