update and move inputs, WIP ezpc hyprland, improve elvish module, improve locking, disable systemd initrd by default

This commit is contained in:
notgne2 2022-12-26 22:29:11 -07:00
parent cc56729c13
commit 6c6556b8d6
Signed by: notgne2
SSH Key Fingerprint: SHA256:qlFCAimT/PvNIG3u+aYT9pIqFCWgu6sNsWjpV1vHLIE
6 changed files with 255 additions and 79 deletions

163
flake.lock generated
View File

@ -144,32 +144,52 @@
"type": "github"
}
},
"flake-utils": {
"locked": {
"lastModified": 1667395993,
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"plasma-manager",
"nixpkgs"
],
"utils": [
"flake-utils"
]
},
"locked": {
"lastModified": 1654113405,
"narHash": "sha256-VpK+0QaWG2JRgB00lw77N9TjkE3ec0iMYIX1TzGpxa4=",
"lastModified": 1671966569,
"narHash": "sha256-jbLgfSnmLchARBNFRvCic63CFQ9LAyvlXnBpc2kwjQc=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "ac2287df5a2d6f0a44bbcbd11701dbbf6ec43675",
"rev": "c55fa26ce05fee8e063db22918d05a73d430b2ea",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-22.05",
"repo": "home-manager",
"type": "github"
}
},
"home-manager-clipman": {
"inputs": {
"nixpkgs": "nixpkgs",
"utils": "utils"
"nixpkgs": [
"nixpkgs"
],
"utils": [
"flake-utils"
]
},
"locked": {
"lastModified": 1666272074,
@ -186,23 +206,62 @@
"type": "github"
}
},
"nixpkgs": {
"hyprland": {
"inputs": {
"hyprland-protocols": "hyprland-protocols",
"nixpkgs": [
"nixpkgs"
],
"wlroots": "wlroots",
"xdph": "xdph"
},
"locked": {
"lastModified": 1662996720,
"narHash": "sha256-XvLQ3SuXnDMJMpM1sv1ifPjBuRytiDYhB12H/BNTjgY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "5f326e2a403e1cebaec378e72ceaf5725983376d",
"lastModified": 1671982931,
"narHash": "sha256-cRInW7YYjw9xbjDTYOQD9PGo04aPAJWWu78PQ1HPkiQ=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "cd08fa22fd1ddbb8604e42d01043617a8eb10520",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"owner": "hyprwm",
"repo": "Hyprland",
"type": "github"
}
},
"nixpkgs_2": {
"hyprland-protocols": {
"flake": false,
"locked": {
"lastModified": 1670703428,
"narHash": "sha256-4KUW5SKR0Y9uaYGcYwy53YJ3B/sgiprCL4fRGO+mpOA=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "d0d6db8cb5bef6d93ca3ad8fb2124964173396da",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"hyprland-protocols_2": {
"flake": false,
"locked": {
"lastModified": 1670703428,
"narHash": "sha256-4KUW5SKR0Y9uaYGcYwy53YJ3B/sgiprCL4fRGO+mpOA=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "d0d6db8cb5bef6d93ca3ad8fb2124964173396da",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprland-protocols",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1670841420,
"narHash": "sha256-mSEia1FzrsHbfqjorMyYiX8NXdDVeR1Pw1k55jMJlJY=",
@ -218,22 +277,6 @@
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1655643053,
"narHash": "sha256-8PMDEr44DwH45PbBijtQcAPyC4Ap+sOO5wK0y5lFvyY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5afb1b7dcf46c4ded5719525a42879b35363862c",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-22.05",
"repo": "nixpkgs",
"type": "github"
}
},
"npmlock2nix": {
"flake": false,
"locked": {
@ -252,8 +295,12 @@
},
"plasma-manager": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs_3"
"home-manager": [
"home-manager"
],
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1664383871,
@ -280,8 +327,11 @@
"bemoji": "bemoji",
"bwmenu": "bwmenu",
"firenvim": "firenvim",
"flake-utils": "flake-utils",
"home-manager": "home-manager",
"home-manager-clipman": "home-manager-clipman",
"nixpkgs": "nixpkgs_2",
"hyprland": "hyprland",
"nixpkgs": "nixpkgs",
"npmlock2nix": "npmlock2nix",
"plasma-manager": "plasma-manager",
"rycee": "rycee",
@ -320,18 +370,43 @@
"type": "github"
}
},
"utils": {
"wlroots": {
"flake": false,
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"host": "gitlab.freedesktop.org",
"lastModified": 1671723353,
"narHash": "sha256-G1jiI0SA7eiZusO+iJytErMRNbKbwqJJJGL+sNoBNoQ=",
"owner": "wlroots",
"repo": "wlroots",
"rev": "b28a9afd4b0b86e9a66a40f6b44b69f59947b7d6",
"type": "gitlab"
},
"original": {
"host": "gitlab.freedesktop.org",
"owner": "wlroots",
"repo": "wlroots",
"type": "gitlab"
}
},
"xdph": {
"inputs": {
"hyprland-protocols": "hyprland-protocols_2",
"nixpkgs": [
"hyprland",
"nixpkgs"
]
},
"locked": {
"lastModified": 1671837878,
"narHash": "sha256-OmFDyktTc/l+3wHboHeFpAQgPt3r7jjqZf8MrwuUGMo=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "e47f4cec698080768821b271510985ab94a37e91",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"type": "github"
}
}

View File

@ -2,6 +2,14 @@
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
inputs.utils.follows = "flake-utils";
};
base16-rofi = {
url = "github:tinted-theming/base16-rofi";
flake = false;
@ -44,6 +52,8 @@
};
plasma-manager = {
url = "github:pjones/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager";
};
bemoji = {
url = "github:marty-oehme/bemoji";
@ -55,6 +65,12 @@
};
home-manager-clipman = {
url = "github:jwygoda/home-manager/clipman";
inputs.nixpkgs.follows = "nixpkgs";
inputs.utils.follows = "flake-utils";
};
hyprland = {
url = "github:hyprwm/Hyprland";
inputs.nixpkgs.follows = "nixpkgs";
};
};

