diff --git a/core/default.nix b/core/default.nix index 6deccb5..0688639 100644 --- a/core/default.nix +++ b/core/default.nix @@ -23,7 +23,7 @@ in { systemPackages = with pkgs; [ neovim ]; - variables.EDITOR = "nvim"; + variables.EDITOR = "nvim"; }; # Disable unnecessary stuff from the nixos defaults. @@ -56,7 +56,7 @@ in { nixpkgs.config.allowUnfree = true; programs = { - git = { + git = { enable = true; config = { init.defaultBranch = "main"; @@ -64,9 +64,9 @@ in { }; }; neovim = { - enable = true; + enable = true; viAlias = true; - }; + }; }; system = { diff --git a/hosts/nom/default.nix b/hosts/nom/default.nix index 1b36aa1..26cc454 100644 --- a/hosts/nom/default.nix +++ b/hosts/nom/default.nix @@ -16,7 +16,7 @@ ../../modules/laptop.nix ../../modules/yubikey.nix ../../modules/zfs.nix - ../../users/oddlama + ../../users/myuser ./fs.nix ./net.nix diff --git a/modules/bluetooth.nix b/modules/bluetooth.nix new file mode 100644 index 0000000..929c422 --- /dev/null +++ b/modules/bluetooth.nix @@ -0,0 +1,26 @@ +{pkgs, ...}: { + environment.systemPackages = with pkgs; [bluetuith]; + + hardware.bluetooth = { + enable = true; + powerOnBoot = true; + disabledPlugins = ["sap"]; + settings = { + General = { + FastConnectable = "true"; + JustWorksRepairing = "always"; + MultiProfile = "multiple"; + }; + }; + }; + + hardware.pulseaudio = { + package = pkgs.pulseaudio.override {bluetoothSupport = true;}; + extraConfig = '' + load-module module-bluetooth-discover + load-module module-bluetooth-policy + load-module module-switch-on-connect + ''; + extraModules = with pkgs; [pulseaudio-modules-bt]; + }; +} diff --git a/modules/efi.nix b/modules/efi.nix new file mode 100644 index 0000000..9357f9f --- /dev/null +++ b/modules/efi.nix @@ -0,0 +1,11 @@ +{lib, ...}: { + boot.loader = { + efi.canTouchEfiVariables = true; + systemd-boot = { + enable = true; + configurationLimit = 15; + }; + timeout = lib.mkDefault 2; + }; + console.earlySetup = true; +} diff --git a/modules/laptop.nix b/modules/laptop.nix new file mode 100644 index 0000000..c5f5ca9 --- /dev/null +++ b/modules/laptop.nix @@ -0,0 +1,15 @@ +{ + services.logind = { + lidSwitch = "ignore"; + lidSwitchDocked = "ignore"; + lidSwitchExternalPower = "ignore"; + extraConfig = '' + HandlePowerKey=suspend + HandleSuspendKey=suspend + HandleHibernateKey=suspend + PowerKeyIgnoreInhibited=yes + SuspendKeyIgnoreInhibited=yes + HibernateKeyIgnoreInhibited=yes + ''; + }; +} diff --git a/modules/nvidia.nix b/modules/nvidia.nix new file mode 100644 index 0000000..384ba86 --- /dev/null +++ b/modules/nvidia.nix @@ -0,0 +1,19 @@ +{ + boot.blacklistedKernelModules = ["nouveau"]; + + hardware = { + nvidia = { + modesetting.enable = true; + nvidiaPersistenced = true; + }; + opengl = { + enable = true; + driSupport32Bit = true; + }; + }; + + services.xserver.videoDrivers = ["nvidia"]; + + virtualisation.docker.enableNvidia = true; + virtualisation.podman.enableNvidia = true; +} diff --git a/modules/sound-pipewire.nix b/modules/sound-pipewire.nix new file mode 100644 index 0000000..a0043d4 --- /dev/null +++ b/modules/sound-pipewire.nix @@ -0,0 +1,39 @@ +{ + lib, + pkgs, + ... +}: { + environment.systemPackages = with pkgs; [pulseaudio]; + + hardware.pulseaudio.enable = lib.mkForce false; + + security.rtkit.enable = true; + + services.pipewire = { + enable = true; + alsa.enable = true; + jack.enable = true; + pulse.enable = true; + media-session.enable = false; + wireplumber.enable = true; + config = { + pipewire."context.properties"."default.clock.allowed-rates" = [ + 44100 + 48000 + 88200 + 96000 + 176400 + 192000 + 358000 + 384000 + 716000 + 768000 + ]; + pipewire-pulse."stream.properties"."resample.quality" = 15; + client."stream.properties"."resample.quality" = 15; + client-rt."stream.properties"."resample.quality" = 15; + }; + }; + + sound.enable = true; +} diff --git a/modules/yubikey.nix b/modules/yubikey.nix new file mode 100644 index 0000000..a500e34 --- /dev/null +++ b/modules/yubikey.nix @@ -0,0 +1,4 @@ +{pkgs, ...}: { + services.udev.packages = with pkgs; [yubikey-personalization libu2f-host]; + services.pcscd.enable = true; +} diff --git a/modules/zfs.nix b/modules/zfs.nix new file mode 100644 index 0000000..63180e8 --- /dev/null +++ b/modules/zfs.nix @@ -0,0 +1,17 @@ +{pkgs, ...}: { + boot.supportedFilesystems = ["zfs"]; + boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; + + environment.systemPackages = with pkgs; [zfs]; + + services.zfs = { + autoScrub = { + enable = true; + interval = "weekly"; + }; + trim = { + enable = true; + interval = "weekly"; + }; + }; +} diff --git a/users/myuser/core/default.nix b/users/myuser/core/default.nix index 6df1486..3d8c203 100644 --- a/users/myuser/core/default.nix +++ b/users/myuser/core/default.nix @@ -1,17 +1,17 @@ -{ pkgs, ... }: { +{pkgs, ...}: { imports = [ - ./atuin.nix - ./bash.nix - ./btop.nix - ./fish.nix - ./git.nix - ./htop.nix - ./neovim - ./ssh.nix - ./starship.nix - ./tmux.nix - ./xdg.nix - ./zsh.nix + #./atuin.nix + #./bash.nix + #./btop.nix + #./fish.nix + #./git.nix + #./htop.nix + #./neovim + #./ssh.nix + #./starship.nix + #./tmux.nix + #./xdg.nix + #./zsh.nix ]; home = { @@ -27,28 +27,29 @@ rclone ripgrep rsync + tree ]; shellAliases = { l = "ls -lahF --group-directories-first --show-control-chars --quoting-style=escape --color=auto"; - t="tree -F --dirsfirst -L 2" - tt="tree -F --dirsfirst -L 3 --filelimit 16" - ttt="tree -F --dirsfirst -L 6 --filelimit 16" - cpr="rsync -axHAWXS --numeric-ids --info=progress2" + t = "tree -F --dirsfirst -L 2"; + tt = "tree -F --dirsfirst -L 3 --filelimit 16"; + ttt = "tree -F --dirsfirst -L 6 --filelimit 16"; + cpr = "rsync -axHAWXS --numeric-ids --info=progress2"; - md="mkdir" - rmd="rm --one-file-system -d" - cp="cp -vi" - mv="mv -vi" - rm="rm --one-file-system -I" - chmod="chmod -c --preserve-root" - chown="chown -c --preserve-root" + md = "mkdir"; + rmd = "rm --one-file-system -d"; + cp = "cp -vi"; + mv = "mv -vi"; + rm = "rm --one-file-system -I"; + chmod = "chmod -c --preserve-root"; + chown = "chown -c --preserve-root"; - vim="nvim" - ip="ip --color" - tmux="tmux -2" - rg="rg -S" + vim = "nvim"; + ip = "ip --color"; + tmux = "tmux -2"; + rg = "rg -S"; - p="cd ~/projects" + p = "cd ~/projects"; }; }; @@ -60,7 +61,6 @@ bat.enable = true; fzf.enable = true; gpg.enable = true; - zoxide.enable = true; }; xdg.configFile."nixpkgs/config.nix".text = "{ allowUnfree = true; }"; diff --git a/users/myuser/default.nix b/users/myuser/default.nix index 2edf2ae..43e0f7a 100644 --- a/users/myuser/default.nix +++ b/users/myuser/default.nix @@ -1,13 +1,18 @@ -{ config, lib, pkgs, ... }: -with lib; { + config, + lib, + pkgs, + ... +}: +with lib; { users.groups.myuser.gid = config.users.users.myuser.uid; users.users.myuser = { - uid = 1000; + uid = 1000; createHome = true; group = "myuser"; - extraGroups = [ "wheel" "input" "video" ] - ++ optionals config.sound.enable [ "audio" ]; + extraGroups = + ["wheel" "input" "video"] + ++ optionals config.sound.enable ["audio"]; isNormalUser = true; shell = pkgs.zsh; }; @@ -17,13 +22,13 @@ with lib; #impermanence.home-manager.impermanence ./core ./dev - #] - #++ optionals config.programs.sway.enable [ - # ./graphical - # ./graphical/sway - #] ++ optionals config.services.xserver.windowManager.i3.enable [ - # ./graphical - # ./graphical/i3 + #] + #++ optionals config.programs.sway.enable [ + # ./graphical + # ./graphical/sway + #] ++ optionals config.services.xserver.windowManager.i3.enable [ + # ./graphical + # ./graphical/i3 ]; home.username = config.users.users.myuser.name; diff --git a/users/myuser/dev/default.nix b/users/myuser/dev/default.nix index e69de29..6627584 100644 --- a/users/myuser/dev/default.nix +++ b/users/myuser/dev/default.nix @@ -0,0 +1,39 @@ +{ + lib, + pkgs, + ... +}: { + home = { + extraOutputsToInstall = ["doc" "devdoc"]; + file.gdbinit = { + target = ".gdbinit"; + text = '' + set auto-load safe-path / + ''; + }; + packages = with pkgs; [ + git-lfs + nix-update + nixpkgs-review + ]; + }; + + programs = { + direnv = { + enable = true; + nix-direnv.enable = true; + stdlib = '' + : ''${XDG_CACHE_HOME:=$HOME/.cache} + declare -A direnv_layout_dirs + direnv_layout_dir() { + echo "''${direnv_layout_dirs[$PWD]:=$( + echo -n "$XDG_CACHE_HOME"/direnv/layouts/ + echo -n "$PWD" | shasum | cut -d ' ' -f 1 + )}" + } + ''; + }; + + nix-index.enable = true; + }; +}