Format code with alejandra

This commit is contained in:
Julian Mutter 2025-04-28 22:17:11 +02:00
parent 7d17c52192
commit 68da077c72
90 changed files with 502 additions and 691 deletions

217
flake.nix
View File

@ -56,20 +56,18 @@
}; };
}; };
outputs = outputs = {
{ self,
self, nixpkgs,
nixpkgs, home-manager,
home-manager, systems,
systems, ...
... } @ inputs: let
}@inputs: inherit (self) outputs;
let lib = nixpkgs.lib // home-manager.lib;
inherit (self) outputs; forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
lib = nixpkgs.lib // home-manager.lib; pkgsFor = lib.genAttrs (import systems) (
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system}); system:
pkgsFor = lib.genAttrs (import systems) (
system:
import nixpkgs { import nixpkgs {
inherit system; inherit system;
config.allowUnfree = true; config.allowUnfree = true;
@ -78,111 +76,110 @@
]; ];
warn-dirty = false; warn-dirty = false;
} }
); );
in in {
{ inherit lib;
inherit lib;
nixosModules = import ./modules/nixos; nixosModules = import ./modules/nixos;
homeManagerModules = import ./modules/home-manager; homeManagerModules = import ./modules/home-manager;
overlays = import ./overlays { inherit inputs outputs; }; overlays = import ./overlays {inherit inputs outputs;};
# hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here? # hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here?
packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; }); packages = forEachSystem (pkgs: import ./pkgs {inherit pkgs;});
devShells = forEachSystem (pkgs: import ./shell.nix { inherit pkgs; }); devShells = forEachSystem (pkgs: import ./shell.nix {inherit pkgs;});
formatter = forEachSystem (pkgs: pkgs.alejandra); formatter = forEachSystem (pkgs: pkgs.alejandra);
nixosConfigurations = { nixosConfigurations = {
# Main laptop # Main laptop
aspi = lib.nixosSystem { aspi = lib.nixosSystem {
modules = [ ./hosts/aspi ]; modules = [./hosts/aspi];
specialArgs = { specialArgs = {
inherit inputs outputs; inherit inputs outputs;
};
};
# Piano raspberry pi
pianonix = lib.nixosSystem {
modules = [ ./hosts/pianonix ];
specialArgs = {
inherit inputs outputs;
};
};
kardorf = lib.nixosSystem {
modules = [ ./hosts/pianonix ];
specialArgs = {
inherit inputs outputs;
};
}; };
}; };
# Piano raspberry pi
# Standalone HM pianonix = lib.nixosSystem {
homeConfigurations = { modules = [./hosts/pianonix];
# Main laptop specialArgs = {
"julian@aspi" = lib.homeManagerConfiguration { inherit inputs outputs;
modules = [
./homes/julian/aspi.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Media server (RPi)
"julian@pianonix" = lib.homeManagerConfiguration {
modules = [
./homes/julian/pianonix.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@kardorf" = lib.homeManagerConfiguration {
modules = [
./homes/julian/kardorf.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@v3ms" = lib.homeManagerConfiguration {
modules = [
./homes/julian/v3ms
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
}; };
}; };
kardorf = lib.nixosSystem {
# deploy-rs node configuration modules = [./hosts/pianonix];
deploy.nodes = { specialArgs = {
pianonix = { inherit inputs outputs;
hostname = "pianonix.local";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pianonix;
confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
};
};
builder = {
hostname = "builder.julian-mutter.de";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
remoteBuild = true;
};
}; };
}; };
}; };
# Standalone HM
homeConfigurations = {
# Main laptop
"julian@aspi" = lib.homeManagerConfiguration {
modules = [
./homes/julian/aspi.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.x86_64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
# Media server (RPi)
"julian@pianonix" = lib.homeManagerConfiguration {
modules = [
./homes/julian/pianonix.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@kardorf" = lib.homeManagerConfiguration {
modules = [
./homes/julian/kardorf.nix
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
"julian@v3ms" = lib.homeManagerConfiguration {
modules = [
./homes/julian/v3ms
./homes/julian/hm-standalone-config.nix
];
pkgs = pkgsFor.aarch64-linux;
extraSpecialArgs = {
inherit inputs outputs;
};
};
};
# deploy-rs node configuration
deploy.nodes = {
pianonix = {
hostname = "pianonix.local";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pianonix;
confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
};
};
builder = {
hostname = "builder.julian-mutter.de";
profiles.system = {
sshUser = "root";
user = "root";
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
remoteBuild = true;
};
};
};
};
} }

View File

@ -20,11 +20,9 @@
./features/suites/cli ./features/suites/cli
./features/suites/desktop ./features/suites/desktop
./features/suites/development ./features/suites/development
]; ];
hostName = "aspi"; hostName = "aspi";
is-nixos = true; is-nixos = true;
terminal = "kitty"; terminal = "kitty";
} }

View File