View File

@ -4,7 +4,11 @@ inputs: {
pkgs,
...
}: {
imports = [(import ./modules inputs) "${inputs.home-manager-clipman}/modules/services/clipman.nix"];
imports = [
(import ./modules inputs)
"${inputs.home-manager-clipman}/modules/services/clipman.nix"
inputs.hyprland.homeManagerModules.default
];
programs.direnv = {
enable = lib.mkDefault true;

View File

@ -7,6 +7,30 @@
with lib; let
cfg = config.programs.elvish;
in {
options.programs.starship.elvishIntegration = mkOption {
default = true;
type = types.bool;
description = ''
Whether to enable Elvish integration.
'';
};
options.programs.zoxide.elvishIntegration = mkOption {
default = true;
type = types.bool;
description = ''
Whether to enable Elvish integration.
'';
};
options.programs.direnv.elvishIntegration = mkOption {
default = true;
type = types.bool;
description = ''
Whether to enable Elvish integration.
'';
};
options.programs.elvish = {
enable = mkEnableOption "Elvish, a friendly interactive shell and an expressive programming";
@ -18,30 +42,6 @@ in {
'';
};
zoxide = mkOption {
type = types.bool;
default = false;
description = ''
Enable zoxide smart directory switcher
'';
};
starship = mkOption {
type = types.bool;
default = false;
description = ''
Use the starship prompt
'';
};
direnv = mkOption {
type = types.bool;
default = false;
description = ''
Enable direnv integration for elvish
'';
};
package = mkOption {
type = types.package;
default = pkgs.elvish;
@ -73,22 +73,21 @@ in {
exec elvish
'';
# Don't do things twice if we're just passing through :)
programs.starship.enableBashIntegration = mkIf cfg.defaultFromBash false;
programs.starship.enable = mkIf cfg.starship true;
programs.zoxide.enable = mkIf cfg.zoxide true;
programs.direnv.enable = mkIf cfg.direnv true;
programs.zoxide.enableBashIntegration = mkIf cfg.defaultFromBash false;
programs.direnv.enableBashIntegration = mkIf cfg.defaultFromBash false;
programs.elvish.initExtra = mkMerge [
(mkIf cfg.starship ''
(mkIf (config.programs.starship.elvishIntegration && config.programs.starship.enable) ''
if (and (not-eq $E:TERM "dumb") (or (not (has-env "INSIDE_EMACS")) (eq $E:INSIDE_EMACS "vterm"))) {
eval (${config.home.profileDirectory}/bin/starship init elvish)
}
'')
(mkIf cfg.zoxide ''
(mkIf (config.programs.zoxide.elvishIntegration && config.programs.zoxide.enable) ''
eval (${config.programs.zoxide.package}/bin/zoxide init elvish | slurp)
'')
(mkIf cfg.direnv ''
(mkIf (config.programs.direnv.elvishIntegration && config.programs.direnv.enable) ''
eval (${pkgs.direnv}/bin/direnv hook elvish | ${pkgs.gnused}/bin/sed 's/except/catch/' | slurp)
'')
];

View File

@ -91,18 +91,22 @@ in {
events = [
{
event = "before-sleep";
command = "${lockCommand}";
command = "${pkgs.systemd}/bin/loginctl lock-session";
}
{
event = "lock";
command = "${lockCommand}";
}
{
event = "unlock";
command = "${pkgs.procps}/bin/pkill -USR1 swaylock";
}
];
timeouts = [
{
timeout = cfg.screensaver.lockTime;
command = "${lockCommand}";
command = "${pkgs.systemd}/bin/loginctl lock-session";
}
{
timeout = cfg.screensaver.offTime;
@ -112,6 +116,81 @@ in {
];
};
wayland.windowManager.hyprland = {
enable = false;
systemdIntegration = true;
extraConfig = let
swayConfig = config.wayland.windowManager.sway.config;
swayBindings = swayConfig.keybindings;
swayToHyprlandBinding = key: binding: let
splitKey = lib.splitString "+" key;
isMod = m: m == "Mod4" || m == "Shift";
convertMod = m:
if m == "Mod4"
then "SUPER"
else lib.toUpper m;
mods = filter isMod splitKey;
modsStr = "${(lib.concatStringsSep "_" (map convertMod mods))},";
normalKeys = filter (m: isMod m == false) splitKey;
normalKey = lib.elemAt normalKeys 0;
convertedKey = "${modsStr}${normalKey}";
convertDir = dir: lib.elemAt (lib.stringToCharacters dir) 0;
splitBinding = lib.splitString " " binding;
bindingAction = lib.elemAt splitBinding 0;
newBinding =
if bindingAction == "exec"
then "exec, ${lib.concatStringsSep " " (lib.tail splitBinding)}"
else if bindingAction == "workspace"
then let n = lib.last splitBinding; in "workspace, ${n}"
else if bindingAction == "kill"
then "killactive,"
else if bindingAction == "focus"
then let
l = lib.last splitBinding;
in
if l == "mode_toggle"
then "togglefloating,"
else "movefocus,${convertDir l}"
else if bindingAction == "fullscreen"
then "fullscreen,0"
else if bindingAction == "floating"
then "togglefloating,"
else if bindingAction == "move"
then let
splitMove = lib.tail splitBinding;
moveThing = lib.elemAt splitMove 0;
toThing =
if lib.length splitMove >= 3
then lib.elemAt splitMove 2
else null;
in
if toThing == null
then "movewindow,${convertDir moveThing}"
else if moveThing == "container" && toThing == "workspace"
then "movetoworkspacesilent,${lib.last splitMove}"
else null
else null;
in
if newBinding == null
then "# ${key} - ${binding}"
else "bind=${convertedKey}, ${newBinding}";
convertedBindings = lib.concatStringsSep "\n" (lib.mapAttrsToList swayToHyprlandBinding swayBindings);
bindingsStr = "${convertedBindings}\n";
in ''
monitor=,preferred,auto,auto
gestures {
workspace_swipe = on
}
${convertedBindings}
'';
};
wayland.windowManager.sway = {
enable = lib.mkDefault true;

View File

@ -24,7 +24,10 @@ in {
config = mkIf cfg.enable {
boot.plymouth.enable = lib.mkDefault true;
boot.initrd.systemd.enable = lib.mkDefault true;
# as soon as this stops breaking _all_ my machines
boot.initrd.systemd.enable = lib.mkDefault false;
# until https://github.com/NixOS/nixpkgs/pull/199784 is merged
systemd.services.plymouth-start.restartIfChanged = false;
services.avahi = {
enable = lib.mkDefault true;