commit c2e9b1d236b8d9b3ccf5f5b7a9065694714481a4 Author: willifan Date: Sat May 11 15:53:20 2024 +0200 Initial Commit diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..717e6c7 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,289 @@ +# 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, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + # + ]; + + # Bootloader. + boot = { + loader.systemd-boot.enable = true; + loader.efi.canTouchEfiVariables = true; + initrd.systemd.enable = true; + plymouth = { + enable = true; + theme = "bgrt"; + logo = "${pkgs.nixos-icons}/share/icons/hicolor/48x48/apps/nix-snowflake-white.png"; + font = "${pkgs.dejavu_fonts.minimal}/share/fonts/truetype/DejaVuSans.ttf"; + }; + + consoleLogLevel = 0; + initrd.verbose = false; + kernelParams = [ + "quiet" + "splash" + "boot.shell_on_fail" + "loglevel=3" + "rd.systemd.show_status=false" + "rd.udev.log_level=3" + "udev.log_priority=3" + ]; + # Hide the OS choice for bootloaders. + # It's still possible to open the bootloader list by pressing any key + # It will just not appear on screen unless a key is pressed + loader.timeout = 0; + + }; + networking.hostName = "Lenni"; # 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; + + # Set your time zone. + time.timeZone = "Europe/Berlin"; + + # 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 = "de_DE.UTF-8"; + LC_PAPER = "de_DE.UTF-8"; + LC_TELEPHONE = "de_DE.UTF-8"; + LC_TIME = "de_DE.UTF-8"; + }; + + #Allow unfree and unstable packages + nixpkgs.config.allowUnfree = 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; + }; + }; + }; + + # rtkit is optional but recommended + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + wireplumber.enable = true; + # If you want to use JACK applications, uncomment this + #jack.enable = true; + }; + + services.hardware.bolt.enable = true; + + programs.hyprland.enable = true; + + environment.sessionVariables.NIXOS_OZONE_WL = "1"; + + services.auto-cpufreq = { + enable = true; + settings = { + battery = { + governor = "powersave"; + turbo = "never"; + }; + charger = { + governor = "powersave"; + turbo = "never"; + }; + }; + }; + + services.fprintd.enable = true; + + services.syncthing = { + enable = true; + user = "willifan"; + dataDir = "/home/willifan/temp"; + configDir = "/home/willifan/temp/.config/syncthing"; + overrideDevices = true; + overrideFolders = true; + settings = { + gui = { + user = "willifan"; + password = "temppassword"; + }; + devices = { + Anton = { id = "SGKTC3I-6IQZ5Z5-VAB76N6-L7DJ3TH-BMSZGKZ-MZPZHLO-KOVMZ2W-V5GQTA6"; }; + }; + folders = { + "Documents" = { + id = "jtl6g-qjmwo"; + path = "/home/willifan/temp/Documents"; + devices = [ "Anton" ]; + }; + "Pictures" = { + id = "po4qj-q9t0t"; + path = "/home/willifan/temp/Pictures"; + devices = [ "Anton" ]; + }; + "Videos" = { + id = "4wqf5-xasng"; + path = "/home/willifan/temp/Videos"; + devices = [ "Anton" ]; + }; + "Notes" = { + id = "oc61n-iewgj"; + path = "/home/willifan/temp/Notes"; + devices = [ "Anton" ]; + }; + "Music" = { + id = "xxh8a-3y2tq"; + path = "/home/willifan/temp/Music"; + devices = [ "Anton" ]; + }; + }; + }; + }; + + security.polkit.enable = true; + + # Configure console keymap + console.keyMap = "de"; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.willifan = { + isNormalUser = true; + description = "willifan"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; []; + }; + + environment.sessionVariables = rec { + XDG_CACHE_HOME = "$HOME/.cache"; + XDG_CONFIG_HOME = "$HOME/.config"; + XDG_DATA_HOME = "$HOME/.local/share"; + XDG_STATE_HOME = "$HOME/.local/state"; + + # Not officially in the specification + #XDG_BIN_HOME = "$HOME/.local/bin"; + #PATH = [ + # "${XDG_BIN_HOME}" + #]; + SCRIPTS = "$XDG_CONFIG_HOME/scripts"; + }; + + + + services.udev.extraRules = '' + ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", MODE="0666", RUN+="${pkgs.coreutils}/bin/chmod a+w /sys/class/backlight/%k/brightness" + ''; + + + # List packages installed in system profile. To search, run: + # $ nix search wget + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + environment.systemPackages = with pkgs; [ + + hyprlock + hypridle + hyprpaper + hyprcursor + grim + slurp + wl-clipboard + kanshi + jq + bc + xorg.xrandr + pulseaudio + inotify-tools + papirus-icon-theme + eww + mako + polkit_gnome + + python3 + usbutils + unzip + + btop + + feh + + kitty + dolphin + hyfetch + wofi + enpass + firefox + thunderbird + webcord + obsidian + kicad + gnome.nautilus + cinnamon.nemo-with-extensions + + + ]; + + programs.nix-ld.enable = true; + + programs.nix-ld.libraries = with pkgs; [ + + # Add any missing dynamic libraries for unpackaged programs + + # here, NOT in environment.systemPackages + + ]; + + # 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 = "23.11"; # Did you read the comment? + +} + diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..d73345c --- /dev/null +++ b/flake.lock @@ -0,0 +1,140 @@ +{ + "nodes": { + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715217706, + "narHash": "sha256-yEB5SEHc+o3WJpUPw455OdLy9A+gffvCJX8DZ7NCkuo=", + "owner": "nix-community", + "repo": "disko", + "rev": "8eb1b315eef89f3bdc5c9814d1b207c6d64f0046", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, + "hardware": { + "locked": { + "lastModified": 1715148395, + "narHash": "sha256-lRxjTxY3103LGMjWdVqntKZHhlmMX12QUjeFrQMmGaE=", + "owner": "nixos", + "repo": "nixos-hardware", + "rev": "a4e2b7909fc1bdf30c30ef21d388fde0b5cdde4a", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixos-hardware", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1715348159, + "narHash": "sha256-nP0PJZ3dR0ols1V+w+sYBki7JlSRFvFJ8J8B00Oa7BM=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "223743313bab8b0b44a57eaf9573de9f69082b4d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1715087517, + "narHash": "sha256-CLU5Tsg24Ke4+7sH8azHWXKd0CFd4mhLWfhYgUiDBpQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b211b392b8486ee79df6cdfb1157ad2133427a29", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1715218190, + "narHash": "sha256-R98WOBHkk8wIi103JUVQF3ei3oui4HvoZcz9tYOAwlk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9a9960b98418f8c385f52de3b09a63f9c561427a", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_2": { + "locked": { + "lastModified": 1714858427, + "narHash": "sha256-tCxeDP4C1pWe2rYY3IIhdA40Ujz32Ufd4tcrHPSKx2M=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b980b91038fc4b09067ef97bbe5ad07eecca1e76", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "disko": "disko", + "hardware": "hardware", + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "nixpkgs-stable": "nixpkgs-stable", + "sops-nix": "sops-nix" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_2" + }, + "locked": { + "lastModified": 1715244550, + "narHash": "sha256-ffOZL3eaZz5Y1nQ9muC36wBCWwS1hSRLhUzlA9hV2oI=", + "owner": "mic92", + "repo": "sops-nix", + "rev": "0dc50257c00ee3c65fef3a255f6564cfbfe6eb7f", + "type": "github" + }, + "original": { + "owner": "mic92", + "repo": "sops-nix", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..669e0c0 --- /dev/null +++ b/flake.nix @@ -0,0 +1,54 @@ +{ + description = "A simple NixOS flake"; + + inputs = { + # NixOS official package source, using the nixos-23.11 branch here + nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-23.11"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + hardware.url = "github:nixos/nixos-hardware"; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + + + # Declarative partitioning and formatting + disko = { + url = "github:nix-community/disko"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + # Secrets management. See ./docs/secretsmgmt.md + sops-nix = { + url = "github:mic92/sops-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + }; + + outputs = { self, nixpkgs, home-manager, ... }@inputs: { + # Please replace my-nixos with your hostname + nixosConfigurations.Lenni = nixpkgs.lib.nixosSystem { + 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.willifan = import ./home/willifan; + + # Optionally, use home-manager.extraSpecialArgs to pass arguments to home.nix + } + + + ]; + }; + }; +} \ No newline at end of file diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..0524a51 --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,41 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/e09e7d80-9d85-49e6-8b0e-1f31aea83840"; + fsType = "btrfs"; + options = [ "subvol=@" ]; + }; + + boot.initrd.luks.devices."luks-a2f76baf-2f27-42a4-ae48-1963c566a9ab".device = "/dev/disk/by-uuid/a2f76baf-2f27-42a4-ae48-1963c566a9ab"; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/2A99-D7CC"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + swapDevices = [ ]; + + # 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..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp166s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/home/willifan/default.nix b/home/willifan/default.nix new file mode 100644 index 0000000..44fa72f --- /dev/null +++ b/home/willifan/default.nix @@ -0,0 +1,13 @@ +{ pkgs, ... }: + +{ + programs.bash.enable = true; + nixpkgs.config.allowUnfree = true; + imports = [ + ./graphical + ./git.nix + ]; + + home.stateVersion = "23.11"; +} + diff --git a/home/willifan/git.nix b/home/willifan/git.nix new file mode 100644 index 0000000..735a6b5 --- /dev/null +++ b/home/willifan/git.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: +{ + programs.git = { + enable = true; + package = pkgs.gitAndTools.gitFull; + userName = "willifan"; + userEmail = "willifan@proton.me"; + extraConfig = { + init.defaultBranch = "main"; + }; + }; +} \ No newline at end of file diff --git a/home/willifan/graphical/default.nix b/home/willifan/graphical/default.nix new file mode 100644 index 0000000..6d17480 --- /dev/null +++ b/home/willifan/graphical/default.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: + +{ + + imports = [ + ./dev +# ./hyprland + ./theme + ]; + +} + diff --git a/home/willifan/graphical/dev/default.nix b/home/willifan/graphical/dev/default.nix new file mode 100644 index 0000000..abfa574 --- /dev/null +++ b/home/willifan/graphical/dev/default.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: + +{ + imports = [ + ./vscodium.nix + ]; +} + diff --git a/home/willifan/graphical/dev/vscodium.nix b/home/willifan/graphical/dev/vscodium.nix new file mode 100644 index 0000000..e77974d --- /dev/null +++ b/home/willifan/graphical/dev/vscodium.nix @@ -0,0 +1,52 @@ +{ pkgs, ... }: + +{ +programs.vscode = { + enable = true; + package = pkgs.vscodium; + extensions = with pkgs.vscode-extensions; [ + # System + bbenoist.nix + #fireblast.hyprlang-vscode + #eww-yuck.yuck + + #Rust + rust-lang.rust-analyzer + serayuzgur.crates + bungcip.better-toml + vadimcn.vscode-lldb + usernamehw.errorlens + + #C/C++ + ms-vscode.cpptools + twxs.cmake + ms-vscode.cmake-tools + + #Shell + timonwong.shellcheck + mads-hartmann.bash-ide-vscode + + #Git + #phil294.git-log--graph + ] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [ + { + name = "hyprlang-vscode"; + publisher = "fireblast"; + version = "0.0.1"; + sha256 = "lSMihMIue0qu9+97EgT5dqjbzsey0TLZDpJby+Piip4="; + } + { + name = "yuck"; + publisher = "eww-yuck"; + version = "0.0.3"; + sha256 = "DITgLedaO0Ifrttu+ZXkiaVA7Ua5RXc4jXQHPYLqrcM="; + } + { + name = "git-log--graph"; + publisher = "phil294"; + version = "0.1.15"; + sha256 = "lvjDkvXSX7rw7HyyK3WWQLnGezvL6FPEgtjIi8KWkU0="; + } + ]; + }; +} \ No newline at end of file diff --git a/home/willifan/graphical/firefox.nix b/home/willifan/graphical/firefox.nix new file mode 100644 index 0000000..e69de29 diff --git a/home/willifan/graphical/hyprland/default.nix b/home/willifan/graphical/hyprland/default.nix new file mode 100644 index 0000000..e3272a0 --- /dev/null +++ b/home/willifan/graphical/hyprland/default.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: + +{ + imports = [ + ./hyprland.nix + ./kanshi.nix + ]; +} \ No newline at end of file diff --git a/home/willifan/graphical/hyprland/hypridle.nix b/home/willifan/graphical/hyprland/hypridle.nix new file mode 100644 index 0000000..e69de29 diff --git a/home/willifan/graphical/hyprland/hyprland.nix b/home/willifan/graphical/hyprland/hyprland.nix new file mode 100644 index 0000000..e69de29 diff --git a/home/willifan/graphical/hyprland/kanshi.nix b/home/willifan/graphical/hyprland/kanshi.nix new file mode 100644 index 0000000..3f399c5 --- /dev/null +++ b/home/willifan/graphical/hyprland/kanshi.nix @@ -0,0 +1,17 @@ + + +{ + services.kanshi = { + enable = true; + + profile = { + default = { + outputs = [ + + ]; + }; + }; + + systemdTarget = "hyprland-session.target"; + }; +} \ No newline at end of file diff --git a/home/willifan/graphical/kitty.nix b/home/willifan/graphical/kitty.nix new file mode 100644 index 0000000..e69de29 diff --git a/home/willifan/graphical/theme/default.nix b/home/willifan/graphical/theme/default.nix new file mode 100644 index 0000000..fc24394 --- /dev/null +++ b/home/willifan/graphical/theme/default.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: + +{ + imports = [ + ./gtk.nix + #./qt.nix + ]; +} \ No newline at end of file diff --git a/home/willifan/graphical/theme/gtk.nix b/home/willifan/graphical/theme/gtk.nix new file mode 100644 index 0000000..00d3c6a --- /dev/null +++ b/home/willifan/graphical/theme/gtk.nix @@ -0,0 +1,44 @@ +{ config, pkgs, lib, ... }: + +{ + gtk = { + enable = true; + font = { + name = "jetbrains-mono"; + package = pkgs.jetbrains-mono; + }; + + theme = { + name = "rose-pine"; + package = pkgs.rose-pine-gtk-theme; + }; + + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; + }; + + #TODO add ascendancy cursor pack + #cursortTheme.name = ""; + #cursortTheme.package = ; + + gtk3.extraConfig = { + Settings = '' + gtk-application-prefer-dark-theme=1 + ''; + }; + gtk4 = { + extraConfig = { + Settings = '' + gtk-application-prefer-dark-theme=1 + ''; + }; + extraCss = '' + .sidebar-pane { + background-color: rgb(42, 42, 42); + } + ''; + + }; + }; +} diff --git a/home/willifan/graphical/theme/qt.nix b/home/willifan/graphical/theme/qt.nix new file mode 100644 index 0000000..e69de29 diff --git a/home/willifan/graphical/thunderbird.nix b/home/willifan/graphical/thunderbird.nix new file mode 100644 index 0000000..e69de29 diff --git a/home/willifan/ssh.nix b/home/willifan/ssh.nix new file mode 100644 index 0000000..e69de29 diff --git a/home/willifan/zsh.nix b/home/willifan/zsh.nix new file mode 100644 index 0000000..e69de29