add new external flake to provide helper functions

This commit is contained in:
greyweather committed 2026-08-29 19:07:48 +01:00
1 parent 50bb736c51
commit 49985ce9a3
18 files changed
+73 -163

No files matched your search

Generated
+21
View File
@@ -180,6 +180,26 @@
"type": "gitlab" "type": "gitlab"
} }
}, },
"helpers": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1788016189,
"narHash": "sha256-O57BYyiEsgdQAluguEWMQtkog5puR2JjUx4+A1br7Q0=",
"ref": "refs/heads/main",
"rev": "6bb0221b270bf8a54c4efe646e8ec39d74e55f9f",
"revCount": 4,
"type": "git",
"url": "https://git.greyweather.dev/greyweather/nix-helper-flake"
},
"original": {
"type": "git",
"url": "https://git.greyweather.dev/greyweather/nix-helper-flake"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -315,6 +335,7 @@
"inputs": { "inputs": {
"firefox-addons": "firefox-addons", "firefox-addons": "firefox-addons",
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"helpers": "helpers",
"home-manager": "home-manager", "home-manager": "home-manager",
"import-tree": "import-tree", "import-tree": "import-tree",
"nh": "nh", "nh": "nh",
+5
View File
@@ -8,6 +8,11 @@
import-tree.url = "github:vic/import-tree"; import-tree.url = "github:vic/import-tree";
helpers = {
url = "git+https://git.greyweather.dev/greyweather/nix-helper-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
#nixpkgs-mesa-overlay.url = "github:nixos/nixpkgs/e4f9df8a27c2b4871c665368e65bdb6852dd93e6"; #nixpkgs-mesa-overlay.url = "github:nixos/nixpkgs/e4f9df8a27c2b4871c665368e65bdb6852dd93e6";
home-manager = { home-manager = {
+6 -6
View File
@@ -9,14 +9,14 @@
home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) ({ lib, config, ... }: { home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) ({ lib, config, ... }: {
home.activation = { home.activation = {
symlinkNoctaliaState = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { symlinkNoctaliaState = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript {
target = ".local/state/noctalia/settings.toml"; target = "${config.users.grey.homeDir}/.local/state/noctalia/settings.toml";
source = "dotfiles/${config.info.hostName}/noctalia/settings.toml"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/noctalia/settings.toml";
}); });
symlinkNoctaliaStatePlugins = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { symlinkNoctaliaStatePlugins = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript {
target = ".local/state/noctalia/plugins"; target = "${config.users.grey.homeDir}/.local/state/noctalia/plugins";
source = "dotfiles/${config.info.hostName}/noctalia/plugins"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/noctalia/plugins";
isDir = true; isDir = true;
}); });
}; };
+3 -3
View File
@@ -38,9 +38,9 @@
}; };
home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) ({ lib, config, ... }: { home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) ({ lib, config, ... }: {
home.activation.symlinkNiriConfig = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { home.activation.symlinkNiriConfig = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript {
target = ".config/niri/config.kdl"; target = "${config.users.grey.homeDir}/.config/niri/config.kdl";
source = "dotfiles/${config.info.hostName}/niri.kdl"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/niri.kdl";
}); });
}); });
}; };
@@ -2,13 +2,7 @@
flake.nixosModules.global = { pkgs, lib, config, ... }: { flake.nixosModules.global = { pkgs, lib, config, ... }: {
options.features.applications.cli.fastfetch.enable = lib.mkEnableOption "fastfetch"; options.features.applications.cli.fastfetch.enable = lib.mkEnableOption "fastfetch";
config = let config = lib.mkIf (config.features.applications.cli.fastfetch.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) {
mkIfElse = with lib; p: yes: no:
mkMerge [
(mkIf p yes)
(mkIf (!p) no)
];
in lib.mkIf (config.features.applications.cli.fastfetch.enable) (mkIfElse (config.features.nixos.home-manager.enable) {
home-manager.users.grey.features.applications.cli.fastfetch.enable = lib.mkDefault true; home-manager.users.grey.features.applications.cli.fastfetch.enable = lib.mkDefault true;
} { } {
environment.systemPackages = [ pkgs.fastfetch ]; environment.systemPackages = [ pkgs.fastfetch ];
+10 -15
View File
@@ -2,12 +2,7 @@
flake.nixosModules.graphics = { pkgs, lib, config, ...}: { flake.nixosModules.graphics = { pkgs, lib, config, ...}: {
options.features.applications.gui.equibop.enable = lib.mkEnableOption "equibop"; options.features.applications.gui.equibop.enable = lib.mkEnableOption "equibop";
config = let config = lib.mkIf (config.features.applications.gui.equibop.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) {
mkIfElse = with lib; p: yes: no: mkMerge [
(mkIf p yes)
(mkIf (!p) no)
];
in lib.mkIf (config.features.applications.gui.equibop.enable) (mkIfElse (config.features.nixos.home-manager.enable) {
home-manager.users.grey.features.applications.gui.equibop.enable = lib.mkDefault true; home-manager.users.grey.features.applications.gui.equibop.enable = lib.mkDefault true;
} { } {
environment.systemPackages = [ pkgs.equibop ]; environment.systemPackages = [ pkgs.equibop ];
@@ -21,19 +16,19 @@
programs.equibop.enable = true; programs.equibop.enable = true;
home.activation = { home.activation = {
linkEquibopConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { linkEquibopConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript {
target = ".config/equibop/settings.json"; target = "${config.home.homeDirectory}/.config/equibop/settings.json";
source = "dotfiles/${config.info.hostName}/equibop/settings.json"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/equibop/settings.json";
}); });
linkEquibopConfigEquicordSettings = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { linkEquibopConfigEquicordSettings = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript {
target = ".config/equibop/settings/settings.json"; target = "${config.home.homeDirectory}/.config/equibop/settings/settings.json";
source = "dotfiles/${config.info.hostName}/equibop/equicord-settings.json"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/equibop/equicord-settings.json";
}); });
linkEquibopConfigQuickCss = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { linkEquibopConfigQuickCss = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript {
target = ".config/equibop/settings/quickCss.css"; target = "${config.home.homeDirectory}/.config/equibop/settings/quickCss.css";
source = "dotfiles/${config.info.hostName}/equibop/quickCss.css"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/equibop/quickCss.css";
}); });
}; };
}; };
+1 -6
View File
@@ -2,12 +2,7 @@
flake.nixosModules.graphics = { pkgs, lib, config, ... }: { flake.nixosModules.graphics = { pkgs, lib, config, ... }: {
options.features.applications.gui.floorp.enable = lib.mkEnableOption "floorp"; options.features.applications.gui.floorp.enable = lib.mkEnableOption "floorp";
config = let config = lib.mkIf (config.features.applications.gui.floorp.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) {
mkIfElse = with lib; p: yes: no: mkMerge [
(mkIf p yes)
(mkIf (!p) no)
];
in lib.mkIf (config.features.applications.gui.floorp.enable) (mkIfElse (config.features.nixos.home-manager.enable) {
home-manager.users.grey.features.applications.gui.floorp.enable = lib.mkDefault true; home-manager.users.grey.features.applications.gui.floorp.enable = lib.mkDefault true;
} { } {
environment.systemPackages = [ pkgs.floorp-bin ]; environment.systemPackages = [ pkgs.floorp-bin ];
+2 -7
View File
@@ -63,11 +63,6 @@
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
}; };
}; };
mkIfElse = with lib; p: yes: no:
mkMerge [
(mkIf p yes)
(mkIf (!p) no)
];
in { in {
flake.nixosModules.graphics = { pkgs, config, lib, ... }: { flake.nixosModules.graphics = { pkgs, config, lib, ... }: {
options.features.applications.gui = { options.features.applications.gui = {
@@ -75,13 +70,13 @@ in {
fluxer-canary.enable = lib.mkEnableOption "fluxer-canary"; fluxer-canary.enable = lib.mkEnableOption "fluxer-canary";
}; };
config = lib.mkIf (config.features.applications.gui.fluxer.enable) (mkIfElse (config.features.nixos.home-manager.enable) { config = lib.mkIf (config.features.applications.gui.fluxer.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) {
home-manager.users.grey.features.applications.gui.fluxer.enable = lib.mkDefault true; home-manager.users.grey.features.applications.gui.fluxer.enable = lib.mkDefault true;
} { } {
environment.systemPackages = [ environment.systemPackages = [
(pkgs.callPackage (fluxer-package) {}) (pkgs.callPackage (fluxer-package) {})
]; ];
}) // lib.mkIf (config.features.applications.gui.fluxer-canary.enable) (mkIfElse (config.features.nixos.home-manager.enable) { }) // lib.mkIf (config.features.applications.gui.fluxer-canary.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) {
home-manager.users.grey.features.applications.gui.fluxer-canary.enable = lib.mkDefault true; home-manager.users.grey.features.applications.gui.fluxer-canary.enable = lib.mkDefault true;
} { } {
environment.systemPackages = [ environment.systemPackages = [
+1 -5
View File
@@ -3,11 +3,7 @@
options.features.applications.gui.kitty.enable = lib.mkEnableOption "kitty"; options.features.applications.gui.kitty.enable = lib.mkEnableOption "kitty";
config = let config = let
mkIfElse = with lib; p: yes: no: mkMerge [ in lib.mkIf (config.features.applications.gui.kitty.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) {
(mkIf p yes)
(mkIf (!p) no)
];
in lib.mkIf (config.features.applications.gui.kitty.enable) (mkIfElse (config.features.nixos.home-manager.enable) {
home-manager.users.grey.features.applications.gui.kitty.enable = lib.mkDefault true; home-manager.users.grey.features.applications.gui.kitty.enable = lib.mkDefault true;
} { } {
environment.systemPackages = [ pkgs.kitty ]; environment.systemPackages = [ pkgs.kitty ];
+4 -10
View File
@@ -2,13 +2,7 @@
flake.nixosModules.graphics = { pkgs, config, lib, ... }: { flake.nixosModules.graphics = { pkgs, config, lib, ... }: {
options.features.applications.gui.remmina.enable = lib.mkEnableOption "remmina"; options.features.applications.gui.remmina.enable = lib.mkEnableOption "remmina";
config = let config = lib.mkIf (config.features.applications.gui.remmina.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) {
mkIfElse = with lib; p: yes: no:
mkMerge [
(mkIf p yes)
(mkIf (!p) no)
];
in lib.mkIf (config.features.applications.gui.remmina.enable) (mkIfElse (config.features.nixos.home-manager.enable) {
home-manager.users.grey.features.applications.gui.remmina.enable = lib.mkDefault true; home-manager.users.grey.features.applications.gui.remmina.enable = lib.mkDefault true;
} { } {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@@ -27,9 +21,9 @@
freerdp freerdp
]; ];
home.activation.linkRemminaPresets = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { home.activation.linkRemminaPresets = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript {
target = ".local/share/remmina"; target = "${config.home.homeDirectory}/.local/share/remmina";
source = "dotfiles/${config.info.hostName}/remmina"; source = "${config.info.rootPath}/dotfiles/${config.info.hostName}/remmina";
isDir = true; isDir = true;
}); });
}; };
@@ -5,13 +5,7 @@
spicetify.enable = lib.mkEnableOption "spicetify"; spicetify.enable = lib.mkEnableOption "spicetify";
}; };
config = let config = lib.mkIf (config.features.applications.gui.spotify.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) {
mkIfElse = with lib; p: yes: no:
mkMerge [
(mkIf p yes)
(mkIf (!p) no)
];
in lib.mkIf (config.features.applications.gui.spotify.enable) (mkIfElse (config.features.nixos.home-manager.enable) {
home-manager.users.grey.features.applications.gui.spotify = { home-manager.users.grey.features.applications.gui.spotify = {
enable = lib.mkDefault true; enable = lib.mkDefault true;
spicetify.enable = lib.mkDefault config.features.applications.gui.spotify.spicetify.enable; spicetify.enable = lib.mkDefault config.features.applications.gui.spotify.spicetify.enable;
+7 -12
View File
@@ -2,12 +2,7 @@
flake.nixosModules.graphics = { config, pkgs, lib, ... }: { flake.nixosModules.graphics = { config, pkgs, lib, ... }: {
options.features.applications.gui.vscode.enable = lib.mkEnableOption "vscode"; options.features.applications.gui.vscode.enable = lib.mkEnableOption "vscode";
config = let config = lib.mkIf (config.features.applications.gui.vscode.enable) (inputs.helpers.mkIfElse (config.features.nixos.home-manager.enable) {
mkIfElse = with lib; p: yes: no: mkMerge [
(mkIf p yes)
(mkIf (!p) no)
];
in lib.mkIf (config.features.applications.gui.vscode.enable) (mkIfElse (config.features.nixos.home-manager.enable) {
home-manager.users.grey.features.applications.gui.vscode.enable = lib.mkDefault true; home-manager.users.grey.features.applications.gui.vscode.enable = lib.mkDefault true;
} { } {
environment.systemPackages = [ pkgs.vscode ]; environment.systemPackages = [ pkgs.vscode ];
@@ -21,14 +16,14 @@
home.packages = [ pkgs.vscode ]; home.packages = [ pkgs.vscode ];
home.activation = { home.activation = {
linkVsCodeConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { linkVsCodeConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript {
target = ".config/Code/User/settings.json"; target = "${config.home.homeDirectory}/.config/Code/User/settings.json";
source = "dotfiles/global/vscode/settings.json"; source = "${config.info.rootPath}/dotfiles/global/vscode/settings.json";
}); });
linkVsCodeConfigKeybindings = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { linkVsCodeConfigKeybindings = lib.hm.dag.entryAfter ["writeBoundary"] (inputs.helpers.mkSymlinkActivationScript {
target = ".config/Code/User/keybindings.json"; target = "${config.home.homeDirectory}/.config/Code/User/keybindings.json";
source = "dotfiles/global/vscode/keybindings.json"; source = "${config.info.rootPath}/dotfiles/global/vscode/keybindings.json";
}); });
}; };
}; };
+1 -6
View File
@@ -6,12 +6,7 @@
options.features.nixos.stylix.enable = lib.mkEnableOption "stylix"; options.features.nixos.stylix.enable = lib.mkEnableOption "stylix";
config = let config = lib.mkIf (config.features.nixos.stylix.enable) {
mkIfElse = with lib; p: yes: no: mkMerge [
(mkIf p yes)
(mkIf (!p) no)
];
in lib.mkIf (config.features.nixos.stylix.enable) {
stylix.enable = true; stylix.enable = true;
stylix.image = builtins.path { path = "${self}/modules/hosts/${config.info.hostName}/wallpaper.jpg"; }; stylix.image = builtins.path { path = "${self}/modules/hosts/${config.info.hostName}/wallpaper.jpg"; };
stylix.polarity = "dark"; stylix.polarity = "dark";
-69
View File
@@ -1,69 +0,0 @@
{ inputs, self, ... }: {
flake.nixosModules.global = { pkgs, config, lib, ... }: {
options.helpers = {
typeOf = lib.mkOption {
type = lib.types.functionTo lib.types.str;
default = value: (
if builtins.isAttrs value then "attrs" else (
if builtins.isBool value then "bool" else (
if builtins.isFloat value then "float" else (
if builtins.isFunction value then "function" else (
if builtins.isInt value then "int" else (
if builtins.isList value then "list" else (
if builtins.isPath value then "path" else (
if builtins.isString value then "str" else ""
)
)
)
)
)
)
)
);
readOnly = true;
};
attrByStrPath = lib.mkOption {
default = strPath: set:
lib.attrsets.attrByPath (lib.strings.splitString "." strPath) null set;
readOnly = true;
};
homeManagerInheritEnableOptionElse = lib.mkOption {
# type = lib.types.functionTo lib.types.attrs;
default = optionName: systemAttrs: let
mkIfElse = with lib; p: yes: no: mkMerge [
(mkIf p yes)
(mkIf (!p) no)
];
attrByStrPath = strPath: set:
lib.attrsets.attrByPath (lib.strings.splitString "." strPath) null set;
setAttrByStrPath = strPath: value:
lib.attrsets.setAttrByPath (lib.strings.splitString "." strPath) value;
in builtins.trace "hi" lib.mkIf (attrByStrPath optionName config) (mkIfElse (config.features.nixos.home-manager.enable) {
home-manager.sharedModules = [
({ lib, ... }: (setAttrByStrPath optionName (lib.mkDefault true)))
];
} (systemAttrs));
readOnly = true;
};
};
};
flake.homeModules.global = { pkgs, config, lib, ... }: {
options.helpers = {
mkSymlinkActivationScript = lib.mkOption {
type = lib.types.functionTo lib.types.str;
default = {target, source, isDir ? false}: ''
if [ ${if isDir then "-d" else "-f"} /home/grey/${target} ]; then
rm${if isDir then " -rf" else ""} /home/grey/${target}
fi
ln -s ${config.info.rootPath}/${source} /home/grey/${target}
'';
readOnly = true;
};
};
};
}
@@ -83,8 +83,12 @@
}; };
home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) { home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) {
info.isStandalone = lib.mkDefault false; info = {
# home.stateVersion = lib.mkDefault config.info.stateVersion; rootPath = lib.mkDefault config.info.rootPath;
hostName = lib.mkDefault config.info.hostName;
stateVersion = lib.mkDefault config.info.stateVersion;
isStandalone = lib.mkDefault false;
};
}; };
}; };
} }
-5
View File
@@ -96,11 +96,6 @@
graphics graphics
]; ];
info = {
hostName = "kitagawa";
stateVersion = "26.05";
};
features = { features = {
applications = { applications = {
extraPackages = with pkgs; [ extraPackages = with pkgs; [
+2 -1
View File
@@ -1,7 +1,8 @@
{ inputs, self, ... }: { { inputs, self, ... }: {
flake.homeModules.takamaki = { config, pkgs, ... }: { flake.homeModules.takamaki = { config, pkgs, ... }: {
programs.zsh.shellAliases = { programs.zsh.shellAliases = {
apply-config = "zsh -c 'cd /home/grey/flake; git add .; home-manager switch --flake .#takamaki -b bak'"; apply-config = "zsh -c 'cd ${config.info.rootPath}; git add .; home-manager switch --flake .#takamaki -b bak'";
update-config = "zsh -c 'cd ${config.info.rootPath}; git add .; nix flake update; home-manager switch --flake .#takamaki -b bak'";
}; };
}; };
} }
+2 -2
View File
@@ -60,7 +60,7 @@
WRITTEN=$(echo $RESULT | grep -oP "Writing.+\(\K\d{1,3}\)" | sed 's/)//') WRITTEN=$(echo $RESULT | grep -oP "Writing.+\(\K\d{1,3}\)" | sed 's/)//')
CONTROL=$(echo $RESULT | grep -oP "Control.+\+/\K\d{1,3}/100" | sed 's/\/100//') CONTROL=$(echo $RESULT | grep -oP "Control.+\+/\K\d{1,3}/100" | sed 's/\/100//')
LOOP_COUNTER=$(($LOOP_COUNTER + 1)) LOOP_COUNTER=$(($LOOP_COUNTER + 1))
[[ "$WRITTEN" != "$CONTROL" ]] && [ $LOOP_COUNTER -lt 10 ] [[ "$WRITTEN" != "$CONTROL" ]] && [ $LOOP_COUNTER -lt 5 ]
do true; done do true; done
noctalia msg notification-show "Set brightness to $WRITTEN for display $PRETTY_NAME" noctalia msg notification-show "Set brightness to $WRITTEN for display $PRETTY_NAME"
@@ -74,7 +74,7 @@
WRITTEN=$(echo $RESULT | grep -oP "Writing.+\(\K\d{1,3}\)" | sed 's/)//') WRITTEN=$(echo $RESULT | grep -oP "Writing.+\(\K\d{1,3}\)" | sed 's/)//')
CONTROL=$(echo $RESULT | grep -oP "Control.+\+/\K\d{1,3}/100" | sed 's/\/100//') CONTROL=$(echo $RESULT | grep -oP "Control.+\+/\K\d{1,3}/100" | sed 's/\/100//')
LOOP_COUNTER=$(($LOOP_COUNTER + 1)) LOOP_COUNTER=$(($LOOP_COUNTER + 1))
[[ "$WRITTEN" != "$CONTROL" ]] && [ $LOOP_COUNTER -lt 10 ] [[ "$WRITTEN" != "$CONTROL" ]] && [ $LOOP_COUNTER -lt 5 ]
do true; done do true; done
noctalia msg notification-show "Set brightness to $WRITTEN for display $PRETTY_NAME" noctalia msg notification-show "Set brightness to $WRITTEN for display $PRETTY_NAME"