@ -4,10 +4,8 @@
inputs, inputs,
config, config,
... ...
}: }: {
home.packages = with pkgs; [alacritty];
{
home.packages = with pkgs; [ alacritty ];
home.file = { home.file = {
".config/alacritty/theme".source = "${inputs.alacritty-theme}"; ".config/alacritty/theme".source = "${inputs.alacritty-theme}";

View File

@ -3,13 +3,11 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let inherit (inputs.nix-colors.lib-contrib {inherit pkgs;}) gtkThemeFromScheme;
inherit (inputs.nix-colors.lib-contrib { inherit pkgs; }) gtkThemeFromScheme; in {
in
{
# Do not make conditional, just toggle things on and off # Do not make conditional, just toggle things on and off
imports = [ inputs.nix-colors.homeManagerModules.default ]; # TODO: what does this do imports = [inputs.nix-colors.homeManagerModules.default]; # TODO: what does this do
# home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark"; # home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark";
gtk = { gtk = {
@ -29,6 +27,5 @@ in
name = "macOS-BigSur"; name = "macOS-BigSur";
size = 24; size = 24;
}; };
}; };
} }

View File

@ -4,24 +4,19 @@
config, config,
... ...
}: }:
with lib; let
with lib;
let
doomRepoUrl = "https://github.com/doomemacs/doomemacs"; doomRepoUrl = "https://github.com/doomemacs/doomemacs";
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config"; configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
in in {
{ home.sessionPath = ["/home/julian/.config/emacs/bin"];
home.sessionPath = [ "/home/julian/.config/emacs/bin" ];
home.packages = home.packages = with pkgs;
with pkgs;
[ [
binutils # native-comp needs 'as', provided by this binutils # native-comp needs 'as', provided by this
## Doom dependencies ## Doom dependencies
git git
(ripgrep.override { withPCRE2 = true; }) (ripgrep.override {withPCRE2 = true;})
## Optional dependencies ## Optional dependencies
fd # faster projectile indexing fd # faster projectile indexing
@ -30,12 +25,13 @@ in
## Module dependencies ## Module dependencies
(aspellWithDicts ( (aspellWithDicts (
ds: with ds; [ ds:
en with ds; [
en-computers en
en-science en-computers
de en-science
] de
]
)) ))
hunspell hunspell
@ -46,6 +42,8 @@ in
# Code formatters for use with doom emacs # Code formatters for use with doom emacs
nixfmt-rfc-style # nix nixfmt-rfc-style # nix
alejandra # nix
nixd # nix lsp nixd # nix lsp
dockfmt # docker dockfmt # docker
google-java-format # java google-java-format # java
@ -64,7 +62,7 @@ in
] ]
++ lib.optional config.is-nixos emacs; ++ lib.optional config.is-nixos emacs;
home.activation.installDoomEmacs = lib.hm.dag.entryAfter [ "writeBoundary" ] '' home.activation.installDoomEmacs = lib.hm.dag.entryAfter ["writeBoundary"] ''
if [ ! -d "/home/julian/.config/emacs" ]; then if [ ! -d "/home/julian/.config/emacs" ]; then
$DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "${doomRepoUrl}" "/home/julian/.config/emacs" $DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "${doomRepoUrl}" "/home/julian/.config/emacs"
fi fi

View File

@ -3,10 +3,7 @@
pkgs, pkgs,
... ...
}: }:
with lib; {
with lib;
{
home.file = { home.file = {
".config/starship.toml".source = ./starship.toml; ".config/starship.toml".source = ./starship.toml;
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish; ".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;

View File

@ -4,10 +4,7 @@
config, config,
... ...
}: }:
with lib; {
with lib;
{
fonts.fontconfig.enable = true; # required to autoload fonts from packages fonts.fontconfig.enable = true; # required to autoload fonts from packages
home.packages = with pkgs; [ home.packages = with pkgs; [
nerd-fonts.fira-code nerd-fonts.fira-code

View File

@ -9,6 +9,5 @@
settings = { settings = {
general.adjustment-method = "wayland"; general.adjustment-method = "wayland";
}; };
}; };
} }

View File

@ -4,14 +4,12 @@
config, config,
lib, lib,
... ...
}: }: let
inherit
let (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette palette
; ;
in in {
{
imports = [ imports = [
# inputs.hyprland.homeManagerModules.default # inputs.hyprland.homeManagerModules.default
./waybar ./waybar
@ -30,7 +28,7 @@ in
]; ];
xdg.portal = { xdg.portal = {
extraPortals = [ pkgs.xdg-desktop-portal-wlr ]; extraPortals = [pkgs.xdg-desktop-portal-wlr];
config.hyprland = { config.hyprland = {
default = [ default = [
"wlr" "wlr"
@ -147,7 +145,7 @@ in
monitor = ",preferred,auto,auto"; monitor = ",preferred,auto,auto";
# Autostart # Autostart
exec-once = [ "firefox" ]; exec-once = ["firefox"];
# Look and Feel # Look and Feel
general = { general = {
@ -356,26 +354,26 @@ in
"$mod CTRL, 0, movetoworkspacesilent, 10" "$mod CTRL, 0, movetoworkspacesilent, 10"
] ]
++ ++
# Screen lock # Screen lock
( (
let let
swaylock = lib.getExe config.programs.swaylock.package; swaylock = lib.getExe config.programs.swaylock.package;
in in
lib.optionals config.programs.swaylock.enable [ lib.optionals config.programs.swaylock.enable [
"$mod,TAB,exec,${swaylock} --daemonize" "$mod,TAB,exec,${swaylock} --daemonize"
] ]
) )
++ ++
# Notification manager # Notification manager
( (
let let
makoctl = lib.getExe' config.services.mako.package "makoctl"; makoctl = lib.getExe' config.services.mako.package "makoctl";
in in
lib.optionals config.services.mako.enable [ lib.optionals config.services.mako.enable [
"$mod,w,exec,${makoctl} dismiss" "$mod,w,exec,${makoctl} dismiss"
"$mod SHIFT,W,exec,${makoctl} restore" "$mod SHIFT,W,exec,${makoctl} restore"
] ]
); );
# plugin = { # plugin = {
# hyprbars = { # hyprbars = {

View File

@ -4,8 +4,7 @@
lib, lib,
outputs, outputs,
... ...
}: }: let
let
getHostname = x: lib.last (lib.splitString "@" x); getHostname = x: lib.last (lib.splitString "@" x);
# remoteColorschemes = lib.mapAttrs' (n: v: { # remoteColorschemes = lib.mapAttrs' (n: v: {
# name = getHostname n; # name = getHostname n;
@ -19,18 +18,17 @@ let
# Make sure it's using the same hyprland package as we are # Make sure it's using the same hyprland package as we are
hyprland = config.wayland.windowManager.hyprland.package; hyprland = config.wayland.windowManager.hyprland.package;
}).overrideAttrs }).overrideAttrs
(old: { (old: {
# Yeet the initialization notification (I hate it) # Yeet the initialization notification (I hate it)
postPatch = postPatch =
(old.postPatch or "") (old.postPatch or "")
+ '' + ''
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp ${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
''; '';
}); });
in in {
{
wayland.windowManager.hyprland = { wayland.windowManager.hyprland = {
plugins = [ hyprbars ]; plugins = [hyprbars];
settings = { settings = {
"plugin:hyprbars" = { "plugin:hyprbars" = {
bar_height = 25; bar_height = 25;
@ -40,25 +38,23 @@ in
# bar_text_size = config.fontProfiles.regular.size; # bar_text_size = config.fontProfiles.regular.size;
bar_part_of_window = true; bar_part_of_window = true;
bar_precedence_over_border = true; bar_precedence_over_border = true;
hyprbars-button = hyprbars-button = let
let closeAction = "hyprctl dispatch killactive";
closeAction = "hyprctl dispatch killactive";
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null''; isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
moveToSpecial = "hyprctl dispatch movetoworkspacesilent special"; moveToSpecial = "hyprctl dispatch movetoworkspacesilent special";
moveToActive = "hyprctl dispatch movetoworkspacesilent name:$(hyprctl -j activeworkspace | jq -re '.name')"; moveToActive = "hyprctl dispatch movetoworkspacesilent name:$(hyprctl -j activeworkspace | jq -re '.name')";
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}"; minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
maximizeAction = "hyprctl dispatch fullscreen 1"; maximizeAction = "hyprctl dispatch fullscreen 1";
in in [
[ # Red close button
# Red close button # "${rgb config.colorscheme.colors.red},12,,${closeAction}"
# "${rgb config.colorscheme.colors.red},12,,${closeAction}" # # Yellow "minimize" (send to special workspace) button
# # Yellow "minimize" (send to special workspace) button # "${rgb config.colorscheme.colors.yellow},12,,${minimizeAction}"
# "${rgb config.colorscheme.colors.yellow},12,,${minimizeAction}" # # Green "maximize" (fullscreen) button
# # Green "maximize" (fullscreen) button # "${rgb config.colorscheme.colors.green},12,,${maximizeAction}"
# "${rgb config.colorscheme.colors.green},12,,${maximizeAction}" ];
];
}; };
# windowrulev2 = # windowrulev2 =

View File

@ -5,13 +5,12 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let inherit
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}) (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette palette
; ;
in in {
{
programs.hyprlock.enable = true; programs.hyprlock.enable = true;
programs.hyprlock.settings = { programs.hyprlock.settings = {
general = { general = {

View File

@ -5,14 +5,13 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let inherit
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}) (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette palette
; ;
in in {
{ home.packages = with pkgs; [libnotify];
home.packages = with pkgs; [ libnotify ];
services.mako = { services.mako = {
enable = true; enable = true;

View File

@ -3,8 +3,7 @@
lib, lib,
config, config,
... ...
}: }: let
let
swaylock = "${config.programs.swaylock.package}/bin/swaylock"; swaylock = "${config.programs.swaylock.package}/bin/swaylock";
pgrep = "${pkgs.procps}/bin/pgrep"; pgrep = "${pkgs.procps}/bin/pgrep";
pactl = "${pkgs.pulseaudio}/bin/pactl"; pactl = "${pkgs.pulseaudio}/bin/pactl";
@ -15,24 +14,21 @@ let
lockTime = 4 * 60; # TODO: configurable desktop (10 min)/laptop (4 min) lockTime = 4 * 60; # TODO: configurable desktop (10 min)/laptop (4 min)
# Makes two timeouts: one for when the screen is not locked (lockTime+timeout) and one for when it is. # Makes two timeouts: one for when the screen is not locked (lockTime+timeout) and one for when it is.
afterLockTimeout = afterLockTimeout = {
timeout,
command,
resumeCommand ? null,
}: [
{ {
timeout, timeout = lockTime + timeout;
command, inherit command resumeCommand;
resumeCommand ? null, }
}: {
[ command = "${isLocked} && ${command}";
{ inherit resumeCommand timeout;
timeout = lockTime + timeout; }
inherit command resumeCommand; ];
} in {
{
command = "${isLocked} && ${command}";
inherit resumeCommand timeout;
}
];
in
{
services.swayidle = { services.swayidle = {
enable = true; enable = true;
systemdTarget = "graphical-session.target"; systemdTarget = "graphical-session.target";
@ -45,18 +41,18 @@ in
} }
] ]
++ ++
# Turn off displays (hyprland) # Turn off displays (hyprland)
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout { (lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
timeout = 300; timeout = 300;
command = "${hyprctl} dispatch dpms off"; command = "${hyprctl} dispatch dpms off";
resumeCommand = "${hyprctl} dispatch dpms on"; resumeCommand = "${hyprctl} dispatch dpms on";
})) }))
++ ++
# Turn off displays (sway) # Turn off displays (sway)
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout { (lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
timeout = 300; timeout = 300;
command = "${swaymsg} 'output * dpms off'"; command = "${swaymsg} 'output * dpms off'";
resumeCommand = "${swaymsg} 'output * dpms on'"; resumeCommand = "${swaymsg} 'output * dpms on'";
})); }));
}; };
} }

View File

@ -2,11 +2,9 @@
config, config,
pkgs, pkgs,
... ...
}: }: let
let
inherit (config.colorscheme) colors; inherit (config.colorscheme) colors;
in in {
{
programs.swaylock = { programs.swaylock = {
enable = true; enable = true;
settings = { settings = {

View File

@ -5,11 +5,9 @@
lib, lib,
inputs, inputs,
... ...
}: }: let
let
palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette; palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette;
in in {
{
programs.waybar = { programs.waybar = {
enable = true; enable = true;
systemd.enable = true; systemd.enable = true;

View File

@ -3,9 +3,8 @@
lib, lib,
config, config,
... ...
}: }: {
{ home.packages = [pkgs.waypipe];
home.packages = [ pkgs.waypipe ];
systemd.user.services = { systemd.user.services = {
waypipe-client = { waypipe-client = {
Unit.Description = "Runs waypipe on startup to support SSH forwarding"; Unit.Description = "Runs waypipe on startup to support SSH forwarding";
@ -14,7 +13,7 @@
ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/client.sock client"; ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/client.sock client";
ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/client.sock"; ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/client.sock";
}; };
Install.WantedBy = [ "graphical-session.target" ]; Install.WantedBy = ["graphical-session.target"];
}; };
waypipe-server = { waypipe-server = {
Unit.Description = "Runs waypipe on startup to support SSH forwarding"; Unit.Description = "Runs waypipe on startup to support SSH forwarding";
@ -24,7 +23,7 @@
ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/server.sock --title-prefix '[%H] ' --login-shell --display wayland-waypipe server -- ${lib.getExe' pkgs.coreutils "sleep"} infinity"; ExecStart = "${lib.getExe (config.lib.nixGL.wrap pkgs.waypipe)} --socket %h/.waypipe/server.sock --title-prefix '[%H] ' --login-shell --display wayland-waypipe server -- ${lib.getExe' pkgs.coreutils "sleep"} infinity";
ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/server.sock %t/wayland-waypipe"; ExecStopPost = "${lib.getExe' pkgs.coreutils "rm"} -f %h/.waypipe/server.sock %t/wayland-waypipe";
}; };
Install.WantedBy = [ "default.target" ]; Install.WantedBy = ["default.target"];
}; };
}; };
} }

View File

@ -5,14 +5,13 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let inherit
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}) (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette palette
; ;
in in {
{ home.packages = with pkgs; [wlogout];
home.packages = with pkgs; [ wlogout ];
# xdg.configFile."wlogout/style.css".text = '' # xdg.configFile."wlogout/style.css".text = ''
# * { # * {

View File

@ -5,14 +5,13 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: let
let inherit
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}) (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
palette palette
; ;
in in {
{ home.packages = with pkgs; [wofi];
home.packages = with pkgs; [ wofi ];
xdg.configFile."wofi/config".source = ./config; xdg.configFile."wofi/config".source = ./config;
xdg.configFile."wofi/style.css".text = '' xdg.configFile."wofi/style.css".text = ''

View File

@ -1,8 +1,6 @@
{ config, ... }: {config, ...}: let
let
inherit (config.colorscheme) colors; inherit (config.colorscheme) colors;
in in {
{
programs.zathura = { programs.zathura = {
enable = true; enable = true;
options = { options = {

View File

@ -3,9 +3,8 @@
pkgs, pkgs,
config, config,
... ...
}: }: {
{ imports = [../rofi];
imports = [ ../rofi ];
services.dunst.enable = true; services.dunst.enable = true;
@ -32,11 +31,13 @@
package = pkgs.i3-gaps; package = pkgs.i3-gaps;
}; };
xsession.importedVariables = [ ]; xsession.importedVariables = [];
# Overwrite default home-manager config file # Overwrite default home-manager config file
xdg.configFile."i3/config".source = lib.mkForce ( xdg.configFile."i3/config".source = lib.mkForce (
if config.hostName == "kardorf" then ./i3/config-kardorf else ./i3/config if config.hostName == "kardorf"
then ./i3/config-kardorf
else ./i3/config
); );
home.file = { home.file = {
@ -48,5 +49,5 @@
".config/i3status-rust/config.toml".source = ./i3status-rust/config.toml; ".config/i3status-rust/config.toml".source = ./i3status-rust/config.toml;
}; };
home.sessionPath = [ "/home/julian/.config/i3/scripts" ]; home.sessionPath = ["/home/julian/.config/i3/scripts"];
} }

View File

@ -3,9 +3,7 @@
pkgs, pkgs,
config, config,
... ...
}: }: {
{
programs.kitty = { programs.kitty = {
enable = true; enable = true;
shellIntegration.enableFishIntegration = true; shellIntegration.enableFishIntegration = true;

View File

@ -3,11 +3,8 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: {
imports = [inputs.nixvim.homeManagerModules.nixvim];
{
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
home.sessionVariables = { home.sessionVariables = {
EDITOR = "nvim"; EDITOR = "nvim";
@ -39,7 +36,6 @@
opts = { opts = {
number = false; number = false;
relativenumber = false; relativenumber = false;
}; };
clipboard.register = "unnamedplus"; # Use system clipboard clipboard.register = "unnamedplus"; # Use system clipboard
@ -93,9 +89,9 @@
conform-nvim = { conform-nvim = {
enable = true; enable = true;
settings.formatters_by_ft = with pkgs; { settings.formatters_by_ft = with pkgs; {
lua = [ "stylua" ]; lua = ["stylua"];
python = [ "black" ]; python = ["black"];
nix = [ "nixfmt" ]; nix = ["nixfmt"];
}; };
# extraOptions = { # extraOptions = {
# default_format_opts.lsp_format = "fallback"; # default_format_opts.lsp_format = "fallback";
@ -107,9 +103,9 @@
enable = true; enable = true;
autoEnableSources = true; autoEnableSources = true;
settings.sources = [ settings.sources = [
{ name = "nvim_lsp"; } {name = "nvim_lsp";}
{ name = "path"; } {name = "path";}
{ name = "buffer"; } {name = "buffer";}
]; ];
settings.mapping = { settings.mapping = {
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; "<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
@ -157,8 +153,6 @@
lua_ls.enable = true; lua_ls.enable = true;
}; };
}; };
}; };
}; };
} }

View File

@ -2,9 +2,7 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
home.sessionVariables = { home.sessionVariables = {
FLAKE = "/home/julian/.dotfiles"; FLAKE = "/home/julian/.dotfiles";
}; };
@ -14,5 +12,5 @@
"hs" = "nh home switch"; "hs" = "nh home switch";
}; };
home.packages = with pkgs; [ nh ]; home.packages = with pkgs; [nh];
} }

View File

@ -2,13 +2,11 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
# this would need you to config rofi using home-manager # this would need you to config rofi using home-manager
# programs.rofi = { enable = true; }; # programs.rofi = { enable = true; };
home.packages = with pkgs; [ rofi ]; home.packages = with pkgs; [rofi];
home.file = { home.file = {
".config/rofi/config.rasi".source = ./config.rasi; ".config/rofi/config.rasi".source = ./config.rasi;

View File

@ -1,9 +1,4 @@
{ {pkgs, ...}: {
pkgs,
...
}:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
bat bat
du-dust # Like du tree but better du-dust # Like du tree but better

View File

@ -2,9 +2,7 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
services.blueman-applet.enable = true; services.blueman-applet.enable = true;
services.nextcloud-client.enable = true; services.nextcloud-client.enable = true;
services.nextcloud-client.startInBackground = true; services.nextcloud-client.startInBackground = true;
@ -17,7 +15,7 @@
enable = true; enable = true;
extensions = [ extensions = [
# Tampermonkey # Tampermonkey
{ id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"; } {id = "dhdgffkkebhmkfjojejmpbldmpobfkfo";}
]; ];
}; };

View File

@ -1,10 +1,4 @@
{ {pkgs, ...}: {
pkgs,
...
}:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
watchexec # Run command when any file in current dir changes watchexec # Run command when any file in current dir changes
android-tools # adb android-tools # adb
@ -29,7 +23,8 @@
julia-bin julia-bin
(texlive.combine { (texlive.combine {
# for rendering latex in inkscape # for rendering latex in inkscape
inherit (texlive) inherit
(texlive)
scheme-medium scheme-medium
standalone standalone
amsmath amsmath

View File

@ -7,8 +7,7 @@
misc.assume_yes = true; misc.assume_yes = true;
misc.no_retry = true; misc.no_retry = true;
pre_commands."Update flake" = pre_commands."Update flake" = "git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
"git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
linux.nix_arguments = "--flake /home/julian/.dotfiles"; linux.nix_arguments = "--flake /home/julian/.dotfiles";
linux.home_manager_arguments = [ linux.home_manager_arguments = [

View File

@ -3,9 +3,7 @@
pkgs, pkgs,
config, config,
... ...
}: }: {
{
programs.wezterm = { programs.wezterm = {
enable = true; enable = true;
extraConfig = '' extraConfig = ''

View File

@ -2,8 +2,7 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: {
{
programs.zoxide.enable = true; programs.zoxide.enable = true;
programs.zoxide.enableFishIntegration = true; programs.zoxide.enableFishIntegration = true;
@ -36,29 +35,29 @@
manager.prepend_keymap = [ manager.prepend_keymap = [
# Override defaults # Override defaults
{ {
on = [ "e" ]; on = ["e"];
run = ''shell --orphan --confirm "pcmanfm &"''; run = ''shell --orphan --confirm "pcmanfm &"'';
desc = "Open gui file manager"; desc = "Open gui file manager";
} }
{ {
on = [ "<C-o>" ]; on = ["<C-o>"];
run = ''shell "$SHELL" --block --confirm''; run = ''shell "$SHELL" --block --confirm'';
desc = "Open shell here"; desc = "Open shell here";
} }
{ {
on = [ "<C-n>" ]; on = ["<C-n>"];
run = ''shell 'dragon -x -i -T "$1"' --confirm''; run = ''shell 'dragon -x -i -T "$1"' --confirm'';
desc = "Dragndrop via dragon"; desc = "Dragndrop via dragon";
} }
{ {
on = [ "<Enter>" ]; on = ["<Enter>"];
run = "plugin --sync smart-enter"; run = "plugin --sync smart-enter";
desc = "Enter the child directory, or open the file"; desc = "Enter the child directory, or open the file";
} }
]; ];
input.prepend_keymap = [ input.prepend_keymap = [
{ {
on = [ "<Esc>" ]; on = ["<Esc>"];
run = "close"; run = "close";
desc = "Cancel input"; desc = "Cancel input";
} }

View File

@ -2,13 +2,12 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
home.file = { home.file = {
".config/starship.toml".source = ./starship.toml; ".config/starship.toml".source = ./starship.toml;
}; };
home.packages = with pkgs; [ starship ]; home.packages = with pkgs; [starship];
programs.starship = { programs.starship = {
enable = true; enable = true;
@ -28,14 +27,14 @@
enable = true; enable = true;
plugins = [ plugins = [
# list of plugins: https://github.com/unixorn/awesome-zsh-plugins # list of plugins: https://github.com/unixorn/awesome-zsh-plugins
{ name = "agkozak/zsh-z"; } {name = "agkozak/zsh-z";}
{ {
name = "zsh-users/zsh-completions"; name = "zsh-users/zsh-completions";
} }
# make it behave like fish # make it behave like fish
{ name = "zsh-users/zsh-autosuggestions"; } {name = "zsh-users/zsh-autosuggestions";}
{ name = "zsh-users/zsh-history-substring-search"; } {name = "zsh-users/zsh-history-substring-search";}
{ {
name = "zsh-users/zsh-syntax-highlighting"; name = "zsh-users/zsh-syntax-highlighting";
} # must be last sourced plugin } # must be last sourced plugin

View File

@ -5,13 +5,14 @@
config, config,
outputs, outputs,
... ...
}: }: {
{ imports =
imports = [ [
../features/fonts ../features/fonts
# ../features/cli # ../features/cli
# ../features/helix # ../features/helix
] ++ (builtins.attrValues outputs.homeManagerModules); ]
++ (builtins.attrValues outputs.homeManagerModules);
nix = { nix = {
package = lib.mkDefault pkgs.nix; package = lib.mkDefault pkgs.nix;
@ -39,7 +40,7 @@
homeDirectory = lib.mkDefault "/home/${config.home.username}"; homeDirectory = lib.mkDefault "/home/${config.home.username}";
stateVersion = lib.mkDefault "23.11"; stateVersion = lib.mkDefault "23.11";
sessionPath = [ "$HOME/.local/bin" ]; sessionPath = ["$HOME/.local/bin"];
}; };
# TODO: colorscheme # TODO: colorscheme
@ -51,5 +52,4 @@
# home.file = { # home.file = {
# ".colorscheme.json".text = builtins.toJSON config.colorscheme; # ".colorscheme.json".text = builtins.toJSON config.colorscheme;
# }; # };
} }

View File

@ -6,9 +6,11 @@
# inherit pkgs; # inherit pkgs;
# inherit lib; # inherit lib;
# }; # };
{
{ lib, pkgs, ... }: lib,
let pkgs,
...
}: let
package-names = with pkgs; { package-names = with pkgs; {
"x-scheme-handler/tg" = telegram-desktop; "x-scheme-handler/tg" = telegram-desktop;
"x-scheme-handler/mailto" = thunderbird; "x-scheme-handler/mailto" = thunderbird;
@ -40,6 +42,7 @@ let
"inode/directory" = pcmanfm; "inode/directory" = pcmanfm;
}; };
in in
lib.mapAttrs (mimeType: package: [ lib.mapAttrs (mimeType: package: [
"${package}/share/applications/${package.pname}.desktop" "${package}/share/applications/${package.pname}.desktop"
]) package-names ])
package-names

View File

@ -1,9 +1,5 @@
# Only apply this to home-manager standalone # Only apply this to home-manager standalone
{ {outputs, ...}: {
outputs,
...
}:
{
# Apply overlays # Apply overlays
nixpkgs = { nixpkgs = {
overlays = builtins.attrValues outputs.overlays; overlays = builtins.attrValues outputs.overlays;
@ -43,6 +39,5 @@
]; ];
# nix.settings. # warn-dirty = false; # TODO: do I want this # nix.settings. # warn-dirty = false; # TODO: do I want this
}; };
} }

View File

@ -17,11 +17,9 @@
./features/suites/cli ./features/suites/cli
./features/suites/desktop ./features/suites/desktop
./features/suites/development ./features/suites/development
]; ];
hostName = "kardorf"; hostName = "kardorf";
is-nixos = true; is-nixos = true;
terminal = "kitty"; terminal = "kitty";
} }

View File

@ -1,8 +1,4 @@
{ {pkgs, ...}: {
pkgs,
...
}:
{
imports = [ imports = [
./global ./global
@ -34,8 +30,7 @@
# Autostart link # Autostart link
home.file = { home.file = {
".config/autostart/sheet-organizer.desktop".source = ".config/autostart/sheet-organizer.desktop".source = "${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop";
"${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop";
".config/sheet-organizer/config.toml".text = '' ".config/sheet-organizer/config.toml".text = ''
working_directory = "/home/julian/Klavier" working_directory = "/home/julian/Klavier"
''; '';

View File

@ -2,8 +2,7 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
imports = [ imports = [
../global ../global
@ -21,9 +20,9 @@
# terminal = "kitty"; # terminal = "kitty";
home.packages = home.packages =
lib.lists.concatMap (packages-list-file: import packages-list-file { inherit pkgs; }) lib.lists.concatMap (packages-list-file: import packages-list-file {inherit pkgs;})
[ [
./fonts.nix ./fonts.nix
./packages.nix ./packages.nix
]; ];
} }

View File

@ -1,7 +1,5 @@
{ pkgs, ... }: {pkgs, ...}:
with pkgs; [
with pkgs;
[
nerd-fonts.fira-code nerd-fonts.fira-code
font-awesome font-awesome
dejavu_fonts dejavu_fonts

View File

@ -1,7 +1,5 @@
{ pkgs, ... }: {pkgs, ...}:
with pkgs; [
with pkgs;
[
# Rust setup # Rust setup
rustc rustc
rustfmt rustfmt

View File

@ -46,5 +46,4 @@
# Enable touchpad support # Enable touchpad support
services.libinput.enable = true; services.libinput.enable = true;
} }

View File

@ -2,9 +2,7 @@
config, config,
lib, lib,
... ...
}: }: {
{
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"vmd" "vmd"
"xhci_pci" "xhci_pci"
@ -14,11 +12,11 @@
"usbhid" "usbhid"
"sd_mod" "sd_mod"
]; ];
boot.initrd.kernelModules = [ "dm-snapshot" ]; boot.initrd.kernelModules = ["dm-snapshot"];
boot.kernelModules = [ "kvm-intel" ]; boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
boot.blacklistedKernelModules = [ "pcspkr" ]; # Disables "beep" boot.blacklistedKernelModules = ["pcspkr"]; # Disables "beep"
boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; boot.binfmt.emulatedSystems = ["aarch64-linux"];
boot.initrd.luks.devices = { boot.initrd.luks.devices = {
root = { root = {
@ -62,7 +60,7 @@
}; };
swapDevices = [ swapDevices = [
{ device = "/dev/disk/by-uuid/26140b4a-0579-406d-a484-35aa31b32e80"; } {device = "/dev/disk/by-uuid/26140b4a-0579-406d-a484-35aa31b32e80";}
]; ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking

View File

@ -1,9 +1,11 @@
# sudo nixos-rebuild switch --flake .#builder --target-host root@192.168.3.118 # sudo nixos-rebuild switch --flake .#builder --target-host root@192.168.3.118
# or # or
# deploy .#builder # deploy .#builder
{ config, pkgs, ... }:
{ {
config,
pkgs,
...
}: {
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
@ -31,7 +33,7 @@
boot.loader.grub.device = "/dev/sda"; boot.loader.grub.device = "/dev/sda";
# Emulated systems used as alternative to cross-compiling # Emulated systems used as alternative to cross-compiling
boot.binfmt.emulatedSystems = [ "aarch64-linux" ]; boot.binfmt.emulatedSystems = ["aarch64-linux"];
networking.hostName = "builder"; networking.hostName = "builder";
@ -61,16 +63,16 @@
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
"https://cache.nixos.org/" "https://cache.nixos.org/"
]; ];
trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ]; trusted-public-keys = ["nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="];
trusted-users = [ "nix" ]; trusted-users = ["nix"];
max-jobs = "auto"; max-jobs = "auto";
cores = 0; cores = 0;
}; };
# optimize store by hardlinking store files # optimize store by hardlinking store files
nix.optimise.automatic = true; nix.optimise.automatic = true;
nix.optimise.dates = [ "03:15" ]; nix.optimise.dates = ["03:15"];
# nix.gc.automatic = true; # nix.gc.automatic = true;
# nix.gc.dates = "daily"; # nix.gc.dates = "daily";
@ -209,8 +211,7 @@
}; };
virtualHosts."binarycache.julian-mutter.de" = { virtualHosts."binarycache.julian-mutter.de" = {
locations."/".proxyPass = locations."/".proxyPass = "http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
"http://${config.services.nix-serve.bindAddress}:${toString config.services.nix-serve.port}";
}; };
clientMaxBodySize = "2G"; clientMaxBodySize = "2G";
@ -225,7 +226,7 @@
url = "https://gitlab.julian-mutter.de"; url = "https://gitlab.julian-mutter.de";
name = "builder"; name = "builder";
tokenFile = config.sops.secrets."gitea_token".path; tokenFile = config.sops.secrets."gitea_token".path;
labels = [ ]; # use default labels labels = []; # use default labels
}; };
virtualisation.docker.enable = true; virtualisation.docker.enable = true;
@ -257,7 +258,7 @@
settings = { settings = {
listen = "[::]:8080"; listen = "[::]:8080";
jwt = { }; jwt = {};
# Data chunking # Data chunking
# #

View File

@ -7,10 +7,8 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
imports = [(modulesPath + "/profiles/qemu-guest.nix")];
{
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"ata_piix" "ata_piix"
@ -21,8 +19,8 @@
"sr_mod" "sr_mod"
]; ];
# boot.initrd.kernelModules = [ "amdgpu" ]; # GPU support # boot.initrd.kernelModules = [ "amdgpu" ]; # GPU support
boot.kernelModules = [ ]; boot.kernelModules = [];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-uuid/f088fe8e-bf3d-4a89-98bd-ead9852d381f"; device = "/dev/disk/by-uuid/f088fe8e-bf3d-4a89-98bd-ead9852d381f";

View File

@ -1,11 +1,9 @@
# Common config for all hosts # Common config for all hosts
{ {
inputs, inputs,
outputs, outputs,
... ...
}: }: {
{
imports = imports =
[ [
./fish.nix # fish for admin ./fish.nix # fish for admin
@ -34,5 +32,4 @@
home-manager.extraSpecialArgs = { home-manager.extraSpecialArgs = {
inherit inputs outputs; inherit inputs outputs;
}; };
} }

View File

@ -2,9 +2,7 @@
lib, lib,
outputs, outputs,
... ...
}: }: {
{
# Apply overlays # Apply overlays
nixpkgs = { nixpkgs = {
# TODO: apply this to hm and nixos without duplicate code # TODO: apply this to hm and nixos without duplicate code
@ -61,5 +59,4 @@
# Add each flake input as a registry and nix_path # Add each flake input as a registry and nix_path
# registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs; # registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
# nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs; # nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
} }

View File

@ -1,6 +1,4 @@
{ pkgs, ... }: {pkgs, ...}: {
{
# Packages needed as root # Packages needed as root
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vim vim

View File

@ -2,14 +2,12 @@
inputs, inputs,
config, config,
... ...
}: }: let
let
isEd25519 = k: k.type == "ed25519"; isEd25519 = k: k.type == "ed25519";
getKeyPath = k: k.path; getKeyPath = k: k.path;
keys = builtins.filter isEd25519 config.services.openssh.hostKeys; keys = builtins.filter isEd25519 config.services.openssh.hostKeys;
in in {
{ imports = [inputs.sops-nix.nixosModules.sops];
imports = [ inputs.sops-nix.nixosModules.sops ];
sops.age = { sops.age = {
sshKeyPaths = map getKeyPath keys; sshKeyPaths = map getKeyPath keys;
@ -18,7 +16,6 @@ in
keyFile = "/home/julian/.config/sops/age/keys.txt"; keyFile = "/home/julian/.config/sops/age/keys.txt";
# Generate key if none of the above worked. With this, building will still work, just without secrets # Generate key if none of the above worked. With this, building will still work, just without secrets
generateKey = true; generateKey = true;
}; };
sops.defaultSopsFile = ../secrets.yaml; sops.defaultSopsFile = ../secrets.yaml;

View File

@ -1,5 +1,4 @@
{ pkgs, ... }: {pkgs, ...}: {
{
# Make programs like nextcloud client access saved passwords # Make programs like nextcloud client access saved passwords
programs.seahorse.enable = true; programs.seahorse.enable = true;
services.gnome.gnome-keyring.enable = true; services.gnome.gnome-keyring.enable = true;
@ -9,9 +8,9 @@
systemd = { systemd = {
user.services.polkit-gnome-authentication-agent-1 = { user.services.polkit-gnome-authentication-agent-1 = {
description = "polkit-gnome-authentication-agent-1"; description = "polkit-gnome-authentication-agent-1";
wantedBy = [ "graphical-session.target" ]; wantedBy = ["graphical-session.target"];
wants = [ "graphical-session.target" ]; wants = ["graphical-session.target"];
after = [ "graphical-session.target" ]; after = ["graphical-session.target"];
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";

View File

@ -1,10 +1,6 @@
{ {pkgs, ...}: {
pkgs,
...
}:
{
services.flatpak.enable = true; services.flatpak.enable = true;
xdg.portal.enable = true; xdg.portal.enable = true;
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
xdg.portal.config.common.default = "*"; # Use first portal implementation found xdg.portal.config.common.default = "*"; # Use first portal implementation found
} }

View File

@ -1,6 +1,4 @@
{ pkgs, ... }: {pkgs, ...}: {
{
programs.gamemode = { programs.gamemode = {
enable = true; enable = true;
settings = { settings = {
@ -20,5 +18,4 @@
}; };
}; };
}; };
} }

View File

@ -3,10 +3,7 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
services.xserver.displayManager.gdm = { services.xserver.displayManager.gdm = {
enable = true; enable = true;
}; };

View File

@ -3,26 +3,22 @@
lib, lib,
config, config,
... ...
}: }: let
let
homeCfgs = config.home-manager.users; homeCfgs = config.home-manager.users;
homeSharePaths = lib.mapAttrsToList (_: v: "${v.home.path}/share") homeCfgs; homeSharePaths = lib.mapAttrsToList (_: v: "${v.home.path}/share") homeCfgs;
vars = ''XDG_DATA_DIRS="$XDG_DATA_DIRS:${lib.concatStringsSep ":" homeSharePaths}" GTK_USE_PORTAL=0''; vars = ''XDG_DATA_DIRS="$XDG_DATA_DIRS:${lib.concatStringsSep ":" homeSharePaths}" GTK_USE_PORTAL=0'';
julianCfg = homeCfgs.julian; julianCfg = homeCfgs.julian;
sway-kiosk = sway-kiosk = command: "${lib.getExe pkgs.sway} --unsupported-gpu --config ${pkgs.writeText "kiosk.config" ''
command: output * bg #000000 solid_color
"${lib.getExe pkgs.sway} --unsupported-gpu --config ${pkgs.writeText "kiosk.config" '' xwayland disable
output * bg #000000 solid_color input "type:touchpad" {
xwayland disable tap enabled
input "type:touchpad" { }
tap enabled exec '${vars} ${command}; ${pkgs.sway}/bin/swaymsg exit'
} ''}";
exec '${vars} ${command}; ${pkgs.sway}/bin/swaymsg exit' in {
''}";
in
{
users.extraUsers.greeter = { users.extraUsers.greeter = {
# For caching and such # For caching and such
home = "/tmp/greeter-home"; home = "/tmp/greeter-home";

View File

@ -4,13 +4,10 @@
pkgs, pkgs,
inputs, inputs,
... ...
}: }: {
{
programs.hyprland.enable = true; programs.hyprland.enable = true;
programs.hyprland.package = inputs.hyprland.packages.${pkgs.system}.hyprland; # does only work with nixos-unstable programs.hyprland.package = inputs.hyprland.packages.${pkgs.system}.hyprland; # does only work with nixos-unstable
programs.hyprland.xwayland.enable = true; programs.hyprland.xwayland.enable = true;
security.pam.services.hyprlock = { }; security.pam.services.hyprlock = {};
services.displayManager.defaultSession = "hyprland"; services.displayManager.defaultSession = "hyprland";
} }

View File

@ -3,8 +3,7 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
services.xserver.windowManager.i3.enable = true; services.xserver.windowManager.i3.enable = true;
services.xserver.windowManager.i3.package = pkgs.i3-gaps; services.xserver.windowManager.i3.package = pkgs.i3-gaps;
services.displayManager.defaultSession = "none+i3"; services.displayManager.defaultSession = "none+i3";

View File

@ -1,5 +1,4 @@
{ {
security.krb5.enable = true; security.krb5.enable = true;
security.krb5.settings = { security.krb5.settings = {
# domain_realm = { # domain_realm = {
@ -15,7 +14,7 @@
}; };
realms = { realms = {
"julian-mutter.de" = { "julian-mutter.de" = {
kdc = [ "kerberos.julian-mutter.de" ]; kdc = ["kerberos.julian-mutter.de"];
admin_server = "kerberos-admin.julian-mutter.de"; admin_server = "kerberos-admin.julian-mutter.de";
default_domain = "julian-mutter.de"; default_domain = "julian-mutter.de";
}; };

View File

@ -3,11 +3,9 @@
lib, lib,
config, config,
... ...
}: }: let
let
hosts = lib.attrNames outputs.nixosConfigurations; hosts = lib.attrNames outputs.nixosConfigurations;
in in {
{
services.openssh = { services.openssh = {
enable = true; enable = true;
settings = { settings = {
@ -48,5 +46,4 @@ in
# ]); # ]);
# }); # });
# }; # };
} }

View File

@ -1,8 +1,4 @@
{ {pkgs, ...}: {
pkgs,
...
}:
{
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
shared-mime-info # extended mimetype support shared-mime-info # extended mimetype support
lxde.lxmenu-data # open with "Installed Applications" lxde.lxmenu-data # open with "Installed Applications"

View File

@ -1,8 +1,6 @@
{ config, ... }: {config, ...}: let
let
dockerEnabled = config.virtualisation.docker.enable; dockerEnabled = config.virtualisation.docker.enable;
in in {
{
virtualisation.podman = { virtualisation.podman = {
enable = true; enable = true;
dockerCompat = !dockerEnabled; dockerCompat = !dockerEnabled;

View File

@ -3,10 +3,7 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
# Set location used by redshift # Set location used by redshift
location.provider = "manual"; location.provider = "manual";
location.latitude = 47.92; location.latitude = 47.92;

View File

@ -19,7 +19,7 @@
"big-parallel" "big-parallel"
"kvm" "kvm"
]; ];
mandatoryFeatures = [ ]; mandatoryFeatures = [];
} }
# { # {
# hostName = "localhost"; # hostName = "localhost";

View File

@ -3,10 +3,7 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
programs.thunar.enable = true; programs.thunar.enable = true;
programs.xfconf.enable = true; # Persist saved preferences programs.xfconf.enable = true; # Persist saved preferences
programs.thunar.plugins = with pkgs.xfce; [ programs.thunar.plugins = with pkgs.xfce; [

View File

@ -3,13 +3,10 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
virtualisation.virtualbox.host.enable = true; virtualisation.virtualbox.host.enable = true;
# virtualisation.virtualbox.host.enableExtensionPack = true; # virtualisation.virtualbox.host.enableExtensionPack = true;
# virtualisation.virtualbox.guest.enable = true; # virtualisation.virtualbox.guest.enable = true;
# virtualisation.virtualbox.guest.x11 = true; # virtualisation.virtualbox.guest.x11 = true;
users.extraGroups.vboxusers.members = [ "julian" ]; users.extraGroups.vboxusers.members = ["julian"];
} }

View File

@ -3,11 +3,9 @@
config, config,
lib, lib,
... ...
}: }: let
let
ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups; ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups;
in in {
{
users.mutableUsers = false; users.mutableUsers = false;
users.users.julian = { users.users.julian = {
description = "Julian"; description = "Julian";
@ -31,7 +29,7 @@ in
builtins.readFile ../../../../homes/julian/ssh.pub builtins.readFile ../../../../homes/julian/ssh.pub
); );
hashedPasswordFile = config.sops.secrets.julian-password.path; hashedPasswordFile = config.sops.secrets.julian-password.path;
packages = [ pkgs.home-manager ]; packages = [pkgs.home-manager];
}; };
users.groups.julian = { users.groups.julian = {
gid = 1000; gid = 1000;
@ -44,6 +42,5 @@ in
home-manager.users.julian = import ../../../../homes/julian/${config.networking.hostName}.nix; home-manager.users.julian = import ../../../../homes/julian/${config.networking.hostName}.nix;
security.pam.services.swaylock = { }; # Make swaylock unlocking work security.pam.services.swaylock = {}; # Make swaylock unlocking work
} }

View File

@ -1,8 +1,4 @@
{ {pkgs, ...}: {
pkgs,
...
}:
{
imports = [ imports = [
./hardware-configuration.nix ./hardware-configuration.nix
@ -24,12 +20,12 @@
networking.hostName = "kardorf"; networking.hostName = "kardorf";
system.stateVersion = "22.11"; system.stateVersion = "22.11";
services.xserver.videoDrivers = [ "nvidia" ]; services.xserver.videoDrivers = ["nvidia"];
programs.kdeconnect.enable = true; programs.kdeconnect.enable = true;
# Enable CUPS to print documents. # Enable CUPS to print documents.
services.printing.enable = true; services.printing.enable = true;
services.printing.browsing = true; services.printing.browsing = true;
services.printing.drivers = with pkgs; [ gutenprint ]; services.printing.drivers = with pkgs; [gutenprint];
} }

View File

@ -5,9 +5,7 @@
config, config,
lib, lib,
... ...
}: }: {
{
boot.initrd.availableKernelModules = [ boot.initrd.availableKernelModules = [
"ehci_pci" "ehci_pci"
"ahci" "ahci"
@ -17,9 +15,9 @@
"sd_mod" "sd_mod"
"sr_mod" "sr_mod"
]; ];
boot.initrd.kernelModules = [ ]; boot.initrd.kernelModules = [];
boot.kernelModules = [ ]; boot.kernelModules = [];
boot.extraModulePackages = [ ]; boot.extraModulePackages = [];
boot.loader.efi.efiSysMountPoint = "/boot/efi"; boot.loader.efi.efiSysMountPoint = "/boot/efi";
fileSystems."/" = { fileSystems."/" = {

View File

@ -1,15 +1,13 @@
# Edit this configuration file to define what should be installed on # Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # and in the NixOS manual (accessible by running nixos-help).
{ {
lib, lib,
inputs, inputs,
config, config,
pkgs, pkgs,
... ...
}: }: {
{
imports = [ imports = [
inputs.nixos-hardware.nixosModules.raspberry-pi-4 inputs.nixos-hardware.nixosModules.raspberry-pi-4
@ -47,9 +45,9 @@
sopsFile = ./vnc-passwd; sopsFile = ./vnc-passwd;
format = "binary"; format = "binary";
}; };
sops.secrets."wifi/pianonix" = { }; sops.secrets."wifi/pianonix" = {};
sops.secrets."syncthing/pianonix/key" = { }; sops.secrets."syncthing/pianonix/key" = {};
sops.secrets."syncthing/pianonix/cert" = { }; sops.secrets."syncthing/pianonix/cert" = {};
# sops.secrets."syncthing/public-keys/aspi-nix" = { }; # sops.secrets."syncthing/public-keys/aspi-nix" = { };
# sops.secrets."syncthing/public-keys/pianonix" = { }; # sops.secrets."syncthing/public-keys/pianonix" = { };
@ -69,8 +67,8 @@
systemd.services.x11vnc = { systemd.services.x11vnc = {
description = "Run x11vnc server"; description = "Run x11vnc server";
after = [ "display-manager.service" ]; after = ["display-manager.service"];
wantedBy = [ "multi-user.target" ]; wantedBy = ["multi-user.target"];
serviceConfig = { serviceConfig = {
ExecStart = "${pkgs.x11vnc}/bin/x11vnc -rfbauth ${ ExecStart = "${pkgs.x11vnc}/bin/x11vnc -rfbauth ${
config.sops.secrets."vnc-passwd".path config.sops.secrets."vnc-passwd".path

View File

@ -7,22 +7,20 @@
pkgs, pkgs,
modulesPath, modulesPath,
... ...
}: }: {
imports = [(modulesPath + "/installer/scan/not-detected.nix")];
{ boot.initrd.availableKernelModules = ["xhci_pci"];
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; boot.initrd.kernelModules = [];
boot.kernelModules = [];
boot.initrd.availableKernelModules = [ "xhci_pci" ]; boot.extraModulePackages = [];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" = { fileSystems."/" = {
device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888"; device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888";
fsType = "ext4"; fsType = "ext4";
}; };
swapDevices = [ ]; swapDevices = [];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's # (the default) this is the recommended approach. When using systemd-networkd it's

View File

@ -1,11 +1,6 @@
{ {lib, ...}: let
lib,
...
}:
let
inherit (lib) types mkOption; inherit (lib) types mkOption;
in in {
{
options.colorscheme = { options.colorscheme = {
name = mkOption { name = mkOption {
type = types.str; type = types.str;

View File

@ -2,8 +2,7 @@
lib, lib,
config, config,
... ...
}: }: let
let
mkFontOption = kind: { mkFontOption = kind: {
name = lib.mkOption { name = lib.mkOption {
type = lib.types.str; type = lib.types.str;
@ -25,8 +24,7 @@ let
}; };
}; };
cfg = config.fontProfiles; cfg = config.fontProfiles;
in in {
{
options.fontProfiles = { options.fontProfiles = {
enable = lib.mkEnableOption "Whether to enable font profiles"; enable = lib.mkEnableOption "Whether to enable font profiles";
monospace = mkFontOption "monospace"; monospace = mkFontOption "monospace";

View File

@ -1,11 +1,6 @@
{ {lib, ...}: let
lib,
...
}:
let
inherit (lib) types mkOption; inherit (lib) types mkOption;
in in {
{
options.hostName = mkOption { options.hostName = mkOption {
type = types.str; type = types.str;
}; };

View File

@ -2,11 +2,9 @@
lib, lib,
config, config,
... ...
}: }: let
let
inherit (lib) mkOption types; inherit (lib) mkOption types;
in in {
{
options.monitors = mkOption { options.monitors = mkOption {
type = types.listOf ( type = types.listOf (
types.submodule { types.submodule {
@ -46,7 +44,7 @@ in
}; };
} }
); );
default = [ ]; default = [];
}; };
config = { config = {
assertions = [ assertions = [

View File

@ -1,11 +1,6 @@
{ {lib, ...}: let
lib,
...
}:
let
inherit (lib) types mkOption; inherit (lib) types mkOption;
in in {
{
options.is-nixos = mkOption { options.is-nixos = mkOption {
type = types.bool; type = types.bool;
}; };

View File

@ -3,8 +3,7 @@
lib, lib,
pkgs, pkgs,
... ...
}: }: {
{
options.terminal = lib.mkOption { options.terminal = lib.mkOption {
type = lib.types.str; type = lib.types.str;
example = "alacritty"; example = "alacritty";

View File

@ -2,15 +2,12 @@
lib, lib,
config, config,
... ...
}: }: let
let
cfg = config.modules.syncthing; cfg = config.modules.syncthing;
in in {
{
options.modules.syncthing = { options.modules.syncthing = {
enable = lib.mkOption { default = false; }; enable = lib.mkOption {default = false;};
overrideSettings = lib.mkOption { default = false; }; overrideSettings = lib.mkOption {default = false;};
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {

View File

@ -1,20 +1,19 @@
{ {inputs, ...}: {
inputs,
...
}:
{
# For every flake input, aliases 'pkgs.inputs.${flake}' to # For every flake input, aliases 'pkgs.inputs.${flake}' to
# 'inputs.${flake}.packages.${pkgs.system}' or # 'inputs.${flake}.packages.${pkgs.system}' or
# 'inputs.${flake}.legacyPackages.${pkgs.system}' # 'inputs.${flake}.legacyPackages.${pkgs.system}'
flake-inputs = final: _: { flake-inputs = final: _: {
inputs = builtins.mapAttrs ( inputs =
_: flake: builtins.mapAttrs (
let _: flake: let
legacyPackages = (flake.legacyPackages or { }).${final.system} or { }; legacyPackages = (flake.legacyPackages or {}).${final.system} or {};
packages = (flake.packages or { }).${final.system} or { }; packages = (flake.packages or {}).${final.system} or {};
in in
if legacyPackages != { } then legacyPackages else packages if legacyPackages != {}
) inputs; then legacyPackages
else packages
)
inputs;
}; };
input-flake-packages = final: prev: { input-flake-packages = final: prev: {
@ -23,7 +22,7 @@
}; };
# Adds my custom packages, available as pkgs.frajul.xyz # Adds my custom packages, available as pkgs.frajul.xyz
my-pkgs = final: prev: { frajul = import ../pkgs { pkgs = final; }; }; my-pkgs = final: prev: {frajul = import ../pkgs {pkgs = final;};};
nixpkgs-stable-unstable = final: prev: { nixpkgs-stable-unstable = final: prev: {
unstable = import inputs.nixpkgs { unstable = import inputs.nixpkgs {
@ -39,10 +38,9 @@
# Makes gparted actually open # Makes gparted actually open
gparted-xhost = final: prev: { gparted-xhost = final: prev: {
gparted-xhost = prev.gparted.overrideAttrs (oldAttrs: { gparted-xhost = prev.gparted.overrideAttrs (oldAttrs: {
configureFlags = oldAttrs.configureFlags ++ [ "--enable-xhost-root" ]; configureFlags = oldAttrs.configureFlags ++ ["--enable-xhost-root"];
}); });
}; };
nix-matlab = inputs.nix-matlab.overlay; nix-matlab = inputs.nix-matlab.overlay;
} }

View File

@ -2,11 +2,10 @@
writeShellApplication, writeShellApplication,
kmod, kmod,
}: }:
writeShellApplication { writeShellApplication {
name = "acer-battery-health-mode"; name = "acer-battery-health-mode";
runtimeInputs = [ kmod ]; # contains insmod runtimeInputs = [kmod]; # contains insmod
text = '' text = ''
#/usr/bin/env sh #/usr/bin/env sh

View File

@ -3,7 +3,6 @@
yq, yq,
writeShellApplication, writeShellApplication,
}: }:
writeShellApplication { writeShellApplication {
name = "conda-direnv"; name = "conda-direnv";

View File

@ -1,19 +1,15 @@
{ {pkgs ? import <nixpkgs> {}, ...}: {
pkgs ? import <nixpkgs> { }, conda-direnv = pkgs.callPackage ./conda-direnv {};
... deploy-to-pianopi = pkgs.callPackage ./deploy-to-pianopi {};
}: edit-config = pkgs.callPackage ./edit-config {};
{ hyprshot-gui = pkgs.callPackage ./hyprshot-gui {};
conda-direnv = pkgs.callPackage ./conda-direnv { }; install = pkgs.callPackage ./install {};
deploy-to-pianopi = pkgs.callPackage ./deploy-to-pianopi { }; lntocp = pkgs.callPackage ./lntocp {};
edit-config = pkgs.callPackage ./edit-config { }; open-messaging = pkgs.callPackage ./open-messaging {};
hyprshot-gui = pkgs.callPackage ./hyprshot-gui { }; pulseaudio-popup = pkgs.callPackage ./pulseaudio-popup {};
install = pkgs.callPackage ./install { }; sos = pkgs.callPackage ./sos {};
lntocp = pkgs.callPackage ./lntocp { }; xwacomcalibrate = pkgs.callPackage ./xwacomcalibrate {};
open-messaging = pkgs.callPackage ./open-messaging { }; acer-battery-health-mode = pkgs.callPackage ./acer-battery-health-mode {};
pulseaudio-popup = pkgs.callPackage ./pulseaudio-popup { }; pob2 = pkgs.callPackage ./pob2 {};
sos = pkgs.callPackage ./sos { }; wl-ocr = pkgs.callPackage ./wl-ocr {};
xwacomcalibrate = pkgs.callPackage ./xwacomcalibrate { };
acer-battery-health-mode = pkgs.callPackage ./acer-battery-health-mode { };
pob2 = pkgs.callPackage ./pob2 { };
wl-ocr = pkgs.callPackage ./wl-ocr { };
} }

View File

@ -2,11 +2,10 @@
rsync, rsync,
writeShellApplication, writeShellApplication,
}: }:
writeShellApplication { writeShellApplication {
name = "deploy-to-pianopi"; name = "deploy-to-pianopi";
runtimeInputs = [ rsync ]; runtimeInputs = [rsync];
text = '' text = ''
set -e set -e

View File

@ -7,7 +7,6 @@
hyprshot, hyprshot,
zenity, zenity,
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "hyprshot-gui"; pname = "hyprshot-gui";
version = "2023-10-20"; version = "2023-10-20";
@ -19,7 +18,7 @@ stdenv.mkDerivation rec {
sha256 = "sha256-XUy6+mFbNL+3zDfS4tWva4DiJeLnRM9S8ECRayTcPfI="; sha256 = "sha256-XUy6+mFbNL+3zDfS4tWva4DiJeLnRM9S8ECRayTcPfI=";
}; };
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [makeWrapper];
buildInputs = [ buildInputs = [
bash bash

View File

@ -1,4 +1,8 @@
{ writeShellScriptBin, gum, ... }: {
writeShellScriptBin,
gum,
...
}:
# https://github.com/IogaMaster/dotfiles/blob/main/packages/install/default.nix # https://github.com/IogaMaster/dotfiles/blob/main/packages/install/default.nix
writeShellScriptBin "install" '' writeShellScriptBin "install" ''
${gum}/bin/gum style --border normal --margin "1" --padding "1 2" --border-foreground 212 " IogaMaster's dotfiles installer " ${gum}/bin/gum style --border normal --margin "1" --padding "1 2" --border-foreground 212 " IogaMaster's dotfiles installer "

View File

@ -1,11 +1,8 @@
{ {writeShellApplication}:
writeShellApplication,
}:
writeShellApplication { writeShellApplication {
name = "lntocp"; name = "lntocp";
runtimeInputs = [ ]; runtimeInputs = [];
text = '' text = ''
#!/bin/bash #!/bin/bash

View File

@ -4,7 +4,6 @@
telegram-desktop, telegram-desktop,
thunderbird, thunderbird,
}: }:
writeShellApplication { writeShellApplication {
name = "open-messaging"; name = "open-messaging";

View File

@ -5,8 +5,7 @@
fetchFromGitHub, fetchFromGitHub,
unzip, unzip,
... ...
}: }: let
let
data = stdenv.mkDerivation (finalAttrs: { data = stdenv.mkDerivation (finalAttrs: {
pname = "path-of-building-data"; pname = "path-of-building-data";
version = "dev-version"; version = "dev-version";
@ -18,7 +17,7 @@ let
hash = "sha256-hRS4k2V9Ze6dc7BMA0iZxjCOZgqPa3Cu7gRZiVLrFR4="; hash = "sha256-hRS4k2V9Ze6dc7BMA0iZxjCOZgqPa3Cu7gRZiVLrFR4=";
}; };
nativeBuildInputs = [ unzip ]; nativeBuildInputs = [unzip];
buildCommand = '' buildCommand = ''
# I have absolutely no idea how this file is generated # I have absolutely no idea how this file is generated
@ -38,52 +37,52 @@ let
''; '';
}); });
in in
stdenv.mkDerivation { stdenv.mkDerivation {
pname = "path-of-building-2"; pname = "path-of-building-2";
version = "${data.version}-unstable-2023-04-09"; version = "${data.version}-unstable-2023-04-09";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ernstp"; owner = "ernstp";
repo = "pobfrontend"; repo = "pobfrontend";
rev = "9faa19aa362f975737169824c1578d5011487c18"; rev = "9faa19aa362f975737169824c1578d5011487c18";
hash = "sha256-zhw2PZ6ZNMgZ2hG+a6AcYBkeg7kbBHNc2eSt4if17Wk="; hash = "sha256-zhw2PZ6ZNMgZ2hG+a6AcYBkeg7kbBHNc2eSt4if17Wk=";
}; };
nativeBuildInputs = with pkgs; [ nativeBuildInputs = with pkgs; [
meson meson
ninja ninja
pkg-config pkg-config
kdePackages.qttools kdePackages.qttools
kdePackages.wrapQtAppsHook kdePackages.wrapQtAppsHook
]; ];
buildInputs = with pkgs; [ buildInputs = with pkgs; [
kdePackages.qtbase kdePackages.qtbase
luajit luajit
luajit.pkgs.lua-curl luajit.pkgs.lua-curl
]; ];
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
install -Dm555 pobfrontend $out/bin/pobfrontend install -Dm555 pobfrontend $out/bin/pobfrontend
runHook postInstall runHook postInstall
''; '';
preFixup = '' preFixup = ''
qtWrapperArgs+=( qtWrapperArgs+=(
--set LUA_PATH "$LUA_PATH" --set LUA_PATH "$LUA_PATH"
--set LUA_CPATH "$LUA_CPATH" --set LUA_CPATH "$LUA_CPATH"
--chdir "${data}" --chdir "${data}"
) )
''; '';
passthru.data = data; passthru.data = data;
meta = { meta = {
description = "Offline build planner for Path of Exile"; description = "Offline build planner for Path of Exile";
homepage = "https://pathofbuilding.community/"; homepage = "https://pathofbuilding.community/";
license = lib.licenses.mit; license = lib.licenses.mit;
maintainers = [ lib.maintainers.k900 ]; maintainers = [lib.maintainers.k900];
mainProgram = "pobfrontend"; mainProgram = "pobfrontend";
broken = stdenv.isDarwin; # doesn't find uic6 for some reason broken = stdenv.isDarwin; # doesn't find uic6 for some reason
}; };
} }

View File

@ -4,7 +4,6 @@
jgmenu, jgmenu,
pulseaudio, pulseaudio,
}: }:
writeShellApplication { writeShellApplication {
name = "pulseaudio-popup"; name = "pulseaudio-popup";
@ -15,7 +14,7 @@ writeShellApplication {
]; ];
# Do not insert e.g. pipefail # Do not insert e.g. pipefail
bashOptions = [ ]; bashOptions = [];
text = '' text = ''
HDMI_SINK="alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink" HDMI_SINK="alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink"

View File

@ -3,7 +3,6 @@
nix-output-monitor, nix-output-monitor,
jq, jq,
}: }:
writeShellApplication { writeShellApplication {
name = "sos"; name = "sos";

View File

@ -8,12 +8,11 @@
tesseract5, tesseract5,
wl-clipboard, wl-clipboard,
langs ? "eng+hun+fra+jpn+jpn_vert+kor+kor_vert+pol+ron+spa", langs ? "eng+hun+fra+jpn+jpn_vert+kor+kor_vert+pol+ron+spa",
}: }: let
let
_ = lib.getExe; _ = lib.getExe;
in in
writeShellScriptBin "wl-ocr" '' writeShellScriptBin "wl-ocr" ''
${_ grim} -g "$(${_ slurp})" -t ppm - | ${_ tesseract5} -l ${langs} - - | ${wl-clipboard}/bin/wl-copy ${_ grim} -g "$(${_ slurp})" -t ppm - | ${_ tesseract5} -l ${langs} - - | ${wl-clipboard}/bin/wl-copy
echo "$(${wl-clipboard}/bin/wl-paste)" echo "$(${wl-clipboard}/bin/wl-paste)"
${_ libnotify} -- "$(${wl-clipboard}/bin/wl-paste)" ${_ libnotify} -- "$(${wl-clipboard}/bin/wl-paste)"
'' ''

View File

@ -5,7 +5,6 @@
xdotool, xdotool,
bc, bc,
}: }:
writeShellApplication { writeShellApplication {
name = "xwacomcalibrate"; name = "xwacomcalibrate";

View File

@ -1,8 +1,4 @@
{ {pkgs ? import <nixpkgs> {}, ...}: {
pkgs ? import <nixpkgs> { },
...
}:
{
default = pkgs.mkShell { default = pkgs.mkShell {
NIX_CONFIG = "extra-experimental-features = nix-command flakes ca-derivations"; NIX_CONFIG = "extra-experimental-features = nix-command flakes ca-derivations";
nativeBuildInputs = with pkgs; [ nativeBuildInputs = with pkgs; [

View File

@ -1,14 +1,15 @@
{ {
# Snowfall Lib provides a customized `lib` instance with access to your flake's library # Snowfall Lib provides a customized `lib` instance with access to your flake's library
# as well as the libraries available from your flake's inputs. # as well as the libraries available from your flake's inputs.
lib, lib,
# You also have access to your flake's inputs. # You also have access to your flake's inputs.
inputs, inputs,
# All other arguments come from NixPkgs. You can use `pkgs` to pull shells or helpers
# All other arguments come from NixPkgs. You can use `pkgs` to pull shells or helpers # programmatically or you may add the named attributes as arguments here.
# programmatically or you may add the named attributes as arguments here. pkgs,
pkgs, stdenv, ... }: stdenv,
...
}:
pkgs.mkShell { pkgs.mkShell {
# Create your shell # Create your shell
} }