Compare commits
No commits in common. "7d17c52192ef9e79b67ada336a5fbc4bbcb08a6c" and "02cc4f8ed85f17a2593a4112ad604146e92aab84" have entirely different histories.
7d17c52192
...
02cc4f8ed8
8
.gitignore
vendored
@ -1,3 +1,5 @@
|
|||||||
.direnv
|
.dotter/cache.toml
|
||||||
result*
|
.dotter/cache
|
||||||
*.qcow2
|
.dotter/local.toml
|
||||||
|
|
||||||
|
nix/result
|
||||||
|
@ -4,21 +4,22 @@ keys:
|
|||||||
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct
|
- &pianonix-ssh age1hsmfz8fjxu83sax9lr487h8xr6cyge0apdq4zpge4c8jpcjj2cksj825ct
|
||||||
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
- &builder-ssh age1kw4kmdm45zprvdkrrpvgq966l7585vhusmum083qlwnr0xxgd3uqatcyja
|
||||||
creation_rules:
|
creation_rules:
|
||||||
- path_regex: hosts/common/secrets.yaml$
|
- path_regex: secrets/secrets.yaml$
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
- *primary
|
- *primary
|
||||||
- *aspi-ssh
|
- *aspi-ssh
|
||||||
- *pianonix-ssh
|
- *pianonix-ssh
|
||||||
|
|
||||||
- path_regex: hosts/builder/secrets.yaml$
|
- path_regex: secrets/secrets-builder.yaml$
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
- *primary
|
- *primary
|
||||||
- *builder-ssh
|
- *builder-ssh
|
||||||
|
|
||||||
- path_regex: hosts/pianonix/secrets.yaml$
|
- path_regex: secrets/.+
|
||||||
key_groups:
|
key_groups:
|
||||||
- age:
|
- age:
|
||||||
- *primary
|
- *primary
|
||||||
|
- *aspi-ssh
|
||||||
- *pianonix-ssh
|
- *pianonix-ssh
|
||||||
|
930
flake.lock
generated
245
flake.nix
@ -2,186 +2,149 @@
|
|||||||
description = "Home Manager configuration of julian";
|
description = "Home Manager configuration of julian";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||||
nixpkgs-stable.url = "github:nixos/nixpkgs/nixos-24.11";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
systems.url = "github:nix-systems/default-linux";
|
|
||||||
nixos-hardware.url = "github:nixos/nixos-hardware";
|
|
||||||
impermanence.url = "github:nix-community/impermanence";
|
|
||||||
nix-colors.url = "github:misterio77/nix-colors";
|
|
||||||
deploy-rs.url = "github:serokell/deploy-rs";
|
deploy-rs.url = "github:serokell/deploy-rs";
|
||||||
|
|
||||||
|
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||||
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager";
|
url = "github:nix-community/home-manager/release-24.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
sops-nix = {
|
|
||||||
url = "github:Mic92/sops-nix";
|
snowfall-lib = {
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
url = "github:snowfallorg/lib";
|
||||||
};
|
|
||||||
nix-gl = {
|
|
||||||
url = "github:nix-community/nixgl";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
disko = {
|
disko = {
|
||||||
url = "github:nix-community/disko";
|
url = "github:nix-community/disko";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Various flakes
|
|
||||||
alacritty-theme = {
|
alacritty-theme = {
|
||||||
url = "github:alacritty/alacritty-theme";
|
url = "github:alacritty/alacritty-theme";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
yazi-flavors = {
|
yazi-flavors = {
|
||||||
url = "github:yazi-rs/flavors";
|
url = "github:yazi-rs/flavors";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
nixvim = {
|
nixvim = {
|
||||||
url = "github:nix-community/nixvim";
|
url = "github:nix-community/nixvim/nixos-24.11";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
# If using a stable channel you can use `url = "github:nix-community/nixvim/nixos-<version>"`
|
||||||
};
|
|
||||||
nix-matlab = {
|
|
||||||
url = "gitlab:doronbehar/nix-matlab";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
# My projects
|
nix-matlab.url = "gitlab:doronbehar/nix-matlab";
|
||||||
sheet-organizer = {
|
nix-matlab.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
url = "git+https://gitlab.julian-mutter.de/julian/sheet-organizer";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
sops-nix.url = "github:Mic92/sops-nix";
|
||||||
};
|
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
music-reader = {
|
|
||||||
url = "git+https://gitlab.julian-mutter.de/julian/music-reader";
|
hyprland.url = "github:hyprwm/Hyprland?submodules=1";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
# hyprland.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
hyprland-plugins = {
|
||||||
|
url = "github:hyprwm/hyprland-plugins";
|
||||||
|
inputs.hyprland.follows = "hyprland";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nix-colors.url = "github:Misterio77/nix-colors";
|
||||||
|
|
||||||
|
nix-topology.url = "github:oddlama/nix-topology";
|
||||||
|
nix-topology.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
nix-ld.url = "github:Mic92/nix-ld";
|
||||||
|
nix-ld.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
## My projects
|
||||||
|
sheet-organizer.url = "git+https://gitlab.julian-mutter.de/julian/sheet-organizer";
|
||||||
|
sheet-organizer.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|
||||||
|
music-reader.url = "git+https://gitlab.julian-mutter.de/julian/music-reader";
|
||||||
|
music-reader.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
{
|
inputs:
|
||||||
self,
|
inputs.snowfall-lib.mkFlake {
|
||||||
nixpkgs,
|
inherit inputs;
|
||||||
home-manager,
|
# Must always be ./.
|
||||||
systems,
|
src = ./.;
|
||||||
...
|
|
||||||
}@inputs:
|
|
||||||
let
|
|
||||||
inherit (self) outputs;
|
|
||||||
lib = nixpkgs.lib // home-manager.lib;
|
|
||||||
forEachSystem = f: lib.genAttrs (import systems) (system: f pkgsFor.${system});
|
|
||||||
pkgsFor = lib.genAttrs (import systems) (
|
|
||||||
system:
|
|
||||||
import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
config.permittedInsecurePackages = [
|
|
||||||
"olm-3.2.16"
|
|
||||||
];
|
|
||||||
warn-dirty = false;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit lib;
|
|
||||||
|
|
||||||
nixosModules = import ./modules/nixos;
|
# Add overlays for the `nixpkgs` channel.
|
||||||
homeManagerModules = import ./modules/home-manager;
|
overlays = with inputs; [
|
||||||
|
nix-matlab.overlay
|
||||||
|
nix-topology.overlays.default
|
||||||
|
];
|
||||||
|
|
||||||
overlays = import ./overlays { inherit inputs outputs; };
|
snowfall = {
|
||||||
# hydraJobs = import ./hydra.nix { inherit inputs outputs; }; # TODO add hydra jobs here?
|
# The root of the snowfall config
|
||||||
|
root = ./.;
|
||||||
|
# lib, package and overlay namespace
|
||||||
|
namespace = "frajul"; # defaults to "internal"
|
||||||
|
|
||||||
packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; });
|
meta = {
|
||||||
devShells = forEachSystem (pkgs: import ./shell.nix { inherit pkgs; });
|
name = "Julian's dotfiles";
|
||||||
formatter = forEachSystem (pkgs: pkgs.alejandra);
|
title = "Julian's dotfiles";
|
||||||
|
|
||||||
nixosConfigurations = {
|
|
||||||
# Main laptop
|
|
||||||
aspi = lib.nixosSystem {
|
|
||||||
modules = [ ./hosts/aspi ];
|
|
||||||
specialArgs = {
|
|
||||||
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;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Standalone HM
|
# The attribute set specified here will be passed directly to NixPkgs when
|
||||||
homeConfigurations = {
|
# instantiating the package set.
|
||||||
# Main laptop
|
channels-config = {
|
||||||
"julian@aspi" = lib.homeManagerConfiguration {
|
# Allow unfree packages.
|
||||||
modules = [
|
allowUnfree = true;
|
||||||
./homes/julian/aspi.nix
|
nvidia.acceptLicense = true;
|
||||||
./homes/julian/hm-standalone-config.nix
|
|
||||||
];
|
# Allow certain insecure packages
|
||||||
pkgs = pkgsFor.x86_64-linux;
|
permittedInsecurePackages = [ "olm-3.2.16" ];
|
||||||
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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systems.modules.nixos = with inputs; [
|
||||||
|
nix-topology.nixosModules.default
|
||||||
|
sops-nix.nixosModules.sops
|
||||||
|
disko.nixosModules.disko
|
||||||
|
];
|
||||||
|
systems.hosts.pianonix.modules = with inputs; [ nixos-hardware.nixosModules.raspberry-pi-4 ];
|
||||||
|
|
||||||
|
# topology =
|
||||||
|
# with inputs;
|
||||||
|
# let
|
||||||
|
# host = self.nixosConfigurations.${builtins.head (builtins.attrNames self.nixosConfigurations)};
|
||||||
|
# in
|
||||||
|
# import nix-topology {
|
||||||
|
# inherit (host) pkgs; # Only this package set must include nix-topology.overlays.default
|
||||||
|
# modules = [
|
||||||
|
# (import ./topology { inherit (host) config; })
|
||||||
|
# { inherit (self) nixosConfigurations; }
|
||||||
|
# ];
|
||||||
|
# };
|
||||||
|
}
|
||||||
|
// {
|
||||||
# deploy-rs node configuration
|
# deploy-rs node configuration
|
||||||
deploy.nodes = {
|
deploy.nodes.pianonix = {
|
||||||
pianonix = {
|
hostname = "pianonix.local";
|
||||||
hostname = "pianonix.local";
|
profiles.system = {
|
||||||
profiles.system = {
|
sshUser = "root";
|
||||||
sshUser = "root";
|
user = "root";
|
||||||
user = "root";
|
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos inputs.self.nixosConfigurations.pianonix;
|
||||||
path = inputs.deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pianonix;
|
confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
|
||||||
confirmTimeout = 90; # default: 30s; raspberrypi takes a little longer restarting services
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
builder = {
|
deploy.nodes.builder = {
|
||||||
hostname = "builder.julian-mutter.de";
|
hostname = "builder.julian-mutter.de";
|
||||||
profiles.system = {
|
profiles.system = {
|
||||||
sshUser = "root";
|
sshUser = "root";
|
||||||
user = "root";
|
user = "root";
|
||||||
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.builder;
|
path = inputs.deploy-rs.lib.x86_64-linux.activate.nixos inputs.self.nixosConfigurations.builder;
|
||||||
remoteBuild = true;
|
remoteBuild = true;
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./global
|
|
||||||
./features/fish
|
|
||||||
./features/direnv
|
|
||||||
./features/topgrade
|
|
||||||
./features/neovim
|
|
||||||
./features/kitty
|
|
||||||
./features/wezterm
|
|
||||||
./features/alacritty
|
|
||||||
./features/yazi
|
|
||||||
./features/emacs
|
|
||||||
# ./features/i3
|
|
||||||
|
|
||||||
./features/hyprland
|
|
||||||
|
|
||||||
./features/nix-helper
|
|
||||||
./features/desktop
|
|
||||||
|
|
||||||
./features/suites/cli
|
|
||||||
./features/suites/desktop
|
|
||||||
./features/suites/development
|
|
||||||
|
|
||||||
];
|
|
||||||
|
|
||||||
hostName = "aspi";
|
|
||||||
is-nixos = true;
|
|
||||||
terminal = "kitty";
|
|
||||||
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [ alacritty ];
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/alacritty/theme".source = "${inputs.alacritty-theme}";
|
|
||||||
".config/alacritty/alacritty.toml".source = ./alacritty.toml;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "alacritty") "alacritty";
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (inputs.nix-colors.lib-contrib { inherit pkgs; }) gtkThemeFromScheme;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# Do not make conditional, just toggle things on and off
|
|
||||||
imports = [ inputs.nix-colors.homeManagerModules.default ]; # TODO: what does this do
|
|
||||||
|
|
||||||
# home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark";
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
theme = {
|
|
||||||
name = inputs.nix-colors.colorschemes.${config.colorscheme.name}.slug;
|
|
||||||
package = gtkThemeFromScheme {
|
|
||||||
scheme = inputs.nix-colors.colorschemes.${config.colorscheme.name};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
iconTheme = {
|
|
||||||
name = "Papirus-Dark";
|
|
||||||
package = pkgs.papirus-icon-theme;
|
|
||||||
};
|
|
||||||
cursorTheme = {
|
|
||||||
package = pkgs.apple-cursor;
|
|
||||||
name = "macOS-BigSur";
|
|
||||||
size = 24;
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
programs.direnv = {
|
|
||||||
enable = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,75 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
doomRepoUrl = "https://github.com/doomemacs/doomemacs";
|
|
||||||
configRepoUrl = "https://gitlab.julian-mutter.de/julian/emacs-config";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.sessionPath = [ "/home/julian/.config/emacs/bin" ];
|
|
||||||
|
|
||||||
home.packages =
|
|
||||||
with pkgs;
|
|
||||||
[
|
|
||||||
binutils # native-comp needs 'as', provided by this
|
|
||||||
|
|
||||||
## Doom dependencies
|
|
||||||
git
|
|
||||||
(ripgrep.override { withPCRE2 = true; })
|
|
||||||
|
|
||||||
## Optional dependencies
|
|
||||||
fd # faster projectile indexing
|
|
||||||
imagemagick # for image-dired
|
|
||||||
zstd # for undo-fu-session/undo-tree compression
|
|
||||||
|
|
||||||
## Module dependencies
|
|
||||||
(aspellWithDicts (
|
|
||||||
ds: with ds; [
|
|
||||||
en
|
|
||||||
en-computers
|
|
||||||
en-science
|
|
||||||
de
|
|
||||||
]
|
|
||||||
))
|
|
||||||
|
|
||||||
hunspell
|
|
||||||
hunspellDicts.de_DE
|
|
||||||
hunspellDicts.en_US
|
|
||||||
|
|
||||||
sqlite
|
|
||||||
|
|
||||||
# Code formatters for use with doom emacs
|
|
||||||
nixfmt-rfc-style # nix
|
|
||||||
nixd # nix lsp
|
|
||||||
dockfmt # docker
|
|
||||||
google-java-format # java
|
|
||||||
black # python
|
|
||||||
rustfmt # rust
|
|
||||||
shfmt
|
|
||||||
pyright
|
|
||||||
clang-tools # c++ lsp etc
|
|
||||||
ltex-ls # latex languagetool
|
|
||||||
|
|
||||||
graphviz
|
|
||||||
# Lsps for use with doom emacs
|
|
||||||
# neocmakelsp # cmake
|
|
||||||
|
|
||||||
emacs-all-the-icons-fonts
|
|
||||||
]
|
|
||||||
++ lib.optional config.is-nixos emacs;
|
|
||||||
|
|
||||||
home.activation.installDoomEmacs = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
|
||||||
if [ ! -d "/home/julian/.config/emacs" ]; then
|
|
||||||
$DRY_RUN_CMD ${pkgs.git}/bin/git clone --depth=1 --single-branch "${doomRepoUrl}" "/home/julian/.config/emacs"
|
|
||||||
fi
|
|
||||||
if [ ! -d "/home/julian/.config/doom" ]; then
|
|
||||||
$DRY_RUN_CMD ${pkgs.git}/bin/git clone "${configRepoUrl}" "/home/julian/.config/doom"
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
}
|
|
@ -1,55 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
{
|
|
||||||
home.file = {
|
|
||||||
".config/starship.toml".source = ./starship.toml;
|
|
||||||
".config/fish/conf.d/last-working-dir.fish".source = ./last-working-dir.fish;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
starship
|
|
||||||
lazygit
|
|
||||||
];
|
|
||||||
|
|
||||||
home.shellAliases = {
|
|
||||||
g = "lazygit";
|
|
||||||
ls = "ls --color";
|
|
||||||
la = "ls -Alh --color";
|
|
||||||
grep = "grep --color";
|
|
||||||
conf = "edit-config";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
enableFishIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
interactiveShellInit = "set fish_greeting"; # Disable default greeting
|
|
||||||
|
|
||||||
functions = {
|
|
||||||
mkcd = ''
|
|
||||||
mkdir $argv
|
|
||||||
cd $argv
|
|
||||||
'';
|
|
||||||
run = ''
|
|
||||||
nix run nixpkgs#"$argv[1]" -- $argv[2..-1]
|
|
||||||
'';
|
|
||||||
shell = ''
|
|
||||||
set args
|
|
||||||
for arg in $argv
|
|
||||||
set args $args nixpkgs#$arg
|
|
||||||
end
|
|
||||||
nix shell $args
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
{
|
|
||||||
fonts.fontconfig.enable = true; # required to autoload fonts from packages
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nerd-fonts.fira-code
|
|
||||||
font-awesome
|
|
||||||
dejavu_fonts
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-cjk-sans
|
|
||||||
noto-fonts-emoji
|
|
||||||
liberation_ttf
|
|
||||||
fira-code
|
|
||||||
fira-code-symbols
|
|
||||||
source-code-pro
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
services.gammastep = {
|
|
||||||
enable = true;
|
|
||||||
provider = "geoclue2";
|
|
||||||
temperature = {
|
|
||||||
day = 6000;
|
|
||||||
night = 4600;
|
|
||||||
};
|
|
||||||
settings = {
|
|
||||||
general.adjustment-method = "wayland";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,393 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
# inputs.hyprland.homeManagerModules.default
|
|
||||||
./waybar
|
|
||||||
./wofi
|
|
||||||
./mako
|
|
||||||
# ./hyprlock
|
|
||||||
./wlogout
|
|
||||||
../gammastep
|
|
||||||
|
|
||||||
./swayidle.nix
|
|
||||||
./swaylock.nix
|
|
||||||
./zathura.nix
|
|
||||||
./waypipe.nix
|
|
||||||
|
|
||||||
./hyprbars.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
extraPortals = [ pkgs.xdg-desktop-portal-wlr ];
|
|
||||||
config.hyprland = {
|
|
||||||
default = [
|
|
||||||
"wlr"
|
|
||||||
"gtk"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.imv.enable = true; # TODO: what is that
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# hyprpicker # TODO
|
|
||||||
# hyprcursor # TODO
|
|
||||||
brightnessctl
|
|
||||||
# grimblast
|
|
||||||
frajul.hyprshot-gui
|
|
||||||
frajul.wl-ocr
|
|
||||||
|
|
||||||
wf-recorder
|
|
||||||
wl-clipboard
|
|
||||||
];
|
|
||||||
|
|
||||||
services.cliphist = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
MOZ_ENABLE_WAYLAND = 1;
|
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
LIBSEAT_BACKEND = "logind";
|
|
||||||
};
|
|
||||||
|
|
||||||
# services.hypridle = {
|
|
||||||
# enable = true;
|
|
||||||
# settings = {
|
|
||||||
# general = {
|
|
||||||
# after_sleep_cmd = "hyprctl dispatch dpms on";
|
|
||||||
# ignore_dbus_inhibit = false;
|
|
||||||
# lock_cmd = "hyprlock";
|
|
||||||
# };
|
|
||||||
|
|
||||||
# listener = [
|
|
||||||
# {
|
|
||||||
# timeout = 300; # 5min
|
|
||||||
# on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
|
||||||
# on-resume = "brightnessctl -r"; # monitor backlight restore.
|
|
||||||
# }
|
|
||||||
|
|
||||||
# {
|
|
||||||
# timeout = 360; # 6min
|
|
||||||
# on-timeout = "hyprlock"; # lock screen when timeout has passed
|
|
||||||
# }
|
|
||||||
|
|
||||||
# {
|
|
||||||
# timeout = 600; # 10min
|
|
||||||
# on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
|
|
||||||
# on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
|
|
||||||
# }
|
|
||||||
# ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
|
|
||||||
# services.hypridle.enable = true; # can be configured
|
|
||||||
|
|
||||||
services.network-manager-applet.enable = true;
|
|
||||||
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
# Whether to enable Hyprland wayland compositor
|
|
||||||
enable = true;
|
|
||||||
# package = config.lib.nixGL.wrap (
|
|
||||||
# pkgs.hyprland.override {
|
|
||||||
# # nixgl needed?
|
|
||||||
# wrapRuntimeDeps = false;
|
|
||||||
# }
|
|
||||||
# );
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
enable = true;
|
|
||||||
# Same as default, but stop graphical-session too
|
|
||||||
extraCommands = lib.mkBefore [
|
|
||||||
"systemctl --user stop graphical-session.target"
|
|
||||||
"systemctl --user start hyprland-session.target"
|
|
||||||
];
|
|
||||||
variables = [
|
|
||||||
"DISPLAY"
|
|
||||||
"HYPRLAND_INSTANCE_SIGNATURE"
|
|
||||||
"WAYLAND_DISPLAY"
|
|
||||||
"XDG_CURRENT_DESKTOP"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# package = inputs.hyprland.packages."${pkgs.system}".hyprland; # does only work with nixos-unstable
|
|
||||||
|
|
||||||
# The hyprland package to use (simplifies use of plugins)
|
|
||||||
# package = inputs.hyprland.packages.${pkgs.system}.hyprland;
|
|
||||||
# Whether to enable XWayland
|
|
||||||
xwayland.enable = true;
|
|
||||||
|
|
||||||
# Optional
|
|
||||||
# Whether to enable hyprland-session.target on hyprland startup
|
|
||||||
# systemd.enable = true;
|
|
||||||
# Make PATH available to systemd services
|
|
||||||
# systemd.variables = [ "--all" ];
|
|
||||||
|
|
||||||
plugins = [
|
|
||||||
# inputs.hyprland-plugins.packages.${pkgs.system}.hyprbars # does only work with nixos-unstable
|
|
||||||
# hyprlandPlugins.hyprbars
|
|
||||||
];
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
"$mod" = "SUPER";
|
|
||||||
|
|
||||||
# Monitors
|
|
||||||
monitor = ",preferred,auto,auto";
|
|
||||||
|
|
||||||
# Autostart
|
|
||||||
exec-once = [ "firefox" ];
|
|
||||||
|
|
||||||
# Look and Feel
|
|
||||||
general = {
|
|
||||||
gaps_in = 5;
|
|
||||||
gaps_out = 5;
|
|
||||||
|
|
||||||
layout = "dwindle";
|
|
||||||
|
|
||||||
# "col.active_border" = "0xff${palette.base0C} 0xff${palette.base0D} 270deg";
|
|
||||||
# "col.inactive_border" = "0xff${palette.base00}";
|
|
||||||
};
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
# power saving
|
|
||||||
blur.enabled = false;
|
|
||||||
# power saving
|
|
||||||
shadow.enabled = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Dwindle layout
|
|
||||||
dwindle = {
|
|
||||||
pseudotile = true; # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
|
||||||
preserve_split = true; # You probably want this
|
|
||||||
smart_split = false;
|
|
||||||
smart_resizing = false;
|
|
||||||
force_split = 2;
|
|
||||||
# no_gaps_when_only = 2; # with border
|
|
||||||
};
|
|
||||||
|
|
||||||
# Master layout
|
|
||||||
master = {
|
|
||||||
new_status = "slave";
|
|
||||||
# no_gaps_when_only = 2; # with border
|
|
||||||
mfact = 0.5; # Do not make master bigger
|
|
||||||
};
|
|
||||||
|
|
||||||
animations = {
|
|
||||||
enabled = true;
|
|
||||||
|
|
||||||
animation = [
|
|
||||||
"windows,1,3,default,slide"
|
|
||||||
"fade,1,3,default"
|
|
||||||
"layers,1,3,default,slide"
|
|
||||||
"border,1,3,default"
|
|
||||||
"workspaces,1,3,default,slide"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
exec = [
|
|
||||||
"hyprctl setcursor ${config.gtk.cursorTheme.name} ${toString config.gtk.cursorTheme.size}"
|
|
||||||
];
|
|
||||||
|
|
||||||
misc = {
|
|
||||||
# disable auto polling for config file changes
|
|
||||||
disable_autoreload = true;
|
|
||||||
|
|
||||||
force_default_wallpaper = 0;
|
|
||||||
|
|
||||||
vfr = true; # power saving
|
|
||||||
};
|
|
||||||
|
|
||||||
render = {
|
|
||||||
# we do, in fact, want direct scanout
|
|
||||||
direct_scanout = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Input
|
|
||||||
input = {
|
|
||||||
kb_layout = "de";
|
|
||||||
natural_scroll = false;
|
|
||||||
follow_mouse = 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Window rules
|
|
||||||
windowrulev2 = [
|
|
||||||
"suppressevent maximize, class:.*"
|
|
||||||
"workspace 1, class:firefox"
|
|
||||||
"workspace 9, class:nheko"
|
|
||||||
"workspace 9, class:org.telegram.desktop"
|
|
||||||
"workspace 10, class:thunderbird"
|
|
||||||
"float, class:qalculate-gtk"
|
|
||||||
"tile, class:MATLAB, title:MATLAB"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Workspace rules
|
|
||||||
workspace = [
|
|
||||||
"1, monitor:HDMI-A-1"
|
|
||||||
"2, monitor:HDMI-A-1"
|
|
||||||
"3, monitor:HDMI-A-1"
|
|
||||||
"4, monitor:HDMI-A-1"
|
|
||||||
"5, monitor:HDMI-A-1"
|
|
||||||
"6, monitor:eDP-1"
|
|
||||||
"7, monitor:eDP-1"
|
|
||||||
"8, monitor:eDP-1"
|
|
||||||
"9, monitor:eDP-1"
|
|
||||||
"10, monitor:eDP-1"
|
|
||||||
|
|
||||||
# smart gaps (none when only one window in workspace)
|
|
||||||
"w[t1], gapsin:0, gapsout:0, border:1"
|
|
||||||
"w[tg1], gapsin:0, gapsout:0, border:1"
|
|
||||||
"f[1], gapsin:0, gapsout:0, border:1"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Mouse binds
|
|
||||||
bindm = [
|
|
||||||
"$mod, mouse:272, movewindow" # leftclick
|
|
||||||
"$mod, mouse:273, resizewindow" # rightclick
|
|
||||||
];
|
|
||||||
|
|
||||||
# binds
|
|
||||||
bind =
|
|
||||||
[
|
|
||||||
# compositor commands
|
|
||||||
"$mod, Space, focuswindow, floating"
|
|
||||||
"$mod SHIFT, Space, togglefloating,"
|
|
||||||
"$mod, F, fullscreen,"
|
|
||||||
"$mod, X, killactive,"
|
|
||||||
|
|
||||||
"$mod, O, togglesplit," # dwindle
|
|
||||||
|
|
||||||
# opening applications
|
|
||||||
"$mod, D, exec, wofi --show drun,run"
|
|
||||||
"$mod, E, exec, pcmanfm"
|
|
||||||
"$mod, Return, exec, kitty"
|
|
||||||
"$mod, B, exec, firefox"
|
|
||||||
"$mod, C, exec, qalculate-gtk"
|
|
||||||
|
|
||||||
# other commands
|
|
||||||
"$mod SHIFT, E, exec, wlogout -p layer-shell"
|
|
||||||
"$mod, Escape, exec, wlogout -p layer-shell"
|
|
||||||
"$mod SHIFT, R, exec, hyprctl reload"
|
|
||||||
", Print, exec, hyprshot-gui"
|
|
||||||
|
|
||||||
# "$mod SHIFT, E, exec, pkill Hyprland"
|
|
||||||
# "$mod, G, togglegroup,"
|
|
||||||
# "$mod SHIFT, N, changegroupactive, f"
|
|
||||||
# "$mod SHIFT, P, changegroupactive, b"
|
|
||||||
# "$mod ALT, ,resizeactive,"
|
|
||||||
|
|
||||||
# media keys
|
|
||||||
", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
|
|
||||||
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
|
||||||
", XF86AudioPlay, exec, playerctl play-pause"
|
|
||||||
", XF86AudioPause, exec, playerctl pause"
|
|
||||||
", XF86AudioStop, exec, playerctl stop"
|
|
||||||
", XF86AudioNext, exec, playerctl next"
|
|
||||||
", XF86AudioPrev, exec, playerctl previous"
|
|
||||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
", XF86MonBrightnessUp, exec, brightnessctl --class backlight set 5%+"
|
|
||||||
", XF86MonBrightnessDown, exec, brightnessctl --class backlight set 5%-"
|
|
||||||
|
|
||||||
# move focus
|
|
||||||
"$mod, left, movefocus, l"
|
|
||||||
"$mod, H, movefocus, l"
|
|
||||||
"$mod, right, movefocus, r"
|
|
||||||
"$mod, L, movefocus, r"
|
|
||||||
"$mod, up, movefocus, u"
|
|
||||||
"$mod, K, movefocus, u"
|
|
||||||
"$mod, down, movefocus, d"
|
|
||||||
"$mod, J, movefocus, d"
|
|
||||||
|
|
||||||
# move window
|
|
||||||
"$mod SHIFT, left, movewindow, l"
|
|
||||||
"$mod SHIFT, H, movewindow, l"
|
|
||||||
"$mod SHIFT, right, movewindow, r"
|
|
||||||
"$mod SHIFT, L, movewindow, r"
|
|
||||||
"$mod SHIFT, up, movewindow, u"
|
|
||||||
"$mod SHIFT, K, movewindow, u"
|
|
||||||
"$mod SHIFT, down, movewindow, d"
|
|
||||||
"$mod SHIFT, J, movewindow, d"
|
|
||||||
|
|
||||||
# Switch workspaces with mainMod + [0-9]
|
|
||||||
"$mod, 1, workspace, 1"
|
|
||||||
"$mod, 2, workspace, 2"
|
|
||||||
"$mod, 3, workspace, 3"
|
|
||||||
"$mod, 4, workspace, 4"
|
|
||||||
"$mod, 5, workspace, 5"
|
|
||||||
"$mod, 6, workspace, 6"
|
|
||||||
"$mod, 7, workspace, 7"
|
|
||||||
"$mod, 8, workspace, 8"
|
|
||||||
"$mod, 9, workspace, 9"
|
|
||||||
"$mod, 0, workspace, 10"
|
|
||||||
|
|
||||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
||||||
"$mod SHIFT, 1, movetoworkspace, 1"
|
|
||||||
"$mod SHIFT, 2, movetoworkspace, 2"
|
|
||||||
"$mod SHIFT, 3, movetoworkspace, 3"
|
|
||||||
"$mod SHIFT, 4, movetoworkspace, 4"
|
|
||||||
"$mod SHIFT, 5, movetoworkspace, 5"
|
|
||||||
"$mod SHIFT, 6, movetoworkspace, 6"
|
|
||||||
"$mod SHIFT, 7, movetoworkspace, 7"
|
|
||||||
"$mod SHIFT, 8, movetoworkspace, 8"
|
|
||||||
"$mod SHIFT, 9, movetoworkspace, 9"
|
|
||||||
"$mod SHIFT, 0, movetoworkspace, 10"
|
|
||||||
|
|
||||||
# Move active window to a workspace without following with mainMod + CTRL + [0-9]
|
|
||||||
"$mod CTRL, 1, movetoworkspacesilent, 1"
|
|
||||||
"$mod CTRL, 2, movetoworkspacesilent, 2"
|
|
||||||
"$mod CTRL, 3, movetoworkspacesilent, 3"
|
|
||||||
"$mod CTRL, 4, movetoworkspacesilent, 4"
|
|
||||||
"$mod CTRL, 5, movetoworkspacesilent, 5"
|
|
||||||
"$mod CTRL, 6, movetoworkspacesilent, 6"
|
|
||||||
"$mod CTRL, 7, movetoworkspacesilent, 7"
|
|
||||||
"$mod CTRL, 8, movetoworkspacesilent, 8"
|
|
||||||
"$mod CTRL, 9, movetoworkspacesilent, 9"
|
|
||||||
"$mod CTRL, 0, movetoworkspacesilent, 10"
|
|
||||||
]
|
|
||||||
++
|
|
||||||
# Screen lock
|
|
||||||
(
|
|
||||||
let
|
|
||||||
swaylock = lib.getExe config.programs.swaylock.package;
|
|
||||||
in
|
|
||||||
lib.optionals config.programs.swaylock.enable [
|
|
||||||
"$mod,TAB,exec,${swaylock} --daemonize"
|
|
||||||
]
|
|
||||||
)
|
|
||||||
++
|
|
||||||
# Notification manager
|
|
||||||
(
|
|
||||||
let
|
|
||||||
makoctl = lib.getExe' config.services.mako.package "makoctl";
|
|
||||||
in
|
|
||||||
lib.optionals config.services.mako.enable [
|
|
||||||
"$mod,w,exec,${makoctl} dismiss"
|
|
||||||
"$mod SHIFT,W,exec,${makoctl} restore"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
# plugin = {
|
|
||||||
# hyprbars = {
|
|
||||||
# bar_text_size = 10;
|
|
||||||
# bar_height = 16;
|
|
||||||
# bar_text_font = "Ubuntu Nerd Font";
|
|
||||||
# bar_precedence_over_border = true;
|
|
||||||
# bar_color = "rgb(${palette.base01})";
|
|
||||||
|
|
||||||
# hyprbars-button = [ "rgb(${palette.base03}), 14, , hyprctl dispatch killactive" ];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,80 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
getHostname = x: lib.last (lib.splitString "@" x);
|
|
||||||
# remoteColorschemes = lib.mapAttrs' (n: v: {
|
|
||||||
# name = getHostname n;
|
|
||||||
# value = v.config.colorscheme.rawColorscheme.colors.${config.colorscheme.mode};
|
|
||||||
# }) outputs.homeConfigurations;
|
|
||||||
rgb = color: "rgb(${lib.removePrefix "#" color})";
|
|
||||||
rgba = color: alpha: "rgba(${lib.removePrefix "#" color}${alpha})";
|
|
||||||
|
|
||||||
hyprbars =
|
|
||||||
(pkgs.hyprlandPlugins.hyprbars.override {
|
|
||||||
# Make sure it's using the same hyprland package as we are
|
|
||||||
hyprland = config.wayland.windowManager.hyprland.package;
|
|
||||||
}).overrideAttrs
|
|
||||||
(old: {
|
|
||||||
# Yeet the initialization notification (I hate it)
|
|
||||||
postPatch =
|
|
||||||
(old.postPatch or "")
|
|
||||||
+ ''
|
|
||||||
${lib.getExe pkgs.gnused} -i '/Initialized successfully/d' main.cpp
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
in
|
|
||||||
{
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
plugins = [ hyprbars ];
|
|
||||||
settings = {
|
|
||||||
"plugin:hyprbars" = {
|
|
||||||
bar_height = 25;
|
|
||||||
# bar_color = rgba config.colorscheme.colors.surface "dd";
|
|
||||||
# "col.text" = rgb config.colorscheme.colors.primary;
|
|
||||||
# bar_text_font = config.fontProfiles.regular.name;
|
|
||||||
# bar_text_size = config.fontProfiles.regular.size;
|
|
||||||
bar_part_of_window = true;
|
|
||||||
bar_precedence_over_border = true;
|
|
||||||
hyprbars-button =
|
|
||||||
let
|
|
||||||
closeAction = "hyprctl dispatch killactive";
|
|
||||||
|
|
||||||
isOnSpecial = ''hyprctl activewindow -j | jq -re 'select(.workspace.name == "special")' >/dev/null'';
|
|
||||||
moveToSpecial = "hyprctl dispatch movetoworkspacesilent special";
|
|
||||||
moveToActive = "hyprctl dispatch movetoworkspacesilent name:$(hyprctl -j activeworkspace | jq -re '.name')";
|
|
||||||
minimizeAction = "${isOnSpecial} && ${moveToActive} || ${moveToSpecial}";
|
|
||||||
|
|
||||||
maximizeAction = "hyprctl dispatch fullscreen 1";
|
|
||||||
in
|
|
||||||
[
|
|
||||||
# Red close button
|
|
||||||
# "${rgb config.colorscheme.colors.red},12,,${closeAction}"
|
|
||||||
# # Yellow "minimize" (send to special workspace) button
|
|
||||||
# "${rgb config.colorscheme.colors.yellow},12,,${minimizeAction}"
|
|
||||||
# # Green "maximize" (fullscreen) button
|
|
||||||
# "${rgb config.colorscheme.colors.green},12,,${maximizeAction}"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# windowrulev2 =
|
|
||||||
# [
|
|
||||||
# "plugin:hyprbars:bar_color ${rgba config.colorscheme.colors.primary "ee"}, focus:1"
|
|
||||||
# "plugin:hyprbars:title_color ${rgb config.colorscheme.colors.on_primary}, focus:1"
|
|
||||||
# ]
|
|
||||||
# ++ (lib.flatten (
|
|
||||||
# lib.mapAttrsToList (name: colors: [
|
|
||||||
# "plugin:hyprbars:bar_color ${rgba colors.primary_container "dd"}, title:\\[${name}\\].*"
|
|
||||||
# "plugin:hyprbars:title_color ${rgb colors.on_primary_container}, title:\\[${name}\\].*"
|
|
||||||
|
|
||||||
# "plugin:hyprbars:bar_color ${rgba colors.primary "ee"}, title:\\[${name}\\].*, focus:1"
|
|
||||||
# "plugin:hyprbars:title_color ${rgb colors.on_primary}, title:\\[${name}\\].*, focus:1"
|
|
||||||
# ]) remoteColorschemes
|
|
||||||
# ));
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
programs.hyprlock.enable = true;
|
|
||||||
programs.hyprlock.settings = {
|
|
||||||
general = {
|
|
||||||
disable_loading_bar = true;
|
|
||||||
hide_cursor = true;
|
|
||||||
ignore_empty_input = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
background = [
|
|
||||||
{
|
|
||||||
color = "#${palette.base00}";
|
|
||||||
# path = "screenshot";
|
|
||||||
# blur_passes = 3;
|
|
||||||
# blur_size = 8;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
input-field = [
|
|
||||||
{
|
|
||||||
size = "200, 50";
|
|
||||||
position = "0, -80";
|
|
||||||
monitor = "";
|
|
||||||
dots_center = true;
|
|
||||||
fade_on_empty = false;
|
|
||||||
font_color = "#${palette.base0B}";
|
|
||||||
inner_color = "#${palette.base01}";
|
|
||||||
outer_color = "#${palette.base05}";
|
|
||||||
outline_thickness = 5;
|
|
||||||
placeholder_text = "Password...";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [ libnotify ];
|
|
||||||
|
|
||||||
services.mako = {
|
|
||||||
enable = true;
|
|
||||||
defaultTimeout = 5000; # milliseconds, can be overwritten by notification sender
|
|
||||||
# backgroundColor = "#${palette.base00}"; TODO fix
|
|
||||||
# textColor = "#${palette.base05}";
|
|
||||||
# borderColor = "#${palette.base0D}";
|
|
||||||
# progressColor = "over #${palette.base02}";
|
|
||||||
# extraConfig = ''
|
|
||||||
# [urgency=high]
|
|
||||||
# border-color=#${palette.base09}
|
|
||||||
# '';
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,62 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
swaylock = "${config.programs.swaylock.package}/bin/swaylock";
|
|
||||||
pgrep = "${pkgs.procps}/bin/pgrep";
|
|
||||||
pactl = "${pkgs.pulseaudio}/bin/pactl";
|
|
||||||
hyprctl = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl";
|
|
||||||
swaymsg = "${config.wayland.windowManager.sway.package}/bin/swaymsg";
|
|
||||||
|
|
||||||
isLocked = "${pgrep} -x ${swaylock}";
|
|
||||||
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.
|
|
||||||
afterLockTimeout =
|
|
||||||
{
|
|
||||||
timeout,
|
|
||||||
command,
|
|
||||||
resumeCommand ? null,
|
|
||||||
}:
|
|
||||||
[
|
|
||||||
{
|
|
||||||
timeout = lockTime + timeout;
|
|
||||||
inherit command resumeCommand;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "${isLocked} && ${command}";
|
|
||||||
inherit resumeCommand timeout;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services.swayidle = {
|
|
||||||
enable = true;
|
|
||||||
systemdTarget = "graphical-session.target";
|
|
||||||
timeouts =
|
|
||||||
# Lock screen
|
|
||||||
[
|
|
||||||
{
|
|
||||||
timeout = lockTime;
|
|
||||||
command = "${swaylock} --daemonize --grace 15";
|
|
||||||
}
|
|
||||||
]
|
|
||||||
++
|
|
||||||
# Turn off displays (hyprland)
|
|
||||||
(lib.optionals config.wayland.windowManager.hyprland.enable (afterLockTimeout {
|
|
||||||
timeout = 300;
|
|
||||||
command = "${hyprctl} dispatch dpms off";
|
|
||||||
resumeCommand = "${hyprctl} dispatch dpms on";
|
|
||||||
}))
|
|
||||||
++
|
|
||||||
# Turn off displays (sway)
|
|
||||||
(lib.optionals config.wayland.windowManager.sway.enable (afterLockTimeout {
|
|
||||||
timeout = 300;
|
|
||||||
command = "${swaymsg} 'output * dpms off'";
|
|
||||||
resumeCommand = "${swaymsg} 'output * dpms on'";
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (config.colorscheme) colors;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
programs.swaylock = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
color = "000000";
|
|
||||||
ignore-empty-password = true;
|
|
||||||
indicator-idle-visible = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
palette = (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name}).palette;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
systemd.enable = true;
|
|
||||||
settings.mainBar = builtins.fromJSON (builtins.readFile ./config.json);
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."waybar/style.css".source = ./style.css;
|
|
||||||
xdg.configFile."waybar/theme.css".text = ''
|
|
||||||
/*
|
|
||||||
bg - background
|
|
||||||
fg - foreground
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Main Colors */
|
|
||||||
@define-color background #${palette.base00};
|
|
||||||
@define-color foreground #${palette.base05};
|
|
||||||
|
|
||||||
/* Workspace Button Colors */
|
|
||||||
@define-color hover-bg #${palette.base01};
|
|
||||||
@define-color hover-fg #${palette.base05};
|
|
||||||
@define-color active-bg #${palette.base02};
|
|
||||||
@define-color active-fg #${palette.base0A};
|
|
||||||
@define-color urgent-bg #${palette.base08};
|
|
||||||
@define-color urgent-fg #${palette.base00};
|
|
||||||
'';
|
|
||||||
}
|
|
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
home.packages = [ pkgs.waypipe ];
|
|
||||||
systemd.user.services = {
|
|
||||||
waypipe-client = {
|
|
||||||
Unit.Description = "Runs waypipe on startup to support SSH forwarding";
|
|
||||||
Service = {
|
|
||||||
ExecStartPre = "${lib.getExe' pkgs.coreutils "mkdir"} %h/.waypipe -p";
|
|
||||||
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";
|
|
||||||
};
|
|
||||||
Install.WantedBy = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
waypipe-server = {
|
|
||||||
Unit.Description = "Runs waypipe on startup to support SSH forwarding";
|
|
||||||
Service = {
|
|
||||||
Type = "simple";
|
|
||||||
ExecStartPre = "${lib.getExe' pkgs.coreutils "mkdir"} %h/.waypipe -p";
|
|
||||||
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";
|
|
||||||
};
|
|
||||||
Install.WantedBy = [ "default.target" ];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,40 +0,0 @@
|
|||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [ wlogout ];
|
|
||||||
|
|
||||||
# xdg.configFile."wlogout/style.css".text = ''
|
|
||||||
# * {
|
|
||||||
# all: unset;
|
|
||||||
# font-family: JetBrains Mono Nerd Font;
|
|
||||||
# }
|
|
||||||
|
|
||||||
# window {
|
|
||||||
# background-color: #${palette.base00};
|
|
||||||
# }
|
|
||||||
|
|
||||||
# button {
|
|
||||||
# color: #${palette.base01};
|
|
||||||
# font-size: 64px;
|
|
||||||
# background-color: rgba(0,0,0,0);
|
|
||||||
# outline-style: none;
|
|
||||||
# margin: 5px;
|
|
||||||
# }
|
|
||||||
|
|
||||||
# button:focus, button:active, button:hover {
|
|
||||||
# color: #${palette.base0D};
|
|
||||||
# transition: ease 0.4s;
|
|
||||||
# }
|
|
||||||
# '';
|
|
||||||
}
|
|
@ -1,87 +0,0 @@
|
|||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (inputs.nix-colors.colorschemes.${builtins.toString config.colorscheme.name})
|
|
||||||
palette
|
|
||||||
;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [ wofi ];
|
|
||||||
|
|
||||||
xdg.configFile."wofi/config".source = ./config;
|
|
||||||
xdg.configFile."wofi/style.css".text = ''
|
|
||||||
window {
|
|
||||||
margin: 5px;
|
|
||||||
border: 5px solid #181926;
|
|
||||||
background-color: #${palette.base00};
|
|
||||||
border-radius: 15px;
|
|
||||||
font-family: "JetBrainsMono";
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#input {
|
|
||||||
all: unset;
|
|
||||||
min-height: 36px;
|
|
||||||
padding: 4px 10px;
|
|
||||||
margin: 4px;
|
|
||||||
border: none;
|
|
||||||
color: #${palette.base05};
|
|
||||||
font-weight: bold;
|
|
||||||
background-color: #${palette.base01};
|
|
||||||
outline: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
margin: 10px;
|
|
||||||
margin-bottom: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#inner-box {
|
|
||||||
margin: 4px;
|
|
||||||
padding: 10px;
|
|
||||||
font-weight: bold;
|
|
||||||
border-radius: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#outer-box {
|
|
||||||
margin: 0px;
|
|
||||||
padding: 3px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
border: 5px solid #${palette.base01};
|
|
||||||
}
|
|
||||||
|
|
||||||
#scroll {
|
|
||||||
margin-top: 5px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#text:selected {
|
|
||||||
color: #${palette.base01};
|
|
||||||
margin: 0px 0px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry {
|
|
||||||
margin: 0px 0px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry:selected {
|
|
||||||
margin: 0px 0px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 15px;
|
|
||||||
background: #${palette.base0D};
|
|
||||||
background-size: 400% 400%;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
{ config, ... }:
|
|
||||||
let
|
|
||||||
inherit (config.colorscheme) colors;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
programs.zathura = {
|
|
||||||
enable = true;
|
|
||||||
options = {
|
|
||||||
selection-clipboard = "clipboard";
|
|
||||||
# TODO fix
|
|
||||||
# font = "${config.fontProfiles.regular.name} ${toString config.fontProfiles.regular.size}";
|
|
||||||
# recolor = true;
|
|
||||||
# default-bg = "${colors.surface}";
|
|
||||||
# default-fg = "${colors.surface_bright}";
|
|
||||||
# statusbar-bg = "${colors.surface_container}";
|
|
||||||
# statusbar-fg = "${colors.on_surface_variant}";
|
|
||||||
# inputbar-bg = "${colors.surface}";
|
|
||||||
# inputbar-fg = "${colors.on_secondary}";
|
|
||||||
# notification-bg = "${colors.surface}";
|
|
||||||
# notification-fg = "${colors.on_secondary}";
|
|
||||||
# notification-error-bg = "${colors.error}";
|
|
||||||
# notification-error-fg = "${colors.on_error}";
|
|
||||||
# notification-warning-bg = "${colors.error}";
|
|
||||||
# notification-warning-fg = "${colors.on_error}";
|
|
||||||
# highlight-color = "${colors.tertiary}";
|
|
||||||
# highlight-active-color = "${colors.secondary}";
|
|
||||||
# completion-bg = "${colors.surface_bright}";
|
|
||||||
# completion-fg = "${colors.on_surface}";
|
|
||||||
# completions-highlight-bg = "${colors.secondary}";
|
|
||||||
# completions-highlight-fg = "${colors.on_secondary}";
|
|
||||||
# recolor-lightcolor = "${colors.surface}";
|
|
||||||
# recolor-darkcolor = "${colors.inverse_surface}";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [ ../rofi ];
|
|
||||||
|
|
||||||
services.dunst.enable = true;
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
i3status-rust = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nitrogen
|
|
||||||
xfce.xfce4-screenshooter
|
|
||||||
pulseaudio # For pactl commands
|
|
||||||
];
|
|
||||||
xsession.enable = true; # Give gui programs access to sessionVariables
|
|
||||||
# Prevent screen from going blank (check these settings with `xset q`)
|
|
||||||
# And disable bell sound (b)
|
|
||||||
xsession.initExtra = ''
|
|
||||||
${pkgs.xorg.xset}/bin/xset s off
|
|
||||||
${pkgs.xorg.xset}/bin/xset -dpms
|
|
||||||
${pkgs.xorg.xset}/bin/xset b off
|
|
||||||
'';
|
|
||||||
xsession.windowManager.i3 = {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.i3-gaps;
|
|
||||||
};
|
|
||||||
|
|
||||||
xsession.importedVariables = [ ];
|
|
||||||
|
|
||||||
# Overwrite default home-manager config file
|
|
||||||
xdg.configFile."i3/config".source = lib.mkForce (
|
|
||||||
if config.hostName == "kardorf" then ./i3/config-kardorf else ./i3/config
|
|
||||||
);
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/i3/scripts" = {
|
|
||||||
source = ./i3/scripts;
|
|
||||||
recursive = true;
|
|
||||||
};
|
|
||||||
".config/i3/workspace-messaging.json".source = ./i3/workspace-chat-element-tele.json;
|
|
||||||
".config/i3status-rust/config.toml".source = ./i3status-rust/config.toml;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionPath = [ "/home/julian/.config/i3/scripts" ];
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
shellIntegration.enableFishIntegration = true;
|
|
||||||
themeFile = "gruvbox-dark";
|
|
||||||
settings = {
|
|
||||||
enable_audio_bell = false;
|
|
||||||
confirm_os_window_close = 0; # no ask on quit
|
|
||||||
};
|
|
||||||
font = {
|
|
||||||
package = pkgs.dejavu_fonts;
|
|
||||||
name = "DejaVu Sans";
|
|
||||||
size = 12;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# home.shellAliases = {
|
|
||||||
# ssh = "kitten ssh"; # Copy kitten terminfo to remote
|
|
||||||
# };
|
|
||||||
|
|
||||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "kitty") "kitty";
|
|
||||||
}
|
|
@ -1,164 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
imports = [ inputs.nixvim.homeManagerModules.nixvim ];
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "nvim";
|
|
||||||
VISUAL = "nvim";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
git
|
|
||||||
gnumake
|
|
||||||
gcc
|
|
||||||
ripgrep
|
|
||||||
fd
|
|
||||||
stylua
|
|
||||||
black
|
|
||||||
nixfmt-rfc-style # nixfmt
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.nixvim = {
|
|
||||||
enable = true;
|
|
||||||
viAlias = true;
|
|
||||||
vimAlias = true;
|
|
||||||
|
|
||||||
colorschemes.catppuccin = {
|
|
||||||
enable = true;
|
|
||||||
settings.flavour = "mocha";
|
|
||||||
};
|
|
||||||
|
|
||||||
globals.mapleader = " ";
|
|
||||||
opts = {
|
|
||||||
number = false;
|
|
||||||
relativenumber = false;
|
|
||||||
|
|
||||||
};
|
|
||||||
clipboard.register = "unnamedplus"; # Use system clipboard
|
|
||||||
|
|
||||||
keymaps = [
|
|
||||||
{
|
|
||||||
action = "<cmd>Telescope live_grep<cr>";
|
|
||||||
key = "<leader>/";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
action = "<cmd>Telescope find_files<cr>";
|
|
||||||
key = "<leader><space>";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
action = "<cmd>Telescope file_browser<cr>";
|
|
||||||
key = "<leader>.";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
action = "<cmd>Neogit<cr>";
|
|
||||||
key = "<leader>gg";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
key = "<C-s>";
|
|
||||||
action = "<esc><cmd>lua require('conform').format()<cr><cmd>write<cr>";
|
|
||||||
mode = [
|
|
||||||
"i"
|
|
||||||
"x"
|
|
||||||
"n"
|
|
||||||
"s"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
plugins = {
|
|
||||||
lualine.enable = true;
|
|
||||||
commentary.enable = true;
|
|
||||||
which-key.enable = true;
|
|
||||||
treesitter.enable = true; # enables all grammar packages
|
|
||||||
neogit.enable = true; # like magit
|
|
||||||
trouble.enable = true;
|
|
||||||
web-devicons.enable = true;
|
|
||||||
|
|
||||||
# Shows file trees
|
|
||||||
oil = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
view_options.show_hidden = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Code formatting
|
|
||||||
conform-nvim = {
|
|
||||||
enable = true;
|
|
||||||
settings.formatters_by_ft = with pkgs; {
|
|
||||||
lua = [ "stylua" ];
|
|
||||||
python = [ "black" ];
|
|
||||||
nix = [ "nixfmt" ];
|
|
||||||
};
|
|
||||||
# extraOptions = {
|
|
||||||
# default_format_opts.lsp_format = "fallback";
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
|
|
||||||
# autocomplete
|
|
||||||
cmp = {
|
|
||||||
enable = true;
|
|
||||||
autoEnableSources = true;
|
|
||||||
settings.sources = [
|
|
||||||
{ name = "nvim_lsp"; }
|
|
||||||
{ name = "path"; }
|
|
||||||
{ name = "buffer"; }
|
|
||||||
];
|
|
||||||
settings.mapping = {
|
|
||||||
"<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
|
|
||||||
"<C-j>" = "cmp.mapping.select_next_item()";
|
|
||||||
"<C-k>" = "cmp.mapping.select_prev_item()";
|
|
||||||
"<C-e>" = "cmp.mapping.abort()";
|
|
||||||
"<CR>" = "cmp.mapping.confirm({ select = true })";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Fuzzy finder
|
|
||||||
telescope = {
|
|
||||||
enable = true;
|
|
||||||
settings.defaults.mappings = {
|
|
||||||
i = {
|
|
||||||
"<C-j>".__raw = "require('telescope.actions').move_selection_next";
|
|
||||||
"<C-k>".__raw = "require('telescope.actions').move_selection_previous";
|
|
||||||
"<tab>".__raw = "require('telescope.actions').select_default";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extensions = {
|
|
||||||
fzf-native.enable = true;
|
|
||||||
file-browser = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
hidden = true; # show hidden files
|
|
||||||
follow_symlinks = true;
|
|
||||||
no_ignore = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
lsp = {
|
|
||||||
enable = true;
|
|
||||||
servers = {
|
|
||||||
rust_analyzer = {
|
|
||||||
enable = true;
|
|
||||||
installCargo = true;
|
|
||||||
installRustc = true;
|
|
||||||
};
|
|
||||||
nixd.enable = true;
|
|
||||||
pyright.enable = true;
|
|
||||||
dockerls.enable = true;
|
|
||||||
lua_ls.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
home.sessionVariables = {
|
|
||||||
FLAKE = "/home/julian/.dotfiles";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.shellAliases = {
|
|
||||||
"os" = "nh os switch";
|
|
||||||
"hs" = "nh home switch";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [ nh ];
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
# this would need you to config rofi using home-manager
|
|
||||||
# programs.rofi = { enable = true; };
|
|
||||||
|
|
||||||
home.packages = with pkgs; [ rofi ];
|
|
||||||
|
|
||||||
home.file = {
|
|
||||||
".config/rofi/config.rasi".source = ./config.rasi;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,54 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
bat
|
|
||||||
du-dust # Like du tree but better
|
|
||||||
fd # better find
|
|
||||||
fdupes # find and delete duplicate files
|
|
||||||
ffmpeg
|
|
||||||
findutils # locate
|
|
||||||
fzf # Fuzzy finder
|
|
||||||
ghostscript # needed for imagemagick with pdfs
|
|
||||||
imagemagick
|
|
||||||
git
|
|
||||||
gnupg
|
|
||||||
htop
|
|
||||||
jq # Command line JSON processor
|
|
||||||
killall
|
|
||||||
languagetool # Grammar checker
|
|
||||||
lazygit # Git client
|
|
||||||
links2 # Tui web-browser
|
|
||||||
lnav # log analyzing tool
|
|
||||||
mc # Tui file browser
|
|
||||||
# nix-index
|
|
||||||
nmap
|
|
||||||
p7zip # unzip 7zip archives
|
|
||||||
parted
|
|
||||||
pciutils # lspci
|
|
||||||
poppler_utils # Pdf utils including pdfimages
|
|
||||||
libqalculate # Nice tui calculator (qalc)
|
|
||||||
ripgrep # better grep
|
|
||||||
rnr # renaming tool
|
|
||||||
sage # Maths notebooks
|
|
||||||
tealdeer # tldr
|
|
||||||
topgrade # System update
|
|
||||||
tree
|
|
||||||
unetbootin # TODO
|
|
||||||
unixtools.procps # TODO
|
|
||||||
unzip
|
|
||||||
usbutils # lsusb
|
|
||||||
wget
|
|
||||||
wireguard-tools # wg-quick
|
|
||||||
xorg.xkill
|
|
||||||
zip
|
|
||||||
|
|
||||||
## My scripts
|
|
||||||
frajul.edit-config
|
|
||||||
frajul.lntocp
|
|
||||||
frajul.sos
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,72 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
services.blueman-applet.enable = true;
|
|
||||||
services.nextcloud-client.enable = true;
|
|
||||||
services.nextcloud-client.startInBackground = true;
|
|
||||||
services.network-manager-applet.enable = true;
|
|
||||||
|
|
||||||
services.syncthing.tray.enable = true;
|
|
||||||
services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available
|
|
||||||
|
|
||||||
programs.chromium = {
|
|
||||||
enable = true;
|
|
||||||
extensions = [
|
|
||||||
# Tampermonkey
|
|
||||||
{ id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"; }
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
arandr
|
|
||||||
calibre # ebook manager and viewer
|
|
||||||
# digikam
|
|
||||||
discord
|
|
||||||
# dvdisaster
|
|
||||||
# element-desktop
|
|
||||||
# rocketchat-desktop
|
|
||||||
thunderbird
|
|
||||||
tdesktop # telegram
|
|
||||||
# schildichat-desktop # not updated regularly
|
|
||||||
nheko
|
|
||||||
evince # Simple pdf reader, good for focusing on document content
|
|
||||||
firefox
|
|
||||||
# geogebra
|
|
||||||
cheese
|
|
||||||
handbrake
|
|
||||||
kitty # Terminal
|
|
||||||
libnotify
|
|
||||||
libreoffice
|
|
||||||
mate.engrampa
|
|
||||||
nomacs # Image viewer
|
|
||||||
kdePackages.okular # Pdf reader with many features, good for commenting documents
|
|
||||||
pavucontrol
|
|
||||||
pdfsam-basic # Split, merge, etc for pdfs
|
|
||||||
qalculate-gtk # Nice gui calculator
|
|
||||||
qpdfview
|
|
||||||
# qutebrowser
|
|
||||||
# realvnc-vnc-viewer
|
|
||||||
rpi-imager # make isos
|
|
||||||
# rustdesk
|
|
||||||
tor-browser
|
|
||||||
unstable.path-of-building # Path of Building
|
|
||||||
# frajul.pob-dev-version # Path of Building
|
|
||||||
vlc
|
|
||||||
wineWowPackages.stable # 32-bit and 64-bit wine
|
|
||||||
winetricks
|
|
||||||
xclip # x11 clipboard access from terminal
|
|
||||||
xfce.mousepad # simple text editor
|
|
||||||
xournalpp # Edit pdf files
|
|
||||||
zoom-us # Video conferencing
|
|
||||||
zotero # Manage papers and other sources
|
|
||||||
pdfpc # Present slides in pdf form
|
|
||||||
|
|
||||||
## My scripts
|
|
||||||
frajul.open-messaging
|
|
||||||
frajul.xwacomcalibrate
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,85 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
watchexec # Run command when any file in current dir changes
|
|
||||||
android-tools # adb
|
|
||||||
# shellcheck # Check bash scripts for common errors
|
|
||||||
sqlite
|
|
||||||
scrcpy # Mirror android screen to pc
|
|
||||||
cargo
|
|
||||||
clippy
|
|
||||||
cntr # nix debugger
|
|
||||||
conda
|
|
||||||
micromamba # a better, faster conda
|
|
||||||
devcontainer # development container
|
|
||||||
devenv # devbox alternative
|
|
||||||
dbeaver-bin
|
|
||||||
devbox # dev environments using nix
|
|
||||||
distrobox # run commands inside docker containers
|
|
||||||
gcc
|
|
||||||
gradle
|
|
||||||
hexedit
|
|
||||||
unstable.zed-editor
|
|
||||||
jdk
|
|
||||||
julia-bin
|
|
||||||
(texlive.combine {
|
|
||||||
# for rendering latex in inkscape
|
|
||||||
inherit (texlive)
|
|
||||||
scheme-medium
|
|
||||||
standalone
|
|
||||||
amsmath
|
|
||||||
preview
|
|
||||||
;
|
|
||||||
})
|
|
||||||
matlab # Using nix-matlab overlay defined in flake
|
|
||||||
maven
|
|
||||||
nodejs
|
|
||||||
pkg-config # Often needed to build something
|
|
||||||
# pwndbg # improved gdb (debugger)
|
|
||||||
python3
|
|
||||||
rust-analyzer
|
|
||||||
rustc
|
|
||||||
rustfmt
|
|
||||||
# (pkgs.inkscape-with-extensions.override {
|
|
||||||
# inkscapeExtensions = [ pkgs.inkscape-extensions.textext ];
|
|
||||||
# })
|
|
||||||
# inkscape-with-extensions
|
|
||||||
# inkscape-extensions.textext
|
|
||||||
inkscape
|
|
||||||
gcolor3 # Color picker
|
|
||||||
gimp
|
|
||||||
drawio
|
|
||||||
audacity
|
|
||||||
|
|
||||||
deploy-rs
|
|
||||||
sops
|
|
||||||
pandoc # markdown preview
|
|
||||||
docker-compose
|
|
||||||
|
|
||||||
## My scripts
|
|
||||||
frajul.deploy-to-pianopi
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "matlab-rsp" ''
|
|
||||||
matlab -desktop -sd "/home/julian/git/uwa-channel-model" -softwareopengl
|
|
||||||
'')
|
|
||||||
|
|
||||||
(pkgs.writeShellScriptBin "matlab-paper" ''
|
|
||||||
matlab -desktop -sd "/home/julian/dev/phdthesis/Phase B/mainSimulation" -softwareopengl
|
|
||||||
'')
|
|
||||||
(pkgs.writeShellScriptBin "matlab-robotik" ''
|
|
||||||
matlab -desktop -sd "/home/julian/nas-sync/Studium/Vorlesungen-Master/ss24/Robotik2" -softwareopengl
|
|
||||||
'')
|
|
||||||
(pkgs.writeShellScriptBin "matlab-gram" ''
|
|
||||||
export GTK_PATH=/usr/lib/gtk-3.0
|
|
||||||
nix shell nixpkgs#gcc11 --command matlab -desktop -sd "/home/julian/dev/matlab-gram" -softwareopengl
|
|
||||||
'')
|
|
||||||
(pkgs.writeShellScriptBin "expenses-tracker" ''
|
|
||||||
java -jar /home/julian/dev/expensestracker/app/build/libs/app.jar
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
programs.topgrade = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
misc.no_self_update = true;
|
|
||||||
misc.pre_sudo = true; # Cache sudo password for 5 more minutes
|
|
||||||
misc.assume_yes = true;
|
|
||||||
misc.no_retry = true;
|
|
||||||
|
|
||||||
pre_commands."Update flake" =
|
|
||||||
"git -C /home/julian/.dotfiles checkout origin/flake-updates -- flake.lock";
|
|
||||||
|
|
||||||
linux.nix_arguments = "--flake /home/julian/.dotfiles";
|
|
||||||
linux.home_manager_arguments = [
|
|
||||||
"--flake"
|
|
||||||
"/home/julian/.dotfiles"
|
|
||||||
];
|
|
||||||
|
|
||||||
git = {
|
|
||||||
# Additional git repositories to pull
|
|
||||||
repos = [
|
|
||||||
"~/.dotfiles"
|
|
||||||
"~/dev/*"
|
|
||||||
"~/.config/doom"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
programs.wezterm = {
|
|
||||||
enable = true;
|
|
||||||
extraConfig = ''
|
|
||||||
local wezterm = require 'wezterm'
|
|
||||||
local config = {}
|
|
||||||
|
|
||||||
config.color_scheme = 'Catppuccin Mocha'
|
|
||||||
-- config.font = wezterm.font 'JetBrains Mono'
|
|
||||||
-- config.font_size = 12.0
|
|
||||||
config.hide_tab_bar_if_only_one_tab = true
|
|
||||||
config.audible_bell = 'Disabled'
|
|
||||||
config.enable_wayland = false -- Somehow only works for wayland if this is set to false
|
|
||||||
|
|
||||||
config.window_close_confirmation = 'NeverPrompt'
|
|
||||||
|
|
||||||
return config
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables.TERMINAL = lib.mkIf (config.terminal == "wezterm") "wezterm-start-here";
|
|
||||||
|
|
||||||
# Otherwise wezterm does not start in directory of parent process
|
|
||||||
home.packages = [
|
|
||||||
(pkgs.writeShellScriptBin "wezterm-start-here" ''
|
|
||||||
wezterm start --cwd "$PWD"
|
|
||||||
'')
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,91 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
programs.zoxide.enable = true;
|
|
||||||
programs.zoxide.enableFishIntegration = true;
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
exiftool
|
|
||||||
unar # extract archives
|
|
||||||
xdragon # dragndrop
|
|
||||||
poppler_utils # pdf preview
|
|
||||||
fd
|
|
||||||
ripgrep
|
|
||||||
fzf
|
|
||||||
jq # json preview
|
|
||||||
ffmpegthumbnailer
|
|
||||||
xclip
|
|
||||||
];
|
|
||||||
|
|
||||||
home.shellAliases = {
|
|
||||||
y = "yy"; # Yazi shell wrapper (cd on quit)
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.yazi.enable = true;
|
|
||||||
programs.yazi.enableFishIntegration = true;
|
|
||||||
programs.yazi.settings.manager = {
|
|
||||||
sort_by = "modified";
|
|
||||||
sort_reverse = true;
|
|
||||||
show_hidden = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.yazi.keymap = {
|
|
||||||
manager.prepend_keymap = [
|
|
||||||
# Override defaults
|
|
||||||
{
|
|
||||||
on = [ "e" ];
|
|
||||||
run = ''shell --orphan --confirm "pcmanfm &"'';
|
|
||||||
desc = "Open gui file manager";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = [ "<C-o>" ];
|
|
||||||
run = ''shell "$SHELL" --block --confirm'';
|
|
||||||
desc = "Open shell here";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = [ "<C-n>" ];
|
|
||||||
run = ''shell 'dragon -x -i -T "$1"' --confirm'';
|
|
||||||
desc = "Dragndrop via dragon";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
on = [ "<Enter>" ];
|
|
||||||
run = "plugin --sync smart-enter";
|
|
||||||
desc = "Enter the child directory, or open the file";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
input.prepend_keymap = [
|
|
||||||
{
|
|
||||||
on = [ "<Esc>" ];
|
|
||||||
run = "close";
|
|
||||||
desc = "Cancel input";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.yazi.settings.opener = {
|
|
||||||
play = [
|
|
||||||
{
|
|
||||||
run = ''vlc "$1"'';
|
|
||||||
orphan = true;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."yazi/flavors" = {
|
|
||||||
source = "${inputs.yazi-flavors}";
|
|
||||||
};
|
|
||||||
xdg.configFile."yazi/plugins/smart-enter.yazi/init.lua".text = ''
|
|
||||||
return {
|
|
||||||
entry = function()
|
|
||||||
local h = cx.active.current.hovered
|
|
||||||
ya.manager_emit(h and h.cha.is_dir and "enter" or "open", { hovered = true })
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
programs.yazi.theme = {
|
|
||||||
flavor.use = "catppuccin-mocha";
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,45 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
home.file = {
|
|
||||||
".config/starship.toml".source = ./starship.toml;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [ starship ];
|
|
||||||
|
|
||||||
programs.starship = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.zsh = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
initExtra =
|
|
||||||
builtins.readFile ./key-bindings.zsh
|
|
||||||
+ builtins.readFile ./functions.zsh
|
|
||||||
+ builtins.readFile ./last-working-dir.zsh
|
|
||||||
+ builtins.readFile ./dir-navigation.zsh;
|
|
||||||
|
|
||||||
zplug = {
|
|
||||||
enable = true;
|
|
||||||
plugins = [
|
|
||||||
# list of plugins: https://github.com/unixorn/awesome-zsh-plugins
|
|
||||||
{ name = "agkozak/zsh-z"; }
|
|
||||||
{
|
|
||||||
name = "zsh-users/zsh-completions";
|
|
||||||
}
|
|
||||||
|
|
||||||
# make it behave like fish
|
|
||||||
{ name = "zsh-users/zsh-autosuggestions"; }
|
|
||||||
{ name = "zsh-users/zsh-history-substring-search"; }
|
|
||||||
{
|
|
||||||
name = "zsh-users/zsh-syntax-highlighting";
|
|
||||||
} # must be last sourced plugin
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,55 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
../features/fonts
|
|
||||||
# ../features/cli
|
|
||||||
# ../features/helix
|
|
||||||
] ++ (builtins.attrValues outputs.homeManagerModules);
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
package = lib.mkDefault pkgs.nix;
|
|
||||||
settings = {
|
|
||||||
experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
"ca-derivations"
|
|
||||||
];
|
|
||||||
# warn-dirty = false; # TODO: do I want it? also for systems
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
colorscheme.name = "catppuccin-mocha";
|
|
||||||
|
|
||||||
# systemd.user.startServices = "sd-switch"; # TODO: what is this
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
home-manager.enable = true;
|
|
||||||
git.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home = {
|
|
||||||
username = lib.mkDefault "julian";
|
|
||||||
homeDirectory = lib.mkDefault "/home/${config.home.username}";
|
|
||||||
stateVersion = lib.mkDefault "23.11";
|
|
||||||
|
|
||||||
sessionPath = [ "$HOME/.local/bin" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: colorscheme
|
|
||||||
# colorscheme.mode = lib.mkOverride 1499 "dark";
|
|
||||||
# specialisation = {
|
|
||||||
# dark.configuration.colorscheme.mode = lib.mkOverride 1498 "dark";
|
|
||||||
# light.configuration.colorscheme.mode = lib.mkOverride 1498 "light";
|
|
||||||
# };
|
|
||||||
# home.file = {
|
|
||||||
# ".colorscheme.json".text = builtins.toJSON config.colorscheme;
|
|
||||||
# };
|
|
||||||
|
|
||||||
}
|
|
@ -1,48 +0,0 @@
|
|||||||
# Only apply this to home-manager standalone
|
|
||||||
{
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
# Apply overlays
|
|
||||||
nixpkgs = {
|
|
||||||
overlays = builtins.attrValues outputs.overlays;
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
allowUnfreePredicate = _: true; # TODO: what is this
|
|
||||||
permittedInsecurePackages = [
|
|
||||||
"olm-3.2.16"
|
|
||||||
];
|
|
||||||
warn-dirty = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Setup binary caches
|
|
||||||
nix.settings = {
|
|
||||||
substituters = [
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
"https://cache.nixos.org/"
|
|
||||||
"https://hyprland.cachix.org"
|
|
||||||
"http://binarycache.julian-mutter.de"
|
|
||||||
];
|
|
||||||
trusted-public-keys = [
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
|
||||||
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E="
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-users = [
|
|
||||||
"root"
|
|
||||||
"@wheel"
|
|
||||||
];
|
|
||||||
|
|
||||||
experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
"ca-derivations"
|
|
||||||
];
|
|
||||||
|
|
||||||
# nix.settings. # warn-dirty = false; # TODO: do I want this
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,27 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./global
|
|
||||||
|
|
||||||
./features/fish
|
|
||||||
./features/direnv
|
|
||||||
./features/topgrade
|
|
||||||
./features/neovim
|
|
||||||
./features/kitty
|
|
||||||
./features/wezterm
|
|
||||||
./features/yazi
|
|
||||||
./features/emacs
|
|
||||||
./features/i3
|
|
||||||
./features/nix-helper
|
|
||||||
./features/desktop
|
|
||||||
|
|
||||||
./features/suites/cli
|
|
||||||
./features/suites/desktop
|
|
||||||
./features/suites/development
|
|
||||||
|
|
||||||
];
|
|
||||||
|
|
||||||
hostName = "kardorf";
|
|
||||||
is-nixos = true;
|
|
||||||
terminal = "kitty";
|
|
||||||
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./global
|
|
||||||
|
|
||||||
./features/fish
|
|
||||||
./features/topgrade
|
|
||||||
./features/neovim
|
|
||||||
./features/wezterm
|
|
||||||
./features/yazi
|
|
||||||
./features/nix-helper
|
|
||||||
./features/desktop
|
|
||||||
];
|
|
||||||
|
|
||||||
hostName = "pianonix";
|
|
||||||
is-nixos = true;
|
|
||||||
terminal = "wezterm";
|
|
||||||
|
|
||||||
services.syncthing.tray.enable = true;
|
|
||||||
services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
music-reader
|
|
||||||
sheet-organizer
|
|
||||||
|
|
||||||
xournalpp
|
|
||||||
musescore
|
|
||||||
|
|
||||||
onboard
|
|
||||||
];
|
|
||||||
|
|
||||||
# Autostart link
|
|
||||||
home.file = {
|
|
||||||
".config/autostart/sheet-organizer.desktop".source =
|
|
||||||
"${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop";
|
|
||||||
".config/sheet-organizer/config.toml".text = ''
|
|
||||||
working_directory = "/home/julian/Klavier"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjSZYdoF/51F+ykcBAYVCzCPTF5EEigWBL1APiR0h+H
|
|
@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
../global
|
|
||||||
|
|
||||||
../features/fish
|
|
||||||
../features/direnv
|
|
||||||
../features/topgrade
|
|
||||||
../features/neovim
|
|
||||||
../features/yazi
|
|
||||||
../features/emacs
|
|
||||||
../features/nix-helper
|
|
||||||
];
|
|
||||||
|
|
||||||
hostName = "aspi";
|
|
||||||
is-nixos = false;
|
|
||||||
# terminal = "kitty";
|
|
||||||
|
|
||||||
home.packages =
|
|
||||||
lib.lists.concatMap (packages-list-file: import packages-list-file { inherit pkgs; })
|
|
||||||
[
|
|
||||||
./fonts.nix
|
|
||||||
./packages.nix
|
|
||||||
];
|
|
||||||
}
|
|
71
homes/x86_64-linux/julian@aspi/default.nix
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
{
|
||||||
|
# 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.
|
||||||
|
lib,
|
||||||
|
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||||
|
pkgs,
|
||||||
|
# You also have access to your flake's inputs.
|
||||||
|
inputs,
|
||||||
|
|
||||||
|
# Additional metadata is provided by Snowfall Lib.
|
||||||
|
namespace, # The namespace used for your flake, defaulting to "internal" if not set.
|
||||||
|
home, # The home architecture for this host (eg. `x86_64-linux`).
|
||||||
|
target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
|
||||||
|
format, # A normalized name for the home target (eg. `home`).
|
||||||
|
virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
|
||||||
|
host, # The host name for this home.
|
||||||
|
|
||||||
|
# All other arguments come from the home home.
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.username = "julian";
|
||||||
|
home.homeDirectory = "/home/julian";
|
||||||
|
|
||||||
|
modules = {
|
||||||
|
non-nixos.is-nixos = true;
|
||||||
|
shell = {
|
||||||
|
# zsh.enable = true;
|
||||||
|
fish.enable = true;
|
||||||
|
direnv.enable = true;
|
||||||
|
};
|
||||||
|
topgrade.enable = true;
|
||||||
|
neovim.enable = true;
|
||||||
|
kitty = {
|
||||||
|
enable = true;
|
||||||
|
mkDefault = true;
|
||||||
|
};
|
||||||
|
wezterm = {
|
||||||
|
enable = true;
|
||||||
|
mkDefault = false;
|
||||||
|
};
|
||||||
|
alacritty = {
|
||||||
|
enable = true;
|
||||||
|
mkDefault = false;
|
||||||
|
};
|
||||||
|
yazi.enable = true;
|
||||||
|
emacs.enable = true;
|
||||||
|
|
||||||
|
i3.enable = true;
|
||||||
|
|
||||||
|
# hyprland.enable = true;
|
||||||
|
nix-helper.enable = true;
|
||||||
|
|
||||||
|
desktop.enable = true;
|
||||||
|
fonts.enable = true;
|
||||||
|
|
||||||
|
suites = {
|
||||||
|
cli.enable = true;
|
||||||
|
desktop.enable = true;
|
||||||
|
development.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
# ======================== DO NOT CHANGE THIS ========================
|
||||||
|
home.stateVersion = "23.11";
|
||||||
|
# ======================== DO NOT CHANGE THIS ========================
|
||||||
|
}
|
57
homes/x86_64-linux/julian@kardorf/default.nix
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
# 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.
|
||||||
|
lib,
|
||||||
|
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||||
|
pkgs,
|
||||||
|
# You also have access to your flake's inputs.
|
||||||
|
inputs,
|
||||||
|
|
||||||
|
# Additional metadata is provided by Snowfall Lib.
|
||||||
|
namespace, # The namespace used for your flake, defaulting to "internal" if not set.
|
||||||
|
home, # The home architecture for this host (eg. `x86_64-linux`).
|
||||||
|
target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
|
||||||
|
format, # A normalized name for the home target (eg. `home`).
|
||||||
|
virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
|
||||||
|
host, # The host name for this home.
|
||||||
|
|
||||||
|
# All other arguments come from the home home.
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.username = "julian";
|
||||||
|
home.homeDirectory = "/home/julian";
|
||||||
|
|
||||||
|
modules = {
|
||||||
|
non-nixos.is-nixos = true;
|
||||||
|
shell = {
|
||||||
|
fish.enable = true;
|
||||||
|
direnv.enable = true;
|
||||||
|
};
|
||||||
|
topgrade.enable = true;
|
||||||
|
neovim.enable = true;
|
||||||
|
# alacritty.enable = true;
|
||||||
|
kitty.enable = true;
|
||||||
|
yazi.enable = true;
|
||||||
|
emacs.enable = true;
|
||||||
|
i3.enable = true;
|
||||||
|
nix-helper.enable = true;
|
||||||
|
|
||||||
|
desktop.enable = true;
|
||||||
|
fonts.enable = true;
|
||||||
|
|
||||||
|
suites = {
|
||||||
|
cli.enable = true;
|
||||||
|
desktop.enable = true;
|
||||||
|
development.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
# ======================== DO NOT CHANGE THIS ========================
|
||||||
|
home.stateVersion = "23.11";
|
||||||
|
# ======================== DO NOT CHANGE THIS ========================
|
||||||
|
}
|
70
homes/x86_64-linux/julian@pianonix/default.nix
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
# 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.
|
||||||
|
lib,
|
||||||
|
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||||
|
pkgs,
|
||||||
|
# You also have access to your flake's inputs.
|
||||||
|
inputs,
|
||||||
|
|
||||||
|
# Additional metadata is provided by Snowfall Lib.
|
||||||
|
namespace, # The namespace used for your flake, defaulting to "internal" if not set.
|
||||||
|
home,
|
||||||
|
target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
|
||||||
|
format, # A normalized name for the home target (eg. `home`).
|
||||||
|
virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
|
||||||
|
host, # The host name for this home.
|
||||||
|
|
||||||
|
# All other arguments come from the home home.
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}@arguments:
|
||||||
|
{
|
||||||
|
home.username = "julian";
|
||||||
|
home.homeDirectory = "/home/julian";
|
||||||
|
|
||||||
|
modules = {
|
||||||
|
non-nixos.is-nixos = true;
|
||||||
|
|
||||||
|
shell = {
|
||||||
|
fish.enable = true;
|
||||||
|
};
|
||||||
|
yazi.enable = true;
|
||||||
|
topgrade.enable = true;
|
||||||
|
neovim.enable = true;
|
||||||
|
wezterm.enable = true;
|
||||||
|
nix-helper.enable = true;
|
||||||
|
|
||||||
|
desktop.enable = true;
|
||||||
|
fonts.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.syncthing.tray.enable = true;
|
||||||
|
services.syncthing.tray.command = "syncthingtray --wait"; # Wait for tray to become available
|
||||||
|
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
music-reader
|
||||||
|
sheet-organizer
|
||||||
|
|
||||||
|
xournalpp
|
||||||
|
musescore
|
||||||
|
|
||||||
|
onboard
|
||||||
|
];
|
||||||
|
|
||||||
|
# Autostart link
|
||||||
|
home.file = {
|
||||||
|
".config/autostart/sheet-organizer.desktop".source =
|
||||||
|
"${pkgs.sheet-organizer}/share/applications/sheet-organizer.desktop";
|
||||||
|
".config/sheet-organizer/config.toml".text = ''
|
||||||
|
working_directory = "/home/julian/Klavier"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
# ======================== DO NOT CHANGE THIS ========================
|
||||||
|
home.stateVersion = "23.11";
|
||||||
|
# ======================== DO NOT CHANGE THIS ========================
|
||||||
|
}
|
53
homes/x86_64-linux/julian@v3ms/default.nix
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
# 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.
|
||||||
|
lib,
|
||||||
|
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||||
|
pkgs,
|
||||||
|
# You also have access to your flake's inputs.
|
||||||
|
inputs,
|
||||||
|
|
||||||
|
# Additional metadata is provided by Snowfall Lib.
|
||||||
|
namespace, # The namespace used for your flake, defaulting to "internal" if not set.
|
||||||
|
home, # The home architecture for this host (eg. `x86_64-linux`).
|
||||||
|
target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
|
||||||
|
format, # A normalized name for the home target (eg. `home`).
|
||||||
|
virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
|
||||||
|
host, # The host name for this home.
|
||||||
|
|
||||||
|
# All other arguments come from the home home.
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
home.username = "julian";
|
||||||
|
home.homeDirectory = "/home/julian";
|
||||||
|
|
||||||
|
modules = {
|
||||||
|
non-nixos.is-nixos = false;
|
||||||
|
shell = {
|
||||||
|
fish.enable = true;
|
||||||
|
direnv.enable = true;
|
||||||
|
};
|
||||||
|
topgrade.enable = true;
|
||||||
|
neovim.enable = true;
|
||||||
|
yazi.enable = true;
|
||||||
|
emacs.enable = true;
|
||||||
|
|
||||||
|
nix-helper.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.packages =
|
||||||
|
lib.lists.concatMap (packages-list-file: import packages-list-file { inherit pkgs; })
|
||||||
|
[
|
||||||
|
./fonts.nix
|
||||||
|
./packages.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
|
||||||
|
# ======================== DO NOT CHANGE THIS ========================
|
||||||
|
home.stateVersion = "23.11";
|
||||||
|
# ======================== DO NOT CHANGE THIS ========================
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
with pkgs;
|
with pkgs;
|
||||||
[
|
[
|
||||||
nerd-fonts.fira-code
|
(nerdfonts.override { fonts = [ "FiraCode" ]; })
|
||||||
font-awesome
|
font-awesome
|
||||||
dejavu_fonts
|
dejavu_fonts
|
||||||
noto-fonts
|
noto-fonts
|
@ -1,50 +0,0 @@
|
|||||||
{
|
|
||||||
imports = [
|
|
||||||
./hardware-configuration.nix
|
|
||||||
|
|
||||||
../common/global
|
|
||||||
../common/users/julian
|
|
||||||
|
|
||||||
../common/optional/remote-builder.nix
|
|
||||||
../common/optional/boot-efi.nix
|
|
||||||
|
|
||||||
../common/optional/greetd.nix
|
|
||||||
../common/optional/authentication.nix
|
|
||||||
../common/optional/pcmanfm.nix
|
|
||||||
../common/optional/pipewire.nix
|
|
||||||
|
|
||||||
../common/optional/gamemode.nix
|
|
||||||
../common/optional/virtualbox.nix
|
|
||||||
|
|
||||||
../common/optional/podman.nix
|
|
||||||
../common/optional/wireguard.nix
|
|
||||||
../common/optional/flatpak.nix
|
|
||||||
|
|
||||||
../common/optional/avahi.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
networking.hostName = "aspi";
|
|
||||||
system.stateVersion = "24.05";
|
|
||||||
|
|
||||||
modules = {
|
|
||||||
syncthing = {
|
|
||||||
enable = true;
|
|
||||||
overrideSettings = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.blueman.enable = true;
|
|
||||||
services.upower.enable = true;
|
|
||||||
|
|
||||||
programs.steam.enable = true;
|
|
||||||
|
|
||||||
# TODO: not working
|
|
||||||
services.logind.lidSwitch = "lock";
|
|
||||||
services.logind.lidSwitchDocked = "lock";
|
|
||||||
|
|
||||||
programs.kdeconnect.enable = true;
|
|
||||||
|
|
||||||
# Enable touchpad support
|
|
||||||
services.libinput.enable = true;
|
|
||||||
|
|
||||||
}
|
|
@ -1,80 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
boot.initrd.availableKernelModules = [
|
|
||||||
"vmd"
|
|
||||||
"xhci_pci"
|
|
||||||
"ahci"
|
|
||||||
"nvme"
|
|
||||||
"usb_storage"
|
|
||||||
"usbhid"
|
|
||||||
"sd_mod"
|
|
||||||
];
|
|
||||||
boot.initrd.kernelModules = [ "dm-snapshot" ];
|
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
|
||||||
boot.extraModulePackages = [ ];
|
|
||||||
boot.blacklistedKernelModules = [ "pcspkr" ]; # Disables "beep"
|
|
||||||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
|
||||||
|
|
||||||
boot.initrd.luks.devices = {
|
|
||||||
root = {
|
|
||||||
device = "/dev/disk/by-uuid/a4dc9a2c-725b-4252-8fbb-093a271c31ba";
|
|
||||||
preLVM = true;
|
|
||||||
allowDiscards = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/" = {
|
|
||||||
device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [
|
|
||||||
"subvol=root"
|
|
||||||
"compress=zstd"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/home" = {
|
|
||||||
device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [
|
|
||||||
"subvol=home"
|
|
||||||
"compress=zstd"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/nix" = {
|
|
||||||
device = "/dev/disk/by-uuid/bbc45be3-75f5-40c5-8427-2a425de8422c";
|
|
||||||
fsType = "btrfs";
|
|
||||||
options = [
|
|
||||||
"subvol=nix"
|
|
||||||
"compress=zstd"
|
|
||||||
"noatime"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems."/boot" = {
|
|
||||||
device = "/dev/disk/by-uuid/7040-F37C";
|
|
||||||
fsType = "vfat";
|
|
||||||
};
|
|
||||||
|
|
||||||
swapDevices = [
|
|
||||||
{ device = "/dev/disk/by-uuid/26140b4a-0579-406d-a484-35aa31b32e80"; }
|
|
||||||
];
|
|
||||||
|
|
||||||
# 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
|
|
||||||
# still possible to use this option, but it's recommended to use it in conjunction
|
|
||||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.enp1s0.useDHCP = lib.mkDefault true;
|
|
||||||
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
|
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
|
||||||
hardware.nvidia.open = false;
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDmZH4AYoERGx5t8gXXmrZetSchwzps8UYwkz8E6SI8D
|
|
@ -1,38 +0,0 @@
|
|||||||
# Common config for all hosts
|
|
||||||
|
|
||||||
{
|
|
||||||
inputs,
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports =
|
|
||||||
[
|
|
||||||
./fish.nix # fish for admin
|
|
||||||
./locale.nix
|
|
||||||
./nix.nix
|
|
||||||
./sops.nix
|
|
||||||
./root.nix
|
|
||||||
]
|
|
||||||
++ [
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
]
|
|
||||||
++ (builtins.attrValues outputs.nixosModules);
|
|
||||||
|
|
||||||
# Replaces the (modulesPath + "/installer/scan/not-detected.nix") from default hardware-configuration.nix
|
|
||||||
# Enables non-free firmware
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
|
||||||
|
|
||||||
# Networking
|
|
||||||
networking.networkmanager.enable = true;
|
|
||||||
services.resolved.enable = true;
|
|
||||||
|
|
||||||
programs.dconf.enable = true;
|
|
||||||
|
|
||||||
# HM
|
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.extraSpecialArgs = {
|
|
||||||
inherit inputs outputs;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
programs.fish = {
|
|
||||||
enable = true;
|
|
||||||
vendor = {
|
|
||||||
completions.enable = true;
|
|
||||||
config.enable = true;
|
|
||||||
functions.enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
{
|
|
||||||
# Select internationalisation properties.
|
|
||||||
i18n.defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
i18n.extraLocaleSettings = {
|
|
||||||
LC_ADDRESS = "de_DE.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "de_DE.UTF-8";
|
|
||||||
LC_MEASUREMENT = "de_DE.UTF-8";
|
|
||||||
LC_MONETARY = "de_DE.UTF-8";
|
|
||||||
LC_NAME = "de_DE.UTF-8";
|
|
||||||
LC_NUMERIC = "en_US.UTF-8";
|
|
||||||
LC_PAPER = "de_DE.UTF-8";
|
|
||||||
LC_TELEPHONE = "de_DE.UTF-8";
|
|
||||||
LC_TIME = "de_DE.UTF-8";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Keymap
|
|
||||||
services.xserver.xkb = {
|
|
||||||
layout = "de";
|
|
||||||
variant = "";
|
|
||||||
};
|
|
||||||
|
|
||||||
console.keyMap = "de";
|
|
||||||
|
|
||||||
time.timeZone = "Europe/Berlin";
|
|
||||||
}
|
|
@ -1,65 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
outputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
|
|
||||||
# Apply overlays
|
|
||||||
nixpkgs = {
|
|
||||||
# TODO: apply this to hm and nixos without duplicate code
|
|
||||||
overlays = builtins.attrValues outputs.overlays;
|
|
||||||
config = {
|
|
||||||
allowUnfree = true;
|
|
||||||
allowUnfreePredicate = _: true; # TODO: what is this
|
|
||||||
warn-dirty = false;
|
|
||||||
permittedInsecurePackages = [
|
|
||||||
"olm-3.2.16"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.settings.auto-optimise-store = lib.mkDefault true;
|
|
||||||
nix.settings.experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
"ca-derivations"
|
|
||||||
];
|
|
||||||
# warn-dirty = false;
|
|
||||||
|
|
||||||
# Setup binary caches
|
|
||||||
nix.settings = {
|
|
||||||
substituters = [
|
|
||||||
"https://nix-community.cachix.org"
|
|
||||||
"https://cache.nixos.org/"
|
|
||||||
"https://hyprland.cachix.org"
|
|
||||||
"http://binarycache.julian-mutter.de"
|
|
||||||
];
|
|
||||||
trusted-public-keys = [
|
|
||||||
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
|
|
||||||
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
|
|
||||||
"binarycache.julian-mutter.de:oJ67uRFwRhNPKL58CHzy3QQLv38Kx7OA1K+6xlEPu7E="
|
|
||||||
];
|
|
||||||
|
|
||||||
trusted-users = [
|
|
||||||
"root"
|
|
||||||
"@wheel"
|
|
||||||
]; # needed for devenv to add custom caches
|
|
||||||
};
|
|
||||||
|
|
||||||
nix.gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "weekly";
|
|
||||||
# Keep the last 3 generations
|
|
||||||
options = "--delete-older-than +3";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.nix-ld.enable = true;
|
|
||||||
|
|
||||||
# TODO: is this useful?, what does it do?
|
|
||||||
# nix.settings.flake-registry = ""; # Disable global flake registry
|
|
||||||
# Add each flake input as a registry and nix_path
|
|
||||||
# registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
|
|
||||||
# nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
|
|
||||||
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# Packages needed as root
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
vim
|
|
||||||
htop
|
|
||||||
mc
|
|
||||||
gparted-xhost # needs to be installed as system package so it can be actually opened
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
isEd25519 = k: k.type == "ed25519";
|
|
||||||
getKeyPath = k: k.path;
|
|
||||||
keys = builtins.filter isEd25519 config.services.openssh.hostKeys;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [ inputs.sops-nix.nixosModules.sops ];
|
|
||||||
|
|
||||||
sops.age = {
|
|
||||||
sshKeyPaths = map getKeyPath keys;
|
|
||||||
|
|
||||||
# TODO: remove? only rely on ssh or pgp keys (e.g. ubikey like misterio is using!!!)
|
|
||||||
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
|
|
||||||
generateKey = true;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
sops.defaultSopsFile = ../secrets.yaml;
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
# Make programs like nextcloud client access saved passwords
|
|
||||||
programs.seahorse.enable = true;
|
|
||||||
services.gnome.gnome-keyring.enable = true;
|
|
||||||
|
|
||||||
# Make authentication work for e.g. gparted
|
|
||||||
security.polkit.enable = true;
|
|
||||||
systemd = {
|
|
||||||
user.services.polkit-gnome-authentication-agent-1 = {
|
|
||||||
description = "polkit-gnome-authentication-agent-1";
|
|
||||||
wantedBy = [ "graphical-session.target" ];
|
|
||||||
wants = [ "graphical-session.target" ];
|
|
||||||
after = [ "graphical-session.target" ];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "simple";
|
|
||||||
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
|
||||||
Restart = "on-failure";
|
|
||||||
RestartSec = 1;
|
|
||||||
TimeoutStopSec = 10;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
# MDNS on local network
|
|
||||||
services.avahi = {
|
|
||||||
enable = true;
|
|
||||||
nssmdns4 = true;
|
|
||||||
publish.enable = true;
|
|
||||||
publish.addresses = true;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
# Bootloader
|
|
||||||
# Use this for simple nix boot menu, if no dual boot required
|
|
||||||
boot.loader.systemd-boot.enable = true;
|
|
||||||
boot.loader.systemd-boot.configurationLimit = 10;
|
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
|
||||||
|
|
||||||
# https://github.com/NixOS/nixpkgs/blob/c32c39d6f3b1fe6514598fa40ad2cf9ce22c3fb7/nixos/modules/system/boot/loader/systemd-boot/systemd-boot.nix#L66
|
|
||||||
boot.loader.systemd-boot.editor = false;
|
|
||||||
|
|
||||||
boot.supportedFilesystems = [
|
|
||||||
"btrfs"
|
|
||||||
"ntfs"
|
|
||||||
"nfs"
|
|
||||||
"cifs"
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
virtualisation.docker = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services.flatpak.enable = true;
|
|
||||||
xdg.portal.enable = true;
|
|
||||||
xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
|
||||||
xdg.portal.config.common.default = "*"; # Use first portal implementation found
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
|
|
||||||
programs.gamemode = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
softrealtime = "auto";
|
|
||||||
inhibit_screensaver = 1;
|
|
||||||
renice = 5;
|
|
||||||
};
|
|
||||||
# gpu = {
|
|
||||||
# apply_gpu_optimisations = "accept-responsibility";
|
|
||||||
# gpu_device = 1;
|
|
||||||
# amd_performance_level = "high";
|
|
||||||
# };
|
|
||||||
custom = {
|
|
||||||
start = "${pkgs.libnotify}/bin/notify-send 'GameMode started'";
|
|
||||||
end = "${pkgs.libnotify}/bin/notify-send 'GameMode ended'";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
services.xserver.displayManager.gdm = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# unlock GPG keyring on login
|
|
||||||
security.pam.services.gdm.enableGnomeKeyring = true;
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
homeCfgs = config.home-manager.users;
|
|
||||||
homeSharePaths = lib.mapAttrsToList (_: v: "${v.home.path}/share") homeCfgs;
|
|
||||||
vars = ''XDG_DATA_DIRS="$XDG_DATA_DIRS:${lib.concatStringsSep ":" homeSharePaths}" GTK_USE_PORTAL=0'';
|
|
||||||
|
|
||||||
julianCfg = homeCfgs.julian;
|
|
||||||
|
|
||||||
sway-kiosk =
|
|
||||||
command:
|
|
||||||
"${lib.getExe pkgs.sway} --unsupported-gpu --config ${pkgs.writeText "kiosk.config" ''
|
|
||||||
output * bg #000000 solid_color
|
|
||||||
xwayland disable
|
|
||||||
input "type:touchpad" {
|
|
||||||
tap enabled
|
|
||||||
}
|
|
||||||
exec '${vars} ${command}; ${pkgs.sway}/bin/swaymsg exit'
|
|
||||||
''}";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
users.extraUsers.greeter = {
|
|
||||||
# For caching and such
|
|
||||||
home = "/tmp/greeter-home";
|
|
||||||
createHome = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.regreet = {
|
|
||||||
enable = true;
|
|
||||||
iconTheme = julianCfg.gtk.iconTheme;
|
|
||||||
theme = julianCfg.gtk.theme;
|
|
||||||
# font = julianCfg.fontProfiles.regular; # TODO: do
|
|
||||||
cursorTheme = {
|
|
||||||
inherit (julianCfg.gtk.cursorTheme) name package;
|
|
||||||
};
|
|
||||||
# settings.background = {
|
|
||||||
# path = julianCfg.wallpaper;
|
|
||||||
# fit = "Cover";
|
|
||||||
# }; # TODO: fix
|
|
||||||
};
|
|
||||||
services.greetd = {
|
|
||||||
enable = true;
|
|
||||||
settings.default_session.command = sway-kiosk (lib.getExe config.programs.regreet.package);
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
programs.hyprland.enable = true;
|
|
||||||
programs.hyprland.package = inputs.hyprland.packages.${pkgs.system}.hyprland; # does only work with nixos-unstable
|
|
||||||
programs.hyprland.xwayland.enable = true;
|
|
||||||
security.pam.services.hyprlock = { };
|
|
||||||
services.displayManager.defaultSession = "hyprland";
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
services.xserver.windowManager.i3.enable = true;
|
|
||||||
services.xserver.windowManager.i3.package = pkgs.i3-gaps;
|
|
||||||
services.displayManager.defaultSession = "none+i3";
|
|
||||||
|
|
||||||
programs.xss-lock = {
|
|
||||||
# responds to "loginctl lock-session" via dbus
|
|
||||||
enable = true;
|
|
||||||
lockerCommand = "${pkgs.i3lock}/bin/i3lock --ignore-empty-password --color=000000";
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
|
|
||||||
security.krb5.enable = true;
|
|
||||||
security.krb5.settings = {
|
|
||||||
# domain_realm = {
|
|
||||||
# ".julian-mutter.de" = "julian-mutter.de";
|
|
||||||
# "julian-mutter.de" = "julian-mutter.de";
|
|
||||||
# };
|
|
||||||
libdefaults = {
|
|
||||||
default_realm = "julian-mutter.de";
|
|
||||||
# dns_lookup_realm = true;
|
|
||||||
# dns_lookup_kdc = true;
|
|
||||||
# ticket_lifetime = "24h";
|
|
||||||
# renew_lifetime = "7d";
|
|
||||||
};
|
|
||||||
realms = {
|
|
||||||
"julian-mutter.de" = {
|
|
||||||
kdc = [ "kerberos.julian-mutter.de" ];
|
|
||||||
admin_server = "kerberos-admin.julian-mutter.de";
|
|
||||||
default_domain = "julian-mutter.de";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
outputs,
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
hosts = lib.attrNames outputs.nixosConfigurations;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
services.openssh = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
# Harden
|
|
||||||
PasswordAuthentication = false;
|
|
||||||
PermitRootLogin = "no";
|
|
||||||
|
|
||||||
# TODO: what does this d
|
|
||||||
# Let WAYLAND_DISPLAY be forwarded
|
|
||||||
AcceptEnv = "WAYLAND_DISPLAY";
|
|
||||||
X11Forwarding = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
hostKeys = [
|
|
||||||
{
|
|
||||||
path = "/etc/ssh/ssh_host_ed25519_key";
|
|
||||||
type = "ed25519";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: is automatic known hosts file even necessary?
|
|
||||||
# programs.ssh = {
|
|
||||||
# # Each hosts public key
|
|
||||||
# knownHosts = lib.genAttrs hosts (hostname: {
|
|
||||||
# publicKeyFile = ../../${hostname}/ssh_host_ed25519_key.pub;
|
|
||||||
# extraHostNames =
|
|
||||||
# [
|
|
||||||
# "${hostname}.m7.rs"
|
|
||||||
# ]
|
|
||||||
# ++
|
|
||||||
# # Alias for localhost if it's the same host
|
|
||||||
# (lib.optional (hostname == config.networking.hostName) "localhost")
|
|
||||||
# # Alias to m7.rs and git.m7.rs if it's alcyone
|
|
||||||
# ++ (lib.optionals (hostname == "alcyone") [
|
|
||||||
# "m7.rs"
|
|
||||||
# "git.m7.rs"
|
|
||||||
# ]);
|
|
||||||
# });
|
|
||||||
# };
|
|
||||||
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
shared-mime-info # extended mimetype support
|
|
||||||
lxde.lxmenu-data # open with "Installed Applications"
|
|
||||||
pcmanfm
|
|
||||||
];
|
|
||||||
|
|
||||||
services.gvfs.enable = true; # Mount, trash, and other functionalities
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
services.pulseaudio.enable = false;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
jack.enable = true;
|
|
||||||
extraConfig.pipewire = {
|
|
||||||
"99-no-bell" = {
|
|
||||||
# Disable bell sound
|
|
||||||
"context.properties" = {
|
|
||||||
"module.x11.bell" = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
{ config, ... }:
|
|
||||||
let
|
|
||||||
dockerEnabled = config.virtualisation.docker.enable;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
virtualisation.podman = {
|
|
||||||
enable = true;
|
|
||||||
dockerCompat = !dockerEnabled;
|
|
||||||
dockerSocket.enable = !dockerEnabled;
|
|
||||||
defaultNetwork.settings.dns_enabled = true;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
# Set location used by redshift
|
|
||||||
location.provider = "manual";
|
|
||||||
location.latitude = 47.92;
|
|
||||||
location.longitude = 10.12;
|
|
||||||
services.redshift.enable = true;
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
{
|
|
||||||
nix.distributedBuilds = true;
|
|
||||||
nix.settings.builders-use-substitutes = true;
|
|
||||||
|
|
||||||
nix.buildMachines = [
|
|
||||||
{
|
|
||||||
hostName = "builder.julian-mutter.de";
|
|
||||||
protocol = "ssh";
|
|
||||||
sshUser = "nix";
|
|
||||||
systems = [
|
|
||||||
"x86_64-linux"
|
|
||||||
"aarch64-linux"
|
|
||||||
];
|
|
||||||
maxJobs = 4;
|
|
||||||
speedFactor = 3;
|
|
||||||
supportedFeatures = [
|
|
||||||
"nixos-test"
|
|
||||||
"benchmark"
|
|
||||||
"big-parallel"
|
|
||||||
"kvm"
|
|
||||||
];
|
|
||||||
mandatoryFeatures = [ ];
|
|
||||||
}
|
|
||||||
# {
|
|
||||||
# hostName = "localhost";
|
|
||||||
# protocol = null;
|
|
||||||
# systems = [
|
|
||||||
# "x86_64-linux"
|
|
||||||
# ];
|
|
||||||
# maxJobs = 4;
|
|
||||||
# speedFactor = 1;
|
|
||||||
# }
|
|
||||||
];
|
|
||||||
}
|
|
@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
programs.thunar.enable = true;
|
|
||||||
programs.xfconf.enable = true; # Persist saved preferences
|
|
||||||
programs.thunar.plugins = with pkgs.xfce; [
|
|
||||||
thunar-archive-plugin
|
|
||||||
thunar-volman
|
|
||||||
thunar-media-tags-plugin
|
|
||||||
];
|
|
||||||
services.gvfs.enable = true; # Mount, trash, and other functionalities
|
|
||||||
services.tumbler.enable = true; # Thumbnail support for images
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
|
|
||||||
virtualisation.virtualbox.host.enable = true;
|
|
||||||
# virtualisation.virtualbox.host.enableExtensionPack = true;
|
|
||||||
# virtualisation.virtualbox.guest.enable = true;
|
|
||||||
# virtualisation.virtualbox.guest.x11 = true;
|
|
||||||
users.extraGroups.vboxusers.members = [ "julian" ];
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
{
|
|
||||||
networking.wg-quick.interfaces = {
|
|
||||||
julian = {
|
|
||||||
configFile = "/etc/wireguard/julian.conf";
|
|
||||||
autostart = true; # This interface is started on boot
|
|
||||||
};
|
|
||||||
comu = {
|
|
||||||
configFile = "/etc/wireguard/comu.conf";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
wacom.enable = true;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
users.mutableUsers = false;
|
|
||||||
users.users.julian = {
|
|
||||||
description = "Julian";
|
|
||||||
group = "julian";
|
|
||||||
isNormalUser = true;
|
|
||||||
uid = 1000;
|
|
||||||
shell = pkgs.fish;
|
|
||||||
extraGroups = ifTheyExist [
|
|
||||||
"networkmanager"
|
|
||||||
"wheel"
|
|
||||||
"audio"
|
|
||||||
"network"
|
|
||||||
"video"
|
|
||||||
"podman"
|
|
||||||
"docker"
|
|
||||||
"git"
|
|
||||||
"gamemode"
|
|
||||||
];
|
|
||||||
|
|
||||||
openssh.authorizedKeys.keys = lib.splitString "\n" (
|
|
||||||
builtins.readFile ../../../../homes/julian/ssh.pub
|
|
||||||
);
|
|
||||||
hashedPasswordFile = config.sops.secrets.julian-password.path;
|
|
||||||
packages = [ pkgs.home-manager ];
|
|
||||||
};
|
|
||||||
users.groups.julian = {
|
|
||||||
gid = 1000;
|
|
||||||
};
|
|
||||||
|
|
||||||
sops.secrets.julian-password = {
|
|
||||||
sopsFile = ../../secrets.yaml;
|
|
||||||
neededForUsers = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.julian = import ../../../../homes/julian/${config.networking.hostName}.nix;
|
|
||||||
|
|
||||||
security.pam.services.swaylock = { }; # Make swaylock unlocking work
|
|
||||||
|
|
||||||
}
|
|
@ -1,35 +0,0 @@
|
|||||||
{
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./hardware-configuration.nix
|
|
||||||
|
|
||||||
../common/global
|
|
||||||
../common/users/julian
|
|
||||||
|
|
||||||
../common/optional/remote-builder.nix
|
|
||||||
../common/optional/boot-efi.nix
|
|
||||||
|
|
||||||
../common/optional/greetd.nix
|
|
||||||
../common/optional/authentication.nix
|
|
||||||
../common/optional/pcmanfm.nix
|
|
||||||
../common/optional/pipewire.nix
|
|
||||||
|
|
||||||
../common/optional/podman.nix
|
|
||||||
../common/optional/flatpak.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
networking.hostName = "kardorf";
|
|
||||||
system.stateVersion = "22.11";
|
|
||||||
|
|
||||||
services.xserver.videoDrivers = [ "nvidia" ];
|
|
||||||
|
|
||||||
programs.kdeconnect.enable = true;
|
|
||||||
|
|
||||||
# Enable CUPS to print documents.
|
|
||||||
services.printing.enable = true;
|
|
||||||
services.printing.browsing = true;
|
|
||||||
services.printing.drivers = with pkgs; [ gutenprint ];
|
|
||||||
}
|
|
15
lib/module/default.nix
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{ lib, ... }:
|
||||||
|
with lib;
|
||||||
|
rec {
|
||||||
|
mkOpt =
|
||||||
|
type: default: description:
|
||||||
|
mkOption { inherit type default description; };
|
||||||
|
|
||||||
|
mkOpt' = type: default: mkOpt type default null;
|
||||||
|
|
||||||
|
mkBoolOpt = mkOpt types.bool;
|
||||||
|
|
||||||
|
mkBoolOpt' = mkOpt' types.bool;
|
||||||
|
|
||||||
|
mkEnableOpt = mkBoolOpt' false;
|
||||||
|
}
|
@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (lib) types mkOption;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.colorscheme = {
|
|
||||||
name = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "catppuccin-mocha";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
fonts = import ./fonts.nix;
|
|
||||||
monitors = import ./monitors.nix;
|
|
||||||
terminal = import ./terminal.nix;
|
|
||||||
colors = import ./colors.nix;
|
|
||||||
hostname = import ./hostname.nix;
|
|
||||||
non-nixos = import ./non-nixos.nix;
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
mkFontOption = kind: {
|
|
||||||
name = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = null;
|
|
||||||
description = "Family name for ${kind} font profile";
|
|
||||||
example = "Fira Code";
|
|
||||||
};
|
|
||||||
package = lib.mkOption {
|
|
||||||
type = lib.types.package;
|
|
||||||
default = null;
|
|
||||||
description = "Package for ${kind} font profile";
|
|
||||||
example = "pkgs.fira-code";
|
|
||||||
};
|
|
||||||
size = lib.mkOption {
|
|
||||||
type = lib.types.int;
|
|
||||||
default = 12;
|
|
||||||
description = "Size in pixels for ${kind} font profile";
|
|
||||||
example = "14";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
cfg = config.fontProfiles;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.fontProfiles = {
|
|
||||||
enable = lib.mkEnableOption "Whether to enable font profiles";
|
|
||||||
monospace = mkFontOption "monospace";
|
|
||||||
regular = mkFontOption "regular";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
fonts.fontconfig.enable = true;
|
|
||||||
home.packages = [
|
|
||||||
cfg.monospace.package
|
|
||||||
cfg.regular.package
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (lib) types mkOption;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.hostName = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,61 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (lib) mkOption types;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.monitors = mkOption {
|
|
||||||
type = types.listOf (
|
|
||||||
types.submodule {
|
|
||||||
options = {
|
|
||||||
name = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
example = "DP-1";
|
|
||||||
};
|
|
||||||
primary = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
};
|
|
||||||
width = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
example = 1920;
|
|
||||||
};
|
|
||||||
height = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
example = 1080;
|
|
||||||
};
|
|
||||||
refreshRate = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 60;
|
|
||||||
};
|
|
||||||
position = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "auto";
|
|
||||||
};
|
|
||||||
enabled = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = true;
|
|
||||||
};
|
|
||||||
workspace = mkOption {
|
|
||||||
type = types.nullOr types.str;
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
default = [ ];
|
|
||||||
};
|
|
||||||
config = {
|
|
||||||
assertions = [
|
|
||||||
{
|
|
||||||
assertion =
|
|
||||||
((lib.length config.monitors) != 0)
|
|
||||||
-> ((lib.length (lib.filter (m: m.primary) config.monitors)) == 1);
|
|
||||||
message = "Exactly one monitor must be set to primary.";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (lib) types mkOption;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.is-nixos = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
};
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
options.terminal = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
example = "alacritty";
|
|
||||||
default = "alacritty";
|
|
||||||
description = "The default terminal to use.";
|
|
||||||
};
|
|
||||||
}
|
|
41
modules/home/alacritty/default.nix
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
# 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.
|
||||||
|
lib,
|
||||||
|
# An instance of `pkgs` with your overlays and packages applied is also available.
|
||||||
|
pkgs,
|
||||||
|
# You also have access to your flake's inputs.
|
||||||
|
inputs,
|
||||||
|
|
||||||
|
# Additional metadata is provided by Snowfall Lib.
|
||||||
|
system, # The system architecture for this host (eg. `x86_64-linux`).
|
||||||
|
target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
|
||||||
|
format, # A normalized name for the system target (eg. `iso`).
|
||||||
|
virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
|
||||||
|
systems, # An attribute map of your defined hosts.
|
||||||
|
|
||||||
|
# All other arguments come from the module system.
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.modules.alacritty;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.alacritty = {
|
||||||
|
enable = lib.mkOption { default = false; };
|
||||||
|
mkDefault = lib.mkOption { default = true; };
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.packages = with pkgs; [ (lib.mkIf config.modules.non-nixos.is-nixos alacritty) ];
|
||||||
|
|
||||||
|
home.file = {
|
||||||
|
".config/alacritty/theme".source = "${inputs.alacritty-theme}";
|
||||||
|
".config/alacritty/alacritty.toml".source = ./alacritty.toml;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables.TERMINAL = lib.mkIf cfg.mkDefault "alacritty";
|
||||||
|
};
|
||||||
|
}
|
39
modules/home/desktop/default.nix
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
options,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (inputs.nix-colors.lib-contrib { inherit pkgs; }) gtkThemeFromScheme;
|
||||||
|
cfg = config.modules.desktop;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.modules.desktop =
|
||||||
|
with lib.frajul;
|
||||||
|
with lib.types;
|
||||||
|
{
|
||||||
|
colorscheme = mkOpt str "catppuccin-mocha" "Theme to use for the desktop";
|
||||||
|
enable = mkBoolOpt false "Enable desktop";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Do not make conditional, just toggle things on and off
|
||||||
|
imports = [ inputs.nix-colors.homeManagerModules.default ];
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# home.sessionVariables.GTK_THEME = "Catppuccin-Mocha-Compact-Blue-dark";
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
theme = {
|
||||||
|
name = inputs.nix-colors.colorschemes.${cfg.colorscheme}.slug;
|
||||||
|
package = gtkThemeFromScheme { scheme = inputs.nix-colors.colorschemes.${cfg.colorscheme}; };
|
||||||
|
};
|
||||||
|
iconTheme = {
|
||||||
|
name = "Papirus-Dark";
|
||||||
|
package = pkgs.papirus-icon-theme;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Before Width: | Height: | Size: 182 KiB After Width: | Height: | Size: 182 KiB |
Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 177 KiB |
Before Width: | Height: | Size: 823 KiB After Width: | Height: | Size: 823 KiB |
Before Width: | Height: | Size: 759 KiB After Width: | Height: | Size: 759 KiB |
Before Width: | Height: | Size: 1.6 MiB After Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 1024 KiB After Width: | Height: | Size: 1024 KiB |
Before Width: | Height: | Size: 2.8 MiB After Width: | Height: | Size: 2.8 MiB |
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |