Compare commits

...
11 Commits
Author SHA1 Message Date
snurm 73f9104b24 add various programs 2026-08-31 21:56:26 +02:00
snurm df5a8a0460 it works :D 2026-08-31 21:21:44 +02:00
snurm 08e34ab82f works now? 2026-08-31 18:13:01 +02:00
snurm fd19e4398b remove config 2026-08-08 19:00:45 +02:00
snurm f73b1480f2 fix typo 2026-08-08 18:59:21 +02:00
snurm b0dabba62e basic dendritic 2026-08-08 18:57:47 +02:00
snurm eedd22afb3 add screenshot 2026-08-02 14:54:49 +02:00
snurm 6deb2b60c5 testing 2026-08-02 13:08:53 +02:00
snurm e590eacaea testing 2026-08-02 13:05:06 +02:00
snurm 4710f4e939 testing 2026-08-02 12:53:33 +02:00
snurm 3091edd766 testing 2026-08-02 12:29:26 +02:00
42 changed files with 1063 additions and 218 deletions

No files matched your search

-132
View File
@@ -1,132 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ config, pkgs, inputs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "nixos"; # Define your hostname.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# audio
services.pipewire = {
enable = true;
wireplumber.enable = true;
pulse.enable = true;
};
# Set your time zone.
time.timeZone = "Europe/Berlin";
# Select internationalisation properties.
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocales = ["ja_JP.UTF-8/UTF-8"];
fonts = {
enableDefaultPackages = true;
packages = with pkgs; [
noto-fonts-cjk-sans
];
};
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 = "de_DE.UTF-8";
LC_PAPER = "de_DE.UTF-8";
LC_TELEPHONE = "de_DE.UTF-8";
LC_TIME = "de_DE.UTF-8";
};
# Configure keymap in X11
services.xserver.xkb = {
layout = "de";
variant = "";
};
# Configure console keymap
console.keyMap = "de";
# Define a user account. Don't forget to set a password with ‘passwd’.
users.users.snurm = {
isNormalUser = true;
description = "snurm";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [];
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
git
vim
kitty
wofi
vesktop
btop
pavucontrol
catppuccin-cursors.latteLavender
nvimpager
];
programs.hyprland.enable = true;
programs.hyprland.withUWSM = true;
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
defaultEditor = true;
};
environment.variables.EDITOR = "nvim";
programs.firefox.enable = true;
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. It‘s perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
system.stateVersion = "25.11"; # Did you read the comment?
}
Generated
+135 -9
View File
@@ -1,6 +1,60 @@
{ {
"nodes": { "nodes": {
"helium": { "flake-file": {
"locked": {
"lastModified": 1785282747,
"narHash": "sha256-ZwdMXUu0Udb4yzI65+psyJeUF+wexByNEvTUSx1xjVs=",
"owner": "vic",
"repo": "flake-file",
"rev": "56c46842d70754345c4a4581b8cbebe87b8fc067",
"type": "github"
},
"original": {
"owner": "vic",
"repo": "flake-file",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1785627969,
"narHash": "sha256-4dtXQk/NMePegK/nWp5NSeuZKLATItOq61lpEvmXqGw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "427bf4bd9435fdf21321c8cc628c24efc14c0f7a",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1785627969,
"narHash": "sha256-4dtXQk/NMePegK/nWp5NSeuZKLATItOq61lpEvmXqGw=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "427bf4bd9435fdf21321c8cc628c24efc14c0f7a",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"helium-browser": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
@@ -9,11 +63,11 @@
"utils": "utils" "utils": "utils"
}, },
"locked": { "locked": {
"lastModified": 1785641213, "lastModified": 1788065178,
"narHash": "sha256-V9HKF0TynM6AI1sTuClNFIyr0wIwC82zNQymJs7Ldlk=", "narHash": "sha256-ADzuZ/MqrdJOMucTux5j0QMxo0YnCHLxuZAYlK/wxPE=",
"owner": "schembriaiden", "owner": "schembriaiden",
"repo": "helium-browser-nix-flake", "repo": "helium-browser-nix-flake",
"rev": "141470984a71fb22f1266fca6773d2a4d0991468", "rev": "f1250fd4dcd8f22cb3d8aa1e8e00f56cc947e795",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -43,6 +97,21 @@
"type": "github" "type": "github"
} }
}, },
"import-tree": {
"locked": {
"lastModified": 1784254960,
"narHash": "sha256-iI88R3wHz8wTKQb5orvpc51L/Xr64AJyxid/0MKa/b8=",
"owner": "vic",
"repo": "import-tree",
"rev": "4ebb10ae17d5f1ad366e7aef5b92cb8eecf24f69",
"type": "github"
},
"original": {
"owner": "vic",
"repo": "import-tree",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1785491804, "lastModified": 1785491804,
@@ -61,11 +130,11 @@
}, },
"nixpkgs-darwin": { "nixpkgs-darwin": {
"locked": { "locked": {
"lastModified": 1785067121, "lastModified": 1787940818,
"narHash": "sha256-rdJdWxAcg5fnntU4DjPivPdVEN4F+VJavw+UWpEMeUI=", "narHash": "sha256-vFzVv78WlyEbTyV5BbrnicnV159wC0YPOcBe3QagyBI=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "329c3d2af6d1b618705150ea39f72c15eb4e613e", "rev": "f6107e546a5012172d93e79f1f7950da02ad798f",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -75,6 +144,21 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-lib": {
"locked": {
"lastModified": 1785031560,
"narHash": "sha256-OmshNvn2vupOFpYinLUu+1Dnpu4n7Q5N3ggGVNHpkUI=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "0e79af5e3d4dcfcd676ab5ba3f95d2e3352e078c",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-unstable": { "nixpkgs-unstable": {
"locked": { "locked": {
"lastModified": 1785571196, "lastModified": 1785571196,
@@ -91,12 +175,39 @@
"type": "github" "type": "github"
} }
}, },
"nixvim": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems_2"
},
"locked": {
"lastModified": 1787536726,
"narHash": "sha256-aBh5Yk9tX8ZV4k10BJr2fvTq0/+iWGegaCMUOU7YKas=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "e2c3f9f36326d07340626847543c557e2b95fb50",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "nixos-26.05",
"repo": "nixvim",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"helium": "helium", "flake-file": "flake-file",
"flake-parts": "flake-parts",
"helium-browser": "helium-browser",
"home-manager": "home-manager", "home-manager": "home-manager",
"import-tree": "import-tree",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable" "nixpkgs-unstable": "nixpkgs-unstable",
"nixvim": "nixvim"
} }
}, },
"systems": { "systems": {
@@ -114,6 +225,21 @@
"type": "github" "type": "github"
} }
}, },
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"utils": { "utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
+11 -21
View File
@@ -1,36 +1,26 @@
{ {
description = "A simple NixOS flake"; description = "A simple NixOS flake";
outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./modules);
inputs = { inputs = {
# NixOS official package source, using the nixos-26.05 branch here # NixOS official package source, using the nixos-26.05 branch here
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
helium-browser = {
url = "github:schembriaiden/helium-browser-nix-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-26.05"; url = "github:nix-community/home-manager/release-26.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
helium = { nixvim = {
url = "github:schembriaiden/helium-browser-nix-flake"; url = "github:nix-community/nixvim/nixos-26.05";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; flake-parts.url = "github:hercules-ci/flake-parts";
flake-file.url = "github:vic/flake-file";
outputs = { self, nixpkgs, home-manager, helium, ... }@inputs: { import-tree.url = "github:vic/import-tree";
nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
system = "x86_64-linux";
modules = [
# Import the previous configuration.nix we used,
# so the old configuration file still takes effect
./configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.snurm = import ./home.nix;
home-manager.backupFileExtension = "backup";
}
];
};
}; };
} }
-43
View File
@@ -1,43 +0,0 @@
{ config, pkgs, inputs, ...}:
{
imports = [
programs/default.nix
];
home.username = "snurm";
home.homeDirectory = "/home/snurm";
home.stateVersion = "26.05";
programs.git = {
enable = true;
settings.user = {
name = "snurm";
email = "user@example.com";
};
};
programs.kitty = {
enable = true;
font = {
name ="JetBrains Mono";
size = 10;
};
settings = {
confirm_os_window_close = 0;
enable_auto_bell = false;
mouse_hide_wait = "-1.0";
background_opacity = "0.5";
background_blur = 5;
};
};
nixpkgs.overlays = [
inputs.helium.overlays.default
];
environment.systemPackages = with pkgs; [
helium
];
home.packages = with pkgs; [
fastfetch
];
}
-4
View File
@@ -1,4 +0,0 @@
{ pkgs, config, ... }:
{
}
View File
Whitespace-only changes.
+32
View File
@@ -0,0 +1,32 @@
{ self, ... }: {
config.flake.factory.user = username: isAdmin: {
nixos."${username}" =
{
lib,
pkgs,
...
}:
{
users.users."${username}" = {
isNormalUser = true;
home = "/home/${username}";
extraGroups = lib.optionals isAdmin [ "wheel" ];
shell = pkgs.zsh;
};
programs.zsh.enable = true;
# required for zsh completion
environment.pathsToLink = [ "/share/zsh" ];
home-manager.users."${username}" = {
imports = [
self.modules.homeManager."${username}"
];
};
};
homeManager."${username}" = {
home.username = "${username}";
};
};
}
@@ -0,0 +1,11 @@
{ inputs, ... }: {
flake.modules.nixos.nixos-desktop = {
imports =
with inputs.self.modules.nixos;
with inputs.self.factory;
[
system-desktop
i18n-de
];
};
}
@@ -0,0 +1,18 @@
{
flake.modules.nixos.nixos-desktop = {
fileSystems."/" =
{ device = "/dev/disk/by-uuid/80073df0-54bd-438e-bcbc-795d3d886385";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/2F17-7ACA";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [
{ device = "/dev/disk/by-uuid/7810e79b-360b-48e1-a527-92ebeb4f628c"; }
];
};
}
@@ -0,0 +1,3 @@
{ inputs, ... }: {
flake.nixosConfigurations = inputs.self.lib.mkNixos "x86_64-linux" "nixos-desktop";
}
+19
View File
@@ -0,0 +1,19 @@
{ inputs, ... }: {
flake.modules.nixos.nixos-desktop = { lib, ... }: {
boot.initrd.availableKernelModules = [
"nvme"
"xhci_pci"
"ahci"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
nixpkgs.hostPlatform = "x86_64-linux";
hardware.enableRedistributableFirmware = true;
hardware.cpu.amd.updateMicrocode = true;
};
}
@@ -0,0 +1,12 @@
{ inputs, ... }: {
flake.modules.nixos.nixos-desktop = {
imports =
with inputs.self.modules.nixos;
with inputs.self.factory;
[
system-desktop
systemd-boot
i18n-de
];
};
}
@@ -0,0 +1,15 @@
{ inputs, ... }: {
flake.modules.nixos.nixos-desktop = { config, ... } : {
imports = with inputs.self.modules.nixos; [
snurm
];
home-manager.users.snurm = { config, ... }: {
imports =
with inputs.self.modules.homeManager;
with inputs.self.factory;
[
];
};
};
}
+22
View File
@@ -0,0 +1,22 @@
{ inputs, ... }: {
imports = [
inputs.flake-parts.flakeModules.modules
inputs.flake-file.flakeModules.default
];
flake-file.inputs = {
flake-parts.url = "github:hercules-ci/flake-parts";
flake-file.url = "github:vic/flake-file";
import-tree.url = "github:vic/import-tree";
};
flake-file.outputs = ''
inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./modules)
'';
systems = [
# f Darwin >:(
"aarch64-linux"
"x86_64-linux"
];
}
+30
View File
@@ -0,0 +1,30 @@
{ inputs, lib, ... }:
{
# Helper functions
options.flake.lib = lib.mkOption {
type = lib.types.attrsOf lib.types.unspecified;
default = { };
};
config.flake.lib = {
mkNixos = system: name: {
${name} = inputs.nixpkgs.lib.nixosSystem {
modules = [
inputs.self.modules.nixos.${name}
{ nixpkgs.hostPlatform = lib.mkDefault system; }
{ nixpkgs.config.allowUnfree = true; }
];
};
};
mkHomeManager = system: name: {
${name} = inputs.home-manager.lib.homeManagerConfiguration {
pkgs = inputs.nixpkgs.legacyPackages.${system};
modules = [
inputs.self.modules.homeManager.${name}
{ nixpkgs.config.allowUnfree = true; }
];
};
};
};
}
+26
View File
@@ -0,0 +1,26 @@
{
inputs,
config,
...
}:
{
# Add home-manager input
flake-file.inputs = {
home-manager.url = "github:nix-community/home-manager/release-26.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
};
imports = [ inputs.home-manager.flakeModules.home-manager ];
flake.modules.nixos.home-manager = {
imports = [
inputs.home-manager.nixosModules.home-manager
];
home-manager = {
verbose = true;
useGlobalPkgs = true;
backupFileExtension = "backup";
};
};
}
+13
View File
@@ -0,0 +1,13 @@
{ inputs, ... }: {
flake-file.inputs = {
helium-browser = {
url = "github:schembriaiden/helium-browser-nix-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
};
flake.modules.nixos.browser = { pkgs, ... }: {
environment.systemPackages = [
inputs.helium-browser.packages.${pkgs.stdenv.hostPlatform.system}.default
];
};
}
+12
View File
@@ -0,0 +1,12 @@
{
flake.modules.homeManager.btop = { pkgs, ... }: {
programs.btop = {
enable = true;
settings = {
vim_keys = true;
proc_tree = true;
proc_aggregate = true;
};
};
};
}
+5
View File
@@ -0,0 +1,5 @@
{
flake.modules.nixos.git = { pkgs, ... }: {
environment.systemPackages = [ pkgs.git ];
};
}
+365
View File
@@ -0,0 +1,365 @@
-- This is an example Hyprland Lua config file.
-- Refer to the wiki for more information.
-- https://wiki.hypr.land/Configuring/Start/
-- Please note not all available settings / options are set here.
-- For a full list, see the wiki
-- You can (and should!!) split this configuration into multiple files
-- Create your files separately and then require them like this:
-- require("myColors")
------------------
---- MONITORS ----
------------------
-- See https://wiki.hypr.land/Configuring/Basics/Monitors/
hl.monitor({
output = "DP-2",
mode = "highres",
position = "auto",
scale = "auto",
})
hl.monitor({
output = "DP-3",
mode = "highres",
position = "auto-left",
scale = "auto",
})
hl.monitor({
output = "HDMI-A-1",
mode = "highres",
position = "auto-right",
scale = "auto",
})
hl.monitor({
output = "",
mode = "preferred",
position = "auto",
scale = "auto",
})
---------------------
---- MY PROGRAMS ----
---------------------
-- Set programs that you use
local terminal = "kitty"
local fileManager = "dolphin"
local menu = "rofi -show drun"
local screenshot = "grim -g \"$(slurp)\" - | wl-copy"
-------------------
---- AUTOSTART ----
-------------------
-- See https://wiki.hypr.land/Configuring/Basics/Autostart/
-- Autostart necessary processes (like notifications daemons, status bars, etc.)
-- Or execute your favorite apps at launch like this:
--
-- hl.on("hyprland.start", function ()
-- hl.exec_cmd(terminal)
-- hl.exec_cmd("nm-applet")
-- hl.exec_cmd("waybar & hyprpaper & firefox")
-- end)
-------------------------------
---- ENVIRONMENT VARIABLES ----
-------------------------------
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
hl.env("XCURSOR_SIZE", "24")
hl.env("HYPRCURSOR_SIZE", "24")
-----------------------
----- PERMISSIONS -----
-----------------------
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Permissions/
-- Please note permission changes here require a Hyprland restart and are not applied on-the-fly
-- for security reasons
-- hl.config({
-- ecosystem = {
-- enforce_permissions = true,
-- },
-- })
-- hl.permission("/usr/(bin|local/bin)/grim", "screencopy", "allow")
-- hl.permission("/usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland", "screencopy", "allow")
-- hl.permission("/usr/(bin|local/bin)/hyprpm", "plugin", "allow")
-----------------------
---- LOOK AND FEEL ----
-----------------------
-- Refer to https://wiki.hypr.land/Configuring/Basics/Variables/
hl.config({
general = {
gaps_in = 5,
gaps_out = 0,
border_size = 2,
col = {
active_border = { colors = {"rgba(33ccffee)", "rgba(00ff99ee)"}, angle = 45 },
inactive_border = "rgba(595959aa)",
},
-- Set to true to enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = false,
-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
allow_tearing = false,
layout = "dwindle",
},
decoration = {
rounding = 0,
rounding_power = 0,
-- Change transparency of focused and unfocused windows
active_opacity = 1.0,
inactive_opacity = 1.0,
shadow = {
enabled = true,
range = 4,
render_power = 3,
color = 0xee1a1a1a,
},
blur = {
enabled = false,
size = 3,
passes = 1,
vibrancy = 0.1696,
},
},
animations = {
enabled = true,
},
})
-- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/
hl.curve("easeOutQuint", { type = "bezier", points = { {0.23, 1}, {0.32, 1} } })
hl.curve("easeInOutCubic", { type = "bezier", points = { {0.65, 0.05}, {0.36, 1} } })
hl.curve("linear", { type = "bezier", points = { {0, 0}, {1, 1} } })
hl.curve("almostLinear", { type = "bezier", points = { {0.5, 0.5}, {0.75, 1} } })
hl.curve("quick", { type = "bezier", points = { {0.15, 0}, {0.1, 1} } })
-- Default springs
hl.curve("easy", { type = "spring", mass = 1, stiffness = 238.1191, dampening = 24.21279333 })
hl.animation({ leaf = "global", enabled = true, speed = 10, bezier = "default" })
hl.animation({ leaf = "border", enabled = true, speed = 5.39, bezier = "easeOutQuint" })
hl.animation({ leaf = "windows", enabled = true, speed = 4.79, spring = "easy" })
hl.animation({ leaf = "windowsIn", enabled = true, speed = 4.1, spring = "easy", style = "popin 87%" })
hl.animation({ leaf = "windowsOut", enabled = true, speed = 1.49, bezier = "linear", style = "popin 87%" })
hl.animation({ leaf = "fadeIn", enabled = true, speed = 1.73, bezier = "almostLinear" })
hl.animation({ leaf = "fadeOut", enabled = true, speed = 1.46, bezier = "almostLinear" })
hl.animation({ leaf = "fade", enabled = true, speed = 3.03, bezier = "quick" })
hl.animation({ leaf = "layers", enabled = true, speed = 3.81, bezier = "easeOutQuint" })
hl.animation({ leaf = "layersIn", enabled = true, speed = 4, bezier = "easeOutQuint", style = "fade" })
hl.animation({ leaf = "layersOut", enabled = true, speed = 1.5, bezier = "linear", style = "fade" })
hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 1.79, bezier = "almostLinear" })
hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.39, bezier = "almostLinear" })
hl.animation({ leaf = "workspaces", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
hl.animation({ leaf = "workspacesIn", enabled = true, speed = 1.21, bezier = "almostLinear", style = "fade" })
hl.animation({ leaf = "workspacesOut", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
hl.animation({ leaf = "zoomFactor", enabled = true, speed = 7, bezier = "quick" })
-- Ref https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
-- "Smart gaps" / "No gaps when only"
-- uncomment all if you wish to use that.
-- hl.workspace_rule({ workspace = "w[tv1]", gaps_out = 0, gaps_in = 0 })
-- hl.workspace_rule({ workspace = "f[1]", gaps_out = 0, gaps_in = 0 })
-- hl.window_rule({
-- name = "no-gaps-wtv1",
-- match = { float = false, workspace = "w[tv1]" },
-- border_size = 0,
-- rounding = 0,
-- })
-- hl.window_rule({
-- name = "no-gaps-f1",
-- match = { float = false, workspace = "f[1]" },
-- border_size = 0,
-- rounding = 0,
-- })
-- See https://wiki.hypr.land/Configuring/Layouts/Dwindle-Layout/ for more
hl.config({
dwindle = {
preserve_split = true, -- You probably want this
},
})
-- See https://wiki.hypr.land/Configuring/Layouts/Master-Layout/ for more
hl.config({
master = {
new_status = "master",
},
})
-- See https://wiki.hypr.land/Configuring/Layouts/Scrolling-Layout/ for more
hl.config({
scrolling = {
fullscreen_on_one_column = true,
},
})
----------------
---- MISC ----
----------------
hl.config({
misc = {
force_default_wallpaper = -1, -- Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = false, -- If true disables the random hyprland logo / anime girl background. :(
},
})
---------------
---- INPUT ----
---------------
hl.config({
input = {
kb_layout = "de,jp",
kb_variant = "",
kb_model = "",
kb_options = "grp:alt_shift_toggle",
kb_rules = "",
repeat_delay = 400,
repeat_rate = 35,
follow_mouse = 1,
sensitivity = -0.5, -- -1.0 - 1.0, 0 means no modification.
touchpad = {
natural_scroll = false,
},
},
})
-- Example per-device config
-- See https://wiki.hypr.land/Configuring/Advanced-and-Cool/Devices/ for more
hl.device({
name = "epic-mouse-v1",
sensitivity = -1.0,
})
---------------------
---- KEYBINDINGS ----
---------------------
local mainMod = "SUPER" -- Sets "Windows" key as main modifier
-- Example binds, see https://wiki.hypr.land/Configuring/Basics/Binds/ for more
hl.bind(mainMod .. " + Q", hl.dsp.exec_cmd(terminal))
local closeWindowBind = hl.bind(mainMod .. " + C", hl.dsp.window.close())
-- closeWindowBind:set_enabled(false)
hl.bind(mainMod .. " + M", hl.dsp.exec_cmd("command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch 'hl.dsp.exit()'"))
hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager))
hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
hl.bind(mainMod .. " + D", hl.dsp.exec_cmd(menu))
hl.bind(mainMod .. " + SHIFT + S", hl.dsp.exec_cmd(screenshot))
-- Move focus with mainMod + vim keys
hl.bind(mainMod .. " + H", hl.dsp.focus({ direction = "left" }))
hl.bind(mainMod .. " + L", hl.dsp.focus({ direction = "right" }))
hl.bind(mainMod .. " + K", hl.dsp.focus({ direction = "up" }))
hl.bind(mainMod .. " + J", hl.dsp.focus({ direction = "down" }))
-- Move windows with mainMod + SHIFT + vim keys
hl.bind(mainMod .. " + SHIFT + H", hl.dsp.window.move({ direction = "left" }))
hl.bind(mainMod .. " + SHIFT + L", hl.dsp.window.move({ direction = "right" }))
hl.bind(mainMod .. " + SHIFT + K", hl.dsp.window.move({ direction = "up" }))
hl.bind(mainMod .. " + SHIFT + J", hl.dsp.window.move({ direction = "down" }))
-- Switch workspaces with mainMod + [0-9]
-- Move active window to a workspace with mainMod + SHIFT + [0-9]
for i = 1, 10 do
local key = i % 10 -- 10 maps to key 0
hl.bind(mainMod .. " + " .. key, hl.dsp.focus({ workspace = i}))
hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i }))
end
-- Scroll through existing workspaces with mainMod + scroll
hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
-- Move/resize windows with mainMod + LMB/RMB and dragging
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true })
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true })
-- Laptop multimedia keys for volume and LCD brightness
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true, repeating = true })
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true, repeating = true })
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true })
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true })
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%+"), { locked = true, repeating = true })
hl.bind("XF86MonBrightnessDown",hl.dsp.exec_cmd("brightnessctl -e4 -n2 set 5%-"), { locked = true, repeating = true })
-- Requires playerctl
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true })
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
--------------------------------
---- WINDOWS AND WORKSPACES ----
--------------------------------
-- See https://wiki.hypr.land/Configuring/Basics/Window-Rules/
-- and https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
-- Example window rules that are useful
local suppressMaximizeRule = hl.window_rule({
-- Ignore maximize requests from all apps. You'll probably like this.
name = "suppress-maximize-events",
match = { class = ".*" },
suppress_event = "maximize",
})
-- suppressMaximizeRule:set_enabled(false)
hl.window_rule({
-- Fix some dragging issues with XWayland
name = "fix-xwayland-drags",
match = {
class = "^$",
title = "^$",
xwayland = true,
float = true,
fullscreen = false,
pin = false,
},
no_focus = true,
})
-- Layer rules also return a handle.
-- local overlayLayerRule = hl.layer_rule({
-- name = "no-anim-overlay",
-- match = { namespace = "^my-overlay$" },
-- no_anim = true,
-- })
-- overlayLayerRule:set_enabled(false)
-- Hyprland-run windowrule
hl.window_rule({
name = "move-hyprland-run",
match = { class = "hyprland-run" },
move = "20 monitor_h-120",
float = true,
})
+19
View File
@@ -0,0 +1,19 @@
{ inputs, ... }: {
flake.modules.nixos.hyprland = { pkgs, ... }: {
programs.hyprland.enable = true;
environment.sessionVariables.NIXOS_OZONE_WL = "1";
home-manager.sharedModules = [
inputs.self.modules.homeManager.hyprland
];
};
flake.modules.homeManager.hyprland = { pkgs, ... }: {
wayland.windowManager.hyprland.enable = true;
services.hyprpolkitagent.enable = true;
home.packages = with pkgs; [
hyprpicker
];
};
}
+6
View File
@@ -0,0 +1,6 @@
{
flake.modules.homeManager.hyprland = {
wayland.windowManager.hyprland.configType = "lua";
wayland.windowManager.hyprland.extraConfig = builtins.readFile ./config.lua;
};
}
+7
View File
@@ -0,0 +1,7 @@
{
flake.modules.homeManager.keepassxc = {
programs.keepassxc = {
enable = true;
};
};
}
+13
View File
@@ -0,0 +1,13 @@
{
flake.modules.homeManager.kitty = {
programs.kitty = {
settings = {
confirm_os_window_close = 0;
enable_auto_bell = false;
mouse_hide_wait = "-1.0";
background_opacity = "0.5";
background_blur = 5;
};
};
};
}
+20
View File
@@ -0,0 +1,20 @@
{
flake.modules.homeManager.kitty = {
programs.kitty = {
enable = true;
enableGitIntegration = true;
font = {
name = "JetBrains Mono";
size = 10;
};
shellIntegration.enableZshIntegration = true;
settings = {
confirm_os_window_close = 0;
enable_auto_bell = false;
mouse_hide_wait = "-1.0";
background_opacity = "0.5";
background_blur = 5;
};
};
};
}
+18
View File
@@ -0,0 +1,18 @@
{ inputs, ... }: {
flake-file.inputs = {
nixvim.url = "github:nix-community/nixvim/nixos-26.05";
nixvim.inputs.nixpkgs.follows = "nixpkgs";
};
flake.modules.homeManager.nixvim = {
imports = [
inputs.nixvim.homeModules.nixvim
];
programs.nixvim = {
enable = true;
};
home.sessionVariables.EDITOR = "nvim";
};
}
+15
View File
@@ -0,0 +1,15 @@
{
flake.modules.homeManager.rofi = { pkgs, ... }: {
programs.rofi = {
enable = true;
modes = [
"combi"
"drun"
"calc"
];
plugins = [
pkgs.rofi-calc
];
};
};
}
+29
View File
@@ -0,0 +1,29 @@
{ inputs, ... }:
{
flake.modules.nixos.zsh = {
programs.zsh.enable = true;
environment.pathsToLink = [ "/share/zsh" ];
};
flake.modules.homeManager.zsh = { pkgs, ... }: {
imports = with inputs.self.modules.homeManager; [
];
programs.zsh = {
enable = true;
autocd = true;
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
oh-my-zsh = {
enable = true;
plugins = [
"git"
];
};
};
};
}
+15
View File
@@ -0,0 +1,15 @@
{
flake.modules.nixos.nerdfonts = { pkgs, ... }: {
fonts = {
enableDefaultPackages = true;
packages = with pkgs; [
nerd-fonts.jetbrains-mono
];
fontDir.enable = true;
};
};
flake.modules.homeManager.nerdfonts = {
gtk.font.name = "JetBrainsMono";
};
}
+7
View File
@@ -0,0 +1,7 @@
{
flake.modules.nixos.networkmanager = {
networking.networkmanager = {
enable = true;
};
};
}
+11
View File
@@ -0,0 +1,11 @@
{
flake.modules.nixos.pipewire = {
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
wireplumber.enable = true;
};
};
}
+5
View File
@@ -0,0 +1,5 @@
{
flake.modules.nixos.amd-gpu = { pkgs, ... }: {
boot.kernelModules = [ "kvm-amd" ];
};
}
+21
View File
@@ -0,0 +1,21 @@
{
flake.modules.nixos.i18n-de = {
time.timeZone = "Europe/Berlin";
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocales = [ "ja_JP.UTF-8/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 = "de_DE.UTF-8";
LC_PAPER = "de_DE.UTF-8";
LC_TELEPHONE = "de_DE.UTF-8";
LC_TIME = "de_DE.UTF-8";
};
console.keyMap = "de";
};
}
+5
View File
@@ -0,0 +1,5 @@
{
flake.modules.nixos.linux-latest = { pkgs, ... }: {
# boot.kernelPackages.pkgs.linuxPackages_latest;
};
}
+6
View File
@@ -0,0 +1,6 @@
{
flake.modules.nixos.systemd-boot = {
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
};
}
@@ -0,0 +1,9 @@
{ inputs, ... }: {
flake.modules.homeManager.system-base = { config, ... }: {
imports = with inputs.self.modules.homeManager; [
];
home.homeDirectory = "/home/${config.home.username}";
home.stateVersion = "26.05";
};
}
+52
View File
@@ -0,0 +1,52 @@
{ inputs, ... }: {
flake-file.inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
nixpkgs-unstable.url = "github:nixos/nixpkgs-unstable";
};
flake.modules.nixos.system-base = { pkgs, ... }: {
imports = with inputs.self.modules.nixos; [
home-manager
zsh
linux-latest
];
nixpkgs.overlays = [
(final: _prev: {
unstable = import inputs.nixpkgs-unstable {
inherit (final) config;
system = pkgs.stdenv.hostPlatform.system;
};
})
];
nixpkgs.config.allowUnfree = true;
nix.settings = {
substituters = [
# high priority since it's almost always used
"https://cache.nixos.org?priority=10"
"https://install.determinate.systems"
"https://nix-community.cachix.org"
];
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"cache.flakehub.com-3:hJuILl5sVK4iKm86JzgdXW12Y2Hwd5G07qKtHTOcDCM"
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
];
experimental-features = [
"nix-command"
"flakes"
];
download-buffer-size = 1024 * 1024 * 1024;
trusted-users = [
"root"
"@wheel"
];
};
system.stateVersion = "26.05";
};
}
+27
View File
@@ -0,0 +1,27 @@
{ inputs, ... }: {
flake.modules.nixos.system-desktop = {
imports = with inputs.self.modules.nixos; [
system-base
hyprland
pipewire
browser
];
home-manager.sharedModules = [
inputs.self.modules.homeManager.system-desktop
];
};
flake.modules.homeManager.system-desktop = {
imports =
with inputs.self.modules.homeManager;
[
system-base
rofi
kitty
zsh
];
};
}
+13
View File
@@ -0,0 +1,13 @@
{
flake.modules.homeManager.snurm-git = {
programs.git = {
enable = true;
settings = {
user = {
email = "user@example.com";
name = "snurm";
};
};
};
};
}
+36
View File
@@ -0,0 +1,36 @@
{
inputs,
self,
lib,
...
}:
{
flake.homeConfiguration = inputs.self.lib.mkHomeManager "x86_64-linux" "snurm";
flake.modules = lib.mkMerge [
(self.factory.user "snurm" true)
{
nixos.snurm = {
imports =
with self.modules.nixos;
with self.factory;
[
];
users.users.snurm.extraGroups = [
"networkmanager"
];
};
homeManager.snurm = { pkgs, ... }: {
imports = with self.modules.homeManager; [
snurm-git
btop
nixvim
keepassxc
];
};
}
];
}
-4
View File
@@ -1,4 +0,0 @@
{ config, pkgs, ... }:
{
}
-5
View File
@@ -1,5 +0,0 @@
{
imports = [
./browser.nix
];
}