From bc1cfdfeafce57357ebe445f0c009d327339dd60 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Wed, 15 Dec 2021 03:24:21 +0100 Subject: [PATCH] Squash some bugs that kept nix from building --- nixpkgs/home.nix | 18 +++---- nixpkgs/overlays/lib/strings.nix | 2 +- nixpkgs/secret/ssh/hosts/pvv.nix | 89 +++++++++++++++----------------- nixpkgs/shellOptions.nix | 69 ++++++++++++------------- 4 files changed, 84 insertions(+), 94 deletions(-) diff --git a/nixpkgs/home.nix b/nixpkgs/home.nix index 817cf8b..b1fed57 100644 --- a/nixpkgs/home.nix +++ b/nixpkgs/home.nix @@ -47,10 +47,13 @@ in stateVersion = "21.05"; username = "h7x4"; homeDirectory = "/home/h7x4"; + # enableNixpkgsReleaseCheck = true; }; news.display = "silent"; + fonts.fontconfig.enable = true; + programs = { home-manager.enable = true; @@ -58,37 +61,30 @@ in bottom.enable = true; exa.enable = true; feh.enable = true; - fzf = { enable = true; defaultCommand = "fd --type f"; }; - gpg.enable = true; irssi.enable = true; + kakoune.enable = true; lazygit.enable = true; - mpv.enable = true; - ssh.enable = true; - man = { enable = true; generateCaches = true; }; - + mpv.enable = true; obs-studio.enable = true; - + ssh.enable = true; skim = { enable = true; defaultCommand ="fd --type f"; }; - texlive = { enable = true; # packageSet = pkgs.texlive.combined.scheme-medium; }; - # xmobar.enable = true; - zoxide.enable = true; }; @@ -129,6 +125,8 @@ in }; }; + xdg.enable = true; + xsession = { pointerCursor = { package = pkgs.capitaine-cursors; diff --git a/nixpkgs/overlays/lib/strings.nix b/nixpkgs/overlays/lib/strings.nix index 637b35e..13d71f8 100644 --- a/nixpkgs/overlays/lib/strings.nix +++ b/nixpkgs/overlays/lib/strings.nix @@ -11,7 +11,7 @@ in super.lib.strings // rec { concatStringsSep splitter (map f (splitString splitter string)); # (String -> String) -> String -> String - mapLines = splitMap "\n" + mapLines = splitMap "\n"; # String -> Int -> String repeatString = string: times: concatStringsSep "" (repeat string times); diff --git a/nixpkgs/secret/ssh/hosts/pvv.nix b/nixpkgs/secret/ssh/hosts/pvv.nix index 68a2426..9dcdb1b 100644 --- a/nixpkgs/secret/ssh/hosts/pvv.nix +++ b/nixpkgs/secret/ssh/hosts/pvv.nix @@ -1,5 +1,10 @@ -{ lib, ... }: +{ ... }: let + + # TODO: Fix overlay in home.nix + pkgs = import { overlays = [(import ../../../overlays/lib)]; }; + lib = pkgs.lib; + users = import ./users.nix; inherit (users.pvv) normalUser adminUser; @@ -33,68 +38,60 @@ let [ "innovation" "pvv-minecraft" ] ]; + # Either( String [String] AttrSet{String} ) -> AttrSet{String} normalizeValueType = let - inherit (lib.strings) isString concatStringsSep; + inherit (lib.strings) isString; inherit (lib.lists) isList; inherit (lib.attrsets) filterAttrs; in machine: - if (isString machine) then (normalizeValueType [machine]) - else if (isList machine) then (normalizeValueType { names = machine; }) - else ({ name = concatStringsSep " " machine.names; } // (removeAttrs machine ["names"])); + if (isString machine) then { names = [machine]; } + else if (isList machine) then { names = machine; } + else machine; - # TODO: Merge the following two functions. They have too much code in common. - convertNormalMachines = let - inherit (lib.trivial) pipe; - inherit (lib.attrsets) listToAttrs; + # [String] -> AttrSet + machineWithNames = let inherit (lib.lists) head; inherit (lib.strings) split; + in + names: { hostname = "${head names}.pvv.org"; }; - convertNormalMachine = normalizedMachine: - rec { - inherit (normalizedMachine) name; - value = ({ - hostname = "${head (split " " name)}.pvv.org"; - user = normalUser; - } // removeAttrs normalizedMachine ["name"]); - }; + # AttrSet -> AttrSet -> AttrSet + convertMachineWithDefaults = defaults: normalizedMachine: let + inherit (lib.attrsets) nameValuePair; + inherit (lib.strings) concatStringsSep; + inherit (normalizedMachine) names; - pipeline = [ - (ms: map normalizeValueType ms) - (ms: map convertNormalMachine ms) - listToAttrs - ]; - in machines: pipe machines pipeline; + name = concatStringsSep " " names; + value = + (machineWithNames names) + // defaults + // removeAttrs normalizedMachine ["names"]; + in + nameValuePair name value; - convertAdminMachines = let - inherit (lib.trivial) pipe; + # AttrSet -> AttrSet + convertNormalMachine = convertMachineWithDefaults { user = normalUser; }; + # AttrSet -> AttrSet + convertAdminMachine = + convertMachineWithDefaults { user = adminUser; proxyJump = "hildring"; }; + + # [ Either(String [String] AttrSet{String}) ] -> (AttrSet -> AttrSet) -> AttrSet + convertMachinesWith = convertMachineFunction: let inherit (lib.attrsets) listToAttrs; - inherit (lib.lists) head; - inherit (lib.strings) split; - - convertAdminMachine = normalizedMachine: - rec { - inherit (normalizedMachine) name; - value = ({ - hostname = "${head (split " " name)}.pvv.org"; - user = adminUser; - proxyJump = "hildring"; - } // removeAttrs normalizedMachine ["name"]); - }; - + inherit (lib.trivial) pipe; pipeline = [ - (ms: map normalizeValueType ms) - (ms: map convertAdminMachine ms) + (map normalizeValueType) + (map convertMachineFunction) listToAttrs ]; - in machines: pipe machines pipeline; + in + machines: pipe machines pipeline; in { - programs.ssh.matchBlocks = let - concatSets = lib.lists.foldl (s1: s2: s1 // s2) {}; - in concatSets [ - (convertNormalMachines normalMachines) - (convertAdminMachines rootMachines) + programs.ssh.matchBlocks = lib.attrsets.concatAttrs [ + (convertMachinesWith convertNormalMachine normalMachines) + (convertMachinesWith convertAdminMachine rootMachines) ]; } diff --git a/nixpkgs/shellOptions.nix b/nixpkgs/shellOptions.nix index 7c30903..e1f6bda 100644 --- a/nixpkgs/shellOptions.nix +++ b/nixpkgs/shellOptions.nix @@ -20,22 +20,17 @@ let functors = let inherit (lib.strings) concatStringsSep; inherit (lib.termColors.front) blue; + genWrapper = type: value: { inherit type; inherit value; }; in { shellPipe = { - wrap = s: { - type = "shellPipe"; - value = s; - }; + wrap = genWrapper "shellPipe"; apply = f: concatStringsSep " | " f.value; stringify = f: concatStringsSep (blue "\n| ") f.value; }; join = { - wrap = s: { - type = "join"; - value = s; - }; + wrap = genWrapper "join"; apply = f: concatStringsSep " " f.value; - stringify = f: concatStringsSep " \\\n " f.value; + stringify = f: concatStringsSep " \\\n " f.value; }; }; @@ -104,7 +99,7 @@ in rec { "Reminders" = { regex-escapechars = "echo \"[\\^$.|?*+()\""; - aliases = "${coreutils}/bin/cat $HOME/${home.file.aliases.target}"; + aliases = "${coreutils}/bin/cat $HOME/${config.xdg.dataFile.aliases.target}"; }; # ░█▀█░▀█▀░█░█ @@ -257,27 +252,28 @@ in rec { allCdNameValuePairs = flatten (map nthCdsAsNameValuePairs (range 1 9)); in listToAttrs allCdNameValuePairs; + + "Package Managers" = let + inherit (lib.attrsets) nameValuePair listToAttrs; + + packageManagers = [ + "apt" + "dpkg" + "flatpak" + "pacman" + "pamac" + "paru" + "rpm" + "snap" + "xbps" + "yay" + "yum" + ]; + + command = "${coreutils}/bin/cat $HOME/${config.xdg.dataFile.packageManagerLecture.target}"; + nameValuePairs = map (pm: nameValuePair pm command) packageManagers; + in listToAttrs nameValuePairs; }; - "Package Managers" = let - inherit (lib.attrsets) nameValuePair listToAttrs; - - packageManagers = [ - "apt" - "dpkg" - "flatpak" - "pacman" - "pamac" - "paru" - "rpm" - "snap" - "xbps" - "yay" - "yum" - ]; - - command = "${coreutils}/bin/cat $HOME/${config.home.file.packageManagerLecture.target}"; - nameValuePairs = map (pm: nameValuePair pm command) packageManagers; - in listToAttrs nameValuePairs; }; # TODO: flatten functions @@ -332,9 +328,8 @@ in rec { allAttrValuesAreStrings _module.args.shellOptions.aliases; }; - home.file = { + xdg.dataFile = { aliases = { - target = ".local/share/aliases"; text = let inherit (lib.strings) unlines wrap' replaceStrings' stringLength repeatString; inherit (lib.attrsets) attrValues mapAttrs isAttrs; @@ -360,7 +355,7 @@ in rec { applyFunctor = attrset: let applied = functors.${attrset.type}.stringify attrset; - indent' = "${indent} ${repeatString " " (stringLength n)}"; + indent' = indent + (repeatString " " ((stringLength " ->") + (stringLength n))); in replaceStrings' ["\n"] ("\n" + indent') applied; recurse = stringifyCategory (level + 1) n v; @@ -370,15 +365,15 @@ in rec { recurse) category))); in (stringifyCategory 0 "Aliases" _module.args.shellOptions.aliases) + "\n"; - }; - packageManagerLecture = { - target = ".local/share/package-manager.lecture"; + }; + packageManagerLecture = { + target = "package-manager.lecture"; text = let inherit (lib.strings) unlines; inherit (lib.termColors.front) red blue; in unlines [ ((red "This package manager is not installed on ") + (blue "NixOS") + (red ".")) - ((red "Either use ") + ("\"nix-env -i\"") + (red "or install it through a configuration file.")) + ((red "Either use ") + ("\"nix-env -i\"") + (red " or install it through a configuration file.")) "" ]; };