diff options
author | Mark Nipper <nipsy@bitgnome.net> | 2024-03-31 02:40:11 -0700 |
---|---|---|
committer | Mark Nipper <nipsy@bitgnome.net> | 2024-03-31 02:40:11 -0700 |
commit | 76b3b07e7329be637b37f92e767595143d3b03fa (patch) | |
tree | ff674a9bc8d8e1cdba94cb0d1c13de28b75c1e74 | |
parent | 04fd53819ffce3e1275ec48bcdf71769414fdea1 (diff) | |
download | nix-76b3b07e7329be637b37f92e767595143d3b03fa.tar nix-76b3b07e7329be637b37f92e767595143d3b03fa.tar.gz nix-76b3b07e7329be637b37f92e767595143d3b03fa.tar.bz2 nix-76b3b07e7329be637b37f92e767595143d3b03fa.tar.lz nix-76b3b07e7329be637b37f92e767595143d3b03fa.tar.xz nix-76b3b07e7329be637b37f92e767595143d3b03fa.tar.zst nix-76b3b07e7329be637b37f92e767595143d3b03fa.zip |
Migrate to more modular layout
Diffstat (limited to '')
42 files changed, 903 insertions, 305 deletions
diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..c89237a --- /dev/null +++ b/flake.lock @@ -0,0 +1,81 @@ +{ + "nodes": { + "hardware": { + "locked": { + "lastModified": 1711352745, + "narHash": "sha256-luvqik+i3HTvCbXQZgB6uggvEcxI9uae0nmrgtXJ17U=", + "owner": "nixos", + "repo": "nixos-hardware", + "rev": "9a763a7acc4cfbb8603bb0231fec3eda864f81c0", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixos-hardware", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1711868868, + "narHash": "sha256-QpZanlbVu6Gb2K96u3vgu0F2BvZD74+fOsIFWcYEXoY=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "30f2ec39519f4f5a8a96af808c439e730c15aeab", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1711873298, + "narHash": "sha256-m/zqoQqZDIdbBTfuyrzUrhK1rrnoe8x73V0bKK0jVKM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "599937e03ee0306ee68ae6c1949b85aecfa6aaba", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-unstable": { + "locked": { + "lastModified": 1711703276, + "narHash": "sha256-iMUFArF0WCatKK6RzfUJknjem0H9m4KgorO/p3Dopkk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d8fe5e6c92d0d190646fb9f1056741a229980089", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "hardware": "hardware", + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "nixpkgs-unstable": "nixpkgs-unstable" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..719b19a --- /dev/null +++ b/flake.nix @@ -0,0 +1,70 @@ +{ + description = "nipsy's NixOS configuration"; + + inputs = { + hardware.url = "github:nixos/nixos-hardware"; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nixpkgs.url = "github:NixOS/nixpkgs/release-23.11"; + nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable"; + }; + + outputs = { self, nixpkgs, nixpkgs-unstable, home-manager, ... } @ inputs: + let + inherit (self) outputs; + lib = nixpkgs.lib // home-manager.lib; + systems = [ + "x86_64-linux" + # "aarch64-linux" + # "x86_64-darwin" + #"aarch64-darwin" + # "i686-linux" + ]; + forEachSystem = f: lib.genAttrs systems (system: f pkgsFor.${system}); + pkgsFor = lib.genAttrs systems (system: import nixpkgs { + inherit system; + config.allowUnfree = true; + }); + in + { + inherit lib; + + # Custom modules to enable special functionality for nixos or home-manager oriented configs. + nixosModules = import ./modules/nixos; + homeManagerModules = import ./modules/home-manager; + + # Custom modifications/overrides to upstream packages. + overlays = import ./overlays { inherit inputs outputs; }; + + # Your custom packages meant to be shared or upstreamed. + # Accessible through 'nix build', 'nix shell', etc + packages = forEachSystem (pkgs: import ./pkgs { inherit pkgs; }); + + # nixos-rebuild switch --flake .#hostname' + nixosConfigurations = { + ginaz = nixpkgs-unstable.lib.nixosSystem rec { + system = "x86_64-linux"; + modules = [ + { + nixpkgs.config.pkgs = import nixpkgs-unstable { inherit system; }; + } + ./hosts/ginaz + ]; + specialArgs = { inherit inputs outputs; }; + }; + }; + + # home-manager switch --flake .#primary-username@hostname' + homeConfigurations = { + "nipsy@ginaz" = lib.homeManagerConfiguration { + modules = [ ./home/nipsy/ginaz.nix ]; + pkgs = pkgsFor.x86_64-linux; + extraSpecialArgs = { inherit inputs outputs; }; + }; + }; + }; +} diff --git a/ginaz/flake.lock b/ginaz/flake.lock deleted file mode 100644 index 021cb88..0000000 --- a/ginaz/flake.lock +++ /dev/null @@ -1,48 +0,0 @@ -{ - "nodes": { - "home-manager": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1710401383, - "narHash": "sha256-jskq7uDpKXrRoY4hDpNqykmSSKHUXYlo7ZFc/se7fus=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "1ab3cec3a1bbb065b2d52b913d1431366028d5b5", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "nixpkgs": { - "locked": { - "lastModified": 1710272261, - "narHash": "sha256-g0bDwXFmTE7uGDOs9HcJsfLFhH7fOsASbAuOzDC+fhQ=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "0ad13a6833440b8e238947e47bea7f11071dc2b2", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "root": { - "inputs": { - "home-manager": "home-manager", - "nixpkgs": "nixpkgs" - } - } - }, - "root": "root", - "version": 7 -} diff --git a/ginaz/flake.nix b/ginaz/flake.nix deleted file mode 100644 index b60a38a..0000000 --- a/ginaz/flake.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - description = "nipsy's NixOS configuration"; - - inputs = { - nixpkgs.url = github:NixOS/nixpkgs/nixos-unstable; - home-manager.url = "github:nix-community/home-manager"; - home-manager.inputs.nixpkgs.follows = "nixpkgs"; - }; - - outputs = inputs@{ nixpkgs, home-manager, ... }: { - nixosConfigurations.ginaz = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ - ./configuration.nix - home-manager.nixosModules.home-manager { - home-manager.useGlobalPkgs = true; - #home-manager.useUserPackages = true; - home-manager.users.nipsy = import ./home.nix; - } - ]; - }; - }; -} diff --git a/home/nipsy/common/core/bash.nix b/home/nipsy/common/core/bash.nix new file mode 100644 index 0000000..77f0cf4 --- /dev/null +++ b/home/nipsy/common/core/bash.nix @@ -0,0 +1,10 @@ +{ + programs.bash = { + enable = true; + enableCompletion = true; + shellAliases = { + ll = "ls -alF --color=auto"; + la = "ls -aF --color=auto"; + }; + }; +} diff --git a/home/nipsy/common/core/default.nix b/home/nipsy/common/core/default.nix new file mode 100644 index 0000000..6903d90 --- /dev/null +++ b/home/nipsy/common/core/default.nix @@ -0,0 +1,63 @@ +{ config, lib, pkgs, outputs, ... }: +{ + imports = [ + ./bash.nix + ./fonts.nix + ./git.nix + ./ssh.nix + ./tmux + ./vim + ./zsh + ] ++ (builtins.attrValues outputs.homeManagerModules); + + home = { + username = lib.mkDefault "nipsy"; + homeDirectory = lib.mkDefault "/home/${config.home.username}"; + stateVersion = lib.mkDefault "23.11"; + }; + + home.packages = builtins.attrValues { + inherit (pkgs) + + borgbackup + btop + coreutils + eza + fd + findutils + fzf + jq + nix-tree + ncdu + pciutils + pfetch + pre-commit + p7zip + ripgrep + usbutils + tree + unzip + unrar + wget + zip; + }; + + nixpkgs = { + overlays = builtins.attrValues outputs.overlays; + config = { + allowUnfree = true; + # Workaround for https://github.com/nix-community/home-manager/issues/2942 + allowUnfreePredicate = (_: true); + }; + }; + + nix = { + package = lib.mkDefault pkgs.nix; + settings = { + experimental-features = [ "nix-command" "flakes" "repl-flake" ]; + warn-dirty = false; + }; + }; + + programs.home-manager.enable = true; +} diff --git a/home/nipsy/common/core/fonts.nix b/home/nipsy/common/core/fonts.nix new file mode 100644 index 0000000..9ed0753 --- /dev/null +++ b/home/nipsy/common/core/fonts.nix @@ -0,0 +1,9 @@ +{ pkgs, ... }: +{ + fonts.fontconfig.enable = true; + home.packages = [ + pkgs.noto-fonts + pkgs.nerdfonts + ]; + +} diff --git a/home/nipsy/common/core/git.nix b/home/nipsy/common/core/git.nix new file mode 100644 index 0000000..d8bc6cf --- /dev/null +++ b/home/nipsy/common/core/git.nix @@ -0,0 +1,8 @@ +{ + programs.git = { + enable = true; + userEmail = "nipsy@bitgnome.net"; + userName = "Mark Nipper"; + extraConfig.pull.rebase = true; + }; +} diff --git a/home/nipsy/common/core/ssh.nix b/home/nipsy/common/core/ssh.nix new file mode 100644 index 0000000..929cc51 --- /dev/null +++ b/home/nipsy/common/core/ssh.nix @@ -0,0 +1,5 @@ +{ + programs.ssh = { + enable = true; + }; +} diff --git a/home/nipsy/common/core/tmux/default.nix b/home/nipsy/common/core/tmux/default.nix new file mode 100644 index 0000000..e7873f8 --- /dev/null +++ b/home/nipsy/common/core/tmux/default.nix @@ -0,0 +1,6 @@ +{ + programs.tmux = { + enable = true; + extraConfig = (builtins.readFile ./tmux.conf); + }; +} diff --git a/home/nipsy/common/core/tmux/tmux.conf b/home/nipsy/common/core/tmux/tmux.conf new file mode 100644 index 0000000..ae43d03 --- /dev/null +++ b/home/nipsy/common/core/tmux/tmux.conf @@ -0,0 +1,34 @@ +#set-option -ga terminal-overrides ",st-256color:Tc" +set -as terminal-features ",foot*:RGB" +set -as terminal-features ",st-256color:RGB" +set -ga monitor-bell on +set -g history-limit 100000 +set -g bell-action any +#set -g bell-on-alert on + +set -s escape-time 0 + +setw -g aggressive-resize on +setw -g wrap-search off + +bind-key a send-prefix +bind-key k kill-session +bind-key H pipe-pane -o 'cat >> ~/.tmux.log.#h-#S-#I-#P' + +#bind-key m \ +# set -g mouse on \;\ +# display 'Mouse: ON' +#bind M \ +# set -g mouse off \;\ +# display 'Mouse: OFF' + +# vim-like copypaste mode +set-window-option -g mode-keys vi +bind-key -T copy-mode-vi v send -X begin-selection +bind-key -T copy-mode-vi y send -X copy-pipe "xclip -selection clipboard" +bind-key -T copy-mode-vi C-v send -X rectangle-toggle +bind-key P run "tmux set-buffer \"$(xclip -o -selection clipboard)\"; tmux paste-buffer" + +# don't exit copy mode after selection +#set -s mouse on +#bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection -x diff --git a/home/nipsy/common/core/vim/default.nix b/home/nipsy/common/core/vim/default.nix new file mode 100644 index 0000000..ea4ed5e --- /dev/null +++ b/home/nipsy/common/core/vim/default.nix @@ -0,0 +1,6 @@ +{ + programs.vim = { + enable = true; + extraConfig = (builtins.readFile ./vimrc); + }; +} diff --git a/home/nipsy/common/core/vim/vimrc b/home/nipsy/common/core/vim/vimrc new file mode 100644 index 0000000..e80231c --- /dev/null +++ b/home/nipsy/common/core/vim/vimrc @@ -0,0 +1,46 @@ +" Handling of big files - William Natter, Tony Mechelynck and others +" fairly certain that BufSizeThreshold is in bytes +let g:SaveUndoLevels = &undolevels +let g:BufSizeThreshold = 5242880 +if has("autocmd") + au VimEnter * let g:SaveUndoLevels = &undolevels + au BufReadPre * if getfsize(expand("%")) >= g:BufSizeThreshold | setlocal noswapfile | endif + au BufEnter * if getfsize(expand("%")) < g:BufSizeThreshold | let &undolevels=g:SaveUndoLevels | else | setlocal undolevels=-1 | endif + au BufEnter * if getfsize(expand("%")) < g:BufSizeThreshold | syntax on | else | syntax off | endif +endif + +set mouse& +set noautoindent " always set autoindenting off + +" enable better 24-bit color support +"let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" +"let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" +set termguicolors + +" If using a dark background within the editing area and syntax highlighting +" turn on this option as well +set background=dark + +if has("autocmd") + " Enabled file type detection + " Use the default filetype settings. If you also want to load indent files + " to automatically do language-dependent indenting add 'indent' as well. + filetype plugin on + "filetype indent on +endif " has ("autocmd") + +" The following are commented out as they cause vim to behave a lot +" different from regular vi. They are highly recommended though. +set showcmd " Show (partial) command in status line. +set showmatch " Show matching brackets. +set ignorecase " Do case insensitive matching +set incsearch " Incremental search +"set expandtab " replace tabs with spaces +set smarttab " use shiftwidth instead of tabstop at start of line +set spell spelllang=en_us " turn on the spell check + +set laststatus=2 +set statusline=%<%f%h%m%r%=%{&ff}\ %Y\ %b\ 0x%B\ \ %l,%c%V\ %P + +map <F5> :w<CR><bar>:!clear;go run %<CR> +map <F6> :w<CR><bar>:%! gofmt<CR> diff --git a/home/nipsy/common/core/zsh/default.nix b/home/nipsy/common/core/zsh/default.nix new file mode 100644 index 0000000..453fa9f --- /dev/null +++ b/home/nipsy/common/core/zsh/default.nix @@ -0,0 +1,10 @@ +{ + programs.zsh = { + enable = true; + initExtra = (builtins.readFile ./zshrc); + shellAliases = { + la = "ls -alFh --color=auto"; + ll = "ls -aF --color=auto"; + }; + }; +} diff --git a/ginaz/home.nix b/home/nipsy/common/core/zsh/zshrc index c2f84f7..9e43d1d 100644 --- a/ginaz/home.nix +++ b/home/nipsy/common/core/zsh/zshrc @@ -1,120 +1,3 @@ -{ config, pkgs, ... }: - -{ - gtk = { - enable = true; - gtk3.extraConfig.gtk-application-prefer-dark-theme = true; - gtk4.extraConfig.gtk-application-prefer-dark-theme = true; - }; - - home.username = "nipsy"; - home.homeDirectory = "/home/nipsy"; - home.stateVersion = "23.11"; - - programs.git = { - enable = true; - userName = "Mark Nipper"; - userEmail = "nipsy@bitgnome.net"; - extraConfig.pull.rebase = true; - }; - - programs.home-manager.enable = true; - - programs.tmux = { - enable = true; - extraConfig = '' - #set-option -ga terminal-overrides ",st-256color:Tc" - set -as terminal-features ",foot*:RGB" - set -as terminal-features ",st-256color:RGB" - set -ga monitor-bell on - set -g history-limit 100000 - set -g bell-action any - #set -g bell-on-alert on - - set -s escape-time 0 - - setw -g aggressive-resize on - setw -g wrap-search off - - bind-key a send-prefix - bind-key k kill-session - bind-key H pipe-pane -o 'cat >> ~/.tmux.log.#h-#S-#I-#P' - - #bind-key m \ - # set -g mouse on \;\ - # display 'Mouse: ON' - #bind M \ - # set -g mouse off \;\ - # display 'Mouse: OFF' - - # vim-like copypaste mode - set-window-option -g mode-keys vi - bind-key -T copy-mode-vi v send -X begin-selection - bind-key -T copy-mode-vi y send -X copy-pipe "xclip -selection clipboard" - bind-key -T copy-mode-vi C-v send -X rectangle-toggle - bind-key P run "tmux set-buffer \"$(xclip -o -selection clipboard)\"; tmux paste-buffer" - - # don't exit copy mode after selection - #set -s mouse on - #bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-selection -x - ''; - }; - - programs.vim = { - enable = true; - extraConfig = '' - " Handling of big files - William Natter, Tony Mechelynck and others - " fairly certain that BufSizeThreshold is in bytes - let g:SaveUndoLevels = &undolevels - let g:BufSizeThreshold = 5242880 - if has("autocmd") - au VimEnter * let g:SaveUndoLevels = &undolevels - au BufReadPre * if getfsize(expand("%")) >= g:BufSizeThreshold | setlocal noswapfile | endif - au BufEnter * if getfsize(expand("%")) < g:BufSizeThreshold | let &undolevels=g:SaveUndoLevels | else | setlocal undolevels=-1 | endif - au BufEnter * if getfsize(expand("%")) < g:BufSizeThreshold | syntax on | else | syntax off | endif - endif - - set mouse& - set noautoindent " always set autoindenting off - - " enable better 24-bit color support - "let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" - "let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" - set termguicolors - - " If using a dark background within the editing area and syntax highlighting - " turn on this option as well - set background=dark - - if has("autocmd") - " Enabled file type detection - " Use the default filetype settings. If you also want to load indent files - " to automatically do language-dependent indenting add 'indent' as well. - filetype plugin on - "filetype indent on - endif " has ("autocmd") - - " The following are commented out as they cause vim to behave a lot - " different from regular vi. They are highly recommended though. - set showcmd " Show (partial) command in status line. - set showmatch " Show matching brackets. - set ignorecase " Do case insensitive matching - set incsearch " Incremental search - "set expandtab " replace tabs with spaces - set smarttab " use shiftwidth instead of tabstop at start of line - set spell spelllang=en_us " turn on the spell check - - set laststatus=2 - set statusline=%<%f%h%m%r%=%{&ff}\ %Y\ %b\ 0x%B\ \ %l,%c%V\ %P - - map <F5> :w<CR><bar>:!clear;go run %<CR> - map <F6> :w<CR><bar>:%! gofmt<CR> - ''; - }; - - programs.zsh = { - enable = true; - initExtra = '' umask 022 #export GOROOT="''${HOME}/.local/go" @@ -192,8 +75,8 @@ setopt LONG_LIST_JOBS NO_HUP setopt NO_BEEP lsopt='--color=auto' -alias ll="ls -alFh $lsopt" -alias la="ls -aF $lsopt" +#alias ll="ls -alFh $lsopt" +#alias la="ls -aF $lsopt" alias cal="ncal -b" #alias grep='grep --color=always' # cannot do this as it breaks shell pipelines alias talk='gnutalk --curses' @@ -285,6 +168,3 @@ function precmd { } PS1='%# ' - ''; - }; -} diff --git a/home/nipsy/common/optional/desktops/default.nix b/home/nipsy/common/optional/desktops/default.nix new file mode 100644 index 0000000..0bb8411 --- /dev/null +++ b/home/nipsy/common/optional/desktops/default.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./gtk.nix + ./i3 + ./services/dunst.nix + ]; +} diff --git a/home/nipsy/common/optional/desktops/gtk.nix b/home/nipsy/common/optional/desktops/gtk.nix new file mode 100644 index 0000000..facb782 --- /dev/null +++ b/home/nipsy/common/optional/desktops/gtk.nix @@ -0,0 +1,7 @@ +{ + gtk = { + enable = true; + gtk3.extraConfig.gtk-application-prefer-dark-theme = true; + gtk4.extraConfig.gtk-application-prefer-dark-theme = true; + }; +} diff --git a/home/nipsy/common/optional/desktops/i3/config b/home/nipsy/common/optional/desktops/i3/config new file mode 100644 index 0000000..57c9d38 --- /dev/null +++ b/home/nipsy/common/optional/desktops/i3/config @@ -0,0 +1,228 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. +# +# Should you change your keyboard layout somewhen, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see http://i3wm.org/docs/userguide.html for a complete reference! + +set $mod Mod4 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. ISO 10646 = Unicode +font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +# The font above is very space-efficient, that is, it looks good, sharp and +# clear in small sizes. However, if you need a lot of unicode glyphs or +# right-to-left text rendering, you should instead use pango for rendering and +# chose a FreeType font, such as: +# font pango:DejaVu Sans Mono 10 + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +bindsym $mod+Return exec --no-startup-id st + +# lock the screen +bindsym $mod+Scroll_Lock exec --no-startup-id xscreensaver-command -lock + +# increase volume +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% + +# decrease volume +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% + +# mute volume +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle + +# mute mic volume +bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute 1 toggle + +# kill focused window +bindsym $mod+Shift+q kill +# kill with middle mouse button over titlebar +bindsym --release button2 kill +# kill with middle mouse button and $mod anywhere over window +bindsym --whole-window $mod+button2 kill + +# start dmenu (a program launcher) +bindsym $mod+d exec dmenu_run +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +# bindsym $mod+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+Shift+f fullscreen + +# enter fullscreen mode for the focused container +bindsym $mod+Shift+g fullscreen global + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child + +# switch to workspace +bindsym $mod+1 workspace 1 +bindsym $mod+2 workspace 2 +bindsym $mod+3 workspace 3 +bindsym $mod+4 workspace 4 +bindsym $mod+5 workspace 5 +bindsym $mod+6 workspace 6 +bindsym $mod+7 workspace 7 +bindsym $mod+8 workspace 8 +bindsym $mod+9 workspace 9 +bindsym $mod+0 workspace 10 +bindsym $mod+F1 workspace 11 +bindsym $mod+F2 workspace 12 +bindsym $mod+F3 workspace 13 +bindsym $mod+F4 workspace 14 +bindsym $mod+F5 workspace 15 +bindsym $mod+F6 workspace 16 +bindsym $mod+F7 workspace 17 +bindsym $mod+F8 workspace 18 +bindsym $mod+F9 workspace 19 +bindsym $mod+F10 workspace 20 + +# move backward or forward to next workspace +bindsym $mod+n workspace next +bindsym $mod+p workspace prev +bindsym $mod+f workspace next_on_output +bindsym $mod+b workspace prev_on_output + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace 1 +bindsym $mod+Shift+2 move container to workspace 2 +bindsym $mod+Shift+3 move container to workspace 3 +bindsym $mod+Shift+4 move container to workspace 4 +bindsym $mod+Shift+5 move container to workspace 5 +bindsym $mod+Shift+6 move container to workspace 6 +bindsym $mod+Shift+7 move container to workspace 7 +bindsym $mod+Shift+8 move container to workspace 8 +bindsym $mod+Shift+9 move container to workspace 9 +bindsym $mod+Shift+0 move container to workspace 10 +bindsym $mod+Shift+F1 move container to workspace 11 +bindsym $mod+Shift+F2 move container to workspace 12 +bindsym $mod+Shift+F3 move container to workspace 13 +bindsym $mod+Shift+F4 move container to workspace 14 +bindsym $mod+Shift+F5 move container to workspace 15 +bindsym $mod+Shift+F6 move container to workspace 16 +bindsym $mod+Shift+F7 move container to workspace 17 +bindsym $mod+Shift+F8 move container to workspace 18 +bindsym $mod+Shift+F9 move container to workspace 19 +bindsym $mod+Shift+F10 move container to workspace 20 + +# jump to urgent window +bindsym $mod+u [urgent=latest] focus + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart +# exit i3 (logs you out of your X session) +#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" +bindsym $mod+Shift+e exec i3-msg exit + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+r mode "resize" + +# bar toggle, hide or show +bindsym $mod+m bar mode toggle + +# VNC mode (disable all local keybindings except the toggle keybinding) +mode "VNC" { + bindsym $mod+Shift+v mode "default" +} + +bindsym $mod+Shift+v mode "VNC" + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + status_command i3status + tray_output primary +} + +# set borders normal for everything except st +#for_window [class="^.*"] border normal +#for_window [class="st-256color"] border pixel 1 +#for_window [class="AppGate SDP"] floating disable +#for_window [class="factorio"] fullscreen enable +for_window [class="Steam" title="Friends List"] floating enable +#for_window [class=".*"] border none +for_window [all] border none + +# Start network applet +#exec --no-startup-id nm-applet +#exec --no-startup-id blueman-applet +#exec --no-startup-id ~/bin/xscreensaver-activate +#exec --no-startup-id /usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 diff --git a/home/nipsy/common/optional/desktops/i3/default.nix b/home/nipsy/common/optional/desktops/i3/default.nix new file mode 100644 index 0000000..d369ff2 --- /dev/null +++ b/home/nipsy/common/optional/desktops/i3/default.nix @@ -0,0 +1,10 @@ +{ + programs.i3status = { + enable = true; + }; + + xsession.windowManager.i3 = { + enable = true; + extraConfig = (builtins.readFile ./config); + }; +} diff --git a/home/nipsy/common/optional/desktops/services/dunst.nix b/home/nipsy/common/optional/desktops/services/dunst.nix new file mode 100644 index 0000000..9efef64 --- /dev/null +++ b/home/nipsy/common/optional/desktops/services/dunst.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: +{ + home.packages = builtins.attrValues { + inherit (pkgs) + libnotify; # required by dunst + }; + + services.dunst = { + enable = true; + }; +} diff --git a/home/nipsy/ginaz.nix b/home/nipsy/ginaz.nix new file mode 100644 index 0000000..17d39fd --- /dev/null +++ b/home/nipsy/ginaz.nix @@ -0,0 +1,7 @@ +{ inputs, lib, pkgs, config, outputs, ... }: +{ + imports = [ + common/core + common/optional/desktops + ]; +} diff --git a/hosts/common/core/default.nix b/hosts/common/core/default.nix new file mode 100644 index 0000000..8d19a9f --- /dev/null +++ b/hosts/common/core/default.nix @@ -0,0 +1,21 @@ +{ inputs, outputs, ... }: { + imports = [ + inputs.home-manager.nixosModules.home-manager + ./locale.nix + ./nix.nix + ./shells.nix + ./zsh.nix + ] ++ (builtins.attrValues outputs.nixosModules); + + home-manager.extraSpecialArgs = { inherit inputs outputs; }; + + nixpkgs = { + # you can add global overlays here + overlays = builtins.attrValues outputs.overlays; + config = { + allowUnfree = true; + }; + }; + + hardware.enableRedistributableFirmware = true; +} diff --git a/hosts/common/core/locale.nix b/hosts/common/core/locale.nix new file mode 100644 index 0000000..914312e --- /dev/null +++ b/hosts/common/core/locale.nix @@ -0,0 +1,5 @@ +{ lib, ... }: +{ + i18n.defaultLocale = lib.mkDefault "en_US.UTF-8"; + time.timeZone = lib.mkDefault "America/Los_Angeles"; +} diff --git a/hosts/common/core/nix.nix b/hosts/common/core/nix.nix new file mode 100644 index 0000000..587bac6 --- /dev/null +++ b/hosts/common/core/nix.nix @@ -0,0 +1,30 @@ +{ inputs, lib, ... }: +{ + nix = { + settings = { + trusted-users = [ "root" "@wheel" ]; + + auto-optimise-store = lib.mkDefault true; + experimental-features = [ "nix-command" "flakes" "repl-flake" ]; + warn-dirty = false; + #flake-registry = ""; # Disable global flake registry This is a hold-over setting from Misterio77. Not sure significance but likely to do with nix.registry entry below. + }; + + # Add each flake input as a registry to make nix3 commands consistent with your flake + #registry = lib.mapAttrs (_: value: { flake = value; }) inputs; + + # Add nixpkgs input to NIX_PATH + # This lets nix2 commands still use <nixpkgs> + #nixPath = [ "nixpkgs=${inputs.nixpkgs.outPath}" ]; + + # Garbage Collection + gc = { + automatic = true; + dates = "weekly"; + randomizedDelaySec = "14m"; + # Keep the last 2 generations + options = "--delete-older-than +2"; + }; + + }; +} diff --git a/hosts/common/core/shells.nix b/hosts/common/core/shells.nix new file mode 100644 index 0000000..0469b8c --- /dev/null +++ b/hosts/common/core/shells.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: +{ + environment.systemPackages = builtins.attrValues { + inherit (pkgs) + bash + zsh; + }; +} diff --git a/hosts/common/core/zsh.nix b/hosts/common/core/zsh.nix new file mode 100644 index 0000000..ba73c00 --- /dev/null +++ b/hosts/common/core/zsh.nix @@ -0,0 +1,6 @@ +{ + programs.zsh = { + enable = true; + enableCompletion = true; + }; +} diff --git a/hosts/common/optional/google-authenticator.nix b/hosts/common/optional/google-authenticator.nix new file mode 100644 index 0000000..7380d1b --- /dev/null +++ b/hosts/common/optional/google-authenticator.nix @@ -0,0 +1,23 @@ +{ pkgs, ... }: +{ + environment.systemPackages = builtins.attrValues { + inherit (pkgs) + #other + google-authenticator; + }; + + security.pam.services = { + chfn.googleAuthenticator.enable = true; + chsh.googleAuthenticator.enable = true; + cups.googleAuthenticator.enable = true; + lightdm.googleAuthenticator.enable = true; + login.googleAuthenticator.enable = true; + other.googleAuthenticator.enable = true; + sshd.googleAuthenticator.enable = true; + su.googleAuthenticator.enable = true; + sudo.googleAuthenticator.enable = true; + vlock.googleAuthenticator.enable = true; + xlock.googleAuthenticator.enable = true; + xscreensaver.googleAuthenticator.enable = true; + }; +} diff --git a/hosts/common/optional/pipewire.nix b/hosts/common/optional/pipewire.nix new file mode 100644 index 0000000..27b2a09 --- /dev/null +++ b/hosts/common/optional/pipewire.nix @@ -0,0 +1,24 @@ +{ pkgs, ... }: +{ + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + wireplumber.enable = true; + jack.enable = true; + + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + # media-session.enable = true; + }; + + environment.systemPackages = builtins.attrValues { + inherit (pkgs) + pamixer + pavucontrol; + }; +} diff --git a/hosts/common/optional/services/openssh.nix b/hosts/common/optional/services/openssh.nix new file mode 100644 index 0000000..33cdbac --- /dev/null +++ b/hosts/common/optional/services/openssh.nix @@ -0,0 +1,11 @@ +{ + services.openssh = { + enable = true; + openFirewall = true; + settings = { + KbdInteractiveAuthentication = false; + PasswordAuthentication = false; + PermitRootLogin = "yes"; + }; + }; +} diff --git a/hosts/common/optional/services/xorg.nix b/hosts/common/optional/services/xorg.nix new file mode 100644 index 0000000..ebca5ea --- /dev/null +++ b/hosts/common/optional/services/xorg.nix @@ -0,0 +1,21 @@ +{ + services.xserver = { + displayManager.defaultSession = "xsession"; + displayManager.lightdm = { + enable = true; + extraSeatDefaults = ''greeter-hide-users=true''; + }; + displayManager.session = [ + { + manage = "desktop"; + name = "xsession"; + start = ''exec $HOME/.xsession''; + } + ]; + enable = true; + libinput.enable = true; + videoDrivers = [ "amdgpu" ]; + xkb.layout = "us"; + xkb.options = "caps:super,compose:ralt"; + }; +} diff --git a/hosts/common/optional/zfs.nix b/hosts/common/optional/zfs.nix new file mode 100644 index 0000000..a2d978d --- /dev/null +++ b/hosts/common/optional/zfs.nix @@ -0,0 +1,6 @@ +{ + services.zfs = { + autoScrub.enable = true; + trim.enable = true; + }; +} diff --git a/hosts/common/users/nipsy/default.nix b/hosts/common/users/nipsy/default.nix new file mode 100644 index 0000000..58ef9b3 --- /dev/null +++ b/hosts/common/users/nipsy/default.nix @@ -0,0 +1,31 @@ +{ pkgs, inputs, config, ... }: +let + ifTheyExist = groups: builtins.filter (group: builtins.hasAttr group config.users.groups) groups; +in +{ + users.groups.nipsy.gid = 1000; + users.users.nipsy = { + description = "Mark Nipper"; + extraGroups = [ + "wheel" + "audio" + "video" + ] ++ ifTheyExist [ + "networkmanager" + ]; + group = "nipsy"; + home = "/home/nipsy"; + isNormalUser = true; + openssh.authorizedKeys.keys = [ + (builtins.readFile ./keys/id_arrakis.pub) + #(builtins.readFile ./keys/id_other.pub) + ]; + + packages = [ pkgs.home-manager ]; + shell = pkgs.zsh; + }; + + # Import this user's personal/home configurations + home-manager.users.nipsy = import ../../../../home/nipsy/${config.networking.hostName}.nix; + +} diff --git a/hosts/common/users/nipsy/keys/id_arrakis.pub b/hosts/common/users/nipsy/keys/id_arrakis.pub new file mode 100644 index 0000000..38c1d4c --- /dev/null +++ b/hosts/common/users/nipsy/keys/id_arrakis.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIbKppxX6GF88fAfXJZR4ZcPzwopi7TAy+v/dmWso+7f nipsy@arrakis.bitgnome.net diff --git a/hosts/common/users/root/default.nix b/hosts/common/users/root/default.nix new file mode 100644 index 0000000..f70f414 --- /dev/null +++ b/hosts/common/users/root/default.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: +{ + users.users.root = { + openssh.authorizedKeys.keys = [ + (builtins.readFile ../nipsy/keys/id_arrakis.pub) + #(builtins.readFile ./keys/id_other.pub) + ]; + shell = pkgs.zsh; + }; +} diff --git a/ginaz/configuration.nix b/hosts/ginaz/default.nix index 9310c2b..d5fa16c 100644 --- a/ginaz/configuration.nix +++ b/hosts/ginaz/default.nix @@ -1,27 +1,19 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page, on -# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). - -{ config, lib, pkgs, ... }: { - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ]; - - boot.initrd.kernelModules = [ "amdgpu" "zfs" ]; - boot.kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; - boot.loader.efi.canTouchEfiVariables = true; - boot.loader.generationsDir.copyKernels = true; - boot.loader.systemd-boot.enable = true; - boot.supportedFilesystems = [ "zfs" ]; - boot.zfs.devNodes = "/dev/disk/by-label"; +{ config, inputs, pkgs, ... }: { + boot = { + initrd.kernelModules = [ "amdgpu" "zfs" ]; + kernelPackages = config.boot.zfs.package.latestCompatibleLinuxPackages; + loader = { + efi.canTouchEfiVariables = true; + systemd-boot.enable = true; + timeout = 3; + }; + supportedFilesystems = [ "zfs" ]; + zfs.devNodes = "/dev/disk/by-label"; + }; documentation.dev.enable = true; documentation.man.enable = true; - environment.shells = with pkgs; [ zsh ]; - # List packages installed in system profile. To search, run: - # $ nix search wget environment.systemPackages = with pkgs; [ bc bespokesynth @@ -122,8 +114,7 @@ sshfs st stoken - surge - #surge-XT + surge-XT sxiv synthv1 sysstat @@ -164,15 +155,26 @@ zynaddsubfx ]; - i18n.defaultLocale = "en_US.UTF-8"; + imports = [ + inputs.hardware.nixosModules.lenovo-yoga-7-14ARH7.amdgpu - networking.hostId = "8425e349"; - networking.hostName = "ginaz"; - networking.networkmanager.enable = true; - networking.nftables.enable = true; + ./hardware-configuration.nix + ../common/core + ../common/optional/google-authenticator.nix + ../common/optional/pipewire.nix + ../common/optional/services/openssh.nix + ../common/optional/services/xorg.nix + ../common/optional/zfs.nix + ../common/users/nipsy + ../common/users/root + ]; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - nixpkgs.config.allowUnfree = true; + networking = { + hostId = "8425e349"; + hostName = "ginaz"; + networkmanager.enable = true; + nftables.enable = true; + }; programs.atop.enable = true; programs.firefox.enable = true; @@ -187,20 +189,6 @@ programs.tmux.enable = true; programs.zsh.enable = true; - security.pam.services = { - chfn.googleAuthenticator.enable = true; - chsh.googleAuthenticator.enable = true; - cups.googleAuthenticator.enable = true; - lightdm.googleAuthenticator.enable = true; - login.googleAuthenticator.enable = true; - other.googleAuthenticator.enable = true; - sshd.googleAuthenticator.enable = true; - su.googleAuthenticator.enable = true; - sudo.googleAuthenticator.enable = true; - vlock.googleAuthenticator.enable = true; - xlock.googleAuthenticator.enable = true; - xscreensaver.googleAuthenticator.enable = true; - }; security.polkit = { enable = true; extraConfig = '' @@ -220,23 +208,7 @@ }) ''; }; - security.rtkit.enable = true; - services.blueman.enable = true; - services.openssh = { - enable = true; - openFirewall = true; - settings.PasswordAuthentication = false; - settings.KbdInteractiveAuthentication = false; - settings.PermitRootLogin = "yes"; - }; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - jack.enable = true; - }; services.printing.enable = true; services.udev.extraRules = '' SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="2500",MODE:="0666" @@ -245,29 +217,6 @@ SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3020",MODE:="0666" SUBSYSTEM=="usb",ENV{DEVTYPE}=="usb_device",ATTRS{idVendor}=="1df7",ATTRS{idProduct}=="3030",MODE:="0666" ''; - services.xserver = { - displayManager.defaultSession = "xsession"; - displayManager.lightdm = { - enable = true; - extraSeatDefaults = ''greeter-hide-users=true''; - }; - displayManager.session = [ - { - manage = "desktop"; - name = "xsession"; - start = ''exec $HOME/.xsession''; - } - ]; - enable = true; - libinput.enable = true; - videoDrivers = [ "amdgpu" ]; - xkb.layout = "us"; - xkb.options = "caps:super,compose:ralt"; - }; - services.zfs.autoScrub.enable = true; - services.zfs.trim.enable = true; - - system.stateVersion = "23.11"; systemd = { user.services.polkit-gnome-authentication-agent-1 = { @@ -285,25 +234,5 @@ }; }; - time.timeZone = "America/Los_Angeles"; - - users.groups.nipsy.gid = 1000; - users.users.nipsy = { - isNormalUser = true; - group = "nipsy"; - home = "/home/nipsy"; - description = "Mark Nipper"; - extraGroups = [ "wheel" "networkmanager" ]; - #packages = with pkgs; [ - # firefox - # tree - #]; - shell = pkgs.zsh; - openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIbKppxX6GF88fAfXJZR4ZcPzwopi7TAy+v/dmWso+7f nipsy@arrakis.bitgnome.net" ]; - }; - - users.users.root = { - shell = pkgs.zsh; - openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIbKppxX6GF88fAfXJZR4ZcPzwopi7TAy+v/dmWso+7f nipsy@arrakis.bitgnome.net" ]; - }; + system.stateVersion = "23.11"; } diff --git a/ginaz/hardware-configuration.nix b/hosts/ginaz/hardware-configuration.nix index 140a799..a5ae455 100644 --- a/ginaz/hardware-configuration.nix +++ b/hosts/ginaz/hardware-configuration.nix @@ -5,7 +5,7 @@ { imports = - [ (modulesPath + "/installer/scan/not-detected.nix") + [ #(modulesPath + "/installer/scan/not-detected.nix") ]; boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usb_storage" "sd_mod" ]; @@ -44,7 +44,6 @@ hardware.bluetooth.enable = true; #hardware.bluetooth.powerOnBoot = true; - hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; } diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix new file mode 100644 index 0000000..45aae31 --- /dev/null +++ b/modules/home-manager/default.nix @@ -0,0 +1,6 @@ +# Add your reusable home-manager modules to this directory, on their own file (https://nixos.wiki/wiki/Module). +# These should be stuff you would like to share with others, not your personal configurations. +{ + # List your module files here + # my-module = import ./my-module.nix; +} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix new file mode 100644 index 0000000..8605069 --- /dev/null +++ b/modules/nixos/default.nix @@ -0,0 +1,6 @@ +# Add your reusable NixOS modules to this directory, on their own file (https://nixos.wiki/wiki/Module). +# These should be stuff you would like to share with others, not your personal configurations. +{ + # List your module files here + # my-module = import ./my-module.nix; +} diff --git a/overlays/default.nix b/overlays/default.nix new file mode 100644 index 0000000..669bd73 --- /dev/null +++ b/overlays/default.nix @@ -0,0 +1,26 @@ +# +# This file defines overlays/custom modifications to upstream packages +# + +{ inputs, ... }: { + # This one brings our custom packages from the 'pkgs' directory + additions = final: _prev: import ../pkgs { pkgs = final; }; + + # This one contains whatever you want to overlay + # You can change versions, add patches, set compilation flags, anything really. + # https://nixos.wiki/wiki/Overlays + modifications = final: prev: { + # example = prev.example.overrideAttrs (oldAttrs: let ... in { + # ... + # }); + }; + + # When applied, the unstable nixpkgs set (declared in the flake inputs) will + # be accessible through 'pkgs.unstable' + unstable-packages = final: _prev: { + unstable = import inputs.nixpkgs-unstable { + system = final.system; + config.allowUnfree = true; + }; + }; +} diff --git a/pkgs/default.nix b/pkgs/default.nix new file mode 100644 index 0000000..d1a6549 --- /dev/null +++ b/pkgs/default.nix @@ -0,0 +1,5 @@ +# You can build these directly using 'nix build .#example' + +{ pkgs ? import <nixpkgs> { } }: rec { + sdrconnect = pkgs.callPackage ./sdrconnect { }; +} diff --git a/sdrconnect.nix b/pkgs/sdrconnect/default.nix index 22b41d8..d262268 100644 --- a/sdrconnect.nix +++ b/pkgs/sdrconnect/default.nix @@ -1,9 +1,12 @@ -{ pkgs }: -pkgs.stdenv.mkDerivation rec { +{ fetchurl, lib, stdenv }: +let pname = "sdrconnect"; +in +stdenv.mkDerivation { + inherit pname; version = "0.0.0"; - src = builtins.fetchurl { + src = fetchurl { url = "https://www.sdrplay.com/software/SDRconnect_linux-x64_0fd82d9dc.run"; sha256 = "7200f58efc1bd78250f6057cc08b5564ea9e8f33f8ef655805bbff97f56d38c2"; }; @@ -11,7 +14,7 @@ pkgs.stdenv.mkDerivation rec { sourceRoot = "."; unpackCmd = "bash $src --quiet --noexec --target ."; - buildInputs = with pkgs; [ + buildInputs = [ alsa-lib fontconfig.lib icu @@ -27,8 +30,8 @@ pkgs.stdenv.mkDerivation rec { installPhase = '' runHook preInstall mkdir -p $out/{bin,lib} $out/share/{doc,icons} - patchelf --set-interpreter ${pkgs.stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 SDRconnect - patchelf --set-rpath \$ORIGIN/../lib:${pkgs.alsa-lib}/lib:${pkgs.fontconfig.lib}/lib:${pkgs.icu}/lib:${pkgs.libusb1}/lib:${pkgs.remarkable2-toolchain}/lib:${pkgs.stdenv.cc.cc.lib}/lib:${pkgs.util-linux.lib}/lib:${pkgs.xorg.libICE}/lib:${pkgs.xorg.libSM}/lib:${pkgs.xorg.libX11}/lib SDRconnect + patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 SDRconnect + patchelf --set-rpath \$ORIGIN/../lib:${alsa-lib}/lib:${fontconfig.lib}/lib:${icu}/lib:${libusb1}/lib:${remarkable2-toolchain}/lib:${stdenv.cc.cc.lib}/lib:${util-linux.lib}/lib:${xorg.libICE}/lib:${xorg.libSM}/lib:${xorg.libX11}/lib SDRconnect patchelf --add-needed libasound.so.2 --add-needed libfontconfig.so.1 --add-needed libSkiaSharp.so --add-needed swig_bindings.so --add-needed libusb-1.0.so.0 --add-needed libuuid.so.1 SDRconnect mv SDRconnect $out/bin mv libHarfBuzzSharp.so libSkiaSharp.so swig_bindings.so $out/lib @@ -40,7 +43,7 @@ pkgs.stdenv.mkDerivation rec { dontFixup = true; - meta = with pkgs.lib; { + meta = with lib; { description = "sdrconnect"; homepage = "https://www.sdrplay.com/sdrconnect/"; sourceProvenance = with sourceTypes; [ binaryNativeCode ]; |