···11+# Edit this configuration file to define what should be installed on
22+# your system. Help is available in the configuration.nix(5) man page, on
33+# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
44+55+{
66+ config,
77+ lib,
88+ pkgs,
99+ inputs,
1010+ ...
1111+}:
1212+let
1313+ system = pkgs.stdenv.targetPlatform.system;
1414+ agave = (builtins.getFlake "/home/noah/repos/agave");
1515+in
1616+{
1717+ imports = [
1818+ # Include the results of the hardware scan.
1919+ ./hardware-configuration.nix
2020+ agave.nixosModules.default
2121+ ];
2222+2323+ nix.settings.experimental-features = [
2424+ "nix-command"
2525+ "flakes"
2626+ ];
2727+2828+ # Use the systemd-boot EFI boot loader.
2929+ boot.loader.systemd-boot.enable = true;
3030+ #boot.loader.grub.device = "nodev";
3131+ #boot.loader.grub.efiSupport = true;
3232+ #boot.loader.grub.useOSProber = true;
3333+ boot.loader.efi.canTouchEfiVariables = true;
3434+3535+ # Use latest kernel.
3636+ boot.kernelPackages = pkgs.linuxPackages_latest;
3737+3838+ networking.hostName = "edge"; # Define your hostname.
3939+4040+ # Configure network connections interactively with nmcli or nmtui.
4141+ networking.networkmanager.enable = true;
4242+4343+ # Set your time zone.
4444+ # time.timeZone = "Europe/Amsterdam";
4545+4646+ # Configure network proxy if necessary
4747+ # networking.proxy.default = "http://user:password@proxy:port/";
4848+ # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
4949+5050+ # Select internationalisation properties.
5151+ i18n.defaultLocale = "en_US.UTF-8";
5252+ console = {
5353+ font = "Lat2-Terminus16";
5454+ keyMap = "us";
5555+ #useXkbConfig = true; # use xkb.options in tty.
5656+ };
5757+5858+ # Enable the X11 windowing system.
5959+ # services.xserver.enable = true;
6060+6161+ # Configure keymap in X11
6262+ # services.xserver.xkb.layout = "us";
6363+ # services.xserver.xkb.options = "eurosign:e,caps:escape";
6464+6565+ # Enable CUPS to print documents.
6666+ # services.printing.enable = true;
6767+6868+ # Enable sound.
6969+ # services.pulseaudio.enable = true;
7070+ # OR
7171+ # services.pipewire = {
7272+ # enable = true;
7373+ # pulse.enable = true;
7474+ # };
7575+7676+ # Enable touchpad support (enabled default in most desktopManager).
7777+ # services.libinput.enable = true;
7878+7979+ # Define a user account. Don't forget to set a password with ‘passwd’.
8080+ # users.users.alice = {
8181+ # isNormalUser = true;
8282+ # extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
8383+ # packages = with pkgs; [
8484+ # tree
8585+ # ];
8686+ # };
8787+8888+ # programs.firefox.enable = true;
8989+9090+ # List packages installed in system profile.
9191+ # You can use https://search.nixos.org/ to find more packages (and options).
9292+ environment.systemPackages = with pkgs; [
9393+ neovim
9494+ wget
9595+ git
9696+ htop
9797+ inputs.agenix.packages."${system}".agenix
9898+ agave.packages.${system}.solana
9999+ agave.packages.${system}.solana-keygen
100100+ ];
101101+102102+ services.tailscale.useRoutingFeatures = "both";
103103+104104+ # Some programs need SUID wrappers, can be configured further or are
105105+ # started in user sessions.
106106+ # programs.mtr.enable = true;
107107+ # programs.gnupg.agent = {
108108+ # enable = true;
109109+ # enableSSHSupport = true;
110110+ # };
111111+112112+ # List services that you want to enable:
113113+114114+ # Enable the OpenSSH daemon.
115115+ services.openssh.enable = true;
116116+ services.openssh.openFirewall = true;
117117+118118+ # Open ports in the firewall.
119119+ # networking.firewall.allowedTCPPorts = [ ... ];
120120+ # networking.firewall.allowedUDPPorts = [ ... ];
121121+ # Or disable the firewall altogether.
122122+ networking.firewall.enable = true;
123123+ networking.firewall = {
124124+ allowPing = true;
125125+ allowedUDPPorts = [ ];
126126+ allowedUDPPortRanges = [
127127+ # Agave
128128+ {
129129+ from = 8000;
130130+ to = 8020;
131131+ }
132132+ ];
133133+ allowedTCPPorts = [
134134+ 2375
135135+ 3000
136136+ # Agave
137137+ 8001
138138+ 8899
139139+ 8900
140140+ 10000
141141+ ];
142142+ };
143143+ security.pam.loginLimits = [
144144+ {
145145+ domain = "*";
146146+ type = "soft";
147147+ item = "nofile";
148148+ value = "100000";
149149+ }
150150+ {
151151+ domain = "*";
152152+ type = "hard";
153153+ item = "nofile";
154154+ value = "1000000";
155155+ }
156156+ ];
157157+158158+ age.secrets.validator-identity = {
159159+ file = ../../secrets/validator-identity.age;
160160+ owner = "sol";
161161+ group = "sol";
162162+ };
163163+ services.ambient-validator = {
164164+ enable = true;
165165+ package = agave.packages.${system}.ambient-validator;
166166+ # this needs to be a secret
167167+ identityKeypair = config.age.secrets.validator-identity.path;
168168+ rpcBindAddress = "0.0.0.0";
169169+ geyserPluginConfig = {
170170+ libpath = "${agave.packages.${system}.yellowstone-geyser}/lib/libyellowstone_grpc_geyser.so";
171171+ log = {
172172+ level = "info";
173173+ };
174174+ tokio = {
175175+ worker_threads = 4;
176176+ affinity = null;
177177+ };
178178+ grpc = {
179179+ address = "0.0.0.0:10000";
180180+ };
181181+ };
182182+ };
183183+ # Copy the NixOS configuration file and link it from the resulting system
184184+ # (/run/current-system/configuration.nix). This is useful in case you
185185+ # accidentally delete configuration.nix.
186186+ # system.copySystemConfiguration = true;
187187+188188+ # This option defines the first version of NixOS you have installed on this particular machine,
189189+ # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
190190+ #
191191+ # Most users should NEVER change this value after the initial install, for any reason,
192192+ # even if you've upgraded your system to a new NixOS release.
193193+ #
194194+ # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
195195+ # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
196196+ # to actually do that.
197197+ #
198198+ # This value being lower than the current NixOS release does NOT mean your system is
199199+ # out of date, out of support, or vulnerable.
200200+ #
201201+ # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
202202+ # and migrated your data accordingly.
203203+ #
204204+ # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
205205+ system.stateVersion = "25.11"; # Did you read the comment?
206206+207207+}
···11+# Edit this configuration file to define what should be installed on
22+## your system. Help is available in the configuration.nix(5) man page, on
33+# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
44+55+{ ... }:
66+{
77+ imports = [
88+ # Include the results of the hardware scan.
99+ ./hardware-configuration.nix
1010+ ./boot.nix
1111+ ./networking.nix
1212+ #./gui.nix
1313+ ./packages.nix
1414+ ./services.nix
1515+ ];
1616+1717+ nixpkgs.config.allowUnfree = true;
1818+1919+ # Set your time zone.
2020+ time.timeZone = "America/Chicago";
2121+2222+ # Select internationalisation properties.
2323+ i18n.defaultLocale = "en_US.UTF-8";
2424+ # console = {
2525+ # font = "Lat2-Terminus16";
2626+ # keyMap = "us";
2727+ # useXkbConfig = true; # use xkb.options in tty.
2828+ # };
2929+3030+ # Automatic doc cache generation
3131+ documentation.man.generateCaches = true;
3232+3333+ # Automatic system upgrades
3434+ system.autoUpgrade = {
3535+ enable = true;
3636+ dates = "09:00";
3737+ randomizedDelaySec = "45min";
3838+ };
3939+4040+ # Automatic Garbage Collection
4141+ nix.gc.automatic = true;
4242+ nix.gc.options = "--delete-older-than 8d";
4343+4444+ # This option defines the first version of NixOS you have installed on this particular machine,
4545+ # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
4646+ #
4747+ # Most users should NEVER change this value after the initial install, for any reason,
4848+ # even if you've upgraded your system to a new NixOS release.
4949+ #
5050+ # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
5151+ # so changing it will NOT upgrade your system.
5252+ #
5353+ # This value being lower than the current NixOS release does NOT mean your system is
5454+ # out of date, out of support, or vulnerable.
5555+ #
5656+ # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
5757+ # and migrated your data accordingly.
5858+ #
5959+ # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
6060+ system.stateVersion = "23.11"; # Did you read the comment?
6161+6262+}
···11+return {
22+ settings = {
33+ Lua = {
44+ runtime = {
55+ -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
66+ version = "LuaJIT"
77+ },
88+ diagnostics = {
99+ -- Get the language server to recognize the `vim` global
1010+ globals = { "vim", "vis" }
1111+ },
1212+ workspace = {
1313+ -- Make the server aware of Neovim runtime files
1414+ library = vim.api.nvim_get_runtime_file("", true)
1515+ },
1616+ -- Do not send telemetry data containing a randomized but unique identifier
1717+ telemetry = { enable = false }
1818+ }
1919+ }
2020+}
···11+" Vim syntax file
22+" Language: OS Inferno sh
33+" Maintainer: Alex Efros <powerman-asdf@ya.ru>
44+" URL: http://powerman.name/download/vim/syntax/infsh.vim
55+" Version: 1.10
66+" Last Change: 2012-12-09
77+88+if version < 600
99+ syntax clear
1010+elseif exists("b:current_syntax")
1111+ finish
1212+endif
1313+1414+1515+syn cluster infshTOP contains=infshError
1616+" usual typo
1717+syn match infshError +"+
1818+1919+syn cluster infshTOP add=infshSubst,infshCmdOut,infshBlock
2020+" substitution command
2121+syn region infshSubst matchgroup=infshSubstDelimiter keepend extend start="\$["#]\?{\w\@=" end="}" contains=@infshTOP,@NoSpell
2222+syn match infshSubstName contained "\(\$["#]\?{\)\@<=\w\+" containedin=infshSubst
2323+" get command output
2424+syn region infshCmdOut matchgroup=infshCmdOutDelimiter keepend extend start="[`"]{" end="}" contains=@infshTOP,@NoSpell
2525+" command block
2626+syn region infshBlock matchgroup=infshDelimiter keepend extend start="{" end="}" contains=@infshTOP,@NoSpell
2727+2828+syn cluster infshTOP add=infshDelimiter,infshRedir,infshConditional,infshOperator,infshPatternClass,infshPattern
2929+" top-level delimiters
3030+syn match infshDelimiter "[;&()]"
3131+syn match infshRedir "[|<>]\(\[\d\+\(=\d\+\)\?\]\)\?"
3232+syn match infshConditional "&&\|||"
3333+syn match infshOperator "\(:=\|=\|\^\)"
3434+syn region infshPatternClass matchgroup=infshPattern keepend extend oneline start="\[^\?" end="\]" contains=infshPatternInClass
3535+syn match infshPatternInClass contained "\(\[^\?\)\@<!-\]\@!"
3636+syn match infshPattern "[*?]"
3737+3838+syn cluster infshTOP add=infshVar,infshSpecVar,infshError
3939+" references to variables
4040+syn match infshVar "\$["#]\?[$(']\@="
4141+syn match infshVar "\$["#]\?\(`{\)\@="
4242+syn match infshVar "\$["#]\(\"{\)\@="
4343+" variables with single-char names (spec chars & unicode)
4444+syn match infshVar "\$["#]\?[!%+,\-./:?@\[\\\]~]"
4545+syn match infshVar "\$["#]\?[^\x0-\x7f]"
4646+" special variables
4747+syn match infshSpecVar "\$["#]\?[*]"
4848+syn match infshSpecVar "\$["#]\?[0]"
4949+syn match infshSpecVar "\$["#]\?[1-9][0-9]*"
5050+" variables with usual names
5151+syn match infshVar "\$["#]\?[a-zA-Z_][*0-9a-zA-Z_]*"
5252+syn match infshVar "\$["#]\?[*0][*0-9a-zA-Z_]\+"
5353+syn match infshVar "\$["#]\?[1-9][0-9]*[*a-zA-Z_][*0-9a-zA-Z_]*"
5454+" more special variables
5555+syn match infshSpecVar "\$["#]\?\(status\|apid\|ifs\|prompt\|autoload\)[*0-9a-zA-Z_]\@!"
5656+" bad variables
5757+syn match infshError "\$["#]\?[ \t\n&);<=>^|}]\@="
5858+syn match infshError "\$["#]\?\((\s*)\)\@="
5959+syn match infshError "\$["#]\?\(''[^']\@=\)\@="
6060+syn match infshError "\$["#]\?\([`]{\@!\)\@="
6161+syn match infshError "\$["#]\(["]{\@!\)\@="
6262+syn match infshError "\$["#][#]\@="
6363+6464+syn cluster infshTOP add=infshStr,infshComment,infshShebang
6565+" quoted string
6666+syn region infshStr matchgroup=infshStrQ keepend extend start="'" skip="''" end="'" contains=infshStrQQ
6767+syn match infshStrQQ contained "''"
6868+" comment
6969+syn match infshComment "#.*" contains=infshTodo,@Spell extend
7070+syn keyword infshTodo contained TODO TBD FIXME XXX NOTE BUG WARNING DEBUG OPTIMIZATION WORKAROUND
7171+" shebang
7272+syn match infshShebang "^#!/dis/sh\(\.dis\)\?\(\s\+-[nlvx]\+\)*\s*$" contains=infshOpts
7373+syn match infshOpts contained "-[nlvx]\+"
7474+7575+syn cluster infshTOP add=infshStatement,infshConditional,infshRepeat,infshOperator,infshKeyword,infshException,infshPctlType
7676+" keywords
7777+syn keyword infshStatement fn subfn
7878+syn keyword infshConditional and or if
7979+syn keyword infshRepeat apply getlines for in while
8080+syn keyword infshOperator run builtin exit load unload
8181+syn keyword infshOperator no pctl status
8282+syn match infshOperator "[@!~]"
8383+syn keyword infshKeyword flag loaded whatis
8484+syn keyword infshException raise rescue
8585+syn keyword infshPctlType newfd forkfd newns forkns newpgrp nodevs
8686+8787+8888+if version >= 508 || !exists("did_infsh_syn_inits")
8989+ if version < 508
9090+ let did_infsh_syn_inits = 1
9191+ command -nargs=+ HiLink hi link <args>
9292+ else
9393+ command -nargs=+ HiLink hi def link <args>
9494+ endif
9595+9696+ HiLink infshSubstDelimiter Identifier
9797+ HiLink infshSubstName Operator
9898+9999+ HiLink infshCmdOutDelimiter Include
100100+101101+ HiLink infshDelimiter Delimiter
102102+ HiLink infshRedir Type
103103+ HiLink infshConditional Conditional
104104+ HiLink infshOperator Operator
105105+ HiLink infshPattern SpecialChar
106106+ HiLink infshPatternInClass SpecialChar
107107+108108+ HiLink infshVar Identifier
109109+ HiLink infshSpecVar Special
110110+111111+ HiLink infshError Error
112112+113113+ HiLink infshStr String
114114+ HiLink infshStrQ String
115115+ HiLink infshStrQQ SpecialChar
116116+117117+ HiLink infshComment Comment
118118+ HiLink infshTodo Todo
119119+ HiLink infshShebang Comment
120120+ HiLink infshOpts PreProc
121121+122122+ HiLink infshStatement Statement
123123+ HiLink infshConditional Conditional
124124+ HiLink infshRepeat Repeat
125125+ HiLink infshOperator Operator
126126+ HiLink infshKeyword Keyword
127127+ HiLink infshException Exception
128128+ HiLink infshPctlType Type
129129+130130+ delcommand HiLink
131131+endif
132132+133133+let b:current_syntax = "infsh"
+97
nvim/syntax/mkfile.vim
···11+" Vim syntax file
22+" Language: mkfile (used by OS Inferno mk(1))
33+" Maintainer: Alex Efros <powerman-asdf@ya.ru>
44+" URL: http://powerman.name/download/vim/syntax/mkfile.vim
55+" Version: 1.10
66+" Last Change: 2012-12-09
77+88+if version < 600
99+ syntax clear
1010+elseif exists("b:current_syntax")
1111+ finish
1212+endif
1313+1414+1515+syn include @ShOs syntax/sh.vim
1616+unlet b:current_syntax
1717+syn include @ShInferno syntax/infsh.vim
1818+unlet b:current_syntax
1919+2020+2121+syn match mkfileComment "\\\@<!#.\{-}\(\\\?\n\)\@=" contains=mkfileTodo,@Spell
2222+syn keyword mkfileTodo contained TODO TBD FIXME XXX NOTE BUG WARNING DEBUG OPTIMIZATION WORKAROUND
2323+syn match mkfileEscaped "\\."
2424+syn match mkfileError contained "^\s\+\S.*"
2525+2626+syn match mkfileDelimiter contained "[=:%<|]"
2727+syn match mkfileNextLine contained "\\\n"
2828+ \ containedin=mkfileAssignment,mkfileVarWithAttr,mkfileVar,mkfileTargetWithAttr,mkfileTargets
2929+3030+syn match mkfileVarValue contained "\$\w\+"
3131+syn match mkfileVarValue contained "\${\w\+}"
3232+syn match mkfileVarValue contained "\${\w\+:[^}]*}" contains=mkfileVarSubst
3333+syn match mkfileVarSubst contained ":[^}]*" contains=mkfileDelimiter,mkfileVarValue
3434+syn match mkfileVarDelimiter contained "[${}]"
3535+ \ containedin=mkfileVarValue
3636+3737+syn region mkfileExternal excludenl keepend start="^<" end="$" contains=mkfileDelimiter,mkfileVarValue
3838+3939+syn region mkfileAssignment excludenl keepend start="^\w\(\w\|\\\n\)*\(\s\|\\\n\)*=" skip="\\\n" end="$"
4040+ \ contains=mkfileVarWithAttr,mkfileVarValue,mkfileComment,mkfileEscaped
4141+ \ skipempty nextgroup=mkfileError
4242+syn match mkfileVarWithAttr contained "^\w\(\w\|\\\n\)*\(\s\|\\\n\)*=\(\(\\\n\)*\(=\|U\(\\\n\)*=\)\)\?"
4343+ \ contains=mkfileVar,mkfileDelimiter,mkfileVarAttr
4444+syn match mkfileVar contained "^\(\w\|\\\n\)*\w"
4545+syn match mkfileVarAttr contained "\(=\(\\\n\)*\)\@<=U\(\(\\\n\)*=\)\@="
4646+4747+syn region mkfileRule excludenl keepend start="^[^ \t#=:]\([^#=:]\|\\\n\)*:" skip="\\\n" end="$"
4848+ \ contains=mkfileTargetWithAttr,mkfilePrereq,mkfileVarValue,mkfileComment,mkfileEscaped
4949+ \ skipempty nextgroup=mkfileError,mkfileRecipe
5050+syn region mkfileRule_os excludenl keepend start="^[^ \t#=:]\([^ \t#=:]\|\\\n\)*-\(os\|sh\):" skip="\\\n" end="$"
5151+ \ contains=mkfileTargetWithAttr,mkfilePrereq,mkfileVarValue,mkfileComment,mkfileEscaped
5252+ \ skipempty nextgroup=mkfileError,mkfileRecipe_os
5353+syn match mkfileTargetWithAttr contained "^[^ \t#=:]\([^#=:]\|\\\n\)*:\(\(\\\n\)*\(:\|[<DENnPQRUV]\+\(\\\n\)*:\)\)\?"
5454+ \ contains=mkfileTargets,mkfileDelimiter,mkfileTargetAttr
5555+syn match mkfileTargets contained "^\([^#=:]\|\\\n\)*[^ \t#=:]"
5656+ \ contains=mkfileDelimiter,mkfileVarValue
5757+syn match mkfileTargetAttr contained "\(:\(\\\n\)*\)\@<=[<DENnPQRUV]\+\(\(\\\n\)*:\)\@="
5858+syn match mkfilePrereq contained "\(:\(\\\n\)*\)\@<=.*"
5959+ \ contains=mkfileDelimiter,mkfileVarValue,mkfileComment,mkfileEscaped
6060+syn region mkfileRecipe contained excludenl keepend start="^\s.*" skip="\n\s" end="$"
6161+ \ contains=@ShInferno
6262+syn region mkfileRecipe_os contained excludenl keepend start="^\s.*" skip="\n\s" end="$"
6363+ \ contains=@ShOs
6464+" without including @Sh…:
6565+" \ contains=mkfileVarValue,mkfileComment,mkfileEscaped
6666+6767+6868+if version >= 508 || !exists("did_mkfile_syn_inits")
6969+ if version < 508
7070+ let did_mkfile_syn_inits = 1
7171+ command -nargs=+ HiLink hi link <args>
7272+ else
7373+ command -nargs=+ HiLink hi def link <args>
7474+ endif
7575+7676+ HiLink mkfileError Error
7777+ HiLink mkfileComment Comment
7878+ HiLink mkfileTodo Todo
7979+ HiLink mkfileEscaped Special
8080+8181+ HiLink mkfileDelimiter Operator
8282+ HiLink mkfileNextLine Special
8383+8484+ HiLink mkfileVarValue Identifier
8585+ HiLink mkfileVarSubst String
8686+ HiLink mkfileVarDelimiter Delimiter
8787+8888+ HiLink mkfileVar Identifier
8989+ HiLink mkfileVarAttr Type
9090+9191+ HiLink mkfileTargets Function
9292+ HiLink mkfileTargetAttr Type
9393+9494+ delcommand HiLink
9595+endif
9696+9797+let b:current_syntax = "mkfile"
-72
odin.nix
···11-# Edit this configuration file to define what should be installed on
22-## your system. Help is available in the configuration.nix(5) man page, on
33-# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
44-55-{ pkgs, config, nixpkgs-unstable, unstable, ... }:
66-{
77- imports =
88- [
99- # Include the results of the hardware scan.
1010- ./hardware-configuration.nix
1111- ./boot.nix
1212- ./networking.nix
1313- ./gui.nix
1414- ./users.nix
1515- ./packages.nix
1616- ./services.nix
1717- ];
1818- _module.args.unstable = import nixpkgs-unstable {
1919- inherit (pkgs.stdenv.hostPlatform) system;
2020- inherit (config.nixpkgs) config;
2121- };
2222-2323- nixpkgs.config.allowUnfree = true;
2424- # Set your time zone.
2525- time.timeZone = "America/Chicago";
2626-2727- # Select internationalisation properties.
2828- i18n.defaultLocale = "en_US.UTF-8";
2929- # console = {
3030- # font = "Lat2-Terminus16";
3131- # keyMap = "us";
3232- # useXkbConfig = true; # use xkb.options in tty.
3333- # };
3434-3535- # Copy the NixOS configuration file and link it from the resulting system
3636- # (/run/current-system/configuration.nix). This is useful in case you
3737- # accidentally delete configuration.nix.
3838- system.copySystemConfiguration = true;
3939-4040- # Automatic doc cache generation
4141- documentation.man.generateCaches = true;
4242-4343- # Automatic system upgrades
4444- system.autoUpgrade = {
4545- enable = true;
4646- dates = "09:00";
4747- randomizedDelaySec = "45min";
4848- };
4949-5050- # Automatic Garbage Collection
5151- nix.gc.automatic = true;
5252- nix.gc.options = "--delete-older-than 8d";
5353-5454- # This option defines the first version of NixOS you have installed on this particular machine,
5555- # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
5656- #
5757- # Most users should NEVER change this value after the initial install, for any reason,
5858- # even if you've upgraded your system to a new NixOS release.
5959- #
6060- # This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
6161- # so changing it will NOT upgrade your system.
6262- #
6363- # This value being lower than the current NixOS release does NOT mean your system is
6464- # out of date, out of support, or vulnerable.
6565- #
6666- # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
6767- # and migrated your data accordingly.
6868- #
6969- # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
7070- system.stateVersion = "23.11"; # Did you read the comment?
7171-7272-}
-140
packages.nix
···11-{ pkgs, lib, ... }:
22-let # bash script to let dbus know about important env variables and
33- # propagate them to relevent services run at the end of sway config
44- # see
55- # https://github.com/emersion/xdg-desktop-portal-wlr/wiki/"It-doesn't-work"-Troubleshooting-Checklist
66- # note: this is pretty much the same as /etc/sway/config.d/nixos.conf but also restarts
77- # some user services to make sure they have the correct environment variables
88- dbus-sway-environment = pkgs.writeTextFile {
99- name = "dbus-sway-environment";
1010- destination = "/bin/dbus-sway-environment";
1111- executable = true;
1212-1313- text = ''
1414- dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=sway
1515- systemctl --user stop pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
1616- systemctl --user start pipewire pipewire-media-session xdg-desktop-portal xdg-desktop-portal-wlr
1717- '';
1818- };
1919-2020- # currently, there is some friction between sway and gtk:
2121- # https://github.com/swaywm/sway/wiki/GTK-3-settings-on-Wayland
2222- # the suggested way to set gtk settings is with gsettings
2323- # for gsettings to work, we need to tell it where the schemas are
2424- # using the XDG_DATA_DIR environment variable
2525- # run at the end of sway config
2626- configure-gtk = pkgs.writeTextFile {
2727- name = "configure-gtk";
2828- destination = "/bin/configure-gtk";
2929- executable = true;
3030- text =
3131- let
3232- # TODO: figure out why these bindings exist or where they're used
3333- schema = pkgs.gsettings-desktop-schemas;
3434- datadir = "${schema}/share/gsettings-schemas/${schema.name}";
3535- in
3636- ''
3737- 6 gnome_schema=org.gnome.desktop.interface
3838- gsettings set $gnome_schema gtk-theme 'Dracula'
3939- '';
4040- };
4141-in
4242-{
4343-4444- # List packages installed in system profile. To search, run:
4545- # $ nix search wget
4646- environment.systemPackages = with pkgs; [
4747- neovim
4848- appimage-run
4949- tzdata
5050- wget
5151- kitty
5252- file
5353- w3m
5454- fishPlugins.fzf-fish
5555- fzf
5656- qemu
5757- qemu-user
5858- qemu-utils
5959- qemu_full
6060- OVMF
6161- #9p stuff
6262- diod
6363- plan9port
6464- vis
6565- rc
6666-6767- smartmontools
6868-6969- # Sway stuff
7070- wdisplays
7171- mako
7272- bemenu
7373- wl-clipboard
7474- slurp
7575- grim
7676- swayidle
7777- swaylock
7878- adwaita-icon-theme
7979- dracula-theme
8080- glib
8181- xdg-utils
8282- wayland
8383- configure-gtk
8484- dbus-sway-environment
8585- dbus
8686- pkg-config
8787- zlib
8888- # why wouldn't I want documentation on my system
8989- man-pages
9090- man-pages-posix
9191- linuxPackages_latest.perf
9292- ];
9393- documentation.dev.enable = true;
9494-9595- # Fix dynamically linked libraries for unpackaged binaries
9696- programs.nix-ld = {
9797- enable = true;
9898- libraries = with pkgs; [
9999- # Add missing dynamic libraries for unpackaged programs HERE
100100- # NOT in environment.systemPackages
101101- zlib
102102- openssl
103103- sqlite
104104- libunwind
105105- libglvnd
106106- libclang
107107- systemdLibs
108108- ];
109109- };
110110- programs.nix-index = {
111111- enable = true;
112112- enableFishIntegration = true;
113113- enableBashIntegration = false;
114114- enableZshIntegration = false;
115115- };
116116-117117- # Run other bins in QEMU
118118- boot.binfmt.emulatedSystems = [
119119- "aarch64-linux"
120120- "riscv64-linux"
121121- ];
122122- # UEFI firmware support for QEMU
123123- systemd.tmpfiles.rules = [ "L+ /var/lib/qemu/firmware - - - - ${pkgs.qemu}/share/qemu/firmware" ];
124124-125125-126126-127127- # Logseq uses an ancient version of Electron, so we enable that
128128- nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" ];
129129-130130- # Whitelist some unfree packages
131131- nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
132132- "discord"
133133- "spotify"
134134- "obsidian"
135135- "unstable.obsidian"
136136- "tailscale"
137137- "google-chrome"
138138- "slack"
139139- ];
140140-}
+5-2
scripts/nr
···11#!/usr/bin/env rc
2233flag e +
44-flag x +
44+55+if(~ $1 -x) {
66+ flag x +
77+ shift
88+}
59610pkg=$1
77-811shift
9121013exec nix run 'nixpkgs#'^$pkg -- $*
-8
scripts/oclip
···11-#!/usr/bin/env rc
22-flag e +
33-44-if (~ $1 -x) {
55- flag x +
66-}
77-data=`{base64 <[0=0]}
88-printf '\033]52;c;%s\007' $"data
+3
scripts/ocopy
···11+#!/usr/bin/env sh
22+33+printf "\033]52;c;%s\007" "$(base64 <&0)"